diff --git a/Android.mk b/Android.mk
index 9513c3e..1d236f4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -343,6 +343,7 @@
 	core/java/com/android/internal/view/IInputMethodManager.aidl \
 	core/java/com/android/internal/view/IInputMethodSession.aidl \
 	core/java/com/android/internal/view/IInputSessionCallback.aidl \
+	core/java/com/android/internal/widget/ICheckCredentialProgressCallback.aidl \
 	core/java/com/android/internal/widget/ILockSettings.aidl \
 	core/java/com/android/internal/widget/IRemoteViewsFactory.aidl \
 	core/java/com/android/internal/widget/IRemoteViewsAdapterConnection.aidl \
@@ -899,7 +900,7 @@
 
 framework_docs_LOCAL_DROIDDOC_OPTIONS += \
 		-hdf sdk.codename N \
-		-hdf sdk.preview.version 2 \
+		-hdf sdk.preview.version 5 \
 		-hdf sdk.version $(framework_docs_SDK_VERSION) \
 		-hdf sdk.rel.id $(framework_docs_SDK_REL_ID) \
 		-hdf sdk.preview 1
diff --git a/apct-tests/perftests/core/Android.mk b/apct-tests/perftests/core/Android.mk
index e9f18fd..2fd6740 100644
--- a/apct-tests/perftests/core/Android.mk
+++ b/apct-tests/perftests/core/Android.mk
@@ -3,6 +3,7 @@
 
 LOCAL_MODULE_TAGS := tests
 
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_STATIC_JAVA_LIBRARIES := android-support-test apct-perftests-utils
diff --git a/apct-tests/perftests/core/res/layout/test_linear_layout.xml b/apct-tests/perftests/core/res/layout/test_linear_layout.xml
new file mode 100644
index 0000000..a863d1b
--- /dev/null
+++ b/apct-tests/perftests/core/res/layout/test_linear_layout.xml
@@ -0,0 +1,87 @@
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/linear_layout_root"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="10dp" >
+
+    <ImageButton
+        android:id="@+id/button"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true" />
+
+    <ImageButton
+        android:id="@+id/button2"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dp" >
+
+        <ImageButton
+            android:id="@+id/button3"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:padding="10dp" >
+
+            <ImageButton
+                android:id="@+id/button5"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_alignParentBottom="true" />
+        </LinearLayout>
+
+        <ImageButton
+            android:id="@+id/button4"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@+id/button2"
+            android:layout_centerHorizontal="true" />
+
+        <ImageButton
+            android:id="@+id/button6"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_above="@+id/button4"
+            android:layout_centerHorizontal="true" />
+
+        <ImageButton
+            android:id="@+id/button7"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@+id/button"
+            android:layout_toEndOf="@+id/button"
+            android:layout_toRightOf="@+id/button" />
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apct-tests/perftests/core/res/layout/test_linear_layout_weighted.xml b/apct-tests/perftests/core/res/layout/test_linear_layout_weighted.xml
new file mode 100644
index 0000000..77a982c
--- /dev/null
+++ b/apct-tests/perftests/core/res/layout/test_linear_layout_weighted.xml
@@ -0,0 +1,89 @@
+<!--
+ 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/linear_layout_weighted_root"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="10dp" >
+
+    <ImageButton
+        android:id="@+id/button"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true" />
+
+    <ImageButton
+        android:id="@+id/button2"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dp" >
+
+        <ImageButton
+            android:id="@+id/button3"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="2"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:padding="10dp" >
+
+            <ImageButton
+                android:id="@+id/button5"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:layout_alignParentBottom="true" />
+        </LinearLayout>
+
+        <ImageButton
+            android:id="@+id/button4"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@+id/button2"
+            android:layout_centerHorizontal="true" />
+
+        <ImageButton
+            android:id="@+id/button6"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_above="@+id/button4"
+            android:layout_centerHorizontal="true" />
+
+        <ImageButton
+            android:id="@+id/button7"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@+id/button"
+            android:layout_toEndOf="@+id/button"
+            android:layout_toRightOf="@+id/button" />
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apct-tests/perftests/core/res/layout/test_relative_layout.xml b/apct-tests/perftests/core/res/layout/test_relative_layout.xml
new file mode 100644
index 0000000..1daf93a
--- /dev/null
+++ b/apct-tests/perftests/core/res/layout/test_relative_layout.xml
@@ -0,0 +1,87 @@
+<!--
+ 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/relative_layout_root"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="10dp" >
+
+    <ImageButton
+        android:id="@+id/button"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true" />
+
+    <ImageButton
+        android:id="@+id/button2"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dp" >
+
+        <ImageButton
+            android:id="@+id/button3"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true" />
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:padding="10dp" >
+
+            <ImageButton
+                android:id="@+id/button5"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_alignParentBottom="true" />
+        </RelativeLayout>
+
+        <ImageButton
+            android:id="@+id/button4"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@+id/button2"
+            android:layout_centerHorizontal="true" />
+
+        <ImageButton
+            android:id="@+id/button6"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_above="@+id/button4"
+            android:layout_centerHorizontal="true" />
+
+        <ImageButton
+            android:id="@+id/button7"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@+id/button"
+            android:layout_toEndOf="@+id/button"
+            android:layout_toRightOf="@+id/button" />
+    </RelativeLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/apct-tests/perftests/core/src/android/widget/EditTextBackspacePerfTest.java b/apct-tests/perftests/core/src/android/widget/EditTextBackspacePerfTest.java
new file mode 100644
index 0000000..40b56f4
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/widget/EditTextBackspacePerfTest.java
@@ -0,0 +1,128 @@
+/*
+ * 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.widget;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.perftests.utils.StubActivity;
+import android.text.Selection;
+import android.view.KeyEvent;
+import android.view.View.MeasureSpec;
+import android.view.ViewGroup;
+
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.LargeTest;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Locale;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized;
+
+@LargeTest
+@RunWith(Parameterized.class)
+public class EditTextBackspacePerfTest {
+
+    private static final String BOY = "\uD83D\uDC66";  // U+1F466
+    private static final String US_FLAG = "\uD83C\uDDFA\uD83C\uDDF8";  // U+1F1FA U+1F1F8
+    private static final String FAMILY =
+            // U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
+            "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67";
+    private static final String EMOJI_MODIFIER = "\uD83C\uDFFD";  // U+1F3FD
+    private static final String KEYCAP = "\u20E3";
+    private static final String COLOR_COPYRIGHT = "\u00A9\uFE0F";
+
+    @Parameters(name = "{0}")
+    public static Collection cases() {
+        return Arrays.asList(new Object[][] {
+            { "Latin", "aaa", 1 },
+            { "Flags", US_FLAG + US_FLAG + US_FLAG, 4 },
+            { "EmojiModifier",
+                BOY + EMOJI_MODIFIER + BOY + EMOJI_MODIFIER + BOY + EMOJI_MODIFIER, 4 },
+            { "KeyCap", "1" + KEYCAP + "1" + KEYCAP + "1" + KEYCAP, 2 },
+            { "ZwjSequence", FAMILY + FAMILY + FAMILY, 11 },
+            { "VariationSelector", COLOR_COPYRIGHT + COLOR_COPYRIGHT + COLOR_COPYRIGHT, 2 },
+        });
+    }
+
+    private final String mMetricKey;
+    private final String mText;
+    private final int mCursorPos;
+
+    private static final KeyEvent BACKSPACE_KEY_EVENT =
+            new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL);
+    private static final KeyEvent RIGHT_ARROW_KEY_EVENT =
+            new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT);
+
+    public EditTextBackspacePerfTest(String metricKey, String text, int cursorPos) {
+        mMetricKey = metricKey;
+        mText = text;
+        mCursorPos = cursorPos;
+    }
+
+    @Rule
+    public ActivityTestRule<StubActivity> mActivityRule = new ActivityTestRule(StubActivity.class);
+
+    @Rule
+    public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+    private void prepareTextForBackspace(EditText editText) {
+        editText.setText(mText, TextView.BufferType.EDITABLE);
+        Selection.setSelection(editText.getText(), 0, 0);
+
+        // Do layout it here since the cursor movement requires layout information but it
+        // happens asynchronously even if the view is attached to an Activity.
+        editText.setLayoutParams(new ViewGroup.LayoutParams(
+                ViewGroup.LayoutParams.WRAP_CONTENT,
+                ViewGroup.LayoutParams.WRAP_CONTENT));
+        editText.invalidate();
+        editText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+        editText.layout(0, 0, 1024, 768);
+
+        // mText contains three grapheme clusters. Move the cursor to the 2nd grapheme
+        // cluster by forwarding right arrow key event.
+        editText.onKeyDown(RIGHT_ARROW_KEY_EVENT.getKeyCode(), RIGHT_ARROW_KEY_EVENT);
+        Assert.assertEquals(mCursorPos, Selection.getSelectionStart(editText.getText()));
+    }
+
+    @Test
+    public void testBackspace() {
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            EditText editText = new EditText(mActivityRule.getActivity());
+
+            BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+            while (state.keepRunning()) {
+                // Prepare the test data for this iteration with pausing timer.
+                state.pauseTiming();
+                prepareTextForBackspace(editText);
+                state.resumeTiming();
+
+                editText.onKeyDown(BACKSPACE_KEY_EVENT.getKeyCode(), BACKSPACE_KEY_EVENT);
+            }
+        });
+    }
+}
diff --git a/apct-tests/perftests/core/src/android/widget/LayoutPerfTest.java b/apct-tests/perftests/core/src/android/widget/LayoutPerfTest.java
new file mode 100644
index 0000000..d444c92
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/widget/LayoutPerfTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.widget;
+
+import android.app.Activity;
+import android.os.Looper;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.perftests.utils.StubActivity;
+import android.support.test.annotation.UiThreadTest;
+import android.support.test.filters.LargeTest;
+import android.support.test.rule.ActivityTestRule;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.core.frameworks.perftests.R;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import static android.perftests.utils.LayoutUtils.gatherViewTree;
+import static android.perftests.utils.LayoutUtils.requestLayoutForAllNodes;
+import static android.view.View.MeasureSpec.AT_MOST;
+import static android.view.View.MeasureSpec.EXACTLY;
+import static android.view.View.MeasureSpec.UNSPECIFIED;
+import static org.junit.Assert.assertTrue;
+
+@LargeTest
+@RunWith(Parameterized.class)
+public class LayoutPerfTest {
+    @Parameterized.Parameters(name = "{0}")
+    public static Collection measureSpecs() {
+        return Arrays.asList(new Object[][] {
+                { "relative", R.layout.test_relative_layout, R.id.relative_layout_root },
+                { "linear", R.layout.test_linear_layout, R.id.linear_layout_root },
+                { "linear_weighted", R.layout.test_linear_layout_weighted,
+                        R.id.linear_layout_weighted_root },
+        });
+    }
+
+    private int[] mMeasureSpecs = {EXACTLY, AT_MOST, UNSPECIFIED};
+
+    private int mLayoutId;
+    private int mViewId;
+
+    public LayoutPerfTest(String key, int layoutId, int viewId) {
+        // key is used in the final report automatically.
+        mLayoutId = layoutId;
+        mViewId = viewId;
+    }
+
+    @Rule
+    public ActivityTestRule<StubActivity> mActivityRule =
+            new ActivityTestRule(StubActivity.class);
+
+    @Rule
+    public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+    @Test
+    @UiThreadTest
+    public void testLayoutPerf() {
+        assertTrue("We should be running on the main thread",
+                Looper.getMainLooper().getThread() == Thread.currentThread());
+        assertTrue("We should be running on the main thread",
+                Looper.myLooper() == Looper.getMainLooper());
+
+        Activity activity = mActivityRule.getActivity();
+        activity.setContentView(mLayoutId);
+
+        ViewGroup viewGroup = (ViewGroup) activity.findViewById(mViewId);
+
+        List<View> allNodes = gatherViewTree(viewGroup);
+        BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+
+        int length = mMeasureSpecs.length;
+        while (state.keepRunning()) {
+            for (int i = 0; i < length; i++) {
+                // The overhead of this call is ignorable, like within 1% difference.
+                requestLayoutForAllNodes(allNodes);
+
+                viewGroup.measure(mMeasureSpecs[i % length], mMeasureSpecs[i % length]);
+                viewGroup.layout(0, 0, viewGroup.getMeasuredWidth(), viewGroup.getMeasuredHeight());
+            }
+        }
+    }
+}
diff --git a/apct-tests/perftests/utils/src/android/perftests/utils/BenchmarkState.java b/apct-tests/perftests/utils/src/android/perftests/utils/BenchmarkState.java
index 8e1674a..4213e4a 100644
--- a/apct-tests/perftests/utils/src/android/perftests/utils/BenchmarkState.java
+++ b/apct-tests/perftests/utils/src/android/perftests/utils/BenchmarkState.java
@@ -46,13 +46,16 @@
 
     private static final int NOT_STARTED = 1;  // The benchmark has not started yet.
     private static final int RUNNING = 2;  // The benchmark is running.
-    private static final int FINISHED = 3;  // The benchmark has stopped.
+    private static final int RUNNING_PAUSED = 3;  // The benchmark is temporary paused.
+    private static final int FINISHED = 4;  // The benchmark has stopped.
     private static final int MIN_REPEAT_TIMES = 16;
 
     private int mState = NOT_STARTED;  // Current benchmark state.
 
     private long mNanoPreviousTime = 0;  // Previously captured System.nanoTime().
     private long mNanoFinishTime = 0;  // Finish if System.nanoTime() returns after than this value.
+    private long mNanoPausedTime = 0; // The System.nanoTime() when the pauseTiming() is called.
+    private long mNanoPausedDuration = 0;  // The duration of paused state in nano sec.
     private long mNanoTimeLimit = 1 * 1000 * 1000 * 1000;  // 1 sec. Default time limit.
 
     // Statistics. These values will be filled when the benchmark has finished.
@@ -89,6 +92,29 @@
         mStandardDeviation = Math.sqrt(mStandardDeviation / (double) (size - 1));
     }
 
+    // Stops the benchmark timer.
+    // This method can be called only when the timer is running.
+    public void pauseTiming() {
+        if (mState == RUNNING_PAUSED) {
+            throw new IllegalStateException(
+                    "Unable to pause the benchmark. The benchmark has already paused.");
+        }
+        mNanoPausedTime = System.nanoTime();
+        mState = RUNNING_PAUSED;
+    }
+
+    // Starts the benchmark timer.
+    // This method can be called only when the timer is stopped.
+    public void resumeTiming() {
+        if (mState == RUNNING) {
+            throw new IllegalStateException(
+                    "Unable to resume the benchmark. The benchmark is already running.");
+        }
+        mNanoPausedDuration += System.nanoTime() - mNanoPausedTime;
+        mNanoPausedTime = 0;
+        mState = RUNNING;
+    }
+
     /**
      * Judges whether the benchmark needs more samples.
      *
@@ -103,7 +129,8 @@
                 return true;
             case RUNNING:
                 final long currentTime = System.nanoTime();
-                mResults.add(currentTime - mNanoPreviousTime);
+                mResults.add(currentTime - mNanoPreviousTime - mNanoPausedDuration);
+                mNanoPausedDuration = 0;
 
                 // To calculate statistics, needs two or more samples.
                 if (mResults.size() > MIN_REPEAT_TIMES && currentTime > mNanoFinishTime) {
@@ -114,6 +141,10 @@
 
                 mNanoPreviousTime = currentTime;
                 return true;
+            case RUNNING_PAUSED:
+                throw new IllegalStateException(
+                        "Benchmark step finished with paused state. " +
+                        "Resume the benchmark before finishing each step.");
             case FINISHED:
                 throw new IllegalStateException("The benchmark has finished.");
             default:
@@ -145,10 +176,15 @@
     private String summaryLine() {
         StringBuilder sb = new StringBuilder();
         sb.append("Summary: ");
-        sb.append("median=" + median() + "ns, ");
-        sb.append("mean=" + mean() + "ns, ");
-        sb.append("sigma=" + standardDeviation() + ", ");
-        sb.append("iteration=" + mResults.size());
+        sb.append("median=").append(median()).append("ns, ");
+        sb.append("mean=").append(mean()).append("ns, ");
+        sb.append("sigma=").append(standardDeviation()).append(", ");
+        sb.append("iteration=").append(mResults.size()).append(", ");
+        // print out the first few iterations' number for double checking.
+        int sampleNumber = Math.min(mResults.size(), MIN_REPEAT_TIMES);
+        for (int i = 0; i < sampleNumber; i++) {
+            sb.append("No ").append(i).append(" result is ").append(mResults.get(i)).append(", ");
+        }
         return sb.toString();
     }
 
diff --git a/apct-tests/perftests/utils/src/android/perftests/utils/LayoutUtils.java b/apct-tests/perftests/utils/src/android/perftests/utils/LayoutUtils.java
new file mode 100644
index 0000000..c64af8f
--- /dev/null
+++ b/apct-tests/perftests/utils/src/android/perftests/utils/LayoutUtils.java
@@ -0,0 +1,58 @@
+/*
+ * 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.perftests.utils;
+
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LayoutUtils {
+
+    private static void recursivelyGather(ViewGroup currentNode, List<View> nodeList) {
+        nodeList.add(currentNode);
+        int count = currentNode.getChildCount();
+        for (int i = 0; i < count; i++) {
+            View view = currentNode.getChildAt(i);
+            if (view instanceof ViewGroup) {
+                recursivelyGather((ViewGroup) view, nodeList);
+            } else {
+                nodeList.add(view);
+            }
+        }
+    }
+
+    /**
+     * Flattern the whole view tree into a list of View.
+     */
+    public static List<View> gatherViewTree(ViewGroup root) {
+        List<View> result = new ArrayList<View>();
+        recursivelyGather(root, result);
+        return result;
+    }
+
+    /**
+     * For every node in the list, call requestLayout.
+     */
+    public static void requestLayoutForAllNodes(List<View> nodeList) {
+        int count = nodeList.size();
+        for (int i = 0; i < count; i++) {
+            nodeList.get(i).requestLayout();
+        }
+    }
+}
diff --git a/api/current.txt b/api/current.txt
index 1121d9f..1f4bdda 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -2802,12 +2802,16 @@
     method public android.os.Bundle addAccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle confirmCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, java.lang.String);
+    method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public android.os.Bundle getAccountCredentialsForCloning(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
     method public android.os.Bundle getAccountRemovalAllowed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract java.lang.String getAuthTokenLabel(java.lang.String);
     method public final android.os.IBinder getIBinder();
     method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String[]) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     field public static final java.lang.String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
   }
@@ -2845,6 +2849,7 @@
     method public void clearPassword(android.accounts.Account);
     method public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     method public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(java.lang.String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     method public static android.accounts.AccountManager get(android.content.Context);
     method public android.accounts.Account[] getAccounts();
     method public android.accounts.Account[] getAccountsByType(java.lang.String);
@@ -2860,6 +2865,7 @@
     method public java.lang.String getUserData(android.accounts.Account, java.lang.String);
     method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, java.lang.String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
     method public void invalidateAuthToken(java.lang.String, java.lang.String);
+    method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, java.lang.String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
     method public static deprecated android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle);
     method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, java.lang.String[], java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle);
     method public boolean notifyAccountAuthenticated(android.accounts.Account);
@@ -2872,6 +2878,8 @@
     method public void setAuthToken(android.accounts.Account, java.lang.String, java.lang.String);
     method public void setPassword(android.accounts.Account, java.lang.String);
     method public void setUserData(android.accounts.Account, java.lang.String, java.lang.String);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     method public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     field public static final java.lang.String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
     field public static final java.lang.String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
@@ -2888,6 +2896,8 @@
     field public static final java.lang.String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
     field public static final java.lang.String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
     field public static final java.lang.String KEY_ACCOUNT_NAME = "authAccount";
+    field public static final java.lang.String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
+    field public static final java.lang.String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
     field public static final java.lang.String KEY_ACCOUNT_TYPE = "accountType";
     field public static final java.lang.String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
     field public static final java.lang.String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
@@ -10071,6 +10081,7 @@
     method public android.os.PersistableBundle getExtras();
     method public java.lang.String getId();
     method public android.content.Intent getIntent();
+    method public android.content.Intent getIntents();
     method public long getLastChangedTimestamp();
     method public java.lang.CharSequence getLongLabel();
     method public java.lang.String getPackage();
@@ -10097,6 +10108,7 @@
     method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
     method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
     method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
+    method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
     method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
     method public android.content.pm.ShortcutInfo.Builder setRank(int);
     method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
@@ -10113,6 +10125,7 @@
     method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
     method public int getMaxShortcutCountPerActivity();
     method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+    method public boolean isRateLimitingActive();
     method public void removeAllDynamicShortcuts();
     method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
     method public void reportShortcutUsed(java.lang.String);
@@ -10326,7 +10339,7 @@
   }
 
   public class Resources {
-    ctor public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+    ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
     method public final void finishPreloading();
     method public final void flushLayoutCache();
     method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
@@ -10377,7 +10390,7 @@
     method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
     method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
     method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+    method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
   }
 
   public static class Resources.NotFoundException extends java.lang.RuntimeException {
@@ -19657,6 +19670,7 @@
     field public static final android.os.Parcelable.Creator<android.media.AudioFormat> CREATOR;
     field public static final int ENCODING_AC3 = 5; // 0x5
     field public static final int ENCODING_DEFAULT = 1; // 0x1
+    field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe
     field public static final int ENCODING_DTS = 7; // 0x7
     field public static final int ENCODING_DTS_HD = 8; // 0x8
     field public static final int ENCODING_E_AC3 = 6; // 0x6
@@ -20109,7 +20123,6 @@
     method public java.lang.String getAttribute(java.lang.String);
     method public double getAttributeDouble(java.lang.String, double);
     method public int getAttributeInt(java.lang.String, int);
-    method public long[] getAttributeLongArray(java.lang.String);
     method public boolean getLatLong(float[]);
     method public byte[] getThumbnail();
     method public long[] getThumbnailRange();
@@ -20128,6 +20141,7 @@
     field public static final deprecated java.lang.String TAG_APERTURE = "FNumber";
     field public static final java.lang.String TAG_APERTURE_VALUE = "ApertureValue";
     field public static final java.lang.String TAG_ARTIST = "Artist";
+    field public static final java.lang.String TAG_ASPECT_FRAME = "AspectFrame";
     field public static final java.lang.String TAG_BITS_PER_SAMPLE = "BitsPerSample";
     field public static final java.lang.String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
     field public static final java.lang.String TAG_CFA_PATTERN = "CFAPattern";
@@ -20214,6 +20228,8 @@
     field public static final java.lang.String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
     field public static final java.lang.String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
     field public static final java.lang.String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
+    field public static final java.lang.String TAG_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
+    field public static final java.lang.String TAG_PREVIEW_IMAGE_START = "PreviewImageStart";
     field public static final java.lang.String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
     field public static final java.lang.String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
     field public static final java.lang.String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
@@ -20241,6 +20257,7 @@
     field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
     field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
     field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
+    field public static final java.lang.String TAG_THUMBNAIL_IMAGE = "ThumbnailImage";
     field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
     field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
     field public static final java.lang.String TAG_TRANSFER_FUNCTION = "TransferFunction";
@@ -29288,6 +29305,7 @@
     method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
     method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
+    method public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
@@ -29300,6 +29318,7 @@
     method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
     method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
+    method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
   }
 
   public static final class StrictMode.VmPolicy {
@@ -40464,6 +40483,7 @@
     method public E get(long, E);
     method public int indexOfKey(long);
     method public int indexOfValue(E);
+    method public int indexOfValueByValue(E);
     method public long keyAt(int);
     method public void put(long, E);
     method public void remove(long);
@@ -40666,6 +40686,7 @@
     method public E get(int, E);
     method public int indexOfKey(int);
     method public int indexOfValue(E);
+    method public int indexOfValueByValue(E);
     method public int keyAt(int);
     method public void put(int, E);
     method public void remove(int);
@@ -45240,7 +45261,7 @@
     method public static boolean allowFileSchemeCookies();
     method public abstract void flush();
     method public abstract java.lang.String getCookie(java.lang.String);
-    method public static synchronized android.webkit.CookieManager getInstance();
+    method public static android.webkit.CookieManager getInstance();
     method public abstract boolean hasCookies();
     method public abstract deprecated void removeAllCookie();
     method public abstract void removeAllCookies(android.webkit.ValueCallback<java.lang.Boolean>);
@@ -45255,8 +45276,8 @@
   }
 
   public final deprecated class CookieSyncManager extends android.webkit.WebSyncManager {
-    method public static synchronized android.webkit.CookieSyncManager createInstance(android.content.Context);
-    method public static synchronized android.webkit.CookieSyncManager getInstance();
+    method public static android.webkit.CookieSyncManager createInstance(android.content.Context);
+    method public static android.webkit.CookieSyncManager getInstance();
     method protected deprecated void syncFromRamToFlash();
     field protected static final java.lang.String LOGTAG = "websync";
     field protected android.webkit.WebViewDatabase mDataBase;
@@ -53587,6 +53608,7 @@
     method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
     method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public static java.nio.channels.AsynchronousServerSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
     method public static java.nio.channels.AsynchronousServerSocketChannel open() throws java.io.IOException;
     method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
@@ -53598,6 +53620,7 @@
     method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
     method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
     method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
@@ -53666,6 +53689,7 @@
     method public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.DatagramChannel disconnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public abstract boolean isConnected();
     method public static java.nio.channels.DatagramChannel open() throws java.io.IOException;
@@ -53901,6 +53925,7 @@
     method public abstract java.nio.channels.SocketChannel accept() throws java.io.IOException;
     method public final java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public static java.nio.channels.ServerSocketChannel open() throws java.io.IOException;
     method public abstract java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
     method public abstract java.net.ServerSocket socket();
@@ -53916,6 +53941,7 @@
     method public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract boolean connect(java.net.SocketAddress) throws java.io.IOException;
     method public abstract boolean finishConnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public abstract boolean isConnected();
     method public abstract boolean isConnectionPending();
diff --git a/api/system-current.txt b/api/system-current.txt
index 7f51406..228f585 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -10496,6 +10496,7 @@
     method public android.os.PersistableBundle getExtras();
     method public java.lang.String getId();
     method public android.content.Intent getIntent();
+    method public android.content.Intent getIntents();
     method public long getLastChangedTimestamp();
     method public java.lang.CharSequence getLongLabel();
     method public java.lang.String getPackage();
@@ -10522,6 +10523,7 @@
     method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
     method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
     method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
+    method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
     method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
     method public android.content.pm.ShortcutInfo.Builder setRank(int);
     method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
@@ -10538,6 +10540,7 @@
     method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
     method public int getMaxShortcutCountPerActivity();
     method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+    method public boolean isRateLimitingActive();
     method public void removeAllDynamicShortcuts();
     method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
     method public void reportShortcutUsed(java.lang.String);
@@ -10765,7 +10768,7 @@
   }
 
   public class Resources {
-    ctor public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+    ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
     method public final void finishPreloading();
     method public final void flushLayoutCache();
     method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
@@ -10816,7 +10819,7 @@
     method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
     method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
     method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+    method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
   }
 
   public static class Resources.NotFoundException extends java.lang.RuntimeException {
@@ -21165,6 +21168,7 @@
     field public static final android.os.Parcelable.Creator<android.media.AudioFormat> CREATOR;
     field public static final int ENCODING_AC3 = 5; // 0x5
     field public static final int ENCODING_DEFAULT = 1; // 0x1
+    field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe
     field public static final int ENCODING_DTS = 7; // 0x7
     field public static final int ENCODING_DTS_HD = 8; // 0x8
     field public static final int ENCODING_E_AC3 = 6; // 0x6
@@ -21629,7 +21633,6 @@
     method public java.lang.String getAttribute(java.lang.String);
     method public double getAttributeDouble(java.lang.String, double);
     method public int getAttributeInt(java.lang.String, int);
-    method public long[] getAttributeLongArray(java.lang.String);
     method public boolean getLatLong(float[]);
     method public byte[] getThumbnail();
     method public long[] getThumbnailRange();
@@ -21648,6 +21651,7 @@
     field public static final deprecated java.lang.String TAG_APERTURE = "FNumber";
     field public static final java.lang.String TAG_APERTURE_VALUE = "ApertureValue";
     field public static final java.lang.String TAG_ARTIST = "Artist";
+    field public static final java.lang.String TAG_ASPECT_FRAME = "AspectFrame";
     field public static final java.lang.String TAG_BITS_PER_SAMPLE = "BitsPerSample";
     field public static final java.lang.String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
     field public static final java.lang.String TAG_CFA_PATTERN = "CFAPattern";
@@ -21734,6 +21738,8 @@
     field public static final java.lang.String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
     field public static final java.lang.String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
     field public static final java.lang.String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
+    field public static final java.lang.String TAG_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
+    field public static final java.lang.String TAG_PREVIEW_IMAGE_START = "PreviewImageStart";
     field public static final java.lang.String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
     field public static final java.lang.String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
     field public static final java.lang.String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
@@ -21761,6 +21767,7 @@
     field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
     field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
     field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
+    field public static final java.lang.String TAG_THUMBNAIL_IMAGE = "ThumbnailImage";
     field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
     field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
     field public static final java.lang.String TAG_TRANSFER_FUNCTION = "TransferFunction";
@@ -31797,6 +31804,7 @@
     method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
     method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
+    method public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
@@ -31809,6 +31817,7 @@
     method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
     method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
+    method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
   }
 
   public static final class StrictMode.VmPolicy {
@@ -43630,6 +43639,7 @@
     method public E get(long, E);
     method public int indexOfKey(long);
     method public int indexOfValue(E);
+    method public int indexOfValueByValue(E);
     method public long keyAt(int);
     method public void put(long, E);
     method public void remove(long);
@@ -43832,6 +43842,7 @@
     method public E get(int, E);
     method public int indexOfKey(int);
     method public int indexOfValue(E);
+    method public int indexOfValueByValue(E);
     method public int keyAt(int);
     method public void put(int, E);
     method public void remove(int);
@@ -48412,7 +48423,7 @@
     method public abstract java.lang.String getCookie(java.lang.String);
     method public abstract java.lang.String getCookie(java.lang.String, boolean);
     method public synchronized java.lang.String getCookie(android.net.WebAddress);
-    method public static synchronized android.webkit.CookieManager getInstance();
+    method public static android.webkit.CookieManager getInstance();
     method public abstract boolean hasCookies();
     method public abstract boolean hasCookies(boolean);
     method public abstract deprecated void removeAllCookie();
@@ -48429,8 +48440,8 @@
   }
 
   public final deprecated class CookieSyncManager extends android.webkit.WebSyncManager {
-    method public static synchronized android.webkit.CookieSyncManager createInstance(android.content.Context);
-    method public static synchronized android.webkit.CookieSyncManager getInstance();
+    method public static android.webkit.CookieSyncManager createInstance(android.content.Context);
+    method public static android.webkit.CookieSyncManager getInstance();
     method protected deprecated void syncFromRamToFlash();
     field protected static final java.lang.String LOGTAG = "websync";
     field protected android.webkit.WebViewDatabase mDataBase;
@@ -57110,6 +57121,7 @@
     method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
     method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public static java.nio.channels.AsynchronousServerSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
     method public static java.nio.channels.AsynchronousServerSocketChannel open() throws java.io.IOException;
     method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
@@ -57121,6 +57133,7 @@
     method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
     method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
     method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
@@ -57189,6 +57202,7 @@
     method public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.DatagramChannel disconnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public abstract boolean isConnected();
     method public static java.nio.channels.DatagramChannel open() throws java.io.IOException;
@@ -57424,6 +57438,7 @@
     method public abstract java.nio.channels.SocketChannel accept() throws java.io.IOException;
     method public final java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public static java.nio.channels.ServerSocketChannel open() throws java.io.IOException;
     method public abstract java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
     method public abstract java.net.ServerSocket socket();
@@ -57439,6 +57454,7 @@
     method public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract boolean connect(java.net.SocketAddress) throws java.io.IOException;
     method public abstract boolean finishConnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public abstract boolean isConnected();
     method public abstract boolean isConnectionPending();
diff --git a/api/test-current.txt b/api/test-current.txt
index cd75455..33291dc 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -2802,12 +2802,16 @@
     method public android.os.Bundle addAccountFromCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle confirmCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle editProperties(android.accounts.AccountAuthenticatorResponse, java.lang.String);
+    method public android.os.Bundle finishSession(android.accounts.AccountAuthenticatorResponse, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public android.os.Bundle getAccountCredentialsForCloning(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
     method public android.os.Bundle getAccountRemovalAllowed(android.accounts.AccountAuthenticatorResponse, android.accounts.Account) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle getAuthToken(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract java.lang.String getAuthTokenLabel(java.lang.String);
     method public final android.os.IBinder getIBinder();
     method public abstract android.os.Bundle hasFeatures(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String[]) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle isCredentialsUpdateSuggested(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle startAddAccountSession(android.accounts.AccountAuthenticatorResponse, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle) throws android.accounts.NetworkErrorException;
+    method public android.os.Bundle startUpdateCredentialsSession(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     method public abstract android.os.Bundle updateCredentials(android.accounts.AccountAuthenticatorResponse, android.accounts.Account, java.lang.String, android.os.Bundle) throws android.accounts.NetworkErrorException;
     field public static final java.lang.String KEY_CUSTOM_TOKEN_EXPIRY = "android.accounts.expiry";
   }
@@ -2845,6 +2849,7 @@
     method public void clearPassword(android.accounts.Account);
     method public android.accounts.AccountManagerFuture<android.os.Bundle> confirmCredentials(android.accounts.Account, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     method public android.accounts.AccountManagerFuture<android.os.Bundle> editProperties(java.lang.String, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> finishSession(android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     method public static android.accounts.AccountManager get(android.content.Context);
     method public android.accounts.Account[] getAccounts();
     method public android.accounts.Account[] getAccountsByType(java.lang.String);
@@ -2860,6 +2865,7 @@
     method public java.lang.String getUserData(android.accounts.Account, java.lang.String);
     method public android.accounts.AccountManagerFuture<java.lang.Boolean> hasFeatures(android.accounts.Account, java.lang.String[], android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
     method public void invalidateAuthToken(java.lang.String, java.lang.String);
+    method public android.accounts.AccountManagerFuture<java.lang.Boolean> isCredentialsUpdateSuggested(android.accounts.Account, java.lang.String, android.accounts.AccountManagerCallback<java.lang.Boolean>, android.os.Handler);
     method public static deprecated android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, java.lang.String[], boolean, java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle);
     method public static android.content.Intent newChooseAccountIntent(android.accounts.Account, java.util.List<android.accounts.Account>, java.lang.String[], java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle);
     method public boolean notifyAccountAuthenticated(android.accounts.Account);
@@ -2872,6 +2878,8 @@
     method public void setAuthToken(android.accounts.Account, java.lang.String, java.lang.String);
     method public void setPassword(android.accounts.Account, java.lang.String);
     method public void setUserData(android.accounts.Account, java.lang.String, java.lang.String);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> startAddAccountSession(java.lang.String, java.lang.String, java.lang.String[], android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
+    method public android.accounts.AccountManagerFuture<android.os.Bundle> startUpdateCredentialsSession(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     method public android.accounts.AccountManagerFuture<android.os.Bundle> updateCredentials(android.accounts.Account, java.lang.String, android.os.Bundle, android.app.Activity, android.accounts.AccountManagerCallback<android.os.Bundle>, android.os.Handler);
     field public static final java.lang.String ACTION_AUTHENTICATOR_INTENT = "android.accounts.AccountAuthenticator";
     field public static final java.lang.String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator";
@@ -2888,6 +2896,8 @@
     field public static final java.lang.String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse";
     field public static final java.lang.String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse";
     field public static final java.lang.String KEY_ACCOUNT_NAME = "authAccount";
+    field public static final java.lang.String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
+    field public static final java.lang.String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
     field public static final java.lang.String KEY_ACCOUNT_TYPE = "accountType";
     field public static final java.lang.String KEY_ANDROID_PACKAGE_NAME = "androidPackageName";
     field public static final java.lang.String KEY_AUTHENTICATOR_TYPES = "authenticator_types";
@@ -10084,6 +10094,7 @@
     method public android.os.PersistableBundle getExtras();
     method public java.lang.String getId();
     method public android.content.Intent getIntent();
+    method public android.content.Intent getIntents();
     method public long getLastChangedTimestamp();
     method public java.lang.CharSequence getLongLabel();
     method public java.lang.String getPackage();
@@ -10110,6 +10121,7 @@
     method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
     method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
     method public android.content.pm.ShortcutInfo.Builder setIntent(android.content.Intent);
+    method public android.content.pm.ShortcutInfo.Builder setIntents(android.content.Intent[]);
     method public android.content.pm.ShortcutInfo.Builder setLongLabel(java.lang.CharSequence);
     method public android.content.pm.ShortcutInfo.Builder setRank(int);
     method public android.content.pm.ShortcutInfo.Builder setShortLabel(java.lang.CharSequence);
@@ -10127,6 +10139,7 @@
     method public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
     method public int getMaxShortcutCountPerActivity();
     method public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+    method public boolean isRateLimitingActive();
     method public void removeAllDynamicShortcuts();
     method public void removeDynamicShortcuts(java.util.List<java.lang.String>);
     method public void reportShortcutUsed(java.lang.String);
@@ -10340,7 +10353,7 @@
   }
 
   public class Resources {
-    ctor public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+    ctor public deprecated Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
     method public final void finishPreloading();
     method public final void flushLayoutCache();
     method public android.content.res.XmlResourceParser getAnimation(int) throws android.content.res.Resources.NotFoundException;
@@ -10391,7 +10404,7 @@
     method public android.content.res.AssetFileDescriptor openRawResourceFd(int) throws android.content.res.Resources.NotFoundException;
     method public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
     method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+    method public deprecated void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
   }
 
   public static class Resources.NotFoundException extends java.lang.RuntimeException {
@@ -19727,6 +19740,7 @@
     field public static final android.os.Parcelable.Creator<android.media.AudioFormat> CREATOR;
     field public static final int ENCODING_AC3 = 5; // 0x5
     field public static final int ENCODING_DEFAULT = 1; // 0x1
+    field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe
     field public static final int ENCODING_DTS = 7; // 0x7
     field public static final int ENCODING_DTS_HD = 8; // 0x8
     field public static final int ENCODING_E_AC3 = 6; // 0x6
@@ -20179,7 +20193,6 @@
     method public java.lang.String getAttribute(java.lang.String);
     method public double getAttributeDouble(java.lang.String, double);
     method public int getAttributeInt(java.lang.String, int);
-    method public long[] getAttributeLongArray(java.lang.String);
     method public boolean getLatLong(float[]);
     method public byte[] getThumbnail();
     method public long[] getThumbnailRange();
@@ -20198,6 +20211,7 @@
     field public static final deprecated java.lang.String TAG_APERTURE = "FNumber";
     field public static final java.lang.String TAG_APERTURE_VALUE = "ApertureValue";
     field public static final java.lang.String TAG_ARTIST = "Artist";
+    field public static final java.lang.String TAG_ASPECT_FRAME = "AspectFrame";
     field public static final java.lang.String TAG_BITS_PER_SAMPLE = "BitsPerSample";
     field public static final java.lang.String TAG_BRIGHTNESS_VALUE = "BrightnessValue";
     field public static final java.lang.String TAG_CFA_PATTERN = "CFAPattern";
@@ -20284,6 +20298,8 @@
     field public static final java.lang.String TAG_PIXEL_X_DIMENSION = "PixelXDimension";
     field public static final java.lang.String TAG_PIXEL_Y_DIMENSION = "PixelYDimension";
     field public static final java.lang.String TAG_PLANAR_CONFIGURATION = "PlanarConfiguration";
+    field public static final java.lang.String TAG_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
+    field public static final java.lang.String TAG_PREVIEW_IMAGE_START = "PreviewImageStart";
     field public static final java.lang.String TAG_PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
     field public static final java.lang.String TAG_REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
     field public static final java.lang.String TAG_RELATED_SOUND_FILE = "RelatedSoundFile";
@@ -20311,6 +20327,7 @@
     field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
     field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
     field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
+    field public static final java.lang.String TAG_THUMBNAIL_IMAGE = "ThumbnailImage";
     field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
     field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
     field public static final java.lang.String TAG_TRANSFER_FUNCTION = "TransferFunction";
@@ -29358,6 +29375,7 @@
     method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
     method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
+    method public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
@@ -29370,6 +29388,7 @@
     method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
     method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
     method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
+    method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
   }
 
   public static final class StrictMode.VmPolicy {
@@ -40544,6 +40563,7 @@
     method public E get(long, E);
     method public int indexOfKey(long);
     method public int indexOfValue(E);
+    method public int indexOfValueByValue(E);
     method public long keyAt(int);
     method public void put(long, E);
     method public void remove(long);
@@ -40746,6 +40766,7 @@
     method public E get(int, E);
     method public int indexOfKey(int);
     method public int indexOfValue(E);
+    method public int indexOfValueByValue(E);
     method public int keyAt(int);
     method public void put(int, E);
     method public void remove(int);
@@ -45320,7 +45341,7 @@
     method public static boolean allowFileSchemeCookies();
     method public abstract void flush();
     method public abstract java.lang.String getCookie(java.lang.String);
-    method public static synchronized android.webkit.CookieManager getInstance();
+    method public static android.webkit.CookieManager getInstance();
     method public abstract boolean hasCookies();
     method public abstract deprecated void removeAllCookie();
     method public abstract void removeAllCookies(android.webkit.ValueCallback<java.lang.Boolean>);
@@ -45335,8 +45356,8 @@
   }
 
   public final deprecated class CookieSyncManager extends android.webkit.WebSyncManager {
-    method public static synchronized android.webkit.CookieSyncManager createInstance(android.content.Context);
-    method public static synchronized android.webkit.CookieSyncManager getInstance();
+    method public static android.webkit.CookieSyncManager createInstance(android.content.Context);
+    method public static android.webkit.CookieSyncManager getInstance();
     method protected deprecated void syncFromRamToFlash();
     field protected static final java.lang.String LOGTAG = "websync";
     field protected android.webkit.WebViewDatabase mDataBase;
@@ -53675,6 +53696,7 @@
     method public abstract java.util.concurrent.Future<java.nio.channels.AsynchronousSocketChannel> accept();
     method public final java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.AsynchronousServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public static java.nio.channels.AsynchronousServerSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
     method public static java.nio.channels.AsynchronousServerSocketChannel open() throws java.io.IOException;
     method public final java.nio.channels.spi.AsynchronousChannelProvider provider();
@@ -53686,6 +53708,7 @@
     method public abstract java.nio.channels.AsynchronousSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract void connect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
     method public abstract java.util.concurrent.Future<java.lang.Void> connect(java.net.SocketAddress);
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public static java.nio.channels.AsynchronousSocketChannel open(java.nio.channels.AsynchronousChannelGroup) throws java.io.IOException;
     method public static java.nio.channels.AsynchronousSocketChannel open() throws java.io.IOException;
@@ -53754,6 +53777,7 @@
     method public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.DatagramChannel disconnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public abstract boolean isConnected();
     method public static java.nio.channels.DatagramChannel open() throws java.io.IOException;
@@ -53989,6 +54013,7 @@
     method public abstract java.nio.channels.SocketChannel accept() throws java.io.IOException;
     method public final java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int) throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public static java.nio.channels.ServerSocketChannel open() throws java.io.IOException;
     method public abstract java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption<T>, T) throws java.io.IOException;
     method public abstract java.net.ServerSocket socket();
@@ -54004,6 +54029,7 @@
     method public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress) throws java.io.IOException;
     method public abstract boolean connect(java.net.SocketAddress) throws java.io.IOException;
     method public abstract boolean finishConnect() throws java.io.IOException;
+    method public abstract java.net.SocketAddress getLocalAddress() throws java.io.IOException;
     method public abstract java.net.SocketAddress getRemoteAddress() throws java.io.IOException;
     method public abstract boolean isConnected();
     method public abstract boolean isConnectionPending();
diff --git a/cmds/app_process/app_main.cpp b/cmds/app_process/app_main.cpp
index 2e02382..72a21e3 100644
--- a/cmds/app_process/app_main.cpp
+++ b/cmds/app_process/app_main.cpp
@@ -299,8 +299,7 @@
     }
 
     if (!niceName.isEmpty()) {
-        runtime.setArgv0(niceName.string());
-        set_process_name(niceName.string());
+        runtime.setArgv0(niceName.string(), true /* setProcName */);
     }
 
     if (zygote) {
diff --git a/cmds/bootanimation/Android.mk b/cmds/bootanimation/Android.mk
index 7c8842c..3a92b9e 100644
--- a/cmds/bootanimation/Android.mk
+++ b/cmds/bootanimation/Android.mk
@@ -3,14 +3,16 @@
 
 LOCAL_SRC_FILES:= \
     bootanimation_main.cpp \
-    AudioPlayer.cpp \
+    audioplay.cpp \
     BootAnimation.cpp
 
 LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
 
 LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
 
-LOCAL_C_INCLUDES += external/tinyalsa/include
+LOCAL_C_INCLUDES += \
+    external/tinyalsa/include \
+    frameworks/wilhelm/include
 
 LOCAL_SHARED_LIBRARIES := \
     libcutils \
@@ -23,6 +25,7 @@
     libEGL \
     libGLESv1_CM \
     libgui \
+    libOpenSLES \
     libtinyalsa
 
 LOCAL_MODULE:= bootanimation
diff --git a/cmds/bootanimation/AudioPlayer.cpp b/cmds/bootanimation/AudioPlayer.cpp
deleted file mode 100644
index 2932130..0000000
--- a/cmds/bootanimation/AudioPlayer.cpp
+++ /dev/null
@@ -1,313 +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.
- */
-
-#define LOG_NDEBUG 0
-#define LOG_TAG "BootAnim_AudioPlayer"
-
-#include "AudioPlayer.h"
-
-#include <androidfw/ZipFileRO.h>
-#include <tinyalsa/asoundlib.h>
-#include <utils/Log.h>
-#include <utils/String8.h>
-
-#define ID_RIFF 0x46464952
-#define ID_WAVE 0x45564157
-#define ID_FMT  0x20746d66
-#define ID_DATA 0x61746164
-
-// Maximum line length for audio_conf.txt
-// We only accept lines less than this length to avoid overflows using sscanf()
-#define MAX_LINE_LENGTH 1024
-
-struct riff_wave_header {
-    uint32_t riff_id;
-    uint32_t riff_sz;
-    uint32_t wave_id;
-};
-
-struct chunk_header {
-    uint32_t id;
-    uint32_t sz;
-};
-
-struct chunk_fmt {
-    uint16_t audio_format;
-    uint16_t num_channels;
-    uint32_t sample_rate;
-    uint32_t byte_rate;
-    uint16_t block_align;
-    uint16_t bits_per_sample;
-};
-
-
-namespace android {
-
-AudioPlayer::AudioPlayer()
-    :   mCard(-1),
-        mDevice(-1),
-        mPeriodSize(0),
-        mPeriodCount(0),
-        mCurrentFile(NULL)
-{
-}
-
-AudioPlayer::~AudioPlayer() {
-}
-
-static bool setMixerValue(struct mixer* mixer, const char* name, const char* values)
-{
-    if (!mixer) {
-        ALOGE("no mixer in setMixerValue");
-        return false;
-    }
-    struct mixer_ctl *ctl = mixer_get_ctl_by_name(mixer, name);
-    if (!ctl) {
-        ALOGE("mixer_get_ctl_by_name failed for %s", name);
-        return false;
-    }
-
-    enum mixer_ctl_type type = mixer_ctl_get_type(ctl);
-    int numValues = mixer_ctl_get_num_values(ctl);
-    int intValue;
-    char stringValue[MAX_LINE_LENGTH];
-
-    for (int i = 0; i < numValues && values; i++) {
-        // strip leading space
-        while (*values == ' ') values++;
-        if (*values == 0) break;
-
-        switch (type) {
-            case MIXER_CTL_TYPE_BOOL:
-            case MIXER_CTL_TYPE_INT:
-                if (sscanf(values, "%d", &intValue) == 1) {
-                    if (mixer_ctl_set_value(ctl, i, intValue) != 0) {
-                        ALOGE("mixer_ctl_set_value failed for %s %d", name, intValue);
-                    }
-                } else {
-                    ALOGE("Could not parse %s as int for %s", values, name);
-                }
-                break;
-            case MIXER_CTL_TYPE_ENUM:
-                if (sscanf(values, "%s", stringValue) == 1) {
-                    if (mixer_ctl_set_enum_by_string(ctl, stringValue) != 0) {
-                        ALOGE("mixer_ctl_set_enum_by_string failed for %s %s", name, stringValue);
-                    }
-                } else {
-                    ALOGE("Could not parse %s as enum for %s", values, name);
-                }
-                break;
-            default:
-                ALOGE("unsupported mixer type %d for %s", type, name);
-                break;
-        }
-
-        values = strchr(values, ' ');
-    }
-
-    return true;
-}
-
-
-/*
- * Parse the audio configuration file.
- * The file is named audio_conf.txt and must begin with the following header:
- *
- * card=<ALSA card number>
- * device=<ALSA device number>
- * period_size=<period size>
- * period_count=<period count>
- *
- * This header is followed by zero or more mixer settings, each with the format:
- * mixer "<name>" = <value list>
- * Since mixer names can contain spaces, the name must be enclosed in double quotes.
- * The values in the value list can be integers, booleans (represented by 0 or 1)
- * or strings for enum values.
- */
-bool AudioPlayer::init(const char* config)
-{
-    int tempInt;
-    struct mixer* mixer = NULL;
-    char    name[MAX_LINE_LENGTH];
-
-    for (;;) {
-        const char* endl = strstr(config, "\n");
-        if (!endl) break;
-        String8 line(config, endl - config);
-        if (line.length() >= MAX_LINE_LENGTH) {
-            ALOGE("Line too long in audio_conf.txt");
-            return false;
-        }
-        const char* l = line.string();
-
-        if (sscanf(l, "card=%d", &tempInt) == 1) {
-            ALOGD("card=%d", tempInt);
-            mCard = tempInt;
-
-            mixer = mixer_open(mCard);
-            if (!mixer) {
-                ALOGE("could not open mixer for card %d", mCard);
-                return false;
-            }
-        } else if (sscanf(l, "device=%d", &tempInt) == 1) {
-            ALOGD("device=%d", tempInt);
-            mDevice = tempInt;
-        } else if (sscanf(l, "period_size=%d", &tempInt) == 1) {
-            ALOGD("period_size=%d", tempInt);
-            mPeriodSize = tempInt;
-        } else if (sscanf(l, "period_count=%d", &tempInt) == 1) {
-            ALOGD("period_count=%d", tempInt);
-            mPeriodCount = tempInt;
-        } else if (sscanf(l, "mixer \"%[0-9a-zA-Z _]s\"", name) == 1) {
-            const char* values = strchr(l, '=');
-            if (values) {
-                values++;   // skip '='
-                ALOGD("name: \"%s\" = %s", name, values);
-                setMixerValue(mixer, name, values);
-            } else {
-                ALOGE("values missing for name: \"%s\"", name);
-            }
-        }
-        config = ++endl;
-    }
-
-    mixer_close(mixer);
-
-    if (mCard >= 0 && mDevice >= 0) {
-        return true;
-    }
-
-    return false;
-}
-
-void AudioPlayer::playFile(FileMap* fileMap) {
-    // stop any currently playing sound
-    requestExitAndWait();
-
-    mCurrentFile = fileMap;
-    run("bootanim audio", PRIORITY_URGENT_AUDIO);
-}
-
-bool AudioPlayer::threadLoop()
-{
-    struct pcm_config config;
-    struct pcm *pcm = NULL;
-    bool moreChunks = true;
-    const struct chunk_fmt* chunkFmt = NULL;
-    int bufferSize;
-    const uint8_t* wavData;
-    size_t wavLength;
-    const struct riff_wave_header* wavHeader;
-
-    if (mCurrentFile == NULL) {
-        ALOGE("mCurrentFile is NULL");
-        return false;
-     }
-
-    wavData = (const uint8_t *)mCurrentFile->getDataPtr();
-    if (!wavData) {
-        ALOGE("Could not access WAV file data");
-        goto exit;
-    }
-    wavLength = mCurrentFile->getDataLength();
-
-    wavHeader = (const struct riff_wave_header *)wavData;
-    if (wavLength < sizeof(*wavHeader) || (wavHeader->riff_id != ID_RIFF) ||
-        (wavHeader->wave_id != ID_WAVE)) {
-        ALOGE("Error: audio file is not a riff/wave file\n");
-        goto exit;
-    }
-    wavData += sizeof(*wavHeader);
-    wavLength -= sizeof(*wavHeader);
-
-    do {
-        const struct chunk_header* chunkHeader = (const struct chunk_header*)wavData;
-        if (wavLength < sizeof(*chunkHeader)) {
-            ALOGE("EOF reading chunk headers");
-            goto exit;
-        }
-
-        wavData += sizeof(*chunkHeader);
-        wavLength -=  sizeof(*chunkHeader);
-
-        switch (chunkHeader->id) {
-            case ID_FMT:
-                chunkFmt = (const struct chunk_fmt *)wavData;
-                wavData += chunkHeader->sz;
-                wavLength -= chunkHeader->sz;
-                break;
-            case ID_DATA:
-                /* Stop looking for chunks */
-                moreChunks = 0;
-                break;
-            default:
-                /* Unknown chunk, skip bytes */
-                wavData += chunkHeader->sz;
-                wavLength -= chunkHeader->sz;
-        }
-    } while (moreChunks);
-
-    if (!chunkFmt) {
-        ALOGE("format not found in WAV file");
-        goto exit;
-    }
-
-
-    memset(&config, 0, sizeof(config));
-    config.channels = chunkFmt->num_channels;
-    config.rate = chunkFmt->sample_rate;
-    config.period_size = mPeriodSize;
-    config.period_count = mPeriodCount;
-    config.start_threshold = mPeriodSize / 4;
-    config.stop_threshold = INT_MAX;
-    config.avail_min = config.start_threshold;
-    if (chunkFmt->bits_per_sample != 16) {
-        ALOGE("only 16 bit WAV files are supported");
-        goto exit;
-    }
-    config.format = PCM_FORMAT_S16_LE;
-
-    pcm = pcm_open(mCard, mDevice, PCM_OUT, &config);
-    if (!pcm || !pcm_is_ready(pcm)) {
-        ALOGE("Unable to open PCM device (%s)\n", pcm_get_error(pcm));
-        goto exit;
-    }
-
-    bufferSize = pcm_frames_to_bytes(pcm, pcm_get_buffer_size(pcm));
-
-    while (wavLength > 0) {
-        if (exitPending()) goto exit;
-        size_t count = bufferSize;
-        if (count > wavLength)
-            count = wavLength;
-
-        if (pcm_write(pcm, wavData, count)) {
-            ALOGE("pcm_write failed (%s)", pcm_get_error(pcm));
-            goto exit;
-        }
-        wavData += count;
-        wavLength -= count;
-    }
-
-exit:
-    if (pcm)
-        pcm_close(pcm);
-    delete mCurrentFile;
-    mCurrentFile = NULL;
-    return false;
-}
-
-} // namespace android
diff --git a/cmds/bootanimation/AudioPlayer.h b/cmds/bootanimation/AudioPlayer.h
deleted file mode 100644
index 1def0ae..0000000
--- a/cmds/bootanimation/AudioPlayer.h
+++ /dev/null
@@ -1,48 +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.
- */
-
-#ifndef _BOOTANIMATION_AUDIOPLAYER_H
-#define _BOOTANIMATION_AUDIOPLAYER_H
-
-#include <utils/Thread.h>
-#include <utils/FileMap.h>
-
-namespace android {
-
-class AudioPlayer : public Thread
-{
-public:
-                AudioPlayer();
-    virtual     ~AudioPlayer();
-    bool        init(const char* config);
-
-    void        playFile(FileMap* fileMap);
-
-private:
-    virtual bool        threadLoop();
-
-private:
-    int                 mCard;      // ALSA card to use
-    int                 mDevice;    // ALSA device to use
-    int                 mPeriodSize;
-    int                 mPeriodCount;
-
-    FileMap*            mCurrentFile;
-};
-
-} // namespace android
-
-#endif // _BOOTANIMATION_AUDIOPLAYER_H
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index e849f4b..e634717 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -49,8 +49,8 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wunused-parameter"
 #include <SkBitmap.h>
+#include <SkImage.h>
 #include <SkStream.h>
-#include <SkImageDecoder.h>
 #pragma GCC diagnostic pop
 
 #include <GLES/gl.h>
@@ -58,7 +58,7 @@
 #include <EGL/eglext.h>
 
 #include "BootAnimation.h"
-#include "AudioPlayer.h"
+#include "audioplay.h"
 
 namespace android {
 
@@ -72,6 +72,8 @@
 static const char LAST_TIME_CHANGED_FILE_PATH[] = "/data/system/time/last_time_change";
 static const char ACCURATE_TIME_FLAG_FILE_NAME[] = "time_is_accurate";
 static const char ACCURATE_TIME_FLAG_FILE_PATH[] = "/data/system/time/time_is_accurate";
+// Java timestamp format. Don't show the clock if the date is before 2000-01-01 00:00:00.
+static const long long ACCURATE_TIME_EPOCH = 946684800000;
 static const char EXIT_PROP_NAME[] = "service.bootanim.exit";
 static const int ANIM_ENTRY_NAME_MAX = 256;
 
@@ -106,9 +108,7 @@
     // might be blocked on a condition variable that will never be updated.
     kill( getpid(), SIGKILL );
     requestExit();
-    if (mAudioPlayer != NULL) {
-        mAudioPlayer->requestExit();
-    }
+    audioplay::destroy();
 }
 
 status_t BootAnimation::initTexture(Texture* texture, AssetManager& assets,
@@ -117,8 +117,10 @@
     if (asset == NULL)
         return NO_INIT;
     SkBitmap bitmap;
-    SkImageDecoder::DecodeMemory(asset->getBuffer(false), asset->getLength(),
-            &bitmap, kUnknown_SkColorType, SkImageDecoder::kDecodePixels_Mode);
+    sk_sp<SkData> data = SkData::MakeWithoutCopy(asset->getBuffer(false),
+            asset->getLength());
+    sk_sp<SkImage> image = SkImage::MakeFromEncoded(data);
+    image->asLegacyBitmap(&bitmap, SkImage::kRO_LegacyBitmapMode);
     asset->close();
     delete asset;
 
@@ -171,15 +173,10 @@
     //StopWatch watch("blah");
 
     SkBitmap bitmap;
-    SkMemoryStream  stream(frame.map->getDataPtr(), frame.map->getDataLength());
-    SkImageDecoder* codec = SkImageDecoder::Factory(&stream);
-    if (codec != NULL) {
-        codec->setDitherImage(false);
-        codec->decode(&stream, &bitmap,
-                kN32_SkColorType,
-                SkImageDecoder::kDecodePixels_Mode);
-        delete codec;
-    }
+    sk_sp<SkData> data = SkData::MakeWithoutCopy(frame.map->getDataPtr(),
+            frame.map->getDataLength());
+    sk_sp<SkImage> image = SkImage::MakeFromEncoded(data);
+    image->asLegacyBitmap(&bitmap, SkImage::kRO_LegacyBitmapMode);
 
     // FileMap memory is never released until application exit.
     // Release it now as the texture is already loaded and the memory used for
@@ -202,25 +199,25 @@
 
     switch (bitmap.colorType()) {
         case kN32_SkColorType:
-            if (tw != w || th != h) {
+            if (!mUseNpotTextures && (tw != w || th != h)) {
                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tw, th, 0, GL_RGBA,
                         GL_UNSIGNED_BYTE, 0);
                 glTexSubImage2D(GL_TEXTURE_2D, 0,
                         0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, p);
             } else {
-                glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tw, th, 0, GL_RGBA,
+                glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA,
                         GL_UNSIGNED_BYTE, p);
             }
             break;
 
         case kRGB_565_SkColorType:
-            if (tw != w || th != h) {
+            if (!mUseNpotTextures && (tw != w || th != h)) {
                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tw, th, 0, GL_RGB,
                         GL_UNSIGNED_SHORT_5_6_5, 0);
                 glTexSubImage2D(GL_TEXTURE_2D, 0,
                         0, 0, w, h, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, p);
             } else {
-                glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tw, th, 0, GL_RGB,
+                glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0, GL_RGB,
                         GL_UNSIGNED_SHORT_5_6_5, p);
             }
             break;
@@ -400,9 +397,6 @@
     int exitnow = atoi(value);
     if (exitnow) {
         requestExit();
-        if (mAudioPlayer != NULL) {
-            mAudioPlayer->requestExit();
-        }
     }
 }
 
@@ -524,16 +518,6 @@
     }
     char const* s = desString.string();
 
-    // Create and initialize an AudioPlayer if we have an audio_conf.txt file
-    String8 audioConf;
-    if (readFile(animation.zip, "audio_conf.txt", audioConf)) {
-        mAudioPlayer = new AudioPlayer;
-        if (!mAudioPlayer->init(audioConf.string())) {
-            ALOGE("mAudioPlayer.init failed");
-            mAudioPlayer = NULL;
-        }
-    }
-
     // Parse the description file
     for (;;) {
         const char* endl = strstr(s, "\n");
@@ -564,7 +548,7 @@
             part.pause = pause;
             part.path = path;
             part.clockPosY = clockPosY;
-            part.audioFile = NULL;
+            part.audioData = NULL;
             part.animation = NULL;
             if (!parseColor(color, part.backgroundColor)) {
                 ALOGE("> invalid color '#%s'", color);
@@ -580,7 +564,7 @@
             part.playUntilComplete = false;
             part.count = 1;
             part.pause = 0;
-            part.audioFile = NULL;
+            part.audioData = NULL;
             part.animation = loadAnimation(String8(SYSTEM_BOOTANIMATION_FILE));
             if (part.animation != NULL)
                 animation.parts.add(part);
@@ -601,6 +585,7 @@
         return false;
     }
 
+    Animation::Part* partWithAudio = NULL;
     ZipEntryRO entry;
     char name[ANIM_ENTRY_NAME_MAX];
     while ((entry = zip->nextEntry(cookie)) != NULL) {
@@ -625,7 +610,9 @@
                                 Animation::Part& part(animation.parts.editItemAt(j));
                                 if (leaf == "audio.wav") {
                                     // a part may have at most one audio file
-                                    part.audioFile = map;
+                                    part.audioData = (uint8_t *)map->getDataPtr();
+                                    part.audioLength = map->getDataLength();
+                                    partWithAudio = &part;
                                 } else if (leaf == "trim.txt") {
                                     part.trimData.setTo((char const*)map->getDataPtr(),
                                                         map->getDataLength());
@@ -640,6 +627,8 @@
                                     part.frames.add(frame);
                                 }
                             }
+                        } else {
+                            ALOGE("bootanimation.zip is compressed; must be only stored");
                         }
                     }
                 }
@@ -673,6 +662,14 @@
         }
     }
 
+    // Create and initialize audioplay if there is a wav file in any of the animations.
+    if (partWithAudio != NULL) {
+        ALOGD("found audio.wav, creating playback engine");
+        if (!audioplay::create(partWithAudio->audioData, partWithAudio->audioLength)) {
+            return false;
+        }
+    }
+
     zip->endIteration(cookie);
 
     return true;
@@ -695,6 +692,20 @@
         mClockEnabled = false;
     }
 
+    // Check if npot textures are supported
+    mUseNpotTextures = false;
+    String8 gl_extensions;
+    const char* exts = reinterpret_cast<const char*>(glGetString(GL_EXTENSIONS));
+    if (!exts) {
+        glGetError();
+    } else {
+        gl_extensions.setTo(exts);
+        if ((gl_extensions.find("GL_ARB_texture_non_power_of_two") != -1) ||
+            (gl_extensions.find("GL_OES_texture_npot") != -1)) {
+            mUseNpotTextures = true;
+        }
+    }
+
     // Blend required to draw time on top of animation frames.
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     glShadeModel(GL_FLAT);
@@ -763,8 +774,9 @@
                 break;
 
             // only play audio file the first time we animate the part
-            if (r == 0 && mAudioPlayer != NULL && part.audioFile) {
-                mAudioPlayer->playFile(part.audioFile);
+            if (r == 0 && part.audioData) {
+                ALOGD("playing clip for part%d, size=%d", (int) i, part.audioLength);
+                audioplay::playClip(part.audioData, part.audioLength);
             }
 
             glClearColor(
@@ -839,14 +851,23 @@
                 break;
         }
 
-        // free the textures for this part
+    }
+
+    // Free textures created for looping parts now that the animation is done.
+    for (const Animation::Part& part : animation.parts) {
         if (part.count != 1) {
-            for (size_t j=0 ; j<fcount ; j++) {
+            const size_t fcount = part.frames.size();
+            for (size_t j = 0; j < fcount; j++) {
                 const Animation::Frame& frame(part.frames[j]);
                 glDeleteTextures(1, &frame.tid);
             }
         }
     }
+
+    // we've finally played everything we're going to play
+    audioplay::setPlaying(false);
+    audioplay::destroy();
+
     return true;
 }
 
@@ -882,7 +903,10 @@
     mLoadedFiles.add(animation->fileName);
 
     parseAnimationDesc(*animation);
-    preloadZip(*animation);
+    if (!preloadZip(*animation)) {
+        return NULL;
+    }
+
 
     mLoadedFiles.remove(fn);
     return animation;
@@ -912,8 +936,9 @@
         clock_gettime(CLOCK_REALTIME, &now);
         // Match the Java timestamp format
         long long rtcNow = (now.tv_sec * 1000LL) + (now.tv_nsec / 1000000LL);
-        if (lastChangedTime > rtcNow - MAX_TIME_IN_PAST
-            && lastChangedTime < rtcNow + MAX_TIME_IN_FUTURE) {
+        if (ACCURATE_TIME_EPOCH < rtcNow
+            && lastChangedTime > (rtcNow - MAX_TIME_IN_PAST)
+            && lastChangedTime < (rtcNow + MAX_TIME_IN_FUTURE)) {
             mTimeIsAccurate = true;
         }
       }
diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h
index a093c9b..a53216e 100644
--- a/cmds/bootanimation/BootAnimation.h
+++ b/cmds/bootanimation/BootAnimation.h
@@ -30,7 +30,6 @@
 
 namespace android {
 
-class AudioPlayer;
 class Surface;
 class SurfaceComposerClient;
 class SurfaceControl;
@@ -98,7 +97,8 @@
             SortedVector<Frame> frames;
             bool playUntilComplete;
             float backgroundColor[3];
-            FileMap* audioFile;
+            uint8_t* audioData;
+            int audioLength;
             Animation* animation;
         };
         int fps;
@@ -124,12 +124,12 @@
     void checkExit();
 
     sp<SurfaceComposerClient>       mSession;
-    sp<AudioPlayer>                 mAudioPlayer;
     AssetManager mAssets;
     Texture     mAndroid[2];
     Texture     mClock;
     int         mWidth;
     int         mHeight;
+    bool        mUseNpotTextures = false;
     EGLDisplay  mDisplay;
     EGLDisplay  mContext;
     EGLDisplay  mSurface;
diff --git a/cmds/bootanimation/FORMAT.md b/cmds/bootanimation/FORMAT.md
index e4c52f7..9ea6fea 100644
--- a/cmds/bootanimation/FORMAT.md
+++ b/cmds/bootanimation/FORMAT.md
@@ -67,34 +67,8 @@
 
 ## audio.wav
 
-Each part may optionally play a `wav` sample when it starts. To enable this for an animation,
-you must also include a `audio_conf.txt` file in the ZIP archive. Its format is as follows:
-
-    card=<ALSA card number>
-    device=<ALSA device number>
-    period_size=<period size>
-    period_count=<period count>
-
-This header is followed by zero or more mixer settings, each with the format:
-
-    mixer "<name>" = <value list>
-
-Here's an example `audio_conf.txt` from Shamu:
-
-    card=0
-    device=15
-    period_size=1024
-    period_count=4
-
-    mixer "QUAT_MI2S_RX Audio Mixer MultiMedia5" = 1
-    mixer "Playback Channel Map" = 0 220 157 195 0 0 0 0
-    mixer "QUAT_MI2S_RX Channels" = Two
-    mixer "BOOST_STUB Right Mixer right" = 1
-    mixer "BOOST_STUB Left Mixer left" = 1
-    mixer "Compress Playback 9 Volume" = 80 80
-
-You will probably need to get these mixer names and values out of `audio_platform_info.xml`
-and `mixer_paths.xml` for your device.
+Each part may optionally play a `wav` sample when it starts. To enable this, add a file
+with the name `audio.wav` in the part directory.
 
 ## exiting
 
diff --git a/cmds/bootanimation/audioplay.cpp b/cmds/bootanimation/audioplay.cpp
new file mode 100644
index 0000000..dbb76dc
--- /dev/null
+++ b/cmds/bootanimation/audioplay.cpp
@@ -0,0 +1,377 @@
+/*
+ * 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.
+ *
+ */
+
+// cribbed from samples/native-audio
+
+#include "audioplay.h"
+
+#define CHATTY ALOGD
+
+#include <string.h>
+
+#include <utils/Log.h>
+
+// for native audio
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+
+namespace audioplay {
+namespace {
+
+// engine interfaces
+static SLObjectItf engineObject = NULL;
+static SLEngineItf engineEngine;
+
+// output mix interfaces
+static SLObjectItf outputMixObject = NULL;
+
+// buffer queue player interfaces
+static SLObjectItf bqPlayerObject = NULL;
+static SLPlayItf bqPlayerPlay;
+static SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue;
+static SLMuteSoloItf bqPlayerMuteSolo;
+static SLVolumeItf bqPlayerVolume;
+
+// pointer and size of the next player buffer to enqueue, and number of remaining buffers
+static const uint8_t* nextBuffer;
+static unsigned nextSize;
+
+static const uint32_t ID_RIFF = 0x46464952;
+static const uint32_t ID_WAVE = 0x45564157;
+static const uint32_t ID_FMT  = 0x20746d66;
+static const uint32_t ID_DATA = 0x61746164;
+
+struct RiffWaveHeader {
+    uint32_t riff_id;
+    uint32_t riff_sz;
+    uint32_t wave_id;
+};
+
+struct ChunkHeader {
+    uint32_t id;
+    uint32_t sz;
+};
+
+struct ChunkFormat {
+    uint16_t audio_format;
+    uint16_t num_channels;
+    uint32_t sample_rate;
+    uint32_t byte_rate;
+    uint16_t block_align;
+    uint16_t bits_per_sample;
+};
+
+// this callback handler is called every time a buffer finishes playing
+void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void *context) {
+    (void)bq;
+    (void)context;
+    audioplay::setPlaying(false);
+}
+
+bool hasPlayer() {
+    return (engineObject != NULL && bqPlayerObject != NULL);
+}
+
+// create the engine and output mix objects
+bool createEngine() {
+    SLresult result;
+
+    // create engine
+    result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("slCreateEngine failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // realize the engine
+    result = (*engineObject)->Realize(engineObject, SL_BOOLEAN_FALSE);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl engine Realize failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // get the engine interface, which is needed in order to create other objects
+    result = (*engineObject)->GetInterface(engineObject, SL_IID_ENGINE, &engineEngine);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl engine GetInterface failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // create output mix, with environmental reverb specified as a non-required interface
+    const SLInterfaceID ids[1] = {SL_IID_ENVIRONMENTALREVERB};
+    const SLboolean req[1] = {SL_BOOLEAN_FALSE};
+    result = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 1, ids, req);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl engine CreateOutputMix failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // realize the output mix
+    result = (*outputMixObject)->Realize(outputMixObject, SL_BOOLEAN_FALSE);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl outputMix Realize failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    return true;
+}
+
+// create buffer queue audio player
+bool createBufferQueueAudioPlayer(const ChunkFormat* chunkFormat) {
+    SLresult result;
+
+    // configure audio source
+    SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 1};
+
+    SLDataFormat_PCM format_pcm = {
+        SL_DATAFORMAT_PCM,
+        chunkFormat->num_channels,
+        chunkFormat->sample_rate * 1000,  // convert to milliHz
+        chunkFormat->bits_per_sample,
+        16,
+        SL_SPEAKER_FRONT_CENTER,
+        SL_BYTEORDER_LITTLEENDIAN
+    };
+    SLDataSource audioSrc = {&loc_bufq, &format_pcm};
+
+    // configure audio sink
+    SLDataLocator_OutputMix loc_outmix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject};
+    SLDataSink audioSnk = {&loc_outmix, NULL};
+
+    // create audio player
+    const SLInterfaceID ids[3] = {SL_IID_BUFFERQUEUE, SL_IID_VOLUME, SL_IID_ANDROIDCONFIGURATION};
+    const SLboolean req[3] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
+    result = (*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, &audioSrc, &audioSnk,
+            3, ids, req);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl CreateAudioPlayer failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // Use the System stream for boot sound playback.
+    SLAndroidConfigurationItf playerConfig;
+    result = (*bqPlayerObject)->GetInterface(bqPlayerObject,
+        SL_IID_ANDROIDCONFIGURATION, &playerConfig);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("config GetInterface failed with result %d", result);
+        return false;
+    }
+    SLint32 streamType = SL_ANDROID_STREAM_SYSTEM;
+    result = (*playerConfig)->SetConfiguration(playerConfig,
+        SL_ANDROID_KEY_STREAM_TYPE, &streamType, sizeof(SLint32));
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("SetConfiguration failed with result %d", result);
+        return false;
+    }
+
+    // realize the player
+    result = (*bqPlayerObject)->Realize(bqPlayerObject, SL_BOOLEAN_FALSE);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl player Realize failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // get the play interface
+    result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_PLAY, &bqPlayerPlay);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl player GetInterface failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // get the buffer queue interface
+    result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_BUFFERQUEUE,
+            &bqPlayerBufferQueue);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl playberBufferQueue GetInterface failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // register callback on the buffer queue
+    result = (*bqPlayerBufferQueue)->RegisterCallback(bqPlayerBufferQueue, bqPlayerCallback, NULL);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl bqPlayerBufferQueue RegisterCallback failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // get the volume interface
+    result = (*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_VOLUME, &bqPlayerVolume);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("sl volume GetInterface failed with result %d", result);
+        return false;
+    }
+    (void)result;
+
+    // set the player's state to playing
+    audioplay::setPlaying(true);
+    CHATTY("Created buffer queue player: %p", bqPlayerBufferQueue);
+    return true;
+}
+
+bool parseClipBuf(const uint8_t* clipBuf, int clipBufSize, const ChunkFormat** oChunkFormat,
+                  const uint8_t** oSoundBuf, unsigned* oSoundBufSize) {
+    *oSoundBuf = clipBuf;
+    *oSoundBufSize = clipBufSize;
+    *oChunkFormat = NULL;
+    const RiffWaveHeader* wavHeader = (const RiffWaveHeader*)*oSoundBuf;
+    if (*oSoundBufSize < sizeof(*wavHeader) || (wavHeader->riff_id != ID_RIFF) ||
+        (wavHeader->wave_id != ID_WAVE)) {
+        ALOGE("Error: audio file is not a riff/wave file\n");
+        return false;
+    }
+    *oSoundBuf += sizeof(*wavHeader);
+    *oSoundBufSize -= sizeof(*wavHeader);
+
+    while (true) {
+        const ChunkHeader* chunkHeader = (const ChunkHeader*)*oSoundBuf;
+        if (*oSoundBufSize < sizeof(*chunkHeader)) {
+            ALOGE("EOF reading chunk headers");
+            return false;
+        }
+
+        *oSoundBuf += sizeof(*chunkHeader);
+        *oSoundBufSize -= sizeof(*chunkHeader);
+
+        bool endLoop = false;
+        switch (chunkHeader->id) {
+            case ID_FMT:
+                *oChunkFormat = (const ChunkFormat*)*oSoundBuf;
+                *oSoundBuf += chunkHeader->sz;
+                *oSoundBufSize -= chunkHeader->sz;
+                break;
+            case ID_DATA:
+                /* Stop looking for chunks */
+                endLoop = true;
+                break;
+            default:
+                /* Unknown chunk, skip bytes */
+                *oSoundBuf += chunkHeader->sz;
+                *oSoundBufSize -= chunkHeader->sz;
+        }
+        if (endLoop) {
+            break;
+        }
+    }
+
+    if (*oChunkFormat == NULL) {
+        ALOGE("format not found in WAV file");
+        return false;
+    }
+    return true;
+}
+
+} // namespace
+
+bool create(const uint8_t* exampleClipBuf, int exampleClipBufSize) {
+    if (!createEngine()) {
+        return false;
+    }
+
+    // Parse the example clip.
+    const ChunkFormat* chunkFormat;
+    const uint8_t* soundBuf;
+    unsigned soundBufSize;
+    if (!parseClipBuf(exampleClipBuf, exampleClipBufSize, &chunkFormat, &soundBuf, &soundBufSize)) {
+        return false;
+    }
+
+    // Initialize the BufferQueue based on this clip's format.
+    if (!createBufferQueueAudioPlayer(chunkFormat)) {
+        return false;
+    }
+    return true;
+}
+
+bool playClip(const uint8_t* buf, int size) {
+    // Parse the WAV header
+    const ChunkFormat* chunkFormat;
+    if (!parseClipBuf(buf, size, &chunkFormat, &nextBuffer, &nextSize)) {
+        return false;
+    }
+
+    if (!hasPlayer()) {
+        ALOGD("cannot play clip %p without a player", buf);
+        return false;
+    }
+
+    CHATTY("playClip on player %p: buf=%p size=%d", bqPlayerBufferQueue, buf, size);
+
+    if (nextSize > 0) {
+        // here we only enqueue one buffer because it is a long clip,
+        // but for streaming playback we would typically enqueue at least 2 buffers to start
+        SLresult result;
+        result = (*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, nextBuffer, nextSize);
+        if (SL_RESULT_SUCCESS != result) {
+            return false;
+        }
+        audioplay::setPlaying(true);
+    }
+
+    return true;
+}
+
+// set the playing state for the buffer queue audio player
+void setPlaying(bool isPlaying) {
+    if (!hasPlayer()) return;
+
+    SLresult result;
+
+    if (NULL != bqPlayerPlay) {
+        // set the player's state
+        result = (*bqPlayerPlay)->SetPlayState(bqPlayerPlay,
+            isPlaying ? SL_PLAYSTATE_PLAYING : SL_PLAYSTATE_STOPPED);
+    }
+
+}
+
+void destroy() {
+    // destroy buffer queue audio player object, and invalidate all associated interfaces
+    if (bqPlayerObject != NULL) {
+        CHATTY("destroying audio player");
+        (*bqPlayerObject)->Destroy(bqPlayerObject);
+        bqPlayerObject = NULL;
+        bqPlayerPlay = NULL;
+        bqPlayerBufferQueue = NULL;
+        bqPlayerMuteSolo = NULL;
+        bqPlayerVolume = NULL;
+    }
+
+    // destroy output mix object, and invalidate all associated interfaces
+    if (outputMixObject != NULL) {
+        (*outputMixObject)->Destroy(outputMixObject);
+        outputMixObject = NULL;
+    }
+
+    // destroy engine object, and invalidate all associated interfaces
+    if (engineObject != NULL) {
+        CHATTY("destroying audio engine");
+        (*engineObject)->Destroy(engineObject);
+        engineObject = NULL;
+        engineEngine = NULL;
+    }
+}
+
+}  // namespace audioplay
diff --git a/cmds/bootanimation/audioplay.h b/cmds/bootanimation/audioplay.h
new file mode 100644
index 0000000..0e5705af
--- /dev/null
+++ b/cmds/bootanimation/audioplay.h
@@ -0,0 +1,37 @@
+/*
+ * 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 AUDIOPLAY_H_
+#define AUDIOPLAY_H_
+
+#include <string.h>
+
+namespace audioplay {
+
+// Initializes the engine with an example of the type of WAV clip to play.
+// All buffers passed to playClip are assumed to be in the same format.
+bool create(const uint8_t* exampleClipBuf, int exampleClipBufSize);
+
+// Plays a WAV contained in buf.
+// Should not be called while a clip is still playing.
+bool playClip(const uint8_t* buf, int size);
+void setPlaying(bool isPlaying);
+void destroy();
+
+}
+
+#endif // AUDIOPLAY_H_
diff --git a/cmds/bootanimation/bootanim.rc b/cmds/bootanimation/bootanim.rc
index ee0d0b8..7344ba7 100644
--- a/cmds/bootanimation/bootanim.rc
+++ b/cmds/bootanimation/bootanim.rc
@@ -4,3 +4,4 @@
     group graphics audio
     disabled
     oneshot
+    writepid /dev/stune/top-app/tasks
\ No newline at end of file
diff --git a/core/java/android/accounts/AbstractAccountAuthenticator.java b/core/java/android/accounts/AbstractAccountAuthenticator.java
index 4dca8e2..c9e09e4 100644
--- a/core/java/android/accounts/AbstractAccountAuthenticator.java
+++ b/core/java/android/accounts/AbstractAccountAuthenticator.java
@@ -782,9 +782,7 @@
      * @throws NetworkErrorException if the authenticator could not honor the
      *             request due to a network error
      * @see #finishSession(AccountAuthenticatorResponse, String, Bundle)
-     * @hide
      */
-    @SystemApi
     public Bundle startAddAccountSession(
             final AccountAuthenticatorResponse response,
             final String accountType,
@@ -840,9 +838,7 @@
      * @throws NetworkErrorException if the authenticator could not honor the
      *             request due to a network error
      * @see #finishSession(AccountAuthenticatorResponse, String, Bundle)
-     * @hide
      */
-    @SystemApi
     public Bundle startUpdateCredentialsSession(
             final AccountAuthenticatorResponse response,
             final Account account,
@@ -888,16 +884,16 @@
      *         <li>{@link AccountManager#KEY_INTENT}, or
      *         <li>{@link AccountManager#KEY_ACCOUNT_NAME} and
      *         {@link AccountManager#KEY_ACCOUNT_TYPE} of the account that was
-     *         added or local credentials were updated, or
+     *         added or local credentials were updated, and optional
+     *         {@link AccountManager#KEY_ACCOUNT_STATUS_TOKEN} for checking
+     *         the status of the account later, or
      *         <li>{@link AccountManager#KEY_ERROR_CODE} and
      *         {@link AccountManager#KEY_ERROR_MESSAGE} to indicate an error
      *         </ul>
      * @throws NetworkErrorException if the authenticator could not honor the request due to a
      *             network error
      * @see #startAddAccountSession and #startUpdateCredentialsSession
-     * @hide
      */
-    @SystemApi
     public Bundle finishSession(
             final AccountAuthenticatorResponse response,
             final String accountType,
@@ -981,9 +977,7 @@
      *         </ul>
      * @throws NetworkErrorException if the authenticator could not honor the request due to a
      *             network error
-     * @hide
      */
-    @SystemApi
     public Bundle isCredentialsUpdateSuggested(
             final AccountAuthenticatorResponse response,
             Account account,
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index 5cf59bc..88b1297 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -245,18 +245,14 @@
      * Bundle key used for a {@link Bundle} in result from
      * {@link #startAddAccountSession} and friends which returns session data
      * for installing an account later.
-     * @hide
      */
-    @SystemApi
     public static final String KEY_ACCOUNT_SESSION_BUNDLE = "accountSessionBundle";
 
     /**
      * Bundle key used for the {@link String} account status token in result
      * from {@link #startAddAccountSession} and friends which returns
      * information about a particular account.
-     * @hide
      */
-    @SystemApi
     public static final String KEY_ACCOUNT_STATUS_TOKEN = "accountStatusToken";
 
     public static final String ACTION_AUTHENTICATOR_INTENT =
@@ -2705,9 +2701,7 @@
      *         trouble
      *         </ul>
      * @see #finishSession
-     * @hide
      */
-    @SystemApi
     public AccountManagerFuture<Bundle> startAddAccountSession(
             final String accountType,
             final String authTokenType,
@@ -2789,9 +2783,7 @@
      *         trouble
      *         </ul>
      * @see #finishSession
-     * @hide
      */
-    @SystemApi
     public AccountManagerFuture<Bundle> startUpdateCredentialsSession(
             final Account account,
             final String authTokenType,
@@ -2850,6 +2842,8 @@
      *         <ul>
      *         <li>{@link #KEY_ACCOUNT_NAME} - the name of the account created
      *         <li>{@link #KEY_ACCOUNT_TYPE} - the type of the account
+     *         <li>{@link #KEY_ACCOUNT_STATUS_TOKEN} - optional, token to check
+     *         status of the account
      *         </ul>
      *         If no activity was specified and additional information is needed
      *         from user, the returned Bundle may contains only
@@ -2869,9 +2863,7 @@
      *         trouble
      *         </ul>
      * @see #startAddAccountSession and #startUpdateCredentialsSession
-     * @hide
      */
-    @SystemApi
     public AccountManagerFuture<Bundle> finishSession(
             final Bundle sessionBundle,
             final Activity activity,
@@ -2931,9 +2923,7 @@
      * @param handler {@link Handler} identifying the callback thread, null for the main thread
      * @return An {@link AccountManagerFuture} which resolves to a Boolean, true if the credentials
      *         of the account should be updated.
-     * @hide
      */
-    @SystemApi
     public AccountManagerFuture<Boolean> isCredentialsUpdateSuggested(
             final Account account,
             final String statusToken,
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 0c0af87..edeb838 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -724,8 +724,6 @@
     private static final String REQUEST_PERMISSIONS_WHO_PREFIX = "@android:requestPermissions:";
 
     private static final String KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME = "com.android.systemui";
-    private static final String KEYBOARD_SHORTCUTS_RECEIVER_CLASS_NAME =
-            "com.android.systemui.statusbar.KeyboardShortcutsReceiver";
 
     private static class ManagedDialog {
         Dialog mDialog;
@@ -1694,9 +1692,8 @@
      */
     public final void requestShowKeyboardShortcuts() {
         Intent intent = new Intent(Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS);
-        intent.setComponent(new ComponentName(KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME,
-                KEYBOARD_SHORTCUTS_RECEIVER_CLASS_NAME));
-        sendBroadcast(intent);
+        intent.setPackage(KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME);
+        sendBroadcastAsUser(intent, UserHandle.SYSTEM);
     }
 
     /**
@@ -1704,9 +1701,8 @@
      */
     public final void dismissKeyboardShortcutsHelper() {
         Intent intent = new Intent(Intent.ACTION_DISMISS_KEYBOARD_SHORTCUTS);
-        intent.setComponent(new ComponentName(KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME,
-                KEYBOARD_SHORTCUTS_RECEIVER_CLASS_NAME));
-        sendBroadcast(intent);
+        intent.setPackage(KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME);
+        sendBroadcastAsUser(intent, UserHandle.SYSTEM);
     }
 
     @Override
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 22a1fce..419f723 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -93,7 +93,8 @@
     @IntDef({
             BUGREPORT_OPTION_FULL,
             BUGREPORT_OPTION_INTERACTIVE,
-            BUGREPORT_OPTION_REMOTE
+            BUGREPORT_OPTION_REMOTE,
+            BUGREPORT_OPTION_WEAR
     })
     public @interface BugreportMode {}
     /**
@@ -114,6 +115,11 @@
      * @hide
      */
     public static final int BUGREPORT_OPTION_REMOTE = 2;
+    /**
+     * Takes a bugreport on a wearable device.
+     * @hide
+     */
+    public static final int BUGREPORT_OPTION_WEAR = 3;
 
     /**
      * <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 6dd14fd..83e2678 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -165,9 +165,10 @@
             int userId);
 
     /**
-     * Create an {@link IIntentSender} to start an activity, as if {@code packageName} on
-     * user {@code userId} created it.
+     * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
+     *
+     * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
      */
-    public abstract IIntentSender getActivityIntentSenderAsPackage(String packageName,
-            int userId, int requestCode, Intent intent, int flags, Bundle bOptions);
+    public abstract int startActivitiesAsPackage(String packageName,
+            int userId, Intent[] intents, Bundle bOptions);
 }
diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java
index 8692336..9fa8a5d 100644
--- a/core/java/android/app/ApplicationErrorReport.java
+++ b/core/java/android/app/ApplicationErrorReport.java
@@ -345,7 +345,7 @@
             PrintWriter pw = new FastPrintWriter(sw, false, 256);
             tr.printStackTrace(pw);
             pw.flush();
-            stackTrace = sw.toString();
+            stackTrace = sanitizeString(sw.toString());
             exceptionMessage = tr.getMessage();
 
             // Populate fields with the "root cause" exception
@@ -374,6 +374,29 @@
                 throwMethodName = "unknown";
                 throwLineNumber = 0;
             }
+
+            exceptionMessage = sanitizeString(exceptionMessage);
+        }
+
+        /**
+         * Ensure that the string is of reasonable size, truncating from the middle if needed.
+         */
+        private String sanitizeString(String s) {
+            int prefixLength = 10 * 1024;
+            int suffixLength = 10 * 1024;
+            int acceptableLength = prefixLength + suffixLength;
+
+            if (s != null && s.length() > acceptableLength) {
+                String replacement =
+                        "\n[TRUNCATED " + (s.length() - acceptableLength) + " CHARS]\n";
+
+                StringBuilder sb = new StringBuilder(acceptableLength + replacement.length());
+                sb.append(s.substring(0, prefixLength));
+                sb.append(replacement);
+                sb.append(s.substring(s.length() - suffixLength));
+                return sb.toString();
+            }
+            return s;
         }
 
         /**
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 8cc1bc4..5d87528 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -2080,8 +2080,14 @@
     @Override
     public void setComponentEnabledSetting(ComponentName componentName,
                                            int newState, int flags) {
+        setComponentEnabledSettingAsUser(componentName, newState, flags, mContext.getUserId());
+    }
+
+    @Override
+    public void setComponentEnabledSettingAsUser(ComponentName componentName,
+            int newState, int flags, int userId) {
         try {
-            mPM.setComponentEnabledSetting(componentName, newState, flags, mContext.getUserId());
+            mPM.setComponentEnabledSetting(componentName, newState, flags, userId);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -2099,9 +2105,16 @@
     @Override
     public void setApplicationEnabledSetting(String packageName,
                                              int newState, int flags) {
+        setApplicationEnabledSettingAsUser(packageName, newState, flags,
+                mContext.getUserId());
+    }
+
+    @Override
+    public void setApplicationEnabledSettingAsUser(String packageName,
+            int newState, int flags, int userId) {
         try {
             mPM.setApplicationEnabledSetting(packageName, newState, flags,
-                    mContext.getUserId(), mContext.getOpPackageName());
+                    userId, mContext.getOpPackageName());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index a0762b9..db7d54b 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -49,7 +49,7 @@
     /**
      * Set the live wallpaper. This only affects the system wallpaper.
      */
-    void setWallpaperComponentChecked(in ComponentName name, in String callingPackage);
+    void setWallpaperComponentChecked(in ComponentName name, in String callingPackage, int userId);
 
     /**
      * Set the live wallpaper. This only affects the system wallpaper.
@@ -72,7 +72,7 @@
      * information about that wallpaper.  Otherwise, if it is a static image,
      * simply return null.
      */
-    WallpaperInfo getWallpaperInfo();
+    WallpaperInfo getWallpaperInfo(int userId);
 
     /**
      * Clear the system wallpaper.
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 0d2fd2e..e78b2e7 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -3478,6 +3478,8 @@
                 mN.mSmallIcon = Icon.createWithResource(mContext, mN.icon);
             }
             contentView.setImageViewIcon(R.id.icon, mN.mSmallIcon);
+            contentView.setDrawableParameters(R.id.icon, false /* targetBackground */,
+                    -1 /* alpha */, -1 /* colorFilter */, null /* mode */, mN.iconLevel);
             processSmallIconColor(mN.mSmallIcon, contentView);
         }
 
@@ -3523,6 +3525,8 @@
             boolean validRemoteInput = false;
 
             int N = mActions.size();
+            boolean emphazisedMode = mN.fullScreenIntent != null;
+            big.setBoolean(R.id.actions, "setEmphasizedMode", emphazisedMode);
             if (N > 0) {
                 big.setViewVisibility(R.id.actions_container, View.VISIBLE);
                 big.setViewVisibility(R.id.actions, View.VISIBLE);
@@ -3533,7 +3537,8 @@
                     Action action = mActions.get(i);
                     validRemoteInput |= hasValidRemoteInput(action);
 
-                    final RemoteViews button = generateActionButton(action);
+                    final RemoteViews button = generateActionButton(action, emphazisedMode,
+                            i % 2 != 0);
                     big.addView(R.id.actions, button);
                 }
             } else {
@@ -3698,11 +3703,13 @@
 
 
 
-        private RemoteViews generateActionButton(Action action) {
+        private RemoteViews generateActionButton(Action action, boolean emphazisedMode,
+                boolean oddAction) {
             final boolean tombstone = (action.actionIntent == null);
             RemoteViews button = new BuilderRemoteViews(mContext.getApplicationInfo(),
-                    tombstone ? getActionTombstoneLayoutResource()
-                              : getActionLayoutResource());
+                    emphazisedMode ? getEmphasizedActionLayoutResource()
+                            : tombstone ? getActionTombstoneLayoutResource()
+                                    : getActionLayoutResource());
             final Icon ai = action.getIcon();
             button.setTextViewText(R.id.action0, processLegacyText(action.title));
             if (!tombstone) {
@@ -3712,8 +3719,18 @@
             if (action.mRemoteInputs != null) {
                 button.setRemoteInputs(R.id.action0, action.mRemoteInputs);
             }
-            if (mN.color != COLOR_DEFAULT) {
-                button.setTextColor(R.id.action0, resolveContrastColor());
+            if (emphazisedMode) {
+                // change the background color
+                int color = resolveContrastColor();
+                if (oddAction) {
+                    color = NotificationColorUtil.lightenColor(color, 10);
+                }
+                button.setDrawableParameters(R.id.button_holder, true, -1, color,
+                        PorterDuff.Mode.SRC_ATOP, -1);
+            } else {
+                if (mN.color != COLOR_DEFAULT) {
+                    button.setTextColor(R.id.action0, resolveContrastColor());
+                }
             }
             return button;
         }
@@ -3983,6 +4000,10 @@
             return R.layout.notification_material_action;
         }
 
+        private int getEmphasizedActionLayoutResource() {
+            return R.layout.notification_material_action_emphasized;
+        }
+
         private int getActionTombstoneLayoutResource() {
             return R.layout.notification_material_action_tombstone;
         }
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 7f467f0..20cbde1 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -51,6 +51,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemProperties;
+import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.WindowManagerGlobal;
@@ -265,7 +266,7 @@
     }
 
     static class Globals extends IWallpaperManagerCallback.Stub {
-        private IWallpaperManager mService;
+        private final IWallpaperManager mService;
         private Bitmap mCachedWallpaper;
         private int mCachedWallpaperUserId;
         private Bitmap mDefaultWallpaper;
@@ -292,16 +293,16 @@
 
         public Bitmap peekWallpaperBitmap(Context context, boolean returnDefault,
                 @SetWallpaperFlags int which, int userId) {
-            synchronized (this) {
-                if (mService != null) {
-                    try {
-                        if (!mService.isWallpaperSupported(context.getOpPackageName())) {
-                            return null;
-                        }
-                    } catch (RemoteException e) {
-                        throw e.rethrowFromSystemServer();
+            if (mService != null) {
+                try {
+                    if (!mService.isWallpaperSupported(context.getOpPackageName())) {
+                        return null;
                     }
+                } catch (RemoteException e) {
+                    throw e.rethrowFromSystemServer();
                 }
+            }
+            synchronized (this) {
                 if (mCachedWallpaper != null && mCachedWallpaperUserId == userId) {
                     return mCachedWallpaper;
                 }
@@ -316,17 +317,21 @@
                 if (mCachedWallpaper != null) {
                     return mCachedWallpaper;
                 }
-                if (returnDefault) {
-                    if (mDefaultWallpaper == null) {
-                        mDefaultWallpaper = getDefaultWallpaperLocked(context, which);
-                    }
-                    return mDefaultWallpaper;
-                }
-                return null;
             }
+            if (returnDefault) {
+                Bitmap defaultWallpaper = mDefaultWallpaper;
+                if (defaultWallpaper == null) {
+                    defaultWallpaper = getDefaultWallpaper(context, which);
+                    synchronized (this) {
+                        mDefaultWallpaper = defaultWallpaper;
+                    }
+                }
+                return defaultWallpaper;
+            }
+            return null;
         }
 
-        public void forgetLoadedWallpaper() {
+        void forgetLoadedWallpaper() {
             synchronized (this) {
                 mCachedWallpaper = null;
                 mCachedWallpaperUserId = 0;
@@ -361,7 +366,7 @@
             return null;
         }
 
-        private Bitmap getDefaultWallpaperLocked(Context context, @SetWallpaperFlags int which) {
+        private Bitmap getDefaultWallpaper(Context context, @SetWallpaperFlags int which) {
             InputStream is = openDefaultWallpaper(context, which);
             if (is != null) {
                 try {
@@ -412,8 +417,14 @@
      * This is returned as an
      * abstract Drawable that you can install in a View to display whatever
      * wallpaper the user has currently set.
+     * <p>
+     * This method can return null if there is no system wallpaper available, if
+     * wallpapers are not supported in the current user, or if the calling app is not
+     * permitted to access the system wallpaper.
      *
-     * @return Returns a Drawable object that will draw the wallpaper.
+     * @return Returns a Drawable object that will draw the system wallpaper,
+     *     or {@code null} if no system wallpaper exists or if the calling application
+     *     is not able to access the wallpaper.
      */
     public Drawable getDrawable() {
         Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM);
@@ -783,7 +794,7 @@
                 Log.w(TAG, "WallpaperService not running");
                 throw new RuntimeException(new DeadSystemException());
             } else {
-                return sGlobals.mService.getWallpaperInfo();
+                return sGlobals.mService.getWallpaperInfo(UserHandle.myUserId());
             }
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -1399,12 +1410,26 @@
      */
     @SystemApi
     public boolean setWallpaperComponent(ComponentName name) {
+        return setWallpaperComponent(name, UserHandle.myUserId());
+    }
+
+    /**
+     * Set the live wallpaper.
+     *
+     * This can only be called by packages with android.permission.SET_WALLPAPER_COMPONENT
+     * permission. The caller must hold the INTERACT_ACROSS_USERS_FULL permission to change
+     * another user's wallpaper.
+     *
+     * @hide
+     */
+    public boolean setWallpaperComponent(ComponentName name, int userId) {
         if (sGlobals.mService == null) {
             Log.w(TAG, "WallpaperService not running");
             throw new RuntimeException(new DeadSystemException());
         }
         try {
-            sGlobals.mService.setWallpaperComponentChecked(name, mContext.getOpPackageName());
+            sGlobals.mService.setWallpaperComponentChecked(name, mContext.getOpPackageName(),
+                    userId);
             return true;
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 76b002a..6176652 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -24,6 +24,7 @@
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemApi;
 import android.annotation.UserIdInt;
+import android.annotation.WorkerThread;
 import android.app.Activity;
 import android.app.admin.SecurityLog.SecurityEvent;
 import android.content.ComponentName;
@@ -1315,7 +1316,7 @@
 
     /**
      * Retrieve the current minimum password quality for a particular admin or all admins that set
-     * retrictions on this user and its participating profiles. Restrictions on profiles that have
+     * restrictions on this user and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      *
      * <p>This method can be called on the {@link DevicePolicyManager} instance
@@ -1379,7 +1380,7 @@
 
     /**
      * Retrieve the current minimum password length for a particular admin or all admins that set
-     * retrictions on this user and its participating profiles. Restrictions on profiles that have
+     * restrictions on this user and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      *
      * <p>This method can be called on the {@link DevicePolicyManager} instance
@@ -1442,7 +1443,7 @@
 
     /**
      * Retrieve the current number of upper case letters required in the password
-     * for a particular admin or all admins that set retrictions on this user and
+     * for a particular admin or all admins that set restrictions on this user and
      * its participating profiles. Restrictions on profiles that have a separate challenge
      * are not taken into account.
      * This is the same value as set by
@@ -1511,7 +1512,7 @@
 
     /**
      * Retrieve the current number of lower case letters required in the password
-     * for a particular admin or all admins that set retrictions on this user
+     * for a particular admin or all admins that set restrictions on this user
      * and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      * This is the same value as set by
@@ -1580,7 +1581,7 @@
 
     /**
      * Retrieve the current number of letters required in the password
-     * for a particular admin or all admins that set retrictions on this user
+     * for a particular admin or all admins that set restrictions on this user
      * and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      * This is the same value as set by
@@ -1648,7 +1649,7 @@
 
     /**
      * Retrieve the current number of numerical digits required in the password
-     * for a particular admin or all admins that set retrictions on this user
+     * for a particular admin or all admins that set restrictions on this user
      * and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      * This is the same value as set by
@@ -1716,7 +1717,7 @@
 
     /**
      * Retrieve the current number of symbols required in the password
-     * for a particular admin or all admins that set retrictions on this user
+     * for a particular admin or all admins that set restrictions on this user
      * and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account. This is the same value as
      * set by {@link #setPasswordMinimumSymbols(ComponentName, int)}
@@ -1783,7 +1784,7 @@
 
     /**
      * Retrieve the current number of non-letter characters required in the password
-     * for a particular admin or all admins that set retrictions on this user
+     * for a particular admin or all admins that set restrictions on this user
      * and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      * This is the same value as set by
@@ -1915,7 +1916,7 @@
 
     /**
      * Get the current password expiration time for a particular admin or all admins that set
-     * retrictions on this user and its participating profiles. Restrictions on profiles that have
+     * restrictions on this user and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account. If admin is {@code null}, then a composite
      * of all expiration times is returned - which will be the minimum of all of them.
      *
@@ -1939,7 +1940,7 @@
 
     /**
      * Retrieve the current password history length for a particular admin or all admins that
-     * set retrictions on this user and its participating profiles. Restrictions on profiles that
+     * set restrictions on this user and its participating profiles. Restrictions on profiles that
      * have a separate challenge are not taken into account.
      *
      * <p>This method can be called on the {@link DevicePolicyManager} instance
@@ -2121,7 +2122,7 @@
 
     /**
      * Retrieve the current maximum number of login attempts that are allowed before the device
-     * or profile is wiped, for a particular admin or all admins that set retrictions on this user
+     * or profile is wiped, for a particular admin or all admins that set restrictions on this user
      * and its participating profiles. Restrictions on profiles that have a separate challenge are
      * not taken into account.
      *
@@ -2262,7 +2263,7 @@
 
     /**
      * Retrieve the current maximum time to unlock for a particular admin or all admins that set
-     * retrictions on this user and its participating profiles. Restrictions on profiles that have
+     * restrictions on this user and its participating profiles. Restrictions on profiles that have
      * a separate challenge are not taken into account.
      *
      * <p>This method can be called on the {@link DevicePolicyManager} instance
@@ -2510,6 +2511,8 @@
     /**
      * Result code for {@link #setStorageEncryption} and {@link #getStorageEncryptionStatus}:
      * indicating that encryption is active.
+     * <p>
+     * Also see {@link #ENCRYPTION_STATUS_ACTIVE_PER_USER}.
      */
     public static final int ENCRYPTION_STATUS_ACTIVE = 3;
 
@@ -2522,7 +2525,11 @@
 
     /**
      * Result code for {@link #getStorageEncryptionStatus}:
-     * indicating that encryption is active and the encryption key is tied to the user.
+     * indicating that encryption is active and the encryption key is tied to the user or profile.
+     * <p>
+     * This value is only returned to apps targeting API level 24 and above. For apps targeting
+     * earlier API levels, {@link #ENCRYPTION_STATUS_ACTIVE} is returned, even if the
+     * encryption key is specific to the user or profile.
      */
     public static final int ENCRYPTION_STATUS_ACTIVE_PER_USER = 5;
 
@@ -2649,7 +2656,7 @@
     /**
      * Called by an application that is administering the device to
      * determine the current encryption status of the device.
-     *
+     * <p>
      * Depending on the returned status code, the caller may proceed in different
      * ways.  If the result is {@link #ENCRYPTION_STATUS_UNSUPPORTED}, the
      * storage system does not support encryption.  If the
@@ -2657,13 +2664,14 @@
      * #ACTION_START_ENCRYPTION} to begin the process of encrypting or decrypting the
      * storage.  If the result is {@link #ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY}, the
      * storage system has enabled encryption but no password is set so further action
-     * may be required.  If the result is {@link #ENCRYPTION_STATUS_ACTIVATING} or
-     * {@link #ENCRYPTION_STATUS_ACTIVE}, no further action is required.
+     * may be required.  If the result is {@link #ENCRYPTION_STATUS_ACTIVATING},
+     * {@link #ENCRYPTION_STATUS_ACTIVE} or {@link #ENCRYPTION_STATUS_ACTIVE_PER_USER},
+     * no further action is required.
      *
      * @return current status of encryption. The value will be one of
      * {@link #ENCRYPTION_STATUS_UNSUPPORTED}, {@link #ENCRYPTION_STATUS_INACTIVE},
      * {@link #ENCRYPTION_STATUS_ACTIVATING}, {@link #ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY},
-     * or {@link #ENCRYPTION_STATUS_ACTIVE}.
+     * {@link #ENCRYPTION_STATUS_ACTIVE}, or {@link #ENCRYPTION_STATUS_ACTIVE_PER_USER}.
      */
     public int getStorageEncryptionStatus() {
         throwIfParentInstance("getStorageEncryptionStatus");
@@ -3342,7 +3350,7 @@
 
     /**
      * Determine whether or not features have been disabled in keyguard either by the calling
-     * admin, if specified, or all admins that set retrictions on this user and its participating
+     * admin, if specified, or all admins that set restrictions on this user and its participating
      * profiles. Restrictions on profiles that have a separate challenge are not taken into account.
      *
      * <p>This method can be called on the {@link DevicePolicyManager} instance
@@ -4219,6 +4227,8 @@
      * owner, and the application restrictions managing package via
      * {@link #getApplicationRestrictions}.
      *
+     * <p>NOTE: The method performs disk I/O and shouldn't be called on the main thread
+     *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with, or
      *            {@code null} if called by the application restrictions managing package.
      * @param packageName The name of the package to update restricted settings for.
@@ -4228,6 +4238,7 @@
      * @see #setApplicationRestrictionsManagingPackage
      * @see UserManager#KEY_RESTRICTIONS_PENDING
      */
+    @WorkerThread
     public void setApplicationRestrictions(@Nullable ComponentName admin, String packageName,
             Bundle settings) {
         throwIfParentInstance("setApplicationRestrictions");
@@ -4974,6 +4985,8 @@
      * application restrictions via {@link #setApplicationRestrictionsManagingPackage}; otherwise a
      * security exception will be thrown.
      *
+     * <p>NOTE: The method performs disk I/O and shouldn't be called on the main thread
+     *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with, or
      *            {@code null} if called by the application restrictions managing package.
      * @param packageName The name of the package to fetch restricted settings of.
@@ -4983,6 +4996,7 @@
      * @throws SecurityException if {@code admin} is not a device or profile owner.
      * @see {@link #setApplicationRestrictionsManagingPackage}
      */
+    @WorkerThread
     public Bundle getApplicationRestrictions(@Nullable ComponentName admin, String packageName) {
         throwIfParentInstance("getApplicationRestrictions");
         if (mService != null) {
@@ -6418,6 +6432,43 @@
         }
     }
 
+    /**
+     * @hide
+     * @return whether {@link android.provider.Settings.Global#DEVICE_PROVISIONED} has ever been set
+     * to 1.
+     */
+    public boolean isDeviceProvisioned() {
+        try {
+            return mService.isDeviceProvisioned();
+        } catch (RemoteException re) {
+            throw re.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * @hide
+     * Writes that the provisioning configuration has been applied.
+     */
+    public void setDeviceProvisioningConfigApplied() {
+        try {
+            mService.setDeviceProvisioningConfigApplied();
+        } catch (RemoteException re) {
+            throw re.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * @hide
+     * @return whether the provisioning configuration has been applied.
+     */
+    public boolean isDeviceProvisioningConfigApplied() {
+        try {
+            return mService.isDeviceProvisioningConfigApplied();
+        } 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 ddec412..1036f04 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -301,4 +301,8 @@
 
     boolean isUninstallInQueue(String packageName);
     void uninstallPackageWithActiveAdmins(String packageName);
+
+    boolean isDeviceProvisioned();
+    boolean isDeviceProvisioningConfigApplied();
+    void setDeviceProvisioningConfigApplied();
 }
diff --git a/core/java/android/app/job/JobInfo.java b/core/java/android/app/job/JobInfo.java
index 49f32ab..2d6b45d 100644
--- a/core/java/android/app/job/JobInfo.java
+++ b/core/java/android/app/job/JobInfo.java
@@ -166,6 +166,9 @@
      * network restrictions for the requesting app. Note that this flag alone
      * doesn't actually place your {@link JobService} in the foreground; you
      * still need to post the notification yourself.
+     * <p>
+     * To use this flag, the caller must hold the
+     * {@link android.Manifest.permission#CONNECTIVITY_INTERNAL} permission.
      *
      * @hide
      */
diff --git a/core/java/android/content/ClipData.java b/core/java/android/content/ClipData.java
index 90b58aa..5162a73 100644
--- a/core/java/android/content/ClipData.java
+++ b/core/java/android/content/ClipData.java
@@ -191,6 +191,14 @@
         final Intent mIntent;
         Uri mUri;
 
+        /** @hide */
+        public Item(Item other) {
+            mText = other.mText;
+            mHtmlText = other.mHtmlText;
+            mIntent = other.mIntent;
+            mUri = other.mUri;
+        }
+
         /**
          * Create an Item consisting of a single block of (possibly styled) text.
          */
@@ -834,6 +842,11 @@
         return mItems.get(index);
     }
 
+    /** @hide */
+    public void setItemAt(int index, Item item) {
+        mItems.set(index, item);
+    }
+
     /**
      * Prepare this {@link ClipData} to leave an app process.
      *
diff --git a/core/java/android/content/ContentProviderClient.java b/core/java/android/content/ContentProviderClient.java
index e49eb34..9221fbb 100644
--- a/core/java/android/content/ContentProviderClient.java
+++ b/core/java/android/content/ContentProviderClient.java
@@ -147,7 +147,13 @@
             if (cursor == null) {
                 return null;
             }
-            return new CursorWrapperInner(cursor);
+
+            if ("com.google.android.gms".equals(mPackageName)) {
+                // They're casting to a concrete subclass, sigh
+                return cursor;
+            } else {
+                return new CursorWrapperInner(cursor);
+            }
         } catch (DeadObjectException e) {
             if (!mStable) {
                 mContentResolver.unstableProviderDied(mContentProvider);
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 9f5b838..43a8a82 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2219,6 +2219,22 @@
         "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE";
 
     /**
+     * Broadcast Action: preferred activities have changed *explicitly*.
+     *
+     * <p>Note there are cases where a preferred activity is invalidated *implicitly*, e.g.
+     * when an app is installed or uninstalled, but in such cases this broadcast will *not*
+     * be sent.
+     *
+     * {@link #EXTRA_USER_HANDLE} contains the user ID in question.
+     *
+     * @hide
+     */
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    public static final String ACTION_PREFERRED_ACTIVITY_CHANGED =
+            "android.intent.action.ACTION_PREFERRED_ACTIVITY_CHANGED";
+
+
+    /**
      * Broadcast Action:  The current system wallpaper has changed.  See
      * {@link android.app.WallpaperManager} for retrieving the new wallpaper.
      * This should <em>only</em> be used to determine when the wallpaper
diff --git a/core/java/android/content/pm/ILauncherApps.aidl b/core/java/android/content/pm/ILauncherApps.aidl
index c19e638..430c7e7 100644
--- a/core/java/android/content/pm/ILauncherApps.aidl
+++ b/core/java/android/content/pm/ILauncherApps.aidl
@@ -51,7 +51,7 @@
             in List shortcutIds, in ComponentName componentName, int flags, in UserHandle user);
     void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
             in UserHandle user);
-    void startShortcut(String callingPackage, String packageName, String id,
+    boolean startShortcut(String callingPackage, String packageName, String id,
             in Rect sourceBounds, in Bundle startActivityOptions, int userId);
 
     int getShortcutIconResId(String callingPackage, String packageName, String id,
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 528fe20..29b2230 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
+import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -164,17 +165,19 @@
         }
 
         /**
-         * Indicates that one or more shortcuts (which may be dynamic and/or pinned)
+         * Indicates that one or more shortcuts of any kinds (dynamic, pinned, or manifest)
          * have been added, updated or removed.
          *
          * <p>Only the applications that are allowed to access the shortcut information,
          * as defined in {@link #hasShortcutHostPermission()}, will receive it.
          *
          * @param packageName The name of the package that has the shortcuts.
-         * @param shortcuts all shortcuts from the package (dynamic, manifest and/or pinned).
-         *    Only "key" information will be provided, as defined in
+         * @param shortcuts all shortcuts from the package (dynamic, manifest and/or pinned) will
+         *    be passed. Only "key" information will be provided, as defined in
          *    {@link ShortcutInfo#hasKeyFieldsOnly()}.
          * @param user The UserHandle of the profile that generated the change.
+         *
+         * @see ShortcutManager
          */
         public void onShortcutsChanged(@NonNull String packageName,
                 @NonNull List<ShortcutInfo> shortcuts, @NonNull UserHandle user) {
@@ -222,7 +225,17 @@
 
         /**
          * Requests "key" fields only.  See {@link ShortcutInfo#hasKeyFieldsOnly()} for which
-         * fields are available.
+         * fields are available.  This allows quicker access to shortcut information in order to
+         * determine in-memory cache in the caller needs to be updated.
+         *
+         * <p>Typically, launcher applications cache all or most shortcuts' information
+         * in memory in order to show shortcuts without a delay.  When they want to update their
+         * cache (e.g. when their process restart), they can fetch all shortcuts' information with
+         * with this flag, then check {@link ShortcutInfo#getLastChangedTimestamp()} for each
+         * shortcut and issue a second call to fetch the non-key information of only updated
+         * shortcuts.
+         *
+         * @see ShortcutManager
          */
         public static final int FLAG_GET_KEY_FIELDS_ONLY = 1 << 2;
 
@@ -255,8 +268,8 @@
         }
 
         /**
-         * If non-zero, returns only shortcuts that have been added or updated since the timestamp,
-         * which is a milliseconds since the Epoch.
+         * If non-zero, returns only shortcuts that have been added or updated since the timestamp.
+         * Units are as per {@link System#currentTimeMillis()}.
          */
         public ShortcutQuery setChangedSince(long changedSince) {
             mChangedSince = changedSince;
@@ -273,7 +286,7 @@
 
         /**
          * If non-null, return only the specified shortcuts by ID.  When setting this field,
-         * a packange name must also be set with {@link #setPackage}.
+         * a package name must also be set with {@link #setPackage}.
          */
         public ShortcutQuery setShortcutIds(@Nullable List<String> shortcutIds) {
             mShortcutIds = shortcutIds;
@@ -291,7 +304,13 @@
         }
 
         /**
-         * Set query options.
+         * Set query options.  At least one of the {@code MATCH} flags should be set.  (Otherwise
+         * no shortcuts will be returned.)
+         *
+         * @see {@link #FLAG_MATCH_DYNAMIC}
+         * @see {@link #FLAG_MATCH_PINNED}
+         * @see {@link #FLAG_MATCH_MANIFEST}
+         * @see {@link #FLAG_GET_KEY_FIELDS_ONLY}
          */
         public ShortcutQuery setQueryFlags(@QueryFlags int queryFlags) {
             mQueryFlags = queryFlags;
@@ -460,10 +479,14 @@
      *
      * <p>Only the default launcher can access the shortcut information.
      *
-     * <p>Note when this method returns {@code false}, that may be a temporary situation because
+     * <p>Note when this method returns {@code false}, it may be a temporary situation because
      * the user is trying a new launcher application.  The user may decide to change the default
-     * launcher to the calling application again, so even if a launcher application loses
+     * launcher back to the calling application again, so even if a launcher application loses
      * this permission, it does <b>not</b> have to purge pinned shortcut information.
+     * Also in this situation, pinned shortcuts can still be started, even though the caller
+     * no longer has the shortcut host permission.
+     *
+     * @see ShortcutManager
      */
     public boolean hasShortcutHostPermission() {
         try {
@@ -474,7 +497,7 @@
     }
 
     /**
-     * Returns the IDs of {@link ShortcutInfo}s that match {@code query}.
+     * Returns {@link ShortcutInfo}s that match {@code query}.
      *
      * <p>Callers must be allowed to access the shortcut information, as defined in {@link
      * #hasShortcutHostPermission()}.
@@ -483,6 +506,8 @@
      * @param user The UserHandle of the profile.
      *
      * @return the IDs of {@link ShortcutInfo}s that match the query.
+     *
+     * @see ShortcutManager
      */
     @Nullable
     public List<ShortcutInfo> getShortcuts(@NonNull ShortcutQuery query,
@@ -523,6 +548,8 @@
      * @param packageName The target package name.
      * @param shortcutIds The IDs of the shortcut to be pinned.
      * @param user The UserHandle of the profile.
+     *
+     * @see ShortcutManager
      */
     public void pinShortcuts(@NonNull String packageName, @NonNull List<String> shortcutIds,
             @NonNull UserHandle user) {
@@ -586,11 +613,17 @@
     /**
      * Returns the icon for this shortcut, without any badging for the profile.
      *
+     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
+     * #hasShortcutHostPermission()}.
+     *
      * @param density The preferred density of the icon, zero for default density. Use
      * density DPI values from {@link DisplayMetrics}.
+     *
+     * @return The drawable associated with the shortcut.
+     *
+     * @see ShortcutManager
      * @see #getShortcutBadgedIconDrawable(ShortcutInfo, int)
      * @see DisplayMetrics
-     * @return The drawable associated with the shortcut.
      */
     public Drawable getShortcutIconDrawable(@NonNull ShortcutInfo shortcut, int density) {
         if (shortcut.hasIconFile()) {
@@ -628,10 +661,15 @@
     /**
      * Returns the shortcut icon with badging appropriate for the profile.
      *
+     * <p>Callers must be allowed to access the shortcut information, as defined in {@link
+     * #hasShortcutHostPermission()}.
+     *
      * @param density Optional density for the icon, or 0 to use the default density. Use
-     * {@link DisplayMetrics} for DPI values.
-     * @see DisplayMetrics
      * @return A badged icon for the shortcut.
+     *
+     * @see ShortcutManager
+     * @see #getShortcutBadgedIconDrawable(ShortcutInfo, int)
+     * @see DisplayMetrics
      */
     public Drawable getShortcutBadgedIconDrawable(ShortcutInfo shortcut, int density) {
         final Drawable originalIcon = getShortcutIconDrawable(shortcut, density);
@@ -641,7 +679,7 @@
     }
 
     /**
-     * Launches a shortcut.
+     * Starts a shortcut.
      *
      * <p>Callers must be allowed to access the shortcut information, as defined in {@link
      * #hasShortcutHostPermission()}.
@@ -651,6 +689,9 @@
      * @param sourceBounds The Rect containing the source bounds of the clicked icon.
      * @param startActivityOptions Options to pass to startActivity.
      * @param user The UserHandle of the profile.
+     *
+     * @throws android.content.ActivityNotFoundException failed to start shortcut. (e.g.
+     * the shortcut no longer exists, is disabled, the intent receiver activity doesn't exist, etc)
      */
     public void startShortcut(@NonNull String packageName, @NonNull String shortcutId,
             @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions,
@@ -668,6 +709,9 @@
      * @param shortcut The target shortcut.
      * @param sourceBounds The Rect containing the source bounds of the clicked icon.
      * @param startActivityOptions Options to pass to startActivity.
+     *
+     * @throws android.content.ActivityNotFoundException failed to start shortcut. (e.g.
+     * the shortcut no longer exists, is disabled, the intent receiver activity doesn't exist, etc)
      */
     public void startShortcut(@NonNull ShortcutInfo shortcut,
             @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions) {
@@ -680,8 +724,12 @@
             @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions,
             int userId) {
         try {
-            mService.startShortcut(mContext.getPackageName(), packageName, shortcutId,
+            final boolean success =
+                    mService.startShortcut(mContext.getPackageName(), packageName, shortcutId,
                     sourceBounds, startActivityOptions, userId);
+            if (!success) {
+                throw new ActivityNotFoundException("Shortcut could not be started");
+            }
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 281d6f6..511ed75 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -5381,6 +5381,14 @@
             int newState, int flags);
 
     /**
+     * Per-user version of {@link #setComponentEnabledSetting(ComponentName, int, int)}
+     *
+     * @hide
+     */
+    public abstract void setComponentEnabledSettingAsUser(ComponentName componentName,
+            int newState, int flags, int userId);
+
+    /**
      * Return the enabled setting for a package component (activity,
      * receiver, service, provider).  This returns the last value set by
      * {@link #setComponentEnabledSetting(ComponentName, int, int)}; in most
@@ -5419,6 +5427,14 @@
             int newState, int flags);
 
     /**
+     * Per-user version of {@link #setApplicationEnabledSetting(String, int, int)}
+     *
+     * @hide
+     */
+    public abstract void setApplicationEnabledSettingAsUser(String packageName,
+            int newState, int flags, int userId);
+
+    /**
      * Return the enabled setting for an application. This returns
      * the last value set by
      * {@link #setApplicationEnabledSetting(String, int, int)}; in most
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index 39e15e0..0ec1623 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -19,11 +19,14 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
+import android.app.TaskStackBuilder;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.LauncherApps.ShortcutQuery;
 import android.content.res.Resources;
 import android.content.res.Resources.NotFoundException;
+import android.graphics.Bitmap;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
 import android.os.Parcel;
@@ -42,20 +45,10 @@
 import java.util.List;
 import java.util.Set;
 
-// TODO Enhance javadoc
 /**
+ * Represents a "launcher shortcut" that can be published via {@link ShortcutManager}.
  *
- * Represents a shortcut from an application.
- *
- * <p>Notes about icons:
- * <ul>
- *     <li>If an {@link Icon} is a resource, the system keeps the package name and the resource ID.
- *     Otherwise, the bitmap is fetched when it's registered to ShortcutManager,
- *     then shrunk if necessary, and persisted.
- *     <li>The system disallows byte[] icons, because they can easily go over the binder size limit.
- * </ul>
- *
- * @see {@link ShortcutManager}.
+ * @see ShortcutManager
  */
 public final class ShortcutInfo implements Parcelable {
     static final String TAG = "Shortcut";
@@ -149,7 +142,7 @@
     public @interface CloneFlags {}
 
     /**
-     * Shortcut category for
+     * Shortcut category for messaging related actions, such as chat.
      */
     public static final String SHORTCUT_CATEGORY_CONVERSATION = "android.shortcut.conversation";
 
@@ -189,16 +182,16 @@
     private ArraySet<String> mCategories;
 
     /**
-     * Intent *with extras removed*.
+     * Intents *with extras removed*.
      */
     @Nullable
-    private Intent mIntent;
+    private Intent[] mIntents;
 
     /**
-     * Extras for the intent.
+     * Extras for the intents.
      */
     @Nullable
-    private PersistableBundle mIntentPersistableExtras;
+    private PersistableBundle[] mIntentPersistableExtrases;
 
     private int mRank;
 
@@ -248,20 +241,36 @@
         mDisabledMessage = b.mDisabledMessage;
         mDisabledMessageResId = b.mDisabledMessageResId;
         mCategories = cloneCategories(b.mCategories);
-        mIntent = b.mIntent;
-        if (mIntent != null) {
-            final Bundle intentExtras = mIntent.getExtras();
-            if (intentExtras != null) {
-                mIntent.replaceExtras((Bundle) null);
-                mIntentPersistableExtras = new PersistableBundle(intentExtras);
-            }
-        }
+        mIntents = cloneIntents(b.mIntents);
+        fixUpIntentExtras();
         mRank = b.mRank;
         mExtras = b.mExtras;
         updateTimestamp();
     }
 
-    private ArraySet<String> cloneCategories(Set<String> source) {
+    /**
+     * Extract extras from {@link #mIntents} and set them to {@link #mIntentPersistableExtrases}
+     * as {@link PersistableBundle}, and remove extras from the original intents.
+     */
+    private void fixUpIntentExtras() {
+        if (mIntents == null) {
+            mIntentPersistableExtrases = null;
+            return;
+        }
+        mIntentPersistableExtrases = new PersistableBundle[mIntents.length];
+        for (int i = 0; i < mIntents.length; i++) {
+            final Intent intent = mIntents[i];
+            final Bundle extras = intent.getExtras();
+            if (extras == null) {
+                mIntentPersistableExtrases[i] = null;
+            } else {
+                mIntentPersistableExtrases[i] = new PersistableBundle(extras);
+                intent.replaceExtras((Bundle) null);
+            }
+        }
+    }
+
+    private static ArraySet<String> cloneCategories(Set<String> source) {
         if (source == null) {
             return null;
         }
@@ -274,6 +283,32 @@
         return ret;
     }
 
+    private static Intent[] cloneIntents(Intent[] intents) {
+        if (intents == null) {
+            return null;
+        }
+        final Intent[] ret = new Intent[intents.length];
+        for (int i = 0; i < ret.length; i++) {
+            if (intents[i] != null) {
+                ret[i] = new Intent(intents[i]);
+            }
+        }
+        return ret;
+    }
+
+    private static PersistableBundle[] clonePersistableBundle(PersistableBundle[] bundle) {
+        if (bundle == null) {
+            return null;
+        }
+        final PersistableBundle[] ret = new PersistableBundle[bundle.length];
+        for (int i = 0; i < ret.length; i++) {
+            if (bundle[i] != null) {
+                ret[i] = new PersistableBundle(bundle[i]);
+            }
+        }
+        return ret;
+    }
+
     /**
      * Throws if any of the mandatory fields is not set.
      *
@@ -285,7 +320,8 @@
         if (mTitle == null && mTitleResId == 0) {
             throw new IllegalArgumentException("Short label must be provided");
         }
-        Preconditions.checkNotNull(mIntent, "Shortcut Intent must be provided");
+        Preconditions.checkNotNull(mIntents, "Shortcut Intent must be provided");
+        Preconditions.checkArgument(mIntents.length > 0, "Shortcut Intent must be provided");
     }
 
     /**
@@ -317,8 +353,9 @@
             mDisabledMessageResId = source.mDisabledMessageResId;
             mCategories = cloneCategories(source.mCategories);
             if ((cloneFlags & CLONE_REMOVE_INTENT) == 0) {
-                mIntent = source.mIntent;
-                mIntentPersistableExtras = source.mIntentPersistableExtras;
+                mIntents = cloneIntents(source.mIntents);
+                mIntentPersistableExtrases =
+                        clonePersistableBundle(source.mIntentPersistableExtrases);
             }
             mRank = source.mRank;
             mExtras = source.mExtras;
@@ -627,9 +664,10 @@
         if (source.mCategories != null) {
             mCategories = cloneCategories(source.mCategories);
         }
-        if (source.mIntent != null) {
-            mIntent = source.mIntent;
-            mIntentPersistableExtras = source.mIntentPersistableExtras;
+        if (source.mIntents != null) {
+            mIntents = cloneIntents(source.mIntents);
+            mIntentPersistableExtrases =
+                    clonePersistableBundle(source.mIntentPersistableExtrases);
         }
         if (source.mRank != RANK_NOT_SET) {
             mRank = source.mRank;
@@ -660,11 +698,13 @@
     /** @hide */
     public static IllegalArgumentException getInvalidIconException() {
         return new IllegalArgumentException("Unsupported icon type:"
-                +" only bitmap, resource and content URI are supported");
+                +" only the bitmap and resource types are supported");
     }
 
     /**
      * Builder class for {@link ShortcutInfo} objects.
+     *
+     * @see ShortcutManager
      */
     public static class Builder {
         private final Context mContext;
@@ -689,7 +729,7 @@
 
         private Set<String> mCategories;
 
-        private Intent mIntent;
+        private Intent[] mIntents;
 
         private int mRank = RANK_NOT_SET;
 
@@ -727,19 +767,25 @@
         }
 
         /**
-         * Sets the target activity. A shortcut will be shown with this activity on the launcher.
+         * Sets the target activity.  A shortcut will be shown along with this activity's icon
+         * on the launcher.
          *
-         * <p>Only "main" activities -- i.e. ones with an intent filter for
-         * {@link Intent#ACTION_MAIN} and {@link Intent#CATEGORY_LAUNCHER} can be target activities.
+         * <p>This is a mandatory field when publishing a new shortcut with
+         * {@link ShortcutManager#addDynamicShortcuts(List)} or
+         * {@link ShortcutManager#setDynamicShortcuts(List)}.
          *
-         * <p>By default, the first main activity defined in the application manifest will be
+         * <ul>
+         * <li>Only "main" activities (ones with an intent filter for
+         * {@link Intent#ACTION_MAIN} and {@link Intent#CATEGORY_LAUNCHER}) can be target
+         * activities.
+         *
+         * <li>By default, the first main activity defined in the application manifest will be
          * the target.
          *
-         * <p>The package name of the target activity must match the package name of the shortcut
-         * publisher.
+         * <li>A target activity must belong to the publisher application.
+         * </ul>
          *
-         * <p>This has nothing to do with the activity that this shortcut will launch.  This is
-         * a hint to the launcher app about which launcher icon to associate this shortcut with.
+         * @see ShortcutInfo#getActivity()
          */
         @NonNull
         public Builder setActivity(@NonNull ComponentName activity) {
@@ -748,18 +794,23 @@
         }
 
         /**
-         * Sets an icon.
+         * Sets an icon of a shortcut.
          *
-         * <ul>
-         *     <li>Tints set by {@link Icon#setTint} or {@link Icon#setTintList} are not supported.
-         *     <li>Bitmaps and resources are supported, but "content:" URIs are not supported.
-         * </ul>
-         *
-         * <p>For performance and security reasons, icons will <b>NOT</b> be available on instances
-         * returned by {@link ShortcutManager} or {@link LauncherApps}.  Default launcher application
-         * can use {@link LauncherApps#getShortcutIconDrawable(ShortcutInfo, int)}
+         * <p>Icons are not available on {@link ShortcutInfo} instances
+         * returned by {@link ShortcutManager} or {@link LauncherApps}.  The default launcher
+         * application can use {@link LauncherApps#getShortcutIconDrawable(ShortcutInfo, int)}
          * or {@link LauncherApps#getShortcutBadgedIconDrawable(ShortcutInfo, int)} to fetch
          * shortcut icons.
+         *
+         * <p>Tints set with {@link Icon#setTint} or {@link Icon#setTintList} are not supported
+         * and will be ignored.
+         *
+         * <p>Only icons created with {@link Icon#createWithBitmap(Bitmap)} and
+         * {@link Icon#createWithResource} are supported.  Other types such as URI based icons
+         * are not supported.
+         *
+         * @see LauncherApps#getShortcutIconDrawable(ShortcutInfo, int)
+         * @see LauncherApps#getShortcutBadgedIconDrawable(ShortcutInfo, int)
          */
         @NonNull
         public Builder setIcon(Icon icon) {
@@ -781,11 +832,15 @@
         /**
          * Sets the short title of a shortcut.
          *
-         * <p>This is a mandatory field, unless it's passed to
-         * {@link ShortcutManager#updateShortcuts(List)}.
+         * <p>This is a mandatory field when publishing a new shortcut with
+         * {@link ShortcutManager#addDynamicShortcuts(List)} or
+         * {@link ShortcutManager#setDynamicShortcuts(List)}.
          *
-         * <p>This field is intended for a concise description of a shortcut displayed under
-         * an icon.  The recommend max length is 10 characters.
+         * <p>This field is intended for a concise description of a shortcut.
+         *
+         * <p>The recommended max length is 10 characters.
+         *
+         * @see ShortcutInfo#getShortLabel()
          */
         @NonNull
         public Builder setShortLabel(@NonNull CharSequence shortLabel) {
@@ -809,8 +864,11 @@
          * Sets the text of a shortcut.
          *
          * <p>This field is intended to be more descriptive than the shortcut title.  The launcher
-         * shows this instead of the short title, when it has enough space.
-         * The recommend max length is 25 characters.
+         * shows this instead of the short title when it has enough space.
+         *
+         * <p>The recommend max length is 25 characters.
+         *
+         * @see ShortcutInfo#getLongLabel()
          */
         @NonNull
         public Builder setLongLabel(@NonNull CharSequence longLabel) {
@@ -854,6 +912,11 @@
             return this;
         }
 
+        /**
+         * Sets the message that should be shown when a shortcut is launched when disabled.
+         *
+         * @see ShortcutInfo#getDisabledMessage()
+         */
         @NonNull
         public Builder setDisabledMessage(@NonNull CharSequence disabledMessage) {
             Preconditions.checkState(
@@ -869,6 +932,7 @@
          * categorise shortcuts.
          *
          * @see #SHORTCUT_CATEGORY_CONVERSATION
+         * @see ShortcutInfo#getCategories()
          */
         @NonNull
         public Builder setCategories(Set<String> categories) {
@@ -877,19 +941,55 @@
         }
 
         /**
-         * Sets the intent of a shortcut.  This is a mandatory field.  The extras must only contain
-         * persistable information.  (See {@link PersistableBundle}).
+         * Sets the intent of a shortcut.
+         *
+         * <p>This is a mandatory field when publishing a new shortcut with
+         * {@link ShortcutManager#addDynamicShortcuts(List)} or
+         * {@link ShortcutManager#setDynamicShortcuts(List)}.
+         *
+         * <p>A shortcut can launch any intent that the publisher application has a permission to
+         * launch -- for example, a shortcut can launch an unexported activity within the publisher
+         * application.
+         *
+         * <p>A shortcut intent doesn't have to point at the target activity.
+         *
+         * <p>{@code intent} can contain extras, but only values of the primitive types are
+         * supported so the system can persist them.
+         *
+         * @see ShortcutInfo#getIntent()
+         * @see #setIntents(Intent[])
          */
         @NonNull
         public Builder setIntent(@NonNull Intent intent) {
-            mIntent = Preconditions.checkNotNull(intent, "intent cannot be null");
-            Preconditions.checkNotNull(mIntent.getAction(), "intent's action must be set");
+            return setIntents(new Intent[]{intent});
+        }
+
+        /**
+         * Sets multiple intents instead of a single intent.
+         *
+         * @see Builder#setIntent(Intent)
+         * @see ShortcutInfo#getIntents()
+         * @see Context#startActivities(Intent[])
+         * @see TaskStackBuilder
+         */
+        @NonNull
+        public Builder setIntents(@NonNull Intent[] intents) {
+            Preconditions.checkNotNull(intents, "intents cannot be null");
+            Preconditions.checkNotNull(intents.length, "intents cannot be empty");
+            for (Intent intent : intents) {
+                Preconditions.checkNotNull(intent, "intents cannot contain null");
+                Preconditions.checkNotNull(intent.getAction(), "intent's action must be set");
+            }
+            // Make sure always clone incoming intents.
+            mIntents = cloneIntents(intents);
             return this;
         }
 
         /**
          * "Rank" of a shortcut, which is a non-negative value that's used by the launcher app
          * to sort shortcuts.
+         *
+         * See {@link ShortcutInfo#getRank()} for details.
          */
         @NonNull
         public Builder setRank(int rank) {
@@ -903,7 +1003,7 @@
          * Extras that application can set to any purposes.
          *
          * <p>Applications can store any meta-data of
-         * shortcuts in this, and retrieve later from {@link ShortcutInfo#getExtras()}.
+         * shortcuts in extras, and retrieve later from {@link ShortcutInfo#getExtras()}.
          */
         @NonNull
         public Builder setExtras(@NonNull PersistableBundle extras) {
@@ -921,7 +1021,11 @@
     }
 
     /**
-     * Return the ID of the shortcut.
+     * Returns the ID of a shortcut.
+     *
+     * <p>Shortcut IDs are unique within each publisher application, and must be stable across
+     * devices to that shortcuts will still be valid when restored.  See {@link ShortcutManager}
+     * for details.
      */
     @NonNull
     public String getId() {
@@ -929,7 +1033,7 @@
     }
 
     /**
-     * Return the package name of the creator application.
+     * Return the package name of the publisher application.
      */
     @NonNull
     public String getPackage() {
@@ -937,11 +1041,10 @@
     }
 
     /**
-     * Return the target activity, which may be null, in which case the shortcut is not associated
-     * with a specific activity.
+     * Return the target activity.
      *
-     * <p>This has nothing to do with the activity that this shortcut will launch.  This is
-     * a hint to the launcher app that on which launcher icon this shortcut should be shown.
+     * <p>This has nothing to do with the activity that this shortcut will launch.  Launcher
+     * applications should show a shortcut along with the launcher icon for this activity.
      *
      * @see Builder#setActivity
      */
@@ -956,11 +1059,7 @@
     }
 
     /**
-     * Icon.
-     *
-     * For performance reasons, this will <b>NOT</b> be available when an instance is returned
-     * by {@link ShortcutManager} or {@link LauncherApps}.  A launcher application needs to use
-     * other APIs in LauncherApps to fetch the bitmap.
+     * Returns the shortcut icon.
      *
      * @hide
      */
@@ -996,10 +1095,9 @@
     }
 
     /**
-     * Return the shorter version of the shortcut title.
+     * Return the shorter description of a shortcut.
      *
-     * <p>All shortcuts must have a non-empty title, but this method will return null when
-     * {@link #hasKeyFieldsOnly()} is true.
+     * @see Builder#setShortLabel(CharSequence)
      */
     @Nullable
     public CharSequence getShortLabel() {
@@ -1012,7 +1110,9 @@
     }
 
     /**
-     * Return the shortcut text.
+     * Return the longer description of a shortcut.
+     *
+     * @see Builder#setLongLabel(CharSequence)
      */
     @Nullable
     public CharSequence getLongLabel() {
@@ -1026,6 +1126,8 @@
 
     /**
      * Return the message that should be shown when a shortcut in disabled state is launched.
+     *
+     * @see Builder#setDisabledMessage(CharSequence)
      */
     @Nullable
     public CharSequence getDisabledMessage() {
@@ -1039,6 +1141,8 @@
 
     /**
      * Return the categories.
+     *
+     * @see Builder#setCategories(Set)
      */
     @Nullable
     public Set<String> getCategories() {
@@ -1046,43 +1150,62 @@
     }
 
     /**
-     * Return the intent.
+     * Return the intent. If setIntents() was used, then return the last intent in the array.
      *
-     * <p>All shortcuts must have an intent, but this method will return null when
-     * {@link #hasKeyFieldsOnly()} is true.
+     * <p>Launcher applications <b>cannot</b> see the intent.  If a {@link ShortcutInfo} is
+     * obtained via {@link LauncherApps}, then this method will always return null.
+     * Launchers can only start a shortcut intent with {@link LauncherApps#startShortcut}.
      *
-     * <p>Launcher apps <b>cannot</b> see the intent.  If a {@link ShortcutInfo} is obtained via
-     * {@link LauncherApps}, then this method will always return null.  Launcher apps can only
-     * start a shortcut intent with {@link LauncherApps#startShortcut}.
+     * @see Builder#setIntent(Intent)
      */
     @Nullable
     public Intent getIntent() {
-        if (mIntent == null) {
+        if (mIntents == null || mIntents.length == 0) {
             return null;
         }
-        final Intent intent = new Intent(mIntent);
-        intent.replaceExtras(
-                mIntentPersistableExtras != null ? new Bundle(mIntentPersistableExtras) : null);
-        return intent;
+        final int last = mIntents.length - 1;
+        final Intent intent = new Intent(mIntents[last]);
+        return setIntentExtras(intent, mIntentPersistableExtrases[last]);
     }
 
     /**
-     * Return "raw" intent, which is the original intent without the extras.
+     * Return the intent set with {@link Builder#setIntents(Intent[])}.
+     *
+     * <p>Launcher applications <b>cannot</b> see the intents.  If a {@link ShortcutInfo} is
+     * obtained via {@link LauncherApps}, then this method will always return null.
+     * Launchers can only start a shortcut intent with {@link LauncherApps#startShortcut}.
+     *
+     * @see Builder#setIntents(Intent[])
+     */
+    @Nullable
+    public Intent[] getIntents() {
+        final Intent[] ret = new Intent[mIntents.length];
+
+        for (int i = 0; i < ret.length; i++) {
+            ret[i] = new Intent(mIntents[i]);
+            setIntentExtras(ret[i], mIntentPersistableExtrases[i]);
+        }
+
+        return ret;
+    }
+
+    /**
+     * Return "raw" intents, which is the original intents without the extras.
      * @hide
      */
     @Nullable
-    public Intent getIntentNoExtras() {
-        return mIntent;
+    public Intent[] getIntentsNoExtras() {
+        return mIntents;
     }
 
     /**
-     * The extras in the intent.  We convert extras into {@link PersistableBundle} so we can
+     * The extras in the intents.  We convert extras into {@link PersistableBundle} so we can
      * persist them.
      * @hide
      */
     @Nullable
-    public PersistableBundle getIntentPersistableExtras() {
-        return mIntentPersistableExtras;
+    public PersistableBundle[] getIntentPersistableExtrases() {
+        return mIntentPersistableExtrases;
     }
 
     /**
@@ -1096,6 +1219,10 @@
      *
      * <p>"Floating" shortcuts (i.e. shortcuts that are neither dynamic nor manifest) will all
      * have rank 0, because there's no sorting for them.
+     *
+     * See the {@link ShortcutManager}'s class javadoc for details.
+     *
+     * @see Builder#setRank(int)
      */
     public int getRank() {
         return mRank;
@@ -1139,6 +1266,8 @@
 
     /**
      * Extras that application can set to any purposes.
+     *
+     * @see Builder#setExtras(PersistableBundle)
      */
     @Nullable
     public PersistableBundle getExtras() {
@@ -1151,7 +1280,7 @@
     }
 
     /**
-     * {@link UserHandle} on which the publisher created shortcuts.
+     * {@link UserHandle} on which the publisher created a shortcut.
      */
     public UserHandle getUserHandle() {
         return UserHandle.of(mUserId);
@@ -1201,16 +1330,13 @@
     }
 
     /**
-     * Return whether a shortcut is published via AndroidManifest.xml or not.  If {@code true},
+     * Return whether a shortcut is published AndroidManifest.xml or not.  If {@code true},
      * it's also {@link #isImmutable()}.
      *
      * <p>When an app is upgraded and a shortcut is no longer published from AndroidManifest.xml,
      * this will be set to {@code false}.  If the shortcut is not pinned, then it'll just disappear.
      * However, if it's pinned, it will still be alive, and {@link #isEnabled()} will be
      * {@code false} and {@link #isImmutable()} will be {@code true}.
-     *
-     * <p>NOTE this is whether a shortcut is published from the <b>current version's</b>
-     * AndroidManifest.xml.
      */
     public boolean isDeclaredInManifest() {
         return hasFlags(FLAG_MANIFEST);
@@ -1311,6 +1437,12 @@
      *     <li>{@link #isEnabled()}
      *     <li>{@link #getUserHandle()}
      * </ul>
+     *
+     * <p>{@link ShortcutInfo}s passed to
+     * {@link LauncherApps.Callback#onShortcutsChanged(String, List, UserHandle)}
+     * as well as returned by {@link LauncherApps#getShortcuts(ShortcutQuery, UserHandle)} with
+     * the {@link ShortcutQuery#FLAG_GET_KEY_FIELDS_ONLY} option will only have key information
+     * for performance reasons.
      */
     public boolean hasKeyFieldsOnly() {
         return hasFlags(FLAG_KEY_FIELDS_ONLY);
@@ -1426,19 +1558,22 @@
      *
      * @hide
      */
-    public void setIntent(Intent intent) throws IllegalArgumentException {
-        Preconditions.checkNotNull(intent);
+    public void setIntents(Intent[] intents) throws IllegalArgumentException {
+        Preconditions.checkNotNull(intents);
+        Preconditions.checkArgument(intents.length > 0);
 
-        final Bundle intentExtras = intent.getExtras();
+        mIntents = cloneIntents(intents);
+        fixUpIntentExtras();
+    }
 
-        mIntent = intent;
-
-        if (intentExtras != null) {
+    /** @hide */
+    public static Intent setIntentExtras(Intent intent, PersistableBundle extras) {
+        if (extras == null) {
             intent.replaceExtras((Bundle) null);
-            mIntentPersistableExtras = new PersistableBundle(intentExtras);
         } else {
-            mIntentPersistableExtras = null;
+            intent.replaceExtras(new Bundle(extras));
         }
+        return intent;
     }
 
     /**
@@ -1472,8 +1607,8 @@
         mTextResId = source.readInt();
         mDisabledMessage = source.readCharSequence();
         mDisabledMessageResId = source.readInt();
-        mIntent = source.readParcelable(cl);
-        mIntentPersistableExtras = source.readParcelable(cl);
+        mIntents = source.readParcelableArray(cl, Intent.class);
+        mIntentPersistableExtrases = source.readParcelableArray(cl, PersistableBundle.class);
         mRank = source.readInt();
         mExtras = source.readParcelable(cl);
         mBitmapPath = source.readString();
@@ -1518,8 +1653,8 @@
         dest.writeCharSequence(mDisabledMessage);
         dest.writeInt(mDisabledMessageResId);
 
-        dest.writeParcelable(mIntent, flags);
-        dest.writeParcelable(mIntentPersistableExtras, flags);
+        dest.writeParcelableArray(mIntents, flags);
+        dest.writeParcelableArray(mIntentPersistableExtrases, flags);
         dest.writeInt(mRank);
         dest.writeParcelable(mExtras, flags);
         dest.writeString(mBitmapPath);
@@ -1649,11 +1784,27 @@
         sb.append(", timestamp=");
         sb.append(mLastChangedTimestamp);
 
-        sb.append(", intent=");
-        sb.append(mIntent);
-
-        sb.append(", intentExtras=");
-        sb.append(secure ? "***" : mIntentPersistableExtras);
+        sb.append(", intents=");
+        if (mIntents == null) {
+            sb.append("null");
+        } else {
+            if (secure) {
+                sb.append("size:");
+                sb.append(mIntents.length);
+            } else {
+                final int size = mIntents.length;
+                sb.append("[");
+                String sep = "";
+                for (int i = 0; i < size; i++) {
+                    sb.append(sep);
+                    sep = ", ";
+                    sb.append(mIntents[i]);
+                    sb.append("/");
+                    sb.append(mIntentPersistableExtrases[i]);
+                }
+                sb.append("]");
+            }
+        }
 
         sb.append(", extras=");
         sb.append(mExtras);
@@ -1680,9 +1831,8 @@
             Icon icon, CharSequence title, int titleResId, String titleResName,
             CharSequence text, int textResId, String textResName,
             CharSequence disabledMessage, int disabledMessageResId, String disabledMessageResName,
-            Set<String> categories,
-            Intent intent, PersistableBundle intentPersistableExtras,
-            int rank, PersistableBundle extras, long lastChangedTimestamp,
+            Set<String> categories, Intent[] intentsWithExtras, int rank, PersistableBundle extras,
+            long lastChangedTimestamp,
             int flags, int iconResId, String iconResName, String bitmapPath) {
         mUserId = userId;
         mId = id;
@@ -1699,8 +1849,8 @@
         mDisabledMessageResId = disabledMessageResId;
         mDisabledMessageResName = disabledMessageResName;
         mCategories = cloneCategories(categories);
-        mIntent = intent;
-        mIntentPersistableExtras = intentPersistableExtras;
+        mIntents = cloneIntents(intentsWithExtras);
+        fixUpIntentExtras();
         mRank = rank;
         mExtras = extras;
         mLastChangedTimestamp = lastChangedTimestamp;
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index 1af63a0..cfd3442 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -20,6 +20,7 @@
 import android.annotation.UserIdInt;
 import android.app.usage.UsageStatsManager;
 import android.content.Context;
+import android.content.Intent;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
@@ -28,62 +29,333 @@
 
 import java.util.List;
 
-// TODO Enhance javadoc
 /**
- * <b>TODO: Update to reflect DR changes, such as manifest shortcuts.</b><br>
+ * ShortcutManager manages "launcher shortcuts" (or simply "shortcuts").  Shortcuts provide user
+ * with quick
+ * ways to access activities other than the main activity from the launcher to users.  For example,
+ * an email application may publish the "compose new email" action which will directly open the
+ * compose activity.  The {@link ShortcutInfo} class represents shortcuts.
  *
- * {@link ShortcutManager} manages shortcuts created by applications.
+ * <h3>Dynamic Shortcuts and Manifest Shortcuts</h3>
  *
- * <h3>Dynamic shortcuts and pinned shortcuts</h3>
+ * There are two ways to publish shortcuts: manifest shortcuts and dynamic shortcuts.
  *
- * An application can publish shortcuts with {@link #setDynamicShortcuts(List)} and
- * {@link #addDynamicShortcuts(List)}.  There can be at most
- * {@link #getMaxShortcutCountPerActivity()} number of dynamic shortcuts at a time from the
- * same application.
- * A dynamic shortcut can be deleted with {@link #removeDynamicShortcuts(List)}, and apps
- * can also use {@link #removeAllDynamicShortcuts()} to delete all dynamic shortcuts.
+ * <ul>
+ * <li>Manifest shortcuts are declared in a resource XML which is referred to from
+ * AndroidManifest.xml.  Manifest shortcuts are published when an application is installed,
+ * and are updated when an application is upgraded with an updated XML file.
+ * Manifest shortcuts are immutable and their
+ * definitions (e.g. icons and labels) can not be changed dynamically (without upgrading the
+ * publisher application).
  *
- * <p>The shortcuts that are currently published by the above APIs are called "dynamic", because
- * they can be removed by the creator application at any time.  The user may "pin" dynamic shortcuts
- * on Launcher to make "pinned" shortcuts.  Pinned shortcuts <b>cannot</b> be removed by the creator
- * app.  An application can obtain all pinned shortcuts from itself with
- * {@link #getPinnedShortcuts()}.  Applications should keep the pinned shortcut information
- * up-to-date using {@link #updateShortcuts(List)}.
+ * <li>Dynamic shortcuts are published at runtime with {@link ShortcutManager} APIs.
+ * Applications can publish, update and remove dynamic shortcuts at runtime with certain limitations
+ * described below.
+ * </ul>
  *
- * <p>The number of pinned shortcuts does not affect the number of dynamic shortcuts that can be
- * published by an application at a time.
- * No matter how many pinned shortcuts that Launcher has for an application, the
- * application can still always publish {@link #getMaxShortcutCountPerActivity()} number of
- * dynamic
- * shortcuts.
+ * <p>Only "main" activities (i.e. activities that handle the {@code MAIN} action and the
+ * {@code LAUNCHER} category) can have shortcuts.  If an application has multiple main activities,
+ * they will have different set of shortcuts.
  *
- * <h3>Shortcut IDs</h3>
+ * <p>Dynamic shortcuts and manifest shortcuts are shown by launcher applications when the user
+ * takes a certain action (e.g. long-press) on an application launcher icon.
  *
- * Each shortcut must have an ID, which must be unique within each application.  When a shortcut is
- * published, existing shortcuts with the same ID will be updated.  Note this may include a
- * pinned shortcut.
+ * <p>Each launcher icon can have at most {@link #getMaxShortcutCountPerActivity()} number of
+ * dynamic and manifest shortcuts combined.
+ *
+ *
+ * <h3>Pinning Shortcuts</h3>
+ *
+ * Launcher applications allow users to "pin" shortcuts so they're easier to access.  Both manifest
+ * and dynamic shortcuts can be pinned, to avoid user's confusion.
+ * Pinned shortcuts <b>cannot</b> be removed by publisher
+ * applications -- they are only removed when the publisher is uninstalled. (Or the user performs
+ * "clear data" on the publisher application on the Settings application.)
+ *
+ * <p>Publisher can however "disable" pinned shortcuts so they cannot be launched.  See below
+ * for details.
+ *
+ *
+ * <h3>Updating and Disabling Shortcuts</h3>
+ *
+ * <p>When a dynamic shortcut is pinned, even when the publisher removes it as a dynamic shortcut,
+ * the pinned shortcut will still be available and launchable.  This allows an application to have
+ * more than {@link #getMaxShortcutCountPerActivity()} number of shortcuts -- for example, suppose
+ * {@link #getMaxShortcutCountPerActivity()} is 5:
+ * <ul>
+ *     <li>A chat application publishes 5 dynamic shortcuts for the 5 most recent
+ *     conversations, "c1" - "c5".
+ *
+ *     <li>The user pins all of the 5 shortcuts.
+ *
+ *     <li>Later, the user has 3 newer conversations ("c6", "c7" and "c8"), so the application
+ *     re-publishes dynamic shortcuts and now it has the dynamic shortcuts "c4", "c5", "c6", "c7"
+ *     and "c8".  The publisher has to remove "c1", "c2" and "c3" because it can't have more than
+ *     5 dynamic shortcuts.
+ *
+ *     <li>However, even though "c1", "c2" and "c3" are no longer dynamic shortcuts, the pinned
+ *     shortcuts for those conversations are still available and launchable.
+ *
+ *     <li>At this point, the application has 8 shortcuts in total, including the 3 pinned
+ *     shortcuts, even though it's allowed to have at most 5 dynamic shortcuts.
+ *
+ *     <li>The application can use {@link #updateShortcuts(List)} to update any of the existing
+ *     8 shortcuts, when, for example, the chat peers' icons have changed.
+ * </ul>
+ * {@link #addDynamicShortcuts(List)} and {@link #setDynamicShortcuts(List)} can also be used
+ * to update existing shortcuts with the same IDs, but they <b>cannot</b> be used for
+ * non-dynamic pinned shortcuts because these two APIs will always try to make the passed
+ * shortcuts dynamic.
+ *
+ *
+ * <h4>Disabling Manifest Shortcuts</h4>
+ * Sometimes pinned shortcuts become obsolete and may not be usable.  For example, a pinned shortcut
+ * to a group chat will be unusable when the group chat room is deleted.  In cases like this,
+ * applications should use {@link #disableShortcuts(List)}, which will remove the specified dynamic
+ * shortcuts and also make the pinned shortcuts un-launchable, if any.
+ * {@link #disableShortcuts(List, CharSequence)} can also be used to disable shortcuts with
+ * a custom error message that will be shown when the user starts the shortcut.
+ *
+ * <h4>Disabling Manifest Shortcuts</h4>
+ * When an application is upgraded and the new version no longer has a manifest shortcut that
+ * the previous version had, this shortcut will no longer be published as a manifest shortcut.
+ *
+ * <p>If the shortcut is pinned, then the pinned shortcut will remain on the launcher, but will be
+ * disabled.  Note in this case, the pinned shortcut is no longer a manifest shortcut, but is
+ * still <b>immutable</b> and cannot be updated with the {@link ShortcutManager} APIs.
+ *
+ *
+ * <h3>Publishing Dynamic Shortcuts</h3>
+ *
+ * Applications can publish dynamic shortcuts with {@link #setDynamicShortcuts(List)}
+ * or {@link #addDynamicShortcuts(List)}.  {@link #updateShortcuts(List)} can also be used to
+ * update existing (mutable) shortcuts.
+ * Use {@link #removeDynamicShortcuts(List)} or {@link #removeAllDynamicShortcuts()} to remove
+ * dynamic shortcuts.
+ *
+ * <p>Example:
+ * <pre>
+ * ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
+ *
+ * ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1")
+ *     .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.mysite.com/")))
+ *     .setShortLabel("Web site")
+ *     .setLongLabel("Open the web site")
+ *     .setIcon(Icon.createWithResource(context, R.drawable.icon_website))
+ *     .build();
+ *
+ * shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
+ * </pre>
+ *
+ *
+ * <h3>Publishing Manifest Shortcuts</h3>
+ *
+ * In order to add manifest shortcuts to your application, first add
+ * {@code <meta-data android:name="android.app.shortcuts" />} to your main activity in
+ * AndroidManifest.xml.
+ * <pre>
+ * &lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+ *   package=&quot;com.example.myapplication&quot;&gt;
+ *   &lt;application . . .&gt;
+ *     &lt;activity android:name=&quot;Main&quot;&gt;
+ *       &lt;intent-filter&gt;
+ *         &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
+ *         &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
+ *       &lt;/intent-filter&gt;
+ *       <b>&lt;meta-data android:name=&quot;android.app.shortcuts&quot; android:resource=&quot;@xml/shortcuts&quot;/&gt;</b>
+ *     &lt;/activity&gt;
+ *   &lt;/application&gt;
+ * &lt;/manifest&gt;
+ * </pre>
+ *
+ * Then define shortcuts in res/xml/shortcuts.xml.
+ * <pre>
+ * &lt;shortcuts xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; &gt;
+ *   &lt;shortcut
+ *     android:shortcutId=&quot;compose&quot;
+ *     android:enabled=&quot;true&quot;
+ *     android:icon=&quot;@drawable/compose_icon&quot;
+ *     android:shortcutShortLabel=&quot;@string/compose_shortcut_short_label1&quot;
+ *     android:shortcutLongLabel=&quot;@string/compose_shortcut_short_label1&quot;
+ *     android:shortcutDisabledMessage=&quot;@string/compose_disabled_message1&quot;
+ *     &gt;
+ *     &lt;intent
+ *       android:action=&quot;android.intent.action.VIEW&quot;
+ *       android:targetPackage=&quot;com.example.myapplication&quot;
+ *       android:targetClass=&quot;com.example.myapplication.ComposeActivity&quot; /&gt;
+ *     &lt;categories android:name=&quot;android.shortcut.conversation&quot; /&gt;
+ *   &lt;/shortcut&gt;
+ *   &lt;!-- more shortcut can go here --&gt;
+ * &lt;/shortcuts&gt;
+ * </pre>
+ * <ul>
+ *   <li>{@code android:shortcutId} Mandatory shortcut ID
+ *
+ *   <li>{@code android:enabled} Default is {@code true}.  Can be set to {@code false} in order
+ *   to disable a manifest shortcut that was published on a previous version with a custom
+ *   disabled message.  If a custom disabled message is not needed, then a manifest shortcut can
+ *   be simply removed from the xml file rather than keeping it with {@code enabled="false"}.
+ *
+ *   <li>{@code android:icon} Shortcut icon.
+ *
+ *   <li>{@code android:shortcutShortLabel} Mandatory shortcut short label.
+ *   See {@link ShortcutInfo.Builder#setShortLabel(CharSequence)}
+ *
+ *   <li>{@code android:shortcutLongLabel} Shortcut long label.
+ *   See {@link ShortcutInfo.Builder#setLongLabel(CharSequence)}
+ *
+ *   <li>{@code android:shortcutDisabledMessage} When {@code android:enabled} is set to
+ *   {@code false}, this can be used to set a custom disabled message.
+ *
+ *   <li>{@code intent} Intent to launch.  {@code android:action} is mandatory.
+ *   See <a href="{@docRoot}guide/topics/ui/settings.html#Intents">Using intents</a> for the
+ *   other supported tags.
+ * </ul>
+ *
+ * <h3>Updating Shortcuts v.s. Re-publishing New One with Different ID</h3>
+ * In order to avoid users' confusion, {@link #updateShortcuts(List)} should not be used to update
+ * a shortcut to something that is conceptually different.
+ *
+ * <p>For example, a phone application may publish the most frequently called contact as a dynamic
+ * shortcut.  Over the time, this contact may change, but when it changes the application should
+ * publish a new contact with a different ID with either
+ * {@link #setDynamicShortcuts(List)} or {@link #addDynamicShortcuts(List)}, rather than updating
+ * the existing shortcut with {@link #updateShortcuts(List)}.
+ *
+ * This is because when the shortcut is pinned, changing it to a different contact
+ * will likely confuse the user.
+ *
+ * <p>On the other hand, when the contact's information (e.g. the name or picture) has changed,
+ * then the application should use {@link #updateShortcuts(List)} so that the pinned shortcut
+ * will be updated too.
+ *
+ *
+ * <h3>Shortcut Display Order</h3>
+ * When the launcher show the shortcuts for a launcher icon, the showing order should be the
+ * following:
+ * <ul>
+ *   <li>First show manifest shortcuts
+ *   ({@link ShortcutInfo#isDeclaredInManifest()} is {@code true}),
+ *   and then dynamic shortcuts ({@link ShortcutInfo#isDynamic()} is {@code true}).
+ *   <li>Within each category, sort by {@link ShortcutInfo#getRank()}.
+ * </ul>
+ * <p>Shortcut ranks are non-negative sequential integers for each target activity.  Ranks of
+ * existing shortcuts can be updated with
+ * {@link #updateShortcuts(List)} ({@link #addDynamicShortcuts(List)} and
+ * {@link #setDynamicShortcuts(List)} may be used too).
+ *
+ * <p>Ranks will be auto-adjusted so that they're unique for each target activity for each category
+ * (dynamic or manifest).  For example, if there are 3 dynamic shortcuts with ranks 0, 1 and 2,
+ * adding another dynamic shortcut with rank = 1 means to place this shortcut at the second
+ * position.  The third and forth shortcuts (that were originally second and third) will be adjusted
+ * to 2 and 3 respectively.
+ *
+ * <h3>Rate Limiting</h3>
+ *
+ * Calls to {@link #setDynamicShortcuts(List)}, {@link #addDynamicShortcuts(List)} and
+ * {@link #updateShortcuts(List)} may be rate-limited when called by background applications (i.e.
+ * applications with no foreground activity or service).  When rate-limited, these APIs will return
+ * {@code false}.
+ *
+ * <p>Applications with a foreground activity or service will not be rate-limited.
+ *
+ * <p>Rate-limiting will be reset upon certain events, so that even background applications
+ * will be able to call these APIs again (until they are rate-limited again).
+ * <ul>
+ *   <li>When an application comes to foreground.
+ *   <li>When the system locale changes.
+ *   <li>When the user performs "inline reply" on a notification.
+ * </ul>
+ *
+ * <h4>Resetting rate-limiting for testing</h4>
+ *
+ * If your application is rate-limited during development or testing, you can use the
+ * "Reset ShortcutManager rate-limiting" development option, or the following adb command to reset
+ * it.
+ * <pre>
+ * adb shell cmd shortcut reset-throttling [ --user USER-ID ]
+ * </pre>
+ *
+ * <h3>Handling System Locale Change</h3>
+ *
+ * Applications should update dynamic and pinned shortcuts when the system locale changes
+ * using the {@link Intent#ACTION_LOCALE_CHANGED} broadcast.
+ *
+ * <p>When the system locale changes, rate-limiting will be reset, so even background applications
+ * what were previously rate-limited will be able to call {@link #updateShortcuts(List)}.
  *
  *
  * <h3>Backup and Restore</h3>
  *
- * Pinned shortcuts will be backed up and restored across devices.  This means all information
- * within shortcuts, including IDs, must be meaningful on different devices.
+ * When an application has {@code android:allowBackup="true"} in its AndroidManifest.xml, pinned
+ * shortcuts will be backed up automatically and restored when the user sets up a new device.
  *
- * <p>Note that:
+ * <h4>What will be backed up and what will not be backed up</h4>
+ *
  * <ul>
- *     <li>Dynamic shortcuts will not be backed up or restored.
- *     <li>Icons of pinned shortcuts will <b>not</b> be backed up for performance reasons, unless
- *     they refer to resources.  Instead, launcher applications are supposed to back up and restore
- *     icons of pinned shortcuts by themselves, and thus from the user's point of view, pinned
- *     shortcuts will look to have icons restored.
+ *  <li>Pinned shortcuts will be backed up.  Bitmap icons will not be backed up by the system,
+ *  but launcher applications should back them up and restore them, so the user will still get
+ *  icons for pinned shortcuts on the launcher.  Applications can always use
+ *  {@link #updateShortcuts(List)} to re-publish icons.
+ *
+ *  <li>Manifest shortcuts will not be backed up, but when an application is re-installed on a new
+ *  device, they will be re-published from AndroidManifest.xml anyway.
+ *
+ *  <li>Dynamic shortcuts will <b>not</b> be backed up.
  * </ul>
  *
+ * <p>Because dynamic shortcuts will not restored, it is recommended that applications check
+ * currently published dynamic shortcuts with {@link #getDynamicShortcuts()} when they start,
+ * and re-publish dynamic shortcuts when necessary.
  *
- * <h3>APIs for launcher</h3>
+ * <pre>
+ * public class MainActivity extends Activity {
+ *     public void onCreate(Bundle savedInstanceState) {
+ *         super.onCreate(savedInstanceState);
  *
- * Launcher applications should use {@link LauncherApps} to get shortcuts that are published from
- * applications.  Launcher applications can also pin shortcuts with
- * {@link LauncherApps#pinShortcuts(String, List, UserHandle)}.
+ *         ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
+ *
+ *         if (shortcutManager.getDynamicShortcuts().size() == 0) {
+ *             // Application restored; re-publish dynamic shortcuts.
+ *
+ *             if (shortcutManager.getPinnedShortcuts().size() > 0) {
+ *                 // Pinned shortcuts have been restored.  use updateShortcuts() to make sure
+ *                 // they have up-to-date information.
+ *             }
+ *         }
+ *     }
+ *     :
+ *
+ * }
+ * </pre>
+ *
+ *
+ * <h4>Backup/restore and shortcut IDs</h4>
+ *
+ * Because pinned shortcuts will be backed up and restored on new devices, shortcut IDs should be
+ * meaningful across devices; that is, IDs should be either stable constant strings, or server-side
+ * identifiers, rather than identifiers generated locally that may not make sense on other devices.
+ *
+ *
+ * <h3>Report Shortcut Usage and Prediction</h3>
+ *
+ * Launcher applications may be capable of predicting which shortcuts will most likely be used at
+ * the moment with the shortcut usage history data.
+ *
+ * <p>In order to provide launchers with such data, publisher applications should report which
+ * shortcut is used with {@link #reportShortcutUsed(String)} when a shortcut is started,
+ * <b>or when an action equivalent to a shortcut is taken by the user even if it wasn't started
+ * with the shortcut</b>.
+ *
+ * <p>For example, suppose a GPS navigation application exposes "navigate to work" as a shortcut.
+ * Then it should report it when the user starts this shortcut, and also when the user navigates
+ * to work within the application without using the shortcut.  This helps the launcher application
+ * learn that the user wants to navigate to work at a certain time every weekday, so that the
+ * launcher can show this shortcut in a suggestion list.
+ *
+ * <h3>Launcher API</h3>
+ *
+ * {@link LauncherApps} provides APIs for launcher applications to access shortcuts.
  */
 public class ShortcutManager {
     private static final String TAG = "ShortcutManager";
@@ -110,14 +382,15 @@
 
     /**
      * Publish a list of shortcuts.  All existing dynamic shortcuts from the caller application
-     * will be replaced.
+     * will be replaced.  If there's already pinned shortcuts with the same IDs, they will all be
+     * updated, unless they're immutable.
      *
      * <p>This API will be rate-limited.
      *
      * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
      *
-     * @throws IllegalArgumentException if {@code shortcutInfoList} contains more than
-     * {@link #getMaxShortcutCountPerActivity()} shortcuts.
+     * @throws IllegalArgumentException if {@link #getMaxShortcutCountPerActivity()} is exceeded,
+     * or trying to update immutable shortcuts.
      */
     public boolean setDynamicShortcuts(@NonNull List<ShortcutInfo> shortcutInfoList) {
         try {
@@ -129,8 +402,7 @@
     }
 
     /**
-     * Return all dynamic shortcuts from the caller application.  The number of result items
-     * will not exceed the value returned by {@link #getMaxShortcutCountPerActivity()}.
+     * Return all dynamic shortcuts from the caller application.
      */
     @NonNull
     public List<ShortcutInfo> getDynamicShortcuts() {
@@ -143,7 +415,7 @@
     }
 
     /**
-     * TODO Javadoc
+     * Return all manifest shortcuts from the caller application.
      */
     @NonNull
     public List<ShortcutInfo> getManifestShortcuts() {
@@ -157,14 +429,14 @@
 
     /**
      * Publish list of dynamic shortcuts.  If there's already dynamic or pinned shortcuts with
-     * the same IDs, they will all be updated.
+     * the same IDs, they will all be updated, unless they're immutable.
      *
      * <p>This API will be rate-limited.
      *
      * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
      *
-     * @throws IllegalArgumentException if the caller application has already published the
-     * max number of dynamic shortcuts.
+     * @throws IllegalArgumentException if {@link #getMaxShortcutCountPerActivity()} is exceeded,
+     * or trying to update immutable shortcuts.
      */
     public boolean addDynamicShortcuts(@NonNull List<ShortcutInfo> shortcutInfoList) {
         try {
@@ -212,11 +484,14 @@
     }
 
     /**
-     * Update all existing shortcuts with the same IDs.  Shortcuts may be pinned and/or dynamic.
+     * Update all existing shortcuts with the same IDs.  Target shortcuts may be pinned and/or
+     * dynamic, but may not be immutable.
      *
      * <p>This API will be rate-limited.
      *
      * @return {@code true} if the call has succeeded. {@code false} if the call is rate-limited.
+     *
+     * @throws IllegalArgumentException if trying to update immutable shortcuts.
      */
     public boolean updateShortcuts(List<ShortcutInfo> shortcutInfoList) {
         try {
@@ -228,7 +503,7 @@
     }
 
     /**
-     * TODO Javadoc
+     * Disable pinned shortcuts.  See {@link ShortcutManager}'s class javadoc for details.
      */
     public void disableShortcuts(@NonNull List<String> shortcutIds) {
         try {
@@ -261,7 +536,8 @@
     }
 
     /**
-     * TODO Javadoc
+     * Disable pinned shortcuts with a custom error message.
+     * See {@link ShortcutManager}'s class javadoc for details.
      */
     public void disableShortcuts(@NonNull List<String> shortcutIds, CharSequence disabledMessage) {
         try {
@@ -274,7 +550,7 @@
     }
 
     /**
-     * TODO Javadoc
+     * Re-enable disabled pinned shortcuts.
      */
     public void enableShortcuts(@NonNull List<String> shortcutIds) {
         try {
@@ -293,7 +569,7 @@
     }
 
     /**
-     * Return the max number of dynamic shortcuts + manifest shortcuts that each launcher icon
+     * Return the max number of dynamic and manifest shortcuts that each launcher icon
      * can have at a time.
      */
     public int getMaxShortcutCountPerActivity() {
@@ -338,6 +614,20 @@
     }
 
     /**
+     * Return {@code true} when rate-limiting is active for the caller application.
+     *
+     * <p>See the class level javadoc for details.
+     */
+    public boolean isRateLimitingActive() {
+        try {
+            return mService.getRemainingCallCount(mContext.getPackageName(), injectMyUserId())
+                    == 0;
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Return the max width for icons, in pixels.
      */
     public int getIconMaxWidth() {
@@ -362,12 +652,9 @@
     }
 
     /**
-     * Applications that publish shortcuts should call this method whenever an action that's
-     * equivalent to an existing shortcut has been taken by the user.  This includes not only when
-     * the user manually taps a shortcut, but when the user takes an equivalent action within the
-     * application -- for example, when a music player application has a shortcut to playlist X,
-     * then the application should not only report it when the playlist is opened from the
-     * shortcut, but also when the user plays the playlist within the application.
+     * Applications that publish shortcuts should call this method whenever a shortcut is started
+     * or an action equivalent to a shortcut is taken.  See the {@link ShortcutManager} class
+     * javadoc for details.
      *
      * <p>The information is accessible via {@link UsageStatsManager#queryEvents}
      * Typically, launcher applications use this information to build a prediction model
diff --git a/core/java/android/content/pm/ShortcutServiceInternal.java b/core/java/android/content/pm/ShortcutServiceInternal.java
index 3f8bad1..af56105 100644
--- a/core/java/android/content/pm/ShortcutServiceInternal.java
+++ b/core/java/android/content/pm/ShortcutServiceInternal.java
@@ -53,7 +53,8 @@
             @NonNull String callingPackage, @NonNull String packageName,
             @NonNull List<String> shortcutIds, int userId);
 
-    public abstract Intent createShortcutIntent(int launcherUserId, @NonNull String callingPackage,
+    public abstract Intent[] createShortcutIntents(
+            int launcherUserId, @NonNull String callingPackage,
             @NonNull String packageName, @NonNull String shortcutId, int userId);
 
     public abstract void addListener(@NonNull ShortcutChangeListener listener);
@@ -67,10 +68,4 @@
 
     public abstract boolean hasShortcutHostPermission(int launcherUserId,
             @NonNull String callingPackage);
-
-    /**
-     * Called by AM when the system locale changes *within the AM lock*.  ABSOLUTELY do not take
-     * any locks in this method.
-     */
-    public abstract void onSystemLocaleChangedNoLock();
 }
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 8d3940c..ad11307 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -201,12 +201,16 @@
      * Create a new Resources object on top of an existing set of assets in an
      * AssetManager.
      *
+     * @deprecated Resources should not be constructed by apps.
+     * See {@link android.content.Context#createConfigurationContext(Configuration)}.
+     *
      * @param assets Previously created AssetManager.
      * @param metrics Current display metrics to consider when
      *                selecting/computing resource values.
      * @param config Desired device configuration to consider when
      *               selecting/computing resource values (optional).
      */
+    @Deprecated
     public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) {
         this(null);
         mResourcesImpl = new ResourcesImpl(assets, metrics, config, new DisplayAdjustments());
@@ -1762,7 +1766,10 @@
 
     /**
      * Store the newly updated configuration.
+     *
+     * @deprecated See {@link android.content.Context#createConfigurationContext(Configuration)}.
      */
+    @Deprecated
     public void updateConfiguration(Configuration config, DisplayMetrics metrics) {
         updateConfiguration(config, metrics, null);
     }
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 92134ee..1e44a5c 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -49,6 +49,10 @@
             attrs.mLength = len;
             attrs.mRecycled = false;
 
+            // Reset the assets, which may have changed due to configuration changes
+            // or further resource loading.
+            attrs.mAssets = res.getAssets();
+
             final int fullLen = len * AssetManager.STYLE_NUM_ENTRIES;
             if (attrs.mData.length >= fullLen) {
                 return attrs;
@@ -66,7 +70,7 @@
 
     private final Resources mResources;
     private final DisplayMetrics mMetrics;
-    private final AssetManager mAssets;
+    private AssetManager mAssets;
 
     private boolean mRecycled;
 
@@ -1086,6 +1090,7 @@
         // These may have been set by the client.
         mXml = null;
         mTheme = null;
+        mAssets = null;
 
         mResources.mTypedArrayPool.release(this);
     }
diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java
index a20307a..04ee1e6 100644
--- a/core/java/android/hardware/SensorManager.java
+++ b/core/java/android/hardware/SensorManager.java
@@ -1356,20 +1356,35 @@
     /**
      * Computes the device's orientation based on the rotation matrix.
      * <p>
-     * When it returns, the array values is filled with the result:
+     * When it returns, the array values are as follows:
      * <ul>
-     * <li>values[0]: <i>azimuth</i>, rotation around the -Z axis,
-     *                i.e. the opposite direction of Z axis.</li>
-     * <li>values[1]: <i>pitch</i>, rotation around the -X axis,
-     *                i.e the opposite direction of X axis.</li>
-     * <li>values[2]: <i>roll</i>, rotation around the Y axis.</li>
+     * <li>values[0]: <i>Azimuth</i>, angle of rotation about the -z axis.
+     *                This value represents the angle between the device's y
+     *                axis and the magnetic north pole. When facing north, this
+     *                angle is 0, when facing south, this angle is &pi;.
+     *                Likewise, when facing east, this angle is &pi;/2, and
+     *                when facing west, this angle is -&pi;/2. The range of
+     *                values is -&pi; to &pi;.</li>
+     * <li>values[1]: <i>Pitch</i>, angle of rotation about the x axis.
+     *                This value represents the angle between a plane parallel
+     *                to the device's screen and a plane parallel to the ground.
+     *                Assuming that the bottom edge of the device faces the
+     *                user and that the screen is face-up, tilting the top edge
+     *                of the device toward the ground creates a positive pitch
+     *                angle. The range of values is -&pi; to &pi;.</li>
+     * <li>values[2]: <i>Roll</i>, angle of rotation about the y axis. This
+     *                value represents the angle between a plane perpendicular
+     *                to the device's screen and a plane perpendicular to the
+     *                ground. Assuming that the bottom edge of the device faces
+     *                the user and that the screen is face-up, tilting the left
+     *                edge of the device toward the ground creates a positive
+     *                roll angle. The range of values is -&pi;/2 to &pi;/2.</li>
      * </ul>
      * <p>
-     * Applying these three intrinsic rotations in azimuth, pitch and roll order transforms
-     * identity matrix to the rotation matrix given in input R.
-     * All three angles above are in <b>radians</b> and <b>positive</b> in the
-     * <b>counter-clockwise</b> direction. Range of output is: azimuth from -&pi; to &pi;,
-     * pitch from -&pi;/2 to &pi;/2 and roll from -&pi; to &pi;.
+     * Applying these three rotations in the azimuth, pitch, roll order
+     * transforms an identity matrix to the rotation matrix passed into this
+     * method. Also, note that all three orientation angles are expressed in
+     * <b>radians</b>.
      *
      * @param R
      *        rotation matrix see {@link #getRotationMatrix}.
diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java
index 93da3e5..826eb74 100644
--- a/core/java/android/hardware/display/DisplayManagerGlobal.java
+++ b/core/java/android/hardware/display/DisplayManagerGlobal.java
@@ -354,9 +354,9 @@
         }
     }
 
-    public void requestColorTransform(int displayId, int colorTransformId) {
+    public void requestColorMode(int displayId, int colorMode) {
         try {
-            mDm.requestColorTransform(displayId, colorTransformId);
+            mDm.requestColorMode(displayId, colorMode);
         } catch (RemoteException ex) {
             throw ex.rethrowFromSystemServer();
         }
diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl
index 8a1abf1..f696c8d 100644
--- a/core/java/android/hardware/display/IDisplayManager.aidl
+++ b/core/java/android/hardware/display/IDisplayManager.aidl
@@ -59,8 +59,8 @@
     // No permissions required.
     WifiDisplayStatus getWifiDisplayStatus();
 
-    // Requires CONFIGURE_DISPLAY_COLOR_TRANSFORM
-    void requestColorTransform(int displayId, int colorTransformId);
+    // Requires CONFIGURE_DISPLAY_COLOR_MODE
+    void requestColorMode(int displayId, int colorMode);
 
     // Requires CAPTURE_VIDEO_OUTPUT, CAPTURE_SECURE_VIDEO_OUTPUT, or an appropriate
     // MediaProjection token for certain combinations of flags.
diff --git a/core/java/android/hardware/location/ContextHubService.java b/core/java/android/hardware/location/ContextHubService.java
index 43e596f..062c958 100644
--- a/core/java/android/hardware/location/ContextHubService.java
+++ b/core/java/android/hardware/location/ContextHubService.java
@@ -16,6 +16,11 @@
 
 package android.hardware.location;
 
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+
 import android.Manifest;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -53,10 +58,14 @@
     private static final int PRE_LOADED_APP_MEM_REQ = 0;
 
     private static final int MSG_HEADER_SIZE = 4;
-    private static final int MSG_FIELD_TYPE = 0;
-    private static final int MSG_FIELD_VERSION = 1;
-    private static final int MSG_FIELD_HUB_HANDLE = 2;
-    private static final int MSG_FIELD_APP_INSTANCE = 3;
+    private static final int HEADER_FIELD_MSG_TYPE = 0;
+    private static final int HEADER_FIELD_MSG_VERSION = 1;
+    private static final int HEADER_FIELD_HUB_HANDLE = 2;
+    private static final int HEADER_FIELD_APP_INSTANCE = 3;
+
+    private static final int HEADER_FIELD_LOAD_APP_ID_LO = MSG_HEADER_SIZE;
+    private static final int HEADER_FIELD_LOAD_APP_ID_HI = MSG_HEADER_SIZE + 1;
+    private static final int MSG_LOAD_APP_HEADER_SIZE = MSG_HEADER_SIZE + 2;
 
     private static final int OS_APP_INSTANCE = -1;
 
@@ -146,15 +155,23 @@
             return -1;
         }
 
-        int[] msgHeader = new int[MSG_HEADER_SIZE];
-        msgHeader[MSG_FIELD_HUB_HANDLE] = contextHubHandle;
-        msgHeader[MSG_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
-        msgHeader[MSG_FIELD_VERSION] = 0;
-        msgHeader[MSG_FIELD_TYPE] = MSG_LOAD_NANO_APP;
+        int[] msgHeader = new int[MSG_LOAD_APP_HEADER_SIZE];
+        msgHeader[HEADER_FIELD_HUB_HANDLE] = contextHubHandle;
+        msgHeader[HEADER_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
+        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
+        msgHeader[HEADER_FIELD_MSG_TYPE] = MSG_LOAD_NANO_APP;
 
-        if (nativeSendMessage(msgHeader, app.getAppBinary()) != 0) {
+        long appId = app.getAppId();
+
+        msgHeader[HEADER_FIELD_LOAD_APP_ID_LO] = (int)(appId & 0xFFFFFFFF);
+        msgHeader[HEADER_FIELD_LOAD_APP_ID_HI] = (int)((appId >> 32) & 0xFFFFFFFF);
+
+        int errVal = nativeSendMessage(msgHeader, app.getAppBinary());
+        if (errVal != 0) {
+            Log.e(TAG, "Send Message returns error" + contextHubHandle);
             return -1;
         }
+
         // Do not add an entry to mNanoAppInstance Hash yet. The HAL may reject the app
         return 0;
     }
@@ -169,12 +186,14 @@
 
         // Call Native interface here
         int[] msgHeader = new int[MSG_HEADER_SIZE];
-        msgHeader[MSG_FIELD_HUB_HANDLE] = ANY_HUB;
-        msgHeader[MSG_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
-        msgHeader[MSG_FIELD_VERSION] = 0;
-        msgHeader[MSG_FIELD_TYPE] = MSG_UNLOAD_NANO_APP;
+        msgHeader[HEADER_FIELD_HUB_HANDLE] = ANY_HUB;
+        msgHeader[HEADER_FIELD_APP_INSTANCE] = nanoAppInstanceHandle;
+        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
+        msgHeader[HEADER_FIELD_MSG_TYPE] = MSG_UNLOAD_NANO_APP;
 
-        if (nativeSendMessage(msgHeader, null) != 0) {
+        byte msg[] = new byte[0];
+
+        if (nativeSendMessage(msgHeader, msg) != 0) {
             return -1;
         }
 
@@ -222,10 +241,10 @@
         checkPermissions();
 
         int[] msgHeader = new int[MSG_HEADER_SIZE];
-        msgHeader[MSG_FIELD_HUB_HANDLE] = hubHandle;
-        msgHeader[MSG_FIELD_APP_INSTANCE] = nanoAppHandle;
-        msgHeader[MSG_FIELD_VERSION] = msg.getVersion();
-        msgHeader[MSG_FIELD_TYPE] = msg.getMsgType();
+        msgHeader[HEADER_FIELD_HUB_HANDLE] = hubHandle;
+        msgHeader[HEADER_FIELD_APP_INSTANCE] = nanoAppHandle;
+        msgHeader[HEADER_FIELD_MSG_VERSION] = msg.getVersion();
+        msgHeader[HEADER_FIELD_MSG_TYPE] = msg.getMsgType();
 
         return nativeSendMessage(msgHeader, msg.getData());
     }
@@ -269,15 +288,17 @@
             Log.v(TAG, "No message callbacks registered.");
             return 0;
         }
-        ContextHubMessage message =
-                new ContextHubMessage(header[MSG_FIELD_TYPE], header[MSG_FIELD_VERSION], data);
+
+        ContextHubMessage msg = new ContextHubMessage(header[HEADER_FIELD_MSG_TYPE],
+                                                      header[HEADER_FIELD_MSG_VERSION],
+                                                      data);
         for (int i = 0; i < callbacksCount; ++i) {
             IContextHubCallback callback = mCallbacksList.getBroadcastItem(i);
             try {
                 callback.onMessageReceipt(
-                        header[MSG_FIELD_HUB_HANDLE],
-                        header[MSG_FIELD_APP_INSTANCE],
-                        message);
+                        header[HEADER_FIELD_HUB_HANDLE],
+                        header[HEADER_FIELD_APP_INSTANCE],
+                        msg);
             } catch (RemoteException e) {
                 Log.i(TAG, "Exception (" + e + ") calling remote callback (" + callback + ").");
                 continue;
@@ -308,12 +329,20 @@
         return 0;
     }
 
+    private int deleteAppInstance(int appInstanceHandle) {
+        if (mNanoAppHash.remove(appInstanceHandle) == null) {
+            return -1;
+        }
+
+        return 0;
+    }
+
     private void sendVrStateChangeMessageToApp(NanoAppInstanceInfo app, boolean vrModeEnabled) {
         int[] msgHeader = new int[MSG_HEADER_SIZE];
-        msgHeader[MSG_FIELD_TYPE] = 0;
-        msgHeader[MSG_FIELD_VERSION] = 0;
-        msgHeader[MSG_FIELD_HUB_HANDLE] = ANY_HUB;
-        msgHeader[MSG_FIELD_APP_INSTANCE] = app.getHandle();
+        msgHeader[HEADER_FIELD_MSG_TYPE] = 0;
+        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
+        msgHeader[HEADER_FIELD_HUB_HANDLE] = ANY_HUB;
+        msgHeader[HEADER_FIELD_APP_INSTANCE] = app.getHandle();
 
         byte[] data = new byte[1];
         data[0] = (byte) ((vrModeEnabled) ? 1 : 0);
diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java
index 8f21b38..629db06 100644
--- a/core/java/android/hardware/usb/UsbManager.java
+++ b/core/java/android/hardware/usb/UsbManager.java
@@ -43,7 +43,7 @@
  * <div class="special reference">
  * <h3>Developer Guides</h3>
  * <p>For more information about communicating with USB hardware, read the
- * <a href="{@docRoot}guide/topics/usb/index.html">USB</a> developer guide.</p>
+ * <a href="{@docRoot}guide/topics/connectivity/usb/index.html">USB developer guide</a>.</p>
  * </div>
  */
 public class UsbManager {
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 2dcfedf..8f62d3f 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -1045,6 +1045,26 @@
     }
 
     /**
+     * Request that this callback be invoked at ConnectivityService's earliest
+     * convenience with the current satisfying network's LinkProperties.
+     * If no such network exists no callback invocation is performed.
+     *
+     * The callback must have been registered with #requestNetwork() or
+     * #registerDefaultNetworkCallback(); callbacks registered with
+     * registerNetworkCallback() are not specific to any particular Network so
+     * do not cause any updates.
+     *
+     * @hide
+     */
+    public void requestLinkProperties(NetworkCallback networkCallback) {
+        try {
+            mService.requestLinkProperties(networkCallback.networkRequest);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Get the {@link android.net.NetworkCapabilities} for the given {@link Network}.  This
      * will return {@code null} if the network is unknown.
      * <p>This method requires the caller to hold the permission
@@ -1062,6 +1082,26 @@
     }
 
     /**
+     * Request that this callback be invoked at ConnectivityService's earliest
+     * convenience with the current satisfying network's NetworkCapabilities.
+     * If no such network exists no callback invocation is performed.
+     *
+     * The callback must have been registered with #requestNetwork() or
+     * #registerDefaultNetworkCallback(); callbacks registered with
+     * registerNetworkCallback() are not specific to any particular Network so
+     * do not cause any updates.
+     *
+     * @hide
+     */
+    public void requestNetworkCapabilities(NetworkCallback networkCallback) {
+        try {
+            mService.requestNetworkCapabilities(networkCallback.networkRequest);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Gets the URL that should be used for resolving whether a captive portal is present.
      * 1. This URL should respond with a 204 response to a GET request to indicate no captive
      *    portal is present.
diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl
index 0d518cc..d48c155 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -156,6 +156,8 @@
     void pendingListenForNetwork(in NetworkCapabilities networkCapabilities,
             in PendingIntent operation);
 
+    void requestLinkProperties(in NetworkRequest networkRequest);
+    void requestNetworkCapabilities(in NetworkRequest networkRequest);
     void releaseNetworkRequest(in NetworkRequest networkRequest);
 
     void setAcceptUnvalidated(in Network network, boolean accept, boolean always);
diff --git a/core/java/android/net/LinkAddress.java b/core/java/android/net/LinkAddress.java
index 384ab1c..6e74f14 100644
--- a/core/java/android/net/LinkAddress.java
+++ b/core/java/android/net/LinkAddress.java
@@ -103,7 +103,7 @@
     private boolean isIPv6ULA() {
         if (address != null && address instanceof Inet6Address) {
             byte[] bytes = address.getAddress();
-            return ((bytes[0] & (byte)0xfc) == (byte)0xfc);
+            return ((bytes[0] & (byte)0xfe) == (byte)0xfc);
         }
         return false;
     }
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index 6243f46..ebb9601 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -405,8 +405,15 @@
      */
     public static final int TRANSPORT_VPN = 4;
 
+    /**
+     * Indicates this network uses a Wi-Fi NAN transport.
+     *
+     * @hide PROPOSED_NAN_API
+     */
+    public static final int TRANSPORT_WIFI_NAN = 5;
+
     private static final int MIN_TRANSPORT = TRANSPORT_CELLULAR;
-    private static final int MAX_TRANSPORT = TRANSPORT_VPN;
+    private static final int MAX_TRANSPORT = TRANSPORT_WIFI_NAN;
 
     /**
      * Adds the given transport type to this {@code NetworkCapability} instance.
@@ -862,6 +869,7 @@
                 case TRANSPORT_BLUETOOTH:   transports += "BLUETOOTH"; break;
                 case TRANSPORT_ETHERNET:    transports += "ETHERNET"; break;
                 case TRANSPORT_VPN:         transports += "VPN"; break;
+                case TRANSPORT_WIFI_NAN:    transports += "WIFI_NAN"; break;
             }
             if (++i < types.length) transports += "|";
         }
diff --git a/core/java/android/net/NetworkRequest.java b/core/java/android/net/NetworkRequest.java
index 847d82b..4501f7b 100644
--- a/core/java/android/net/NetworkRequest.java
+++ b/core/java/android/net/NetworkRequest.java
@@ -284,6 +284,15 @@
         };
 
     /**
+     * Returns true iff. the contained NetworkRequest is of type LISTEN.
+     *
+     * @hide
+     */
+    public boolean isListen() {
+        return type == Type.LISTEN;
+    }
+
+    /**
      * Returns true iff. the contained NetworkRequest is one that:
      *
      *     - should be associated with at most one satisfying network
diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java
index 069d227..f081e93 100644
--- a/core/java/android/net/NetworkUtils.java
+++ b/core/java/android/net/NetworkUtils.java
@@ -45,13 +45,20 @@
     public native static void attachDhcpFilter(FileDescriptor fd) throws SocketException;
 
     /**
-     * Attaches a socket filter that accepts ICMP6 router advertisement packets to the given socket.
+     * Attaches a socket filter that accepts ICMPv6 router advertisements to the given socket.
      * @param fd the socket's {@link FileDescriptor}.
      * @param packetType the hardware address type, one of ARPHRD_*.
      */
     public native static void attachRaFilter(FileDescriptor fd, int packetType) throws SocketException;
 
     /**
+     * Configures a socket for receiving ICMPv6 router solicitations and sending advertisements.
+     * @param fd the socket's {@link FileDescriptor}.
+     * @param ifIndex the interface index.
+     */
+    public native static void setupRaSocket(FileDescriptor fd, int ifIndex) throws SocketException;
+
+    /**
      * Binds the current process to the network designated by {@code netId}.  All sockets created
      * in the future (and not explicitly bound via a bound {@link SocketFactory} (see
      * {@link Network#getSocketFactory}) will be bound to this network.  Note that if this
diff --git a/core/java/android/net/network-policy-restrictions.md b/core/java/android/net/network-policy-restrictions.md
index fe13f7a..63ce1a2 100644
--- a/core/java/android/net/network-policy-restrictions.md
+++ b/core/java/android/net/network-policy-restrictions.md
@@ -29,8 +29,8 @@
 | **DS**  |  *WL* |  ok  | blk   |  ok  |  ok   |
 | **ON**  | *!WL* | blk  | blk   | blk  | blk   |
 |         |  *BL* | blk  | blk   | blk  | blk   |
-| **DS**  |  *WL* | blk  |  ok   |  ok  |  ok   |
-| **OFF** | *!WL* | blk  |  ok   |  ok  |  ok   |
+| **DS**  |  *WL* | blk  | blk   |  ok  |  ok   |
+| **OFF** | *!WL* | blk  | blk   |  ok  |  ok   |
 |         |  *BL* | blk  | blk   | blk  | blk   |
 
 
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 4acb729..f0cc390 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -546,6 +546,20 @@
          */
         public abstract long getTimeAtCpuSpeed(int cluster, int step, int which);
 
+        /**
+         * Returns the number of times this UID woke up the Application Processor to
+         * process a mobile radio packet.
+         * @param which one of STATS_SINCE_CHARGED, STATS_SINCE_UNPLUGGED, or STATS_CURRENT.
+         */
+        public abstract long getMobileRadioApWakeupCount(int which);
+
+        /**
+         * Returns the number of times this UID woke up the Application Processor to
+         * process a WiFi packet.
+         * @param which one of STATS_SINCE_CHARGED, STATS_SINCE_UNPLUGGED, or STATS_CURRENT.
+         */
+        public abstract long getWifiRadioApWakeupCount(int which);
+
         public static abstract class Sensor {
             /*
              * FIXME: it's not correct to use this magic value because it
@@ -1285,9 +1299,14 @@
         public static final int EVENT_TEMP_WHITELIST = 0x0011;
         // Event for the screen waking up.
         public static final int EVENT_SCREEN_WAKE_UP = 0x0012;
+        // Event for the UID that woke up the application processor.
+        // Used for wakeups coming from WiFi, modem, etc.
+        public static final int EVENT_WAKEUP_AP = 0x0013;
+        // Event for reporting that a specific partial wake lock has been held for a long duration.
+        public static final int EVENT_LONG_WAKE_LOCK = 0x0014;
 
         // Number of event types.
-        public static final int EVENT_COUNT = 0x0013;
+        public static final int EVENT_COUNT = 0x0015;
         // Mask to extract out only the type part of the event.
         public static final int EVENT_TYPE_MASK = ~(EVENT_FLAG_START|EVENT_FLAG_FINISH);
 
@@ -1315,6 +1334,10 @@
                 EVENT_TEMP_WHITELIST | EVENT_FLAG_START;
         public static final int EVENT_TEMP_WHITELIST_FINISH =
                 EVENT_TEMP_WHITELIST | EVENT_FLAG_FINISH;
+        public static final int EVENT_LONG_WAKE_LOCK_START =
+                EVENT_LONG_WAKE_LOCK | EVENT_FLAG_START;
+        public static final int EVENT_LONG_WAKE_LOCK_FINISH =
+                EVENT_LONG_WAKE_LOCK | EVENT_FLAG_FINISH;
 
         // For CMD_EVENT.
         public int eventCode;
@@ -1979,13 +2002,13 @@
     public static final String[] HISTORY_EVENT_NAMES = new String[] {
             "null", "proc", "fg", "top", "sync", "wake_lock_in", "job", "user", "userfg", "conn",
             "active", "pkginst", "pkgunin", "alarm", "stats", "inactive", "active", "tmpwhitelist",
-            "screenwake",
+            "screenwake", "wakeupap", "longwake"
     };
 
     public static final String[] HISTORY_EVENT_CHECKIN_NAMES = new String[] {
             "Enl", "Epr", "Efg", "Etp", "Esy", "Ewl", "Ejb", "Eur", "Euf", "Ecn",
             "Eac", "Epi", "Epu", "Eal", "Est", "Eai", "Eaa", "Etw",
-            "Esw",
+            "Esw", "Ewa", "Elw"
     };
 
     /**
@@ -3105,20 +3128,22 @@
             final long mobilePacketsTx = u.getNetworkActivityPackets(NETWORK_MOBILE_TX_DATA, which);
             final long mobileActiveTime = u.getMobileRadioActiveTime(which);
             final int mobileActiveCount = u.getMobileRadioActiveCount(which);
+            final long mobileWakeup = u.getMobileRadioApWakeupCount(which);
             final long wifiPacketsRx = u.getNetworkActivityPackets(NETWORK_WIFI_RX_DATA, which);
             final long wifiPacketsTx = u.getNetworkActivityPackets(NETWORK_WIFI_TX_DATA, which);
+            final long wifiWakeup = u.getWifiRadioApWakeupCount(which);
             final long btBytesRx = u.getNetworkActivityBytes(NETWORK_BT_RX_DATA, which);
             final long btBytesTx = u.getNetworkActivityBytes(NETWORK_BT_TX_DATA, which);
             if (mobileBytesRx > 0 || mobileBytesTx > 0 || wifiBytesRx > 0 || wifiBytesTx > 0
                     || mobilePacketsRx > 0 || mobilePacketsTx > 0 || wifiPacketsRx > 0
                     || wifiPacketsTx > 0 || mobileActiveTime > 0 || mobileActiveCount > 0
-                    || btBytesRx > 0 || btBytesTx > 0) {
+                    || btBytesRx > 0 || btBytesTx > 0 || mobileWakeup > 0 || wifiWakeup > 0) {
                 dumpLine(pw, uid, category, NETWORK_DATA, mobileBytesRx, mobileBytesTx,
                         wifiBytesRx, wifiBytesTx,
                         mobilePacketsRx, mobilePacketsTx,
                         wifiPacketsRx, wifiPacketsTx,
                         mobileActiveTime, mobileActiveCount,
-                        btBytesRx, btBytesTx);
+                        btBytesRx, btBytesTx, mobileWakeup, wifiWakeup);
             }
 
             // Dump modem controller data, per UID.
@@ -4125,6 +4150,9 @@
             final int wifiScanCount = u.getWifiScanCount(which);
             final long uidWifiRunningTime = u.getWifiRunningTime(rawRealtime, which);
 
+            final long mobileWakeup = u.getMobileRadioApWakeupCount(which);
+            final long wifiWakeup = u.getWifiRadioApWakeupCount(which);
+
             if (mobileRxBytes > 0 || mobileTxBytes > 0
                     || mobileRxPackets > 0 || mobileTxPackets > 0) {
                 pw.print(prefix); pw.print("    Mobile network: ");
@@ -4150,6 +4178,14 @@
                 pw.println(sb.toString());
             }
 
+            if (mobileWakeup > 0) {
+                sb.setLength(0);
+                sb.append(prefix);
+                sb.append("    Mobile radio AP wakeups: ");
+                sb.append(mobileWakeup);
+                pw.println(sb.toString());
+            }
+
             printControllerActivityIfInteresting(pw, sb, prefix + "  ", "Modem",
                     u.getModemControllerActivity(), which);
 
@@ -4181,6 +4217,14 @@
                 pw.println(sb.toString());
             }
 
+            if (wifiWakeup > 0) {
+                sb.setLength(0);
+                sb.append(prefix);
+                sb.append("    WiFi AP wakeups: ");
+                sb.append(wifiWakeup);
+                pw.println(sb.toString());
+            }
+
             printControllerActivityIfInteresting(pw, sb, prefix + "  ", "WiFi",
                     u.getWifiControllerActivity(), which);
 
@@ -4922,7 +4966,9 @@
                         pw.print(',');
                         pw.print(rec.stepDetails.statIdlTime);
                         pw.print(',');
-                        pw.print(rec.stepDetails.statPlatformIdleState);
+                        if (rec.stepDetails.statPlatformIdleState != null) {
+                            pw.print(rec.stepDetails.statPlatformIdleState);
+                        }
                         pw.println();
                     }
                 }
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 80927f3..8d6d9ed 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -286,6 +286,11 @@
     }
 
     /** {@hide} */
+    public static File getReferenceProfile(String packageName) {
+        return buildPath(getDataDirectory(), "misc", "profiles", "ref", packageName);
+    }
+
+    /** {@hide} */
     public static File getDataProfilesDePackageDirectory(int userId, String packageName) {
         return buildPath(getDataProfilesDeDirectory(userId), packageName);
     }
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 74dcc07..f6e6ad6 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -36,6 +36,7 @@
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamClass;
 import java.io.Serializable;
+import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
@@ -2571,6 +2572,20 @@
         return p;
     }
 
+    /** @hide */
+    public final <T extends Parcelable> T[] readParcelableArray(ClassLoader loader,
+            Class<T> clazz) {
+        int N = readInt();
+        if (N < 0) {
+            return null;
+        }
+        T[] p = (T[]) Array.newInstance(clazz, N);
+        for (int i = 0; i < N; i++) {
+            p[i] = readParcelable(loader);
+        }
+        return p;
+    }
+
     /**
      * Read and return a new Serializable object from the parcel.
      * @return the Serializable object, or null if the Serializable name
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index eb21c7a..edd8a39 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -620,6 +620,9 @@
      * priority.
      * If the thread is a thread group leader, that is it's gettid() == getpid(),
      * then the other threads in the same thread group are _not_ affected.
+     *
+     * Does not set cpuset for some historical reason, just calls
+     * libcutils::set_sched_policy().
      */
     public static final native void setThreadGroup(int tid, int group)
             throws IllegalArgumentException, SecurityException;
@@ -641,6 +644,8 @@
      * priority threads alone.  group == THREAD_GROUP_BG_NONINTERACTIVE moves all
      * threads, regardless of priority, to the background scheduling group.
      * group == THREAD_GROUP_FOREGROUND is not allowed.
+     *
+     * Always sets cpusets.
      */
     public static final native void setProcessGroup(int pid, int group)
             throws IllegalArgumentException, SecurityException;
@@ -907,6 +912,7 @@
      * @hide
      */
     public static final boolean isThreadInProcess(int tid, int pid) {
+        StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
         try {
             if (Os.access("/proc/" + tid + "/task/" + pid, OsConstants.F_OK)) {
                 return true;
@@ -915,6 +921,9 @@
             }
         } catch (Exception e) {
             return false;
+        } finally {
+            StrictMode.setThreadPolicy(oldPolicy);
         }
+
     }
 }
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index c36b488..ff69cf6 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -191,9 +191,14 @@
      */
     public static final int DETECT_RESOURCE_MISMATCH = 0x10;  // for ThreadPolicy
 
+    /**
+     * @hide
+     */
+    public static final int DETECT_UNBUFFERED_IO = 0x20;  // for ThreadPolicy
+
     private static final int ALL_THREAD_DETECT_BITS =
             DETECT_DISK_WRITE | DETECT_DISK_READ | DETECT_NETWORK | DETECT_CUSTOM |
-            DETECT_RESOURCE_MISMATCH;
+            DETECT_RESOURCE_MISMATCH | DETECT_UNBUFFERED_IO;
 
     // Byte 2: Process-policy
 
@@ -465,6 +470,20 @@
             }
 
             /**
+             * Detect unbuffered input/output operations.
+             */
+            public Builder detectUnbufferedIo() {
+                return enable(DETECT_UNBUFFERED_IO);
+            }
+
+            /**
+             * Detect unbuffered input/output operations.
+             */
+            public Builder permitUnbufferedIo() {
+                return disable(DETECT_UNBUFFERED_IO);
+            }
+
+            /**
              * Enables detection of mismatches between defined resource types
              * and getter calls.
              * <p>
@@ -974,6 +993,15 @@
     }
 
     /**
+     * @hide
+     */
+    private static class StrictModeUnbufferedIOViolation extends StrictModeViolation {
+        public StrictModeUnbufferedIOViolation(int policyMask) {
+            super(policyMask, DETECT_UNBUFFERED_IO, null);
+        }
+    }
+
+    /**
      * Returns the bitmask of the current thread's policy.
      *
      * @return the bitmask of all the DETECT_* and PENALTY_* bits currently enabled
@@ -1281,6 +1309,20 @@
             startHandlingViolationException(e);
         }
 
+        // Part of BlockGuard.Policy; just part of StrictMode:
+        public void onUnbufferedIO() {
+            if ((mPolicyMask & DETECT_UNBUFFERED_IO) == 0) {
+                return;
+            }
+            if (tooManyViolationsThisLoop()) {
+                return;
+            }
+            BlockGuard.BlockGuardPolicyException e =
+                    new StrictModeUnbufferedIOViolation(mPolicyMask);
+            e.fillInStackTrace();
+            startHandlingViolationException(e);
+        }
+
         // Part of BlockGuard.Policy interface:
         public void onReadFromDisk() {
             if ((mPolicyMask & DETECT_DISK_READ) == 0) {
@@ -2208,6 +2250,18 @@
     /**
      * @hide
      */
+    public static void noteUnbufferedIO() {
+        BlockGuard.Policy policy = BlockGuard.getThreadPolicy();
+        if (!(policy instanceof AndroidBlockGuardPolicy)) {
+            // StrictMode not enabled.
+            return;
+        }
+        ((AndroidBlockGuardPolicy) policy).onUnbufferedIO();
+    }
+
+    /**
+     * @hide
+     */
     public static void noteDiskRead() {
         BlockGuard.Policy policy = BlockGuard.getThreadPolicy();
         if (!(policy instanceof AndroidBlockGuardPolicy)) {
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 5dea3d6..f893896 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -23,6 +23,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.UserIdInt;
+import android.annotation.WorkerThread;
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManagerNative;
@@ -603,6 +604,17 @@
     public static final String DISALLOW_SET_USER_ICON = "no_set_user_icon";
 
     /**
+     * Specifies if a user is not allowed to enable the oem unlock setting. The default value is
+     * <code>false</code>.
+     *
+     * @see DevicePolicyManager#addUserRestriction(ComponentName, String)
+     * @see DevicePolicyManager#clearUserRestriction(ComponentName, String)
+     * @see #getUserRestrictions()
+     * @hide
+     */
+    public static final String DISALLOW_OEM_UNLOCK = "no_oem_unlock";
+
+    /**
      * Allows apps in the parent profile to handle web links from the managed profile.
      *
      * This user restriction has an effect only in a managed profile.
@@ -2061,12 +2073,15 @@
      * <li>From {@link android.os.Build.VERSION_CODES#M}, {@code Bundle} or {@code Bundle[]}
      * </ul>
      *
+     * <p>NOTE: The method performs disk I/O and shouldn't be called on the main thread
+     *
      * @param packageName the package name of the calling application
      * @return a {@link Bundle} with the restrictions for that package, or an empty {@link Bundle}
      * if there are no saved restrictions.
      *
      * @see #KEY_RESTRICTIONS_PENDING
      */
+    @WorkerThread
     public Bundle getApplicationRestrictions(String packageName) {
         try {
             return mService.getApplicationRestrictions(packageName);
@@ -2078,6 +2093,7 @@
     /**
      * @hide
      */
+    @WorkerThread
     public Bundle getApplicationRestrictions(String packageName, UserHandle user) {
         try {
             return mService.getApplicationRestrictionsForUser(packageName, user.getIdentifier());
@@ -2089,6 +2105,7 @@
     /**
      * @hide
      */
+    @WorkerThread
     public void setApplicationRestrictions(String packageName, Bundle restrictions,
             UserHandle user) {
         try {
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index 5254d35..c5507b9 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -132,10 +132,15 @@
     public static final int FLAG_INCLUDE_INVISIBLE = 1 << 10;
 
     private static volatile IMountService sMountService = null;
-    private static final String INTERNAL_STORAGE_SIZE_PATH =
-            "/sys/block/mmcblk0/size";
-    private static final String INTERNAL_STORAGE_SECTOR_SIZE =
-            "/sys/block/mmcblk0/queue/hw_sector_size";
+
+    // TODO: the location of the primary storage block varies from device to device, so we need to
+    // try the most likely candidates - a long-term solution would be a device-specific vold
+    // function that returns the calculated size.
+    private static final String[] INTERNAL_STORAGE_SIZE_PATHS = {
+            "/sys/block/mmcblk0/size",
+            "/sys/block/sda/size"
+    };
+    private static final int INTERNAL_STORAGE_SECTOR_SIZE = 512;
 
     private final Context mContext;
     private final ContentResolver mResolver;
@@ -926,9 +931,13 @@
 
     /** {@hide} */
     public long getPrimaryStorageSize() {
-        final long numberBlocks = readLong(INTERNAL_STORAGE_SIZE_PATH);
-        final long sectorSize = readLong(INTERNAL_STORAGE_SECTOR_SIZE);
-        return numberBlocks * sectorSize;
+        for (String path : INTERNAL_STORAGE_SIZE_PATHS) {
+            final long numberBlocks = readLong(path);
+            if (numberBlocks > 0) {
+                return numberBlocks * INTERNAL_STORAGE_SECTOR_SIZE;
+            }
+        }
+        return 0;
     }
 
     private long readLong(String path) {
@@ -936,7 +945,7 @@
                 final BufferedReader reader = new BufferedReader(new InputStreamReader(fis));) {
             return Long.parseLong(reader.readLine());
         } catch (Exception e) {
-            Slog.w("Could not read " + path, e);
+            Slog.w(TAG, "Could not read " + path, e);
             return 0;
         }
     }
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index b0ea99c..c51a6136 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -235,7 +235,6 @@
          * @see #FLAG_DIR_PREFERS_GRID
          * @see #FLAG_DIR_PREFERS_LAST_MODIFIED
          * @see #FLAG_VIRTUAL_DOCUMENT
-         * @see #FLAG_ARCHIVE
          * @see #FLAG_SUPPORTS_COPY
          * @see #FLAG_SUPPORTS_MOVE
          * @see #FLAG_SUPPORTS_REMOVE
@@ -326,7 +325,7 @@
          * Flag indicating that a document can be renamed.
          *
          * @see #COLUMN_FLAGS
-         * @see DocumentsContract#renameDocument(ContentProviderClient, Uri,
+         * @see DocumentsContract#renameDocument(ContentResolver, Uri,
          *      String)
          * @see DocumentsProvider#renameDocument(String, String)
          */
@@ -337,7 +336,7 @@
          * within the same document provider.
          *
          * @see #COLUMN_FLAGS
-         * @see DocumentsContract#copyDocument(ContentProviderClient, Uri, Uri)
+         * @see DocumentsContract#copyDocument(ContentResolver, Uri, Uri)
          * @see DocumentsProvider#copyDocument(String, String)
          */
         public static final int FLAG_SUPPORTS_COPY = 1 << 7;
@@ -347,7 +346,7 @@
          * within the same document provider.
          *
          * @see #COLUMN_FLAGS
-         * @see DocumentsContract#moveDocument(ContentProviderClient, Uri, Uri, Uri)
+         * @see DocumentsContract#moveDocument(ContentResolver, Uri, Uri, Uri)
          * @see DocumentsProvider#moveDocument(String, String, String)
          */
         public static final int FLAG_SUPPORTS_MOVE = 1 << 8;
@@ -368,7 +367,7 @@
          * Flag indicating that a document can be removed from a parent.
          *
          * @see #COLUMN_FLAGS
-         * @see DocumentsContract#removeDocument(ContentProviderClient, Uri, Uri)
+         * @see DocumentsContract#removeDocument(ContentResolver, Uri, Uri)
          * @see DocumentsProvider#removeDocument(String, String)
          */
         public static final int FLAG_SUPPORTS_REMOVE = 1 << 10;
@@ -875,7 +874,7 @@
      * Test if the given URI represents a {@link Document} tree.
      *
      * @see #buildTreeDocumentUri(String, String)
-     * @see #getTreeDocumentId(Uri, String)
+     * @see #getTreeDocumentId(Uri)
      */
     public static boolean isTreeUri(Uri uri) {
         final List<String> paths = uri.getPathSegments();
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index f9810276..4f1b839 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -5298,15 +5298,6 @@
                 "accessibility_display_daltonizer";
 
         /**
-         * Float list that specifies the color matrix to apply to
-         * the display. Valid values are defined in AccessibilityManager.
-         *
-         * @hide
-         */
-        public static final String ACCESSIBILITY_DISPLAY_COLOR_MATRIX =
-                "accessibility_display_color_matrix";
-
-        /**
          * Setting that specifies whether automatic click when the mouse pointer stops moving is
          * enabled.
          *
@@ -6150,6 +6141,15 @@
                 "camera_double_tap_power_gesture_disabled";
 
         /**
+         * Whether the camera double twist gesture to flip between front and back mode should be
+         * enabled.
+         *
+         * @hide
+         */
+        public static final String CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED =
+                "camera_double_twist_to_flip_enabled";
+
+        /**
          * Control whether Night display is currently activated.
          * @hide
          */
@@ -6176,44 +6176,6 @@
         public static final String NIGHT_DISPLAY_CUSTOM_END_TIME = "night_display_custom_end_time";
 
         /**
-         * Behavior of twilight on the device.
-         * One of {@link #TWILIGHT_MODE_LOCKED_OFF}, {@link #TWILIGHT_MODE_LOCKED_ON}
-         * or {@link #TWILIGHT_MODE_AUTO}.
-         * @hide
-         */
-        public static final String TWILIGHT_MODE = "twilight_mode";
-
-        /**
-         * Twilight mode always off.
-         * @hide
-         */
-        public static final int TWILIGHT_MODE_LOCKED_OFF = 0;
-
-        /**
-         * Twilight mode always on.
-         * @hide
-         */
-        public static final int TWILIGHT_MODE_LOCKED_ON = 1;
-
-        /**
-         * Twilight mode auto.
-         * @hide
-         */
-        public static final int TWILIGHT_MODE_AUTO = 2;
-
-        /**
-         * Twilight mode auto, temporarily overriden to on.
-         * @hide
-         */
-        public static final int TWILIGHT_MODE_AUTO_OVERRIDE_OFF = 3;
-
-        /**
-         * Twilight mode auto, temporarily overriden to off.
-         * @hide
-         */
-        public static final int TWILIGHT_MODE_AUTO_OVERRIDE_ON = 4;
-
-        /**
          * Whether brightness should automatically adjust based on twilight state.
          * @hide
          */
@@ -6302,6 +6264,20 @@
         public static final String AUTOMATIC_STORAGE_MANAGER_LAST_RUN =
                 "automatic_storage_manager_last_run";
 
+        /**
+         * Whether Downloads folder backup is enabled and should run on the device.
+         *
+         * @hide
+         */
+        public static final String DOWNLOADS_BACKUP_ENABLED = "downloads_backup_enabled";
+
+        /**
+         * Whether SystemUI navigation keys is enabled.
+         * @hide
+         */
+        public static final String SYSTEM_NAVIGATION_KEYS_ENABLED =
+                "system_navigation_keys_enabled";
+
 
         /**
          * This are the settings to be backed up.
@@ -6320,7 +6296,6 @@
             USB_MASS_STORAGE_ENABLED,                           // moved to global
             ACCESSIBILITY_DISPLAY_INVERSION_ENABLED,
             ACCESSIBILITY_DISPLAY_DALTONIZER,
-            ACCESSIBILITY_DISPLAY_COLOR_MATRIX,
             ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
             ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
             ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
@@ -6376,7 +6351,11 @@
             PREFERRED_TTY_MODE,
             ENHANCED_VOICE_PRIVACY_ENABLED,
             TTY_MODE_ENABLED,
-            INCALL_POWER_BUTTON_BEHAVIOR
+            INCALL_POWER_BUTTON_BEHAVIOR,
+            NIGHT_DISPLAY_CUSTOM_START_TIME,
+            NIGHT_DISPLAY_CUSTOM_END_TIME,
+            NIGHT_DISPLAY_AUTO_MODE,
+            NIGHT_DISPLAY_ACTIVATED
         };
 
         /**
@@ -9100,15 +9079,6 @@
         public static final String ENABLE_CELLULAR_ON_BOOT = "enable_cellular_on_boot";
 
         /**
-         * Whether toggling OEM unlock is disallowed. If disallowed, it is not possible to enable or
-         * disable OEM unlock.
-         * <p>
-         * Type: int (0: allow OEM unlock setting. 1: disallow OEM unlock)
-         * @hide
-         */
-        public static final String OEM_UNLOCK_DISALLOWED = "oem_unlock_disallowed";
-
-        /**
          * The maximum allowed notification enqueue rate in Hertz.
          *
          * Should be a float, and includes both posts and updates.
@@ -9117,13 +9087,6 @@
         public static final String MAX_NOTIFICATION_ENQUEUE_RATE = "max_notification_enqueue_rate";
 
         /**
-         * Whether SystemUI navigation keys is enabled.
-         * @hide
-         */
-        public static final String SYSTEM_NAVIGATION_KEYS_ENABLED =
-                "system_navigation_keys_enabled";
-
-        /**
          * Whether cell is enabled/disabled
          * @hide
          */
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index 1d9784b..474a9b6 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -20,6 +20,8 @@
 import android.app.NotificationManager.Policy;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Parcel;
@@ -42,6 +44,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.Locale;
 import java.util.Objects;
@@ -118,6 +121,7 @@
     private static final String RULE_ATT_ZEN = "zen";
     private static final String RULE_ATT_CONDITION_ID = "conditionId";
     private static final String RULE_ATT_CREATION_TIME = "creationTime";
+    private static final String RULE_ATT_ENABLER = "enabler";
 
     public boolean allowCalls = DEFAULT_ALLOW_CALLS;
     public boolean allowRepeatCallers = DEFAULT_ALLOW_REPEAT_CALLERS;
@@ -502,6 +506,7 @@
         rt.conditionId = safeUri(parser, RULE_ATT_CONDITION_ID);
         rt.component = safeComponentName(parser, RULE_ATT_COMPONENT);
         rt.creationTime = safeLong(parser, RULE_ATT_CREATION_TIME, 0);
+        rt.enabler = parser.getAttributeValue(null, RULE_ATT_ENABLER);
         rt.condition = readConditionXml(parser);
         return rt;
     }
@@ -520,6 +525,9 @@
             out.attribute(null, RULE_ATT_CONDITION_ID, rule.conditionId.toString());
         }
         out.attribute(null, RULE_ATT_CREATION_TIME, Long.toString(rule.creationTime));
+        if (rule.enabler != null) {
+            out.attribute(null, RULE_ATT_ENABLER, rule.enabler);
+        }
         if (rule.condition != null) {
             writeConditionXml(rule.condition, out);
         }
@@ -889,9 +897,13 @@
                     ", endHour=" + endHour +
                     ", endMinute=" + endMinute +
                     ", exitAtAlarm=" + exitAtAlarm +
-                    ", nextAlarm=" + nextAlarm +
+                    ", nextAlarm=" + ts(nextAlarm) +
                     '}';
         }
+
+        protected static String ts(long time) {
+            return new Date(time) + " (" + time + ")";
+        }
     }
 
     // ==== Built-in system condition: event ====
@@ -989,6 +1001,25 @@
         return UUID.randomUUID().toString().replace("-", "");
     }
 
+    private static String getOwnerCaption(Context context, String owner) {
+        final PackageManager pm = context.getPackageManager();
+        try {
+            final ApplicationInfo info = pm.getApplicationInfo(owner, 0);
+            if (info != null) {
+                final CharSequence seq = info.loadLabel(pm);
+                if (seq != null) {
+                    final String str = seq.toString().trim();
+                    if (str.length() > 0) {
+                        return str;
+                    }
+                }
+            }
+        } catch (Throwable e) {
+            Slog.w(TAG, "Error loading owner caption", e);
+        }
+        return "";
+    }
+
     public static String getConditionSummary(Context context, ZenModeConfig config,
             int userHandle, boolean shortVersion) {
         return getConditionLine(context, config, userHandle, false /*useLine1*/, shortVersion);
@@ -997,23 +1028,28 @@
     private static String getConditionLine(Context context, ZenModeConfig config,
             int userHandle, boolean useLine1, boolean shortVersion) {
         if (config == null) return "";
+        String summary = "";
         if (config.manualRule != null) {
             final Uri id = config.manualRule.conditionId;
-            if (id == null) {
-                return context.getString(com.android.internal.R.string.zen_mode_forever);
+            if (config.manualRule.enabler != null) {
+                summary = getOwnerCaption(context, config.manualRule.enabler);
+            } else {
+                if (id == null) {
+                    summary = context.getString(com.android.internal.R.string.zen_mode_forever);
+                } else {
+                    final long time = tryParseCountdownConditionId(id);
+                    Condition c = config.manualRule.condition;
+                    if (time > 0) {
+                        final long now = System.currentTimeMillis();
+                        final long span = time - now;
+                        c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS),
+                                userHandle, shortVersion);
+                    }
+                    final String rt = c == null ? "" : useLine1 ? c.line1 : c.summary;
+                    summary = TextUtils.isEmpty(rt) ? "" : rt;
+                }
             }
-            final long time = tryParseCountdownConditionId(id);
-            Condition c = config.manualRule.condition;
-            if (time > 0) {
-                final long now = System.currentTimeMillis();
-                final long span = time - now;
-                c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS),
-                        userHandle, shortVersion);
-            }
-            final String rt = c == null ? "" : useLine1 ? c.line1 : c.summary;
-            return TextUtils.isEmpty(rt) ? "" : rt;
         }
-        String summary = "";
         for (ZenRule automaticRule : config.automaticRules.values()) {
             if (automaticRule.isAutomaticActive()) {
                 if (summary.isEmpty()) {
@@ -1023,6 +1059,7 @@
                             .getString(R.string.zen_mode_rule_name_combination, summary,
                                     automaticRule.name);
                 }
+
             }
         }
         return summary;
@@ -1038,6 +1075,7 @@
         public ComponentName component;  // optional
         public String id;                // required for automatic (unique)
         public long creationTime;        // required for automatic
+        public String enabler;          // package name, only used for manual rules.
 
         public ZenRule() { }
 
@@ -1055,6 +1093,9 @@
                 id = source.readString();
             }
             creationTime = source.readLong();
+            if (source.readInt() == 1) {
+                enabler = source.readString();
+            }
         }
 
         @Override
@@ -1083,6 +1124,12 @@
                 dest.writeInt(0);
             }
             dest.writeLong(creationTime);
+            if (enabler != null) {
+                dest.writeInt(1);
+                dest.writeString(enabler);
+            } else {
+                dest.writeInt(0);
+            }
         }
 
         @Override
@@ -1097,6 +1144,7 @@
                     .append(",component=").append(component)
                     .append(",id=").append(id)
                     .append(",creationTime=").append(creationTime)
+                    .append(",enabler=").append(enabler)
                     .append(']').toString();
         }
 
@@ -1143,6 +1191,9 @@
             if (creationTime != to.creationTime) {
                 d.addLine(item, "creationTime", creationTime, to.creationTime);
             }
+            if (enabler != to.enabler) {
+                d.addLine(item, "enabler", enabler, to.enabler);
+            }
         }
 
         @Override
@@ -1158,13 +1209,14 @@
                     && Objects.equals(other.condition, condition)
                     && Objects.equals(other.component, component)
                     && Objects.equals(other.id, id)
-                    && other.creationTime == creationTime;
+                    && other.creationTime == creationTime
+                    && Objects.equals(other.enabler, enabler);
         }
 
         @Override
         public int hashCode() {
             return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition,
-                    component, id, creationTime);
+                    component, id, creationTime, enabler);
         }
 
         public boolean isAutomaticActive() {
diff --git a/core/java/android/service/quicksettings/IQSService.aidl b/core/java/android/service/quicksettings/IQSService.aidl
index bf96357..d03ff93 100644
--- a/core/java/android/service/quicksettings/IQSService.aidl
+++ b/core/java/android/service/quicksettings/IQSService.aidl
@@ -23,16 +23,16 @@
  * @hide
  */
 interface IQSService {
-    Tile getTile(in ComponentName component);
-    void updateQsTile(in Tile tile);
-    void updateStatusIcon(in Tile tile, in Icon icon,
+    Tile getTile(in IBinder tile);
+    void updateQsTile(in Tile tile, in IBinder service);
+    void updateStatusIcon(in IBinder tile, in Icon icon,
             String contentDescription);
-    void onShowDialog(in Tile tile);
-    void onStartActivity(in Tile tile);
+    void onShowDialog(in IBinder tile);
+    void onStartActivity(in IBinder tile);
     boolean isLocked();
     boolean isSecure();
-    void startUnlockAndRun(in Tile tile);
+    void startUnlockAndRun(in IBinder tile);
 
-    void onDialogHidden(in Tile tile);
-    void onStartSuccessful(in Tile tile);
+    void onDialogHidden(in IBinder tile);
+    void onStartSuccessful(in IBinder tile);
 }
diff --git a/core/java/android/service/quicksettings/Tile.java b/core/java/android/service/quicksettings/Tile.java
index 3d7d53e..4b81a72 100644
--- a/core/java/android/service/quicksettings/Tile.java
+++ b/core/java/android/service/quicksettings/Tile.java
@@ -15,8 +15,8 @@
  */
 package android.service.quicksettings;
 
-import android.content.ComponentName;
 import android.graphics.drawable.Icon;
+import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.RemoteException;
@@ -59,7 +59,7 @@
      */
     public static final int STATE_ACTIVE = 2;
 
-    private ComponentName mComponentName;
+    private IBinder mToken;
     private Icon mIcon;
     private CharSequence mLabel;
     private CharSequence mContentDescription;
@@ -78,29 +78,15 @@
     /**
      * @hide
      */
-    public Tile(ComponentName componentName) {
-        mComponentName = componentName;
+    public Tile() {
     }
 
     /**
      * @hide
      */
-    public void setService(IQSService service) {
+    public void setService(IQSService service, IBinder stub) {
         mService = service;
-    }
-
-    /**
-     * @hide
-     */
-    public ComponentName getComponentName() {
-        return mComponentName;
-    }
-
-    /**
-     * @hide
-     */
-    public IQSService getQsService() {
-        return mService;
+        mToken = stub;
     }
 
     /**
@@ -193,7 +179,7 @@
      */
     public void updateTile() {
         try {
-            mService.updateQsTile(this);
+            mService.updateQsTile(this, mToken);
         } catch (RemoteException e) {
             Log.e(TAG, "Couldn't update tile");
         }
@@ -201,12 +187,6 @@
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
-        if (mComponentName != null) {
-            dest.writeByte((byte) 1);
-            mComponentName.writeToParcel(dest, flags);
-        } else {
-            dest.writeByte((byte) 0);
-        }
         if (mIcon != null) {
             dest.writeByte((byte) 1);
             mIcon.writeToParcel(dest, flags);
@@ -220,11 +200,6 @@
 
     private void readFromParcel(Parcel source) {
         if (source.readByte() != 0) {
-            mComponentName = ComponentName.CREATOR.createFromParcel(source);
-        } else {
-            mComponentName = null;
-        }
-        if (source.readByte() != 0) {
             mIcon = Icon.CREATOR.createFromParcel(source);
         } else {
             mIcon = null;
diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java
index 50411ab..887f4b6 100644
--- a/core/java/android/service/quicksettings/TileService.java
+++ b/core/java/android/service/quicksettings/TileService.java
@@ -123,6 +123,11 @@
     /**
      * @hide
      */
+    public static final String EXTRA_TOKEN = "token";
+
+    /**
+     * @hide
+     */
     public static final String EXTRA_COMPONENT = "android.service.quicksettings.extra.COMPONENT";
 
     private final H mHandler = new H(Looper.getMainLooper());
@@ -132,6 +137,7 @@
     private IBinder mToken;
     private IQSService mService;
     private Runnable mUnlockRunnable;
+    private IBinder mTileToken;
 
     @Override
     public void onDestroy() {
@@ -197,7 +203,7 @@
     public final void setStatusIcon(Icon icon, String contentDescription) {
         if (mService != null) {
             try {
-                mService.updateStatusIcon(mTile, icon, contentDescription);
+                mService.updateStatusIcon(mTileToken, icon, contentDescription);
             } catch (RemoteException e) {
             }
         }
@@ -224,14 +230,14 @@
             @Override
             public void onViewDetachedFromWindow(View v) {
                 try {
-                    mService.onDialogHidden(getQsTile());
+                    mService.onDialogHidden(mTileToken);
                 } catch (RemoteException e) {
                 }
             }
         });
         dialog.show();
         try {
-            mService.onShowDialog(mTile);
+            mService.onShowDialog(mTileToken);
         } catch (RemoteException e) {
         }
     }
@@ -246,7 +252,7 @@
     public final void unlockAndRun(Runnable runnable) {
         mUnlockRunnable = runnable;
         try {
-            mService.startUnlockAndRun(mTile);
+            mService.startUnlockAndRun(mTileToken);
         } catch (RemoteException e) {
         }
     }
@@ -292,7 +298,7 @@
     public final void startActivityAndCollapse(Intent intent) {
         startActivity(intent);
         try {
-            mService.onStartActivity(mTile);
+            mService.onStartActivity(mTileToken);
         } catch (RemoteException e) {
         }
     }
@@ -311,14 +317,14 @@
     @Override
     public IBinder onBind(Intent intent) {
         mService = IQSService.Stub.asInterface(intent.getIBinderExtra(EXTRA_SERVICE));
+        mTileToken = intent.getIBinderExtra(EXTRA_TOKEN);
         try {
-            ComponentName component = intent.getParcelableExtra(EXTRA_COMPONENT);
-            mTile = mService.getTile(component);
+            mTile = mService.getTile(mTileToken);
         } catch (RemoteException e) {
             throw new RuntimeException("Unable to reach IQSService", e);
         }
         if (mTile != null) {
-            mTile.setService(mService);
+            mTile.setService(mService, mTileToken);
             mHandler.sendEmptyMessage(H.MSG_START_SUCCESS);
         }
         return new IQSTileService.Stub() {
@@ -403,7 +409,7 @@
                     break;
                 case MSG_START_SUCCESS:
                     try {
-                        mService.onStartSuccessful(mTile);
+                        mService.onStartSuccessful(mTileToken);
                     } catch (RemoteException e) {
                     }
                     break;
diff --git a/core/java/android/text/Emoji.java b/core/java/android/text/Emoji.java
index b62cc66..b6d720d 100644
--- a/core/java/android/text/Emoji.java
+++ b/core/java/android/text/Emoji.java
@@ -32,111 +32,112 @@
         0x23EC, 0x23ED, 0x23EE, 0x23EF, 0x23F0, 0x23F1, 0x23F2, 0x23F3, 0x23F8, 0x23F9, 0x23FA,
         0x24C2, 0x25AA, 0x25AB, 0x25B6, 0x25C0, 0x25FB, 0x25FC, 0x25FD, 0x25FE, 0x2600, 0x2601,
         0x2602, 0x2603, 0x2604, 0x260E, 0x2611, 0x2614, 0x2615, 0x2618, 0x261D, 0x2620, 0x2622,
-        0x2623, 0x2626, 0x262A, 0x262E, 0x262F, 0x2638, 0x2639, 0x263A, 0x2648, 0x2649, 0x264A,
-        0x264B, 0x264C, 0x264D, 0x264E, 0x264F, 0x2650, 0x2651, 0x2652, 0x2653, 0x2660, 0x2663,
-        0x2665, 0x2666, 0x2668, 0x267B, 0x267F, 0x2692, 0x2693, 0x2694, 0x2696, 0x2697, 0x2699,
-        0x269B, 0x269C, 0x26A0, 0x26A1, 0x26AA, 0x26AB, 0x26B0, 0x26B1, 0x26BD, 0x26BE, 0x26C4,
-        0x26C5, 0x26C8, 0x26CE, 0x26CF, 0x26D1, 0x26D3, 0x26D4, 0x26E9, 0x26EA, 0x26F0, 0x26F1,
-        0x26F2, 0x26F3, 0x26F4, 0x26F5, 0x26F7, 0x26F8, 0x26F9, 0x26FA, 0x26FD, 0x2702, 0x2705,
-        0x2708, 0x2709, 0x270A, 0x270B, 0x270C, 0x270D, 0x270F, 0x2712, 0x2714, 0x2716, 0x271D,
-        0x2721, 0x2728, 0x2733, 0x2734, 0x2744, 0x2747, 0x274C, 0x274E, 0x2753, 0x2754, 0x2755,
-        0x2757, 0x2763, 0x2764, 0x2795, 0x2796, 0x2797, 0x27A1, 0x27B0, 0x27BF, 0x2934, 0x2935,
-        0x2B05, 0x2B06, 0x2B07, 0x2B1B, 0x2B1C, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299,
-        0x1F004, 0x1F0CF, 0x1F170, 0x1F171, 0x1F17E, 0x1F17F, 0x1F18E, 0x1F191, 0x1F192, 0x1F193,
-        0x1F194, 0x1F195, 0x1F196, 0x1F197, 0x1F198, 0x1F199, 0x1F19A, 0x1F1E6, 0x1F1E7, 0x1F1E8,
-        0x1F1E9, 0x1F1EA, 0x1F1EB, 0x1F1EC, 0x1F1ED, 0x1F1EE, 0x1F1EF, 0x1F1F0, 0x1F1F1, 0x1F1F2,
-        0x1F1F3, 0x1F1F4, 0x1F1F5, 0x1F1F6, 0x1F1F7, 0x1F1F8, 0x1F1F9, 0x1F1FA, 0x1F1FB, 0x1F1FC,
-        0x1F1FD, 0x1F1FE, 0x1F1FF, 0x1F201, 0x1F202, 0x1F21A, 0x1F22F, 0x1F232, 0x1F233, 0x1F234,
-        0x1F235, 0x1F236, 0x1F237, 0x1F238, 0x1F239, 0x1F23A, 0x1F250, 0x1F251, 0x1F300, 0x1F301,
-        0x1F302, 0x1F303, 0x1F304, 0x1F305, 0x1F306, 0x1F307, 0x1F308, 0x1F309, 0x1F30A, 0x1F30B,
-        0x1F30C, 0x1F30D, 0x1F30E, 0x1F30F, 0x1F310, 0x1F311, 0x1F312, 0x1F313, 0x1F314, 0x1F315,
-        0x1F316, 0x1F317, 0x1F318, 0x1F319, 0x1F31A, 0x1F31B, 0x1F31C, 0x1F31D, 0x1F31E, 0x1F31F,
-        0x1F320, 0x1F321, 0x1F324, 0x1F325, 0x1F326, 0x1F327, 0x1F328, 0x1F329, 0x1F32A, 0x1F32B,
-        0x1F32C, 0x1F32D, 0x1F32E, 0x1F32F, 0x1F330, 0x1F331, 0x1F332, 0x1F333, 0x1F334, 0x1F335,
-        0x1F336, 0x1F337, 0x1F338, 0x1F339, 0x1F33A, 0x1F33B, 0x1F33C, 0x1F33D, 0x1F33E, 0x1F33F,
-        0x1F340, 0x1F341, 0x1F342, 0x1F343, 0x1F344, 0x1F345, 0x1F346, 0x1F347, 0x1F348, 0x1F349,
-        0x1F34A, 0x1F34B, 0x1F34C, 0x1F34D, 0x1F34E, 0x1F34F, 0x1F350, 0x1F351, 0x1F352, 0x1F353,
-        0x1F354, 0x1F355, 0x1F356, 0x1F357, 0x1F358, 0x1F359, 0x1F35A, 0x1F35B, 0x1F35C, 0x1F35D,
-        0x1F35E, 0x1F35F, 0x1F360, 0x1F361, 0x1F362, 0x1F363, 0x1F364, 0x1F365, 0x1F366, 0x1F367,
-        0x1F368, 0x1F369, 0x1F36A, 0x1F36B, 0x1F36C, 0x1F36D, 0x1F36E, 0x1F36F, 0x1F370, 0x1F371,
-        0x1F372, 0x1F373, 0x1F374, 0x1F375, 0x1F376, 0x1F377, 0x1F378, 0x1F379, 0x1F37A, 0x1F37B,
-        0x1F37C, 0x1F37D, 0x1F37E, 0x1F37F, 0x1F380, 0x1F381, 0x1F382, 0x1F383, 0x1F384, 0x1F385,
-        0x1F386, 0x1F387, 0x1F388, 0x1F389, 0x1F38A, 0x1F38B, 0x1F38C, 0x1F38D, 0x1F38E, 0x1F38F,
-        0x1F390, 0x1F391, 0x1F392, 0x1F393, 0x1F396, 0x1F397, 0x1F399, 0x1F39A, 0x1F39B, 0x1F39E,
-        0x1F39F, 0x1F3A0, 0x1F3A1, 0x1F3A2, 0x1F3A3, 0x1F3A4, 0x1F3A5, 0x1F3A6, 0x1F3A7, 0x1F3A8,
-        0x1F3A9, 0x1F3AA, 0x1F3AB, 0x1F3AC, 0x1F3AD, 0x1F3AE, 0x1F3AF, 0x1F3B0, 0x1F3B1, 0x1F3B2,
-        0x1F3B3, 0x1F3B4, 0x1F3B5, 0x1F3B6, 0x1F3B7, 0x1F3B8, 0x1F3B9, 0x1F3BA, 0x1F3BB, 0x1F3BC,
-        0x1F3BD, 0x1F3BE, 0x1F3BF, 0x1F3C0, 0x1F3C1, 0x1F3C2, 0x1F3C3, 0x1F3C4, 0x1F3C5, 0x1F3C6,
-        0x1F3C7, 0x1F3C8, 0x1F3C9, 0x1F3CA, 0x1F3CB, 0x1F3CC, 0x1F3CD, 0x1F3CE, 0x1F3CF, 0x1F3D0,
-        0x1F3D1, 0x1F3D2, 0x1F3D3, 0x1F3D4, 0x1F3D5, 0x1F3D6, 0x1F3D7, 0x1F3D8, 0x1F3D9, 0x1F3DA,
-        0x1F3DB, 0x1F3DC, 0x1F3DD, 0x1F3DE, 0x1F3DF, 0x1F3E0, 0x1F3E1, 0x1F3E2, 0x1F3E3, 0x1F3E4,
-        0x1F3E5, 0x1F3E6, 0x1F3E7, 0x1F3E8, 0x1F3E9, 0x1F3EA, 0x1F3EB, 0x1F3EC, 0x1F3ED, 0x1F3EE,
-        0x1F3EF, 0x1F3F0, 0x1F3F3, 0x1F3F4, 0x1F3F5, 0x1F3F7, 0x1F3F8, 0x1F3F9, 0x1F3FA, 0x1F3FB,
-        0x1F3FC, 0x1F3FD, 0x1F3FE, 0x1F3FF, 0x1F400, 0x1F401, 0x1F402, 0x1F403, 0x1F404, 0x1F405,
-        0x1F406, 0x1F407, 0x1F408, 0x1F409, 0x1F40A, 0x1F40B, 0x1F40C, 0x1F40D, 0x1F40E, 0x1F40F,
-        0x1F410, 0x1F411, 0x1F412, 0x1F413, 0x1F414, 0x1F415, 0x1F416, 0x1F417, 0x1F418, 0x1F419,
-        0x1F41A, 0x1F41B, 0x1F41C, 0x1F41D, 0x1F41E, 0x1F41F, 0x1F420, 0x1F421, 0x1F422, 0x1F423,
-        0x1F424, 0x1F425, 0x1F426, 0x1F427, 0x1F428, 0x1F429, 0x1F42A, 0x1F42B, 0x1F42C, 0x1F42D,
-        0x1F42E, 0x1F42F, 0x1F430, 0x1F431, 0x1F432, 0x1F433, 0x1F434, 0x1F435, 0x1F436, 0x1F437,
-        0x1F438, 0x1F439, 0x1F43A, 0x1F43B, 0x1F43C, 0x1F43D, 0x1F43E, 0x1F43F, 0x1F440, 0x1F441,
-        0x1F442, 0x1F443, 0x1F444, 0x1F445, 0x1F446, 0x1F447, 0x1F448, 0x1F449, 0x1F44A, 0x1F44B,
-        0x1F44C, 0x1F44D, 0x1F44E, 0x1F44F, 0x1F450, 0x1F451, 0x1F452, 0x1F453, 0x1F454, 0x1F455,
-        0x1F456, 0x1F457, 0x1F458, 0x1F459, 0x1F45A, 0x1F45B, 0x1F45C, 0x1F45D, 0x1F45E, 0x1F45F,
-        0x1F460, 0x1F461, 0x1F462, 0x1F463, 0x1F464, 0x1F465, 0x1F466, 0x1F467, 0x1F468, 0x1F469,
-        0x1F46A, 0x1F46B, 0x1F46C, 0x1F46D, 0x1F46E, 0x1F46F, 0x1F470, 0x1F471, 0x1F472, 0x1F473,
-        0x1F474, 0x1F475, 0x1F476, 0x1F477, 0x1F478, 0x1F479, 0x1F47A, 0x1F47B, 0x1F47C, 0x1F47D,
-        0x1F47E, 0x1F47F, 0x1F480, 0x1F481, 0x1F482, 0x1F483, 0x1F484, 0x1F485, 0x1F486, 0x1F487,
-        0x1F488, 0x1F489, 0x1F48A, 0x1F48B, 0x1F48C, 0x1F48D, 0x1F48E, 0x1F48F, 0x1F490, 0x1F491,
-        0x1F492, 0x1F493, 0x1F494, 0x1F495, 0x1F496, 0x1F497, 0x1F498, 0x1F499, 0x1F49A, 0x1F49B,
-        0x1F49C, 0x1F49D, 0x1F49E, 0x1F49F, 0x1F4A0, 0x1F4A1, 0x1F4A2, 0x1F4A3, 0x1F4A4, 0x1F4A5,
-        0x1F4A6, 0x1F4A7, 0x1F4A8, 0x1F4A9, 0x1F4AA, 0x1F4AB, 0x1F4AC, 0x1F4AD, 0x1F4AE, 0x1F4AF,
-        0x1F4B0, 0x1F4B1, 0x1F4B2, 0x1F4B3, 0x1F4B4, 0x1F4B5, 0x1F4B6, 0x1F4B7, 0x1F4B8, 0x1F4B9,
-        0x1F4BA, 0x1F4BB, 0x1F4BC, 0x1F4BD, 0x1F4BE, 0x1F4BF, 0x1F4C0, 0x1F4C1, 0x1F4C2, 0x1F4C3,
-        0x1F4C4, 0x1F4C5, 0x1F4C6, 0x1F4C7, 0x1F4C8, 0x1F4C9, 0x1F4CA, 0x1F4CB, 0x1F4CC, 0x1F4CD,
-        0x1F4CE, 0x1F4CF, 0x1F4D0, 0x1F4D1, 0x1F4D2, 0x1F4D3, 0x1F4D4, 0x1F4D5, 0x1F4D6, 0x1F4D7,
-        0x1F4D8, 0x1F4D9, 0x1F4DA, 0x1F4DB, 0x1F4DC, 0x1F4DD, 0x1F4DE, 0x1F4DF, 0x1F4E0, 0x1F4E1,
-        0x1F4E2, 0x1F4E3, 0x1F4E4, 0x1F4E5, 0x1F4E6, 0x1F4E7, 0x1F4E8, 0x1F4E9, 0x1F4EA, 0x1F4EB,
-        0x1F4EC, 0x1F4ED, 0x1F4EE, 0x1F4EF, 0x1F4F0, 0x1F4F1, 0x1F4F2, 0x1F4F3, 0x1F4F4, 0x1F4F5,
-        0x1F4F6, 0x1F4F7, 0x1F4F8, 0x1F4F9, 0x1F4FA, 0x1F4FB, 0x1F4FC, 0x1F4FD, 0x1F4FF, 0x1F500,
-        0x1F501, 0x1F502, 0x1F503, 0x1F504, 0x1F505, 0x1F506, 0x1F507, 0x1F508, 0x1F509, 0x1F50A,
-        0x1F50B, 0x1F50C, 0x1F50D, 0x1F50E, 0x1F50F, 0x1F510, 0x1F511, 0x1F512, 0x1F513, 0x1F514,
-        0x1F515, 0x1F516, 0x1F517, 0x1F518, 0x1F519, 0x1F51A, 0x1F51B, 0x1F51C, 0x1F51D, 0x1F51E,
-        0x1F51F, 0x1F520, 0x1F521, 0x1F522, 0x1F523, 0x1F524, 0x1F525, 0x1F526, 0x1F527, 0x1F528,
-        0x1F529, 0x1F52A, 0x1F52B, 0x1F52C, 0x1F52D, 0x1F52E, 0x1F52F, 0x1F530, 0x1F531, 0x1F532,
-        0x1F533, 0x1F534, 0x1F535, 0x1F536, 0x1F537, 0x1F538, 0x1F539, 0x1F53A, 0x1F53B, 0x1F53C,
-        0x1F53D, 0x1F549, 0x1F54A, 0x1F54B, 0x1F54C, 0x1F54D, 0x1F54E, 0x1F550, 0x1F551, 0x1F552,
-        0x1F553, 0x1F554, 0x1F555, 0x1F556, 0x1F557, 0x1F558, 0x1F559, 0x1F55A, 0x1F55B, 0x1F55C,
-        0x1F55D, 0x1F55E, 0x1F55F, 0x1F560, 0x1F561, 0x1F562, 0x1F563, 0x1F564, 0x1F565, 0x1F566,
-        0x1F567, 0x1F56F, 0x1F570, 0x1F573, 0x1F574, 0x1F575, 0x1F576, 0x1F577, 0x1F578, 0x1F579,
-        0x1F57A, 0x1F587, 0x1F58A, 0x1F58B, 0x1F58C, 0x1F58D, 0x1F590, 0x1F595, 0x1F596, 0x1F5A4,
-        0x1F5A5, 0x1F5A8, 0x1F5B1, 0x1F5B2, 0x1F5BC, 0x1F5C2, 0x1F5C3, 0x1F5C4, 0x1F5D1, 0x1F5D2,
-        0x1F5D3, 0x1F5DC, 0x1F5DD, 0x1F5DE, 0x1F5E1, 0x1F5E3, 0x1F5E8, 0x1F5EF, 0x1F5F3, 0x1F5FA,
-        0x1F5FB, 0x1F5FC, 0x1F5FD, 0x1F5FE, 0x1F5FF, 0x1F600, 0x1F601, 0x1F602, 0x1F603, 0x1F604,
-        0x1F605, 0x1F606, 0x1F607, 0x1F608, 0x1F609, 0x1F60A, 0x1F60B, 0x1F60C, 0x1F60D, 0x1F60E,
-        0x1F60F, 0x1F610, 0x1F611, 0x1F612, 0x1F613, 0x1F614, 0x1F615, 0x1F616, 0x1F617, 0x1F618,
-        0x1F619, 0x1F61A, 0x1F61B, 0x1F61C, 0x1F61D, 0x1F61E, 0x1F61F, 0x1F620, 0x1F621, 0x1F622,
-        0x1F623, 0x1F624, 0x1F625, 0x1F626, 0x1F627, 0x1F628, 0x1F629, 0x1F62A, 0x1F62B, 0x1F62C,
-        0x1F62D, 0x1F62E, 0x1F62F, 0x1F630, 0x1F631, 0x1F632, 0x1F633, 0x1F634, 0x1F635, 0x1F636,
-        0x1F637, 0x1F638, 0x1F639, 0x1F63A, 0x1F63B, 0x1F63C, 0x1F63D, 0x1F63E, 0x1F63F, 0x1F640,
-        0x1F641, 0x1F642, 0x1F643, 0x1F644, 0x1F645, 0x1F646, 0x1F647, 0x1F648, 0x1F649, 0x1F64A,
-        0x1F64B, 0x1F64C, 0x1F64D, 0x1F64E, 0x1F64F, 0x1F680, 0x1F681, 0x1F682, 0x1F683, 0x1F684,
-        0x1F685, 0x1F686, 0x1F687, 0x1F688, 0x1F689, 0x1F68A, 0x1F68B, 0x1F68C, 0x1F68D, 0x1F68E,
-        0x1F68F, 0x1F690, 0x1F691, 0x1F692, 0x1F693, 0x1F694, 0x1F695, 0x1F696, 0x1F697, 0x1F698,
-        0x1F699, 0x1F69A, 0x1F69B, 0x1F69C, 0x1F69D, 0x1F69E, 0x1F69F, 0x1F6A0, 0x1F6A1, 0x1F6A2,
-        0x1F6A3, 0x1F6A4, 0x1F6A5, 0x1F6A6, 0x1F6A7, 0x1F6A8, 0x1F6A9, 0x1F6AA, 0x1F6AB, 0x1F6AC,
-        0x1F6AD, 0x1F6AE, 0x1F6AF, 0x1F6B0, 0x1F6B1, 0x1F6B2, 0x1F6B3, 0x1F6B4, 0x1F6B5, 0x1F6B6,
-        0x1F6B7, 0x1F6B8, 0x1F6B9, 0x1F6BA, 0x1F6BB, 0x1F6BC, 0x1F6BD, 0x1F6BE, 0x1F6BF, 0x1F6C0,
-        0x1F6C1, 0x1F6C2, 0x1F6C3, 0x1F6C4, 0x1F6C5, 0x1F6CB, 0x1F6CC, 0x1F6CD, 0x1F6CE, 0x1F6CF,
-        0x1F6D0, 0x1F6D1, 0x1F6D2, 0x1F6E0, 0x1F6E1, 0x1F6E2, 0x1F6E3, 0x1F6E4, 0x1F6E5, 0x1F6E9,
-        0x1F6EB, 0x1F6EC, 0x1F6F0, 0x1F6F3, 0x1F6F4, 0x1F6F5, 0x1F6F6, 0x1F910, 0x1F911, 0x1F912,
-        0x1F913, 0x1F914, 0x1F915, 0x1F916, 0x1F917, 0x1F918, 0x1F919, 0x1F91A, 0x1F91B, 0x1F91C,
-        0x1F91D, 0x1F91E, 0x1F920, 0x1F921, 0x1F922, 0x1F923, 0x1F924, 0x1F925, 0x1F926, 0x1F927,
-        0x1F930, 0x1F933, 0x1F934, 0x1F935, 0x1F936, 0x1F937, 0x1F938, 0x1F939, 0x1F93A, 0x1F93B,
-        0x1F93C, 0x1F93D, 0x1F93E, 0x1F940, 0x1F941, 0x1F942, 0x1F943, 0x1F944, 0x1F945, 0x1F946,
-        0x1F947, 0x1F948, 0x1F949, 0x1F94A, 0x1F94B, 0x1F950, 0x1F951, 0x1F952, 0x1F953, 0x1F954,
-        0x1F955, 0x1F956, 0x1F957, 0x1F958, 0x1F959, 0x1F95A, 0x1F95B, 0x1F95C, 0x1F95D, 0x1F95E,
-        0x1F980, 0x1F981, 0x1F982, 0x1F983, 0x1F984, 0x1F985, 0x1F986, 0x1F987, 0x1F988, 0x1F989,
-        0x1F98A, 0x1F98B, 0x1F98C, 0x1F98D, 0x1F98E, 0x1F98F, 0x1F990, 0x1F991, 0x1F9C0
+        0x2623, 0x2626, 0x262A, 0x262E, 0x262F, 0x2638, 0x2639, 0x263A, 0x2640, 0x2642, 0x2648,
+        0x2649, 0x264A, 0x264B, 0x264C, 0x264D, 0x264E, 0x264F, 0x2650, 0x2651, 0x2652, 0x2653,
+        0x2660, 0x2663, 0x2665, 0x2666, 0x2668, 0x267B, 0x267F, 0x2692, 0x2693, 0x2694, 0x2695,
+        0x2696, 0x2697, 0x2699, 0x269B, 0x269C, 0x26A0, 0x26A1, 0x26AA, 0x26AB, 0x26B0, 0x26B1,
+        0x26BD, 0x26BE, 0x26C4, 0x26C5, 0x26C8, 0x26CE, 0x26CF, 0x26D1, 0x26D3, 0x26D4, 0x26E9,
+        0x26EA, 0x26F0, 0x26F1, 0x26F2, 0x26F3, 0x26F4, 0x26F5, 0x26F7, 0x26F8, 0x26F9, 0x26FA,
+        0x26FD, 0x2702, 0x2705, 0x2708, 0x2709, 0x270A, 0x270B, 0x270C, 0x270D, 0x270F, 0x2712,
+        0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2733, 0x2734, 0x2744, 0x2747, 0x274C, 0x274E,
+        0x2753, 0x2754, 0x2755, 0x2757, 0x2763, 0x2764, 0x2795, 0x2796, 0x2797, 0x27A1, 0x27B0,
+        0x27BF, 0x2934, 0x2935, 0x2B05, 0x2B06, 0x2B07, 0x2B1B, 0x2B1C, 0x2B50, 0x2B55, 0x3030,
+        0x303D, 0x3297, 0x3299, 0x1F004, 0x1F0CF, 0x1F170, 0x1F171, 0x1F17E, 0x1F17F, 0x1F18E,
+        0x1F191, 0x1F192, 0x1F193, 0x1F194, 0x1F195, 0x1F196, 0x1F197, 0x1F198, 0x1F199, 0x1F19A,
+        0x1F1E6, 0x1F1E7, 0x1F1E8, 0x1F1E9, 0x1F1EA, 0x1F1EB, 0x1F1EC, 0x1F1ED, 0x1F1EE, 0x1F1EF,
+        0x1F1F0, 0x1F1F1, 0x1F1F2, 0x1F1F3, 0x1F1F4, 0x1F1F5, 0x1F1F6, 0x1F1F7, 0x1F1F8, 0x1F1F9,
+        0x1F1FA, 0x1F1FB, 0x1F1FC, 0x1F1FD, 0x1F1FE, 0x1F1FF, 0x1F201, 0x1F202, 0x1F21A, 0x1F22F,
+        0x1F232, 0x1F233, 0x1F234, 0x1F235, 0x1F236, 0x1F237, 0x1F238, 0x1F239, 0x1F23A, 0x1F250,
+        0x1F251, 0x1F300, 0x1F301, 0x1F302, 0x1F303, 0x1F304, 0x1F305, 0x1F306, 0x1F307, 0x1F308,
+        0x1F309, 0x1F30A, 0x1F30B, 0x1F30C, 0x1F30D, 0x1F30E, 0x1F30F, 0x1F310, 0x1F311, 0x1F312,
+        0x1F313, 0x1F314, 0x1F315, 0x1F316, 0x1F317, 0x1F318, 0x1F319, 0x1F31A, 0x1F31B, 0x1F31C,
+        0x1F31D, 0x1F31E, 0x1F31F, 0x1F320, 0x1F321, 0x1F324, 0x1F325, 0x1F326, 0x1F327, 0x1F328,
+        0x1F329, 0x1F32A, 0x1F32B, 0x1F32C, 0x1F32D, 0x1F32E, 0x1F32F, 0x1F330, 0x1F331, 0x1F332,
+        0x1F333, 0x1F334, 0x1F335, 0x1F336, 0x1F337, 0x1F338, 0x1F339, 0x1F33A, 0x1F33B, 0x1F33C,
+        0x1F33D, 0x1F33E, 0x1F33F, 0x1F340, 0x1F341, 0x1F342, 0x1F343, 0x1F344, 0x1F345, 0x1F346,
+        0x1F347, 0x1F348, 0x1F349, 0x1F34A, 0x1F34B, 0x1F34C, 0x1F34D, 0x1F34E, 0x1F34F, 0x1F350,
+        0x1F351, 0x1F352, 0x1F353, 0x1F354, 0x1F355, 0x1F356, 0x1F357, 0x1F358, 0x1F359, 0x1F35A,
+        0x1F35B, 0x1F35C, 0x1F35D, 0x1F35E, 0x1F35F, 0x1F360, 0x1F361, 0x1F362, 0x1F363, 0x1F364,
+        0x1F365, 0x1F366, 0x1F367, 0x1F368, 0x1F369, 0x1F36A, 0x1F36B, 0x1F36C, 0x1F36D, 0x1F36E,
+        0x1F36F, 0x1F370, 0x1F371, 0x1F372, 0x1F373, 0x1F374, 0x1F375, 0x1F376, 0x1F377, 0x1F378,
+        0x1F379, 0x1F37A, 0x1F37B, 0x1F37C, 0x1F37D, 0x1F37E, 0x1F37F, 0x1F380, 0x1F381, 0x1F382,
+        0x1F383, 0x1F384, 0x1F385, 0x1F386, 0x1F387, 0x1F388, 0x1F389, 0x1F38A, 0x1F38B, 0x1F38C,
+        0x1F38D, 0x1F38E, 0x1F38F, 0x1F390, 0x1F391, 0x1F392, 0x1F393, 0x1F396, 0x1F397, 0x1F399,
+        0x1F39A, 0x1F39B, 0x1F39E, 0x1F39F, 0x1F3A0, 0x1F3A1, 0x1F3A2, 0x1F3A3, 0x1F3A4, 0x1F3A5,
+        0x1F3A6, 0x1F3A7, 0x1F3A8, 0x1F3A9, 0x1F3AA, 0x1F3AB, 0x1F3AC, 0x1F3AD, 0x1F3AE, 0x1F3AF,
+        0x1F3B0, 0x1F3B1, 0x1F3B2, 0x1F3B3, 0x1F3B4, 0x1F3B5, 0x1F3B6, 0x1F3B7, 0x1F3B8, 0x1F3B9,
+        0x1F3BA, 0x1F3BB, 0x1F3BC, 0x1F3BD, 0x1F3BE, 0x1F3BF, 0x1F3C0, 0x1F3C1, 0x1F3C2, 0x1F3C3,
+        0x1F3C4, 0x1F3C5, 0x1F3C6, 0x1F3C7, 0x1F3C8, 0x1F3C9, 0x1F3CA, 0x1F3CB, 0x1F3CC, 0x1F3CD,
+        0x1F3CE, 0x1F3CF, 0x1F3D0, 0x1F3D1, 0x1F3D2, 0x1F3D3, 0x1F3D4, 0x1F3D5, 0x1F3D6, 0x1F3D7,
+        0x1F3D8, 0x1F3D9, 0x1F3DA, 0x1F3DB, 0x1F3DC, 0x1F3DD, 0x1F3DE, 0x1F3DF, 0x1F3E0, 0x1F3E1,
+        0x1F3E2, 0x1F3E3, 0x1F3E4, 0x1F3E5, 0x1F3E6, 0x1F3E7, 0x1F3E8, 0x1F3E9, 0x1F3EA, 0x1F3EB,
+        0x1F3EC, 0x1F3ED, 0x1F3EE, 0x1F3EF, 0x1F3F0, 0x1F3F3, 0x1F3F4, 0x1F3F5, 0x1F3F7, 0x1F3F8,
+        0x1F3F9, 0x1F3FA, 0x1F3FB, 0x1F3FC, 0x1F3FD, 0x1F3FE, 0x1F3FF, 0x1F400, 0x1F401, 0x1F402,
+        0x1F403, 0x1F404, 0x1F405, 0x1F406, 0x1F407, 0x1F408, 0x1F409, 0x1F40A, 0x1F40B, 0x1F40C,
+        0x1F40D, 0x1F40E, 0x1F40F, 0x1F410, 0x1F411, 0x1F412, 0x1F413, 0x1F414, 0x1F415, 0x1F416,
+        0x1F417, 0x1F418, 0x1F419, 0x1F41A, 0x1F41B, 0x1F41C, 0x1F41D, 0x1F41E, 0x1F41F, 0x1F420,
+        0x1F421, 0x1F422, 0x1F423, 0x1F424, 0x1F425, 0x1F426, 0x1F427, 0x1F428, 0x1F429, 0x1F42A,
+        0x1F42B, 0x1F42C, 0x1F42D, 0x1F42E, 0x1F42F, 0x1F430, 0x1F431, 0x1F432, 0x1F433, 0x1F434,
+        0x1F435, 0x1F436, 0x1F437, 0x1F438, 0x1F439, 0x1F43A, 0x1F43B, 0x1F43C, 0x1F43D, 0x1F43E,
+        0x1F43F, 0x1F440, 0x1F441, 0x1F442, 0x1F443, 0x1F444, 0x1F445, 0x1F446, 0x1F447, 0x1F448,
+        0x1F449, 0x1F44A, 0x1F44B, 0x1F44C, 0x1F44D, 0x1F44E, 0x1F44F, 0x1F450, 0x1F451, 0x1F452,
+        0x1F453, 0x1F454, 0x1F455, 0x1F456, 0x1F457, 0x1F458, 0x1F459, 0x1F45A, 0x1F45B, 0x1F45C,
+        0x1F45D, 0x1F45E, 0x1F45F, 0x1F460, 0x1F461, 0x1F462, 0x1F463, 0x1F464, 0x1F465, 0x1F466,
+        0x1F467, 0x1F468, 0x1F469, 0x1F46A, 0x1F46B, 0x1F46C, 0x1F46D, 0x1F46E, 0x1F46F, 0x1F470,
+        0x1F471, 0x1F472, 0x1F473, 0x1F474, 0x1F475, 0x1F476, 0x1F477, 0x1F478, 0x1F479, 0x1F47A,
+        0x1F47B, 0x1F47C, 0x1F47D, 0x1F47E, 0x1F47F, 0x1F480, 0x1F481, 0x1F482, 0x1F483, 0x1F484,
+        0x1F485, 0x1F486, 0x1F487, 0x1F488, 0x1F489, 0x1F48A, 0x1F48B, 0x1F48C, 0x1F48D, 0x1F48E,
+        0x1F48F, 0x1F490, 0x1F491, 0x1F492, 0x1F493, 0x1F494, 0x1F495, 0x1F496, 0x1F497, 0x1F498,
+        0x1F499, 0x1F49A, 0x1F49B, 0x1F49C, 0x1F49D, 0x1F49E, 0x1F49F, 0x1F4A0, 0x1F4A1, 0x1F4A2,
+        0x1F4A3, 0x1F4A4, 0x1F4A5, 0x1F4A6, 0x1F4A7, 0x1F4A8, 0x1F4A9, 0x1F4AA, 0x1F4AB, 0x1F4AC,
+        0x1F4AD, 0x1F4AE, 0x1F4AF, 0x1F4B0, 0x1F4B1, 0x1F4B2, 0x1F4B3, 0x1F4B4, 0x1F4B5, 0x1F4B6,
+        0x1F4B7, 0x1F4B8, 0x1F4B9, 0x1F4BA, 0x1F4BB, 0x1F4BC, 0x1F4BD, 0x1F4BE, 0x1F4BF, 0x1F4C0,
+        0x1F4C1, 0x1F4C2, 0x1F4C3, 0x1F4C4, 0x1F4C5, 0x1F4C6, 0x1F4C7, 0x1F4C8, 0x1F4C9, 0x1F4CA,
+        0x1F4CB, 0x1F4CC, 0x1F4CD, 0x1F4CE, 0x1F4CF, 0x1F4D0, 0x1F4D1, 0x1F4D2, 0x1F4D3, 0x1F4D4,
+        0x1F4D5, 0x1F4D6, 0x1F4D7, 0x1F4D8, 0x1F4D9, 0x1F4DA, 0x1F4DB, 0x1F4DC, 0x1F4DD, 0x1F4DE,
+        0x1F4DF, 0x1F4E0, 0x1F4E1, 0x1F4E2, 0x1F4E3, 0x1F4E4, 0x1F4E5, 0x1F4E6, 0x1F4E7, 0x1F4E8,
+        0x1F4E9, 0x1F4EA, 0x1F4EB, 0x1F4EC, 0x1F4ED, 0x1F4EE, 0x1F4EF, 0x1F4F0, 0x1F4F1, 0x1F4F2,
+        0x1F4F3, 0x1F4F4, 0x1F4F5, 0x1F4F6, 0x1F4F7, 0x1F4F8, 0x1F4F9, 0x1F4FA, 0x1F4FB, 0x1F4FC,
+        0x1F4FD, 0x1F4FF, 0x1F500, 0x1F501, 0x1F502, 0x1F503, 0x1F504, 0x1F505, 0x1F506, 0x1F507,
+        0x1F508, 0x1F509, 0x1F50A, 0x1F50B, 0x1F50C, 0x1F50D, 0x1F50E, 0x1F50F, 0x1F510, 0x1F511,
+        0x1F512, 0x1F513, 0x1F514, 0x1F515, 0x1F516, 0x1F517, 0x1F518, 0x1F519, 0x1F51A, 0x1F51B,
+        0x1F51C, 0x1F51D, 0x1F51E, 0x1F51F, 0x1F520, 0x1F521, 0x1F522, 0x1F523, 0x1F524, 0x1F525,
+        0x1F526, 0x1F527, 0x1F528, 0x1F529, 0x1F52A, 0x1F52B, 0x1F52C, 0x1F52D, 0x1F52E, 0x1F52F,
+        0x1F530, 0x1F531, 0x1F532, 0x1F533, 0x1F534, 0x1F535, 0x1F536, 0x1F537, 0x1F538, 0x1F539,
+        0x1F53A, 0x1F53B, 0x1F53C, 0x1F53D, 0x1F549, 0x1F54A, 0x1F54B, 0x1F54C, 0x1F54D, 0x1F54E,
+        0x1F550, 0x1F551, 0x1F552, 0x1F553, 0x1F554, 0x1F555, 0x1F556, 0x1F557, 0x1F558, 0x1F559,
+        0x1F55A, 0x1F55B, 0x1F55C, 0x1F55D, 0x1F55E, 0x1F55F, 0x1F560, 0x1F561, 0x1F562, 0x1F563,
+        0x1F564, 0x1F565, 0x1F566, 0x1F567, 0x1F56F, 0x1F570, 0x1F573, 0x1F574, 0x1F575, 0x1F576,
+        0x1F577, 0x1F578, 0x1F579, 0x1F57A, 0x1F587, 0x1F58A, 0x1F58B, 0x1F58C, 0x1F58D, 0x1F590,
+        0x1F595, 0x1F596, 0x1F5A4, 0x1F5A5, 0x1F5A8, 0x1F5B1, 0x1F5B2, 0x1F5BC, 0x1F5C2, 0x1F5C3,
+        0x1F5C4, 0x1F5D1, 0x1F5D2, 0x1F5D3, 0x1F5DC, 0x1F5DD, 0x1F5DE, 0x1F5E1, 0x1F5E3, 0x1F5E8,
+        0x1F5EF, 0x1F5F3, 0x1F5FA, 0x1F5FB, 0x1F5FC, 0x1F5FD, 0x1F5FE, 0x1F5FF, 0x1F600, 0x1F601,
+        0x1F602, 0x1F603, 0x1F604, 0x1F605, 0x1F606, 0x1F607, 0x1F608, 0x1F609, 0x1F60A, 0x1F60B,
+        0x1F60C, 0x1F60D, 0x1F60E, 0x1F60F, 0x1F610, 0x1F611, 0x1F612, 0x1F613, 0x1F614, 0x1F615,
+        0x1F616, 0x1F617, 0x1F618, 0x1F619, 0x1F61A, 0x1F61B, 0x1F61C, 0x1F61D, 0x1F61E, 0x1F61F,
+        0x1F620, 0x1F621, 0x1F622, 0x1F623, 0x1F624, 0x1F625, 0x1F626, 0x1F627, 0x1F628, 0x1F629,
+        0x1F62A, 0x1F62B, 0x1F62C, 0x1F62D, 0x1F62E, 0x1F62F, 0x1F630, 0x1F631, 0x1F632, 0x1F633,
+        0x1F634, 0x1F635, 0x1F636, 0x1F637, 0x1F638, 0x1F639, 0x1F63A, 0x1F63B, 0x1F63C, 0x1F63D,
+        0x1F63E, 0x1F63F, 0x1F640, 0x1F641, 0x1F642, 0x1F643, 0x1F644, 0x1F645, 0x1F646, 0x1F647,
+        0x1F648, 0x1F649, 0x1F64A, 0x1F64B, 0x1F64C, 0x1F64D, 0x1F64E, 0x1F64F, 0x1F680, 0x1F681,
+        0x1F682, 0x1F683, 0x1F684, 0x1F685, 0x1F686, 0x1F687, 0x1F688, 0x1F689, 0x1F68A, 0x1F68B,
+        0x1F68C, 0x1F68D, 0x1F68E, 0x1F68F, 0x1F690, 0x1F691, 0x1F692, 0x1F693, 0x1F694, 0x1F695,
+        0x1F696, 0x1F697, 0x1F698, 0x1F699, 0x1F69A, 0x1F69B, 0x1F69C, 0x1F69D, 0x1F69E, 0x1F69F,
+        0x1F6A0, 0x1F6A1, 0x1F6A2, 0x1F6A3, 0x1F6A4, 0x1F6A5, 0x1F6A6, 0x1F6A7, 0x1F6A8, 0x1F6A9,
+        0x1F6AA, 0x1F6AB, 0x1F6AC, 0x1F6AD, 0x1F6AE, 0x1F6AF, 0x1F6B0, 0x1F6B1, 0x1F6B2, 0x1F6B3,
+        0x1F6B4, 0x1F6B5, 0x1F6B6, 0x1F6B7, 0x1F6B8, 0x1F6B9, 0x1F6BA, 0x1F6BB, 0x1F6BC, 0x1F6BD,
+        0x1F6BE, 0x1F6BF, 0x1F6C0, 0x1F6C1, 0x1F6C2, 0x1F6C3, 0x1F6C4, 0x1F6C5, 0x1F6CB, 0x1F6CC,
+        0x1F6CD, 0x1F6CE, 0x1F6CF, 0x1F6D0, 0x1F6D1, 0x1F6D2, 0x1F6E0, 0x1F6E1, 0x1F6E2, 0x1F6E3,
+        0x1F6E4, 0x1F6E5, 0x1F6E9, 0x1F6EB, 0x1F6EC, 0x1F6F0, 0x1F6F3, 0x1F6F4, 0x1F6F5, 0x1F6F6,
+        0x1F910, 0x1F911, 0x1F912, 0x1F913, 0x1F914, 0x1F915, 0x1F916, 0x1F917, 0x1F918, 0x1F919,
+        0x1F91A, 0x1F91B, 0x1F91C, 0x1F91D, 0x1F91E, 0x1F920, 0x1F921, 0x1F922, 0x1F923, 0x1F924,
+        0x1F925, 0x1F926, 0x1F927, 0x1F930, 0x1F933, 0x1F934, 0x1F935, 0x1F936, 0x1F937, 0x1F938,
+        0x1F939, 0x1F93A, 0x1F93B, 0x1F93C, 0x1F93D, 0x1F93E, 0x1F940, 0x1F941, 0x1F942, 0x1F943,
+        0x1F944, 0x1F945, 0x1F946, 0x1F947, 0x1F948, 0x1F949, 0x1F94A, 0x1F94B, 0x1F950, 0x1F951,
+        0x1F952, 0x1F953, 0x1F954, 0x1F955, 0x1F956, 0x1F957, 0x1F958, 0x1F959, 0x1F95A, 0x1F95B,
+        0x1F95C, 0x1F95D, 0x1F95E, 0x1F980, 0x1F981, 0x1F982, 0x1F983, 0x1F984, 0x1F985, 0x1F986,
+        0x1F987, 0x1F988, 0x1F989, 0x1F98A, 0x1F98B, 0x1F98C, 0x1F98D, 0x1F98E, 0x1F98F, 0x1F990,
+        0x1F991, 0x1F9C0
     };
 
     // See http://www.unicode.org/Public/emoji/3.0/emoji-data.txt
diff --git a/core/java/android/util/LongSparseArray.java b/core/java/android/util/LongSparseArray.java
index 6b45ff4..58ad2fd 100644
--- a/core/java/android/util/LongSparseArray.java
+++ b/core/java/android/util/LongSparseArray.java
@@ -299,10 +299,39 @@
             gc();
         }
 
-        for (int i = 0; i < mSize; i++)
-            if (mValues[i] == value)
+        for (int i = 0; i < mSize; i++) {
+            if (mValues[i] == value) {
                 return i;
+            }
+        }
+        return -1;
+    }
 
+    /**
+     * Returns an index for which {@link #valueAt} would return the
+     * specified key, or a negative number if no keys map to the
+     * specified value.
+     * <p>Beware that this is a linear search, unlike lookups by key,
+     * and that multiple keys can map to the same value and this will
+     * find only one of them.
+     * <p>Note also that this method uses {@code equals} unlike {@code indexOfValue}.
+     */
+    public int indexOfValueByValue(E value) {
+        if (mGarbage) {
+            gc();
+        }
+
+        for (int i = 0; i < mSize; i++) {
+            if (value == null) {
+                if (mValues[i] == null) {
+                    return i;
+                }
+            } else {
+                if (value.equals(mValues[i])) {
+                    return i;
+                }
+            }
+        }
         return -1;
     }
 
diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java
index 34e6f04..c766660 100644
--- a/core/java/android/util/SparseArray.java
+++ b/core/java/android/util/SparseArray.java
@@ -346,14 +346,44 @@
             gc();
         }
 
-        for (int i = 0; i < mSize; i++)
-            if (mValues[i] == value)
+        for (int i = 0; i < mSize; i++) {
+            if (mValues[i] == value) {
                 return i;
+            }
+        }
 
         return -1;
     }
 
     /**
+     * Returns an index for which {@link #valueAt} would return the
+     * specified key, or a negative number if no keys map to the
+     * specified value.
+     * <p>Beware that this is a linear search, unlike lookups by key,
+     * and that multiple keys can map to the same value and this will
+     * find only one of them.
+     * <p>Note also that this method uses {@code equals} unlike {@code indexOfValue}.
+     */
+    public int indexOfValueByValue(E value) {
+        if (mGarbage) {
+            gc();
+        }
+
+        for (int i = 0; i < mSize; i++) {
+            if (value == null) {
+                if (mValues[i] == null) {
+                    return i;
+                }
+            } else {
+                if (value.equals(mValues[i])) {
+                    return i;
+                }
+            }
+        }
+        return -1;
+    }
+
+    /**
      * Removes all key-value mappings from this SparseArray.
      */
     public void clear() {
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 8c49009..899ae49 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -36,7 +36,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
 
-import static android.Manifest.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM;
+import static android.Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE;
 
 /**
  * Provides information about the size and density of a logical display.
@@ -284,6 +284,27 @@
      */
     public static final int STATE_DOZE_SUSPEND = 4;
 
+    /* The color mode constants defined below must be kept in sync with the ones in
+     * system/graphics.h */
+
+    /**
+     * Display color mode: The current color mode is unknown or invalid.
+     * @hide
+     */
+    public static final int COLOR_MODE_INVALID = -1;
+
+    /**
+     * Display color mode: The default or native gamut of the display.
+     * @hide
+     */
+    public static final int COLOR_MODE_DEFAULT = 0;
+
+    /**
+     * Display color mode: SRGB
+     * @hide
+     */
+    public static final int COLOR_MODE_SRGB = 7;
+
     /**
      * Internal method to create a display.
      * Applications should use {@link android.view.WindowManager#getDefaultDisplay()}
@@ -696,33 +717,22 @@
     }
 
     /**
-     * Request the display applies a color transform.
+     * Request the display applies a color mode.
      * @hide
      */
-    @RequiresPermission(CONFIGURE_DISPLAY_COLOR_TRANSFORM)
-    public void requestColorTransform(ColorTransform colorTransform) {
-        mGlobal.requestColorTransform(mDisplayId, colorTransform.getId());
+    @RequiresPermission(CONFIGURE_DISPLAY_COLOR_MODE)
+    public void requestColorMode(int colorMode) {
+        mGlobal.requestColorMode(mDisplayId, colorMode);
     }
 
     /**
-     * Returns the active color transform of this display
+     * Returns the active color mode of this display
      * @hide
      */
-    public ColorTransform getColorTransform() {
+    public int getColorMode() {
         synchronized (this) {
             updateDisplayInfoLocked();
-            return mDisplayInfo.getColorTransform();
-        }
-    }
-
-    /**
-     * Returns the default color transform of this display
-     * @hide
-     */
-    public ColorTransform getDefaultColorTransform() {
-        synchronized (this) {
-            updateDisplayInfoLocked();
-            return mDisplayInfo.getDefaultColorTransform();
+            return mDisplayInfo.colorMode;
         }
     }
 
@@ -737,14 +747,14 @@
     }
 
     /**
-     * Gets the supported color transforms of this device.
+     * Gets the supported color modes of this device.
      * @hide
      */
-    public ColorTransform[] getSupportedColorTransforms() {
+    public int[] getSupportedColorModes() {
         synchronized (this) {
             updateDisplayInfoLocked();
-            ColorTransform[] transforms = mDisplayInfo.supportedColorTransforms;
-            return Arrays.copyOf(transforms, transforms.length);
+            int[] colorModes = mDisplayInfo.supportedColorModes;
+            return Arrays.copyOf(colorModes, colorModes.length);
         }
     }
 
@@ -1263,89 +1273,4 @@
             return 0;
         }
     }
-
-    /**
-     * A color transform supported by a given display.
-     *
-     * @see Display#getSupportedColorTransforms()
-     * @hide
-     */
-    public static final class ColorTransform implements Parcelable {
-        public static final ColorTransform[] EMPTY_ARRAY = new ColorTransform[0];
-
-        private final int mId;
-        private final int mColorTransform;
-
-        public ColorTransform(int id, int colorTransform) {
-            mId = id;
-            mColorTransform = colorTransform;
-        }
-
-        public int getId() {
-            return mId;
-        }
-
-        public int getColorTransform() {
-            return mColorTransform;
-        }
-
-        @Override
-        public boolean equals(Object other) {
-            if (this == other) {
-                return true;
-            }
-            if (!(other instanceof ColorTransform)) {
-                return false;
-            }
-            ColorTransform that = (ColorTransform) other;
-            return mId == that.mId
-                && mColorTransform == that.mColorTransform;
-        }
-
-        @Override
-        public int hashCode() {
-            int hash = 1;
-            hash = hash * 17 + mId;
-            hash = hash * 17 + mColorTransform;
-            return hash;
-        }
-
-        @Override
-        public String toString() {
-            return new StringBuilder("{")
-                    .append("id=").append(mId)
-                    .append(", colorTransform=").append(mColorTransform)
-                    .append("}")
-                    .toString();
-        }
-
-        @Override
-        public int describeContents() {
-            return 0;
-        }
-
-        private ColorTransform(Parcel in) {
-            this(in.readInt(), in.readInt());
-        }
-
-        @Override
-        public void writeToParcel(Parcel out, int parcelableFlags) {
-            out.writeInt(mId);
-            out.writeInt(mColorTransform);
-        }
-
-        @SuppressWarnings("hiding")
-        public static final Parcelable.Creator<ColorTransform> CREATOR
-                = new Parcelable.Creator<ColorTransform>() {
-            @Override
-            public ColorTransform createFromParcel(Parcel in) {
-                return new ColorTransform(in);
-            }
-
-            @Override
-            public ColorTransform[] newArray(int size) {
-                return new ColorTransform[size];
-            }
-        };
-    }
 }
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index 8aeeffd..49c3c46 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -169,14 +169,11 @@
      */
     public Display.Mode[] supportedModes = Display.Mode.EMPTY_ARRAY;
 
-    /** The active color transform. */
-    public int colorTransformId;
+    /** The active color mode. */
+    public int colorMode;
 
-    /** The default color transform. */
-    public int defaultColorTransformId;
-
-    /** The list of supported color transforms */
-    public Display.ColorTransform[] supportedColorTransforms = Display.ColorTransform.EMPTY_ARRAY;
+    /** The list of supported color modes */
+    public int[] supportedColorModes = { Display.COLOR_MODE_DEFAULT };
 
     /** The display's HDR capabilities */
     public Display.HdrCapabilities hdrCapabilities;
@@ -291,8 +288,8 @@
                 && rotation == other.rotation
                 && modeId == other.modeId
                 && defaultModeId == other.defaultModeId
-                && colorTransformId == other.colorTransformId
-                && defaultColorTransformId == other.defaultColorTransformId
+                && colorMode == other.colorMode
+                && Objects.equal(supportedColorModes, other.supportedColorModes)
                 && Objects.equal(hdrCapabilities, other.hdrCapabilities)
                 && logicalDensityDpi == other.logicalDensityDpi
                 && physicalXDpi == other.physicalXDpi
@@ -332,10 +329,9 @@
         modeId = other.modeId;
         defaultModeId = other.defaultModeId;
         supportedModes = Arrays.copyOf(other.supportedModes, other.supportedModes.length);
-        colorTransformId = other.colorTransformId;
-        defaultColorTransformId = other.defaultColorTransformId;
-        supportedColorTransforms = Arrays.copyOf(
-                other.supportedColorTransforms, other.supportedColorTransforms.length);
+        colorMode = other.colorMode;
+        supportedColorModes = Arrays.copyOf(
+                other.supportedColorModes, other.supportedColorModes.length);
         hdrCapabilities = other.hdrCapabilities;
         logicalDensityDpi = other.logicalDensityDpi;
         physicalXDpi = other.physicalXDpi;
@@ -373,12 +369,11 @@
         for (int i = 0; i < nModes; i++) {
             supportedModes[i] = Display.Mode.CREATOR.createFromParcel(source);
         }
-        colorTransformId = source.readInt();
-        defaultColorTransformId = source.readInt();
-        int nColorTransforms = source.readInt();
-        supportedColorTransforms = new Display.ColorTransform[nColorTransforms];
-        for (int i = 0; i < nColorTransforms; i++) {
-            supportedColorTransforms[i] = Display.ColorTransform.CREATOR.createFromParcel(source);
+        colorMode = source.readInt();
+        int nColorModes = source.readInt();
+        supportedColorModes = new int[nColorModes];
+        for (int i = 0; i < nColorModes; i++) {
+            supportedColorModes[i] = source.readInt();
         }
         hdrCapabilities = source.readParcelable(null);
         logicalDensityDpi = source.readInt();
@@ -418,11 +413,10 @@
         for (int i = 0; i < supportedModes.length; i++) {
             supportedModes[i].writeToParcel(dest, flags);
         }
-        dest.writeInt(colorTransformId);
-        dest.writeInt(defaultColorTransformId);
-        dest.writeInt(supportedColorTransforms.length);
-        for (int i = 0; i < supportedColorTransforms.length; i++) {
-            supportedColorTransforms[i].writeToParcel(dest, flags);
+        dest.writeInt(colorMode);
+        dest.writeInt(supportedColorModes.length);
+        for (int i = 0; i < supportedColorModes.length; i++) {
+            dest.writeInt(supportedColorModes[i]);
         }
         dest.writeParcelable(hdrCapabilities, flags);
         dest.writeInt(logicalDensityDpi);
@@ -496,24 +490,6 @@
         return result;
     }
 
-    public Display.ColorTransform getColorTransform() {
-        return findColorTransform(colorTransformId);
-    }
-
-    public Display.ColorTransform getDefaultColorTransform() {
-        return findColorTransform(defaultColorTransformId);
-    }
-
-    private Display.ColorTransform findColorTransform(int colorTransformId) {
-        for (int i = 0; i < supportedColorTransforms.length; i++) {
-            Display.ColorTransform colorTransform = supportedColorTransforms[i];
-            if (colorTransform.getId() == colorTransformId) {
-                return colorTransform;
-            }
-        }
-        throw new IllegalStateException("Unable to locate color transform: " + colorTransformId);
-    }
-
     public void getAppMetrics(DisplayMetrics outMetrics) {
         getAppMetrics(outMetrics, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null);
     }
@@ -615,12 +591,10 @@
         sb.append(defaultModeId);
         sb.append(", modes ");
         sb.append(Arrays.toString(supportedModes));
-        sb.append(", colorTransformId ");
-        sb.append(colorTransformId);
-        sb.append(", defaultColorTransformId ");
-        sb.append(defaultColorTransformId);
-        sb.append(", supportedColorTransforms ");
-        sb.append(Arrays.toString(supportedColorTransforms));
+        sb.append(", colorMode ");
+        sb.append(colorMode);
+        sb.append(", supportedColorModes ");
+        sb.append(Arrays.toString(supportedColorModes));
         sb.append(", hdrCapabilities ");
         sb.append(hdrCapabilities);
         sb.append(", rotation ");
diff --git a/core/java/android/view/DragEvent.java b/core/java/android/view/DragEvent.java
index fb482b4..b0f15b5 100644
--- a/core/java/android/view/DragEvent.java
+++ b/core/java/android/view/DragEvent.java
@@ -102,8 +102,8 @@
  *  </tr>
  *  <tr>
  *      <td>ACTION_DRAG_ENDED</td>
- *      <td style="text-align: center;">X</td>
- *      <td style="text-align: center;">X</td>
+ *      <td style="text-align: center;">&nbsp;</td>
+ *      <td style="text-align: center;">&nbsp;</td>
  *      <td style="text-align: center;">&nbsp;</td>
  *      <td style="text-align: center;">&nbsp;</td>
  *      <td style="text-align: center;">&nbsp;</td>
@@ -359,7 +359,7 @@
      * The drag handler or listener for a View can use the metadata in this object to decide if the
      * View can accept the dragged View object's data.
      * <p>
-     * This method returns valid data for all event actions.
+     * This method returns valid data for all event actions except for {@link #ACTION_DRAG_ENDED}.
      * @return The ClipDescription that was part of the ClipData sent to the system by startDrag().
      */
     public ClipDescription getClipDescription() {
@@ -377,7 +377,7 @@
      * The object is intended to provide local information about the drag and drop operation. For
      * example, it can indicate whether the drag and drop operation is a copy or a move.
      * <p>
-     *  This method returns valid data for all event actions.
+     *  This method returns valid data for all event actions except for {@link #ACTION_DRAG_ENDED}.
      * </p>
      * @return The local state object sent to the system by startDrag().
      */
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index e3ff54d..9bc0bb4 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -306,6 +306,11 @@
     boolean isRotationFrozen();
 
     /**
+     * Screenshot the current wallpaper layer, including the whole screen.
+     */
+    Bitmap screenshotWallpaper();
+
+    /**
      * Used only for assist -- request a screenshot of the current application.
      */
     boolean requestAssistScreenshot(IAssistScreenshotReceiver receiver);
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index f1abca8..e778a7f 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -82,6 +82,10 @@
             IBinder displayToken);
     private static native int nativeGetActiveConfig(IBinder displayToken);
     private static native boolean nativeSetActiveConfig(IBinder displayToken, int id);
+    private static native int[] nativeGetDisplayColorModes(IBinder displayToken);
+    private static native int nativeGetActiveColorMode(IBinder displayToken);
+    private static native boolean nativeSetActiveColorMode(IBinder displayToken,
+            int colorMode);
     private static native void nativeSetDisplayPowerMode(
             IBinder displayToken, int mode);
     private static native void nativeDeferTransactionUntil(long nativeObject,
@@ -547,7 +551,6 @@
         public boolean secure;
         public long appVsyncOffsetNanos;
         public long presentationDeadlineNanos;
-        public int colorTransform;
 
         public PhysicalDisplayInfo() {
         }
@@ -571,8 +574,7 @@
                     && yDpi == other.yDpi
                     && secure == other.secure
                     && appVsyncOffsetNanos == other.appVsyncOffsetNanos
-                    && presentationDeadlineNanos == other.presentationDeadlineNanos
-                    && colorTransform == other.colorTransform;
+                    && presentationDeadlineNanos == other.presentationDeadlineNanos;
         }
 
         @Override
@@ -590,7 +592,6 @@
             secure = other.secure;
             appVsyncOffsetNanos = other.appVsyncOffsetNanos;
             presentationDeadlineNanos = other.presentationDeadlineNanos;
-            colorTransform = other.colorTransform;
         }
 
         // For debugging purposes
@@ -599,8 +600,7 @@
             return "PhysicalDisplayInfo{" + width + " x " + height + ", " + refreshRate + " fps, "
                     + "density " + density + ", " + xDpi + " x " + yDpi + " dpi, secure " + secure
                     + ", appVsyncOffset " + appVsyncOffsetNanos
-                    + ", bufferDeadline " + presentationDeadlineNanos
-                    + ", colorTransform " + colorTransform + "}";
+                    + ", bufferDeadline " + presentationDeadlineNanos + "}";
         }
     }
 
@@ -632,6 +632,27 @@
         return nativeSetActiveConfig(displayToken, id);
     }
 
+    public static int[] getDisplayColorModes(IBinder displayToken) {
+        if (displayToken == null) {
+            throw new IllegalArgumentException("displayToken must not be null");
+        }
+        return nativeGetDisplayColorModes(displayToken);
+    }
+
+    public static int getActiveColorMode(IBinder displayToken) {
+        if (displayToken == null) {
+            throw new IllegalArgumentException("displayToken must not be null");
+        }
+        return nativeGetActiveColorMode(displayToken);
+    }
+
+    public static boolean setActiveColorMode(IBinder displayToken, int colorMode) {
+        if (displayToken == null) {
+            throw new IllegalArgumentException("displayToken must not be null");
+        }
+        return nativeSetActiveColorMode(displayToken, colorMode);
+    }
+
     public static void setDisplayProjection(IBinder displayToken,
             int orientation, Rect layerStackRect, Rect displayRect) {
         if (displayToken == null) {
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 4818910..292e3f5 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -137,7 +137,7 @@
                     handleGetNewSurface();
                 } break;
                 case UPDATE_WINDOW_MSG: {
-                    updateWindow(false, false);
+                    updateWindow();
                 } break;
             }
         }
@@ -147,7 +147,7 @@
             = new ViewTreeObserver.OnScrollChangedListener() {
                     @Override
                     public void onScrollChanged() {
-                        updateWindow(false, false);
+                        updateWindow();
                     }
             };
 
@@ -157,7 +157,7 @@
                 public boolean onPreDraw() {
                     // reposition ourselves where the surface is
                     mHaveFrame = getWidth() > 0 && getHeight() > 0;
-                    updateWindow(false, false);
+                    updateWindow();
                     return true;
                 }
             };
@@ -248,7 +248,7 @@
         super.onWindowVisibilityChanged(visibility);
         mWindowVisibility = visibility == VISIBLE;
         mRequestedVisible = mWindowVisibility && mViewVisibility;
-        updateWindow(false, false);
+        updateWindow();
     }
 
     @Override
@@ -266,7 +266,7 @@
             requestLayout();
         }
         mRequestedVisible = newRequestedVisible;
-        updateWindow(false, false);
+        updateWindow();
     }
 
     @Override
@@ -279,7 +279,7 @@
         }
 
         mRequestedVisible = false;
-        updateWindow(false, false);
+        updateWindow();
         mHaveFrame = false;
         if (mWindow != null) {
             try {
@@ -310,7 +310,7 @@
     @Override
     protected boolean setFrame(int left, int top, int right, int bottom) {
         boolean result = super.setFrame(left, top, right, bottom);
-        updateWindow(false, false);
+        updateWindow();
         return result;
     }
 
@@ -436,7 +436,7 @@
     }
 
     /** @hide */
-    protected void updateWindow(boolean force, boolean redrawNeeded) {
+    protected void updateWindow() {
         if (!mHaveFrame) {
             return;
         }
@@ -461,8 +461,10 @@
         final boolean layoutSizeChanged = getWidth() != mLayout.width
                 || getHeight() != mLayout.height;
 
-        if (force || creating || formatChanged || sizeChanged || visibleChanged
-            || mUpdateWindowNeeded || mReportDrawNeeded || redrawNeeded) {
+        boolean redrawNeeded = false;
+
+        if (creating || formatChanged || sizeChanged || visibleChanged
+            || mUpdateWindowNeeded || mReportDrawNeeded) {
             getLocationInWindow(mLocation);
 
             if (DEBUG) Log.i(TAG, System.identityHashCode(this) + " "
@@ -499,7 +501,7 @@
                               | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                               | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                               ;
-                if (!creating && !force && !sizeChanged) {
+                if (!creating && !sizeChanged) {
                     mLayout.privateFlags |=
                             WindowManager.LayoutParams.PRIVATE_FLAG_PRESERVE_GEOMETRY;
                 } else {
@@ -783,7 +785,7 @@
     }
 
     void handleGetNewSurface() {
-        updateWindow(false, false);
+        updateWindow();
     }
 
     /**
@@ -912,7 +914,7 @@
 
             mRequestedFormat = format;
             if (mWindow != null) {
-                updateWindow(false, false);
+                updateWindow();
             }
         }
 
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 606cf24..397bd07 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -3746,7 +3746,8 @@
     /**
      * Flag indicating that a drag can cross window boundaries.  When
      * {@link #startDragAndDrop(ClipData, DragShadowBuilder, Object, int)} is called
-     * with this flag set, all visible applications will be able to participate
+     * with this flag set, all visible applications with targetSdkVersion >=
+     * {@link android.os.Build.VERSION_CODES#N API 24} will be able to participate
      * in the drag operation and receive the dragged content.
      *
      * If this is the only flag set, then the drag recipient will only have access to text data
@@ -4216,25 +4217,25 @@
                     setAlpha(a.getFloat(attr, 1f));
                     break;
                 case com.android.internal.R.styleable.View_transformPivotX:
-                    setPivotX(a.getDimensionPixelOffset(attr, 0));
+                    setPivotX(a.getDimension(attr, 0));
                     break;
                 case com.android.internal.R.styleable.View_transformPivotY:
-                    setPivotY(a.getDimensionPixelOffset(attr, 0));
+                    setPivotY(a.getDimension(attr, 0));
                     break;
                 case com.android.internal.R.styleable.View_translationX:
-                    tx = a.getDimensionPixelOffset(attr, 0);
+                    tx = a.getDimension(attr, 0);
                     transformSet = true;
                     break;
                 case com.android.internal.R.styleable.View_translationY:
-                    ty = a.getDimensionPixelOffset(attr, 0);
+                    ty = a.getDimension(attr, 0);
                     transformSet = true;
                     break;
                 case com.android.internal.R.styleable.View_translationZ:
-                    tz = a.getDimensionPixelOffset(attr, 0);
+                    tz = a.getDimension(attr, 0);
                     transformSet = true;
                     break;
                 case com.android.internal.R.styleable.View_elevation:
-                    elevation = a.getDimensionPixelOffset(attr, 0);
+                    elevation = a.getDimension(attr, 0);
                     transformSet = true;
                     break;
                 case com.android.internal.R.styleable.View_rotation:
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index e8663e4..495b032 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1731,7 +1731,7 @@
             }
 
             boolean hwInitialized = false;
-            boolean framesChanged = false;
+            boolean contentInsetsChanged = false;
             boolean hadSurface = mSurface.isValid();
 
             try {
@@ -1771,7 +1771,7 @@
 
                 final boolean overscanInsetsChanged = !mPendingOverscanInsets.equals(
                         mAttachInfo.mOverscanInsets);
-                boolean contentInsetsChanged = !mPendingContentInsets.equals(
+                contentInsetsChanged = !mPendingContentInsets.equals(
                         mAttachInfo.mContentInsets);
                 final boolean visibleInsetsChanged = !mPendingVisibleInsets.equals(
                         mAttachInfo.mVisibleInsets);
@@ -1821,19 +1821,6 @@
                             + mAttachInfo.mVisibleInsets);
                 }
 
-                // If any of the insets changed, do a forceLayout on the view so that the
-                // measure cache is cleared. We might have a pending MSG_RESIZED_REPORT
-                // that is supposed to take care of it, but since pending insets are
-                // already modified here, it won't detect the frame change after this.
-                framesChanged = overscanInsetsChanged
-                        || contentInsetsChanged
-                        || stableInsetsChanged
-                        || visibleInsetsChanged
-                        || outsetsChanged;
-                if (mAdded && mView != null && framesChanged) {
-                    forceLayout(mView);
-                }
-
                 if (!hadSurface) {
                     if (mSurface.isValid()) {
                         // If we are creating a new surface, then we need to
@@ -2017,7 +2004,7 @@
                 boolean focusChangedDueToTouchMode = ensureTouchModeLocally(
                         (relayoutResult&WindowManagerGlobal.RELAYOUT_RES_IN_TOUCH_MODE) != 0);
                 if (focusChangedDueToTouchMode || mWidth != host.getMeasuredWidth()
-                        || mHeight != host.getMeasuredHeight() || framesChanged ||
+                        || mHeight != host.getMeasuredHeight() || contentInsetsChanged ||
                         updatedConfiguration) {
                     int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width);
                     int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);
@@ -2026,7 +2013,7 @@
                             + mWidth + " measuredWidth=" + host.getMeasuredWidth()
                             + " mHeight=" + mHeight
                             + " measuredHeight=" + host.getMeasuredHeight()
-                            + " framesChanged=" + framesChanged);
+                            + " coveredInsetsChanged=" + contentInsetsChanged);
 
                      // Ask host how big it wants to be
                     performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);
@@ -5515,6 +5502,15 @@
         if (mView != null && mAdded) {
             final int what = event.mAction;
 
+            // Cache the drag description when the operation starts, then fill it in
+            // on subsequent calls as a convenience
+            if (what == DragEvent.ACTION_DRAG_STARTED) {
+                mCurrentDragView = null;    // Start the current-recipient tracking
+                mDragDescription = event.mClipDescription;
+            } else {
+                event.mClipDescription = mDragDescription;
+            }
+
             if (what == DragEvent.ACTION_DRAG_EXITED) {
                 // A direct EXITED event means that the window manager knows we've just crossed
                 // a window boundary, so the current drag target within this one must have
@@ -5522,15 +5518,6 @@
                 // for now.
                 mView.dispatchDragEvent(event);
             } else {
-                // Cache the drag description when the operation starts, then fill it in
-                // on subsequent calls as a convenience
-                if (what == DragEvent.ACTION_DRAG_STARTED) {
-                    mCurrentDragView = null;    // Start the current-recipient tracking
-                    mDragDescription = event.mClipDescription;
-                } else {
-                    event.mClipDescription = mDragDescription;
-                }
-
                 // For events with a [screen] location, translate into window coordinates
                 if ((what == DragEvent.ACTION_DRAG_LOCATION) || (what == DragEvent.ACTION_DROP)) {
                     mDragPoint.set(event.mX, event.mY);
diff --git a/core/java/android/view/WindowManagerInternal.java b/core/java/android/view/WindowManagerInternal.java
index 610dff8..653e583 100644
--- a/core/java/android/view/WindowManagerInternal.java
+++ b/core/java/android/view/WindowManagerInternal.java
@@ -287,4 +287,9 @@
      * @return True if and only if the docked divider is currently in resize mode.
      */
     public abstract boolean isDockedDividerResizing();
+
+    /**
+     * Requests the window manager to recompute the windows for accessibility.
+     */
+    public abstract void computeWindowsForAccessibility();
 }
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 81ec330..2dfa8cd 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -305,7 +305,18 @@
                 return;
             }
             if (!mIsEnabled) {
-                throw new IllegalStateException("Accessibility off. Did you forget to check that?");
+                Looper myLooper = Looper.myLooper();
+                if (myLooper == Looper.getMainLooper()) {
+                    throw new IllegalStateException(
+                            "Accessibility off. Did you forget to check that?");
+                } else {
+                    // If we're not running on the thread with the main looper, it's possible for
+                    // the state of accessibility to change between checking isEnabled and
+                    // calling this method. So just log the error rather than throwing the
+                    // exception.
+                    Log.e(LOG_TAG, "AccessibilityEvent sent with accessibility disabled");
+                    return;
+                }
             }
             userId = mUserId;
         }
diff --git a/core/java/android/webkit/CookieManager.java b/core/java/android/webkit/CookieManager.java
index 3ec235b..67289c2 100644
--- a/core/java/android/webkit/CookieManager.java
+++ b/core/java/android/webkit/CookieManager.java
@@ -35,7 +35,7 @@
      *
      * @return the singleton CookieManager instance
      */
-    public static synchronized CookieManager getInstance() {
+    public static CookieManager getInstance() {
         return WebViewFactory.getProvider().getCookieManager();
     }
 
diff --git a/core/java/android/webkit/CookieSyncManager.java b/core/java/android/webkit/CookieSyncManager.java
index eda8d36..c974b32 100644
--- a/core/java/android/webkit/CookieSyncManager.java
+++ b/core/java/android/webkit/CookieSyncManager.java
@@ -65,6 +65,7 @@
 
     private static CookieSyncManager sRef;
     private static boolean sGetInstanceAllowed = false;
+    private static final Object sLock = new Object();
 
     private CookieSyncManager() {
         super(null, null);
@@ -77,12 +78,14 @@
      *
      * @return CookieSyncManager
      */
-    public static synchronized CookieSyncManager getInstance() {
-        checkInstanceIsAllowed();
-        if (sRef == null) {
-            sRef = new CookieSyncManager();
+    public static CookieSyncManager getInstance() {
+        synchronized (sLock) {
+            checkInstanceIsAllowed();
+            if (sRef == null) {
+                sRef = new CookieSyncManager();
+            }
+            return sRef;
         }
-        return sRef;
     }
 
     /**
@@ -90,12 +93,14 @@
      * @param context
      * @return CookieSyncManager
      */
-    public static synchronized CookieSyncManager createInstance(Context context) {
-        if (context == null) {
-            throw new IllegalArgumentException("Invalid context argument");
+    public static CookieSyncManager createInstance(Context context) {
+        synchronized (sLock) {
+            if (context == null) {
+                throw new IllegalArgumentException("Invalid context argument");
+            }
+            setGetInstanceIsAllowed();
+            return getInstance();
         }
-        setGetInstanceIsAllowed();
-        return getInstance();
     }
 
     /**
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index cbfe43a..6f3fa36 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -2322,7 +2322,7 @@
         }
     }
 
-    private static synchronized WebViewFactoryProvider getFactory() {
+    private static WebViewFactoryProvider getFactory() {
         return WebViewFactory.getProvider();
     }
 
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index aaa0102..66b22ce 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -2316,22 +2316,24 @@
     }
 
     /**
-     * Get a view and have it show the data associated with the specified
-     * position. This is called when we have already discovered that the view is
-     * not available for reuse in the recycle bin. The only choices left are
+     * Gets a view and have it show the data associated with the specified
+     * position. This is called when we have already discovered that the view
+     * is not available for reuse in the recycle bin. The only choices left are
      * converting an old view or making a new one.
      *
-     * @param position The position to display
-     * @param isScrap Array of at least 1 boolean, the first entry will become true if
-     *                the returned view was taken from the "temporary detached" scrap heap, false if
-     *                otherwise.
+     * @param position the position to display
+     * @param outMetadata an array of at least 1 boolean where the first entry
+     *                    will be set {@code true} if the view is currently
+     *                    attached to the window, {@code false} otherwise (e.g.
+     *                    newly-inflated or remained scrap for multiple layout
+     *                    passes)
      *
      * @return A view displaying the data associated with the specified position
      */
-    View obtainView(int position, boolean[] isScrap) {
+    View obtainView(int position, boolean[] outMetadata) {
         Trace.traceBegin(Trace.TRACE_TAG_VIEW, "obtainView");
 
-        isScrap[0] = false;
+        outMetadata[0] = false;
 
         // Check whether we have a transient state view. Attempt to re-bind the
         // data and discard the view if we fail.
@@ -2350,7 +2352,7 @@
                 }
             }
 
-            isScrap[0] = true;
+            outMetadata[0] = true;
 
             // Finish the temporary detach started in addScrapView().
             transientView.dispatchFinishTemporaryDetach();
@@ -2363,19 +2365,11 @@
             if (child != scrapView) {
                 // Failed to re-bind the data, return scrap to the heap.
                 mRecycler.addScrapView(scrapView, position);
-            } else {
-                if (child.isTemporarilyDetached()) {
-                    isScrap[0] = true;
+            } else if (child.isTemporarilyDetached()) {
+                outMetadata[0] = true;
 
-                    // Finish the temporary detach started in addScrapView().
-                    child.dispatchFinishTemporaryDetach();
-                } else {
-                    // we set isScrap to "true" only if the view is temporarily detached.
-                    // if the view is fully detached, it is as good as a view created by the
-                    // adapter
-                    isScrap[0] = false;
-                }
-
+                // Finish the temporary detach started in addScrapView().
+                child.dispatchFinishTemporaryDetach();
             }
         }
 
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index 6d7313d..b95aa52 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -1407,72 +1407,73 @@
 
 
     /**
-     * Obtain the view and add it to our list of children. The view can be made
-     * fresh, converted from an unused view, or used as is if it was in the
-     * recycle bin.
+     * Obtains the view and adds it to our list of children. The view can be
+     * made fresh, converted from an unused view, or used as is if it was in
+     * the recycle bin.
      *
-     * @param position Logical position in the list
-     * @param y Top or bottom edge of the view to add
-     * @param flow if true, align top edge to y. If false, align bottom edge to
-     *        y.
-     * @param childrenLeft Left edge where children should be positioned
-     * @param selected Is this position selected?
-     * @param where to add new item in the list
+     * @param position logical position in the list
+     * @param y top or bottom edge of the view to add
+     * @param flow {@code true} to align top edge to y, {@code false} to align
+     *             bottom edge to y
+     * @param childrenLeft left edge where children should be positioned
+     * @param selected {@code true} if the position is selected, {@code false}
+     *                 otherwise
+     * @param where position at which to add new item in the list
      * @return View that was added
      */
     private View makeAndAddView(int position, int y, boolean flow, int childrenLeft,
             boolean selected, int where) {
-        View child;
-
         if (!mDataChanged) {
             // Try to use an existing view for this position
-            child = mRecycler.getActiveView(position);
-            if (child != null) {
+            final View activeView = mRecycler.getActiveView(position);
+            if (activeView != null) {
                 // Found it -- we're using an existing child
                 // This just needs to be positioned
-                setupChild(child, position, y, flow, childrenLeft, selected, true, where);
-                return child;
+                setupChild(activeView, position, y, flow, childrenLeft, selected, true, where);
+                return activeView;
             }
         }
 
         // Make a new view for this position, or convert an unused view if
-        // possible
-        child = obtainView(position, mIsScrap);
+        // possible.
+        final View child = obtainView(position, mIsScrap);
 
-        // This needs to be positioned and measured
+        // This needs to be positioned and measured.
         setupChild(child, position, y, flow, childrenLeft, selected, mIsScrap[0], where);
 
         return child;
     }
 
     /**
-     * Add a view as a child and make sure it is measured (if necessary) and
+     * Adds a view as a child and make sure it is measured (if necessary) and
      * positioned properly.
      *
-     * @param child The view to add
-     * @param position The position of the view
-     * @param y The y position relative to which this view will be positioned
-     * @param flow if true, align top edge to y. If false, align bottom edge
-     *        to y.
-     * @param childrenLeft Left edge where children should be positioned
-     * @param selected Is this position selected?
-     * @param recycled Has this view been pulled from the recycle bin? If so it
-     *        does not need to be remeasured.
-     * @param where Where to add the item in the list
+     * @param child the view to add
+     * @param position the position of this child
+     * @param y the y position relative to which this view will be positioned
+     * @param flowDown {@code true} to align top edge to y, {@code false} to
+     *                 align bottom edge to y
+     * @param childrenLeft left edge where children should be positioned
+     * @param selected {@code true} if the position is selected, {@code false}
+     *                 otherwise
+     * @param isAttachedToWindow {@code true} if the view is already attached
+     *                           to the window, e.g. whether it was reused, or
+     *                           {@code false} otherwise
+     * @param where position at which to add new item in the list
      *
      */
-    private void setupChild(View child, int position, int y, boolean flow, int childrenLeft,
-            boolean selected, boolean recycled, int where) {
+    private void setupChild(View child, int position, int y, boolean flowDown, int childrenLeft,
+            boolean selected, boolean isAttachedToWindow, int where) {
         Trace.traceBegin(Trace.TRACE_TAG_VIEW, "setupGridItem");
 
         boolean isSelected = selected && shouldShowSelector();
         final boolean updateChildSelected = isSelected != child.isSelected();
         final int mode = mTouchMode;
-        final boolean isPressed = mode > TOUCH_MODE_DOWN && mode < TOUCH_MODE_SCROLL &&
-                mMotionPosition == position;
+        final boolean isPressed = mode > TOUCH_MODE_DOWN && mode < TOUCH_MODE_SCROLL
+                && mMotionPosition == position;
         final boolean updateChildPressed = isPressed != child.isPressed();
-        
-        boolean needToMeasure = !recycled || updateChildSelected || child.isLayoutRequested();
+        final boolean needToMeasure = !isAttachedToWindow || updateChildSelected
+                || child.isLayoutRequested();
 
         // Respect layout params that are already in the view. Otherwise make
         // some up...
@@ -1483,13 +1484,9 @@
         p.viewType = mAdapter.getItemViewType(position);
         p.isEnabled = mAdapter.isEnabled(position);
 
-        if (recycled && !p.forceAdd) {
-            attachViewToParent(child, where, p);
-        } else {
-            p.forceAdd = false;
-            addViewInLayout(child, where, p, true);
-        }
-
+        // Set up view state before attaching the view, since we may need to
+        // rely on the jumpDrawablesToCurrentState() call that occurs as part
+        // of view attachment.
         if (updateChildSelected) {
             child.setSelected(isSelected);
             if (isSelected) {
@@ -1510,6 +1507,21 @@
             }
         }
 
+        if (isAttachedToWindow && !p.forceAdd) {
+            attachViewToParent(child, where, p);
+
+            // If the view isn't attached, or if it's attached but for a different
+            // position, then jump the drawables.
+            if (!isAttachedToWindow
+                    || (((AbsListView.LayoutParams) child.getLayoutParams()).scrappedFromPosition)
+                            != position) {
+                child.jumpDrawablesToCurrentState();
+            }
+        } else {
+            p.forceAdd = false;
+            addViewInLayout(child, where, p, true);
+        }
+
         if (needToMeasure) {
             int childHeightSpec = ViewGroup.getChildMeasureSpec(
                     MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 0, p.height);
@@ -1525,7 +1537,7 @@
         final int h = child.getMeasuredHeight();
 
         int childLeft;
-        final int childTop = flow ? y : y - h;
+        final int childTop = flowDown ? y : y - h;
 
         final int layoutDirection = getLayoutDirection();
         final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection);
@@ -1553,15 +1565,10 @@
             child.offsetTopAndBottom(childTop - child.getTop());
         }
 
-        if (mCachingStarted) {
+        if (mCachingStarted && !child.isDrawingCacheEnabled()) {
             child.setDrawingCacheEnabled(true);
         }
 
-        if (recycled && (((AbsListView.LayoutParams)child.getLayoutParams()).scrappedFromPosition)
-                != position) {
-            child.jumpDrawablesToCurrentState();
-        }
-
         Trace.traceEnd(Trace.TRACE_TAG_VIEW);
     }
 
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 0e04e30..b8b7c55 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -1939,72 +1939,73 @@
     }
 
     /**
-     * Obtain the view and add it to our list of children. The view can be made
-     * fresh, converted from an unused view, or used as is if it was in the
-     * recycle bin.
+     * Obtains the view and adds it to our list of children. The view can be
+     * made fresh, converted from an unused view, or used as is if it was in
+     * the recycle bin.
      *
-     * @param position Logical position in the list
-     * @param y Top or bottom edge of the view to add
-     * @param flow If flow is true, align top edge to y. If false, align bottom
-     *        edge to y.
-     * @param childrenLeft Left edge where children should be positioned
-     * @param selected Is this position selected?
-     * @return View that was added
+     * @param position logical position in the list
+     * @param y top or bottom edge of the view to add
+     * @param flow {@code true} to align top edge to y, {@code false} to align
+     *             bottom edge to y
+     * @param childrenLeft left edge where children should be positioned
+     * @param selected {@code true} if the position is selected, {@code false}
+     *                 otherwise
+     * @return the view that was added
      */
     private View makeAndAddView(int position, int y, boolean flow, int childrenLeft,
             boolean selected) {
-        View child;
-
-
         if (!mDataChanged) {
-            // Try to use an existing view for this position
-            child = mRecycler.getActiveView(position);
-            if (child != null) {
-                // Found it -- we're using an existing child
-                // This just needs to be positioned
-                setupChild(child, position, y, flow, childrenLeft, selected, true);
-
-                return child;
+            // Try to use an existing view for this position.
+            final View activeView = mRecycler.getActiveView(position);
+            if (activeView != null) {
+                // Found it. We're reusing an existing child, so it just needs
+                // to be positioned like a scrap view.
+                setupChild(activeView, position, y, flow, childrenLeft, selected, true);
+                return activeView;
             }
         }
 
-        // Make a new view for this position, or convert an unused view if possible
-        child = obtainView(position, mIsScrap);
+        // Make a new view for this position, or convert an unused view if
+        // possible.
+        final View child = obtainView(position, mIsScrap);
 
-        // This needs to be positioned and measured
+        // This needs to be positioned and measured.
         setupChild(child, position, y, flow, childrenLeft, selected, mIsScrap[0]);
 
         return child;
     }
 
     /**
-     * Add a view as a child and make sure it is measured (if necessary) and
+     * Adds a view as a child and make sure it is measured (if necessary) and
      * positioned properly.
      *
-     * @param child The view to add
-     * @param position The position of this child
-     * @param y The y position relative to which this view will be positioned
-     * @param flowDown If true, align top edge to y. If false, align bottom
-     *        edge to y.
-     * @param childrenLeft Left edge where children should be positioned
-     * @param selected Is this position selected?
-     * @param recycled Has this view been pulled from the recycle bin? If so it
-     *        does not need to be remeasured.
+     * @param child the view to add
+     * @param position the position of this child
+     * @param y the y position relative to which this view will be positioned
+     * @param flowDown {@code true} to align top edge to y, {@code false} to
+     *                 align bottom edge to y
+     * @param childrenLeft left edge where children should be positioned
+     * @param selected {@code true} if the position is selected, {@code false}
+     *                 otherwise
+     * @param isAttachedToWindow {@code true} if the view is already attached
+     *                           to the window, e.g. whether it was reused, or
+     *                           {@code false} otherwise
      */
     private void setupChild(View child, int position, int y, boolean flowDown, int childrenLeft,
-            boolean selected, boolean recycled) {
+            boolean selected, boolean isAttachedToWindow) {
         Trace.traceBegin(Trace.TRACE_TAG_VIEW, "setupListItem");
 
         final boolean isSelected = selected && shouldShowSelector();
         final boolean updateChildSelected = isSelected != child.isSelected();
         final int mode = mTouchMode;
-        final boolean isPressed = mode > TOUCH_MODE_DOWN && mode < TOUCH_MODE_SCROLL &&
-                mMotionPosition == position;
+        final boolean isPressed = mode > TOUCH_MODE_DOWN && mode < TOUCH_MODE_SCROLL
+                && mMotionPosition == position;
         final boolean updateChildPressed = isPressed != child.isPressed();
-        final boolean needToMeasure = !recycled || updateChildSelected || child.isLayoutRequested();
+        final boolean needToMeasure = !isAttachedToWindow || updateChildSelected
+                || child.isLayoutRequested();
 
-        // Respect layout params that are already in the view. Otherwise make some up...
-        // noinspection unchecked
+        // Respect layout params that are already in the view. Otherwise make
+        // some up...
         AbsListView.LayoutParams p = (AbsListView.LayoutParams) child.getLayoutParams();
         if (p == null) {
             p = (AbsListView.LayoutParams) generateDefaultLayoutParams();
@@ -2012,17 +2013,9 @@
         p.viewType = mAdapter.getItemViewType(position);
         p.isEnabled = mAdapter.isEnabled(position);
 
-        if ((recycled && !p.forceAdd) || (p.recycledHeaderFooter
-                && p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) {
-            attachViewToParent(child, flowDown ? -1 : 0, p);
-        } else {
-            p.forceAdd = false;
-            if (p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
-                p.recycledHeaderFooter = true;
-            }
-            addViewInLayout(child, flowDown ? -1 : 0, p, true);
-        }
-
+        // Set up view state before attaching the view, since we may need to
+        // rely on the jumpDrawablesToCurrentState() call that occurs as part
+        // of view attachment.
         if (updateChildSelected) {
             child.setSelected(isSelected);
         }
@@ -2040,6 +2033,25 @@
             }
         }
 
+        if ((isAttachedToWindow && !p.forceAdd) || (p.recycledHeaderFooter
+                && p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER)) {
+            attachViewToParent(child, flowDown ? -1 : 0, p);
+
+            // If the view was previously attached for a different position,
+            // then manually jump the drawables.
+            if (isAttachedToWindow
+                    && (((AbsListView.LayoutParams) child.getLayoutParams()).scrappedFromPosition)
+                            != position) {
+                child.jumpDrawablesToCurrentState();
+            }
+        } else {
+            p.forceAdd = false;
+            if (p.viewType == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
+                p.recycledHeaderFooter = true;
+            }
+            addViewInLayout(child, flowDown ? -1 : 0, p, true);
+        }
+
         if (needToMeasure) {
             final int childWidthSpec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec,
                     mListPadding.left + mListPadding.right, p.width);
@@ -2073,11 +2085,6 @@
             child.setDrawingCacheEnabled(true);
         }
 
-        if (recycled && (((AbsListView.LayoutParams)child.getLayoutParams()).scrappedFromPosition)
-                != position) {
-            child.jumpDrawablesToCurrentState();
-        }
-
         Trace.traceEnd(Trace.TRACE_TAG_VIEW);
     }
 
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index b7f57cb..167d526 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -1547,7 +1547,7 @@
         }
 
         // Let the window manager know to align the top to y.
-        outParams.gravity = Gravity.LEFT | Gravity.TOP;
+        outParams.gravity = computeGravity();
         outParams.width = width;
         outParams.height = height;
 
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 014b1af..44f59dc 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -6615,9 +6615,10 @@
 
     /**
      * Called by the framework in response to a text auto-correction (such as fixing a typo using a
-     * a dictionnary) from the current input method, provided by it calling
-     * {@link InputConnection#commitCorrection} InputConnection.commitCorrection()}. The default
-     * implementation flashes the background of the corrected word to provide feedback to the user.
+     * a dictionary) from the current input method, provided by it calling
+     * {@link InputConnection#commitCorrection(CorrectionInfo) InputConnection.commitCorrection()}.
+     * The default implementation flashes the background of the corrected word to provide
+     * feedback to the user.
      *
      * @param info The auto correct info about the text that was corrected.
      */
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index 2a40aeb..2b25b3f 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -618,7 +618,7 @@
         }
     }
 
-    private void setupTitle(ViewGroup topPanel) {
+    protected void setupTitle(ViewGroup topPanel) {
         if (mCustomTitleView != null && mShowTitle) {
             // Add the custom title view directly to the topPanel layout
             final LayoutParams lp = new LayoutParams(
@@ -701,7 +701,7 @@
         }
     }
 
-    private void setupButtons(ViewGroup buttonPanel) {
+    protected void setupButtons(ViewGroup buttonPanel) {
         int BIT_BUTTON_POSITIVE = 1;
         int BIT_BUTTON_NEGATIVE = 2;
         int BIT_BUTTON_NEUTRAL = 4;
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index 216a4f1..5623a2c 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -79,6 +79,8 @@
             String newHistoryName, int newType, boolean newUnimportantForLogging);
     void noteStopWakelockFromSource(in WorkSource ws, int pid, String name, String historyName,
             int type);
+    void noteLongPartialWakelockStart(String name, String historyName, int uid);
+    void noteLongPartialWakelockFinish(String name, String historyName, int uid);
 
     void noteVibratorOn(int uid, long durationMillis);
     void noteVibratorOff(int uid);
@@ -118,7 +120,7 @@
     void noteWifiBatchedScanStoppedFromSource(in WorkSource ws);
     void noteWifiMulticastEnabledFromSource(in WorkSource ws);
     void noteWifiMulticastDisabledFromSource(in WorkSource ws);
-    void noteWifiRadioPowerState(int powerState, long timestampNs);
+    void noteWifiRadioPowerState(int powerState, long timestampNs, int uid);
     void noteNetworkInterfaceType(String iface, int type);
     void noteNetworkStatsEnabled();
     void noteDeviceIdleMode(int mode, String activeReason, int activeUid);
diff --git a/core/java/com/android/internal/app/MicroAlertController.java b/core/java/com/android/internal/app/MicroAlertController.java
index 085b226..00fcd6f 100644
--- a/core/java/com/android/internal/app/MicroAlertController.java
+++ b/core/java/com/android/internal/app/MicroAlertController.java
@@ -82,4 +82,20 @@
             }
         }
     }
+
+    @Override
+    protected void setupTitle(ViewGroup topPanel) {
+        super.setupTitle(topPanel);
+        if (topPanel.getVisibility() == View.GONE) {
+            topPanel.setVisibility(View.INVISIBLE);
+        }
+    }
+
+    @Override
+    protected void setupButtons(ViewGroup buttonPanel) {
+        super.setupButtons(buttonPanel);
+        if (buttonPanel.getVisibility() == View.GONE) {
+            buttonPanel.setVisibility(View.INVISIBLE);
+        }
+    }
 }
diff --git a/core/java/com/android/internal/midi/MidiDispatcher.java b/core/java/com/android/internal/midi/MidiDispatcher.java
index 1a3c37c..c16628a 100644
--- a/core/java/com/android/internal/midi/MidiDispatcher.java
+++ b/core/java/com/android/internal/midi/MidiDispatcher.java
@@ -26,11 +26,23 @@
  * Utility class for dispatching MIDI data to a list of {@link android.media.midi.MidiReceiver}s.
  * This class subclasses {@link android.media.midi.MidiReceiver} and dispatches any data it receives
  * to its receiver list. Any receivers that throw an exception upon receiving data will
- * be automatically removed from the receiver list, but no IOException will be returned
- * from the dispatcher's {@link android.media.midi.MidiReceiver#onSend} in that case.
+ * be automatically removed from the receiver list. If a MidiReceiverFailureHandler has been
+ * provided to the MidiDispatcher, it will be notified about the failure, but the exception
+ * itself will be swallowed.
  */
 public final class MidiDispatcher extends MidiReceiver {
 
+    // MidiDispatcher's client and MidiReceiver's owner can be different
+    // classes (e.g. MidiDeviceService is a client, but MidiDeviceServer is
+    // the owner), and errors occuring during sending need to be reported
+    // to the owner rather than to the sender.
+    //
+    // Note that the callbacks will be called on the sender's thread.
+    public interface MidiReceiverFailureHandler {
+        void onReceiverFailure(MidiReceiver receiver, IOException failure);
+    }
+
+    private final MidiReceiverFailureHandler mFailureHandler;
     private final CopyOnWriteArrayList<MidiReceiver> mReceivers
             = new CopyOnWriteArrayList<MidiReceiver>();
 
@@ -46,6 +58,14 @@
         }
     };
 
+    public MidiDispatcher() {
+        this(null);
+    }
+
+    public MidiDispatcher(MidiReceiverFailureHandler failureHandler) {
+        mFailureHandler = failureHandler;
+    }
+
     /**
      * Returns the number of {@link android.media.midi.MidiReceiver}s this dispatcher contains.
      * @return the number of receivers
@@ -70,8 +90,13 @@
             try {
                 receiver.send(msg, offset, count, timestamp);
             } catch (IOException e) {
-                // if the receiver fails we remove the receiver but do not propagate the exception
+                // If the receiver fails we remove the receiver but do not propagate the exception.
+                // Note that this may also happen if the client code stalls, and thus underlying
+                // MidiInputPort.onSend has raised IOException for EAGAIN / EWOULDBLOCK error.
                 mReceivers.remove(receiver);
+                if (mFailureHandler != null) {
+                    mFailureHandler.onReceiverFailure(receiver, e);
+                }
             }
         }
     }
@@ -79,7 +104,15 @@
     @Override
     public void onFlush() throws IOException {
        for (MidiReceiver receiver : mReceivers) {
-            receiver.flush();
+            try {
+                receiver.flush();
+            } catch (IOException e) {
+                // This is just a special case of 'send' thus handle in the same way.
+                mReceivers.remove(receiver);
+                if (mFailureHandler != null) {
+                    mFailureHandler.onReceiverFailure(receiver, e);
+                }
+            }
        }
     }
 }
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index a1df8c1..b174e33 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -108,7 +108,7 @@
     private static final int MAGIC = 0xBA757475; // 'BATSTATS'
 
     // Current on-disk Parcel version
-    private static final int VERSION = 147 + (USE_OLD_HISTORY ? 1000 : 0);
+    private static final int VERSION = 148 + (USE_OLD_HISTORY ? 1000 : 0);
 
     // Maximum number of items we will record in the history.
     private static final int MAX_HISTORY_ITEMS = 2000;
@@ -3285,6 +3285,36 @@
         }
     }
 
+    public void noteLongPartialWakelockStart(String name, String historyName, int uid) {
+        uid = mapUid(uid);
+        final long elapsedRealtime = mClocks.elapsedRealtime();
+        final long uptime = mClocks.uptimeMillis();
+        if (historyName == null) {
+            historyName = name;
+        }
+        if (!mActiveEvents.updateState(HistoryItem.EVENT_LONG_WAKE_LOCK_START, historyName, uid,
+                0)) {
+            return;
+        }
+        addHistoryEventLocked(elapsedRealtime, uptime, HistoryItem.EVENT_LONG_WAKE_LOCK_START,
+                historyName, uid);
+    }
+
+    public void noteLongPartialWakelockFinish(String name, String historyName, int uid) {
+        uid = mapUid(uid);
+        final long elapsedRealtime = mClocks.elapsedRealtime();
+        final long uptime = mClocks.uptimeMillis();
+        if (historyName == null) {
+            historyName = name;
+        }
+        if (!mActiveEvents.updateState(HistoryItem.EVENT_LONG_WAKE_LOCK_FINISH, historyName, uid,
+                0)) {
+            return;
+        }
+        addHistoryEventLocked(elapsedRealtime, uptime, HistoryItem.EVENT_LONG_WAKE_LOCK_FINISH,
+                historyName, uid);
+    }
+
     void aggregateLastWakeupUptimeLocked(long uptimeMs) {
         if (mLastWakeupReason != null) {
             long deltaUptime = uptimeMs - mLastWakeupUptimeMs;
@@ -3554,6 +3584,14 @@
         mNumConnectivityChange++;
     }
 
+    private void noteMobileRadioApWakeupLocked(final long elapsedRealtimeMillis,
+            final long uptimeMillis, int uid) {
+        uid = mapUid(uid);
+        addHistoryEventLocked(elapsedRealtimeMillis, uptimeMillis, HistoryItem.EVENT_WAKEUP_AP, "",
+                uid);
+        getUidStatsLocked(uid).noteMobileRadioApWakeupLocked();
+    }
+
     public void noteMobileRadioPowerState(int powerState, long timestampNs, int uid) {
         final long elapsedRealtime = mClocks.elapsedRealtime();
         final long uptime = mClocks.uptimeMillis();
@@ -3563,6 +3601,10 @@
                     powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM
                             || powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH;
             if (active) {
+                if (uid > 0) {
+                    noteMobileRadioApWakeupLocked(elapsedRealtime, uptime, uid);
+                }
+
                 mMobileRadioActiveStartTime = realElapsedRealtimeMs = timestampNs / (1000 * 1000);
                 mHistoryCur.states |= HistoryItem.STATE_MOBILE_RADIO_ACTIVE_FLAG;
             } else {
@@ -4239,7 +4281,15 @@
         }
     }
 
-    public void noteWifiRadioPowerState(int powerState, long timestampNs) {
+    private void noteWifiRadioApWakeupLocked(final long elapsedRealtimeMillis,
+            final long uptimeMillis, int uid) {
+        uid = mapUid(uid);
+        addHistoryEventLocked(elapsedRealtimeMillis, uptimeMillis, HistoryItem.EVENT_WAKEUP_AP, "",
+                uid);
+        getUidStatsLocked(uid).noteWifiRadioApWakeupLocked();
+    }
+
+    public void noteWifiRadioPowerState(int powerState, long timestampNs, int uid) {
         final long elapsedRealtime = mClocks.elapsedRealtime();
         final long uptime = mClocks.uptimeMillis();
         if (mWifiRadioPowerState != powerState) {
@@ -4247,6 +4297,9 @@
                     powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM
                             || powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH;
             if (active) {
+                if (uid > 0) {
+                    noteWifiRadioApWakeupLocked(elapsedRealtime, uptime, uid);
+                }
                 mHistoryCur.states |= HistoryItem.STATE_WIFI_RADIO_ACTIVE_FLAG;
             } else {
                 mHistoryCur.states &= ~HistoryItem.STATE_WIFI_RADIO_ACTIVE_FLAG;
@@ -4874,6 +4927,33 @@
         return mUidStats;
     }
 
+    private static void detachTimerIfNotNull(BatteryStatsImpl.Timer timer) {
+        if (timer != null) {
+            timer.detach();
+        }
+    }
+
+    private static boolean resetTimerIfNotNull(BatteryStatsImpl.Timer timer,
+            boolean detachIfReset) {
+        if (timer != null) {
+            return timer.reset(detachIfReset);
+        }
+        return true;
+    }
+
+    private static void detachLongCounterIfNotNull(LongSamplingCounter counter) {
+        if (counter != null) {
+            counter.detach();
+        }
+    }
+
+    private static void resetLongCounterIfNotNull(LongSamplingCounter counter,
+            boolean detachIfReset) {
+        if (counter != null) {
+            counter.reset(detachIfReset);
+        }
+    }
+
     /**
      * The statistics associated with a particular uid.
      */
@@ -4921,6 +5001,16 @@
         LongSamplingCounter mMobileRadioActiveCount;
 
         /**
+         * How many times this UID woke up the Application Processor due to a Mobile radio packet.
+         */
+        private LongSamplingCounter mMobileRadioApWakeupCount;
+
+        /**
+         * How many times this UID woke up the Application Processor due to a Wifi packet.
+         */
+        private LongSamplingCounter mWifiRadioApWakeupCount;
+
+        /**
          * The amount of time this uid has kept the WiFi controller in idle, tx, and rx mode.
          * Can be null if the UID has had no such activity.
          */
@@ -5629,6 +5719,36 @@
             return 0;
         }
 
+        public void noteMobileRadioApWakeupLocked() {
+            if (mMobileRadioApWakeupCount == null) {
+                mMobileRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);
+            }
+            mMobileRadioApWakeupCount.addCountLocked(1);
+        }
+
+        @Override
+        public long getMobileRadioApWakeupCount(int which) {
+            if (mMobileRadioApWakeupCount != null) {
+                return mMobileRadioApWakeupCount.getCountLocked(which);
+            }
+            return 0;
+        }
+
+        public void noteWifiRadioApWakeupLocked() {
+            if (mWifiRadioApWakeupCount == null) {
+                mWifiRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);
+            }
+            mWifiRadioApWakeupCount.addCountLocked(1);
+        }
+
+        @Override
+        public long getWifiRadioApWakeupCount(int which) {
+            if (mWifiRadioApWakeupCount != null) {
+                return mWifiRadioApWakeupCount.getCountLocked(which);
+            }
+            return 0;
+        }
+
         void initNetworkActivityLocked() {
             mNetworkByteActivityCounters = new LongSamplingCounter[NUM_NETWORK_ACTIVITY_TYPES];
             mNetworkPacketActivityCounters = new LongSamplingCounter[NUM_NETWORK_ACTIVITY_TYPES];
@@ -5671,24 +5791,14 @@
                 active |= !mWifiMulticastTimer.reset(false);
                 active |= mWifiMulticastEnabled;
             }
-            if (mAudioTurnedOnTimer != null) {
-                active |= !mAudioTurnedOnTimer.reset(false);
-            }
-            if (mVideoTurnedOnTimer != null) {
-                active |= !mVideoTurnedOnTimer.reset(false);
-            }
-            if (mFlashlightTurnedOnTimer != null) {
-                active |= !mFlashlightTurnedOnTimer.reset(false);
-            }
-            if (mCameraTurnedOnTimer != null) {
-                active |= !mCameraTurnedOnTimer.reset(false);
-            }
-            if (mForegroundActivityTimer != null) {
-                active |= !mForegroundActivityTimer.reset(false);
-            }
-            if (mBluetoothScanTimer != null) {
-                active |= !mBluetoothScanTimer.reset(false);
-            }
+
+            active |= !resetTimerIfNotNull(mAudioTurnedOnTimer, false);
+            active |= !resetTimerIfNotNull(mVideoTurnedOnTimer, false);
+            active |= !resetTimerIfNotNull(mFlashlightTurnedOnTimer, false);
+            active |= !resetTimerIfNotNull(mCameraTurnedOnTimer, false);
+            active |= !resetTimerIfNotNull(mForegroundActivityTimer, false);
+            active |= !resetTimerIfNotNull(mBluetoothScanTimer, false);
+
             if (mProcessStateTimer != null) {
                 for (int i = 0; i < NUM_PROCESS_STATE; i++) {
                     if (mProcessStateTimer[i] != null) {
@@ -5749,6 +5859,9 @@
                 }
             }
 
+            resetLongCounterIfNotNull(mMobileRadioApWakeupCount, false);
+            resetLongCounterIfNotNull(mWifiRadioApWakeupCount, false);
+
             final ArrayMap<String, Wakelock> wakeStats = mWakelockStats.getMap();
             for (int iw=wakeStats.size()-1; iw>=0; iw--) {
                 Wakelock wl = wakeStats.valueAt(iw);
@@ -5908,6 +6021,9 @@
                         }
                     }
                 }
+
+                detachLongCounterIfNotNull(mMobileRadioApWakeupCount);
+                detachLongCounterIfNotNull(mWifiRadioApWakeupCount);
             }
 
             return !active;
@@ -6114,6 +6230,20 @@
             } else {
                 out.writeInt(0);
             }
+
+            if (mMobileRadioApWakeupCount != null) {
+                out.writeInt(1);
+                mMobileRadioApWakeupCount.writeToParcel(out);
+            } else {
+                out.writeInt(0);
+            }
+
+            if (mWifiRadioApWakeupCount != null) {
+                out.writeInt(1);
+                mWifiRadioApWakeupCount.writeToParcel(out);
+            } else {
+                out.writeInt(0);
+            }
         }
 
         void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, Parcel in) {
@@ -6338,6 +6468,18 @@
             } else {
                 mCpuClusterSpeed = null;
             }
+
+            if (in.readInt() != 0) {
+                mMobileRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
+            } else {
+                mMobileRadioApWakeupCount = null;
+            }
+
+            if (in.readInt() != 0) {
+                mWifiRadioApWakeupCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
+            } else {
+                mWifiRadioApWakeupCount = null;
+            }
         }
 
         /**
@@ -10348,6 +10490,20 @@
                 u.mCpuClusterSpeed = null;
             }
 
+            if (in.readInt() != 0) {
+                u.mMobileRadioApWakeupCount = new LongSamplingCounter(mOnBatteryTimeBase);
+                u.mMobileRadioApWakeupCount.readSummaryFromParcelLocked(in);
+            } else {
+                u.mMobileRadioApWakeupCount = null;
+            }
+
+            if (in.readInt() != 0) {
+                u.mWifiRadioApWakeupCount = new LongSamplingCounter(mOnBatteryTimeBase);
+                u.mWifiRadioApWakeupCount.readSummaryFromParcelLocked(in);
+            } else {
+                u.mWifiRadioApWakeupCount = null;
+            }
+
             int NW = in.readInt();
             if (NW > 100) {
                 throw new ParcelFormatException("File corrupt: too many wake locks " + NW);
@@ -10708,6 +10864,20 @@
                 out.writeInt(0);
             }
 
+            if (u.mMobileRadioApWakeupCount != null) {
+                out.writeInt(1);
+                u.mMobileRadioApWakeupCount.writeSummaryFromParcelLocked(out);
+            } else {
+                out.writeInt(0);
+            }
+
+            if (u.mWifiRadioApWakeupCount != null) {
+                out.writeInt(1);
+                u.mWifiRadioApWakeupCount.writeSummaryFromParcelLocked(out);
+            } else {
+                out.writeInt(0);
+            }
+
             final ArrayMap<String, Uid.Wakelock> wakeStats = u.mWakelockStats.getMap();
             int NW = wakeStats.size();
             out.writeInt(NW);
diff --git a/core/java/com/android/internal/util/FastPrintWriter.java b/core/java/com/android/internal/util/FastPrintWriter.java
index dc3832a..cc2c4cf 100644
--- a/core/java/com/android/internal/util/FastPrintWriter.java
+++ b/core/java/com/android/internal/util/FastPrintWriter.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2013 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.util;
 
 import android.util.Log;
diff --git a/core/java/com/android/internal/util/NotificationColorUtil.java b/core/java/com/android/internal/util/NotificationColorUtil.java
index 48bcc09..77452ca 100644
--- a/core/java/com/android/internal/util/NotificationColorUtil.java
+++ b/core/java/com/android/internal/util/NotificationColorUtil.java
@@ -341,6 +341,20 @@
     }
 
     /**
+     * Lighten a color by a specified value
+     * @param baseColor the base color to lighten
+     * @param amount the amount to lighten the color from 0 to 100. This corresponds to the L
+     *               increase in the LAB color space.
+     * @return the lightened color
+     */
+    public static int lightenColor(int baseColor, int amount) {
+        final double[] result = ColorUtilsFromCompat.getTempDouble3Array();
+        ColorUtilsFromCompat.colorToLAB(baseColor, result);
+        result[0] = Math.min(100, result[0] + amount);
+        return ColorUtilsFromCompat.LABToColor(result[0], result[1], result[2]);
+    }
+
+    /**
      * Framework copy of functions needed from android.support.v4.graphics.ColorUtils.
      */
     private static class ColorUtilsFromCompat {
@@ -434,7 +448,7 @@
          * Convert RGB components to its CIE Lab representative components.
          *
          * <ul>
-         * <li>outLab[0] is L [0 ...1)</li>
+         * <li>outLab[0] is L [0 ...100)</li>
          * <li>outLab[1] is a [-128...127)</li>
          * <li>outLab[2] is b [-128...127)</li>
          * </ul>
@@ -516,7 +530,7 @@
          * 2° Standard Observer (1931).</p>
          *
          * <ul>
-         * <li>outLab[0] is L [0 ...1)</li>
+         * <li>outLab[0] is L [0 ...100)</li>
          * <li>outLab[1] is a [-128...127)</li>
          * <li>outLab[2] is b [-128...127)</li>
          * </ul>
@@ -634,7 +648,7 @@
                     : (XYZ_KAPPA * component + 16) / 116;
         }
 
-        private static double[] getTempDouble3Array() {
+        public static double[] getTempDouble3Array() {
             double[] result = TEMP_ARRAY.get();
             if (result == null) {
                 result = new double[3];
diff --git a/core/java/com/android/internal/view/FloatingActionMode.java b/core/java/com/android/internal/view/FloatingActionMode.java
index 31ab26f..831c646 100644
--- a/core/java/com/android/internal/view/FloatingActionMode.java
+++ b/core/java/com/android/internal/view/FloatingActionMode.java
@@ -26,6 +26,7 @@
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.ViewParent;
+import android.util.DisplayMetrics;
 
 import com.android.internal.R;
 import com.android.internal.util.Preconditions;
@@ -209,11 +210,9 @@
     }
 
     private boolean isContentRectWithinBounds() {
-        mScreenRect.set(
-            0,
-            0,
-            mContext.getResources().getDisplayMetrics().widthPixels,
-            mContext.getResources().getDisplayMetrics().heightPixels);
+        DisplayMetrics metrics = mContext.getApplicationContext()
+                .getResources().getDisplayMetrics();
+        mScreenRect.set(0, 0, metrics.widthPixels, metrics.heightPixels);
 
         return intersectsClosed(mContentRectOnScreen, mScreenRect)
             && intersectsClosed(mContentRectOnScreen, mViewRectOnScreen);
diff --git a/core/java/com/android/internal/widget/ICheckCredentialProgressCallback.aidl b/core/java/com/android/internal/widget/ICheckCredentialProgressCallback.aidl
new file mode 100644
index 0000000..79717cf
--- /dev/null
+++ b/core/java/com/android/internal/widget/ICheckCredentialProgressCallback.aidl
@@ -0,0 +1,22 @@
+/*
+ * 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.widget;
+
+/** {@hide} */
+oneway interface ICheckCredentialProgressCallback {
+    void onCredentialVerified();
+}
diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl
index 05b839d..9fa558e 100644
--- a/core/java/com/android/internal/widget/ILockSettings.aidl
+++ b/core/java/com/android/internal/widget/ILockSettings.aidl
@@ -17,6 +17,7 @@
 package com.android.internal.widget;
 
 import android.app.trust.IStrongAuthTracker;
+import com.android.internal.widget.ICheckCredentialProgressCallback;
 import com.android.internal.widget.VerifyCredentialResponse;
 
 /** {@hide} */
@@ -29,10 +30,12 @@
     String getString(in String key, in String defaultValue, in int userId);
     void setLockPattern(in String pattern, in String savedPattern, int userId);
     void resetKeyStore(int userId);
-    VerifyCredentialResponse checkPattern(in String pattern, int userId);
+    VerifyCredentialResponse checkPattern(in String pattern, int userId,
+            in ICheckCredentialProgressCallback progressCallback);
     VerifyCredentialResponse verifyPattern(in String pattern, long challenge, int userId);
     void setLockPassword(in String password, in String savedPassword, int userId);
-    VerifyCredentialResponse checkPassword(in String password, int userId);
+    VerifyCredentialResponse checkPassword(in String password, int userId,
+            in ICheckCredentialProgressCallback progressCallback);
     VerifyCredentialResponse verifyPassword(in String password, long challenge, int userId);
     VerifyCredentialResponse verifyTiedProfileChallenge(String password, boolean isPattern, long challenge, int userId);
     boolean checkVoldPassword(int userId);
diff --git a/core/java/com/android/internal/widget/LockPatternChecker.java b/core/java/com/android/internal/widget/LockPatternChecker.java
index 713f56f..df9b0dd 100644
--- a/core/java/com/android/internal/widget/LockPatternChecker.java
+++ b/core/java/com/android/internal/widget/LockPatternChecker.java
@@ -14,6 +14,13 @@
      * Interface for a callback to be invoked after security check.
      */
     public interface OnCheckCallback {
+
+        /**
+         * Invoked as soon as possible we know that the credentials match. This will be called
+         * earlier than {@link #onChecked} but only if the credentials match.
+         */
+        default void onEarlyMatched() {}
+
         /**
          * Invoked when a security check is finished.
          *
@@ -92,7 +99,7 @@
             @Override
             protected Boolean doInBackground(Void... args) {
                 try {
-                    return utils.checkPattern(pattern, userId);
+                    return utils.checkPattern(pattern, userId, callback::onEarlyMatched);
                 } catch (RequestThrottledException ex) {
                     mThrottleTimeout = ex.getTimeoutMs();
                     return false;
@@ -199,7 +206,7 @@
             @Override
             protected Boolean doInBackground(Void... args) {
                 try {
-                    return utils.checkPassword(password, userId);
+                    return utils.checkPassword(password, userId, callback::onEarlyMatched);
                 } catch (RequestThrottledException ex) {
                     mThrottleTimeout = ex.getTimeoutMs();
                     return false;
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index b7ce7d7..2a79d28 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -17,6 +17,7 @@
 package com.android.internal.widget;
 
 import android.annotation.IntDef;
+import android.annotation.Nullable;
 import android.app.admin.DevicePolicyManager;
 import android.app.trust.IStrongAuthTracker;
 import android.app.trust.TrustManager;
@@ -32,7 +33,6 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
-import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.storage.IMountService;
@@ -149,6 +149,7 @@
     private DevicePolicyManager mDevicePolicyManager;
     private ILockSettings mLockSettingsService;
     private UserManager mUserManager;
+    private final Handler mHandler;
 
     /**
      * Use {@link TrustManager#isTrustUsuallyManaged(int)}.
@@ -230,6 +231,9 @@
     public LockPatternUtils(Context context) {
         mContext = context;
         mContentResolver = context.getContentResolver();
+
+        Looper looper = Looper.myLooper();
+        mHandler = looper != null ? new Handler(looper) : null;
     }
 
     private ILockSettings getLockSettings() {
@@ -341,10 +345,23 @@
      */
     public boolean checkPattern(List<LockPatternView.Cell> pattern, int userId)
             throws RequestThrottledException {
+        return checkPattern(pattern, userId, null /* progressCallback */);
+    }
+
+    /**
+     * Check to see if a pattern matches the saved pattern.  If no pattern exists,
+     * always returns true.
+     * @param pattern The pattern to check.
+     * @return Whether the pattern matches the stored one.
+     */
+    public boolean checkPattern(List<LockPatternView.Cell> pattern, int userId,
+            @Nullable CheckCredentialProgressCallback progressCallback)
+            throws RequestThrottledException {
         throwIfCalledOnMainThread();
         try {
             VerifyCredentialResponse response =
-                    getLockSettings().checkPattern(patternToString(pattern), userId);
+                    getLockSettings().checkPattern(patternToString(pattern), userId,
+                            wrapCallback(progressCallback));
 
             if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) {
                 return true;
@@ -354,7 +371,7 @@
                 return false;
             }
         } catch (RemoteException re) {
-            return true;
+            return false;
         }
     }
 
@@ -423,10 +440,22 @@
      * @return Whether the password matches the stored one.
      */
     public boolean checkPassword(String password, int userId) throws RequestThrottledException {
+        return checkPassword(password, userId, null /* progressCallback */);
+    }
+
+    /**
+     * Check to see if a password matches the saved password.  If no password exists,
+     * always returns true.
+     * @param password The password to check.
+     * @return Whether the password matches the stored one.
+     */
+    public boolean checkPassword(String password, int userId,
+            @Nullable CheckCredentialProgressCallback progressCallback)
+            throws RequestThrottledException {
         throwIfCalledOnMainThread();
         try {
             VerifyCredentialResponse response =
-                    getLockSettings().checkPassword(password, userId);
+                    getLockSettings().checkPassword(password, userId, wrapCallback(progressCallback));
             if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) {
                 return true;
             } else if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_RETRY) {
@@ -435,7 +464,7 @@
                 return false;
             }
         } catch (RemoteException re) {
-            return true;
+            return false;
         }
     }
 
@@ -1481,6 +1510,37 @@
         return (getStrongAuthForUser(userId) & ~StrongAuthTracker.ALLOWING_FINGERPRINT) == 0;
     }
 
+    private ICheckCredentialProgressCallback wrapCallback(
+            final CheckCredentialProgressCallback callback) {
+        if (callback == null) {
+            return null;
+        } else {
+            if (mHandler == null) {
+                throw new IllegalStateException("Must construct LockPatternUtils on a looper thread"
+                        + " to use progress callbacks.");
+            }
+            return new ICheckCredentialProgressCallback.Stub() {
+
+                @Override
+                public void onCredentialVerified() throws RemoteException {
+                    mHandler.post(callback::onEarlyMatched);
+                }
+            };
+        }
+    }
+
+    /**
+     * Callback to be notified about progress when checking credentials.
+     */
+    public interface CheckCredentialProgressCallback {
+
+        /**
+         * Called as soon as possible when we know that the credentials match but the user hasn't
+         * been fully unlocked.
+         */
+        void onEarlyMatched();
+    }
+
     /**
      * Tracks the global strong authentication state.
      */
diff --git a/core/java/com/android/internal/widget/NotificationActionListLayout.java b/core/java/com/android/internal/widget/NotificationActionListLayout.java
index 9dd118c..073aac5 100644
--- a/core/java/com/android/internal/widget/NotificationActionListLayout.java
+++ b/core/java/com/android/internal/widget/NotificationActionListLayout.java
@@ -17,11 +17,13 @@
 package com.android.internal.widget;
 
 import android.content.Context;
+import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.Pair;
 import android.view.Gravity;
+import android.view.RemotableViewMethod;
 import android.view.View;
-import android.view.ViewGroup;
+import android.widget.LinearLayout;
 import android.widget.RemoteViews;
 import android.widget.TextView;
 
@@ -33,11 +35,14 @@
  * the remaining available width, and the last action consumes the remaining space.
  */
 @RemoteViews.RemoteView
-public class NotificationActionListLayout extends ViewGroup {
+public class NotificationActionListLayout extends LinearLayout {
 
     private int mTotalWidth = 0;
     private ArrayList<Pair<Integer, TextView>> mMeasureOrderTextViews = new ArrayList<>();
     private ArrayList<View> mMeasureOrderOther = new ArrayList<>();
+    private boolean mMeasureLinearly;
+    private int mDefaultPaddingEnd;
+    private Drawable mDefaultBackground;
 
     public NotificationActionListLayout(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -45,6 +50,10 @@
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (mMeasureLinearly) {
+            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+            return;
+        }
         final int N = getChildCount();
         int textViews = 0;
         int otherViews = 0;
@@ -186,6 +195,10 @@
 
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        if (mMeasureLinearly) {
+            super.onLayout(changed, left, top, right, bottom);
+            return;
+        }
         final boolean isLayoutRtl = isLayoutRtl();
         final int paddingTop = mPaddingTop;
 
@@ -241,26 +254,24 @@
     }
 
     @Override
-    public LayoutParams generateLayoutParams(AttributeSet attrs) {
-        return new MarginLayoutParams(getContext(), attrs);
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mDefaultPaddingEnd = getPaddingEnd();
+        mDefaultBackground = getBackground();
     }
 
-    @Override
-    protected LayoutParams generateDefaultLayoutParams() {
-        return new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
-    }
-
-    @Override
-    protected LayoutParams generateLayoutParams(LayoutParams p) {
-        if (p instanceof MarginLayoutParams) {
-            return new MarginLayoutParams((MarginLayoutParams)p);
-        }
-        return new MarginLayoutParams(p);
-    }
-
-    @Override
-    protected boolean checkLayoutParams(LayoutParams p) {
-        return p instanceof MarginLayoutParams;
+    /**
+     * Set whether the list is in a mode where some actions are emphasized. This will trigger an
+     * equal measuring where all actions are full height and change a few parameters like
+     * the padding.
+     */
+    @RemotableViewMethod
+    public void setEmphasizedMode(boolean emphasizedMode) {
+        mMeasureLinearly = emphasizedMode;
+        setPaddingRelative(getPaddingStart(), getPaddingTop(),
+                emphasizedMode ? 0 : mDefaultPaddingEnd, getPaddingBottom());
+        setBackground(emphasizedMode ? null : mDefaultBackground);
+        requestLayout();
     }
 
     public static final Comparator<Pair<Integer, TextView>> MEASURE_ORDER_COMPARATOR
diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
index 8b9d503..e84cc27 100644
--- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java
+++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
@@ -245,7 +245,7 @@
                 final float y = ev.getY();
                 mInitialTouchX = x;
                 mInitialTouchY = mLastTouchY = y;
-                mOpenOnClick = isListChildUnderClipped(x, y) && mCollapsibleHeight > 0;
+                mOpenOnClick = isListChildUnderClipped(x, y) && mCollapseOffset > 0;
             }
             break;
 
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 536c09c..be53cf3 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -276,7 +276,15 @@
     return jniRegisterNativeMethods(env, className, gMethods, numMethods);
 }
 
-void AndroidRuntime::setArgv0(const char* argv0) {
+void AndroidRuntime::setArgv0(const char* argv0, bool setProcName) {
+    if (setProcName) {
+        int len = strlen(argv0);
+        if (len < 15) {
+            pthread_setname_np(pthread_self(), argv0);
+        } else {
+            pthread_setname_np(pthread_self(), argv0 + len - 15);
+        }
+    }
     memset(mArgBlockStart, 0, mArgBlockLength);
     strlcpy(mArgBlockStart, argv0, mArgBlockLength);
 }
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 06188d2..695aed5 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -72,7 +72,7 @@
         case SkEncodedFormat::kWBMP_SkEncodedFormat:
             mimeType = "image/vnd.wap.wbmp";
             break;
-        case SkEncodedFormat::kRAW_SkEncodedFormat:
+        case SkEncodedFormat::kDNG_SkEncodedFormat:
             mimeType = "image/x-adobe-dng";
             break;
         default:
diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h
index 5baa8f8..a5e94a10 100644
--- a/core/jni/android/graphics/GraphicsJNI.h
+++ b/core/jni/android/graphics/GraphicsJNI.h
@@ -10,7 +10,6 @@
 #include "SkMallocPixelRef.h"
 #include "SkPoint.h"
 #include "SkRect.h"
-#include "SkImageDecoder.h"
 #include <jni.h>
 #include <hwui/Canvas.h>
 
diff --git a/core/jni/android/graphics/NinePatchPeeker.cpp b/core/jni/android/graphics/NinePatchPeeker.cpp
index 8a84a35..1ea5650 100644
--- a/core/jni/android/graphics/NinePatchPeeker.cpp
+++ b/core/jni/android/graphics/NinePatchPeeker.cpp
@@ -17,7 +17,6 @@
 #include "NinePatchPeeker.h"
 
 #include "SkBitmap.h"
-#include "SkImageDecoder.h"
 
 using namespace android;
 
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index b586c43..67c94fb 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -769,6 +769,21 @@
         return false;
     }
 
+    // Don't count glyphs that are the recommended "space" glyph and are zero width.
+    // This logic makes assumptions about HarfBuzz layout, but does correctly handle
+    // cases where ligatures form and zero width space glyphs are left in as
+    // placeholders.
+    static size_t countNonSpaceGlyphs(const minikin::Layout& layout) {
+        size_t count = 0;
+        static unsigned int kSpaceGlyphId = 3;
+        for (size_t i = 0; i < layout.nGlyphs(); i++) {
+            if (layout.getGlyphId(i) != kSpaceGlyphId || layout.getCharAdvance(i) != 0.0) {
+                count++;
+            }
+        }
+        return count;
+    }
+
     // Returns true if the given string is exact one pair of regional indicators.
     static bool isFlag(const jchar* str, size_t length) {
         const jchar RI_LEAD_SURROGATE = 0xD83C;
@@ -832,7 +847,7 @@
         minikin::Layout layout;
         MinikinUtils::doLayout(&layout, paint, bidiFlags, typeface, str.get(), 0, str.size(),
                 str.size());
-        size_t nGlyphs = layout.nGlyphs();
+        size_t nGlyphs = countNonSpaceGlyphs(layout);
         if (nGlyphs != 1 && nChars > 1) {
             // multiple-character input, and was not a ligature
             // TODO: handle ZWJ/ZWNJ characters specially so we can detect certain ligatures
diff --git a/core/jni/android/graphics/YuvToJpegEncoder.cpp b/core/jni/android/graphics/YuvToJpegEncoder.cpp
index 7d0c39c..31567f7 100644
--- a/core/jni/android/graphics/YuvToJpegEncoder.cpp
+++ b/core/jni/android/graphics/YuvToJpegEncoder.cpp
@@ -1,5 +1,5 @@
 #include "CreateJavaOutputStreamAdaptor.h"
-#include "SkJpegUtility.h"
+#include "SkJPEGWriteUtility.h"
 #include "YuvToJpegEncoder.h"
 #include <ui/PixelFormat.h>
 #include <hardware/hardware.h>
diff --git a/core/jni/android/graphics/pdf/PdfDocument.cpp b/core/jni/android/graphics/pdf/PdfDocument.cpp
index d535193..acf9996 100644
--- a/core/jni/android/graphics/pdf/PdfDocument.cpp
+++ b/core/jni/android/graphics/pdf/PdfDocument.cpp
@@ -88,7 +88,7 @@
     }
 
     void write(SkWStream* stream) {
-        SkAutoTUnref<SkDocument> document(SkDocument::CreatePDF(stream));
+        sk_sp<SkDocument> document = SkDocument::MakePDF(stream);
         for (unsigned i = 0; i < mPages.size(); i++) {
             PageRecord* page =  mPages[i];
 
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index f37fd78..518f99e 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -43,8 +43,6 @@
 #include <sys/types.h> // for socketpair
 #include <sys/socket.h> // for socketpair
 
-static const bool kIsDebug = false;
-
 // fully-qualified class name
 #define CAMERA_METADATA_CLASS_NAME "android/hardware/camera2/impl/CameraMetadataNative"
 #define CHARACTERISTICS_KEY_CLASS_NAME "android/hardware/camera2/CameraCharacteristics$Key"
@@ -787,109 +785,16 @@
         // exception thrown by ScopedUtfChars
         return 0;
     }
-    size_t keyLength = strlen(key);
-
     ALOGV("%s (key = '%s')", __FUNCTION__, key);
 
-    sp<VendorTagDescriptor> vTags = VendorTagDescriptor::getGlobalVendorTagDescriptor();
-
-    SortedVector<String8> vendorSections;
-    size_t vendorSectionCount = 0;
-
-    if (vTags != NULL) {
-        vendorSections = vTags->getAllSectionNames();
-        vendorSectionCount = vendorSections.size();
-    }
-
-    // First, find the section by the longest string match
-    const char *section = NULL;
-    size_t sectionIndex = 0;
-    size_t sectionLength = 0;
-    size_t totalSectionCount = ANDROID_SECTION_COUNT + vendorSectionCount;
-    for (size_t i = 0; i < totalSectionCount; ++i) {
-
-        const char *str = (i < ANDROID_SECTION_COUNT) ? camera_metadata_section_names[i] :
-                vendorSections[i - ANDROID_SECTION_COUNT].string();
-        if (kIsDebug) {
-            ALOGV("%s: Trying to match against section '%s'", __FUNCTION__, str);
-        }
-        if (strstr(key, str) == key) { // key begins with the section name
-            size_t strLength = strlen(str);
-
-            if (kIsDebug) {
-                ALOGV("%s: Key begins with section name", __FUNCTION__);
-            }
-
-            // section name is the longest we've found so far
-            if (section == NULL || sectionLength < strLength) {
-                section = str;
-                sectionIndex = i;
-                sectionLength = strLength;
-
-                if (kIsDebug) {
-                    ALOGV("%s: Found new best section (%s)", __FUNCTION__, section);
-                }
-            }
-        }
-    }
-
-    // TODO: Make above get_camera_metadata_section_from_name ?
-
-    if (section == NULL) {
-        jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
-                             "Could not find section name for key '%s')", key);
-        return 0;
-    } else {
-        ALOGV("%s: Found matched section '%s' (%zu)",
-              __FUNCTION__, section, sectionIndex);
-    }
-
-    // Get the tag name component of the key
-    const char *keyTagName = key + sectionLength + 1; // x.y.z -> z
-    if (sectionLength + 1 >= keyLength) {
-        jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
-                             "Key length too short for key '%s')", key);
-        return 0;
-    }
-
-    // Match rest of name against the tag names in that section only
     uint32_t tag = 0;
-    if (sectionIndex < ANDROID_SECTION_COUNT) {
-        // Match built-in tags (typically android.*)
-        uint32_t tagBegin, tagEnd; // [tagBegin, tagEnd)
-        tagBegin = camera_metadata_section_bounds[sectionIndex][0];
-        tagEnd = camera_metadata_section_bounds[sectionIndex][1];
-
-        for (tag = tagBegin; tag < tagEnd; ++tag) {
-            const char *tagName = get_camera_metadata_tag_name(tag);
-
-            if (strcmp(keyTagName, tagName) == 0) {
-                ALOGV("%s: Found matched tag '%s' (%d)",
-                      __FUNCTION__, tagName, tag);
-                break;
-            }
-        }
-
-        if (tag == tagEnd) {
-            jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
-                                 "Could not find tag name for key '%s')", key);
-            return 0;
-        }
-    } else if (vTags != NULL) {
-        // Match vendor tags (typically com.*)
-        const String8 sectionName(section);
-        const String8 tagName(keyTagName);
-
-        status_t res = OK;
-        if ((res = vTags->lookupTag(tagName, sectionName, &tag)) != OK) {
-            jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
-                    "%s: No vendor tag matches key '%s'", __FUNCTION__, key);
-            return 0;
-        }
+    sp<VendorTagDescriptor> vTags =
+            VendorTagDescriptor::getGlobalVendorTagDescriptor();
+    status_t res = CameraMetadata::getTagFromName(key, vTags.get(), &tag);
+    if (res != OK) {
+        jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
+                             "Could not find tag for key '%s')", key);
     }
-
-    // TODO: Make above get_camera_metadata_tag_from_name ?
-
     return tag;
 }
 
diff --git a/core/jni/android_hardware_location_ContextHubService.cpp b/core/jni/android_hardware_location_ContextHubService.cpp
index a56eba6..9515a0e 100644
--- a/core/jni/android_hardware_location_ContextHubService.cpp
+++ b/core/jni/android_hardware_location_ContextHubService.cpp
@@ -21,28 +21,34 @@
 
 #include <inttypes.h>
 #include <jni.h>
-#include <queue>
-#include <unordered_map>
+#include <mutex>
 #include <string.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <unordered_map>
+#include <queue>
 
 #include <cutils/log.h>
 
 #include "JNIHelp.h"
 #include "core_jni_helpers.h"
 
-static constexpr int OS_APP_ID=-1;
+static constexpr int OS_APP_ID = -1;
+static constexpr uint64_t ALL_APPS = UINT64_C(0xFFFFFFFFFFFFFFFF);
 
-static constexpr int MIN_APP_ID=1;
-static constexpr int MAX_APP_ID=128;
+static constexpr int MIN_APP_ID = 1;
+static constexpr int MAX_APP_ID = 128;
 
-static constexpr size_t MSG_HEADER_SIZE=4;
-static constexpr int HEADER_FIELD_MSG_TYPE=0;
-//static constexpr int HEADER_FIELD_MSG_VERSION=1;
-static constexpr int HEADER_FIELD_HUB_HANDLE=2;
-static constexpr int HEADER_FIELD_APP_INSTANCE=3;
+static constexpr size_t MSG_HEADER_SIZE = 4;
+static constexpr size_t HEADER_FIELD_MSG_TYPE = 0;
+static constexpr size_t HEADER_FIELD_MSG_VERSION = 1;
+static constexpr size_t HEADER_FIELD_HUB_HANDLE = 2;
+static constexpr size_t HEADER_FIELD_APP_INSTANCE = 3;
+
+static constexpr size_t HEADER_FIELD_LOAD_APP_ID_LO = MSG_HEADER_SIZE;
+static constexpr size_t HEADER_FIELD_LOAD_APP_ID_HI = MSG_HEADER_SIZE + 1;
+static constexpr size_t MSG_HEADER_SIZE_LOAD_APP = MSG_HEADER_SIZE + 2;
 
 namespace android {
 
@@ -83,6 +89,7 @@
 
     jmethodID contextHubServiceMsgReceiptCallback;
     jmethodID contextHubServiceAddAppInstance;
+    jmethodID contextHubServiceDeleteAppInstance;
 };
 
 struct context_hub_info_s {
@@ -93,10 +100,53 @@
 };
 
 struct app_instance_info_s {
-    uint32_t hubHandle; // Id of the hub this app is on
-    int instanceId; // systemwide unique instance id - assigned
+    uint64_t truncName;          // Possibly truncated name for logging
+    uint32_t hubHandle;          // Id of the hub this app is on
+    int instanceId;              // system wide unique instance id - assigned
     struct hub_app_info appInfo; // returned from the HAL
-    uint64_t truncName; // Possibly truncated name - logging
+};
+
+/*
+ * TODO(ashutoshj): From original code review:
+ *
+ * So, I feel like we could possible do a better job of organizing this code,
+ * and being more C++-y.  Consider something like this:
+ * class TxnManager {
+ *  public:
+ *   TxnManager();
+ *   ~TxnManager();
+ *   int add(hub_message_e identifier, void *data);
+ *   int close();
+ *   bool isPending() const;
+ *   int fetchData(hub_message_e *identifier, void **data) const;
+ *
+ *  private:
+ *   bool mPending;
+ *   mutable std::mutex mLock;
+ *   hub_message_e mIdentifier;
+ *   void *mData;
+ * };
+ *
+ * And then, for example, we'd have things like:
+ * TxnManager::TxnManager() : mPending(false), mLock(), mIdentifier(), mData(nullptr) {}
+ * int TxnManager::add(hub_message_e identifier, void *data) {
+ *    std::lock_guard<std::mutex> lock(mLock);
+ *    mPending = true;
+ *    mData = txnData;
+ *    mIdentifier = txnIdentifier;
+ *    return 0;
+ *  }
+ * And then calling code would look like:
+ *    if (!db.txnManager.add(CONTEXT_HUB_LOAD_APP, txnInfo)) {
+ *
+ * This would make it clearer the nothing is manipulating any state within TxnManager
+ * unsafely and outside of these couple of calls.
+ */
+struct txnManager_s {
+    bool txnPending;              // Is a transaction pending
+    std::mutex m;                 // mutex for manager
+    hub_messages_e txnIdentifier; // What are we doing
+    void *txnData;                // Details
 };
 
 struct contextHubServiceDb_s {
@@ -105,12 +155,69 @@
     jniInfo_s jniInfo;
     std::queue<int> freeIds;
     std::unordered_map<int, app_instance_info_s> appInstances;
+    txnManager_s txnManager;
 };
 
 }  // unnamed namespace
 
 static contextHubServiceDb_s db;
 
+static bool initTxnManager() {
+    txnManager_s *mgr = &db.txnManager;
+
+    mgr->txnData = nullptr;
+    mgr->txnPending = false;
+    return true;
+}
+
+static int addTxn(hub_messages_e txnIdentifier, void *txnData) {
+    txnManager_s *mgr = &db.txnManager;
+
+    std::lock_guard<std::mutex>lock(mgr->m);
+
+    mgr->txnPending = true;
+    mgr->txnData = txnData;
+    mgr->txnIdentifier = txnIdentifier;
+
+    return 0;
+}
+
+static int closeTxn() {
+    txnManager_s *mgr = &db.txnManager;
+    std::lock_guard<std::mutex>lock(mgr->m);
+    mgr->txnPending = false;
+    free(mgr->txnData);
+    mgr->txnData = nullptr;
+
+    return 0;
+}
+
+static bool isTxnPending() {
+    txnManager_s *mgr = &db.txnManager;
+    std::lock_guard<std::mutex>lock(mgr->m);
+    return mgr->txnPending;
+}
+
+static int fetchTxnData(hub_messages_e *id, void **data) {
+    txnManager_s *mgr = &db.txnManager;
+
+    if (!id || !data) {
+        ALOGW("Null params id %p, data %p", id, data);
+        return -1;
+    }
+
+    std::lock_guard<std::mutex>lock(mgr->m);
+    if (!mgr->txnPending) {
+        ALOGW("No Transactions pending");
+        return -1;
+    }
+
+    // else
+    *id = mgr->txnIdentifier;
+    *data = mgr->txnData;
+    return 0;
+}
+
 int context_hub_callback(uint32_t hubId, const struct hub_message_t *msg,
                          void *cookie);
 
@@ -152,13 +259,21 @@
     }
 }
 
-static int get_hub_id_for_app_instance(int id) {
+static int get_hub_handle_for_app_instance(int id) {
     if (!db.appInstances.count(id)) {
         ALOGD("%s: Cannot find app for app instance %d", __FUNCTION__, id);
         return -1;
     }
 
-    int hubHandle = db.appInstances[id].hubHandle;
+    return db.appInstances[id].hubHandle;
+}
+
+static int get_hub_id_for_app_instance(int id) {
+    int hubHandle = get_hub_handle_for_app_instance(id);
+
+    if (hubHandle < 0) {
+        return -1;
+    }
 
     return db.hubInfo.hubs[hubHandle].hub_id;
 }
@@ -184,7 +299,7 @@
     return 0;
 }
 
-static void send_query_for_apps() {
+static void query_hub_for_apps(uint64_t appId, uint32_t hubHandle) {
     hub_message_t msg;
     query_apps_request_t queryMsg;
 
@@ -194,23 +309,31 @@
     msg.message_len  = sizeof(queryMsg);
     msg.message = &queryMsg;
 
+    ALOGD("Sending query for apps to hub %" PRIu32, hubHandle);
+    set_os_app_as_destination(&msg, hubHandle);
+    if (send_msg_to_hub(&msg, hubHandle) != 0) {
+        ALOGW("Could not query hub %" PRIu32 " for apps", hubHandle);
+    }
+}
+
+static void sendQueryForApps(uint64_t appId) {
     for (int i = 0; i < db.hubInfo.numHubs; i++ ) {
-        ALOGD("Sending query for apps to hub %d", i);
-        set_os_app_as_destination(&msg, i);
-        if (send_msg_to_hub(&msg, i) != 0) {
-          ALOGW("Could not query hub %i for apps", i);
-        }
+        query_hub_for_apps(appId, i);
     }
 }
 
 static int return_id(int id) {
     // Note : This method is not thread safe.
-    // id returned is guarenteed to be in use
-    db.freeIds.push(id);
-    return 0;
+    // id returned is guaranteed to be in use
+    if (id >= 0) {
+        db.freeIds.push(id);
+        return 0;
+    }
+
+    return -1;
 }
 
-static int generate_id(void) {
+static int generate_id() {
     // Note : This method is not thread safe.
     int retVal = -1;
 
@@ -222,23 +345,31 @@
     return retVal;
 }
 
-int add_app_instance(const hub_app_info *appInfo, uint32_t hubHandle, JNIEnv *env) {
+
+static int add_app_instance(const hub_app_info *appInfo, uint32_t hubHandle,
+        int appInstanceHandle, JNIEnv *env) {
+
+    ALOGI("Loading App");
+
     // Not checking if the apps are indeed distinct
     app_instance_info_s entry;
-    int appInstanceHandle = generate_id();
-
     assert(appInfo);
 
-    if (appInstanceHandle < 0) {
-        ALOGE("Cannot find resources to add app instance %d",
-              appInstanceHandle);
-        return -1;
+    if (db.appInstances.count(appInstanceHandle) == 0) {
+        appInstanceHandle = generate_id();
+        if (appInstanceHandle < 0) {
+            ALOGE("Cannot find resources to add app instance %d",
+                  appInstanceHandle);
+            return -1;
+        }
     }
 
     entry.appInfo = *appInfo;
+
     entry.instanceId = appInstanceHandle;
     entry.truncName = appInfo->app_name.id;
     entry.hubHandle = hubHandle;
+
     db.appInstances[appInstanceHandle] = entry;
 
     // Finally - let the service know of this app instance
@@ -254,17 +385,70 @@
     return appInstanceHandle;
 }
 
-int delete_app_instance(int id) {
+int delete_app_instance(int id, JNIEnv *env) {
     if (!db.appInstances.count(id)) {
+        ALOGW("Cannot find App id : %d", id);
         return -1;
     }
 
     return_id(id);
     db.appInstances.erase(id);
+    if (env->CallIntMethod(db.jniInfo.jContextHubService,
+                       db.jniInfo.contextHubServiceDeleteAppInstance,
+                       id) != 0) {
+        ALOGW("Could not delete App id : %d", id);
+        return -1;
+    }
+
+    ALOGI("Deleted App id : %d", id);
 
     return 0;
 }
 
+static int startLoadAppTxn(uint64_t appId, int hubHandle) {
+    app_instance_info_s *txnInfo = (app_instance_info_s *)malloc(sizeof(app_instance_info_s));
+    int instanceId = generate_id();
+
+    if (!txnInfo || instanceId < 0) {
+        return_id(instanceId);
+        free(txnInfo);
+        return -1;
+    }
+
+    txnInfo->truncName = appId;
+    txnInfo->hubHandle = hubHandle;
+    txnInfo->instanceId = instanceId;
+
+    txnInfo->appInfo.app_name.id = appId;
+    txnInfo->appInfo.num_mem_ranges = 0;
+    txnInfo->appInfo.version = -1; // Awaited
+
+    if (addTxn(CONTEXT_HUB_LOAD_APP, txnInfo) != 0) {
+        return_id(instanceId);
+        free(txnInfo);
+        return -1;
+    }
+
+    return 0;
+}
+
+static int startUnloadAppTxn(uint32_t appInstanceHandle) {
+    uint32_t *txnData = (uint32_t *) malloc(sizeof(uint32_t));
+    if (!txnData) {
+        ALOGW("Cannot allocate memory to start unload transaction");
+        return -1;
+    }
+
+    *txnData = appInstanceHandle;
+
+    if (addTxn(CONTEXT_HUB_UNLOAD_APP, txnData) != 0) {
+        free(txnData);
+        ALOGW("Cannot start transaction to unload app");
+        return -1;
+    }
+
+    return 0;
+}
 
 static void initContextHubService() {
     int err = 0;
@@ -285,6 +469,7 @@
         db.freeIds.push(i);
     }
 
+    initTxnManager();
     if (db.hubInfo.contextHubModule) {
         int retNumHubs = db.hubInfo.contextHubModule->get_hubs(db.hubInfo.contextHubModule,
                                                                  &db.hubInfo.hubs);
@@ -302,6 +487,7 @@
 
             for (i = 0; i < db.hubInfo.numHubs; i++) {
                 db.hubInfo.cookies[i] = db.hubInfo.hubs[i].hub_id;
+                ALOGI("Subscribing to hubHandle %d with OS App name %" PRIu64, i, db.hubInfo.hubs[i].os_app_name.id);
                 if (db.hubInfo.contextHubModule->subscribe_messages(db.hubInfo.hubs[i].hub_id,
                                                                     context_hub_callback,
                                                                     &db.hubInfo.cookies[i]) == 0) {
@@ -309,7 +495,7 @@
             }
         }
 
-        send_query_for_apps();
+        sendQueryForApps(ALL_APPS);
     } else {
         ALOGW("No Context Hub Module present");
     }
@@ -346,7 +532,8 @@
     return ret;
 }
 
-int handle_query_apps_response(char *msg, int msgLen, uint32_t hubHandle) {
+int handle_query_apps_response(const uint8_t *msg, int msgLen,
+                               uint32_t hubHandle) {
     JNIEnv *env;
     if ((db.jniInfo.vm)->AttachCurrentThread(&env, nullptr) != JNI_OK) {
             return -1;
@@ -354,53 +541,202 @@
 
     int numApps = msgLen/sizeof(hub_app_info);
     hub_app_info info;
-    hub_app_info *unalignedInfoAddr = (hub_app_info*)msg;
+    const hub_app_info *unalignedInfoAddr = (const hub_app_info*)msg;
 
     for (int i = 0; i < numApps; i++, unalignedInfoAddr++) {
         memcpy(&info, unalignedInfoAddr, sizeof(info));
-        add_app_instance(&info, hubHandle, env);
+        // We will only have one instance of the app
+        // TODO : Change this logic once we support multiple instances of the same app
+        int appInstance = get_app_instance_for_app_id(info.app_name.id);
+        add_app_instance(&info, hubHandle, appInstance, env);
     }
 
     return 0;
 }
 
+static void passOnOsResponse(uint32_t hubHandle, uint32_t msgType,
+                             status_response_t *rsp, int8_t *additionalData,
+                             size_t additionalDataLen) {
+    JNIEnv *env;
 
-int handle_os_message(uint32_t msgType, uint32_t hubHandle,
-                      char *msg, int msgLen) {
-    int retVal;
+    if ((db.jniInfo.vm)->AttachCurrentThread(&env, nullptr) != JNI_OK) {
+        ALOGW("Cannot latch to JNI env, dropping OS response %" PRIu32, msgType);
+        return;
+    }
 
-    //ALOGD("Rcd OS message from hubHandle %" PRIu32 " type %" PRIu32 " length %d",
-    //      hubHandle, msgType, msgLen);
+    uint32_t header[MSG_HEADER_SIZE];
+    memset(header, 0, sizeof(header));
+
+    if (!additionalData) {
+        additionalDataLen = 0; // clamp
+    }
+    int msgLen = 1 + additionalDataLen;
+
+    int8_t *msg = new int8_t[msgLen];
+
+    if (!msg) {
+        ALOGW("Unexpected : Ran out of memory, cannot send response");
+        return;
+    }
+
+    header[HEADER_FIELD_MSG_TYPE] = msgType;
+    header[HEADER_FIELD_MSG_VERSION] = 0;
+    header[HEADER_FIELD_HUB_HANDLE] = hubHandle;
+    header[HEADER_FIELD_APP_INSTANCE] = OS_APP_ID;
+
+    msg[0] = rsp->result;
+
+    if (additionalData) {
+        memcpy(&msg[1], additionalData, additionalDataLen);
+    }
+
+    jbyteArray jmsg = env->NewByteArray(msgLen);
+    jintArray jheader = env->NewIntArray(sizeof(header));
+
+    env->SetByteArrayRegion(jmsg, 0, msgLen, (jbyte *)msg);
+    env->SetIntArrayRegion(jheader, 0, sizeof(header), (jint *)header);
+
+    ALOGI("Passing msg type %" PRIu32 " from app %" PRIu32 " from hub %" PRIu32,
+          header[HEADER_FIELD_MSG_TYPE], header[HEADER_FIELD_APP_INSTANCE],
+          header[HEADER_FIELD_HUB_HANDLE]);
+
+    env->CallIntMethod(db.jniInfo.jContextHubService,
+                       db.jniInfo.contextHubServiceMsgReceiptCallback,
+                       jheader, jmsg);
+
+    delete[] msg;
+}
+
+void closeUnloadTxn(bool success) {
+    void *txnData = nullptr;
+    hub_messages_e txnId;
+
+    if (success && fetchTxnData(&txnId, &txnData) == 0 &&
+        txnId == CONTEXT_HUB_UNLOAD_APP) {
+        db.appInstances.erase(*(uint32_t *)txnData);
+    } else {
+        ALOGW("Could not unload the app successfully ! success %d, txnData %p", success, txnData);
+    }
+
+    closeTxn();
+}
+
+void closeLoadTxn(bool success, int *appInstanceHandle) {
+    void *txnData;
+    hub_messages_e txnId;
+
+    if (success && fetchTxnData(&txnId, &txnData) == 0 &&
+        txnId == CONTEXT_HUB_LOAD_APP) {
+        app_instance_info_s *info = (app_instance_info_s *)txnData;
+        *appInstanceHandle = info->instanceId;
+
+        JNIEnv *env;
+        if ((db.jniInfo.vm)->AttachCurrentThread(&env, nullptr) == JNI_OK) {
+            add_app_instance(&info->appInfo, info->hubHandle, info->instanceId, env);
+        } else {
+            ALOGW("Could not attach to JVM !");
+        }
+        sendQueryForApps(info->appInfo.app_name.id);
+    } else {
+        ALOGW("Could not load the app successfully ! Unexpected failure");
+    }
+
+    closeTxn();
+}
+
+static bool isValidOsStatus(const uint8_t *msg, size_t msgLen,
+                            status_response_t *rsp) {
+    // Workaround a bug in some HALs
+    if (msgLen == 1) {
+        rsp->result = msg[0];
+        return true;
+    }
+
+    if (!msg || msgLen != sizeof(*rsp)) {
+        ALOGW("Received invalid response %p of size %zu", msg, msgLen);
+        return false;
+    }
+
+    memcpy(rsp, msg, sizeof(*rsp));
+
+    // No sanity checks on return values
+    return true;
+}
+
+static void invalidateNanoApps(uint32_t hubHandle) {
+    JNIEnv *env;
+
+    if ((db.jniInfo.vm)->AttachCurrentThread(&env, nullptr) != JNI_OK) {
+        ALOGW("Could not attach to JVM !");
+    }
+
+    auto end = db.appInstances.end();
+    for (auto current = db.appInstances.begin(); current != end; ) {
+        app_instance_info_s info = current->second;
+        current++;
+        if (info.hubHandle == hubHandle) {
+             delete_app_instance(info.instanceId, env);
+        }
+    }
+}
+
+static int handle_os_message(uint32_t msgType, uint32_t hubHandle,
+                             const uint8_t *msg, int msgLen) {
+    int retVal = -1;
+
+    ALOGD("Rcd OS message from hubHandle %" PRIu32 " type %" PRIu32 " length %d",
+          hubHandle, msgType, msgLen);
+
+    struct status_response_t rsp;
 
     switch(msgType) {
-        case CONTEXT_HUB_APPS_ENABLE:
-            retVal = 0;
-            break;
 
-        case CONTEXT_HUB_APPS_DISABLE:
-            retVal = 0;
-            break;
+      case CONTEXT_HUB_APPS_ENABLE:
+      case CONTEXT_HUB_APPS_DISABLE:
+      case CONTEXT_HUB_LOAD_APP:
+      case CONTEXT_HUB_UNLOAD_APP:
+          if (isValidOsStatus(msg, msgLen, &rsp)) {
+              if (msgType == CONTEXT_HUB_LOAD_APP) {
+                  int appInstanceHandle;
+                  closeLoadTxn(rsp.result == 0, &appInstanceHandle);
+                  passOnOsResponse(hubHandle, msgType, &rsp, (int8_t *)(&appInstanceHandle),
+                                   sizeof(appInstanceHandle));
+              } else if (msgType == CONTEXT_HUB_UNLOAD_APP) {
+                  closeUnloadTxn(rsp.result == 0);
+                  passOnOsResponse(hubHandle, msgType, &rsp, nullptr, 0);
+              } else {
+                  passOnOsResponse(hubHandle, msgType, &rsp, nullptr, 0);
+              }
+              retVal = 0;
+          }
+          break;
 
-        case CONTEXT_HUB_LOAD_APP:
-            retVal = 0;
-            break;
+      case CONTEXT_HUB_QUERY_APPS:
+          rsp.result = 0;
+          retVal = handle_query_apps_response(msg, msgLen, hubHandle);
+          passOnOsResponse(hubHandle, msgType, &rsp, nullptr, 0);
+          break;
 
-        case CONTEXT_HUB_UNLOAD_APP:
-            retVal = 0;
-            break;
+      case CONTEXT_HUB_QUERY_MEMORY:
+          // Deferring this use
+          retVal = 0;
+          break;
 
-        case CONTEXT_HUB_QUERY_APPS:
-            retVal = handle_query_apps_response(msg, msgLen, hubHandle);
-            break;
+      case CONTEXT_HUB_OS_REBOOT:
+          if (isValidOsStatus(msg, msgLen, &rsp)) {
+              rsp.result = 0;
+              ALOGW("Context Hub handle %d restarted", hubHandle);
+              closeTxn();
+              passOnOsResponse(hubHandle, msgType, &rsp, nullptr, 0);
+              invalidateNanoApps(hubHandle);
+              query_hub_for_apps(ALL_APPS, hubHandle);
+              retVal = 0;
+          }
+          break;
 
-        case CONTEXT_HUB_QUERY_MEMORY:
-            retVal = 0;
-            break;
-
-        default:
-            retVal = -1;
-            break;
-
+      default:
+          retVal = -1;
+          break;
     }
 
     return retVal;
@@ -420,10 +756,12 @@
     }
 }
 
+
 int context_hub_callback(uint32_t hubId,
                          const struct hub_message_t *msg,
                          void *cookie) {
     if (!msg) {
+        ALOGW("NULL message");
         return -1;
     }
     if (!sanity_check_cookie(cookie, hubId)) {
@@ -433,11 +771,12 @@
         return -1;
     }
 
+
     uint32_t messageType = msg->message_type;
     uint32_t hubHandle = *(uint32_t*) cookie;
 
     if (messageType < CONTEXT_HUB_TYPE_PRIVATE_MSG_BASE) {
-        handle_os_message(messageType, hubHandle, (char*) msg->message, msg->message_len);
+        handle_os_message(messageType, hubHandle, (uint8_t*) msg->message, msg->message_len);
     } else {
         int appHandle = get_app_instance_for_app_id(msg->app_name.id);
         if (appHandle < 0) {
@@ -528,7 +867,9 @@
                  env->GetMethodID(db.jniInfo.contextHubServiceClass,
                                     "addAppInstance", "(IIJI)I");
 
-
+    db.jniInfo.contextHubServiceDeleteAppInstance =
+                 env->GetMethodID(db.jniInfo.contextHubServiceClass,
+                                    "deleteAppInstance", "(I)I");
 
     return 0;
 }
@@ -538,8 +879,6 @@
     jintArray jintBuf;
     jobjectArray jmemBuf;
 
-    int dummyConnectedSensors[] = {1, 2, 3, 4, 5};
-
     jobject jHub = env->NewObject(db.jniInfo.contextHubInfoClass,
                                   db.jniInfo.contextHubInfoCtor);
     env->CallVoidMethod(jHub, db.jniInfo.contextHubInfoSetId, hub->hub_id);
@@ -569,11 +908,21 @@
                         hub->max_supported_msg_len);
 
 
-    // TODO : jintBuf = env->NewIntArray(hub->num_connected_sensors);
-    // TODO : env->SetIntArrayRegion(jintBuf, 0, hub->num_connected_sensors,
-    //                               hub->connected_sensors);
-    jintBuf = env->NewIntArray(array_length(dummyConnectedSensors));
-    env->SetIntArrayRegion(jintBuf, 0, hub->num_connected_sensors, dummyConnectedSensors);
+    jintBuf = env->NewIntArray(hub->num_connected_sensors);
+    int *connectedSensors = new int[hub->num_connected_sensors];
+
+    if (!connectedSensors) {
+      ALOGW("Cannot allocate memory! Unexpected");
+      assert(false);
+    } else {
+      for (unsigned int i = 0; i < hub->num_connected_sensors; i++) {
+        connectedSensors[i] = hub->connected_sensors[i].sensor_id;
+      }
+    }
+
+    env->SetIntArrayRegion(jintBuf, 0, hub->num_connected_sensors,
+                           connectedSensors);
+
     env->CallVoidMethod(jHub, db.jniInfo.contextHubInfoSetSupportedSensors, jintBuf);
     env->DeleteLocalRef(jintBuf);
 
@@ -584,6 +933,7 @@
     env->DeleteLocalRef(jmemBuf);
 
 
+    delete[] connectedSensors;
     return jHub;
 }
 
@@ -622,33 +972,98 @@
     jbyte *data = env->GetByteArrayElements(data_, 0);
     int dataBufferLength = env->GetArrayLength(data_);
 
+    if (numHeaderElements < MSG_HEADER_SIZE) {
+        ALOGW("Malformed header len");
+        return -1;
+    }
 
-    if (numHeaderElements >= MSG_HEADER_SIZE) {
-        bool setAddressSuccess;
-        int hubId;
-        hub_message_t msg;
+    uint32_t appInstanceHandle = header[HEADER_FIELD_APP_INSTANCE];
+    uint32_t msgType = header[HEADER_FIELD_MSG_TYPE];
+    int hubHandle = -1;
+    int hubId;
+    uint64_t appId;
+
+    if (msgType == CONTEXT_HUB_UNLOAD_APP) {
+        hubHandle = get_hub_handle_for_app_instance(appInstanceHandle);
+    } else if (msgType == CONTEXT_HUB_LOAD_APP) {
+        if (numHeaderElements < MSG_HEADER_SIZE_LOAD_APP) {
+            return -1;
+        }
+        uint64_t appIdLo = header[HEADER_FIELD_LOAD_APP_ID_LO];
+        uint64_t appIdHi = header[HEADER_FIELD_LOAD_APP_ID_HI];
+        appId = appIdHi << 32 | appIdLo;
+
+        hubHandle = header[HEADER_FIELD_HUB_HANDLE];
+    } else {
+        hubHandle = header[HEADER_FIELD_HUB_HANDLE];
+    }
+
+    if (hubHandle < 0) {
+        ALOGD("Invalid hub Handle %d", hubHandle);
+        return -1;
+    }
+
+    if (msgType == CONTEXT_HUB_LOAD_APP ||
+        msgType == CONTEXT_HUB_UNLOAD_APP) {
+
+        if (isTxnPending()) {
+            ALOGW("Cannot load or unload app while a transaction is pending !");
+            return -1;
+        }
+
+        if (msgType == CONTEXT_HUB_LOAD_APP) {
+            if (startLoadAppTxn(appId, hubHandle) != 0) {
+                ALOGW("Cannot Start Load Transaction");
+                return -1;
+            }
+        } else if (msgType == CONTEXT_HUB_UNLOAD_APP) {
+            if (startUnloadAppTxn(appInstanceHandle) != 0) {
+                ALOGW("Cannot Start UnLoad Transaction");
+                return -1;
+            }
+        }
+    }
+
+    bool setAddressSuccess = false;
+    hub_message_t msg;
+
+    msg.message_type = msgType;
+
+    if (msgType == CONTEXT_HUB_UNLOAD_APP) {
+        msg.message_len = sizeof(db.appInstances[appInstanceHandle].appInfo.app_name);
+        msg.message = &db.appInstances[appInstanceHandle].appInfo.app_name;
+        setAddressSuccess = (set_os_app_as_destination(&msg, hubHandle) == 0);
+        hubId = get_hub_id_for_hub_handle(hubHandle);
+    } else {
+        msg.message_len = dataBufferLength;
+        msg.message = data;
 
         if (header[HEADER_FIELD_APP_INSTANCE] == OS_APP_ID) {
-            setAddressSuccess = (set_os_app_as_destination(&msg, header[HEADER_FIELD_HUB_HANDLE]) == 0);
-            hubId = get_hub_id_for_hub_handle(header[HEADER_FIELD_HUB_HANDLE]);
+            setAddressSuccess = (set_os_app_as_destination(&msg, hubHandle) == 0);
+            hubId = get_hub_id_for_hub_handle(hubHandle);
         } else {
             setAddressSuccess = (set_dest_app(&msg, header[HEADER_FIELD_APP_INSTANCE]) == 0);
             hubId = get_hub_id_for_app_instance(header[HEADER_FIELD_APP_INSTANCE]);
         }
+    }
 
-        if (setAddressSuccess && hubId >= 0) {
-            msg.message_type = header[HEADER_FIELD_MSG_TYPE];
-            msg.message_len = dataBufferLength;
-            msg.message = data;
-            retVal = db.hubInfo.contextHubModule->send_message(hubId, &msg);
-        } else {
-          ALOGD("Could not find app instance %d on hubHandle %d, setAddress %d",
-                header[HEADER_FIELD_APP_INSTANCE],
-                header[HEADER_FIELD_HUB_HANDLE],
-                (int)setAddressSuccess);
-        }
+    if (setAddressSuccess && hubId >= 0) {
+        ALOGD("Asking HAL to remove app");
+        retVal = db.hubInfo.contextHubModule->send_message(hubId, &msg);
     } else {
-        ALOGD("Malformed header len");
+      ALOGD("Could not find app instance %d on hubHandle %d, setAddress %d",
+            header[HEADER_FIELD_APP_INSTANCE],
+            header[HEADER_FIELD_HUB_HANDLE],
+            (int)setAddressSuccess);
+    }
+
+    if (retVal != 0) {
+        ALOGD("Send Message failure - %d", retVal);
+        if (msgType == CONTEXT_HUB_LOAD_APP) {
+            closeLoadTxn(false, nullptr);
+        } else if (msgType == CONTEXT_HUB_UNLOAD_APP) {
+            closeUnloadTxn(false);
+        }
     }
 
     env->ReleaseIntArrayElements(header_, header, 0);
diff --git a/core/jni/android_media_AudioFormat.h b/core/jni/android_media_AudioFormat.h
index 6513304..092aaf6 100644
--- a/core/jni/android_media_AudioFormat.h
+++ b/core/jni/android_media_AudioFormat.h
@@ -20,18 +20,20 @@
 #include <system/audio.h>
 
 // keep these values in sync with AudioFormat.java
-#define ENCODING_PCM_16BIT  2
-#define ENCODING_PCM_8BIT   3
-#define ENCODING_PCM_FLOAT  4
-#define ENCODING_AC3        5
-#define ENCODING_E_AC3      6
-#define ENCODING_DTS        7
-#define ENCODING_DTS_HD     8
-#define ENCODING_MP3        9
-#define ENCODING_AAC_LC     10
-#define ENCODING_AAC_HE_V1  11
-#define ENCODING_AAC_HE_V2  12
-#define ENCODING_IEC61937   13
+#define ENCODING_PCM_16BIT      2
+#define ENCODING_PCM_8BIT       3
+#define ENCODING_PCM_FLOAT      4
+#define ENCODING_AC3            5
+#define ENCODING_E_AC3          6
+#define ENCODING_DTS            7
+#define ENCODING_DTS_HD         8
+#define ENCODING_MP3            9
+#define ENCODING_AAC_LC         10
+#define ENCODING_AAC_HE_V1      11
+#define ENCODING_AAC_HE_V2      12
+#define ENCODING_IEC61937       13
+#define ENCODING_DOLBY_TRUEHD   14
+
 #define ENCODING_INVALID    0
 #define ENCODING_DEFAULT    1
 
@@ -65,6 +67,8 @@
         return AUDIO_FORMAT_AAC_HE_V1;
     case ENCODING_AAC_HE_V2:
         return AUDIO_FORMAT_AAC_HE_V2;
+    case ENCODING_DOLBY_TRUEHD:
+        return AUDIO_FORMAT_DOLBY_TRUEHD;
     case ENCODING_IEC61937:
         return AUDIO_FORMAT_IEC61937;
     case ENCODING_DEFAULT:
@@ -108,6 +112,8 @@
         return ENCODING_AAC_HE_V2;
     case AUDIO_FORMAT_IEC61937:
         return ENCODING_IEC61937;
+    case AUDIO_FORMAT_DOLBY_TRUEHD:
+        return ENCODING_DOLBY_TRUEHD;
     case AUDIO_FORMAT_DEFAULT:
         return ENCODING_DEFAULT;
     default:
diff --git a/core/jni/android_net_NetUtils.cpp b/core/jni/android_net_NetUtils.cpp
index f79254d..26a2cf0 100644
--- a/core/jni/android_net_NetUtils.cpp
+++ b/core/jni/android_net_NetUtils.cpp
@@ -122,6 +122,99 @@
     }
 }
 
+static void android_net_utils_setupRaSocket(JNIEnv *env, jobject clazz, jobject javaFd,
+        jint ifIndex)
+{
+    static const int kLinkLocalHopLimit = 255;
+
+    int fd = jniGetFDFromFileDescriptor(env, javaFd);
+
+    // Set an ICMPv6 filter that only passes Router Solicitations.
+    struct icmp6_filter rs_only;
+    ICMP6_FILTER_SETBLOCKALL(&rs_only);
+    ICMP6_FILTER_SETPASS(ND_ROUTER_SOLICIT, &rs_only);
+    socklen_t len = sizeof(rs_only);
+    if (setsockopt(fd, IPPROTO_ICMPV6, ICMP6_FILTER, &rs_only, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "setsockopt(ICMP6_FILTER): %s", strerror(errno));
+        return;
+    }
+
+    // Most/all of the rest of these options can be set via Java code, but
+    // because we're here on account of setting an icmp6_filter go ahead
+    // and do it all natively for now.
+    //
+    // TODO: Consider moving these out to Java.
+
+    // Set the multicast hoplimit to 255 (link-local only).
+    int hops = kLinkLocalHopLimit;
+    len = sizeof(hops);
+    if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "setsockopt(IPV6_MULTICAST_HOPS): %s", strerror(errno));
+        return;
+    }
+
+    // Set the unicast hoplimit to 255 (link-local only).
+    hops = kLinkLocalHopLimit;
+    len = sizeof(hops);
+    if (setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &hops, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "setsockopt(IPV6_UNICAST_HOPS): %s", strerror(errno));
+        return;
+    }
+
+    // Explicitly disable multicast loopback.
+    int off = 0;
+    len = sizeof(off);
+    if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &off, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "setsockopt(IPV6_MULTICAST_LOOP): %s", strerror(errno));
+        return;
+    }
+
+    // Specify the IPv6 interface to use for outbound multicast.
+    len = sizeof(ifIndex);
+    if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF, &ifIndex, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "setsockopt(IPV6_MULTICAST_IF): %s", strerror(errno));
+        return;
+    }
+
+    // Additional options to be considered:
+    //     - IPV6_TCLASS
+    //     - IPV6_RECVPKTINFO
+    //     - IPV6_RECVHOPLIMIT
+
+    // Bind to [::].
+    const struct sockaddr_in6 sin6 = {
+            .sin6_family = AF_INET6,
+            .sin6_port = 0,
+            .sin6_flowinfo = 0,
+            .sin6_addr = IN6ADDR_ANY_INIT,
+            .sin6_scope_id = 0,
+    };
+    auto sa = reinterpret_cast<const struct sockaddr *>(&sin6);
+    len = sizeof(sin6);
+    if (bind(fd, sa, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "bind(IN6ADDR_ANY): %s", strerror(errno));
+        return;
+    }
+
+    // Join the all-routers multicast group, ff02::2%index.
+    struct ipv6_mreq all_rtrs = {
+        .ipv6mr_multiaddr = {{{0xff,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2}}},
+        .ipv6mr_interface = ifIndex,
+    };
+    len = sizeof(all_rtrs);
+    if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &all_rtrs, len) != 0) {
+        jniThrowExceptionFmt(env, "java/net/SocketException",
+                "setsockopt(IPV6_JOIN_GROUP): %s", strerror(errno));
+        return;
+    }
+}
+
 static jboolean android_net_utils_bindProcessToNetwork(JNIEnv *env, jobject thiz, jint netId)
 {
     return (jboolean) !setNetworkForProcess(netId);
@@ -170,6 +263,7 @@
     { "queryUserAccess", "(II)Z", (void*)android_net_utils_queryUserAccess },
     { "attachDhcpFilter", "(Ljava/io/FileDescriptor;)V", (void*) android_net_utils_attachDhcpFilter },
     { "attachRaFilter", "(Ljava/io/FileDescriptor;I)V", (void*) android_net_utils_attachRaFilter },
+    { "setupRaSocket", "(Ljava/io/FileDescriptor;I)V", (void*) android_net_utils_setupRaSocket },
 };
 
 int register_android_net_NetworkUtils(JNIEnv* env)
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 3d952b0..7487619 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -546,10 +546,8 @@
         env->ReleaseStringCritical(name, str);
     }
 
-    if (name8.size() > 0) {
-        const char* procName = name8.string();
-        set_process_name(procName);
-        AndroidRuntime::getRuntime()->setArgv0(procName);
+    if (!name8.isEmpty()) {
+        AndroidRuntime::getRuntime()->setArgv0(name8.string(), true /* setProcName */);
     }
 }
 
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 50e982f..5637dbc 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -504,7 +504,7 @@
     ContextFactory factory;
     RenderProxy* proxy = new RenderProxy(false, rootNode, &factory);
     proxy->loadSystemProperties();
-    proxy->setSwapBehavior(kSwap_discardBuffer);
+    proxy->setSwapBehavior(SwapBehavior::kSwap_discardBuffer);
     proxy->initialize(surface);
     // Shadows can't be used via this interface, so just set the light source
     // to all 0s.
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index fa1313b..0d8a95c 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -32,6 +32,7 @@
 #include <jni.h>
 #include <memory>
 #include <stdio.h>
+#include <system/graphics.h>
 #include <ui/DisplayInfo.h>
 #include <ui/HdrCapabilities.h>
 #include <ui/FrameStats.h>
@@ -58,7 +59,6 @@
     jfieldID secure;
     jfieldID appVsyncOffsetNanos;
     jfieldID presentationDeadlineNanos;
-    jfieldID colorTransform;
 } gPhysicalDisplayInfoClassInfo;
 
 static struct {
@@ -429,8 +429,6 @@
                 info.appVsyncOffset);
         env->SetLongField(infoObj, gPhysicalDisplayInfoClassInfo.presentationDeadlineNanos,
                 info.presentationDeadline);
-        env->SetIntField(infoObj, gPhysicalDisplayInfoClassInfo.colorTransform,
-                info.colorTransform);
         env->SetObjectArrayElement(configArray, static_cast<jsize>(c), infoObj);
         env->DeleteLocalRef(infoObj);
     }
@@ -451,6 +449,43 @@
     return err == NO_ERROR ? JNI_TRUE : JNI_FALSE;
 }
 
+static jintArray nativeGetDisplayColorModes(JNIEnv* env, jclass, jobject tokenObj) {
+    sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
+    if (token == NULL) return NULL;
+    Vector<android_color_mode_t> colorModes;
+    if (SurfaceComposerClient::getDisplayColorModes(token, &colorModes) != NO_ERROR ||
+            colorModes.isEmpty()) {
+        return NULL;
+    }
+
+    jintArray colorModesArray = env->NewIntArray(colorModes.size());
+    if (colorModesArray == NULL) {
+        jniThrowException(env, "java/lang/OutOfMemoryError", NULL);
+        return NULL;
+    }
+    jint* colorModesArrayValues = env->GetIntArrayElements(colorModesArray, 0);
+    for (size_t i = 0; i < colorModes.size(); i++) {
+        colorModesArrayValues[i] = static_cast<jint>(colorModes[i]);
+    }
+    env->ReleaseIntArrayElements(colorModesArray, colorModesArrayValues, 0);
+    return colorModesArray;
+}
+
+static jint nativeGetActiveColorMode(JNIEnv* env, jclass, jobject tokenObj) {
+    sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
+    if (token == NULL) return -1;
+    return static_cast<jint>(SurfaceComposerClient::getActiveColorMode(token));
+}
+
+static jboolean nativeSetActiveColorMode(JNIEnv* env, jclass,
+        jobject tokenObj, jint colorMode) {
+    sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
+    if (token == NULL) return JNI_FALSE;
+    status_t err = SurfaceComposerClient::setActiveColorMode(token,
+            static_cast<android_color_mode_t>(colorMode));
+    return err == NO_ERROR ? JNI_TRUE : JNI_FALSE;
+}
+
 static void nativeSetDisplayPowerMode(JNIEnv* env, jclass clazz, jobject tokenObj, jint mode) {
     sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
     if (token == NULL) return;
@@ -715,6 +750,12 @@
             (void*)nativeGetActiveConfig },
     {"nativeSetActiveConfig", "(Landroid/os/IBinder;I)Z",
             (void*)nativeSetActiveConfig },
+    {"nativeGetDisplayColorModes", "(Landroid/os/IBinder;)[I",
+            (void*)nativeGetDisplayColorModes},
+    {"nativeGetActiveColorMode", "(Landroid/os/IBinder;)I",
+            (void*)nativeGetActiveColorMode},
+    {"nativeSetActiveColorMode", "(Landroid/os/IBinder;I)Z",
+            (void*)nativeSetActiveColorMode},
     {"nativeGetHdrCapabilities", "(Landroid/os/IBinder;)Landroid/view/Display$HdrCapabilities;",
             (void*)nativeGetHdrCapabilities },
     {"nativeClearContentFrameStats", "(J)Z",
@@ -757,8 +798,6 @@
             clazz, "appVsyncOffsetNanos", "J");
     gPhysicalDisplayInfoClassInfo.presentationDeadlineNanos = GetFieldIDOrDie(env,
             clazz, "presentationDeadlineNanos", "J");
-    gPhysicalDisplayInfoClassInfo.colorTransform = GetFieldIDOrDie(env, clazz,
-            "colorTransform", "I");
 
     jclass rectClazz = FindClassOrDie(env, "android/graphics/Rect");
     gRectClassInfo.bottom = GetFieldIDOrDie(env, rectClazz, "bottom", "I");
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 9dd0d44..ad27c7c7 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -188,7 +188,7 @@
     virtual void prepareTree(TreeInfo& info) override {
         info.errorHandler = this;
 
-        for (auto& anim : mVectorDrawableAnimators) {
+        for (auto& anim : mRunningVDAnimators) {
             // Assume that the property change in VD from the animators will not be consumed. Mark
             // otherwise if the VDs are found in the display list tree. For VDs that are not in
             // the display list tree, we stop providing animation pulses by 1) removing them from
@@ -196,6 +196,11 @@
             // listeners can receive the corresponding callbacks.
             anim->getVectorDrawable()->setPropertyChangeWillBeConsumed(false);
         }
+        if (info.mode == TreeInfo::MODE_FULL) {
+            for (auto &anim : mPausedVDAnimators) {
+                anim->getVectorDrawable()->setPropertyChangeWillBeConsumed(false);
+            }
+        }
         // TODO: This is hacky
         info.windowInsetLeft = -stagingProperties().getLeft();
         info.windowInsetTop = -stagingProperties().getTop();
@@ -206,17 +211,33 @@
         info.windowInsetTop = 0;
         info.errorHandler = nullptr;
 
-        for (auto it = mVectorDrawableAnimators.begin(); it != mVectorDrawableAnimators.end();) {
+        for (auto it = mRunningVDAnimators.begin(); it != mRunningVDAnimators.end();) {
             if (!(*it)->getVectorDrawable()->getPropertyChangeWillBeConsumed()) {
                 // Vector Drawable is not in the display list, we should remove this animator from
-                // the list and post a delayed message to end the animator.
+                // the list, put it in the paused list, and post a delayed message to end the
+                // animator.
                 detachVectorDrawableAnimator(it->get());
-                it = mVectorDrawableAnimators.erase(it);
+                mPausedVDAnimators.insert(*it);
+                it = mRunningVDAnimators.erase(it);
             } else {
-                ++it;
+                it++;
             }
         }
-        info.out.hasAnimations |= !mVectorDrawableAnimators.empty();
+
+        if (info.mode == TreeInfo::MODE_FULL) {
+            // Check whether any paused animator's target is back in Display List. If so, put the
+            // animator back in the running list.
+            for (auto it = mPausedVDAnimators.begin(); it != mPausedVDAnimators.end();) {
+                if ((*it)->getVectorDrawable()->getPropertyChangeWillBeConsumed()) {
+                    mRunningVDAnimators.insert(*it);
+                    it = mPausedVDAnimators.erase(it);
+                } else {
+                    it++;
+                }
+            }
+        }
+        info.out.hasAnimations |= !mRunningVDAnimators.empty();
+
     }
 
     void sendMessage(const sp<MessageHandler>& handler) {
@@ -232,17 +253,18 @@
     }
 
     void attachPendingVectorDrawableAnimators() {
-        mVectorDrawableAnimators.insert(mPendingVectorDrawableAnimators.begin(),
+        mRunningVDAnimators.insert(mPendingVectorDrawableAnimators.begin(),
                 mPendingVectorDrawableAnimators.end());
         mPendingVectorDrawableAnimators.clear();
     }
 
     void detachAnimators() {
         // Remove animators from the list and post a delayed message in future to end the animator
-        for (auto& anim : mVectorDrawableAnimators) {
+        for (auto& anim : mRunningVDAnimators) {
             detachVectorDrawableAnimator(anim.get());
         }
-        mVectorDrawableAnimators.clear();
+        mRunningVDAnimators.clear();
+        mPausedVDAnimators.clear();
     }
 
     void doAttachAnimatingNodes(AnimationContext* context) {
@@ -253,18 +275,48 @@
         mPendingAnimatingRenderNodes.clear();
     }
 
-    void runVectorDrawableAnimators(AnimationContext* context) {
-        for (auto it = mVectorDrawableAnimators.begin(); it != mVectorDrawableAnimators.end();) {
+    void runVectorDrawableAnimators(AnimationContext* context, TreeInfo::TraversalMode mode) {
+        for (auto it = mRunningVDAnimators.begin(); it != mRunningVDAnimators.end();) {
             if ((*it)->animate(*context)) {
-                it = mVectorDrawableAnimators.erase(it);
+                it = mRunningVDAnimators.erase(it);
             } else {
-                ++it;
+                it++;
+            }
+        }
+
+        if (mode == TreeInfo::MODE_FULL) {
+            // During full sync we also need to pulse paused animators, in case their targets
+            // have been added back to the display list. All the animators that passed the
+            // scheduled finish time will be removed from the paused list.
+            for (auto it = mPausedVDAnimators.begin(); it != mPausedVDAnimators.end();) {
+                if ((*it)->animate(*context)) {
+                    // Animator has finished, remove from the list.
+                    it = mPausedVDAnimators.erase(it);
+                } else {
+                    it++;
+                }
+            }
+        }
+    }
+
+    void trimPausedVDAnimators(AnimationContext* context) {
+        // Trim paused vector drawable animator list.
+        for (auto it = mPausedVDAnimators.begin(); it != mPausedVDAnimators.end();) {
+            // Remove paused VD animator if no one else is referencing it. Note that animators that
+            // have passed scheduled finish time are removed from list when they are being pulsed
+            // before prepare tree.
+            // TODO: this is a bit hacky, need to figure out a better way to track when the paused
+            // animators should be freed.
+            if ((*it)->getStrongCount() == 1) {
+                it = mPausedVDAnimators.erase(it);
+            } else {
+                it++;
             }
         }
     }
 
     void pushStagingVectorDrawableAnimators(AnimationContext* context) {
-        for (auto& anim : mVectorDrawableAnimators) {
+        for (auto& anim : mRunningVDAnimators) {
             anim->pushStaging(*context);
         }
     }
@@ -286,7 +338,15 @@
     JavaVM* mVm;
     std::vector< sp<RenderNode> > mPendingAnimatingRenderNodes;
     std::set< sp<PropertyValuesAnimatorSet> > mPendingVectorDrawableAnimators;
-    std::set< sp<PropertyValuesAnimatorSet> > mVectorDrawableAnimators;
+    std::set< sp<PropertyValuesAnimatorSet> > mRunningVDAnimators;
+    // mPausedVDAnimators stores a list of animators that have not yet passed the finish time, but
+    // their VectorDrawable targets are no longer in the DisplayList. We skip these animators when
+    // render thread runs animators independent of UI thread (i.e. RT_ONLY mode). These animators
+    // need to be re-activated once their VD target is added back into DisplayList. Since that could
+    // only happen when we do a full sync, we need to make sure to pulse these paused animators at
+    // full sync. If any animator's VD target is found in DisplayList during a full sync, we move
+    // the animator back to the running list.
+    std::set< sp<PropertyValuesAnimatorSet> > mPausedVDAnimators;
     void detachVectorDrawableAnimator(PropertyValuesAnimatorSet* anim) {
         if (anim->isInfinite() || !anim->isRunning()) {
             // Do not need to post anything if the animation is infinite (i.e. no meaningful
@@ -336,13 +396,20 @@
         if (mode == TreeInfo::MODE_FULL) {
             mRootNode->pushStagingVectorDrawableAnimators(this);
         }
-        mRootNode->runVectorDrawableAnimators(this);
+        mRootNode->runVectorDrawableAnimators(this, mode);
     }
 
     // Runs any animations still left in mCurrentFrameAnimations
     virtual void runRemainingAnimations(TreeInfo& info) {
         AnimationContext::runRemainingAnimations(info);
         postOnFinishedEvents();
+        if (info.mode == TreeInfo::MODE_FULL) {
+            // Trim paused VD animators at full sync, so that when Java loses reference to an
+            // animator, we know we won't be requested to animate it any more, then we remove such
+            // animators from the paused list so they can be properly freed. We also remove the
+            // animators from paused list when the time elapsed since start has exceeded duration.
+            mRootNode->trimPausedVDAnimators(this);
+        }
     }
 
     virtual void detachAnimators() override {
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 42c0c93..ad36434 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -49,6 +49,7 @@
     <protected-broadcast android:name="android.intent.action.PACKAGE_VERIFIED" />
     <protected-broadcast android:name="android.intent.action.PACKAGES_SUSPENDED" />
     <protected-broadcast android:name="android.intent.action.PACKAGES_UNSUSPENDED" />
+    <protected-broadcast android:name="android.intent.action.ACTION_PREFERRED_ACTIVITY_CHANGED" />
     <protected-broadcast android:name="android.intent.action.UID_REMOVED" />
     <protected-broadcast android:name="android.intent.action.QUERY_PACKAGE_RESTART" />
     <protected-broadcast android:name="android.intent.action.CONFIGURATION_CHANGED" />
@@ -2511,11 +2512,10 @@
     <permission android:name="android.permission.CONTROL_WIFI_DISPLAY"
         android:protectionLevel="signature" />
 
-    <!-- Allows an application to control the color transforms applied to
-         displays system-wide.
+    <!-- Allows an application to control the color modes set for displays system-wide.
          <p>Not for use by third-party applications.</p>
          @hide -->
-    <permission android:name="android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM"
+    <permission android:name="android.permission.CONFIGURE_DISPLAY_COLOR_MODE"
         android:protectionLevel="signature" />
 
     <!-- @SystemApi Allows an application to control VPN.
diff --git a/core/res/res/drawable/notification_material_action_background_emphasized.xml b/core/res/res/drawable/notification_material_action_background_emphasized.xml
new file mode 100644
index 0000000..b7153ba
--- /dev/null
+++ b/core/res/res/drawable/notification_material_action_background_emphasized.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="@color/ripple_material_dark">
+    <item android:id="@id/mask">
+        <color android:color="@color/white" />
+    </item>
+</ripple>
+
diff --git a/core/res/res/layout-watch/alert_dialog_material.xml b/core/res/res/layout-watch/alert_dialog_material.xml
index e627d42..a8bb204 100644
--- a/core/res/res/layout-watch/alert_dialog_material.xml
+++ b/core/res/res/layout-watch/alert_dialog_material.xml
@@ -21,6 +21,7 @@
         android:layout_height="match_parent">
     <ScrollView
             android:id="@+id/scrollView"
+            android:fillViewport="true"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
         <LinearLayout
@@ -33,7 +34,8 @@
                     android:paddingRight="?dialogPreferredPadding"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:id="@+id/topPanel">
+                    android:id="@+id/topPanel"
+                    android:minHeight="@dimen/dialog_list_padding_top_no_title">
                 <include android:id="@+id/title_template"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
@@ -68,41 +70,33 @@
             <!-- Button Panel -->
             <FrameLayout
                     android:id="@+id/buttonPanel"
+                    android:minHeight="@dimen/dialog_list_padding_bottom_no_buttons"
+                    android:layout_weight="1"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content">
                 <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:divider="?android:attr/dividerHorizontal"
-                        android:showDividers="beginning"
-                        android:dividerPadding="0dip"
                         android:orientation="vertical"
                         android:minHeight="@dimen/alert_dialog_button_bar_height"
                         android:paddingBottom="?dialogPreferredPadding"
                         style="?android:attr/buttonBarStyle"
-                        android:layoutDirection="locale"
                         android:measureWithLargestChild="true">
                     <Button android:id="@+id/button1"
                             android:layout_gravity="start"
                             android:layout_weight="1"
-                            android:layout_marginLeft="?dialogPreferredPadding"
-                            android:layout_marginRight="?dialogPreferredPadding"
                             style="?android:attr/buttonBarButtonStyle"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content" />
                     <Button android:id="@+id/button3"
                             android:layout_gravity="start"
                             android:layout_weight="1"
-                            android:layout_marginLeft="?dialogPreferredPadding"
-                            android:layout_marginRight="?dialogPreferredPadding"
                             style="?android:attr/buttonBarButtonStyle"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content" />
                     <Button android:id="@+id/button2"
                             android:layout_gravity="start"
                             android:layout_weight="1"
-                            android:layout_marginLeft="?dialogPreferredPadding"
-                            android:layout_marginRight="?dialogPreferredPadding"
                             style="?android:attr/buttonBarButtonStyle"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content" />
diff --git a/core/res/res/layout/notification_material_action_emphasized.xml b/core/res/res/layout/notification_material_action_emphasized.xml
new file mode 100644
index 0000000..992e43e
--- /dev/null
+++ b/core/res/res/layout/notification_material_action_emphasized.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/button_holder"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_weight="1"
+    android:background="#ff000000">
+    <Button
+        style="@android:style/Widget.Material.Light.Button.Borderless.Small"
+        android:id="@+id/action0"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:textColor="#ffffffff"
+        android:singleLine="true"
+        android:ellipsize="end"
+        android:background="@drawable/notification_material_action_background_emphasized"
+        />
+</FrameLayout>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 7e9d958..58d59f0 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimeer tans berging."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android gradeer tans op"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige programme sal dalk nie behoorlik werk voordat die opgradering voltooi is nie"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> gradeer tans op …"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimeer program <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Berei tans <xliff:g id="APPNAME">%1$s</xliff:g> voor."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Begin programme."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index e0009f8..6b3b866 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ማከማቻን በማመቻቸት ላይ።"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android በማላቅ ላይ ነው"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"አንዳንድ መተግበሪያዎች ማላቁ እስኪጠናቀቅ ድረስ በአግባቡ ላይሰሩ ይችላሉ"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> በማላቅ ላይ…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"መተግበሪያዎች በአግባቡ በመጠቀም ላይ <xliff:g id="NUMBER_0">%1$d</xliff:g> ከ <xliff:g id="NUMBER_1">%2$d</xliff:g> ፡፡"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ን ማዘጋጀት።"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 90853b6..72ba5ee 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1116,6 +1116,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"جارٍ تحسين السعة التخزينية."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏جارٍ ترقية Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"قد لا تعمل بعض التطبيقات بشكل مناسب إلا بعد انتهاء الترقية"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"جارٍ ترقية <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"جارٍ تحسين التطبيق <xliff:g id="NUMBER_0">%1$d</xliff:g> من <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"جارٍ تحضير <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"بدء التطبيقات."</string>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index 52eb21c8..23aa918 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Yaddaş optimallaşdırılır."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android təkmilləşdirilir"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Güncəllənmə tamamlanana kimi bəzi tətbiqlər düzgün işləməyə bilər"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> təkmilləşdirilir…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> əddədən <xliff:g id="NUMBER_0">%1$d</xliff:g> tətbiq optimallaşır."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> proqramının hazırlanması."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Tətbiqlər başladılır."</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index cd48e3c..8735a3b 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1047,6 +1047,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memorija se optimizuje."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje…"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće ispravno funkcionisati dok se nadogradnja ne dovrši"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizovanje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index 60f6a43..2737128 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Аптымізацыя сховішча."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Абнаўленне Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Пэўныя праграмы могуць не працаваць належным чынам, пакуль не скончыцца абнаўленне"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> абнаўляецца…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Аптымізацыя прыкладання <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Падрыхтоўка <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск прыкладанняў."</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 4b45bc0..fb96788 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хранилището се оптимизира."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android се надстройва"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Някои приложения може да не работят правилно, докато надстройването не завърши"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надстройва…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизира се приложение <xliff:g id="NUMBER_0">%1$d</xliff:g> от <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> се подготвя."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Приложенията се стартират."</string>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index 15a2b8e..bd59603 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"সঞ্চয়স্থান অপ্টিমাইজ করা হচ্ছে৷"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android আপগ্রেড করা হচ্ছে"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"আপগ্রেড সম্পন্ন না হওয়া পর্যন্ত কিছু অ্যাপ্লিকেশান সঠিকভাবে কাজ নাও করতে পারে"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> আপগ্রেড করা হচ্ছে…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>টির মধ্যে <xliff:g id="NUMBER_0">%1$d</xliff:g>টি অ্যাপ্লিকেশান অপ্টিমাইজ করা হচ্ছে৷"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> প্রস্তুত করা হচ্ছে৷"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index a7df6e8..671bf7e 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -390,9 +390,9 @@
     <string name="permdesc_transmitIr" product="tv" msgid="3926790828514867101">"Dozvoljava aplikaciji korištenje infracrvenog predajnika na TV-u."</string>
     <string name="permdesc_transmitIr" product="default" msgid="7957763745020300725">"Omogućava aplikaciji korištenje infracrvenog odašiljača telefona."</string>
     <string name="permlab_setWallpaper" msgid="6627192333373465143">"postavljanje pozadinske slike"</string>
-    <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Dozvoljava aplikaciji postavljanje sistemske pozadine ekrana."</string>
-    <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"prilagođavanje veličine pozadine"</string>
-    <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Dozvoljava aplikaciji određivanje veličine sistemske pozadine ekrana."</string>
+    <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Dozvoljava aplikaciji postavljanje sistemske pozadinske slike."</string>
+    <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"prilagođavanje veličine pozadinske slike"</string>
+    <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Dozvoljava aplikaciji određivanje veličine sistemske pozadinske slike."</string>
     <string name="permlab_setTimeZone" msgid="2945079801013077340">"postavljanje vremenske zone"</string>
     <string name="permdesc_setTimeZone" product="tablet" msgid="1676983712315827645">"Dozvoljava aplikaciji promjenu vremenske zone tableta."</string>
     <string name="permdesc_setTimeZone" product="tv" msgid="888864653946175955">"Dozvoljava aplikaciji promjenu vremenske zone na TV-u."</string>
@@ -1049,6 +1049,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće raditi ispravno dok traje nadogradnja"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 0978a88..7e366f5 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"S\'està optimitzant l\'emmagatzematge."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android s\'està actualitzant"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Pot ser que algunes aplicacions no funcionin correctament fins que no es completi l\'actualització"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"S\'està actualitzant <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"S\'està optimitzant l\'aplicació <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"S\'està preparant <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"S\'estan iniciant les aplicacions."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index ab14f72..1e1919c 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Probíhá optimalizace úložiště."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se upgraduje"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Před dokončením upgradu nemusí některé aplikace fungovat správně"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> se upgraduje…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimalizování aplikace <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Příprava aplikace <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Spouštění aplikací."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 039795d..ef201c5 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lageret optimeres."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android opgraderes"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nogle apps fungerer muligvis ikke korrekt, før opgraderingen er gennemført"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> opgraderer…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerer app <xliff:g id="NUMBER_0">%1$d</xliff:g> ud af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Åbner dine apps."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 45b1d73..5096565 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Speicher wird optimiert"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android wird aktualisiert"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Einige Apps funktionieren unter Umständen nicht richtig, bis das Upgrade abgeschlossen ist"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Für <xliff:g id="APPLICATION">%1$s</xliff:g> wird gerade ein Upgrade ausgeführt…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> von <xliff:g id="NUMBER_1">%2$d</xliff:g> wird optimiert..."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> wird vorbereitet"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet..."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index f392152..5188f7b 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Βελτιστοποίηση αποθηκευτικού χώρου."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Το Android αναβαθμίζεται"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν σωστά μέχρι την ολοκλήρωση της αναβάθμισης"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Η εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> αναβαθμίζεται…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Βελτιστοποίηση της εφαρμογής <xliff:g id="NUMBER_0">%1$d</xliff:g> από <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Προετοιμασία <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Έναρξη εφαρμογών."</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 2e3ed04..78800c7 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 2e3ed04..78800c7 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 2e3ed04..78800c7 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> is upgrading…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 8ba2ee5..3f3d328 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se está actualizando"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas apps no funcionen correctamente hasta que termine la actualización"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Se está actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando la aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 158274a..7efefe6 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Actualizando Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas aplicaciones no funcionen correctamente hasta que finalice la actualización"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se está actualizando…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>..."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index 263b4ae..9fbbba0 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Salvestusruumi optimeerimine."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android viiakse üle uuemale versioonile"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Mõned rakendused ei pruugi enne uuemale versioonile ülemineku lõpetamist korralikult töötada"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Rakenduse <xliff:g id="APPLICATION">%1$s</xliff:g> versiooni uuendatakse …"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>. rakenduse <xliff:g id="NUMBER_1">%2$d</xliff:g>-st optimeerimine."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> ettevalmistamine."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Rakenduste käivitamine."</string>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index 81473829..bde9f49 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memoria optimizatzen."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android bertsioa berritzen ari gara"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Aplikazio batzuek agian ez dute behar bezala funtzionatuko bertsioa berritzen amaitu arte"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> bertsio-berritzen ari da…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> aplikazio optimizatzen."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> prestatzen."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikazioak abiarazten."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 6a16a3d..4377690 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -937,7 +937,7 @@
     <string name="selectAll" msgid="6876518925844129331">"انتخاب همه"</string>
     <string name="cut" msgid="3092569408438626261">"برش"</string>
     <string name="copy" msgid="2681946229533511987">"کپی"</string>
-    <string name="paste" msgid="5629880836805036433">"جای گذاری"</string>
+    <string name="paste" msgid="5629880836805036433">"جای‌گذاری"</string>
     <string name="paste_as_plain_text" msgid="5427792741908010675">"جای‌گذاری به عنوان متن ساده"</string>
     <string name="replace" msgid="5781686059063148930">"جایگزین شود..."</string>
     <string name="delete" msgid="6098684844021697789">"حذف"</string>
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"بهینه‌سازی فضای ذخیره‌سازی."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏Android درحال ارتقا است"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"تا پایان ارتقا، ممکن است برخی از برنامه‌ها به‌درستی کار نکنند."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> درحال ارتقا است...."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"در حال بهینه‌سازی برنامهٔ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"آماده‌سازی <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامه‌ها."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 37bb47f..b32099d 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimoidaan tallennustilaa."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Androidia päivitetään"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kaikki sovellukset eivät ehkä toimi oikein, ennen kuin päivitys on valmis."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> päivittyy…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimoidaan sovellusta <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Valmistellaan: <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Käynnistetään sovelluksia."</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 62340b7..a5d990d 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Installation de la m. à niveau d\'Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Il se peut que certaines applications ne fonctionnent pas correctement jusqu\'à ce que la mise à niveau soit terminée"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Mise à niveau de <xliff:g id="APPLICATION">%1$s</xliff:g> en cours…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index dbdb946..5fcc9a4 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage en cours…"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Mise à jour d\'Android…"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Certaines applications peuvent ne pas fonctionner correctement jusqu\'à ce que la mise à jour soit terminée."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Mise à jour de l\'application <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index 428ba88d..40daed1 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamento."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Estase actualizando Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"É posible que algunhas aplicacións non funcionen correctamente ata que finalice o proceso de actualización"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Actualizando <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicacións."</string>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 7818ebb..964b12c 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"સંગ્રહ ઓપ્ટિમાઇઝ કરી રહ્યું છે."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android અપગ્રેડ થઈ રહ્યું છે"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"અપગ્રેડ સમાપ્ત ન થાય ત્યાં સુધી કેટલીક ઍપ્લિકેશનો કદાચ યોગ્ય રીતે કામ ન કરે"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> અપગ્રેડ થઈ રહી છે…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> માંથી <xliff:g id="NUMBER_0">%1$d</xliff:g> ઍપ્લિકેશન ઓપ્ટિમાઇઝ કરી રહ્યું છે."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> તૈયાર કરી રહ્યું છે."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ઍપ્લિકેશનો શરૂ કરી રહ્યાં છે."</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index b74a6fe..c646a57 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"मेमोरी ऑप्‍टिमाइज़ हो रही है."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android अपग्रेड हो रहा है"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"जब तक अपग्रेड पूरा नहीं हो जाता, तब तक संभव है कि कुछ ऐप्लिकेशन ठीक से कार्य ना करें"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> अपग्रेड हो रहा है…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> में से <xliff:g id="NUMBER_0">%1$d</xliff:g> ऐप्स  अनुकूलित हो रहा है."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तैयार हो रहा है."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ऐप्स  प्रारंभ होने वाले हैं"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 97e6c92..eaca463 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1047,6 +1047,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće funkcionirati pravilno dok nadogradnja ne završi"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Nadogradnja aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index de9c6d6..7eecfa3 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tárhely-optimalizálás."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android frissítése folyamatban"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"A frissítés befejezéséig előfordulhat, hogy egyes alkalmazások nem megfelelően működnek."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> frissítése folyamatban van"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Alkalmazás optimalizálása: <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> előkészítése."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Kezdő alkalmazások."</string>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index dcb1a17..c90562a 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Պահեստի օպտիմալացում:"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android-ը նորացվում է"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Հնարավոր է՝ որոշ հավելվածներ մինչև նորացման ավարտը ճիշտ չաշխատեն"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածը նորացվում է…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Օպտիմալացվում է հավելված <xliff:g id="NUMBER_0">%1$d</xliff:g>-ը <xliff:g id="NUMBER_1">%2$d</xliff:g>-ից:"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> հավելվածը պատրաստվում է:"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Հավելվածները մեկնարկում են:"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index a89e234..382b0c9 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimalkan penyimpanan."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android sedang meningkatkan versi"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Beberapa aplikasi mungkin tidak berfungsi dengan baik jika peningkatan versi belum selesai"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Versi <xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimalkan aplikasi <xliff:g id="NUMBER_0">%1$d</xliff:g> dari <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Menyiapkan <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index 5f172c7..fb31267 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Fínstillir geymslu."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android er að uppfæra"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Hugsanlega virka sum forrit ekki fyrr en uppfærslunni lýkur"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppfærir…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Fínstillir forrit <xliff:g id="NUMBER_0">%1$d</xliff:g> af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Undirbýr <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ræsir forrit."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 51619c9..eec694e 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ottimizzazione archiviazione."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Aggiornamento di Android in corso"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alcune app potrebbero non funzionare correttamente fino al completamento dell\'upgrade"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Upgrade dell\'app <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ottimizzazione applicazione <xliff:g id="NUMBER_0">%1$d</xliff:g> di <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> in preparazione."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Avvio applicazioni."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 72f12a2..39bb50f 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"מתבצעת אופטימיזציה של האחסון."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏Android מבצע שדרוג"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ייתכן שאפליקציות מסוימות לא יפעלו כראוי עד סיום השדרוג"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> מבצעת שדרוג…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"מבצע אופטימיזציה של אפליקציה <xliff:g id="NUMBER_0">%1$d</xliff:g> מתוך <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"מכין את <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"מפעיל אפליקציות."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index c2bdd21..da90057 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ストレージを最適化しています。"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android のアップグレード中"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"アップグレードが完了するまで一部のアプリが正常に動作しない可能性があります"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」をアップグレードしています…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>個中<xliff:g id="NUMBER_0">%1$d</xliff:g>個のアプリを最適化しています。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>をペア設定しています。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"アプリを起動しています。"</string>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index ced0c6c..2d3aaa6 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"მეხსიერების ოპტიმიზირება."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ახალ ვერსიაზე გადადის"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ახალ ვერსიაზე გადასვლის დასრულებამდე, ზოგიერთმა აპმა შეიძლება არასწორად იმუშაოს"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ახალ ვერსიაზე გადადის…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"მიმდინარეობს აპლიკაციების ოპტიმიზაცია. დასრულებულია <xliff:g id="NUMBER_0">%1$d</xliff:g>, სულ <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"ემზადება <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"აპების ჩართვა"</string>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index b0d24da..7d3eddf 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Қойманы оңтайландыру."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android жаңартылуда"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңарту аяқталғанға дейін кейбір қолданбалар дұрыс жұмыс істемеуі мүмкін"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңартылуда…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ішінен <xliff:g id="NUMBER_0">%1$d</xliff:g> қолданба оңтайландырылуда."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> дайындалуда."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Қолданбалар іске қосылуда."</string>
@@ -1217,7 +1218,7 @@
     <string name="forward_intent_to_work" msgid="621480743856004612">"Осы қолданбаны жұмыс профиліңізде пайдаланып жатырсыз"</string>
     <string name="input_method_binding_label" msgid="1283557179944992649">"Енгізу әдісі"</string>
     <string name="sync_binding_label" msgid="3687969138375092423">"Синх"</string>
-    <string name="accessibility_binding_label" msgid="4148120742096474641">"Қол жетімділік"</string>
+    <string name="accessibility_binding_label" msgid="4148120742096474641">"Арнайы мүмкіндіктер"</string>
     <string name="wallpaper_binding_label" msgid="1240087844304687662">"Артқы фоны"</string>
     <string name="chooser_wallpaper" msgid="7873476199295190279">"Артқы фонын өзгерту"</string>
     <string name="notification_listener_binding_label" msgid="2014162835481906429">"Хабар бақылағыш"</string>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 5d6c761..aaf6921 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -975,7 +975,7 @@
     <string name="whichEditApplicationNamed" msgid="1775815530156447790">"កែសម្រួល​ជាមួយ​ %1$s"</string>
     <string name="whichEditApplicationLabel" msgid="7183524181625290300">"កែសម្រួល"</string>
     <string name="whichSendApplication" msgid="6902512414057341668">"ចែករំលែក​ជាមួយ"</string>
-    <string name="whichSendApplicationNamed" msgid="2799370240005424391">"ចែករំលែក​ជាមួយ"</string>
+    <string name="whichSendApplicationNamed" msgid="2799370240005424391">"ចែករំលែក​ជាមួយ %1$s"</string>
     <string name="whichSendApplicationLabel" msgid="4579076294675975354">"ចែករំលែក"</string>
     <string name="whichSendToApplication" msgid="8272422260066642057">"ផ្ញើដោយប្រើ"</string>
     <string name="whichSendToApplicationNamed" msgid="7768387871529295325">"ផ្ញើដោយប្រើ %1$s"</string>
@@ -1026,6 +1026,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"កំពុងធ្វើឲ្យឧបករណ៍ផ្ទុកមានប្រសិទ្ធភាព។"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android កំពុងអាប់គ្រេត..."</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"កម្មវិធីមួយចំនួនអាចនឹងមិនដំណើរការប្រក្រតីនោះទេ រហូតដល់ការអាប់គ្រេតបញ្ចប់"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> អាប់គ្រេត…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"ធ្វើ​ឲ្យ​កម្មវិធី​ប្រសើរ​ឡើង <xliff:g id="NUMBER_0">%1$d</xliff:g> នៃ <xliff:g id="NUMBER_1">%2$d</xliff:g> ។"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"កំពុងរៀបចំ <xliff:g id="APPNAME">%1$s</xliff:g>។"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ចាប់ផ្ដើម​កម្មវិធី។"</string>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 5d65f70..6cdf10c 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ಸಂಗ್ರಹಣೆಯನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ಅಪ್‌ಗ್ರೇಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ಅಪ್‌ಗ್ರೇಡ್ ಮುಗಿಯುವ ತನಕ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡದಿರಬಹುದು"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ಅಪ್‌ಗ್ರೇಡ್ ಆಗುತ್ತಿದೆ..."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="NUMBER_0">%1$d</xliff:g> ಅಪ್ಲಿಕೇಶನ್‌ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 2734fc9..68a3f25 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"저장소 최적화 중"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android 업그레이드 중"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"특정 앱은 업그레이드가 완료될 때까지 제대로 작동하지 않을 수 있습니다."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> 업그레이드 중…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"앱 <xliff:g id="NUMBER_1">%2$d</xliff:g>개 중 <xliff:g id="NUMBER_0">%1$d</xliff:g>개 최적화 중"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> 준비 중..."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"앱을 시작하는 중입니다."</string>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index 0a9ed54..fb5085d 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Сактагыч ыңгайлаштырылууда."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android жаңыртылууда"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңыртуу аягына чыкмайынча айрым колдонмолор талаптагыдай иштебей калышы мүмкүн"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> жаңыртылууда..."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ичинен <xliff:g id="NUMBER_0">%1$d</xliff:g> колдонмо ыңгайлаштырылууда."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> даярдалууда."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Колдонмолорду иштетип баштоо"</string>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index 4e015977..6fcc233 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ການ​ປັບ​ບ່ອນ​ເກັບ​ຂໍ້​ມູນ​ໃຫ້​ເໝາະ​ສົມ."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"ກຳລັງອັບເກຣດ Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ບາງແອັບອາດບໍ່ສາມາດເຮັດວຽກໄດ້ປົກກະຕິຈົນກວ່າຈະອັບເກຣດສຳເລັດ"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"ກຳລັງອັບເກຣດ<xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"ກຳລັງ​ປັບປຸງ​ປະສິດທິພາບ​ແອັບຯ​ທີ <xliff:g id="NUMBER_0">%1$d</xliff:g> ຈາກ​ທັງ​ໝົດ <xliff:g id="NUMBER_1">%2$d</xliff:g> ແອັບຯ."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"ກຳ​ລັງ​ກຽມ <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ກຳລັງເປີດແອັບຯ."</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 63d0bbe..8df29db 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizuojama saugykla."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"„Android“ naujovinama"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kai kurios programos gali tinkamai neveikti, kol naujovinimo procesas nebus baigtas"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"„<xliff:g id="APPLICATION">%1$s</xliff:g>“ naujovinama..."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizuojama <xliff:g id="NUMBER_0">%1$d</xliff:g> progr. iš <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Ruošiama „<xliff:g id="APPNAME">%1$s</xliff:g>“."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Paleidžiamos programos."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index adc20a4..c5df354 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1047,6 +1047,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Notiek krātuves optimizēšana."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Notiek Android jaunināšana..."</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kamēr jaunināšana nebūs pabeigta, dažas lietotnes, iespējams, nedarbosies pareizi."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Notiek lietotnes <xliff:g id="APPLICATION">%1$s</xliff:g> jaunināšana…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Tiek optimizēta <xliff:g id="NUMBER_0">%1$d</xliff:g>. lietotne no <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Notiek lietotnes <xliff:g id="APPNAME">%1$s</xliff:g> sagatavošana."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Notiek lietotņu palaišana."</string>
diff --git a/core/res/res/values-mcc466-mnc01/config.xml b/core/res/res/values-mcc466-mnc01/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc01/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mcc466-mnc02/config.xml b/core/res/res/values-mcc466-mnc02/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc02/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mcc466-mnc03/config.xml b/core/res/res/values-mcc466-mnc03/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc03/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mcc466-mnc06/config.xml b/core/res/res/values-mcc466-mnc06/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc06/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mcc466-mnc07/config.xml b/core/res/res/values-mcc466-mnc07/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc07/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mcc466-mnc11/config.xml b/core/res/res/values-mcc466-mnc11/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc11/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mcc466-mnc92/config.xml b/core/res/res/values-mcc466-mnc92/config.xml
new file mode 100644
index 0000000..3c379d14
--- /dev/null
+++ b/core/res/res/values-mcc466-mnc92/config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 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.
+*/
+-->
+<resources>
+    <bool name="config_use_sim_language_file">false</bool>
+</resources>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index 894fde9..cd25aa0 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизирање на складирањето."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android се ажурира"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Некои апликации може да не работат правилно додека не се заврши надградбата"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надградува…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Се оптимизира апликација <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Се подготвува <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Се стартуваат апликациите."</string>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index 3786613..13e820d 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"സ്റ്റോറേജ്  ഒപ്‌റ്റിമൈസ് ചെയ്യുന്നു."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android അപ്ഗ്രേഡുചെയ്യുന്നു"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"അപ്‌ഗ്രേഡ് പൂർത്തിയാകുന്നത് വരെ ചില ആപ്‌സ് ശരിയായി പ്രവർത്തിച്ചേക്കില്ല"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> അപ്ഗ്രേഡ് ചെയ്യുന്നു…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> അപ്ലിക്കേഷൻ ഓപ്റ്റിമൈസ് ചെയ്യുന്നു."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> തയ്യാറാക്കുന്നു."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 10522b7..3a1b479 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хадгалалтыг сайжруулж байна."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Андройдыг дэвшүүлж байна"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Шинэчилж дуустал зарим апп хэвийн бус ажиллаж болзошгүй"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>-г сайжруулж байна…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>-н <xliff:g id="NUMBER_0">%1$d</xliff:g> апп-г тохируулж байна."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Бэлдэж байна <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Апп-г эхлүүлж байна."</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index 83f7c57..d97be50 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"संचयन ऑप्टिमाइझ करत आहे."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android श्रेणीसुधारित होत आहे"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"श्रेणीसुधारणा पूर्ण होईपर्यंत काही अॅप्स योग्यरित्या कार्य करणार नाहीत"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> श्रेणीसुधारित करीत आहे…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> पैकी <xliff:g id="NUMBER_0">%1$d</xliff:g> अॅप ऑप्टिमाइझ करत आहे."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयार करीत आहे."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index 91455ce..1068c08 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimumkan storan."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android sedang ditingkatkan"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sesetengah apl mungkin tidak berfungsi dengan betul sehingga peningkatan selesai"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> sedang ditingkatkan…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimumkan apl <xliff:g id="NUMBER_0">%1$d</xliff:g> daripada <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Menyediakan <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulakan apl."</string>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index 80d98ad..ea9888c 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -124,7 +124,7 @@
     <string name="roamingTextSearching" msgid="8360141885972279963">"ဆားဗစ်အားရှာဖွေနေသည်"</string>
     <string name="wfcRegErrorTitle" msgid="2301376280632110664">"Wi-Fi  ခေါ်ဆိုမှု"</string>
   <string-array name="wfcOperatorErrorAlertMessages">
-    <item msgid="2254967670088539682">"Wi-Fi သုံး၍ ဖုန်းခေါ်ဆိုရန်နှင့် မက်စေ့ဂျ်များပို့ရန်၊ ဤဝန်ဆောင်မှုအား စတင်သုံးနိုင်ရန်အတွက် သင့် မိုဘိုင်းဝန်ဆောင်မှုအား ဦးစွာမေးမြန်းပါ။ ထို့နောက် ဆက်တင်မှတဆင့် Wi-Fi  ခေါ်ဆိုမှုအား ထပ်ဖွင့်ပါ။"</item>
+    <item msgid="2254967670088539682">"Wi-Fi သုံး၍ ဖုန်းခေါ်ဆိုရန်နှင့် မက်ဆေ့ဂျ်များပို့ရန်၊ ဤဝန်ဆောင်မှုအား စတင်သုံးနိုင်ရန်အတွက် သင့် မိုဘိုင်းဝန်ဆောင်မှုအား ဦးစွာမေးမြန်းပါ။ ထို့နောက် ဆက်တင်မှတဆင့် Wi-Fi  ခေါ်ဆိုမှုအား ထပ်ဖွင့်ပါ။"</item>
   </string-array>
   <string-array name="wfcOperatorErrorNotificationMessages">
     <item msgid="6177300162212449033">"သင့် မိုဘိုင်းဝန်ဆောင်မှုဖြင့် မှတ်ပုံတင်ရန်"</item>
@@ -193,9 +193,9 @@
     <string name="silent_mode_silent" msgid="319298163018473078">"ဖုန်းမြည်သံပိတ်ထားသည်"</string>
     <string name="silent_mode_vibrate" msgid="7072043388581551395">"တုန်ခါခြင်း ဖုန်းမြည်သံ"</string>
     <string name="silent_mode_ring" msgid="8592241816194074353">"ဖုန်းမြည်သံဖွင့်ထားသည်"</string>
-    <string name="reboot_to_update_title" msgid="6212636802536823850">"Android စနစ်အဆင့်မြှင့်ခြင်း"</string>
-    <string name="reboot_to_update_prepare" msgid="6305853831955310890">"အဆင့်မြှင့်တင်ရန် ပြင်ဆင်နေသည်…"</string>
-    <string name="reboot_to_update_package" msgid="3871302324500927291">"ပက်ကေ့ အဆင့်မြှင့်ခြင်း စီမံဆောင်ရွက်နေစဉ်…"</string>
+    <string name="reboot_to_update_title" msgid="6212636802536823850">"Android စနစ်အပ်ဒိတ်လုပ်ခြင်း"</string>
+    <string name="reboot_to_update_prepare" msgid="6305853831955310890">"အပ်ဒိတ်လုပ်ရန် ပြင်ဆင်နေသည်…"</string>
+    <string name="reboot_to_update_package" msgid="3871302324500927291">"အပ်ဒိတ်ပက်ကေ့ဂျ်ကို စီမံဆောင်ရွက်နေဆဲ…"</string>
     <string name="reboot_to_update_reboot" msgid="6428441000951565185">"ပြန်လည်စတင်နေ…"</string>
     <string name="reboot_to_reset_title" msgid="4142355915340627490">"စက်ရုံထုတ်အခြေအနေပြန်ယူခြင်း"</string>
     <string name="reboot_to_reset_message" msgid="2432077491101416345">"ပြန်လည်စတင်နေ…"</string>
@@ -264,12 +264,12 @@
     <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"သင် အပြန်အလှန်လုပ်နေသော ဝင်းဒိုးမှာပါရှိသည်များကို သေချာစွာ ကြည့်ရှုစစ်ဆေးပါ"</string>
     <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ထိတို့ခြင်းဖြင့် ရှာဖွေပေးနိုင်တာကို ဖွင့်လိုက်ပါ"</string>
     <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"တို့လိုက်သည့်အရာများကို အသံထွက်ဖတ်ပေးပါလိမ့်မည်။ လက်ဟန်အမူအရာများကို အသုံးပြု၍ မျက်နှာပြင်ကို လေ့လာနိုင်ပါသည်။"</string>
-    <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ပိုမိုကောင်းမွန်သော ဝက်ဘ်အများသုံးစွဲနိုင်မှုကို ဖွင့်ရန်"</string>
+    <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ပိုမိုကောင်းမွန်သော ဝဘ်ရယူသုံးစွဲနိုင်မှုကို ဖွင့်ရန်"</string>
     <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"အပလီကေးရှင်းကို ပိုမိုပြည့်စုံစေရန် စကရစ်များကို သွင်းနိုင်ပါတယ်"</string>
     <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ရိုက်သောစာများကို သေချာစွာ စစ်ဆေးပါ"</string>
     <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"အရေးကြီးသော ကိုယ်ရေးအချက်အလက်များဖြစ်တဲ့ ခရက်ဒစ်ကဒ်နံပါတ်များနှင့် စကားဝှက်များ ပါဝင်ပါတယ်."</string>
     <string name="capability_title_canControlMagnification" msgid="3593493281059424855">"မျက်နှာပြင် ချဲ့ခြင်းကို ထိန်းချုပ်ပါ"</string>
-    <string name="capability_desc_canControlMagnification" msgid="4791858203568383773">"မျက်နှာပြင် ချဲ့ခြင်းနှင့် နေရာချထားခြင်းကို ထိန်းချုပ်ပါ"</string>
+    <string name="capability_desc_canControlMagnification" msgid="4791858203568383773">"မျက်နှာပြင် ဇူးမ်အရွယ်နှင့် နေရာချထားခြင်းကို ထိန်းချုပ်ပါ။"</string>
     <string name="capability_title_canPerformGestures" msgid="7418984730362576862">"လက်ဟန်များ အသုံးပြုပါ"</string>
     <string name="capability_desc_canPerformGestures" msgid="8296373021636981249">"တို့ခြင်း၊ ပွတ်ဆွဲခြင်း၊ နှင့် အခြား လက်ဟန်များကို အသုံးပြုနိုင်ပါသည်။"</string>
     <string name="permlab_statusBar" msgid="7417192629601890791">"အခြေအနေပြဘားအား အလုပ်မလုပ်ခိုင်းရန်သို့မဟုတ် မွမ်းမံရန်"</string>
@@ -293,7 +293,7 @@
     <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"အမည်သွင်းထားသောဖိဖ့်များကို ဖတ်ခြင်း"</string>
     <string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"အက်ပ်အား လောလောဆယ် စင့်က် လုပ်ပြီးသား ထည့်သွင်းမှုများ ဆိုင်ရာ အသေးစိတ်များကို ရယူခွင့်ပြုသည်။"</string>
     <string name="permlab_sendSms" msgid="7544599214260982981">"SMS စာများကို ပို့ကာ ကြည့်မည်"</string>
-    <string name="permdesc_sendSms" msgid="7094729298204937667">"အပလီကေးရှင်းအား စာတိုပို့ခွင့် ပြုပါ။ မမျှော်လင့်သော ကုန်ကျမှု ဖြစ်နိုင်ပါသည်။ အန္တရာယ်ရှိ အပလီကေးရှင်းများမှ သင် မသိပဲ စာပို့ခြင်းများ ပြုလုပ်ခြင်းကြောင့် ပိုက်ဆံ အပို ကုန်စေနိုင်သည်"</string>
+    <string name="permdesc_sendSms" msgid="7094729298204937667">"အက်ပ်အား စာတိုပို့ခွင့် ပြုပါ။ မမျှော်လင့်သော ကုန်ကျမှု ဖြစ်နိုင်ပါသည်။ အန္တရာယ်ရှိ အက်ပ်များမှ သင် မသိပဲ စာပို့ခြင်းများ ပြုလုပ်ခြင်းကြောင့် ပိုက်ဆံ အပို ကုန်စေနိုင်သည်"</string>
     <string name="permlab_readSms" msgid="8745086572213270480">"သင့်ရဲ့ စာပေးပို့ခြင်းများ ဖတ်ခြင်း (စာတို နှင့် ရုပ်သံစာ)"</string>
     <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"အပလီကေးရှင်းအား တက်ဘလက် သို့မဟုတ် ဆင်းမ်ကဒ်မှာ သိမ်းဆည်းထားသော စာတိုများ ဖတ်ရှုခွင့်ပြုပါ။ အပလီကေးရှင်းအနေဖြင့် အကြာင်းအရာ သို့မဟုတ် ယုံကြည်စိတ်ချရမှုကို ဂရုမပြုပဲ စာတိုအားလုံးကို ဖတ်နိုင်ပါလိမ်မည်။"</string>
     <string name="permdesc_readSms" product="tv" msgid="5102425513647038535">"သင့်တီဗွီ သို့မဟုတ် ဆင်းမ်ကဒ်တွင် သိမ်းထားသည့် SMS စာများကို အက်ပ်အား ဖတ်ခွင့်ပြုပါ။ ထိုသို့ခွင့်ပြုခြင်းဖြင့် အက်ပ်သည် အကြောင်းအရာ သို့မဟုတ် ယုံကြည်စိတ်ချရမှု တို့နှင့် မသက်ဆိုင်ဘဲ၊ SMS စာများအားလုံးကို ဖတ်နိုင်မည်ဖြစ်၏။"</string>
@@ -325,9 +325,9 @@
     <string name="permdesc_receiveBootCompleted" product="tv" msgid="4525890122209673621">"စနစ် စတင်ပြီးသည်နှင့် တစ်ပြိုင်နက် အလိုလို အစပြုရန် အက်ပ်အားခွင့်ပြုပါ။ ထိုသို့ခွင့်ပြုခြင်းဖြင့် တီဗွီအား စရန် အချိန်ကြာစေပြီး အစဉ်အမြဲဖွင့်ထားခြင်းဖြင့် တက်ဘလက်အား နှေးသွားစေရန် အက်ပ်အား ခွင့်ပြုပါ။"</string>
     <string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"အက်ပ်အား စနစ်၏ စတင်မှု ပြီးဆုံးသည့်နှင့် မိမိကိုမိမိ စတင်ခွင့် ပြုသည်။ သို့ဖြစ်၍ ဖုန်း စတင်မှုမှာ အချိန် ပိုကြာနိုင်ပြီး အက်ပ်က တချိန်လုံး အလုပ်လုပ်နေခြင်းကြောင့် ဖုန်း၏ အလုပ် တစ်ခုလုံးကို နှေးကွေးလာစေနိုင်သည်။"</string>
     <string name="permlab_broadcastSticky" msgid="7919126372606881614">"ကြာရှည်ခံ ထုတ်လွှတ်မှု အားပေးပို့ခြင်း"</string>
-    <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"အပလီကေးရှင်းအား ကြာရှည်ခံ ထုတ်လွှင့်မှု ပြုပါ။ ဒီထုတ်လွှင့်မှုများဟာ ထုတ်လွှင့်မှု ပြီးဆုံးပြီးသွားတည့်တိုင် ကျန်နေမည် ဖြစ်ပါသည်။ အလွန်အကျွံသုံးခြင်းကြောင့် မက်မိုရီ အသုံးများပြီး တက်ဘလက်နှေးခြင်း၊ မတည်ငြိမ်ခြင်း ဖြစ်နိုင်ပါသည်"</string>
+    <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"အက်ပ်အား ကြာရှည်ခံ ထုတ်လွှင့်မှု ပြုပါ။ ဒီထုတ်လွှင့်မှုများဟာ ထုတ်လွှင့်မှု ပြီးဆုံးပြီးသွားတည့်တိုင် ကျန်နေမည် ဖြစ်ပါသည်။ အလွန်အကျွံသုံးခြင်းကြောင့် မက်မိုရီ အသုံးများပြီး တက်ဘလက်နှေးခြင်း၊ မတည်ငြိမ်ခြင်း ဖြစ်နိုင်ပါသည်"</string>
     <string name="permdesc_broadcastSticky" product="tv" msgid="6839285697565389467">"ထုတ်လွှင့်ခြင်းများ ပြီးဆုံးသည့်နောက် ဆက်လက်ရှိနေသည့်၊ တည်မြဲ ထုတ်လွှင့်မှုများပို့ရန် အက်ပ်အား ခွင့်ပြုပါ။ အလွန်အကျွံ လုပ်ဆောင်ပါက တီဗွီ နှေးသွားခြင်း သို့မဟုတ် မှတ်ဉာဏ်အသုံးများမှုကြောင့် မတည်မငြိမ်ဖြစ်ခြင်းများ ဖြစ်တတ်၏။"</string>
-    <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"အပလီကေးရှင်းအား ကြာရှည်ခံ ထုတ်လွှင့်မှု ပြုပါ။ ဒီထုတ်လွှင့်မှုများဟာ ထုတ်လွှင့်မှု ပြီးဆုံးပြီးသွားတည့်တိုင် ကျန်နေမည် ဖြစ်ပါသည်။ အလွန်အကျွံသုံးခြင်းကြောင့် မှတ်ဉာဏ်အသုံးများပြီး ဖုန်းနှေးခြင်း၊ မတည်ငြိမ်ခြင်း ဖြစ်နိုင်ပါသည်"</string>
+    <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"အက်ပ်အား ကြာရှည်ခံ ထုတ်လွှင့်မှု ပြုပါ။ ဤထုတ်လွှင့်မှုများဟာ ထုတ်လွှင့်မှု ပြီးဆုံးပြီးသွားတည့်တိုင် ကျန်နေမည် ဖြစ်ပါသည်။ အလွန်အကျွံသုံးခြင်းကြောင့် မှတ်ဉာဏ်အသုံးများပြီး ဖုန်းနှေးခြင်း၊ မတည်ငြိမ်ခြင်း ဖြစ်နိုင်ပါသည်"</string>
     <string name="permlab_readContacts" msgid="8348481131899886131">"အဆက်အသွယ်များအား ဖတ်ခြင်း"</string>
     <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"အပလီကေးရှင်းအား ခေါ်ဆိုသော အကြိမ်ရေ၊ အီးမေးလ်အကြိမ်ရေ၊ တခြားဆက်သွယ်မှုများစသည်ကဲ့သို့ သင့်တက်ဘလက်မှာ သိမ်းဆည်းထားသော အဆက်အသွယ်များရဲ့ အချက်အလက်ကို ဖတ်ခွင့်ပြုပါ။ ဤသို့ခွင့်ပြုခြင်းအားဖြင့် အပလီကေးရှင်းများကို သင့် အဆက်အသွယ်၏ အချက်မလက်များကို သိမ်းဆည်းရန် ခွင့်ပြုပြီး အန္တရာယ်ရှိသော အပလီကေးရှင်းများမှ ထိုအချက်အလက်များ ကို သင် မသိစေပဲ ဖြန့်ဝေနိုင််မည် ဖြစ်ပါသည်။"</string>
     <string name="permdesc_readContacts" product="tv" msgid="1839238344654834087">"တစ်ဦးတစ်​ယောက်ထံ သင်ခေါ်ထားသော၊ အီးမေးိပု့ထားသော၊ သို့မဟုတ် တစ်ခြားနည်းဖြင့် အဆက်အသွယ်ပြုထားသော အကြိမ်အရေအတွက် အပါအဝင်၊ သင့်တီဗွီတွင် သိမ်းထားသည့် အဆက်အသွယ်ဆိုင်ရာ အချက်အလက်များ ဖတ်ရန် အက်ပ်အား ခွင့်ပြုပါ။ ဤနည်းဖြင့် သင့် အဆက်အသွယ် အချက်အလက်များအား သိမ်းဆည်းရန် အက်ပ်အား ခွင့်ပြုထားခြင်းဖြစ်ပြီး၊  အဆက်အသွယ် အချက်အလက်များအား အန္တရာယ်ရှိသော အက်ပ်များက သင်မသိဘဲ ဝေမျှနိုင်သည်။"</string>
@@ -351,9 +351,9 @@
     <string name="permdesc_readCalendar" product="tv" msgid="3191352452242394196">"သူငယ်ချင်းများ သို့မဟုတ် လုပ်ဖော်ကိုင်ဖက်များ၏ ဖြစ်ရပ်များ အပါအဝင်၊ သင့် တီဗွီတွင် သိမ်းထားသော ပြက္ခဒိန်ရှိ ဖြစ်ရပ်များအား ဖတ်ရန် အက်ပ်အား ခွင့်ပြုပါ။ ဤနည်းဖြင့် ယုံကြည်စိတ်ချရမှု သို့မဟုတ် ထိခိုက်လွယ်မှုတို့နှင့် မသက်ဆိုင်ဘဲ၊ သင့် ပြက္ခဒိန်ရှိ ဒေတာကို ဝေမျှရန် သို့မဟုတ် သိမ်းဆည်းရန် အက်ပ်အား ခွင့်ပြုသည်။"</string>
     <string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"အပလီကေးရှင်းအားဖုန်းထဲတွင် သိမ်းထားသော သူငယ်ချင်းနှင့် လုပ်ဖော်ကိုင်ဘက်များ၏ ပြက္ခဒိန် အဖြစ်အပျက်များအပါအဝင် အားလုံးကို ဖတ်ရှုခွင့်ပြုပါ။ ဒီခွင့်ပြုချက်ကြောင့် အပလီကေးရှင်းမှ ပြက္ခဒိန် အဖြစ်အပျက်များအား လျှို့ဝှက်မှု သို့ ဂရုပြုမှု ကို ထည့်သွင်းမစဉ်းစားပဲ သိမ်းဆည်းခြင်း၊ မျှဝေခြင်း ပြုလုပ်စေနိုင်ပါသည်"</string>
     <string name="permlab_writeCalendar" msgid="8438874755193825647">"ပြက္ခဒိန်အဖြစ်အပျက်များကို ထပ်ထည့်ရန် သို့မဟုတ် မွမ်းမံရန်နှင့် ပိုင်ရှင်၏အသိမပေးပဲ ဧည့်သည်များထံ အီးမေးလ်ပို့ရန်"</string>
-    <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"အပလီကေးရှင်းအား သင်၏ တက်ဘလက်တွင် သူငယ်ချင်း အလုပ်ဖော်များ အပါအဝင် သင်၏ ပြောင်းလဲအဖြစ်အပျက်များအား ထည့်ခြင်း၊ ထုတ်ခြင်းအား ခွင့်ပြုရန်။ ဤခွင့်ပြုချက်သည် အပလီကေးရှင်းအား သတင်းများပို့ခြင်းကို ပြက္ခဒိန်ပိုင်ရှင်ဆီမှ လာသလို အနေဖြင့် ပေးပို့ခြင်း သို့မဟုတ် အဖြစ်အပျက်များကို ပိုင်ရှင်မသိပဲ ပြင်ဆင်နိုင်ပါသည်။"</string>
+    <string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"အက်ပ်အား သင်၏ တက်ဘလက်တွင် မိတ်ဆွေ အလုပ်ဖော်များ အပါအဝင် သင်၏ ပြောင်းလဲအဖြစ်အပျက်များအား ထည့်ခြင်း၊ ထုတ်ခြင်းအား ခွင့်ပြုရန်။ ဤခွင့်ပြုချက်သည် အက်ပ်အား သတင်းများပို့ခြင်းကို ပြက္ခဒိန်ပိုင်ရှင်ဆီမှ လာသလို အနေဖြင့် ပေးပို့ခြင်း သို့မဟုတ် အဖြစ်အပျက်များကို ပိုင်ရှင်မသိပဲ ပြင်ဆင်နိုင်ပါသည်။"</string>
     <string name="permdesc_writeCalendar" product="tv" msgid="1273290605500902507">"သင့် သူငယ်ချင်းများ သို့မဟုတ် လုပ်ဖော်ကိုင်ဖက်များ၏ လှုပ်ရှားမှုများ အပါအဝင်၊ သင့်တီဗွီရှိ လှုပ်ရှားမှုများကို ထပ်ထည့်ရန်၊ ဖယ်ထုတ်ရန်၊ ပြောင်းလဲရန် အက်ပ်အား ခွင့်ပြုပါ။ ဤသို့ပြုပါက ပြက္ခဒိန် ပိုင်ရှင်ဆီမှ စာတိုများ လာသကဲ့သို့ စာများပို့ရန်၊ သို့မဟုတ် ပိုင်ရှင်၏ ခွင့်ပြုချက်မရှိဘဲ လှုပ်ရှားမှုများကို ပြင်ဆင်ရန် အက်ပ်အား ခွင့်ပြုထားခြင်း ဖြစ်၏။"</string>
-    <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"အပလီကေးရှင်းအား သင်၏ ဖုန်းတွင် သူငယ်ချင်း အလုပ်ဖော်များ အပါအဝင် သင်၏ ပြောင်းလဲအဖြစ်အပျက်များအား ထည့်ခြင်း၊ ထုတ်ခြင်းအား ခွင့်ပြုရန်။ ဤခွင့်ပြုချက်သည် အပလီကေးရှင်းအား သတင်းများပို့ခြင်းကို ပြက္ခဒိန်ပိုင်ရှင်ဆီမှ လာသလို အနေဖြင့် ပေးပို့ခြင်း သို့မဟုတ် အဖြစ်အပျက်များကို ပိုင်ရှင်မသိပဲ ပြင်ဆင်နိုင်ပါသည်။"</string>
+    <string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"အက်ပ်အား သင်၏ ဖုန်းတွင် မိတ်ဆွေ အလုပ်ဖော်များ အပါအဝင် သင်၏ ပြောင်းလဲအဖြစ်အပျက်များအား ထည့်ခြင်း၊ ထုတ်ခြင်းအား ခွင့်ပြုရန်။ ဤခွင့်ပြုချက်သည် အက်ပ်အား သတင်းများပို့ခြင်းကို ပြက္ခဒိန်ပိုင်ရှင်ဆီမှ လာသလို အနေဖြင့် ပေးပို့ခြင်း သို့မဟုတ် အဖြစ်အပျက်များကို ပိုင်ရှင်မသိပဲ ပြင်ဆင်နိုင်ပါသည်။"</string>
     <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"တည်နေရာပံ့ပိုးမှုညွှန်ကြားချက်အပိုအား ဝင်ရောက်ကြည့်ခြင်း"</string>
     <string name="permdesc_accessLocationExtraCommands" msgid="6078307221056649927">"အက်ပ်အား တည်နေရာ စီမံပေးရေး ညွှန်ကြားချက် အပိုများကို ရယူခွင့်ပြုသည်။ သို့ဖြစ်၍ အက်ပ်သည် GPS သို့မဟုတ် အခြား တည်နေရာ ရင်းမြစ်ကို သုံးကြသူတို့၏ လုပ်ငန်းများကို ဝင်စွက်ခွင့် ပြုနိုင်သည်။"</string>
     <string name="permlab_accessFineLocation" msgid="251034415460950944">"တိကျတဲ့ တည်နေရာ (GPS နှင့် ကွန်ရက် အခြေခံ)ကို ရယူသုံးရန်"</string>
@@ -365,7 +365,7 @@
     <string name="permlab_recordAudio" msgid="3876049771427466323">"အသံဖမ်းခြင်း"</string>
     <string name="permdesc_recordAudio" msgid="4906839301087980680">"အပလီကေးရှင်းအား မိုက်ခရိုဖုန်းဖြင့် အသံသွင်းခွင့် ပြုပါ။ အပလီကေးရှင်းအနေဖြင့် သင့် ခွင့်ပြုချက် မပါပဲ အချိန်မရွေး အသံဖမ်းနိုင်ပါမည်"</string>
     <string name="permlab_sim_communication" msgid="2935852302216852065">"SIM ထံသို့ ညွှန်ကြားချက်များကို ပို့ပါ"</string>
-    <string name="permdesc_sim_communication" msgid="5725159654279639498">"အပလီကေးရှင်းအား ဆင်းမ်ကဒ်ဆီသို့ အမိန့်များ ပေးပို့ခွင့် ပြုခြင်း။ ဒီ ခွင့်ပြုမှုဟာ အန်တရယ် အလွန် ရှိပါသည်။."</string>
+    <string name="permdesc_sim_communication" msgid="5725159654279639498">"အက်ပ်အား ဆင်းမ်ကဒ်ဆီသို့ အမိန့်များ ပေးပို့ခွင့် ပြုခြင်း။ ဤခွင့်ပြုမှုမှာ အန္တရာယ်အလွန် ရှိပါသည်။"</string>
     <string name="permlab_camera" msgid="3616391919559751192">"ဓါတ်ပုံနှင့်ဗွီဒီယိုရိုက်ခြင်း"</string>
     <string name="permdesc_camera" msgid="8497216524735535009">"အပလီကေးရှင်းအား အလိုအလျောက် ဓာတ်ပုံရိုက်ခွင့်၊ ဗီဒီယို ရိုက်ကူးခွင့် ပြုပါ။ ဒီခွင့်ပြုချက်က အပလီကေးရှင်းကို အချိန်မရွေး ကင်မရာအား ခွင့်ပြုချက် မလိုအပ်ပဲ သုံးခွင့်ပြုပါသည်။"</string>
     <string name="permlab_vibrate" msgid="7696427026057705834">"တုန်ခုန်မှုအား ထိန်းချုပ်ခြင်း"</string>
@@ -401,7 +401,7 @@
     <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ကွန်ရက် ချိတ်ဆက်မှုများအား ကြည့်ရန်"</string>
     <string name="permdesc_accessNetworkState" msgid="8318964424675960975">"အပလီကေးရှင်းအား မည်သည့်ကွန်ရက်နက်ဝဘ်ရှိသလဲ၊ မည်သည့်ကွန်ရက်နှင့် ချိတ်ဆက်ထားလဲ စသည်ဖြင့် ကွန်ရက်ချိတ်ဆက်မှုများ၏ သတင်းအချက်အလက်များကို ကြည့်ခွင့်ပေးရန်"</string>
     <string name="permlab_createNetworkSockets" msgid="7934516631384168107">"ကွန်ရက်ကို အပြည့်အဝ ရယူသုံးနိုင်"</string>
-    <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"အပလီကေးရှင်းအား ကွန်ရက်ဆော့ကတ်များ တည်ဆောက်ခွင့်၊ တသီးတသန့် ကွန်ရက် ပရိုတိုကောလ်များ သုံးခွင့် ပြုပါ။ အင်တာနက်မှ အချက်အလက်များ ပေးပို့ခြင်းကို ဘရောက်ဇာနှင့် တခြား အပလီကေးရှင်းများက လုပ်ဆောင်ပေးသောကြောင့် ဒီခွင့်ပြုချက်က အင်တာနက်မှ အချက်အလက် ပေးပို့ခြင်း မလိုအပ်ပါ"</string>
+    <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"အက်ပ်အား ကွန်ရက်ဆော့ကတ်များ တည်ဆောက်ခွင့်၊ တသီးတသန့် ကွန်ရက် ပရိုတိုကောလ်များ သုံးခွင့် ပြုပါ။ အင်တာနက်မှ အချက်အလက်များ ပေးပို့ခြင်းကို ဘရောက်ဇာနှင့် တခြား အက်ပ်များက လုပ်ဆောင်ပေးသောကြောင့် ဒီခွင့်ပြုချက်က အင်တာနက်မှ အချက်အလက် ပေးပို့ခြင်း မလိုအပ်ပါ"</string>
     <string name="permlab_changeNetworkState" msgid="958884291454327309">"ကွန်ယက်ဆက်သွယ်မှုအားပြောင်းခြင်း"</string>
     <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"အက်ပ်အား ကွန်ရက် ချိတ်ဆက်နိုင်စွမ်း အခြေအနေကို ပြောင်းလဲခွင့် ပြုသည်။"</string>
     <string name="permlab_changeTetherState" msgid="5952584964373017960">"တစ်ဆင့်ပွါးဆက်သွယ်မှုအားပြောင်းခြင်း"</string>
@@ -488,37 +488,37 @@
     <string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"ကွန်ယက်အသုံးပြုမှုစာရင်းအား မွမ်းမံခြင်း"</string>
     <string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"အပလီကေးရှင်းအား တခြားအပလီကေးရှင်းများမှ ကွန်ရက်အသုံးပြုမှု တွက်ချက်ခြင်းအား ပြင်ဆင်ခွင့် ပြုပါ။ ပုံမှန် အပလီကေးရှင်းများအတွက် မလိုအပ်ပါ။"</string>
     <string name="permlab_accessNotifications" msgid="7673416487873432268">"သတိပေးချက်များအား အသုံးပြုခွင့်"</string>
-    <string name="permdesc_accessNotifications" msgid="458457742683431387">"အပလီကေးရှင်းကို အကြောင်းကြားချက်များအား ထုတ်လုပ်ရန်၊ လေ့လာရန်၊ ဖျက်ပစ်ရန် ခွင့်ပြုခြင်း။ တခြား အပလီကေးရှင်းများမှ သတိပေးချက်များလည်း ပါဝင်ပါသည်"</string>
+    <string name="permdesc_accessNotifications" msgid="458457742683431387">"အပလီကေးရှင်းကို အကြောင်းကြားချက်များအား ထုတ်လုပ်ရန်၊ လေ့လာရန်၊ ဖျက်ရန် ခွင့်ပြုခြင်း။ တခြား အပလီကေးရှင်းများမှ သတိပေးချက်များလည်း ပါဝင်ပါသည်"</string>
     <string name="permlab_bindNotificationListenerService" msgid="7057764742211656654">"သတိပေးချက် နားထောင်ခြင်း ဆားဗစ် နှင့် ပူးပေါင်းခြင်း"</string>
-    <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"ဖုန်းကိုင်ထားသူနှင့် အကြောင်းကြားချက် နားစွင့်သော ဆားဗစ်မှ ထိပ်ပိုင်းအင်တာဖေ့စ် ကို ပူးပေါင်းခွင့်ပေးခြင်း။ ပုံမှန် အပလီကေးရှင်းများမှာ မလိုအပ်ပါ"</string>
+    <string name="permdesc_bindNotificationListenerService" msgid="985697918576902986">"ဖုန်းကိုင်ထားသူနှင့် အကြောင်းကြားချက် နားစွင့်သော ဆားဗစ်မှ ထိပ်ပိုင်းအင်တာဖေ့စ် ကို ပူးပေါင်းခွင့်ပေးခြင်း။ ပုံမှန် အက်ပ်များအတွက် ဘယ်တော့မှ မလိုအပ်ပါ"</string>
     <string name="permlab_bindConditionProviderService" msgid="1180107672332704641">"အခြေအနေ စီမံပေးရေး ဝန်ဆောင်မှု တစ်ခုဆီသို့ ချိတ်တွဲခြင်း"</string>
     <string name="permdesc_bindConditionProviderService" msgid="1680513931165058425">"စွဲကိုင်ထားသူအား အခြေအနေကို စီမံပေးသူ၏ ထိပ်သီး အဆင့် အင်တာဖေ့စ်သို့ ချိတ်တွဲခွင့်ကို ပေးသည်။ သာမန် အက်ပ်များ အတွက် ဘယ်တော့မှ မလိုအပ်နိုင်ပါ။"</string>
     <string name="permlab_bindDreamService" msgid="4153646965978563462">"အိပ်မက် ဝန်ဆောင်မှုသို့ ပေါင်းစည်းမည်"</string>
-    <string name="permdesc_bindDreamService" msgid="7325825272223347863">"အိမ်မက်ဝန်ဆောင်မှု၏ ထိပ်တန်းအဆင့် မျက်နှာပြင်အား ကိုင်ဆောင်သူမှ ပေါင်းစည်းရန် ခွင့်ပြုမည်။ သာမန် အပလီကေးရှင်းများတွင် မလိုအပ်ပါ။"</string>
+    <string name="permdesc_bindDreamService" msgid="7325825272223347863">"အိမ်မက်ဝန်ဆောင်မှု၏ ထိပ်တန်းအဆင့် မျက်နှာပြင်အား ကိုင်ဆောင်သူမှ ပေါင်းစည်းရန် ခွင့်ပြုမည်။ သာမန် အက်ပ်များတွင်ဘယ်တော့မှ မလိုအပ်ပါ။"</string>
     <string name="permlab_invokeCarrierSetup" msgid="3699600833975117478">"မိုဘိုင်းဆက်သွယ်ရေးဝန်ဆောင်မှုဌာန မှ ထည့်သွင်းပေးသော အခြေအနေများအား ပယ်ဖျက်ခြင်း"</string>
-    <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"ကိုင်ဆောင်သူအားမိုဘိုင်းဆက်သွယ်ရေးဝန်ဆောင်မှုဌာနမှ ထည့်သွင်းထားတဲ့ အပြင်အဆင်အား ပယ်ဖျက်ခွင့် ပေးခြင်း။ ပုံမှန် အပလီကေးရှင်းများမှာ မလိုပါ"</string>
+    <string name="permdesc_invokeCarrierSetup" msgid="4159549152529111920">"ကိုင်ဆောင်သူအားမိုဘိုင်းဆက်သွယ်ရေးဝန်ဆောင်မှုဌာနမှ ထည့်သွင်းထားတဲ့ အပြင်အဆင်အား ပယ်ဖျက်ခွင့် ပေးခြင်း။ ပုံမှန် အက်ပ်များအတွက် ဘယ်တော့မှ မလိုအပ်ပါ။"</string>
     <string name="permlab_accessNetworkConditions" msgid="8206077447838909516">"ကွန်ယက်အခြေအနေအား လေ့လာနေမှုအား နားထောင်ခွင့်"</string>
-    <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"အက်ပ်ကို နက်ဝေါ့ ပေါ်က အခြေအနေကို သတိထားခွင့် ပေးခြင်း၊. ပုံမှန် အက်ပ်များတွင် မလိုအပ်ပါ"</string>
+    <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"အပလီကေးရှင်းကို ကွန်ရက်ပေါ်က အခြေအနေစောင့်ကြည့်ခွင့်ပေးခြင်း၊ ပုံမှန် အက်ပ်များတွင် ဘယ်တော့မှ မလိုအပ်ပါ"</string>
     <string name="permlab_setInputCalibration" msgid="4902620118878467615">"change ထည့်သွင်းရေး ကိရိယာ တိုင်းထွာညှိနှိုင်းမှု ပြောင်းလဲခြင်း"</string>
-    <string name="permdesc_setInputCalibration" msgid="4527511047549456929">"အက်ပ်အား တို့ထိရေး မျက်နှာပြင် တိုင်းထွာစံညှိမှုကို မွမ်းမံခွင့် ပြုသည်။ သာမန် အက်ပ်များ  ဘယ်တော့မှ မလိုအပ်နိုင်ပါ။"</string>
+    <string name="permdesc_setInputCalibration" msgid="4527511047549456929">"အက်ပ်အား တို့ထိရေး မျက်နှာပြင် တိုင်းထွာစံညှိမှုကို မွမ်းမံခွင့် ပြုသည်။ သာမန် အက်ပ်များအတွက်  ဘယ်တော့မှ မလိုအပ်နိုင်ပါ။"</string>
     <string name="permlab_accessDrmCertificates" msgid="7436886640723203615">"DRM လက်မှတ်များကို ရယူသုံးခြင်း"</string>
-    <string name="permdesc_accessDrmCertificates" msgid="8073288354426159089">"အက်ပ်တစ်ခုအား စီမံလုပ်ကိုင်ခွင့် DRM လက်မှတ်များ သုံးခွင့် ပြုသည်။ သာမန် အက်ပ်များ အတွက် ဘယ်တော့မှ မလိုအပ်နိုင်ပါ။"</string>
+    <string name="permdesc_accessDrmCertificates" msgid="8073288354426159089">"အပလီကေးရှင်းတစ်ခုအား စီမံလုပ်ကိုင်ခွင့် DRM လက်မှတ်များ သုံးခွင့် ပြုသည်။ သာမန် အက်ပ်များ အတွက် ဘယ်တော့မှ မလိုအပ်နိုင်ပါ။"</string>
     <string name="permlab_handoverStatus" msgid="7820353257219300883">"Android ရဲ့ အလင်းတန်းထိုး လွှဲပြောင်းမှု အခြေအနေကို ရယူရန်"</string>
     <string name="permdesc_handoverStatus" msgid="4788144087245714948">"ဒီအပလီကေးရှင်းအား အန်ဒရွိုက်၏ လက်ရှိ အလင်းတန်းထိုး လွှဲပြောင်းမှု အကြောင်း အချက်အလက်ကို ရယူခွင့် ပြုသည်"</string>
     <string name="permlab_removeDrmCertificates" msgid="7044888287209892751">"DRM လက်မှတ်များ ဖယ်ရှားရန်"</string>
     <string name="permdesc_removeDrmCertificates" msgid="7272999075113400993">"အပလီကေးရှင်းအား DRM လက်မှတ်များကို ဖယ်ရှားခွင့် ပြုသည်။  သာမန် အက်ပ်များ အတွက် ဘယ်တော့မှ မလိုအပ်နိုင်ပါ။"</string>
     <string name="permlab_bindCarrierMessagingService" msgid="1490229371796969158">"စာပို့စာယူ ဆက်သွယ်ရေးဝန်ဆောင်မှုတစ်ခုအား ပူးပေါင်းခွင့်ပြုရန်"</string>
-    <string name="permdesc_bindCarrierMessagingService" msgid="2762882888502113944">"စာပို့စာယူဆက်သွယ်ရေးဝန်ဆောင်မှုတစ်ခု၏ ထိပ်ဆုံးရှိအင်တာဖေ့စ်ဖြင့် ပူးပေါင်းရန် ပိုင်ရှင်အားခွင့်ပြုပါ။ ပုံမှန် အက်ပ်များအတွက် မလိုအပ်ပါ။"</string>
+    <string name="permdesc_bindCarrierMessagingService" msgid="2762882888502113944">"စာပို့စာယူဆက်သွယ်ရေးဝန်ဆောင်မှုတစ်ခု၏ ထိပ်ဆုံးရှိအင်တာဖေ့စ်ဖြင့် ပူးပေါင်းရန် ပိုင်ရှင်အားခွင့်ပြုပါ။ ပုံမှန် အက်ပ်များအတွက် ဘယ်တော့မှ မလိုအပ်ပါ။"</string>
     <string name="permlab_bindCarrierServices" msgid="3233108656245526783">"မိုဘိုင်းဖုန်းဝန်ဆောင်မှုပေးသူများနှင့် ပူးပေါင်းခွင့်ပြုရန်"</string>
-    <string name="permdesc_bindCarrierServices" msgid="1391552602551084192">"မိုဘိုင်းဖုန်းဝန်ဆောင်မှုစနစ်တစ်ခုအား ပူးပေါင်းခွင့်ပြုရန် ကိုင်ဆောင်ထားသူအား ခွင့်ပြုပါ။ သာမန် အက်ပ်များ အတွက် မည်သည့်အခါမျှ မလိုအပ်ပါ။"</string>
+    <string name="permdesc_bindCarrierServices" msgid="1391552602551084192">"မိုဘိုင်းဖုန်းဝန်ဆောင်မှုစနစ်တစ်ခုအား ပူးပေါင်းခွင့်ပြုရန် ကိုင်ဆောင်ထားသူအား ခွင့်ပြုပါ။ သာမန် အက်ပ်များ အတွက် ဘယ်တော့မှ မလိုအပ်ပါ။"</string>
     <string name="permlab_access_notification_policy" msgid="4247510821662059671">"မနှောင့်ယှက်ရန်ကို အသုံးပြုမည်"</string>
     <string name="permdesc_access_notification_policy" msgid="3296832375218749580">"မနှောင့်ယှက်ရန် ချိန်ညှိမှုကို အပ်ဖ်များ ဖတ်ခြင်း ပြင်ခြင်းပြုလုပ်နိုင်ရန် ခွင့်ပြုမည်။"</string>
     <string name="policylab_limitPassword" msgid="4497420728857585791">"စကားဝှက်စည်းမျဥ်းကိုသတ်မှတ်ရန်"</string>
     <string name="policydesc_limitPassword" msgid="2502021457917874968">"မျက်နှာပြင်သော့ခတ်သည့် စကားဝှက်များနှင့် PINများရှိ ခွင့်ပြုထားသည့် စာလုံးအရေအတွက်နှင့် အက္ခရာများအား ထိန်းချုပ်ရန်။"</string>
     <string name="policylab_watchLogin" msgid="914130646942199503">"မော်နီတာမျက်နှာပြင်ဖွင့်ရန် ကြိုးစားခွင့်များ"</string>
-    <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"မျက်နှာပြင်ကို သော့ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက်၊ စကားဝှက် ရိုက်ထည့်မှု သိပ်များနေလျှင် တက်ဘလက်ကို သော့ခတ်ရန် သို့မဟုတ် တက်ဘလက် ဒေတာ အားလုံးကို ဖျက်ပစ်ရန်။"</string>
+    <string name="policydesc_watchLogin" product="tablet" msgid="3215729294215070072">"မျက်နှာပြင်ကို သော့ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက်၊ စကားဝှက် ရိုက်ထည့်မှု သိပ်များနေလျှင် တက်ဘလက်ကို သော့ခတ်ရန် သို့မဟုတ် တက်ဘလက် ဒေတာ အားလုံးကို ဖျက်ရန်။"</string>
     <string name="policydesc_watchLogin" product="TV" msgid="2707817988309890256">"ဖန်မျက်နှာပြင်အား သော့ဖွင့်စဉ် လျှို့ဝှက်ကုဒ်အမှားများ ရိုက်သွင်းမှုအား စောင့်ကြည့်ရန်နှင့်၊ လျှို့ဝှက်ကုဒ်အမှားများ များစွာ ရိုက်သွင်းပါက တီဗွီအား သော့ချခြင်း သို့မဟုတ် တီဗွီ၏ အချက်အလက်များအား ဖျက်ပစ်ခြင်းများ ပြုရန်။"</string>
-    <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"မျက်နှာပြင်ကို သော့ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက်၊ စကားဝှက် ရိုက်ထည့်မှု သိပ်များနေလျှင် ဖုန်းကို သော့ခတ်ရန် သို့မဟုတ် ဖုန်း ဒေတာ အားလုံးကို ဖျက်ပစ်ရန်။"</string>
+    <string name="policydesc_watchLogin" product="default" msgid="5712323091846761073">"မျက်နှာပြင်ကို သော့ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက်၊ စကားဝှက် ရိုက်ထည့်မှု သိပ်များနေလျှင် ဖုန်းကို သော့ခတ်ရန် သို့မဟုတ် ဖုန်း ဒေတာ အားလုံးကို ဖျက်ရန်။"</string>
     <string name="policydesc_watchLogin_secondaryUser" product="tablet" msgid="4280246270601044505">"ဖန်မျက်နှာပြင်အား သော့ဖွင့်စဉ် လျှို့ဝှက်ကုဒ်အမှားများ ရိုက်သွင်းမှုအား စောင့်ကြည့်ရန်နှင့်၊ လျှို့ဝှက်ကုဒ်အမှားများ များစွာ ရိုက်သွင်းပါက တက်ဘလက်အား သော့ချခြင်း သို့မဟုတ် တက်ဘလက်၏ အချက်အလက်များအား ဖျက်ပစ်ခြင်းများ ပြုလုပ်မည်။"</string>
     <string name="policydesc_watchLogin_secondaryUser" product="TV" msgid="3484832653564483250">"ဖန်မျက်နှာပြင်အား သော့ဖွင့်စဉ် လျှို့ဝှက်ကုဒ်အမှားများ ရိုက်သွင်းမှုအား စောင့်ကြည့်ရန်နှင့်၊ လျှို့ဝှက်ကုဒ်အမှားများ များစွာ ရိုက်သွင်းပါက တီဗွီအား သော့ချခြင်း သို့မဟုတ် တီဗွီ၏ အချက်အလက်များအား ဖျက်ပစ်ခြင်းများ ပြုလုပ်မည်။"</string>
     <string name="policydesc_watchLogin_secondaryUser" product="default" msgid="2185480427217127147">"ဖန်မျက်နှာပြင်အား သော့ဖွင့်စဉ် လျှို့ဝှက်ကုဒ်အမှားများ ရိုက်သွင်းမှုအား စောင့်ကြည့်ရန်နှင့်၊ လျှို့ဝှက်ကုဒ်အမှားများ များစွာ ရိုက်သွင်းပါက ဖုန်းအား သော့ချခြင်း သို့မဟုတ် ဖုန်း၏ အချက်အလက်များအား ဖျက်ပစ်ခြင်းများ ပြုလုပ်မည်။"</string>
@@ -657,7 +657,7 @@
     <string name="sipAddressTypeHome" msgid="6093598181069359295">"ပင်မစာမျက်နှာ"</string>
     <string name="sipAddressTypeWork" msgid="6920725730797099047">"အလုပ်အကိုင်"</string>
     <string name="sipAddressTypeOther" msgid="4408436162950119849">"တခြား"</string>
-    <string name="quick_contacts_not_available" msgid="746098007828579688">"ဒီအဆက်အသွယ်အား ကြည့်ရှုရန်  အက်ပ်မတွေ့ပါ"</string>
+    <string name="quick_contacts_not_available" msgid="746098007828579688">"ဤအဆက်အသွယ်အား ကြည့်ရှုရန်  အပလီကေးရှင်းမတွေ့ပါ"</string>
     <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN ကုဒ် ရိုက်ထည့်ပါ"</string>
     <string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK နှင့် PIN ကုဒ် အသစ်ကို ရိုက်ထည့်ပါ"</string>
     <string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK နံပါတ်"</string>
@@ -771,7 +771,7 @@
     <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"ဒီစာမျက်နှာပေါ်မှာ ဆက်နေပါ"</string>
     <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nဒီစာမျက်နှာကနေ သွားဖို့ သေချာပါသလား?"</string>
     <string name="save_password_label" msgid="6860261758665825069">"အတည်ပြုသည်"</string>
-    <string name="double_tap_toast" msgid="4595046515400268881">"အကြံပေးချက်: အကြီးအသေး ချုံ့၊ချဲ့ ရန် နှစ်ခါ တို့ပါ"</string>
+    <string name="double_tap_toast" msgid="4595046515400268881">"အကြံပေးချက်- ဇူးမ်ဆွဲရန်နှင့် ဖြုတ်ရန် နှစ်ကြိမ်ဆက်တိုက် တို့ပါ"</string>
     <string name="autofill_this_form" msgid="4616758841157816676">"အလိုအလျောက်ဖြည့်ပါ"</string>
     <string name="setup_autofill" msgid="7103495070180590814">"အလိုအလျောက်ဖြည့်ရန် သတ်မှတ်သည်"</string>
     <string name="autofill_address_name_separator" msgid="6350145154779706772">" "</string>
@@ -794,31 +794,31 @@
     <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"အပလီကေးရှင်းအား ဘရောင်ဇာမှ ယခင် သွားရောက်ထားသော URLများ၊ နေရာ အမှတ်အသားများအား ကြည့်ရှုခွင့်ပြုပါ။ မှတ်ချက်။ ဒီခွင့်ပြုချက်ကို တတိယပါတီ ဘရောင်ဇာများ နှင့် တခြား အပလီကေးရှင်းများမှ လုပ်ဆောင်မည် မဟုတ်ပါ။"</string>
     <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"သင့်ရဲ့ ဝဘ် အမှတ်နေရာများနှင့် သွားလာသော မှတ်တမ်း ရေးခြင်း"</string>
     <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"အပလီကေးရှင်းအား ဘရောင်ဇာမှ မှတ်တမ်း သို့ မှတ်သားမှု အမှတ်များအား ပြင်ဆင်ခွင့် ပေးခြင်း။ အပလီကေးရှင်းမှ ဘရောင်ဇာ မှတ်တမ်းများကို ဖျက်ပစ်ခွင့် သို့ ပြင်ဆင်ခွင့် ရှိပါမည်။ မှတ်ချက်။ ဤခွင့်ပြုချက်ကို တတိယပါတီ ဘရောင်ဇာများ၊ တခြား အပလီကေးရှင်းများမှ သုံးမည် မဟုတ်ပါ။"</string>
-    <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="7007393823197766548">"ဘရောင်ဇာ၏မှတ်တမ်း သို့မဟုတ် တီဗွီတွင်သိမ်းထားသည့် မှတ်သားချက်များအား ပြင်ဆင်ရန် အက်ပ်အား ခွင့်ပြုပါ။ ဤသို့ပြုခြင်းသည် ဘရောင်ဇာ၏ အချက်အလက်များအား ဖျက်ပစ်ရန် သို့မဟုတ် ပြင်ဆင်ရန် အက်ပ်အား ခွင့်ပြုထားခြင်းဖြစ်၏။ မှတ်ချက်၊ ဤသို့ခွင့်ပြုခြင်းသည် ပြင်ပဘရောင်ဇာများ သို့မဟုတ် ဝဘ်အား ကြည့်ရှုနိုင်သည့် တစ်ခြားသော အပလီကေးရှင်းများအား သက်ရောက်မှုရှိမည် မဟုတ်ပါ။"</string>
+    <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="7007393823197766548">"ဘရောင်ဇာ၏မှတ်တမ်း သို့မဟုတ် တီဗွီတွင်သိမ်းထားသည့် မှတ်သားချက်များအား ပြင်ဆင်ရန် အက်ပ်အား ခွင့်ပြုပါ။ ဤသို့ပြုခြင်းသည် ဘရောင်ဇာ၏ အချက်အလက်များအား ဖျက်ရန် သို့မဟုတ် ပြင်ဆင်ရန် အက်ပ်အား ခွင့်ပြုထားခြင်းဖြစ်၏။ မှတ်ချက်၊ ဤသို့ခွင့်ပြုခြင်းသည် ပြင်ပဘရောင်ဇာများ သို့မဟုတ် ဝဘ်အား ကြည့်ရှုနိုင်သည့် တစ်ခြားသော အပလီကေးရှင်းများအား သက်ရောက်မှုရှိမည် မဟုတ်ပါ။"</string>
     <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"အပလီကေးရှင်းအား ဘရောင်ဇာမှ မှတ်တမ်း သို့ မှတ်သားမှု အမှတ်များအား ပြင်ဆင်ခွင့် ပေးခြင်း။ အပလီကေးရှင်းမှ ဘရောင်ဇာ မှတ်တမ်းများကို ဖျက်ပစ်ခွင့် သို့ ပြင်ဆင်ခွင့် ရှိပါမည်။ မှတ်ချက်။ ဒီခွင့်ပြုချက်ကို တတိယပါတီ ဘရောင်ဇာများ၊ တခြား အပလီကေးရှင်းများမှ သုံးမည် မဟုတ်ပါ။"</string>
     <string name="permlab_setAlarm" msgid="1379294556362091814">"နှိုးစက်သတ်မှတ်ရန်"</string>
     <string name="permdesc_setAlarm" msgid="316392039157473848">"အက်ပ်အား တပ်ဆင်ထားသည့် နှိုးစက်နာရီ အက်ပ်ထဲတွင် နှိုးစက်ကို သတ်မှတ်ခွင့် ပြုသည်။ အချို့ နှိုးစက် အက်ပ်များက ထိုအင်္ဂါရပ်ကို ပြီးမြောက်အောင် မလုပ်နိုင်ကြပါ။"</string>
     <string name="permlab_addVoicemail" msgid="5525660026090959044">"အသံစာပို့စနစ်အားထည့်ရန်"</string>
     <string name="permdesc_addVoicemail" msgid="6604508651428252437">"အက်ပ်အား သင့် အသံမေးလ် ဝင်စာသို့ စာများကို ထည့်ခွင့် ပြုသည်။"</string>
     <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"ဘရောင်ဇာ ဘူမိဇုန်သတ်မှတ်မှု ခွင့်ပြုချက်များကို မွမ်းမံခြင်း"</string>
-    <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"အက်ပ်အား ဘရောင်ဇာ၏ ဘူမိဇုန်သတ်မှတ်ရေး ခွင့်ပြုချက်များကို မွမ်းမံခွင့် ပြုသည်။ ကြံဖန် အက်ပ်များက ၎င်းကို အသုံးချပြီး လိုရာ ဝက်ဘ်ဆိုက်များသို့ တည်နေရာ အချက်အလက် ပို့မှုကို လုပ်နိုင်သည်။"</string>
+    <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"အက်ပ်အား ဘရောင်ဇာ၏ ဘူမိဇုန်သတ်မှတ်ရေး ခွင့်ပြုချက်များကို မွမ်းမံခွင့်ပြုသည်။ အဖျက်အက်ပ်များက ၎င်းကိုအသုံးချပြီး လိုရာ ဝဘ်ဆိုက်များသို့ တည်နေရာအချက်အလက် ပို့နိုင်သည်။"</string>
     <string name="save_password_message" msgid="767344687139195790">"ဤလျှို့ဝှက်စကားဝှက်အား ဘရောင်ဇာကိုမှတ်ခိုင်းမည်လား"</string>
     <string name="save_password_notnow" msgid="6389675316706699758">"ယခုမလုပ်ပါ"</string>
     <string name="save_password_remember" msgid="6491879678996749466">"မှတ်ထားရန်"</string>
-    <string name="save_password_never" msgid="8274330296785855105">"ကန့်သတ်မှုမရှိ"</string>
+    <string name="save_password_never" msgid="8274330296785855105">"ဘယ်တော့မှ"</string>
     <string name="open_permission_deny" msgid="7374036708316629800">"သင့်ဆီမှာ ဒီစာမျက်နှာကို ဖွင့်ရန် ခွင့်ပြုချက် မရှိပါ။"</string>
     <string name="text_copied" msgid="4985729524670131385">"clipboardထံ စာသားအားကူးယူမည်"</string>
     <string name="more_item_label" msgid="4650918923083320495">"နောက်ထပ်"</string>
     <string name="prepend_shortcut_label" msgid="2572214461676015642">"Menu+"</string>
     <string name="menu_space_shortcut_label" msgid="2410328639272162537">"space"</string>
     <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"enter"</string>
-    <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"ဖျက်"</string>
+    <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"ဖျက်ရန်"</string>
     <string name="search_go" msgid="8298016669822141719">"ရှာဖွေခြင်း"</string>
     <string name="search_hint" msgid="1733947260773056054">"ရှာဖွေပါ..."</string>
     <string name="searchview_description_search" msgid="6749826639098512120">"ရှာဖွေခြင်း"</string>
     <string name="searchview_description_query" msgid="5911778593125355124">"ရှာစရာ အချက်အလက်နေရာ"</string>
     <string name="searchview_description_clear" msgid="1330281990951833033">"ရှာစရာ အချက်အလက်များ ဖယ်ရှားရန်"</string>
-    <string name="searchview_description_submit" msgid="2688450133297983542">"ရှာဖွေစရာ အချက်အလက်ကို အတည်ပြုရန်"</string>
+    <string name="searchview_description_submit" msgid="2688450133297983542">"ရှာဖွေစရာ အချက်အလက်ကို ပေးပို့ရန်"</string>
     <string name="searchview_description_voice" msgid="2453203695674994440">"အသံဖြင့် ရှာဖွေခြင်း"</string>
     <string name="enable_explore_by_touch_warning_title" msgid="7460694070309730149">"ထိတွေ့ပြီး ရှာဖွေခြင်း ဖွင့်မည်မလား?"</string>
     <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="8655887539089910577">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> က ထိတွေ့ပြီး ရှာဖွေခြင်းကို လုပ်ချင်ပါသည်။ ထိတွေ့ရှာဖွေခြင်း ဖွင့်ထားလျှင် သင့်လက်ဖျားအောက်မှ အရာကို ကြားနိုင် သို့ ရှင်းလင်းချက်ကို မြင်နိုင်တဲ့ အပြင် လက် အနေအထားဖြင့် တက်ဘလက်ကို ဆက်သွယ်ပြုလုပ်စေခိုင်းနိုင်ပါသည်"</string>
@@ -940,14 +940,14 @@
     <string name="paste" msgid="5629880836805036433">"Paste"</string>
     <string name="paste_as_plain_text" msgid="5427792741908010675">"စာသားအတိုင်း ကူးထည့်ပါ"</string>
     <string name="replace" msgid="5781686059063148930">"အစားထိုခြင်း"</string>
-    <string name="delete" msgid="6098684844021697789">"ဖျက်ပစ်ရန်"</string>
+    <string name="delete" msgid="6098684844021697789">"ဖျက်ရန်"</string>
     <string name="copyUrl" msgid="2538211579596067402">"URLအား ကူးခြင်း"</string>
     <string name="selectTextMode" msgid="1018691815143165326">"စာသား ရွေးရန်"</string>
     <string name="undo" msgid="7905788502491742328">"ပြန်ဖျက်ရန်"</string>
     <string name="redo" msgid="7759464876566803888">"ထပ်လုပ်ပါ"</string>
     <string name="textSelectionCABTitle" msgid="5236850394370820357">"စာတိုရွေးချယ်မှု"</string>
     <string name="addToDictionary" msgid="4352161534510057874">"အဘိဓာန်ထဲ ထည့်ပါ"</string>
-    <string name="deleteText" msgid="6979668428458199034">"ဖျက်ပစ်ရန်"</string>
+    <string name="deleteText" msgid="6979668428458199034">"ဖျက်ရန်"</string>
     <string name="inputMethod" msgid="1653630062304567879">"ထည့်သွင်းရန်နည်းလမ်း"</string>
     <string name="editTextMenuTitle" msgid="4909135564941815494">"စာတို လုပ်ဆောင်ချက်"</string>
     <string name="low_internal_storage_view_title" msgid="5576272496365684834">"သိမ်းဆည်သော နေရာ နည်းနေပါသည်"</string>
@@ -977,7 +977,7 @@
     <string name="whichSendApplicationLabel" msgid="4579076294675975354">"မျှဝေပါ"</string>
     <string name="whichSendToApplication" msgid="8272422260066642057">"ကိုအသုံးပြု၍ ပို့ပါ"</string>
     <string name="whichSendToApplicationNamed" msgid="7768387871529295325">"%1$s ကိုအသုံးပြု၍ ပို့ပါ"</string>
-    <string name="whichSendToApplicationLabel" msgid="8878962419005813500">"ပို့ပါ"</string>
+    <string name="whichSendToApplicationLabel" msgid="8878962419005813500">"ပို့ရန်"</string>
     <string name="whichHomeApplication" msgid="4307587691506919691">"ပင်မ အက်ပ်ကို ရွေးပါ"</string>
     <string name="whichHomeApplicationNamed" msgid="4493438593214760979">"%1$sကို ပင်မအဖြစ် သုံးပါ"</string>
     <string name="whichHomeApplicationLabel" msgid="809529747002918649">"ဓာတ်ပုံရိုက်ပါ"</string>
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"သိုလှောင်မှုအား ပြုပြင်ခြင်း။"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ကိုအဆင့်မြှင့်တင်နေပါသည်"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"အဆင့်မြှင့်တင်ခြင်း မပြီးဆုံးသေးသ၍ အချို့အက်ပ်များကို ကောင်းမွန်စွာအသုံးပြုနိုင်ဦးမည် မဟုတ်ပါ"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ကို အဆင့်မြှင့်တင်နေပါသည်…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> ထဲက အက်ပ်<xliff:g id="NUMBER_1">%2$d</xliff:g>ကို ဆီလျော်အောင် လုပ်နေ"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> အားပြင်ဆင်နေသည်။"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"အက်ပ်များကို စတင်နေ"</string>
@@ -1077,8 +1078,8 @@
     <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ဝိုင်ဖိုင်ကိုချိတ်ဆက်မရပါ"</string>
     <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" အင်တာနက် ဆက်သွယ်မှု ကောင်းကောင်းမရှိပါ"</string>
     <string name="wifi_connect_alert_title" msgid="8455846016001810172">"ချိတ်ဆက်မှုကို ခွင့်ပြုမလား?"</string>
-    <string name="wifi_connect_alert_message" msgid="6451273376815958922">"အပ္ပလီကေးရှင်း %1$s သည် ဝိုင်ဖိုင်ကွန်ရက် %2$s ကိုချိတ်ဆက်လိုသည်"</string>
-    <string name="wifi_connect_default_application" msgid="7143109390475484319">"အက်ပ်"</string>
+    <string name="wifi_connect_alert_message" msgid="6451273376815958922">"အပလီကေးရှင်း %1$s သည် ဝိုင်ဖိုင်ကွန်ရက် %2$s ကိုချိတ်ဆက်လိုသည်"</string>
+    <string name="wifi_connect_default_application" msgid="7143109390475484319">"အပလီကေးရှင်း"</string>
     <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"တိုက်ရိုက် Wi-Fi"</string>
     <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"တိုက်ရိုက်Wi-Fi ကို စတင်ပါ။ ၎င်းသည် Wi-Fi  ဟော့စပေါ့ကို ရပ်ဆိုင်းစေမှာ ဖြစ်ပါသည်။"</string>
     <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"တိုက်ရိုက်ဝိုင်ဖိုင်ကို စတင်လို့ မရပါ"</string>
@@ -1194,12 +1195,12 @@
     <string name="permlab_readInstallSessions" msgid="3713753067455750349">"တပ်ဆင်ရေး လုပ်ကိုင်မှုကို ဖတ်ရန်"</string>
     <string name="permdesc_readInstallSessions" msgid="2049771699626019849">"အပလီကေးရှင်းအား တပ်ဆင်ရေး ချိတ်ဆက်မှုများကို ဖတ်ခွင့်ပြုသည်။ ၎င်းသည် ဖွင့်သုံးနေသည့် အထုပ်အား တပ်ဆင်မှုဆိုင်ရာ အသေးိစတ်များကို ကြည့်ရှုခွင့် ပြုသည်။"</string>
     <string name="permlab_requestInstallPackages" msgid="5782013576218172577">"တပ်ဆင်ရေး အထုပ်များကို တောင်းဆိုပါ"</string>
-    <string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ပက်ကေ့များ သွင်းယူခြင်းအတွက် တောင်းဆိုရန် အပ္ပလီကေးရှင်းအား ခွင့်ပြုပါ"</string>
+    <string name="permdesc_requestInstallPackages" msgid="5740101072486783082">"ပက်ကေ့များ သွင်းယူခြင်းအတွက် တောင်းဆိုရန် အပလီကေးရှင်းအား ခွင့်ပြုပါ"</string>
     <string name="tutorial_double_tap_to_zoom_message_short" msgid="1311810005957319690">"ဇူးမ်အသုံးပြုရန် နှစ်ချက်တို့ပါ"</string>
     <string name="gadget_host_error_inflating" msgid="4882004314906466162">"ဝဒ်ဂျက်ထည့်လို့ မရပါ"</string>
     <string name="ime_action_go" msgid="8320845651737369027">"သွားပါ"</string>
     <string name="ime_action_search" msgid="658110271822807811">"ရှာဖွေခြင်း"</string>
-    <string name="ime_action_send" msgid="2316166556349314424">"ပို့ခြင်း"</string>
+    <string name="ime_action_send" msgid="2316166556349314424">"ပို့ရန်"</string>
     <string name="ime_action_next" msgid="3138843904009813834">"ရှေ့သို့"</string>
     <string name="ime_action_done" msgid="8971516117910934605">"ပြီးပါပြီ"</string>
     <string name="ime_action_previous" msgid="1443550039250105948">"အနောက်သို့"</string>
@@ -1235,13 +1236,13 @@
     <string name="upload_file" msgid="2897957172366730416">"ဖိုင်ရွေးချယ်ရန်"</string>
     <string name="no_file_chosen" msgid="6363648562170759465">"မည်သည့်ဖိုင်ကိုမှမရွေးပါ"</string>
     <string name="reset" msgid="2448168080964209908">"ပြန်လည်သတ်မှတ်ရန်"</string>
-    <string name="submit" msgid="1602335572089911941">"တင်​ပြရန်​"</string>
+    <string name="submit" msgid="1602335572089911941">"ပေးပို့ရန်"</string>
     <string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ကားထဲတွင်အသုံးပြုနိုင်သောစနစ် ရရှိနိုင်သည်"</string>
     <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ကားမောင်းနှင်ခြင်းမုဒ်မှ ထွက်ရန် တို့ပါ။"</string>
     <string name="tethered_notification_title" msgid="3146694234398202601">"တဆင့်ပြန်လည်လွှင့်ခြင်း သို့မဟုတ် ဟော့စပေါ့ ဖွင့်ထားသည်"</string>
     <string name="tethered_notification_message" msgid="2113628520792055377">"စနစ်ထည့်သွင်းရန် တို့ပါ။"</string>
     <string name="back_button_label" msgid="2300470004503343439">"နောက်သို့"</string>
-    <string name="next_button_label" msgid="1080555104677992408">"နောက်"</string>
+    <string name="next_button_label" msgid="1080555104677992408">"ရှေ့သို့"</string>
     <string name="skip_button_label" msgid="1275362299471631819">"ကျော်"</string>
     <string name="no_matches" msgid="8129421908915840737">"ထပ်တူမတွေ့ရှိပါ"</string>
     <string name="find_on_page" msgid="1946799233822820384">"စာမျက်နှာတွင်ရှာဖွေရန်"</string>
@@ -1254,7 +1255,7 @@
     <string name="progress_erasing" product="default" msgid="6596988875507043042">"SD ကဒ် အား ဖျက်နေစဉ်…"</string>
     <string name="share" msgid="1778686618230011964">"မျှဝေခြင်း"</string>
     <string name="find" msgid="4808270900322985960">"ရှာဖွေရန်"</string>
-    <string name="websearch" msgid="4337157977400211589">"ဝက်ဘ်ပေါ်မှာ ရှာဖွေရန်"</string>
+    <string name="websearch" msgid="4337157977400211589">"ဝဘ်တွင် ရှာရန်"</string>
     <string name="find_next" msgid="5742124618942193978">"နောက်တစ်ခု ရှာဖွေရန်"</string>
     <string name="find_previous" msgid="2196723669388360506">"အရင်တစ်ခု ရှာဖွေရန်"</string>
     <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g>မှ တည်နေရာအား တောင်းခံသည်"</string>
@@ -1290,7 +1291,7 @@
     <string name="date_picker_next_month_button" msgid="5559507736887605055">"လာမည့် လ"</string>
     <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Altခလုတ်"</string>
     <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"မလုပ်တော့ ခလုတ်"</string>
-    <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ဖျက်ရန်ခလုတ်"</string>
+    <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ဖျက်ရန်"</string>
     <string name="keyboardview_keycode_done" msgid="1992571118466679775">"ပြီးဆုံးသည့်ခလုတ်"</string>
     <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"စနစ်ပြောင်းခြင်းခလုတ်"</string>
     <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"Shiftခလုတ်"</string>
@@ -1427,7 +1428,7 @@
     <string name="owner_name" msgid="2716755460376028154">"ပိုင်ရှင်"</string>
     <string name="error_message_title" msgid="4510373083082500195">"အမှား"</string>
     <string name="error_message_change_not_allowed" msgid="1347282344200417578">"ဒီအပြောင်းအလဲမျိုးကို သင့် စီမံအုပ်ချုပ်သူမှ ခွင့်မပြုပါ"</string>
-    <string name="app_not_found" msgid="3429141853498927379">"ဤလုပ်ဆောင်ချက်ကို ပြုလုပ်ပေးမည့် အက်ပ်မရှိပါ။"</string>
+    <string name="app_not_found" msgid="3429141853498927379">"ဤလုပ်ဆောင်ချက်ကို ပြုလုပ်ပေးမည့် အပလီကေးရှင်းမရှိပါ။"</string>
     <string name="revoke" msgid="5404479185228271586">"မလုပ်တော့ပါ"</string>
     <string name="mediasize_iso_a0" msgid="1994474252931294172">"အိုက်အက်စ်အို အေ ဝ"</string>
     <string name="mediasize_iso_a1" msgid="3333060421529791786">"အိုက်အက်စ်အို အေ၁"</string>
@@ -1553,8 +1554,8 @@
     <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ပင်မဖြုတ်မီမှာ စကားဝှက်ကို မေးကြည့်ရန်"</string>
     <string name="package_installed_device_owner" msgid="8420696545959087545">"သင့် အက်ဒမင်မှ သွင်းယူထား၏"</string>
     <string name="package_updated_device_owner" msgid="8856631322440187071">"သင့်စီမံခန့်ခွဲသူမှ အဆင့်မြှင့်ထားပါသည်။"</string>
-    <string name="package_deleted_device_owner" msgid="7650577387493101353">"သင့် အက်ဒမင်အား ဖျက်ပစ်ရန်"</string>
-    <string name="battery_saver_description" msgid="1960431123816253034">"ဘက်ထရီသက်တမ်း ကြာရှည်ခံရန်၊ ဘက်ထရီအားထိန်းသည် သင့်ကိရိယာ၏ ဆောင်ရွက်ချက်ကို  လျှော့ပေးပြီး တုန်ခါမှု၊ တည်နေရာဝန်ဆောင်မှုများနှင့်၊ နောက်ခံဒေတာအများစုကို ကန့်သတ်ပေး၏။ စင့်လုပ်ပေးရလေ့ရှိသည့် အီးမေးလ်၊ စာပို့ခြင်းနှင့်၊ အခြားအပလီကေးရှင်းများကို ၎င်းတို့အား သင် ဖွင့်မှသာ အဆင့်မြှင့်မွမ်းမံမည်ဖြစ်၏။ \n\n ကိရိယာအား အားသွင်းနေစဉ် ဘက်ထရီအားထိန်းအား အလိုအလျောက် ပိတ်ထားသည်။"</string>
+    <string name="package_deleted_device_owner" msgid="7650577387493101353">"သင့် အက်ဒမင်အား ဖျက်ရန်"</string>
+    <string name="battery_saver_description" msgid="1960431123816253034">"ဘက်ထရီသက်တမ်း ကြာရှည်ခံရန်၊ ဘက်ထရီအားထိန်းသည် သင့်ကိရိယာ၏ ဆောင်ရွက်ချက်ကို  လျှော့ပေးပြီး တုန်ခါမှု၊ တည်နေရာဝန်ဆောင်မှုများနှင့်၊ နောက်ခံဒေတာအများစုကို ကန့်သတ်ပေး၏။ စင့်လုပ်ပေးရလေ့ရှိသည့် အီးမေးလ်၊ စာပို့ခြင်းနှင့်၊ အခြားအပလီကေးရှင်းများကို ၎င်းတို့အား သင် ဖွင့်မှသာ အပ်ဒိတ်လုပ်မည်ဖြစ်၏။ \n\n ကိရိယာအား အားသွင်းနေစဉ် ဘက်ထရီအားထိန်းအား အလိုအလျောက် ပိတ်ထားသည်။"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ဒေတာအသုံးလျှော့ချနိုင်ရန် အက်ပ်များကို နောက်ခံတွင် ဒေတာပို့ခြင်းနှင့် လက်ခံခြင်းမရှိစေရန် ဒေတာချွေတာမှုစနစ်က တားဆီးထားပါသည်။ ယခုအက်ပ်ဖြင့် ဒေတာအသုံးပြုနိုင်သော်လည်း အကြိမ်လျှော့၍သုံးရပါမည်။ ဥပမာ၊ သင် မတို့မချင်း ပုံများပေါ်လာမည် မဟုတ်ပါ။"</string>
     <string name="data_saver_enable_title" msgid="4674073932722787417">"ဒေတာအသုံးပြုမှု ချွေတာမှုစနစ်ကို ဖွင့်မလား။"</string>
     <string name="data_saver_enable_button" msgid="7147735965247211818">"ဖွင့်ပါ"</string>
@@ -1662,5 +1663,5 @@
     <string name="audit_safemode_notification" msgid="6416076898350685856">"ဤစက်ပစ္စည်းကို ကန့်သတ်ချက်များမပါဘဲ အသုံးပြုရန် စက်ရုံထုတ်ဆက်တင်အတိုင်း ပြန်လည်သတ်မှတ်ပါ"</string>
     <string name="audit_safemode_notification_details" msgid="1860601176690176413">"ပိုမိုလေ့လာရန် တို့ပါ။"</string>
     <string name="suspended_widget_accessibility" msgid="6712143096475264190">"ပိတ်ထားသည့် <xliff:g id="LABEL">%1$s</xliff:g>"</string>
-    <string name="conference_call" msgid="3751093130790472426">"လူအမြောက်အများတပြိုင်နက် ခေါ်ဆိုမှု"</string>
+    <string name="conference_call" msgid="3751093130790472426">"လူအမြောက်အမြားတပြိုင်နက် ခေါ်ဆိုမှု"</string>
 </resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 3ac084d..17d470e 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimaliser lagring."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android oppgraderes"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Noen apper fungerer kanskje ikke skikkelig før oppgraderingen er fullført"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> oppgraderes …"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimaliserer app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starter apper."</string>
@@ -1201,7 +1202,7 @@
     <string name="ime_action_search" msgid="658110271822807811">"Søk"</string>
     <string name="ime_action_send" msgid="2316166556349314424">"Send"</string>
     <string name="ime_action_next" msgid="3138843904009813834">"Neste"</string>
-    <string name="ime_action_done" msgid="8971516117910934605">"Utført"</string>
+    <string name="ime_action_done" msgid="8971516117910934605">"Ferdig"</string>
     <string name="ime_action_previous" msgid="1443550039250105948">"Forrige"</string>
     <string name="ime_action_default" msgid="2840921885558045721">"Utfør"</string>
     <string name="dial_number_using" msgid="5789176425167573586">"Ring nummeret\n<xliff:g id="NUMBER">%s</xliff:g>"</string>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index 05484a7..9b297f7 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -1030,6 +1030,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"भण्डारण अनुकूलन गर्दै।"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android को स्तरवृद्धि हुँदैछ"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"स्तरवृद्धि सम्पन्न नभएसम्म केही अनुप्रयोगहरू राम्ररी काम नगर्न सक्छन्"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> को स्तरवृद्धि हुँदैछ…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयारी गर्दै।"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"सुरुवात अनुप्रयोगहरू।"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 3bbfad1..5c55345 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Opslagruimte wordt geoptimaliseerd."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android wordt geüpgraded"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige apps werken mogelijk pas correct nadat de upgrade is voltooid"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> upgraden…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g> optimaliseren."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> voorbereiden."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps starten."</string>
diff --git a/core/res/res/values-notround-watch/dimens_material.xml b/core/res/res/values-notround-watch/dimens_material.xml
index b02437b..9cacb11 100644
--- a/core/res/res/values-notround-watch/dimens_material.xml
+++ b/core/res/res/values-notround-watch/dimens_material.xml
@@ -20,4 +20,7 @@
     <dimen name="list_item_padding_horizontal_material">16dp</dimen>
     <dimen name="list_item_padding_start_material">16dp</dimen>
     <dimen name="list_item_padding_end_material">16dp</dimen>
+
+    <dimen name="dialog_list_padding_top_no_title">8dp</dimen>
+    <dimen name="dialog_list_padding_bottom_no_buttons">8dp</dimen>
 </resources>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 27aa5d0..625856f 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ਸਟੋਰੇਜ ਅਨੁਕੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ਅੱਪਗ੍ਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਐਪਾਂ ਅੱਪਗ੍ਰੇਡ ਦੇ ਪੂਰੀ ਹੋਣ ਤੱਕ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> <xliff:g id="NUMBER_1">%2$d</xliff:g> ਦਾ ਐਪ ਅਨੁਕੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ।"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ਐਪਸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index d6e519a..527a0c2 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optymalizacja pamięci."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android jest uaktualniany"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektóre aplikacje mogą nie działać prawidłowo, dopóki nie zakończy się aktualizacja."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Uaktualniam aplikację <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optymalizowanie aplikacji <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Przygotowuję aplikację <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uruchamianie aplikacji."</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 524fb55..9b683fc 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está sendo atualizado"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index d5e9ad6..b6be06e 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"A otimizar o armazenamento."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está a ser atualizado"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Algumas aplicações podem não funcionar corretamente enquanto a atualização não for concluída"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"O <xliff:g id="APPLICATION">%1$s</xliff:g> está a ser atualizado…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"A otimizar a aplicação <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"A preparar o <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"A iniciar aplicações"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 524fb55..9b683fc 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está sendo atualizado"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> está fazendo upgrade…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 14ccd8b..a5cae27 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1047,6 +1047,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Se optimizează stocarea."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android face upgrade"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Este posibil ca unele aplicații să nu funcționeze corespunzător până când nu se finalizează upgrade-ul"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Se face upgrade pentru <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Se optimizează aplicația <xliff:g id="NUMBER_0">%1$d</xliff:g> din <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Se pregătește <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Se pornesc aplicațiile."</string>
diff --git a/core/res/res/values-round-watch/dimens_material.xml b/core/res/res/values-round-watch/dimens_material.xml
index db1f1f3..f2de4e0 100644
--- a/core/res/res/values-round-watch/dimens_material.xml
+++ b/core/res/res/values-round-watch/dimens_material.xml
@@ -20,4 +20,7 @@
     <dimen name="list_item_padding_horizontal_material">@dimen/screen_percentage_15</dimen>
     <dimen name="list_item_padding_start_material">@dimen/screen_percentage_15</dimen>
     <dimen name="list_item_padding_end_material">@dimen/screen_percentage_10</dimen>
+
+    <dimen name="dialog_list_padding_top_no_title">@dimen/screen_percentage_15</dimen>
+    <dimen name="dialog_list_padding_bottom_no_buttons">@dimen/screen_percentage_15</dimen>
 </resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index aa69c4f..6e95df8 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1020,7 +1020,7 @@
     <string name="whichEditApplicationLabel" msgid="7183524181625290300">"Изменить"</string>
     <string name="whichSendApplication" msgid="6902512414057341668">"Поделиться с помощью:"</string>
     <string name="whichSendApplicationNamed" msgid="2799370240005424391">"Поделиться через %1$s"</string>
-    <string name="whichSendApplicationLabel" msgid="4579076294675975354">"Открыть доступ"</string>
+    <string name="whichSendApplicationLabel" msgid="4579076294675975354">"Поделиться"</string>
     <string name="whichSendToApplication" msgid="8272422260066642057">"Выберите приложение"</string>
     <string name="whichSendToApplicationNamed" msgid="7768387871529295325">"Отправка с помощью %1$s"</string>
     <string name="whichSendToApplicationLabel" msgid="8878962419005813500">"Отправить"</string>
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизация хранилища…"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Обновление Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во время обновления возможны неполадки в работе приложений."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Обновление приложения \"<xliff:g id="APPLICATION">%1$s</xliff:g>\"…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизация приложения <xliff:g id="NUMBER_0">%1$d</xliff:g> из <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Подготовка приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"..."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск приложений."</string>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index 75e2724..006313a 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -1026,6 +1026,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ආචයනය ප්‍රශස්තිකරණය කිරීම."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android උත්ශ්‍රේණි කරමින්"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"උත්ශ්‍රේණි කිරීම අවසන් වන තෙක් සමහර යෙදුම් නිසි ලෙස ක්‍රියා නොකළ හැකිය"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> උත්ශ්‍රේණි කරමින්…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> වැනි යෙදුම ප්‍රශස්ත කරමින්."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> සූදානම් කරමින්."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"යෙදුම් ආරම්භ කරමින්."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 3d425cb..6d513d0d7 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimalizuje sa úložisko"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Prebieha inovácia systému Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektoré aplikácie môžu správne fungovať až po dokončení inovácie"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> sa inovuje…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Prebieha optimalizácia aplikácie <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Pripravuje sa aplikácia <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Prebieha spúšťanie aplikácií."</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 792be7f..0239112 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje shrambe."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Poteka nadgradnja Androida."</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nekatere aplikacije morda ne bodo delovale pravilno, dokler ne bo dokončana nadgradnja."</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadgrajuje …"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Pripravljanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Zagon aplikacij."</string>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index 884587d..6523abd 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Po përshtat ruajtjen."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android po përmirësohet"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Disa aplikacione mund të mos funksionojnë si duhet deri sa të përfundojë përmirësimi"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> po përmirësohet…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Po përshtat aplikacionin <xliff:g id="NUMBER_0">%1$d</xliff:g> nga gjithsej <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Po përgatit <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikacionet e fillimit."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 244870c..26ca7d9 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1047,6 +1047,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Меморија се оптимизује."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android се надограђује…"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Неке апликације можда неће исправно функционисати док се надоградња не доврши"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надограђује…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизовање апликације <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Припрема се <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Покретање апликација."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 8da8119..9aacefc 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lagringsutrymmet optimeras."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android uppgraderas"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"En del appar kanske inte fungerar som de ska innan uppgraderingen har slutförts"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> uppgraderas …"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerar app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> förbereds."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Appar startas."</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 0d4f2ee..42cfb8b 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1022,6 +1022,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Inaboresha hifadhi."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Tunasasisha Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Huenda baadhi ya programu zisifanye kazi vizuri hadi itakapomaliza kusasisha"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> inapata toleo jipya…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Inaboresha programu <xliff:g id="NUMBER_0">%1$d</xliff:g> kutoka <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Inaandaa <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Programu zinaanza"</string>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index 4f13ce5..668c2bb 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"சேமிப்பகத்தை உகந்ததாக்குகிறது."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android மேம்படுத்தப்படுகிறது"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"மேம்படுத்துவது முடியும் வரை, சில பயன்பாடுகள் சரியாக வேலைசெய்யாமல் போகக்கூடும்"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ஐ மேம்படுத்துகிறது…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> பயன்பாட்டை ஒருங்கிணைக்கிறது."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ஐத் தயார்செய்கிறது."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"பயன்பாடுகள் தொடங்கப்படுகின்றன."</string>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index 7468dc8..514eed4 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"నిల్వను అనుకూలపరుస్తోంది."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android అప్‌గ్రేడ్ అవుతోంది"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"అప్‌గ్రేడ్ పూర్తయ్యే వరకు కొన్ని అనువర్తనాలు సరిగ్గా పని చేయకపోవచ్చు"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g>ని అప్‌గ్రేడ్ చేస్తోంది…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>లో <xliff:g id="NUMBER_0">%1$d</xliff:g> అనువర్తనాన్ని అనుకూలీకరిస్తోంది."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ని సిద్ధం చేస్తోంది."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"అనువర్తనాలను ప్రారంభిస్తోంది."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 892135a..26303da 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"กำลังเพิ่มประสิทธิภาพพื้นที่จัดเก็บข้อมูล"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android กำลังอัปเกรด"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"แอปบางแอปอาจทำงานไม่ถูกต้องจนกว่าจะอัปเกรดเสร็จ"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"กำลังอัปเกรด <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"กำลังเพิ่มประสิทธิภาพแอปพลิเคชัน <xliff:g id="NUMBER_0">%1$d</xliff:g> จาก <xliff:g id="NUMBER_1">%2$d</xliff:g> รายการ"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"กำลังเตรียม <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"กำลังเริ่มต้นแอปพลิเคชัน"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 8f55691..bc0e449 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ino-optimize ang storage."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Nag-a-upgrade ang Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Maaaring hindi gumana nang maayos ang ilang app hangga\'t hindi pa natatapos ang pag-upgrade"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Nag-a-upgrade ang <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ino-optimize ang app <xliff:g id="NUMBER_0">%1$d</xliff:g> ng <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Ihinahanda ang <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Sinisimulan ang apps."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index cc845d4..b66d0dc 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Depolama optimize ediliyor."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android yeni sürüme geçiriliyor"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yeni sürüme geçiş işlemi tamamlanana kadar bazı uygulamalar düzgün çalışmayabilir"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> yeni sürüme geçiriliyor…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> uygulama optimize ediliyor."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> hazırlanıyor."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uygulamalar başlatılıyor"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 8130724..3154ef9 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1070,6 +1070,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимізація пам’яті."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android оновлюється"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Деякі додатки можуть не працювати належним чином, доки не завершиться оновлення"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"Додаток <xliff:g id="APPLICATION">%1$s</xliff:g> оновлюється…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимізація програми <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Підготовка додатка <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск програм."</string>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index 817fb29..5919618 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"اسٹوریج کو بہترین بنایا جا رہا ہے۔"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏Android اپ گریڈ ہو رہا ہے"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"اپ گریڈ ختم ہونے تک شاید کچھ ایپس ٹھیک طرح سے کام نہ کریں"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> اپ گریڈ ہو رہی ہے…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"ایپ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g> کو بہتر بنایا جا رہا ہے۔"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> تیار ہو رہی ہے۔"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ایپس شروع ہو رہی ہیں۔"</string>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index 908fc10..30e753f 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -44,7 +44,7 @@
     <string name="unknownName" msgid="6867811765370350269">"Noma’lum"</string>
     <string name="defaultVoiceMailAlphaTag" msgid="2660020990097733077">"Ovozli pochta"</string>
     <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string>
-    <string name="mmiError" msgid="5154499457739052907">"Ulanishda xato yoki noto‘g‘ri MMI kodi."</string>
+    <string name="mmiError" msgid="5154499457739052907">"Tarmoqda xato yoki MMI kod noto‘g‘ri."</string>
     <string name="mmiFdnError" msgid="5224398216385316471">"Bu amal faqat ruxsat etilgan raqamlar uchun mavjud."</string>
     <string name="serviceEnabled" msgid="8147278346414714315">"Xizmat yoqildi."</string>
     <string name="serviceEnabledFor" msgid="6856228140453471041">"Xizmat quyidagi uchun yoqildi:"</string>
@@ -143,7 +143,7 @@
     <string name="cfTemplateRegistered" msgid="5073237827620166285">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Yo‘naltirilmadi"</string>
     <string name="cfTemplateRegisteredTime" msgid="6781621964320635172">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: yo‘naltirilmadi"</string>
     <string name="fcComplete" msgid="3118848230966886575">"Maxsus kod bajarildi."</string>
-    <string name="fcError" msgid="3327560126588500777">"Ulanishda muammo yoki maxsus kod xato."</string>
+    <string name="fcError" msgid="3327560126588500777">"Tarmoqda xato yoki maxsus kod noto‘g‘ri."</string>
     <string name="httpErrorOk" msgid="1191919378083472204">"OK"</string>
     <string name="httpError" msgid="7956392511146698522">"Tarmoqda xato yuz berdi."</string>
     <string name="httpErrorLookup" msgid="4711687456111963163">"URL topilmadi."</string>
@@ -985,7 +985,7 @@
     <string name="whichImageCaptureApplicationNamed" msgid="8619384150737825003">"%1$s yordamida suratga oling"</string>
     <string name="whichImageCaptureApplicationLabel" msgid="6390303445371527066">"Suratga olish"</string>
     <string name="alwaysUse" msgid="4583018368000610438">"Ushbu amaldan standart sifatida foydalanish"</string>
-    <string name="use_a_different_app" msgid="8134926230585710243">"Boshqa ilovadan foydalanish"</string>
+    <string name="use_a_different_app" msgid="8134926230585710243">"Boshqa ilova"</string>
     <string name="clearDefaultHintMsg" msgid="3252584689512077257">"Birlamchi sozlamalarni Tizim sozlamalari &gt; Ilovalar &gt; Yuklab olingan menyusidan tozalang."</string>
     <string name="chooseActivity" msgid="7486876147751803333">"Amalni tanlash"</string>
     <string name="chooseUsbActivity" msgid="6894748416073583509">"USB qurilma uchun ilovani tanlang"</string>
@@ -998,16 +998,16 @@
     <string name="aerr_report" msgid="5371800241488400617">"Fikr-mulohaza yuborish"</string>
     <string name="aerr_close" msgid="2991640326563991340">"Yopish"</string>
     <string name="aerr_mute" msgid="1974781923723235953">"Qurilma o‘chib yonguncha e’tiborsiz qoldirish"</string>
-    <string name="aerr_wait" msgid="3199956902437040261">"Kuting"</string>
+    <string name="aerr_wait" msgid="3199956902437040261">"Kutish"</string>
     <string name="aerr_close_app" msgid="3269334853724920302">"Ilovani yopish"</string>
     <string name="anr_title" msgid="4351948481459135709"></string>
-    <string name="anr_activity_application" msgid="8493290105678066167">"<xliff:g id="APPLICATION">%2$s</xliff:g> javob bermayapti"</string>
-    <string name="anr_activity_process" msgid="1622382268908620314">"<xliff:g id="ACTIVITY">%1$s</xliff:g> javob bermayapti"</string>
-    <string name="anr_application_process" msgid="6417199034861140083">"<xliff:g id="APPLICATION">%1$s</xliff:g> javob bermayapti"</string>
+    <string name="anr_activity_application" msgid="8493290105678066167">"<xliff:g id="APPLICATION">%2$s</xliff:g> ilovasi javob bermayapti"</string>
+    <string name="anr_activity_process" msgid="1622382268908620314">"<xliff:g id="ACTIVITY">%1$s</xliff:g> harakati javob bermayapti"</string>
+    <string name="anr_application_process" msgid="6417199034861140083">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi javob bermayapti"</string>
     <string name="anr_process" msgid="6156880875555921105">"<xliff:g id="PROCESS">%1$s</xliff:g> ilovasi javob bermayapti"</string>
     <string name="force_close" msgid="8346072094521265605">"OK"</string>
     <string name="report" msgid="4060218260984795706">"Xabar berish"</string>
-    <string name="wait" msgid="7147118217226317732">"Kuting"</string>
+    <string name="wait" msgid="7147118217226317732">"Kutish"</string>
     <string name="webpage_unresponsive" msgid="3272758351138122503">"Sahifa javob bermayapti.\n\nUni yopishni xohlaysizmi?"</string>
     <string name="launch_warning_title" msgid="1547997780506713581">"Ilova qayta yo‘naltirildi"</string>
     <string name="launch_warning_replace" msgid="6202498949970281412">"<xliff:g id="APP_NAME">%1$s</xliff:g> hozirda ishlamoqda"</string>
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Xotira optimallashtirilmoqda."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android yangilanmoqda"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yangilanish vaqtida ba’zi ilovalar to‘g‘ri ishlamasligi mumkin"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi yangilanmoqda…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ilovalar optimallashtirilmoqda (<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g>)."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> tayyorlanmoqda."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ilovalar ishga tushirilmoqda."</string>
@@ -1315,7 +1316,7 @@
     <string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB xotira qurilmasi"</string>
     <string name="storage_usb" msgid="3017954059538517278">"USB xotira"</string>
     <string name="extract_edit_menu_button" msgid="8940478730496610137">"Tahrirlash"</string>
-    <string name="data_usage_warning_title" msgid="1955638862122232342">"Ma’lumotlardan foydalanish ogohlantirilishi"</string>
+    <string name="data_usage_warning_title" msgid="1955638862122232342">"Trafik kam qoldi"</string>
     <string name="data_usage_warning_body" msgid="6660692274311972007">"Trafik sarfi va sozlamalarni ko‘rish uchun bosing."</string>
     <string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G trafik chekloviga yetdi"</string>
     <string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G trafik chekloviga yetdi"</string>
@@ -1350,7 +1351,7 @@
     <string name="launchBrowserDefault" msgid="2057951947297614725">"Brauzer ishga tushirilsinmi?"</string>
     <string name="SetupCallDefault" msgid="5834948469253758575">"Qo‘ng‘iroqni qabul qilasizmi?"</string>
     <string name="activity_resolver_use_always" msgid="8017770747801494933">"Har doim"</string>
-    <string name="activity_resolver_use_once" msgid="2404644797149173758">"Bir marta"</string>
+    <string name="activity_resolver_use_once" msgid="2404644797149173758">"Faqat hozir"</string>
     <string name="activity_resolver_work_profiles_support" msgid="185598180676883455">"“%1$s” ishchi profilni qo‘llab-quvvatlamaydi"</string>
     <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Planshet"</string>
     <string name="default_audio_route_name" product="tv" msgid="9158088547603019321">"TV"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index f909a62..eb25bf54 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tối ưu hóa lưu trữ."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android đang nâng cấp"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Một số ứng dụng có thể không hoạt động bình thường cho đến khi nâng cấp xong"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> đang nâng cấp…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Đang tối ưu hóa ứng dụng <xliff:g id="NUMBER_0">%1$d</xliff:g> trong tổng số <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Đang chuẩn bị <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Khởi động ứng dụng."</string>
diff --git a/core/res/res/values-w194dp/dimens_material.xml b/core/res/res/values-w192dp/dimens_material.xml
similarity index 81%
rename from core/res/res/values-w194dp/dimens_material.xml
rename to core/res/res/values-w192dp/dimens_material.xml
index 220c4b0..797bf5a 100644
--- a/core/res/res/values-w194dp/dimens_material.xml
+++ b/core/res/res/values-w192dp/dimens_material.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <resources>
-    <dimen name="screen_percentage_05">9.7dp</dimen>
-    <dimen name="screen_percentage_10">19.4dp</dimen>
-    <dimen name="screen_percentage_15">29.1dp</dimen>
+    <dimen name="screen_percentage_05">9.6dp</dimen>
+    <dimen name="screen_percentage_10">19.2dp</dimen>
+    <dimen name="screen_percentage_15">28.8dp</dimen>
 </resources>
diff --git a/core/res/res/values-watch/colors_material.xml b/core/res/res/values-watch/colors_material.xml
index 91eee7d..45eb981 100644
--- a/core/res/res/values-watch/colors_material.xml
+++ b/core/res/res/values-watch/colors_material.xml
@@ -20,5 +20,7 @@
     <color name="accent_material_dark">#ff5e97f6</color>
     <color name="accent_material_light">#ff4285f4</color>
 
+    <color name="primary_material_dark">#4D4D4D</color>
+
     <color name="button_material_dark">#ff999999</color>
 </resources>
diff --git a/core/res/res/values-watch/styles_material.xml b/core/res/res/values-watch/styles_material.xml
index daeeca2..5c4c632 100644
--- a/core/res/res/values-watch/styles_material.xml
+++ b/core/res/res/values-watch/styles_material.xml
@@ -61,8 +61,13 @@
         <item name="breakStrategy">balanced</item>
     </style>
 
+    <style name="Widget.Material.ButtonBar" parent="Widget.Material.BaseButtonBar" />
+
     <!-- Alert dialog button bar button -->
     <style name="Widget.Material.Button.ButtonBar.AlertDialog" parent="Widget.Material.Button.Borderless.Small">
+        <item name="paddingStart">@dimen/list_item_padding_start_material</item>
+        <item name="paddingEnd">@dimen/list_item_padding_end_material</item>
+        <item name="drawablePadding">8dp</item>
         <item name="gravity">center_vertical|left</item>
         <item name="minWidth">64dp</item>
         <item name="minHeight">@dimen/alert_dialog_button_bar_height</item>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 7b72d0a..50a5b86 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在优化存储空间。"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android 正在升级"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"在升级完成之前，部分应用可能无法正常运行"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"正在升级<xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第<xliff:g id="NUMBER_0">%1$d</xliff:g>个应用（共<xliff:g id="NUMBER_1">%2$d</xliff:g>个）。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"正在准备升级<xliff:g id="APPNAME">%1$s</xliff:g>。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index f38bc4b..380be6b 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在優化儲存空間。"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"正在升級 Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"部分應用程式需要完成升級方可正常運作"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」正在升級…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"正在優化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"正在準備 <xliff:g id="APPNAME">%1$s</xliff:g>。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index b8c6725..edb6d0b 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在對儲存空間進行最佳化處理。"</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"正在升級 Android"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"升級完成前，部分應用程式可能無法正常運作"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"正在升級「<xliff:g id="APPLICATION">%1$s</xliff:g>」…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"正在最佳化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"正在準備升級「<xliff:g id="APPNAME">%1$s</xliff:g>」。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index d4e4f08..27ea7ae 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1024,6 +1024,7 @@
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ikhulisa isitoreji."</string>
     <string name="android_upgrading_notification_title" msgid="1619393112444671028">"I-Android iyathuthukiswa"</string>
     <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ezinye izinhlelo zokusebenza kungenzeka zingasebenzi kahle kuze kuqedwe ukuthuthukiswa"</string>
+    <string name="app_upgrading_toast" msgid="3008139776215597053">"<xliff:g id="APPLICATION">%1$s</xliff:g> iyathuthukisa…"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ukubeka ezingeni eliphezulu <xliff:g id="NUMBER_0">%1$d</xliff:g> uhlelo lokusebenza <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Ukulungisela i-<xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Qalisa izinhlelo zokusebenza."</string>
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 10e2a4a..1843475 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -74,6 +74,8 @@
     <drawable name="input_method_fullscreen_background">#fff9f9f9</drawable>
     <color name="input_method_navigation_guard">#ff000000</color>
 
+    <color name="system_error">#fff4511e</color> <!-- deep orange 600 -->
+
     <!-- For date picker widget -->
     <drawable name="selected_day_background">#ff0092f4</drawable>
 
@@ -118,7 +120,7 @@
     <!-- LockPatternView -->
     <color name="lock_pattern_view_regular_color">#ffffffff</color>
     <color name="lock_pattern_view_success_color">#ffffffff</color>
-    <color name="lock_pattern_view_error_color">#fff4511e</color>
+    <color name="lock_pattern_view_error_color">@color/system_error</color>
 
     <!-- FaceLock -->
     <color name="facelock_spotlight_mask">#CC000000</color>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index cd56f0f..c1315cb 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -764,7 +764,7 @@
              1 - AUTO_MODE_CUSTOM
              2 - AUTO_MODE_TWILIGHT
     -->
-    <integer name="config_defaultNightDisplayAutoMode">1</integer>
+    <integer name="config_defaultNightDisplayAutoMode">0</integer>
 
     <!-- Default time when Night display is automatically activated.
          Represented as milliseconds from midnight (e.g. 79200000 == 10pm). -->
@@ -1836,28 +1836,6 @@
     -->
     <bool name="config_enableWifiDisplay">false</bool>
 
-    <!-- The color transform values that correspond to each respective configuration mode for the
-         built-in display, or -1 if the mode is unsupported by the device. The possible
-         configuration modes are:
-            1. Wide-gamut ("Vibrant")
-            2. Adobe RGB ("Natural")
-            3. sRGB ("Standard")
-
-        For example, if a device had Wide-gamut as color transform mode 1, sRGB mode as color
-        transform mode 7, and did not support Adobe RGB at all this would look like:
-
-            <integer-array name="config_colorTransforms">
-                <item>1</item>
-                <item>-1</item>
-                <item>7</item>
-            </integer-array>
-    -->
-    <integer-array name="config_colorTransforms">
-        <item>-1</item>
-        <item>-1</item>
-        <item>-1</item>
-    </integer-array>
-
     <!-- When true, local displays that do not contain any of their own content will automatically
          mirror the content of the default display. -->
     <bool name="config_localDisplaysMirrorContent">true</bool>
@@ -2538,4 +2516,12 @@
 
     <!-- Package name for the device provisioning package. -->
     <string name="config_deviceProvisioningPackage"></string>
+
+    <!-- Colon separated list of package names that should be granted DND access -->
+    <string name="config_defaultDndAccessPackages" translatable="false">com.android.camera2</string>
+
+    <!-- User restrictions set when the first user is created.
+         Note: Also update appropriate overlay files. -->
+    <string-array translatable="false" name="config_defaultFirstUserRestrictions">
+    </string-array>
 </resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 7144ef0..23bbed6 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -2796,6 +2796,9 @@
     <!-- [CHAR LIMIT=200] Body of notification that is shown when performing a system upgrade. -->
     <string name="android_upgrading_notification_body">Some apps may not work properly until the upgrade finishes</string>
 
+    <!-- [CHAR LIMIT=40] Toast that is shown when an app is still upgrading. -->
+    <string name="app_upgrading_toast"><xliff:g id="application">%1$s</xliff:g> is upgrading\u2026</string>
+
     <!-- [CHAR LIMIT=NONE] Message shown in upgrading dialog for each .apk that is optimized. -->
     <string name="android_upgrading_apk">Optimizing app
         <xliff:g id="number" example="123">%1$d</xliff:g> of
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index fad3488..1aae02b 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -543,7 +543,11 @@
         <item name="textOff">@string/capital_off</item>
     </style>
 
-    <style name="Widget.Material.ButtonBar">
+    <style name="Widget.Material.BaseButtonBar">
+        <item name="background">?attr/colorBackgroundFloating</item>
+    </style>
+
+    <style name="Widget.Material.ButtonBar" parent="Widget.Material.BaseButtonBar">
         <item name="background">@null</item>
     </style>
 
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 5045f33..a7d8188 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1144,7 +1144,6 @@
   <java-symbol type="array" name="config_telephonyHardware" />
   <java-symbol type="array" name="config_keySystemUuidMapping" />
   <java-symbol type="array" name="config_gpsParameters" />
-  <java-symbol type="array" name="config_colorTransforms" />
 
   <java-symbol type="drawable" name="default_wallpaper" />
   <java-symbol type="drawable" name="default_lock_wallpaper" />
@@ -2630,6 +2629,8 @@
   <!-- Used internally for assistant to launch activity transitions -->
   <java-symbol type="id" name="cross_task_transition" />
 
+  <java-symbol type="id" name="button_holder" />
+
   <java-symbol type="bool" name="config_useRoundIcon" />
 
   <!-- For System navigation keys -->
@@ -2638,9 +2639,14 @@
   <java-symbol type="layout" name="unsupported_display_size_dialog_content" />
   <java-symbol type="string" name="unsupported_display_size_message" />
 
+  <java-symbol type="layout" name="notification_material_action_emphasized" />
+
   <!-- Package name for the device provisioning package -->
   <java-symbol type="string" name="config_deviceProvisioningPackage" />
 
+  <!-- Colon separated list of package names that should be granted DND access -->
+  <java-symbol type="string" name="config_defaultDndAccessPackages" />
+
   <!-- Used for MimeIconUtils. -->
   <java-symbol type="drawable" name="ic_doc_apk" />
   <java-symbol type="drawable" name="ic_doc_audio" />
@@ -2670,4 +2676,7 @@
   <java-symbol type="integer" name="config_defaultNightDisplayAutoMode" />
   <java-symbol type="integer" name="config_defaultNightDisplayCustomStartTime" />
   <java-symbol type="integer" name="config_defaultNightDisplayCustomEndTime" />
+
+  <!-- Default first user restrictions -->
+  <java-symbol type="array" name="config_defaultFirstUserRestrictions" />
 </resources>
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 50e588d..0e98ade 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -724,6 +724,12 @@
         <item name="colorAccent">@color/accent_device_default_light</item>
     </style>
 
+    <style name="Theme.DeviceDefault.Light.Voice" parent="Theme.Material.Light.Voice">
+        <!-- Color palette -->
+        <item name="colorPrimary">@color/primary_device_default_light</item>
+        <item name="colorPrimaryDark">@color/primary_dark_device_default_light</item>
+        <item name="colorAccent">@color/accent_device_default_light</item>
+    </style>
 
     <!-- DeviceDefault theme for a window that should look like the Settings app.  -->
     <style name="Theme.DeviceDefault.Settings" parent="Theme.Material.Settings">
diff --git a/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java b/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java
new file mode 100644
index 0000000..19a390a
--- /dev/null
+++ b/core/tests/coretests/src/android/app/ApplicationErrorReportTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.app;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import android.app.ApplicationErrorReport.CrashInfo;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class ApplicationErrorReportTest {
+
+    @Test
+    public void testHugeStacktraceLeadsToReasonableReport() {
+        Throwable deepStackTrace = deepStackTrace();
+        CrashInfo crashInfo = new CrashInfo(deepStackTrace);
+
+        assertTrue("stack trace is longer than 50'000 characters",
+                crashInfo.stackTrace.length() < 50000);
+    }
+
+    @Test
+    public void testHugeExceptionMessageLeadsToReasonableReport() {
+        StringBuilder msg = new StringBuilder();
+        for (int i = 0; i < 1000000; i++) {
+            msg.append('x');
+        }
+
+        CrashInfo crashInfo = new CrashInfo(new Throwable(msg.toString()));
+
+        assertTrue("message is longer than 50'000 characters",
+                crashInfo.exceptionMessage.length() < 50000);
+    }
+
+    @Test
+    public void testTruncationKeepsStartAndEndIntact() {
+        StringBuilder msg = new StringBuilder("start");
+        for (int i = 0; i < 1000000; i++) {
+            msg.append('x');
+        }
+        msg.append("end");
+
+        CrashInfo crashInfo = new CrashInfo(new Throwable(msg.toString()));
+
+        String exceptionMessage = crashInfo.exceptionMessage;
+        assertEquals("start", exceptionMessage.substring(0, "start".length()));
+        assertEquals("end", exceptionMessage.substring(exceptionMessage.length() - "end".length()));
+    }
+
+    /**
+     * @return a Throwable with a very long stack trace.
+     */
+    private Throwable deepStackTrace() {
+        return stackTraceGenerator__aaaaaaaaa_aaaaaaaaa_aaaaaaaaa_aaaaaaaaa_aaaaaaaaa(1000);
+    }
+
+    private Throwable stackTraceGenerator__aaaaaaaaa_aaaaaaaaa_aaaaaaaaa_aaaaaaaaa_aaaaaaaaa(
+            int d) {
+        if (d > 0) {
+            return stackTraceGenerator__aaaaaaaaa_aaaaaaaaa_aaaaaaaaa_aaaaaaaaa_aaaaaaaaa(d - 1);
+        } else {
+            return new Throwable("here");
+        }
+    }
+}
diff --git a/core/tests/coretests/src/android/text/method/BackspaceTest.java b/core/tests/coretests/src/android/text/method/BackspaceTest.java
index 3be2cff..a260e94 100644
--- a/core/tests/coretests/src/android/text/method/BackspaceTest.java
+++ b/core/tests/coretests/src/android/text/method/BackspaceTest.java
@@ -165,6 +165,18 @@
         backspace(state, 0);
         state.assertEquals("|");
 
+        state.setByString("U+1F469 U+200D U+1F373 |");
+        backspace(state, 0);
+        state.assertEquals("|");
+
+        state.setByString("U+1F487 U+200D U+2640 |");
+        backspace(state, 0);
+        state.assertEquals("|");
+
+        state.setByString("U+1F487 U+200D U+2640 U+FE0F |");
+        backspace(state, 0);
+        state.assertEquals("|");
+
         state.setByString("U+1F468 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468 |");
         backspace(state, 0);
         state.assertEquals("|");
diff --git a/docs/docs-preview-index.html b/docs/docs-preview-index.html
index e26b57c..8d5422b 100644
--- a/docs/docs-preview-index.html
+++ b/docs/docs-preview-index.html
@@ -79,19 +79,16 @@
 
 <h2>Get Started</h2>
 <ul>
-  <li>View the <a href="reference/packages.html">API Reference</a></li>
+  <li>View the <a href="reference/packages.html">offline API Reference</a></li>
   <li>Read Diff Reports:</a>
     <ul>
-      <li><a href="sdk/api_diff/n-preview-1/changes.html"
-        >API 23 --> Preview 1</a></li>
+      <li><a href="https://developer.android.com/sdk/api_diff/24/changes.html"
+        >API 23 --> API 24</a></li>
     </ul>
   </li>
-  <li>Downloads and additional documentation are available at the
+  <li>For more information, visit the
     <a href="http://developer.android.com/preview/index.html">
       Android N Developer Preview site</a></li>
-  <li>For information about Developer Preview 1, visit the
-    <a href="http://developer.android.com/preview/support.html">Support</a>
-    page.</li>
 </ul>
 
 
diff --git a/docs/html-intl/intl/es/about/versions/android-5.0.jd b/docs/html-intl/intl/es/about/versions/android-5.0.jd
index c94a140..4d50584 100644
--- a/docs/html-intl/intl/es/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/es/about/versions/android-5.0.jd
@@ -428,7 +428,7 @@
 <p>Cuando el sistema detecta una red adecuada, se conecta a la red e invoca la devolución de llamada {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. Puedes usar el objeto {@link android.net.Network} de la devolución de llamada para obtener información adicional acerca de la red o para indicar que el tráfico use la red seleccionada.</p>
 
 <h3 id="BluetoothBroadcasting">Bluetooth de baja energía</h3>
-<p>Android 4.3 introdujo compatibilidad de plataforma para <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth de baja energía</a> (<em>Bluetooth LE</em>) en el rol central. En Android 5.0, un dispositivo Android ahora puede actuar como un <em>dispositivo periférico</em> Bluetooth LE. Las aplicaciones pueden utilizar esta capacidad para que otros dispositivos cercanos detecten su presencia. Por ejemplo, puedes crear aplicaciones que permiten que un dispositivo funcione como un podómetro o un monitor de estado, y comunique sus datos a otro dispositivo Bluetooth LE.</p> 
+<p>Android 4.3 introdujo compatibilidad de plataforma para <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth de baja energía</a> (<em>Bluetooth LE</em>) en el rol central. En Android 5.0, un dispositivo Android ahora puede actuar como un <em>dispositivo periférico</em> Bluetooth LE. Las aplicaciones pueden utilizar esta capacidad para que otros dispositivos cercanos detecten su presencia. Por ejemplo, puedes crear aplicaciones que permiten que un dispositivo funcione como un podómetro o un monitor de estado, y comunique sus datos a otro dispositivo Bluetooth LE.</p>
 <p>Las nuevas API {@link android.bluetooth.le} permiten a sus aplicaciones transmitir anuncios, buscar respuestas y establecer conexiones con dispositivos Bluetooth LE cercanos. Para utilizar las nuevas funciones de anuncio y búsqueda, agrega el permiso {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} en el manifiesto. Cuando los usuarios actualizan o descargan tu aplicación desde Play Store, se les pide que concedan el siguiente permiso a tu aplicación: "Información de conexión Bluetooth: Permite que la aplicación controle Bluetooth, incluida la transmisión de información a dispositivos Bluetooth cercanos o la obtención de información sobre ellos".</p>
 
 <p>Para comenzar el anuncio de Bluetooth LE a fin de que otros dispositivos puedan detectar tu aplicación, llama a {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} y envía una implementación de la clase {@link android.bluetooth.le.AdvertiseCallback}. El objeto de devolución de llamada recibe un informe del éxito o fracaso de la operación de anuncio.</p>
diff --git a/docs/html-intl/intl/es/design/patterns/navigation.jd b/docs/html-intl/intl/es/design/patterns/navigation.jd
index e7d73fd..4b05239 100644
--- a/docs/html-intl/intl/es/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/es/design/patterns/navigation.jd
@@ -137,7 +137,7 @@
 
 <h4>Notificaciones emergentes</h4>
 
-<p><em>Las notificaciones emergentes</em> omiten el panel lateral de notificaciones y aparecen directamente 
+<p><em>Las notificaciones emergentes</em> omiten el panel lateral de notificaciones y aparecen directamente
 frente al usuario. Estas casi nunca se utilizan, y se <strong>deben reservar para ocasiones en las que es necesario proporcionar una
 respuesta oportuna y es necesario realizar una interrupción en el contexto del usuario</strong>. Por ejemplo,
 en Talk se utiliza este estilo para alertar al usuario sobre una invitación de un amigo para participar en una videocharla, ya que esta
diff --git a/docs/html-intl/intl/es/design/patterns/notifications.jd b/docs/html-intl/intl/es/design/patterns/notifications.jd
index bdbc77b..5499e8b 100644
--- a/docs/html-intl/intl/es/design/patterns/notifications.jd
+++ b/docs/html-intl/intl/es/design/patterns/notifications.jd
@@ -56,7 +56,7 @@
 </ul>
 
 <p class="note"><strong>Nota:</strong> El diseño de las notificaciones de esta versión de
-Android se diferencia 
+Android se diferencia
 de manera significativa del diseño de las versiones anteriores. Para obtener información sobre el diseño de las notificaciones en versiones
 anteriores, consulte <a href="./notifications_k.html">Notificaciones en Android 4.4 y versiones anteriores</a>.</p>
 
@@ -189,7 +189,7 @@
 a los usuarios
 durante un período breve, con un diseño expandido que expone las posibles acciones.</p>
 <p> Luego de este período, la notificación se retira hacia el
-panel de notificaciones. Si la <a href="#correctly_set_and_manage_notification_priority">prioridad</a> de una notificación 
+panel de notificaciones. Si la <a href="#correctly_set_and_manage_notification_priority">prioridad</a> de una notificación
 se marca como Alta, Máxima o Pantalla completa, se obtiene una notificación emergente.</p>
 
 <p><b>Buenos ejemplos de notificaciones emergentes</b></p>
@@ -291,8 +291,8 @@
 <p>Utilícelo para las notificaciones que desea que el usuario reciba, pero
 que son menos urgentes. Las notificaciones de baja prioridad tienden a aparecer en la parte inferior de la lista,
 por lo que son ideales para
-eventos como actualizaciones sociales públicas o indirectas: El usuario solicitó que se le notifiquen 
-estas 
+eventos como actualizaciones sociales públicas o indirectas: El usuario solicitó que se le notifiquen
+estas
 actualizaciones, pero estas notificaciones nunca tendrán prioridad sobre las comunicaciones
 urgentes o directas.</p>
 </td>
@@ -545,7 +545,7 @@
 
     <p><strong>Lo que debe hacer</strong></p>
     <p>Utilizar el <a href="/design/style/iconography.html#notification">estilo de icono de notificación</a>
- adecuado para los iconos pequeños y el 
+ adecuado para los iconos pequeños y el
 <a href="/design/style/iconography.html#action-bar">estilo
 de icono de barra de acción</a> del diseño Material Light para los iconos
  de acciones.</p>
@@ -571,7 +571,7 @@
 <h3 id="pulse_the_notification_led_appropriately">Pulsación adecuada del
 LED de notificaciones</h3>
 
-<p>Muchos dispositivos con Android incluyen un LED de notificaciones, que se utiliza para mantener al 
+<p>Muchos dispositivos con Android incluyen un LED de notificaciones, que se utiliza para mantener al
 usuario informado sobre los
 eventos cuando la pantalla está apagada. Las notificaciones con un nivel de prioridad <code>MAX</code>,
 <code>HIGH</code> o <code>DEFAULT</code> deben
@@ -701,7 +701,7 @@
 eliminar las notificaciones constantes del panel lateral de notificaciones.</p>
 
 <h3 id="ongoing_notifications">Reproducción de medios</h3>
-<p>En Android 5.0, la pantalla de bloqueo no muestra los controles de transporte para la clase 
+<p>En Android 5.0, la pantalla de bloqueo no muestra los controles de transporte para la clase
 {@link android.media.RemoteControlClient} obsoleta. Sin embargo, <em>sí</em> muestra las notificaciones, de modo que las notificaciones de reproducción de cada
 aplicación ahora son la forma principal
 en la que los usuarios controlan la reproducción desde el estado bloqueado. A través de este comportamiento, se le otorga más control
@@ -771,7 +771,7 @@
 <ul>
   <li> En el caso de los dispositivos que posean una pantalla de bloqueo segura (PIN, patrón o contraseña), la interface está formada por
  partes públicas y privadas. La interfaz pública se puede mostrar en una pantalla de bloqueo segura y,
- por ende, cualquier persona puede verla. La interfaz privada es el mundo detrás de esa pantalla de bloqueo y 
+ por ende, cualquier persona puede verla. La interfaz privada es el mundo detrás de esa pantalla de bloqueo y
  solo se revela cuando el usuario se registra en el dispositivo.</li>
 </ul>
 
@@ -799,7 +799,7 @@
   Esta es la opción predeterminada del sistema si no se especificó el grado de visibilidad.</li>
   <li><code><a
 href="/reference/android/app/Notification.html#VISIBILITY_PRIVATE">VISIBILITY_PRIVATE</a></code>.
-En la pantalla de bloqueo se muestra la información básica sobre la existencia de esta notificación, incluido 
+En la pantalla de bloqueo se muestra la información básica sobre la existencia de esta notificación, incluido
 el icono y el nombre de la aplicación a través de la cual se publicó. No se muestra el resto de los detalles de la notificación.
 A continuación, especificamos algunos puntos que se deben tener en cuenta:
   <ul>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/about.jd b/docs/html-intl/intl/es/distribute/googleplay/about.jd
index 96faf49..987b43b 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@
 
 @jd:body
 
-    <div id="qv-wrapper">           
+    <div id="qv-wrapper">
   <div id="qv">
   <h2>Acerca de Google Play</h2>
     <ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/es/distribute/googleplay/auto.jd b/docs/html-intl/intl/es/distribute/googleplay/auto.jd
index a2a2943..d9928b5a 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/auto.jd
@@ -158,7 +158,7 @@
 </p>
 
 <p>
-  Ten en cuenta que la revisión afecta la disponibilidad de tu aplicación para otros dispositivos en la 
+  Ten en cuenta que la revisión afecta la disponibilidad de tu aplicación para otros dispositivos en la
  Play Store de Google; por ejemplo, para teléfonos y tablets.
   Si tienes una aplicación actual que incluya actualizaciones para el componente de teléfono/tablet,
  el componente de Android Auto debe pasar la revisión antes de que la aplicación actualizada
diff --git a/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd
index fcf5e44d..73cd63e 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@
 Xnonavpage=true
 
 @jd:body
-    
-    <div id="qv-wrapper">           
+
+    <div id="qv-wrapper">
   <div id="qv">
     <h2>Características de la publicación</h2>
     <ol>
@@ -303,7 +303,7 @@
 <p>
   En la mayoría de los casos, todo lo que necesitas es un solo paquete de aplicaciones (APK), y generalmente es la manera
  más sencilla de administrar y mantener la aplicación. Sin embargo, si necesitas
- proporcionar un APK distinto para diferentes dispositivos, Google Play te 
+ proporcionar un APK distinto para diferentes dispositivos, Google Play te
  permite hacerlo.
 </p>
 
diff --git a/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd
index ecad47c..44da225 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>En este documento:</h2>
@@ -141,7 +141,7 @@
  confirmar que es apta para familias. Suponiendo que tu aplicación cumple con todos los requisitos
  del programa, prevemos que el tiempo de publicación no debería prolongarse
  más allá de lo habitual; no obstante, puede haber una demora en la publicación de la aplicación si se
- rechaza durante la revisión para la inclusión en Diseñado para familias. 
+ rechaza durante la revisión para la inclusión en Diseñado para familias.
   </dd>
 
   <dt>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/families/start.jd b/docs/html-intl/intl/es/distribute/googleplay/families/start.jd
index 3ed1eb3..d6d6126 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@
 
 <p class="note">
   <strong>Nota</strong>: Las aplicaciones publicadas en el programa Diseñado para familias
- también están disponibles para todos los usuarios en Google Play. 
+ también están disponibles para todos los usuarios en Google Play.
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd
index c7cb65d..2b1f403 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/quality/auto.jd
@@ -477,7 +477,7 @@
   No. Cuando Google inicie el proceso de aprobación, tu aplicación para Auto se someterá a una revisión de
  seguridad del conductor y no estará
  disponible para distribución hasta que se apruebe. Dado que es el mismo APK que el
- que utilizas para teléfonos y tablets, tus actualizaciones en la Play Store para esos dispositivos no estará disponible hasta que 
+ que utilizas para teléfonos y tablets, tus actualizaciones en la Play Store para esos dispositivos no estará disponible hasta que
  finalice el proceso de aprobación para Auto.
 </p>
 
diff --git a/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd
index 8588c6b..b972949 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@
         <li><a href="#listing">Google Play</a></li>
 
   </ol>
-  
+
   <h2>Prueba</h2>
   <ol>
     <li><a href="#test-environment">Configuración de un entorno de prueba</a></li>
@@ -24,7 +24,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Calidad de las aplicaciones para tablets</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Optimiza tu aplicación</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -84,7 +84,7 @@
     <th style="width:54px;">
       ID
     </th>
-    
+
 
     <th>
       Descripción
diff --git a/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd
index 62c6f87..e004923 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/quality/tablets.jd
@@ -56,7 +56,7 @@
 
 <p>El primer paso en la provisión de una excelente experiencia con la aplicación en tablets es asegurarte
  de que la aplicación cumpla con los <em>criterios de calidad de la aplicación principal</em> en todos los dispositivos
- y formatos a los que apunte. Para obtener información completa, consulta las <a href="{@docRoot}distribute/essentials/quality/core.html">Pautas de calidad de la aplicación principal</a>. 
+ y formatos a los que apunte. Para obtener información completa, consulta las <a href="{@docRoot}distribute/essentials/quality/core.html">Pautas de calidad de la aplicación principal</a>.
 </p>
 
 <p>
@@ -119,7 +119,7 @@
   <li>Proporciona diseños personalizados, según sea necesario, para las pantallas <code>large</code> y
  <code>xlarge</code>. También puedes proporcionar diseños que se cargarán
  en función de la <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">dimensión
- más corta</a> de la pantalla o la <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">altura y el ancho 
+ más corta</a> de la pantalla o la <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">altura y el ancho
  mínimos disponibles</a>.
   </li>
 
@@ -208,7 +208,7 @@
  maximizar la reutilización de códigos entre diferentes factores y pantallas que
  compartan contenido.</li>
 <li>Decide en qué tamaños de pantalla usarás una IU multipanel y luego proporciona los
- diferentes diseños en los depósitos para el tamaño de pantalla correspondiente (como 
+ diferentes diseños en los depósitos para el tamaño de pantalla correspondiente (como
 <code>large</code>/<code>xlarge</code>) o anchos mínimos de pantalla (como
 <code>sw600dp</code>/<code>sw720</code>).</li>
 </ul>
@@ -492,7 +492,7 @@
 
 <pre>&lt;uses-feature android:name="android.hardware.telephony" android:required="false" /&gt;</pre></li>
 
-<li>En forma similar, revisa el manifiesto para detectar elementos <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> que 
+<li>En forma similar, revisa el manifiesto para detectar elementos <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> que
 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">impliquen requisitos
  de características de hardware</a> que no sean adecuadas para tablets. Si encuentras esos
  permisos, asegúrate de declarar explícitamente un elemento
@@ -735,7 +735,7 @@
  distribución. </p>
 
 <p>Si la página de Sugerencias para la optimización indica problemas "Pendientes" que crees que no
- corresponden a tu aplicación o afectan la calidad de la aplicación en las tablets, 
+ corresponden a tu aplicación o afectan la calidad de la aplicación en las tablets,
 usa el <a href="https://support.google.com/googleplay/android-developer/contact/tabletq" target="_googleplay" style="white-space:nowrap">Formulario de contacto de Diseñado para tablets&raquo;</a> para comunicárnoslo. Revisaremos
  tu aplicación y actualizaremos tu página de Sugerencias para la optimización
  según corresponda.</p>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/tv.jd b/docs/html-intl/intl/es/distribute/googleplay/tv.jd
index e3a95bc..e9deacb 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/tv.jd
@@ -132,7 +132,7 @@
 <ul>
   <li>Cumple las pautas de Calidad de la aplicación principal
     <ul>
-      <li>Sigue las <a href="{@docRoot}design/index.html">pautas de 
+      <li>Sigue las <a href="{@docRoot}design/index.html">pautas de
  Diseño Android</a>. Presta especial atención al uso de <a href="http://www.google.com/design/spec/material-design/introduction.html">Material
  Design</a> en tu aplicación.
       </li>
@@ -261,7 +261,7 @@
  los criterios, recibirás una <strong>notificación por correo electrónico enviada a tu cuenta
  de desarrollador</strong> con un resumen de las áreas que debes abordar. Una vez que realices
  los ajustes necesarios, puedes cargar una nueva versión de tu aplicación a la Consola para
- desarrolladores. 
+ desarrolladores.
 </p>
 
 <p>
@@ -282,7 +282,7 @@
 
   <li>
     <em>Aprobada</em>: se revisó tu aplicación y se aprobó. La aplicación
- estará disponible de forma directa para los usuarios de Android TV. 
+ estará disponible de forma directa para los usuarios de Android TV.
   </li>
 
   <li>
diff --git a/docs/html-intl/intl/es/distribute/googleplay/wear.jd b/docs/html-intl/intl/es/distribute/googleplay/wear.jd
index f23315d..2c8a804 100644
--- a/docs/html-intl/intl/es/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/es/distribute/googleplay/wear.jd
@@ -127,7 +127,7 @@
 <ul>
   <li>Cumple las pautas de Calidad de la aplicación principal.
     <ul>
-      <li>Sigue las <a href="{@docRoot}design/index.html">pautas de 
+      <li>Sigue las <a href="{@docRoot}design/index.html">pautas de
 Diseño Android</a>. Presta especial atención al uso de <a href="http://www.google.com/design/spec/material-design/introduction.html">Material
  Design</a> en tu aplicación.
       </li>
@@ -152,7 +152,7 @@
 <p>
   Una vez que hayas creado tu APK listo para el lanzamiento y lo hayas probado para asegurarte de que cumple todos los criterios de <a href="{@docRoot}distribute/essentials/quality/wear.html">Calidad de las aplicaciones para Wear</a>, cárgalo
  a la Consola para desarrolladores. Actualiza el directorio de tu tienda con capturas de pantalla de tu aplicación para Wear y configura opciones
- de distribución, según sea necesario. Si no sabes cómo prepararte para el lanzamiento en Google Play, consulta la 
+ de distribución, según sea necesario. Si no sabes cómo prepararte para el lanzamiento en Google Play, consulta la
 <a href="{@docRoot}distribute/googleplay/publish/preparing.html">Lista de comprobación para el lanzamiento.</a>
 </p>
 
diff --git a/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd
index ad42663..be23c86 100644
--- a/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/es/distribute/tools/launch-checklist.jd
@@ -870,7 +870,7 @@
   <li>
     <p>
       "Dispositivos compatibles" indica que tus aplicaciones están llegando a los dispositivos
- a los que pretendías llegar. De lo contrario, deberás verificar con tu equipo de desarrollo 
+ a los que pretendías llegar. De lo contrario, deberás verificar con tu equipo de desarrollo
  los requisitos y las reglas de filtrado de las aplicaciones.
     </p>
   </li>
diff --git a/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd
index 7cb3ccb..c068490 100644
--- a/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/es/distribute/tools/localization-checklist.jd
@@ -903,7 +903,7 @@
       Responde las reseñas, si fuera posible. Te recomendamos que interactúes
  con los usuarios internacionales en sus idiomas o en un idioma común, si fuera posible.
       Si no lo es, puedes intentar utilizar herramientas de traducción, aunque es posible que no puedas
- prever los resultados. Si tu aplicación se vuelve muy popular en un idioma, considera 
+ prever los resultados. Si tu aplicación se vuelve muy popular en un idioma, considera
  la posibilidad de obtener ayuda por parte de hablantes nativos para brindar soporte.
     </p>
   </li>
diff --git a/docs/html-intl/intl/es/google/play/filters.jd b/docs/html-intl/intl/es/google/play/filters.jd
index 03565b9..07238ee 100644
--- a/docs/html-intl/intl/es/google/play/filters.jd
+++ b/docs/html-intl/intl/es/google/play/filters.jd
@@ -81,7 +81,7 @@
  solicite específicamente la aplicación al hacer clic en un vínculo profundo que apunte directamente a la
  ID de la aplicación en Google Play.</p>
 
-<p>Puedes usar cualquier combinación de los filtros disponibles para tu aplicación. Por ejemplo, puedes establecer un requisito 
+<p>Puedes usar cualquier combinación de los filtros disponibles para tu aplicación. Por ejemplo, puedes establecer un requisito
 <code>minSdkVersion</code> de <code>"4"</code> y configurar <code>smallScreens="false"</code>
  en la aplicación; luego, al cargar la aplicación a Google Play, podrías apuntar a países (operadores) europeos
  únicamente. De este modo, los filtros de Google Play evitarán que la aplicación esté disponible en un dispositivo
@@ -102,7 +102,7 @@
 
 <h2 id="manifest-filters">Filtrado en función del manifiesto de la aplicación</h2>
 
-<p>La mayoría de los filtros son activados por elementos del archivo de manifiesto de una 
+<p>La mayoría de los filtros son activados por elementos del archivo de manifiesto de una
 aplicación, <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>
  (aunque no todo lo que se encuentra en el archivo de manifiesto puede desencadenar el filtrado).
 La tabla 1 contiene los elementos del manifiesto que debes usar para desencadenar el
diff --git a/docs/html-intl/intl/es/preview/api-overview.jd b/docs/html-intl/intl/es/preview/api-overview.jd
index f84bede..7cee010 100644
--- a/docs/html-intl/intl/es/preview/api-overview.jd
+++ b/docs/html-intl/intl/es/preview/api-overview.jd
@@ -62,7 +62,7 @@
 <h2 id="multi-window_support">Compatibilidad con ventanas múltiples</h2>
 
 
-<p>En Android N, presentamos una nueva y muy solicitada función multitarea 
+<p>En Android N, presentamos una nueva y muy solicitada función multitarea
 en la plataforma: la compatibilidad con ventanas múltiples. </p>
 
   <p>Los usuarios ahora pueden abrir dos aplicaciones al mismo tiempo en la pantalla. </p>
@@ -815,7 +815,7 @@
 permisos simple en la que se detallan claramente los directorios a los cuales
 la aplicación solicita acceso.</p>
 
-<p>Para obtener más información, consulta la documentación 
+<p>Para obtener más información, consulta la documentación
 <a href="{@docRoot}preview/features/scoped-folder-access.html">Acceso
 a directorios determinados</a> para desarrolladores.</p>
 
@@ -846,7 +846,7 @@
 </p>
 
 <p>
-Android N incluye compatibilidad opcional para un 
+Android N incluye compatibilidad opcional para un
 <em>modo de rendimiento sostenido</em>, que permite que los fabricantes de equipo original (OEM) arrojen datos sobre las capacidades de rendimiento del dispositivo
 para las aplicaciones de ejecución prolongada. Los desarrolladores
 de aplicaciones pueden usar estos datos para perfeccionar sus aplicaciones y alcanzar un nivel
@@ -854,7 +854,7 @@
 </p>
 
 <p>
-Los desarrolladores de aplicaciones solo pueden probar esta API nueva en la N Developer Preview instalada solo en dispositivos con 
+Los desarrolladores de aplicaciones solo pueden probar esta API nueva en la N Developer Preview instalada solo en dispositivos con
 Nexus 6P. Para usar esta función,
 establece el indicador de rendimiento sostenido de la ventana
 que deseas ejecutar en el modo de rendimiento sostenido. Establece este indicador con el método
@@ -888,7 +888,7 @@
 </p>
 
 <ul>
-  <li>Puedes establecer un ícono desde el id. de un recurso llamando a 
+  <li>Puedes establecer un ícono desde el id. de un recurso llamando a
   <code>PrinterInfo.Builder.setResourceIconId()</code>.
   </li>
 
diff --git a/docs/html-intl/intl/es/preview/behavior-changes.jd b/docs/html-intl/intl/es/preview/behavior-changes.jd
index 5eb4966..112c1c9 100644
--- a/docs/html-intl/intl/es/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/es/preview/behavior-changes.jd
@@ -88,7 +88,7 @@
   determinado, se activa en este el modo Descanso y se aplica el primer subconjunto de restricciones: se
   desactiva el acceso de las aplicaciones a la red y se aplazan tareas y sincronizaciones. Si el dispositivo
   permanece quieto durante un tiempo determinado tras activarse el modo Descanso, el sistema aplica el
-  resto de las restricciones del modo a {@link android.os.PowerManager.WakeLock}, 
+  resto de las restricciones del modo a {@link android.os.PowerManager.WakeLock},
   alarmas de {@link android.app.AlarmManager}, GPS y análisis de Wi-Fi. Independientemente de que
   se apliquen algunas o todas las restricciones del modo Descanso, el sistema activa el
   dispositivo durante plazos de mantenimiento breves en los cuales las aplicaciones tienen
@@ -199,7 +199,7 @@
     Los propietarios ya no pueden reducir los permisos de archivo de los archivos privados,
     y un intento de hacerlo utilizando
     {@link android.content.Context#MODE_WORLD_READABLE} o
-    {@link android.content.Context#MODE_WORLD_WRITEABLE} activará una 
+    {@link android.content.Context#MODE_WORLD_WRITEABLE} activará una
    {@link java.lang.SecurityException}.
     <p class="note">
       <strong>Nota:</strong> Desde ahora, esta restricción no se aplica planamente.
@@ -211,7 +211,7 @@
   <li>
     Pasar URI <code>file://</code> fuera del dominio del paquete puede dar al
     receptor una ruta de acceso inaccesible. Por lo tanto, los intentos de pasar un
-    URI <code>file://</code> activan una 
+    URI <code>file://</code> activan una
     <code>FileUriExposedException</code>. La manera recomendada para compartir el
     contenido de un archivo privado consiste en utilizar el {@link
     android.support.v4.content.FileProvider}.
@@ -221,8 +221,8 @@
     almacenados de manera privada por nombre de archivo. Las aplicaciones heredadas pueden terminar con una
     ruta de acceso inaccesible cuando acceden a {@link
     android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Las aplicaciones orientadas a
-    Android N o versiones posteriores activan una {@link java.lang.SecurityException} cuando 
-    intentan acceder a 
+    Android N o versiones posteriores activan una {@link java.lang.SecurityException} cuando
+    intentan acceder a
     {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}.
     Las aplicaciones heredadas que establecen la ubicación de descarga en una ubicación pública
     usando
@@ -573,7 +573,7 @@
 a través de transacciones {@link android.os.Binder}. Además, el
 sistema ahora vuelve a emitir {@code TransactionTooLargeExceptions}
 como {@code RuntimeExceptions}, en lugar de registrarlas o suprimirlas silenciosamente.  Un
-ejemplo común es almacenar demasiados datos en 
+ejemplo común es almacenar demasiados datos en
 {@link android.app.Activity#onSaveInstanceState Activity.onSaveInstanceState()},
  lo que hace que {@code ActivityThread.StopInfo} emita una
 {@code RuntimeException} cuando la aplicación se orienta a Android N.
@@ -585,7 +585,7 @@
 no está anexada a una ventana, el sistema
 pone en cola la tarea {@link java.lang.Runnable} con la {@link android.view.View}.
 La tarea {@link java.lang.Runnable} no se ejecuta hasta que la
-{@link android.view.View} esté anexada 
+{@link android.view.View} esté anexada
 a una ventana. Este comportamiento soluciona los siguientes errores:
 <ul>
    <li>Si una aplicación publicaba una {@link android.view.View} desde un subproceso que no fuera el subproceso de la IU
@@ -600,7 +600,7 @@
 Si una aplicación en Android N con el permiso
 {@link android.Manifest.permission#DELETE_PACKAGES DELETE_PACKAGES}
 intentaba borrar un paquete instalado por otra aplicación,
-el sistema solicitaba la confirmación del usuario. En este escenario, las aplicaciones debían esperar recibir el estado 
+el sistema solicitaba la confirmación del usuario. En este escenario, las aplicaciones debían esperar recibir el estado
 {@link android.content.pm.PackageInstaller#STATUS_PENDING_USER_ACTION STATUS_PENDING_USER_ACTION}
 al invocar
 {@link android.content.pm.PackageInstaller#uninstall PackageInstaller.uninstall()}.
diff --git a/docs/html-intl/intl/es/preview/download-ota.jd b/docs/html-intl/intl/es/preview/download-ota.jd
index d3e8be9..2b2bcbf 100644
--- a/docs/html-intl/intl/es/preview/download-ota.jd
+++ b/docs/html-intl/intl/es/preview/download-ota.jd
@@ -178,7 +178,7 @@
 <ol>
   <li>Descargar una imagen de dispositivo inalámbrico de la tabla que verás a continuación.</li>
   <li>Reinicia el dispositivo en modo Recuperación. Para leer más información sobre cómo
-    aplicar este modo en dispositivos Nexus, visita la sección 
+    aplicar este modo en dispositivos Nexus, visita la sección
 <a href="https://support.google.com/nexus/answer/4596836">Reset your Nexus
       device to factory settings</a>.
   </li>
@@ -202,65 +202,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
-      MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
-      SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
-      MD5: e8b12f7721c53af9a450f7058928a5fc<br>
-      SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
-      MD5: 3fac09fef759dde26e57cb80b20b6477<br>
-      SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
-      MD5: 58312c4a5971818ef5c77a3f446003da<br>
-      SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
-      MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
-      SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
-      MD5: 1461622ad53ea842b2722fa7b49b8172<br>
-      SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
-      MD5: c60117f3640cc6db12386fd632289c7d<br>
-      SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
-      MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
-      SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/es/preview/download.jd b/docs/html-intl/intl/es/preview/download.jd
index d489074..6fa9a6a 100644
--- a/docs/html-intl/intl/es/preview/download.jd
+++ b/docs/html-intl/intl/es/preview/download.jd
@@ -209,7 +209,7 @@
 <h2 id="device-preview">Configurar un dispositivo de hardware</h2>
 
 <p>
-  En N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware 
+  En N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware
 que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta tablets y TV.
 </p>
 
@@ -300,72 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
-      MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
-      SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
-      MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
-      SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
-      MD5: e93de7949433339856124c3729c15ebb<br>
-      SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
-      MD5: 565be87ebb2d5937e2abe1a42645864b<br>
-      SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
-      MD5: a8464e15c6683fe2afa378a63e205fda<br>
-      SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
-      MD5: c0dbb7db671f61b2785da5001cedefcb<br>
-      SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
-      MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
-      SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
-      MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
-      SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> (D6603 and D6653)</td>
-    <td>Descarga: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      Para más información, visita la sección <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Prueba la Android N Developer Preview en Xperia Z3</a>.
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
@@ -377,7 +378,7 @@
   Si quieres desinstalar la muestra desde un dispositivo, puedes hacerlo de las
   siguientes maneras: </p>
   <ul>
-    <li><strong>Obtener una imagen de sistema con las especificaciones de fábrica</strong> y luego actualízala de manera manual 
+    <li><strong>Obtener una imagen de sistema con las especificaciones de fábrica</strong> y luego actualízala de manera manual
     para el dispositivo.
       <ul>
           <li>Para <strong>los dispositivos Nexus y Pixel C</strong>, consulta
@@ -466,8 +467,8 @@
 
 <p>
 A fin de garantizar la mejor experiencia en el emulador de Android, verifica que estás utilizando
-Android Studio 2.1 o una versión superior, compatible con el <a href="http://tools.android.com/tech-docs/emulator">emulador de Android 2.0</a>, 
-cuyo rendimiento es mayor si se lo compara con el emulador utilizado en 
+Android Studio 2.1 o una versión superior, compatible con el <a href="http://tools.android.com/tech-docs/emulator">emulador de Android 2.0</a>,
+cuyo rendimiento es mayor si se lo compara con el emulador utilizado en
 Android Studio 1.5.</p>
 
 <p>Para obtener más información sobre la creación de dispositivos virtuales, consulta <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales</a>.
diff --git a/docs/html-intl/intl/es/preview/features/afw.jd b/docs/html-intl/intl/es/preview/features/afw.jd
index 32e57c8..5e550a6 100644
--- a/docs/html-intl/intl/es/preview/features/afw.jd
+++ b/docs/html-intl/intl/es/preview/features/afw.jd
@@ -35,7 +35,7 @@
         <li><a href="#process-logging">Registros de procesos empresariales
                 </a></li>
 
-        <li><a href="#bug-reports">Informes de errores remotos 
+        <li><a href="#bug-reports">Informes de errores remotos
                 </a></li>
 
         <li><a href="#remove-cert">Quitar un certificado de cliente
@@ -109,7 +109,7 @@
   Si el propietario de un perfil envía una intent {@link
   android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD}, el
  sistema le pide al usuario que configure una comprobación de seguridad. El propietario del perfil también puede
- enviar una intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> 
+ enviar una intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>
  para que el usuario establezca un bloqueo de dispositivo.
 </p>
 
@@ -133,7 +133,7 @@
 </p>
 
 <p>
-  Para obtener detalles sobre los nuevos métodos y constantes, consulta la página de referencia de 
+  Para obtener detalles sobre los nuevos métodos y constantes, consulta la página de referencia de
   <code>DevicePolicyManager</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK</a>.
 </p>
 
@@ -156,7 +156,7 @@
 <p>
   Los lanzadores deben aplicar una IU distintiva para las aplicaciones suspendidas a fin de mostrar que las
  aplicaciones no están actualmente disponibles; por ejemplo, el ícono de la aplicación puede aparecer en color
- gris. Los lanzadores pueden averiguar si una aplicación está suspendida llamando al nuevo método 
+ gris. Los lanzadores pueden averiguar si una aplicación está suspendida llamando al nuevo método
   <code>DevicePolicyManager.getPackageSuspended()</code>.
 </p>
 
@@ -181,9 +181,9 @@
 </p>
 
 <p>
-  Los propietarios pueden requerir el uso de una VPN llamando al nuevo método 
+  Los propietarios pueden requerir el uso de una VPN llamando al nuevo método
  <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para averiguar
- si el propietario ha establecido un requisito de VPN, llama al nuevo método 
+ si el propietario ha establecido un requisito de VPN, llama al nuevo método
   <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code>.
 </p>
 
@@ -255,7 +255,7 @@
 <p>
   Los propietarios pueden reiniciar sus dispositivos de forma remota. En algunos casos, no se puede acceder al botón de encendido de los dispositivos implementados en
  lugares públicos dentro de recintos. Si se debe
- reiniciar un dispositivo, los administradores pueden hacerlo utilizando el nuevo método 
+ reiniciar un dispositivo, los administradores pueden hacerlo utilizando el nuevo método
   <code>DevicePolicyManager.reboot()</code>.
 </p>
 
@@ -271,7 +271,7 @@
 <p>
   Los propietarios de dispositivos pueden identificar actividades sospechosas mediante un rastreo remoto de la actividad del
  dispositivo, incluidos inicios de aplicaciones, actividad adb y desbloqueos de pantalla. Los registros de
- procesos no requieren del consentimiento del usuario. Para recuperar registros, los propietarios de dispositivos habilitan 
+ procesos no requieren del consentimiento del usuario. Para recuperar registros, los propietarios de dispositivos habilitan
  los registros de dispositivos mediante <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
 </p>
 
@@ -402,10 +402,10 @@
 
 <p>
   El propietario del dispositivo o perfil puede habilitar otra aplicación para que administre las restricciones de
- aplicaciones mediante el nuevo método 
+ aplicaciones mediante el nuevo método
   <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
 . La aplicación nominada puede controlar si se otorgó este permiso
- llamando a 
+ llamando a
   <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
 </p>
 
@@ -461,8 +461,8 @@
 <p>
   Los propietarios de perfiles y dispositivos pueden configurar múltiples certificados de CA para una configuración
  de Wi-Fi determinada. Cuando las redes de Wi-Fi corporativas tienen CA independientes para
- diferentes puntos de acceso con el mismo SSID, los administradores de TI pueden incluir todas las 
- CA relevantes en la configuración Wi-Fi utilizando el nuevo método 
+ diferentes puntos de acceso con el mismo SSID, los administradores de TI pueden incluir todas las
+ CA relevantes en la configuración Wi-Fi utilizando el nuevo método
   <code>setCaCertificates()</code>.
 </p>
 
@@ -511,7 +511,7 @@
 </p>
 
 <p>
-  El teléfono debe controlar el nuevo marcador 
+  El teléfono debe controlar el nuevo marcador
   <code>android.telecom.Call.PROPERTY_WORK_CALL</code> para determinar si una llamada es
  de tipo laboral. Si se trata de una llamada laboral, el teléfono debe indicarlo
 , por ejemplo, mediante el agregado de una insignia de trabajo.
@@ -524,7 +524,7 @@
  usuario modifique el fondo de pantalla. Los propietarios de dispositivos o perfiles aún pueden
  modificar el fondo de pantalla. Sin embargo, solo pueden hacerlo para el
  usuario o perfil que controlan. Por ejemplo, el propietario de un perfil no puede modificar el
- fondo de pantalla del usuario primario, 
+ fondo de pantalla del usuario primario,
  pero sí pueden hacerlo el propietario de un dispositivo o el propietario de un perfil en el perfil principal. El propietario de un dispositivo o perfil que desea modificar el
  fondo de pantalla debe controlar si el usuario o perfil que administra posee un
  fondo de pantalla ({@link android.app.WallpaperManager#isWallpaperSupported
@@ -544,7 +544,7 @@
 <h2 id="health-monitoring">Control del estado del dispositivo</h2>
 
 <p>
-  El propietario de un perfil o dispositivo puede usar la nueva interfaz 
+  El propietario de un perfil o dispositivo puede usar la nueva interfaz
   <code>HardwarePropertiesManager</code> para recuperar información
  sobre el estado del dispositivo, como por ejemplo, las temperaturas de CPU o GPU y el uso de la CPU. La nueva interfaz
  de control es especialmente útil para controlar dispositivos sin supervisión
diff --git a/docs/html-intl/intl/es/preview/features/background-optimization.jd b/docs/html-intl/intl/es/preview/features/background-optimization.jd
index fbae9b5..c061a09 100644
--- a/docs/html-intl/intl/es/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/es/preview/features/background-optimization.jd
@@ -274,7 +274,7 @@
 </pre>
 <p>
   Cuando el sistema informa un cambio en el(los) URI de contenido especificado(s), tu aplicación
-  recibe un callback y se pasa un objeto {@link android.app.job.JobParameters} 
+  recibe un callback y se pasa un objeto {@link android.app.job.JobParameters}
   al método {@link android.app.job.JobService#onStartJob onStartJob()}
   en {@code MediaContentJob.class}.
 </p>
diff --git a/docs/html-intl/intl/es/preview/features/direct-boot.jd b/docs/html-intl/intl/es/preview/features/direct-boot.jd
index a9cfcf0..e1d99e9 100644
--- a/docs/html-intl/intl/es/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/es/preview/features/direct-boot.jd
@@ -58,7 +58,7 @@
 <p>Debes registrar los componentes de las aplicaciones con el sistema antes de que estas puedan
 ejecutarse durante el modo de inicio directo o acceder al almacenamiento encriptado por
 dispositivo. Para registrar una aplicación en el sistema, debes marcar los componentes como
-<i>"con reconocimiento de encriptación"</i>. Para marcar tu dispositivo como "con reconocimiento de encriptación", configura el atributo 
+<i>"con reconocimiento de encriptación"</i>. Para marcar tu dispositivo como "con reconocimiento de encriptación", configura el atributo
 <code>android:directBootAware</code> como verdadero en el manifiesto.<p>
 
 <p>Los componentes con reconocimiento de encriptación pueden registrarse para recibir un mensaje de transmisión
diff --git a/docs/html-intl/intl/es/preview/features/multi-window.jd b/docs/html-intl/intl/es/preview/features/multi-window.jd
index 89bc319..441e06af 100644
--- a/docs/html-intl/intl/es/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/es/preview/features/multi-window.jd
@@ -158,7 +158,7 @@
   si quieres que las actividades de tu aplicación admitan la visualización de ventanas múltiples. Puedes establecer
   atributos en tu manifiesto para controlar el tamaño y el diseño.
   La configuración de atributos de una actividad raíz se aplica a todas las actividades
- de su pila de tareas. Por ejemplo, si 
+ de su pila de tareas. Por ejemplo, si
   <code>android:resizeableActivity</code> está configurado en true para la actividad raíz, se puede modificar el tamaño de todas las actividades
  de la pila de tareas.
 </p>
@@ -474,7 +474,7 @@
 
 <p>
   Ya sea que actualices o no tu aplicación para Android N, debes
-  verificar la forma en que se comporta en modo de ventanas múltiples en caso de que un usuario intente iniciarla 
+  verificar la forma en que se comporta en modo de ventanas múltiples en caso de que un usuario intente iniciarla
   en modo de ventanas múltiples en un dispositivo con Android N.
 </p>
 
@@ -526,7 +526,7 @@
   </li>
 
   <li>Cambia el tamaño de tu aplicación en modo de pantalla dividida al arrastrar la línea divisoria.
-  Verifica que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos 
+  Verifica que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos
  necesarios de la IU.
   </li>
 
diff --git a/docs/html-intl/intl/es/preview/features/notification-updates.jd b/docs/html-intl/intl/es/preview/features/notification-updates.jd
index 380efce..ff0635e 100644
--- a/docs/html-intl/intl/es/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/es/preview/features/notification-updates.jd
@@ -194,7 +194,7 @@
 </ol>
 
 <p>
-  En el caso de las aplicaciones interactivas, como los chats, podría ser útil incluir 
+  En el caso de las aplicaciones interactivas, como los chats, podría ser útil incluir
  contexto adicional cuando se administra texto recuperado. Por ejemplo, en estas aplicaciones, se podrían mostrar
  múltiples líneas de historial de chat. Cuando el usuario responde a través de {@link
   android.support.v4.app.RemoteInput}, puedes actualizar el historial de respuestas
diff --git a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd b/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
index 0d9313a..36c0c57 100644
--- a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
@@ -181,7 +181,7 @@
 iniciar una nueva actividad que podría confundir al usuario.</p>
 
 <p>A fin de garantizar que se utilice una única actividad para las solicitudes de reproducción de video y que esta
- ingrese en el modo PIP o salga de este cuando sea necesario, configura el 
+ ingrese en el modo PIP o salga de este cuando sea necesario, configura el
 <code>android:launchMode</code> de la actividad en <code>singleTask</code>, en el manifiesto:
 </p>
 
@@ -209,5 +209,5 @@
 en cualquier área que pueda quedar oculta detrás de la ventana de PIP.</p>
 
 <p>Cuando una actividad se encuentra en modo PIP, de forma predeterminada, no tiene focalización en las entradas. Para
-recibir eventos de entradas durante este modo, usa 
+recibir eventos de entradas durante este modo, usa
 <code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
index e83ca53..e423e6a 100644
--- a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
@@ -41,17 +41,17 @@
 <code>StorageVolume</code> correcta. Luego, crea una intent llamando al
  método <code>StorageVolume.createAccessIntent()</code> de esa instancia.
 Usa esta intención para acceder a directorios de almacenamiento externo. Para obtener una lista de
-todos los volúmenes disponibles, incluidos los volúmenes de medios extraíbles, usa 
+todos los volúmenes disponibles, incluidos los volúmenes de medios extraíbles, usa
 <code>StorageManager.getVolumesList()</code>.</p>
 
-<p>Si tienes información sobre un archivo específico, usa 
-<code>StorageManager.getStorageVolume(File)</code> para obtener el 
-<code>StorageVolume</code> que contiene el archivo. Llama a 
-<code>createAccessIntent()</code> en este <code>StorageVolume</code> para acceder al 
+<p>Si tienes información sobre un archivo específico, usa
+<code>StorageManager.getStorageVolume(File)</code> para obtener el
+<code>StorageVolume</code> que contiene el archivo. Llama a
+<code>createAccessIntent()</code> en este <code>StorageVolume</code> para acceder al
 directorio de almacenamiento externo del archivo.</p>
 
 <p>
-En el caso de los volúmenes secundarios, como las tarjetas SD externas, pasa un valor nulo cuando llames a 
+En el caso de los volúmenes secundarios, como las tarjetas SD externas, pasa un valor nulo cuando llames a
 <code>StorageVolume.createAccessIntent()</code> para solicitar acceso al volumen
  completo, en lugar de un directorio específico.
 <code>StorageVolume.createAccessIntent()</code> regresa un valor nulo si pasas un
@@ -140,7 +140,7 @@
 
 <img src="{@docRoot}preview/images/scoped-folder-access-dont-ask.png" srcset="{@docRoot}preview/images/scoped-folder-access-dont-ask.png 1x,
 {@docRoot}preview/images/scoped-folder-access-dont-ask_2x.png 2x" />
-<p class="img-caption"><strong>Figura 1.</strong> Una aplicación que presenta una 
+<p class="img-caption"><strong>Figura 1.</strong> Una aplicación que presenta una
 segunda solicitud para obtener acceso a medios extraíbles.</p>
 
 <p>Si el usuario selecciona <b>Don't ask again</b> y deniega la solicitud, todas las
diff --git a/docs/html-intl/intl/es/preview/features/security-config.jd b/docs/html-intl/intl/es/preview/features/security-config.jd
index 39d95c8..8c3db64 100644
--- a/docs/html-intl/intl/es/preview/features/security-config.jd
+++ b/docs/html-intl/intl/es/preview/features/security-config.jd
@@ -171,7 +171,7 @@
 <p>
   Agrega las CA de confianza, en formato PEM o DER, a {@code res/raw/trusted_roots}.
   Ten en cuenta que, si usas el formato PEM, el archivo debe incluir <em>solo</em> datos PEM
- y ningún texto adicional. También puedes brindar elementos 
+ y ningún texto adicional. También puedes brindar elementos
 <a href="#certificates"><code>&lt;certificates&gt;</code></a>
  múltiples en lugar de solo uno.
 </p>
@@ -338,7 +338,7 @@
 example.com} deben usar un conjunto personalizado de CA. Además, el tráfico de Cleartext a
  estos dominios se permite <em>excepto</em> con las conexiones a {@code
  secure.example.com}. Anidando la configuración para {@code
-secure.example.com} dentro de la configuración para {@code example.com}, 
+secure.example.com} dentro de la configuración para {@code example.com},
  {@code trust-anchors} no necesita duplicación.
 </p>
 
diff --git a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd b/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
index 5837975..855db8d 100644
--- a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
@@ -33,13 +33,13 @@
 
 <p class="note"><strong>Nota:</strong> La aplicación Live Channels todavía no
  permite que los usuarios creen grabaciones ni accedan a estas. Hasta que se realicen
- cambios en la aplicación Live Channels, es posible que sea difícil probar completamente la 
+ cambios en la aplicación Live Channels, es posible que sea difícil probar completamente la
 experiencia de grabación para tu servicio de entrada de TV.</p>
 
 <h2 id="supporting">Indicar la compatibilidad para la grabación</h2>
 
-<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, configura el 
-atributo <code>android:canRecord</code> de tu archivo XML de metadatos de servicio 
+<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, configura el
+atributo <code>android:canRecord</code> de tu archivo XML de metadatos de servicio
 en <code>true</code>:
 </p>
 
@@ -49,7 +49,7 @@
   android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
 </pre>
 
-<p>Para obtener más información sobre el archivo de metadatos de servicio, consulta 
+<p>Para obtener más información sobre el archivo de metadatos de servicio, consulta
 <a href="{@docRoot}training/tv/tif/tvinput.html#manifest">Declarar el servicio de entrada
  de TV en el manifiesto</a>.
 </p>
@@ -123,7 +123,7 @@
 <code>RecordedPrograms.Uri</code>. Usa API de proveedor de contenido para
 leer, agregar y borrar entradas de esta tabla.</p>
 
-<p>Para obtener más información sobre cómo trabajar con datos del proveedor de contenido, consulta 
+<p>Para obtener más información sobre cómo trabajar con datos del proveedor de contenido, consulta
 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
 Conceptos básicos sobre el proveedor de contenido</a>.</p>
 
diff --git a/docs/html-intl/intl/es/preview/guide.jd b/docs/html-intl/intl/es/preview/guide.jd
index 9fe555c..9d12b57 100644
--- a/docs/html-intl/intl/es/preview/guide.jd
+++ b/docs/html-intl/intl/es/preview/guide.jd
@@ -18,7 +18,7 @@
 
 <p>
   Android N te brinda la oportunidad de garantizar que tus 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 
+ Esta versión preliminar incluye diversas API y cambios en los comportamientos que pueden
 tener impactos en tu 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 tu aplicación con la versión preliminar, te debes centrar en algunos cambios específicos del sistema para garantizar que los usuarios disfruten de una buena experiencia.
 
diff --git a/docs/html-intl/intl/es/preview/overview.jd b/docs/html-intl/intl/es/preview/overview.jd
index 279a536..dc42175 100644
--- a/docs/html-intl/intl/es/preview/overview.jd
+++ b/docs/html-intl/intl/es/preview/overview.jd
@@ -321,7 +321,7 @@
   comportamientos</a> se indican áreas clave que debes probar.</li>
   <li> Documentación de nuevas API, entre la que se incluye <a href="{@docRoot}preview/api-overview.html">Información general de API</a>, una <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia
   de API</a> descargable
-  y guías exhaustivas para desarrolladores que muestran, por ejemplo, soporte 
+  y guías exhaustivas para desarrolladores que muestran, por ejemplo, soporte
   de múltiples ventanas, notificaciones integradas, soporte de múltiples configuraciones regionales y mucho más.
   <li> <a href="{@docRoot}preview/samples.html">Ejemplo de código</a>, en el que se
   demuestra la manera de admitir permisos y otras funciones nuevas.
diff --git a/docs/html-intl/intl/es/preview/setup-sdk.jd b/docs/html-intl/intl/es/preview/setup-sdk.jd
index 2f8c4fa..51260bb 100644
--- a/docs/html-intl/intl/es/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/es/preview/setup-sdk.jd
@@ -92,7 +92,7 @@
     <a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
     <td width="100%">
       MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7 
+      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
     </td>
   </tr>
 <table>
diff --git a/docs/html-intl/intl/es/preview/support.jd b/docs/html-intl/intl/es/preview/support.jd
index f74bae9..517429d 100644
--- a/docs/html-intl/intl/es/preview/support.jd
+++ b/docs/html-intl/intl/es/preview/support.jd
@@ -85,7 +85,7 @@
 
   <li>Developer Preview 3 está <strong>disponible en todos los dispositivos
   compatibles:</strong> Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Nexus Player, Pixel
-  C, General Mobile 4G (Android One) y Sony Xperia Z3 (modelos D6603 y 
+  C, General Mobile 4G (Android One) y Sony Xperia Z3 (modelos D6603 y
   D6653).
 
   </li>
@@ -123,7 +123,7 @@
 <h4>Multiprocess WebView</h4>
 
 <p>
-  Desde la versión 51 de Android N, WebView ejecutará contenido web en 
+  Desde la versión 51 de Android N, WebView ejecutará contenido web en
   procesos individuales de espacio aislado cuando se haya habilitado
   la opción "Multiprocess WebView". El equipo de WebView espera recibir comentarios sobre compatibilidad y
   rendimiento de tiempo de ejecución en N antes de habilitar Multiprocess WebView en
@@ -154,7 +154,7 @@
   que permite que una aplicación monitoree su rendimiento de representación de IU mediante la exposición de una
    transmisión de API Pub/Sub para transferir información sobre el intervalo de los fotogramas para la ventana actual
   de la aplicación. Puedes usar <code>FrameMetricsListener</code> para medir
-  el rendimiento de la IU del nivel de interacción en producción con una granularidad mayor y 
+  el rendimiento de la IU del nivel de interacción en producción con una granularidad mayor y
   sin la necesidad de contar con conexión USB.
 </p>
 
@@ -223,7 +223,7 @@
   <dd>
     Ahora, el sistema utiliza metadatos de la actividad para definir el modo de mosaico.
     (Antes, el valor de devolución de
-    <code>TileService.onTileAdded()</code> determinaba el modo de mosaico). Para obtener más información, consulta 
+    <code>TileService.onTileAdded()</code> determinaba el modo de mosaico). Para obtener más información, consulta
     <code>TileService.META_DATA_ACTIVE_TILE</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> descargable.
   </dd>
 </dl>
@@ -686,9 +686,9 @@
 <h4>OEM unlock</h4>
 
 <ul>
-  <li>En algunos dispositivos, <strong>Enable OEM unlock</strong> aparecerá inhabilitado en 
+  <li>En algunos dispositivos, <strong>Enable OEM unlock</strong> aparecerá inhabilitado en
   "Developer Options" al ejecutar DP2.<br>
-  <strong>Método alternativo:</strong> Apúntate para 
+  <strong>Método alternativo:</strong> Apúntate para
   el Programa Android Beta (si aún no lo has hecho) en
   <a href="https://www.google.com/android/beta" class="external-link">www.google.com/android/beta</a>. Luego, date de baja y acepta el
   paso a una versión anterior (OTA). Darse de baja hará que el dispositivo pase a la versión Android 6.0. Ahora deberías
@@ -764,7 +764,7 @@
       <li>En la muestra multithreadCmdBuffer, {@code vkCmdClearColorImage()} falla cuando
       se ejecuta con el controlador N-DP2.</li>
       <li>Los valores de devolución de {@code vkGetPhysicalDeviceFormatProperties()} no configuran un valor
-      para {@code VkFormatProperties::linearTilingFeatures} que, como resultado, 
+      para {@code VkFormatProperties::linearTilingFeatures} que, como resultado,
       toma el valor de 0.</li>
       <li>Los anexos del búfer de fotogramas de punto flotante de Vulkan no se manejan de forma correcta.</li>
     </ul>
@@ -892,7 +892,7 @@
 <h4 id="dialer">Teléfono</h4>
 
 <ul>
-  <li>La aplicación Teléfono no es compatible con el inicio directo. Este tema se abordará más adelante en 
+  <li>La aplicación Teléfono no es compatible con el inicio directo. Este tema se abordará más adelante en
   N Developer Preview.
   </li>
 
@@ -1021,7 +1021,7 @@
       </li>
 
       <li>El primer registro en un perfil de trabajo tarda varios minutos en
-      completarse. Esto puede hacer que el dispositivo tarde más de lo normal en volverse 
+      completarse. Esto puede hacer que el dispositivo tarde más de lo normal en volverse
       visible en la API Play EMM.
       </li>
 
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd
index 08a42dd..cfccdab0 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@
 next.link=docking-monitoring.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>En esta sección puedes aprender:</h2>
@@ -24,9 +24,9 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 <p>Al modificar la frecuencia de las actualizaciones en segundo plano para reducir el efecto de las mismas en la duración de la batería, te recomendamos que comiences por comprobar el estado de carga y el nivel actual de la batería.</p>
 
 <p>El impacto derivado de actualizar aplicaciones en la duración de la batería varía en función del nivel de batería y del estado de carga del dispositivo, mientras que es insignificante cuando este está conectado a la corriente. Por ello, en la mayoría de los casos, puedes maximizar la frecuencia de actualización cuando el dispositivo esté conectado a un cargador. Por el contrario, si el dispositivo está en proceso de descarga, disminuir la frecuencia de actualización te permitirá aumentar la duración de la batería.</p>
@@ -34,8 +34,8 @@
 <p>Del mismo modo, puedes comprobar el nivel de carga de la batería y reducir la frecuencia de las actualizaciones o incluso detenerlas cuando la batería esté a punto de agotarse.</p>
 
 
-<h2 id="DetermineChargeState">Cómo determinar el estado de carga actual</h2> 
- 
+<h2 id="DetermineChargeState">Cómo determinar el estado de carga actual</h2>
+
 <p>En primer lugar, te recomendamos que determines el estado de carga actual. {@link android.os.BatteryManager} envía los detalles de carga y de la batería en un {@link android.content.Intent} persistente que incluye el estado de carga.</p>
 
 <p>Se trata de un intento persistente, por lo que no es necesario registrar un {@link android.content.BroadcastReceiver}. Para ello, solo tienes que ejecutar {@code registerReceiver} transmitiendo {@code null} como el receptor (como se muestra en el siguiente fragmento). A continuación, se devuelve el intento de estado actual de la batería. Puedes transmitir un objeto {@link android.content.BroadcastReceiver} real, pero hablaremos sobre las actualizaciones en otra sección, por lo que no es necesario ahora.</p>
@@ -58,7 +58,7 @@
 <p>Normalmente, debes maximizar la frecuencia de las actualizaciones en segundo plano si el dispositivo está conectado a un cargador de corriente alterna, disminuir esa frecuencia si se utiliza un cargador USB y reducirla aún más si la batería se está descargando.</p>
 
 
-<h2 id="MonitorChargeState">Cómo supervisar los cambios en el estado de carga</h2> 
+<h2 id="MonitorChargeState">Cómo supervisar los cambios en el estado de carga</h2>
 
 <p>Modificar el estado de carga es tan fácil como conectar el dispositivo a un enchufe o USB. Por ello, es importante que supervises el estado de carga por si se producen cambios y modifiques la frecuencia de actualización según corresponda.</p>
 
@@ -75,11 +75,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 == BATTERY_PLUGGED_USB;
         boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@
 }</pre>
 
 
-<h2 id="CurrentLevel">Cómo determinar el nivel de batería actual</h2> 
+<h2 id="CurrentLevel">Cómo determinar el nivel de batería actual</h2>
 
 <p>En algunos casos, también es útil determinar el nivel de batería actual. Puedes disminuir la frecuencia de las actualizaciones en segundo plano si el nivel de carga de la batería es inferior a un valor determinado.</p>
 
@@ -99,7 +99,7 @@
 float batteryPct = level / (float)scale;</pre>
 
 
-<h2 id="MonitorLevel">Cómo supervisar cambios importantes en el nivel de batería</h2> 
+<h2 id="MonitorLevel">Cómo supervisar cambios importantes en el nivel de batería</h2>
 
 <p>No puedes controlar el estado de la batería de forma continua fácilmente, pero tampoco es necesario.</p>
 
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd
index 2a5ff12..b76b812 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>En esta sección puedes aprender:</h2>
@@ -27,7 +27,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Algunos de los usos más comunes para las alarmas con repetición y los servicios en segundo plano es programar actualizaciones regulares de los datos de aplicaciones a partir de recursos de Internet, almacenar datos en la memoria caché o ejecutar descargas a largo plazo. Sin embargo, si no estás conectado a Internet o la conexión es demasiado débil para completar la descarga, ¿para qué activar el dispositivo y programar la actualización?</p>
@@ -35,18 +35,18 @@
 <p>Puedes utilizar {@link android.net.ConnectivityManager} para comprobar si estás conectado a Internet y, en ese caso, el tipo de conexión que estás utilizando.</p>
 
 
-<h2 id="DetermineConnection">Cómo determinar si tienes conexión a Internet</h2> 
- 
+<h2 id="DetermineConnection">Cómo determinar si tienes conexión a Internet</h2>
+
 <p>No es necesario programar una actualización basada en un recurso de Internet si no estás conectado. En el fragmento que aparece a continuación, se muestra cómo utilizar {@link android.net.ConnectivityManager} para consultar la red activa y determinar si hay conexión a Internet.</p>
 
 <pre>ConnectivityManager cm =
         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
 
 
-<h2 id="DetermineType">Cómo determinar el tipo de conexión a Internet</h2> 
+<h2 id="DetermineType">Cómo determinar el tipo de conexión a Internet</h2>
 
 <p>También puedes determinar el tipo de conexión a Internet que hay disponible.</p>
 
@@ -59,7 +59,7 @@
 <p>Cuando hayas inhabilitado las actualizaciones, es importante que detectes si se hay cambios en la conectividad para poder reanudarlas cuando se haya establecido una conexión a Internet.</p>
 
 
-<h2 id="MonitorChanges">Cómo supervisar los cambios en la conectividad</h2> 
+<h2 id="MonitorChanges">Cómo supervisar los cambios en la conectividad</h2>
 
 <p>{@link android.net.ConnectivityManager} emite la acción {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) cuando se han modificado los detalles de la conectividad. Puedes registrar un receptor de emisión en el archivo de manifiesto para detectar estos cambios y reanudar (o cancelar) las actualizaciones en segundo plano según corresponda.</p>
 
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd
index d612281..bede4e2 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>En esta sección puedes aprender:</h2>
@@ -26,7 +26,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Los dispositivos Android se pueden conectar a distintos tipos de conectores. Por ejemplo, se puede utilizar conectores para coche o domésticos y tanto digitales como analógicos. Normalmente, el estado del conector está vinculado al estado de carga, ya que muchos conectores cargan el dispositivo mientras está conectado.</p>
@@ -36,8 +36,8 @@
 <p>El estado del conector se emite también como un {@link android.content.Intent} persistente, lo que te permite consultar si el dispositivo está conectado o no y, si lo está, determinar el tipo de conector.</p>
 
 
-<h2 id="CurrentDockState">Cómo determinar el estado de conexión actual</h2> 
- 
+<h2 id="CurrentDockState">Cómo determinar el estado de conexión actual</h2>
+
 <p>La información sobre el estado del conector se incluye como información adicional en una emisión persistente de la acción {@link android.content.Intent#ACTION_DOCK_EVENT}. Por ello, no es necesario registrar un {@link android.content.BroadcastReceiver}. Solo tienes que ejecutar {@link android.content.Context#registerReceiver registerReceiver()} transmitiendo {@code null} como el receptor de emisión, como se muestra en el fragmento de código que aparece a continuación.</p>
 
 <pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@
 boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
 
 
-<h2 id="DockType">Cómo determinar el tipo de conector actual</h2> 
+<h2 id="DockType">Cómo determinar el tipo de conector actual</h2>
 
-<p>Si un dispositivo está insertado en un conector, se puede conectar a cualquiera de estos cuatro tipos de conectores: 
+<p>Si un dispositivo está insertado en un conector, se puede conectar a cualquiera de estos cuatro tipos de conectores:
 <ul><li>coche,</li>
 <li>escritorio,</li>
 <li>escritorio de gama baja (analógico),</li>
@@ -60,12 +60,12 @@
 <p>Ten en cuenta que las últimas dos opciones se introdujeron en Android únicamente en el nivel 11 del API. Por ello, te recomendamos que compruebes las tres opciones solo cuando te interese más el tipo de conector que si se trata de un conector digital o analógico:</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">Cómo supervisar los cambios en el tipo de conector o en el estado del mismo</h2> 
+<h2 id="MonitorDockState">Cómo supervisar los cambios en el tipo de conector o en el estado del mismo</h2>
 
 <p>Cuando el dispositivo está conectado a un conector o desconectado del mismo, se emite la acción {@link android.content.Intent#ACTION_DOCK_EVENT}. Para controlar los cambios que se produzcan en el estado del conector del dispositivo, solo tienes que registrar un receptor de emisión en el archivo de manifiesto de la aplicación, como se muestra en el fragmento que aparece a continuación:</p>
 
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/index.jd b/docs/html-intl/intl/es/training/monitoring-device-state/index.jd
index bf6b1c1..12fcae7 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
-<h2>Dependencias y requisitos previos</h2> 
+<h2>Dependencias y requisitos previos</h2>
 <ul>
   <li>Android 2.0 (nivel 5 del API) o superior</li>
   <li>Experiencia con <a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a></li>
@@ -21,19 +21,19 @@
   <li><a href="{@docRoot}guide/components/services.html">Servicios</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Uno de los objetivos de tu aplicación debe ser limitar su impacto en la duración de la batería del dispositivo en el que esté instalada. Después de leer estas secciones, podrás desarrollar aplicaciones que optimizarán el uso de la batería en función del estado del dispositivo en el que estén instaladas.</p>
 
 <p>Al tomar medidas como inhabilitar las actualizaciones de servicios en segundo plano o disminuir la frecuencia de dichas actualizaciones cuando el nivel de batería sea bajo, puedes garantizar que se minimice el impacto de tu aplicación en la duración de la batería sin afectar a la experiencia del usuario.</p>
 
-<h2>Secciones</h2> 
- 
+<h2>Secciones</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="battery-monitoring.html">Cómo controlar el nivel de batería y el estado de carga</a></b></dt>
   <dd>Obtén más información sobre cómo determinar y controlar el nivel de batería actual y los cambios en el estado de carga para modificar la frecuencia de actualizaciones en segundo plano de tu aplicación.</dd>
@@ -46,4 +46,4 @@
 
   <dt><b><a href="manifest-receivers.html">Cómo manipular los receptores de emisión bajo demanda</a></b></dt>
   <dd>Los receptores de emisión que declaras en el archivo de manifiesto se pueden alternar durante la ejecución para inhabilitar los que no son necesarios debido al estado actual del dispositivo. Obtén más información sobre cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento y cómo posponer acciones hasta que el dispositivo se encuentre en un estado concreto.</dd>
-</dl> 
\ No newline at end of file
+</dl>
\ No newline at end of file
diff --git a/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd
index a90468e..0be198c 100644
--- a/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/es/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>En esta sección puedes aprender:</h2>
@@ -23,7 +23,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>La forma más sencilla de controlar los cambios en el estado del dispositivo es crear un {@link android.content.BroadcastReceiver} para cada estado que vayas a controlar y registrar cada uno de ellos en el archivo de manifiesto de tu aplicación. A continuación, en cada uno de esos receptores solo tienes que volver a programar las alarmas recurrentes en función del estado actual del dispositivo.</p>
@@ -31,10 +31,10 @@
 <p>Un efecto secundario de este método es que tu aplicación activará el dispositivo siempre que uno de los receptores se active (probablemente, con más frecuencia de la necesaria).</p>
 
 <p>Te recomendamos que inhabilites o habilites los receptores de emisión en el momento de la ejecución. De este modo, puedes utilizar los receptores que hayas declarado en el archivo de manifiesto como alarmas pasivas que se activan mediante los eventos del sistema solo cuando es necesario.</p>
- 
 
-<h2 id="ToggleReceivers">Cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento </h2> 
- 
+
+<h2 id="ToggleReceivers">Cómo alternar y superponer receptores de cambio de estado para mejorar el rendimiento </h2>
+
 <p>Se puede utilizar el {@link android.content.pm.PackageManager} para alternar el estado habilitado en cualquier componente definido en el archivo de manifiesto, incluidos los receptores de emisión que quieras habilitar o inhabilitar, como se muestra en el fragmento que aparece a continuación:</p>
 
 <pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/es/training/multiscreen/adaptui.jd b/docs/html-intl/intl/es/training/multiscreen/adaptui.jd
index 61f0735..7982ce1 100644
--- a/docs/html-intl/intl/es/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
+<div id="tb-wrapper">
+<div id="tb">
+
 <h2>En esta sección puedes aprender:</h2>
 
 <ol>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Cómo admitir tablets y dispositivos móviles</a></li>
 </ul>
- 
+
 <h2>¡Pruébalo!</h2>
- 
+
 <div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>En función del diseño actual de tu aplicación, la interfaz puede variar. Por ejemplo, si tu aplicación está en modo de panel dual, haz clic en un elemento del panel izquierdo para que aparezca en el panel de la derecha. Asimismo, si está en modo de panel único, el contenido debería aparecer por sí mismo (en otra actividad).</p>
 
@@ -56,7 +56,7 @@
         setContentView(R.layout.main_layout);
 
         View articleView = findViewById(R.id.article);
-        mIsDualPane = articleView != null &amp;&amp; 
+        mIsDualPane = articleView != null &amp;&amp;
                         articleView.getVisibility() == View.VISIBLE;
     }
 }
@@ -116,7 +116,7 @@
     else {
         /* use list navigation (spinner) */
         actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
-        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+        SpinnerAdapter adap = new ArrayAdapter<String>(this,
                 R.layout.headline_item, CATEGORIES);
         actionBar.setListNavigationCallbacks(adap, handler);
     }
@@ -168,7 +168,7 @@
 public class HeadlinesFragment extends ListFragment {
     ...
     &#64;Override
-    public void onItemClick(AdapterView&lt;?&gt; parent, 
+    public void onItemClick(AdapterView&lt;?&gt; parent,
                             View view, int position, long id) {
         if (null != mHeadlineSelectedListener) {
             mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/es/training/multiscreen/index.jd b/docs/html-intl/intl/es/training/multiscreen/index.jd
index d836f96..b9b5916 100644
--- a/docs/html-intl/intl/es/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/index.jd
@@ -6,10 +6,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
-<h2>Dependencias y requisitos previos</h2> 
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencias y requisitos previos</h2>
 
 <ul>
   <li>Android 1.6 o superior (Android 2.1 o superior para la aplicación de ejemplo)</li>
@@ -26,17 +26,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
 </ul>
- 
-<h2>¡Pruébalo!</h2> 
- 
-<div class="download-box"> 
+
+<h2>¡Pruébalo!</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
- 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
 <p>Android se utiliza en cientos de dispositivos con diferentes tamaños de pantalla, desde pequeños teléfonos hasta enormes televisores. Por ello, es importante que diseñes tu aplicación para que sea compatible con todos los tamaños de pantalla y esté disponible para el mayor número de usuarios posible.</p>
 
 <p>Sin embargo, no es suficiente con que tu aplicación sea compatible con diferentes dispositivos. Cada tamaño de pantalla ofrece diferentes posibilidades y retos para la interacción del usuario. Por ello, para satisfacer completamente a tus usuarios e impresionarlos, tu aplicación debe ir más allá de simplemente <em>admitir</em> varias pantallas: debe <em>optimizar</em> la experiencia de usuario para cada configuración de pantalla.</p>
@@ -47,17 +47,17 @@
 
 <p class="note"><strong>Nota:</strong> en esta sección y en el ejemplo correspondiente, se utiliza la <a
 href="{@docRoot}tools/support-library/index.html">biblioteca de compatibilidad</a> para poder usar las API de <PH>{@link android.app.Fragment}</PH> en versiones anteriores a Android 3.0. Debes descargar y la biblioteca y añadirla a tu aplicación para poder utilizar todas las API que se indican en esta sección.</p>
- 
 
-<h2>Secciones</h2> 
- 
-<dl> 
-  <dt><b><a href="screensizes.html">Cómo admitir varios tamaños de pantalla</a></b></dt> 
-    <dd>En esta sección se explica cómo crear diseños que se adapten a diferentes tamaños de pantalla (mediante dimensiones flexibles para vistas, <PH>{@link android.widget.RelativeLayout}</PH>, calificadores de orientación y tamaño de pantalla, filtros de alias y mapas de bits de la clase NinePatch).</dd> 
- 
-  <dt><b><a href="screendensities.html">Cómo admitir varias densidades de pantalla</a></b></dt> 
-    <dd>En esta sección se explica cómo admitir pantallas con diferentes densidades de píxeles (mediante píxeles independientes de la densidad y mapas de bits adecuados a cada densidad).</dd> 
- 
-  <dt><b><a href="adaptui.html">Cómo implementar interfaces de usuario adaptables</a></b></dt> 
-    <dd>En esta sección se explica cómo implementar tu interfaz de usuario para que se adapte a varias combinaciones de densidad o de tamaño de pantalla (detección de tiempo de ejecución del diseño activo, cómo reaccionar en función del diseño actual y cómo administrar los cambios en la configuración de la pantalla).</dd> 
-</dl> 
+
+<h2>Secciones</h2>
+
+<dl>
+  <dt><b><a href="screensizes.html">Cómo admitir varios tamaños de pantalla</a></b></dt>
+    <dd>En esta sección se explica cómo crear diseños que se adapten a diferentes tamaños de pantalla (mediante dimensiones flexibles para vistas, <PH>{@link android.widget.RelativeLayout}</PH>, calificadores de orientación y tamaño de pantalla, filtros de alias y mapas de bits de la clase NinePatch).</dd>
+
+  <dt><b><a href="screendensities.html">Cómo admitir varias densidades de pantalla</a></b></dt>
+    <dd>En esta sección se explica cómo admitir pantallas con diferentes densidades de píxeles (mediante píxeles independientes de la densidad y mapas de bits adecuados a cada densidad).</dd>
+
+  <dt><b><a href="adaptui.html">Cómo implementar interfaces de usuario adaptables</a></b></dt>
+    <dd>En esta sección se explica cómo implementar tu interfaz de usuario para que se adapte a varias combinaciones de densidad o de tamaño de pantalla (detección de tiempo de ejecución del diseño activo, cómo reaccionar en función del diseño actual y cómo administrar los cambios en la configuración de la pantalla).</dd>
+</dl>
diff --git a/docs/html-intl/intl/es/training/multiscreen/screendensities.jd b/docs/html-intl/intl/es/training/multiscreen/screendensities.jd
index 0edb89f..a91f5a0 100644
--- a/docs/html-intl/intl/es/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>En esta sección puedes aprender:</h2>
 <ol>
@@ -29,15 +29,15 @@
 </ul>
 
 <h2>¡Pruébalo!</h2>
- 
-<div class="download-box"> 
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>En esta sección se explica cómo proporcionar diferentes recursos y utilizar unidades de medida de resolución independiente para admitir diferentes densidades de pantalla.</p>
 
@@ -48,8 +48,8 @@
 <p>Por ejemplo, al especificar un espacio entre dos vistas, debes utilizar <code>dp</code> en lugar de <code>px</code>:</p>
 
 <pre>
-&lt;Button android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+&lt;Button android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:text="&#64;string/clickme"
     android:layout_marginTop="20dp" /&gt;
 </pre>
@@ -57,8 +57,8 @@
 <p>Al especificar el tamaño de letra, debes usar siempre <code>sp</code>:</p>
 
 <pre>
-&lt;TextView android:layout_width="match_parent" 
-    android:layout_height="wrap_content" 
+&lt;TextView android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:textSize="20sp" /&gt;
 </pre>
 
diff --git a/docs/html-intl/intl/es/training/multiscreen/screensizes.jd b/docs/html-intl/intl/es/training/multiscreen/screensizes.jd
index 9a971d1..9af109c 100644
--- a/docs/html-intl/intl/es/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/es/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>En esta sección puedes aprender:</h2>
 <ol>
@@ -30,26 +30,26 @@
   <li><a href="{@docRoot}guide/practices/screens_support.html">Cómo admitir varias pantallas</a></li>
 </ul>
 
-<h2>¡Pruébalo!</h2> 
- 
-<div class="download-box"> 
+<h2>¡Pruébalo!</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Descargar la aplicación de ejemplo</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
 
 <p>En esta sección se explica cómo admitir varios tamaños de pantalla. Para ello, sigue estos pasos:</p>
-<ul> 
-  <li>Asegúrate de que el diseño se haya ajustado correctamente al tamaño de la pantalla.</li> 
-  <li>Configura la pantalla con el diseño de interfaz adecuado.</li> 
+<ul>
+  <li>Asegúrate de que el diseño se haya ajustado correctamente al tamaño de la pantalla.</li>
+  <li>Configura la pantalla con el diseño de interfaz adecuado.</li>
   <li>Asegúrate de aplicar el diseño adecuado a la pantalla correspondiente.</li>
-  <li>Utiliza el mapa de bits con la escala adecuada.</li> 
-</ul> 
+  <li>Utiliza el mapa de bits con la escala adecuada.</li>
+</ul>
 
 
-<h2 id="TaskUseWrapMatchPar">Cómo utilizar los valores "wrap_content" y "match_parent"</h2> 
+<h2 id="TaskUseWrapMatchPar">Cómo utilizar los valores "wrap_content" y "match_parent"</h2>
 
 <p>Para garantizar que el diseño es flexible y que se adapta a varios tamaños de pantalla, debes utilizar los valores <code>"wrap_content"</code> y <code>"match_parent"</code> para la altura y el ancho de algunos componentes de la vista. Si utilizas <code>"wrap_content"</code>, el ancho o la altura de la vista se establece en el tamaño mínimo necesario para adaptar el contenido a esta vista, mientras que <code>"match_parent"</code> (también conocido como <code>"fill_parent"</code> antes del nivel 8 del API) provoca que el componente se amplíe hasta coincidir con el tamaño de la vista principal.</p>
 
@@ -65,7 +65,7 @@
 <p class="img-caption"><strong>Figura 1.</strong> La aplicación de ejemplo News Reader en modo vertical (izquierda) y horizontal (derecha)</p>
 
 
-<h2 id="TaskUseRelativeLayout">Cómo utilizar RelativeLayout</h2> 
+<h2 id="TaskUseRelativeLayout">Cómo utilizar RelativeLayout</h2>
 
 <p>Puedes crear diseños de un cierto nivel de complejidad con instancias anidadas de <PH>{@link android.widget.LinearLayout}</PH> y combinaciones de los valores de tamaño <code>"wrap_content"</code> y <code>"match_parent"</code>. Sin embargo, <PH>{@link android.widget.LinearLayout}</PH> no te permite controlar con precisión las relaciones espaciales de las vistas secundarias; las vistas de <PH>{@link android.widget.LinearLayout}</PH> simplemente se alinean en paralelo. Si quieres orientar las vistas secundarias de una forma que no sea una línea recta, a menudo la mejor solución es utilizar <PH>{@link android.widget.RelativeLayout}</PH>que te permite especificar el diseño según las relaciones espaciales entre los componentes. Por ejemplo, puedes alinear una vista secundaria en el lateral izquierdo y otra vista en el lateral derecho de la pantalla.</p>
 
@@ -115,8 +115,8 @@
 
 <p>Ten en cuenta que aunque el tamaño de los componentes es diferente, las relaciones espaciales se mantienen según se ha especificado con <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
 
- 
-<h2 id="TaskUseSizeQuali">Cómo utilizar calificadores de tamaño</h2> 
+
+<h2 id="TaskUseSizeQuali">Cómo utilizar calificadores de tamaño</h2>
 
 <p>Hay mucha diferencia entre un diseño flexible y un diseño relativo como el que se ha utilizado en las secciones anteriores. Aunque ambos diseños se adaptan a diferentes pantalla estirando el espacio dentro de los componentes y alrededor de los mismos, puede que no ofrezcan la mejor experiencia de usuario para cada tamaño de pantalla. Por tanto, tu aplicación no solo debe implementar los diseños flexibles, sino que también debe ofrecer varios diseños alternativos para diferentes configuraciones de pantalla. Para ello, se utilizan <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">calificadores de configuración</a>, que permiten que el tiempo de ejecución seleccione el recurso adecuado en función de la configuración actual del dispositivo (por ejemplo, un diseño diferente para diferentes tamaños de pantalla).</p>
 
@@ -158,7 +158,7 @@
 <p>No obstante, esto no funcionará en los dispositivos anteriores a Android 3.2 porque no reconocen <code>sw600dp</code> como calificador de tamaño, por lo que también tendrás que seguir utilizando el calificador <code>large</code>. Por tanto, debes tener un archivo con el nombre <code>res/layout-large/main.xml</code> idéntico a <code>res/layout-sw600dp/main.xml</code>. En la siguiente sección, obtendrás información sobre una técnica que te permite evitar que se dupliquen los archivos de diseños.</p>
 
 
-<h2 id="TaskUseAliasFilters">Cómo utilizar alias de diseño</h2> 
+<h2 id="TaskUseAliasFilters">Cómo utilizar alias de diseño</h2>
 
 <p>El calificador de ancho mínimo solo está disponible en Android 3.2 o superior. Por tanto, tendrás que seguir utilizando los contenedores de tamaño abstractos (pequeño, normal, grande y extragrande) para que sean compatibles con versiones anteriores. Por ejemplo, si quieres que tu interfaz de usuario sea de panel único en teléfonos pero multipanel en tablets de 7", televisiones y otros dispositivos grandes, tendrás que utilizar los siguientes archivos:</p>
 
@@ -202,7 +202,7 @@
 <PH>{@code large}</PH>y las televisiones y los tablets posteriores a la versión 3.2 utilizarán <code>sw600dp</code>).</p>
 
 
-<h2 id="TaskUseOriQuali">Cómo utilizar calificadores de orientación</h2> 
+<h2 id="TaskUseOriQuali">Cómo utilizar calificadores de orientación</h2>
 
 <p>Aunque algunos diseños se pueden utilizar tanto en modo horizontal como vertical, la mayoría de ellos pueden beneficiarse de los ajustes. A continuación, se indica cómo se comporta el diseño según cada tamaño y orientación de la pantalla en la aplicación de ejemplo News Reader:</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
index 9aed08e..2a1d194 100644
--- a/docs/html-intl/intl/in/design/get-started/principles.jd
+++ b/docs/html-intl/intl/in/design/get-started/principles.jd
@@ -277,7 +277,7 @@
   <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. 
+<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>
 
diff --git a/docs/html-intl/intl/in/design/patterns/navigation.jd b/docs/html-intl/intl/in/design/patterns/navigation.jd
index a8afaaa..4915700 100644
--- a/docs/html-intl/intl/in/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/in/design/patterns/navigation.jd
@@ -121,7 +121,7 @@
 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 
+<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:
@@ -168,7 +168,7 @@
 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. 
+<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>
 
diff --git a/docs/html-intl/intl/in/guide/components/activities.jd b/docs/html-intl/intl/in/guide/components/activities.jd
index 6cac696..bbc061c 100644
--- a/docs/html-intl/intl/in/guide/components/activities.jd
+++ b/docs/html-intl/intl/in/guide/components/activities.jd
@@ -53,7 +53,7 @@
 <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 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",
@@ -67,7 +67,7 @@
 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 
+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>
@@ -89,7 +89,7 @@
 <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 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>
@@ -115,7 +115,7 @@
 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, 
+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
@@ -124,7 +124,7 @@
 
 <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 
+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
@@ -169,7 +169,7 @@
 
 <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 
+&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
@@ -251,7 +251,7 @@
 
 <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" 
+ 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>
 
@@ -297,7 +297,7 @@
 </pre>
 
 <p>Contoh ini menunjukkan logika dasar yang harus Anda gunakan dalam metode {@link
-android.app.Activity#onActivityResult onActivityResult()} Anda untuk menangani 
+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
@@ -602,19 +602,19 @@
 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 
+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 
+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 
+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
@@ -639,7 +639,7 @@
 <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, 
+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
@@ -696,7 +696,7 @@
 , 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 
+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>
 
@@ -722,7 +722,7 @@
 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 
+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
diff --git a/docs/html-intl/intl/in/guide/components/bound-services.jd b/docs/html-intl/intl/in/guide/components/bound-services.jd
index 5d1f65e..6e5e65a1 100644
--- a/docs/html-intl/intl/in/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/in/guide/components/bound-services.jd
@@ -137,7 +137,7 @@
 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} 
+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
@@ -539,7 +539,7 @@
 </ol>
 
 <p>Misalnya, cuplikan berikut menghubungkan klien ke layanan yang dibuat di atas dengan
-<a href="#Binder">memperluas kelas Binder</a>, sehingga tinggal mengkonversi 
+<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>
 
@@ -573,7 +573,7 @@
 </pre>
 
 <ul>
-  <li>Parameter pertama {@link android.content.Context#bindService bindService()} adalah sebuah 
+  <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>
diff --git a/docs/html-intl/intl/in/guide/components/fragments.jd b/docs/html-intl/intl/in/guide/components/fragments.jd
index 14d4ef3..9f7199c 100644
--- a/docs/html-intl/intl/in/guide/components/fragments.jd
+++ b/docs/html-intl/intl/in/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -47,32 +47,32 @@
 </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 
+{@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 
+<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 
+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 
+&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 
+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 
+ {@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 
+<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>
@@ -80,45 +80,45 @@
 
 <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 
+<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 
+<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 
+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 
+<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 
+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 
+, 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 
+ 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 
+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 
+<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>
 
 
@@ -131,26 +131,26 @@
  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 
+<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 
+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 
+  <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 
+  <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
@@ -161,7 +161,7 @@
 
 <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 
+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>
 
 
@@ -171,15 +171,15 @@
 <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, 
+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 
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} untuk
 menangani kejadian klik.</dd>
 
   <dt>{@link android.preference.PreferenceFragment}</dt>
@@ -196,7 +196,7 @@
 
 <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 
+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
@@ -205,7 +205,7 @@
 
 <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 
+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
@@ -227,7 +227,7 @@
   <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 
+membuat layout di XML, lihat dokumentasi
 <a href="{@docRoot}guide/topics/ui/index.html">Antarmuka Pengguna</a>.</p>
 </div>
 </div>
@@ -235,12 +235,12 @@
 <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 
+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 
+<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>
@@ -260,7 +260,7 @@
 
 <h3 id="Adding">Menambahkan fragmen ke aktivitas</h3>
 
-<p>Biasanya, fragmen berkontribusi pada sebagian UI ke aktivitas host, yang ditanamkan sebagai 
+<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>
 
@@ -297,13 +297,13 @@
 
 <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 
+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 
+    <li>Jika Anda tidak memberikan dua hal tersebut, sistem akan menggunakan ID
 tampilan kontainer.</li>
   </ul>
 </div>
@@ -354,15 +354,15 @@
 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 
+<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 
+, 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 
+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>
 
 
@@ -378,7 +378,7 @@
   <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> 
+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
@@ -395,7 +395,7 @@
 
 <h2 id="Transactions">Melakukan Transaksi Fragmen</h2>
 
-<p>Fitur menarik terkait penggunaan fragmen di aktivitas adalah kemampuan menambah, menghapus, mengganti, 
+<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
@@ -423,7 +423,7 @@
 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 
+<p>Misalnya, berikut ini cara mengganti satu fragmen dengan yang fragmen yang lain, dan mempertahankan
 status sebelumnya di back-stack:</p>
 
 <pre>
@@ -442,18 +442,18 @@
 
 <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 
+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 
+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, 
+<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>
@@ -462,9 +462,9 @@
 </ul>
 
 <p>Jika Anda tidak memanggil {@link android.app.FragmentTransaction#addToBackStack(String)
-addToBackStack()} saat melakukan transaksi yang menghapus fragmen, maka fragmen itu 
+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 
+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>
 
@@ -473,9 +473,9 @@
 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") 
+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 
+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>
 
@@ -503,7 +503,7 @@
 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 
+<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>
@@ -537,7 +537,7 @@
 </pre>
 
 <p>Selanjutnya aktivitas yang menjadi host fragmen akan mengimplementasikan antarmuka {@code OnArticleSelectedListener}
- dan 
+ 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
@@ -564,7 +564,7 @@
 
 <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 
+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
@@ -654,7 +654,7 @@
   <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 
+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>
 
@@ -668,10 +668,10 @@
 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 
+<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>). 
+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
@@ -736,7 +736,7 @@
 <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, 
+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
@@ -752,7 +752,7 @@
 
 {@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
 
-<p>Dengan layout ini, sistem akan membuat instance {@code TitlesFragment} (yang mencantumkan 
+<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
@@ -769,14 +769,14 @@
 
 <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, 
+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 
+<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>
@@ -785,11 +785,11 @@
 
 <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 
+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>
 
@@ -798,14 +798,14 @@
 
 {@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), 
+<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
index bd9a500..2c925e9 100644
--- a/docs/html-intl/intl/in/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/in/guide/components/fundamentals.jd
@@ -22,44 +22,44 @@
 </div>
 </div>
 
-<p>Aplikasi Android ditulis dalam bahasa pemrograman Java. Android SDK Tools mengkompilasi 
+<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 
+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 
+ <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 
+<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 
+<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, 
+<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 
+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, 
+  <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 
+  <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>
 
@@ -69,7 +69,7 @@
   <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 
+  <li>Sumber daya yang terpisah dari kode aplikasi dan memungkinkan
 aplikasi mengoptimalkan perilakunya untuk beragam konfigurasi perangkat.</li>
 </ul>
 
@@ -78,8 +78,8 @@
 <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 
+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>
 
@@ -93,7 +93,7 @@
 <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 
+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
@@ -110,7 +110,7 @@
 
 <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 
+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.
@@ -125,7 +125,7 @@
 
 <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 
+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
@@ -137,7 +137,7 @@
 
 <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 
+lain melakukan transaksi. Untuk informasi selengkapnya, lihat panduan pengembang
 <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
 </dd>
 
@@ -163,7 +163,7 @@
 
 
 
-<p>Aspek unik dari desain sistem Android adalah aplikasi mana pun bisa memulai 
+<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
@@ -175,7 +175,7 @@
 <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. 
+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>
 
@@ -198,13 +198,13 @@
 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 
+<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 
+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 
+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
@@ -213,18 +213,18 @@
 
 <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 
+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 
+  <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 
+  <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>
@@ -237,7 +237,7 @@
 </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 
+ 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>
 
@@ -245,7 +245,7 @@
 <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 
+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>
 
@@ -258,8 +258,8 @@
  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 
+  <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>
@@ -287,7 +287,7 @@
 aplikasi.</p>
 
 <p>Dalam elemen <code><a
-href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+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>
@@ -310,12 +310,12 @@
 
 <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 
+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, 
+<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>
 
 
@@ -379,7 +379,7 @@
 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> 
+, Anda harus mendeklarasikannya sebagai kebutuhan dalam file manifes seperti ini:</p>
 
 <pre>
 &lt;manifest ... >
@@ -390,10 +390,10 @@
 &lt;/manifest>
 </pre>
 
-<p>Sekarang, perangkat yang <em>tidak</em> memiliki kamera dan menggunakan 
+<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 
+<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>
@@ -455,11 +455,11 @@
  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}, 
+    <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 
+kode aplikasi, termasuk cara Anda bisa menyediakan sumber daya alternatif untuk
 konfigurasi perangkat tertentu.
     </dd>
   </dl>
@@ -468,11 +468,11 @@
   <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 
+    <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 
+    <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>
diff --git a/docs/html-intl/intl/in/guide/components/index.jd b/docs/html-intl/intl/in/guide/components/index.jd
index a8dd5f8..de40b22 100644
--- a/docs/html-intl/intl/in/guide/components/index.jd
+++ b/docs/html-intl/intl/in/guide/components/index.jd
@@ -1,7 +1,7 @@
 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.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
 
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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
@@ -32,7 +32,7 @@
 
   <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
diff --git a/docs/html-intl/intl/in/guide/components/loaders.jd b/docs/html-intl/intl/in/guide/components/loaders.jd
index cd0379b..88093cc 100644
--- a/docs/html-intl/intl/in/guide/components/loaders.jd
+++ b/docs/html-intl/intl/in/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>Kelas-kelas utama</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>Contoh-contoh terkait</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@
 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
@@ -64,11 +64,11 @@
   </tr>
   <tr>
     <td>{@link android.app.LoaderManager}</td>
-    <td>Kelas abstrak yang dikaitkan dengan {@link android.app.Activity} atau 
+    <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 
+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 />
@@ -97,7 +97,7 @@
   </tr>
   <tr>
     <td>{@link android.content.CursorLoader}</td>
-    <td>Subkelas {@link android.content.AsyncTaskLoader} yang meng-query 
+    <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,
@@ -124,15 +124,15 @@
   <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 
+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> 
+yang ada.</li>
 <li>Cara menampilkan data loader, seperti {@link
 android.widget.SimpleCursorAdapter}.</li>
-  <li>Sumber data, seperti {@link android.content.ContentProvider}, saat menggunakan 
+  <li>Sumber data, seperti {@link android.content.ContentProvider}, saat menggunakan
 {@link android.content.CursorLoader}.</li>
 </ul>
 <h3 id="starting">Memulai Loader</h3>
@@ -140,11 +140,11 @@
 <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> 
+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 
+android.app.Activity#onCreate onCreate()} aktivitas, atau dalam metode
 {@link android.app.Fragment#onActivityCreated onActivityCreated()} fragmen. Anda
 melakukannya dengan cara berikut ini:</p>
 
@@ -157,13 +157,13 @@
 <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> 
+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> 
+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>
@@ -193,7 +193,7 @@
 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>). 
+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>
@@ -245,7 +245,7 @@
 — Dipanggil bila loader yang dibuat sebelumnya selesai dimuat.
 </li></ul>
 <ul>
-  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}  
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
     — Dipanggil bila loader yang dibuat sebelumnya sedang di-reset, sehingga datanya
 tidak tersedia.
 </li>
@@ -322,7 +322,7 @@
 <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 
+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>
@@ -343,7 +343,7 @@
 <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 
+<p>Implementasi ini memanggil
 {@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
 dengan nilai <code>null</code>:</p>
 
@@ -366,7 +366,7 @@
 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>
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
index 44051bf..cdab715 100644
--- a/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
@@ -25,13 +25,13 @@
 </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 
+<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>
@@ -39,7 +39,7 @@
 
 <h2 id="Processes">Proses</h2>
 
-<p>Secara default, semua komponen aplikasi yang sama berjalan dalam proses yang sama dan kebanyakan 
+<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>
 
@@ -47,54 +47,54 @@
 &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 
+&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 
+&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 
+&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 
+<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 
+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 
+ 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 
+<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 
+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 
+<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 
+    <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 
+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 
+        <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;
@@ -108,23 +108,23 @@
         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 
+    <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 
+    <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 
+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 
+        <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang terlihat (atau latar
 depan)</li>
       </ul>
 
@@ -134,53 +134,53 @@
 
   <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 
+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 
+    <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 
+ 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 
+    <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 
+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 
+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 
+&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 
+  <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 
+ 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 
+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>
 
 
@@ -188,35 +188,35 @@
 
 <h2 id="Threads">Thread</h2>
 
-<p>Bila aplikasi diluncurkan, sistem akan membuat thread eksekusi untuk aplikasi tersebut, yang diberi nama, 
+<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 
+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 
+<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 
+<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 
+<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 
+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 
+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 
+<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>
 
@@ -227,12 +227,12 @@
 
 <h3 id="WorkerThreads">Thread pekerja</h3>
 
-<p>Karena model thread tunggal yang dijelaskan di atas, Anda dilarang memblokir thread 
+<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 
+<p>Misalnya, berikut ini beberapa kode untuk listener klik yang mengunduh gambar dari
 thread terpisah dan menampilkannya dalam {@link android.widget.ImageView}:</p>
 
 <pre>
@@ -246,13 +246,13 @@
 }
 </pre>
 
-<p>Awalnya hal ini tampak bekerja dengan baik, karena menciptakan thread baru untuk menangani 
+<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 
+<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>
@@ -284,10 +284,10 @@
 <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 
+<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}, 
+ 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>
 
 
@@ -298,10 +298,10 @@
 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 
+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 
+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>
 
@@ -319,7 +319,7 @@
     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) {
@@ -328,16 +328,16 @@
 }
 </pre>
 
-<p>Kini UI aman dan kode jadi lebih sederhana, karena memisahkan pekerjaan ke 
+<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 
+<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 
+<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
@@ -352,23 +352,23 @@
 
 <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 
+ (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, 
+<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 
+<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 
+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
@@ -382,19 +382,19 @@
 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 
+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 
+ (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 
+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>
 
diff --git a/docs/html-intl/intl/in/guide/components/recents.jd b/docs/html-intl/intl/in/guide/components/recents.jd
index dcfcda7..286fdc1 100644
--- a/docs/html-intl/intl/in/guide/components/recents.jd
+++ b/docs/html-intl/intl/in/guide/components/recents.jd
@@ -60,23 +60,23 @@
 <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 
+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 
+, 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 
+<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 
+ 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} 
+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}, 
+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
@@ -169,18 +169,18 @@
 
   <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 
+ 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 
+ 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}, 
+<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>
 
@@ -219,8 +219,8 @@
 </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 
+{@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>
diff --git a/docs/html-intl/intl/in/guide/components/services.jd b/docs/html-intl/intl/in/guide/components/services.jd
index 7ecd8cd..b36e565 100644
--- a/docs/html-intl/intl/in/guide/components/services.jd
+++ b/docs/html-intl/intl/in/guide/components/services.jd
@@ -186,7 +186,7 @@
 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 
+sebagai anak
 elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>. Misalnya:</p>
 
 <pre>
@@ -539,7 +539,7 @@
 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 
+android.content.Context#stopService stopService()}, sistem akan menghapus layanan
 secepatnya.</p>
 
 <p>Akan tetapi, bila layanan Anda menangani beberapa permintaan ke {@link
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
index 279442f..4c344ae 100644
--- 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
@@ -29,7 +29,7 @@
 <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 
+  <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>
@@ -52,7 +52,7 @@
 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 
+<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>
 
@@ -93,7 +93,7 @@
 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 
+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="" />
@@ -148,7 +148,7 @@
 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 
+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>
@@ -347,7 +347,7 @@
 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 
+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>
 
@@ -387,13 +387,13 @@
     <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> 
+    <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> 
+    <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
@@ -427,8 +427,8 @@
 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> 
+<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>
@@ -444,7 +444,7 @@
   {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
 .
 
-<p>Aktivitas baru, secara default, diluncurkan ke dalam tugas aktivitas 
+<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()}
@@ -473,7 +473,7 @@
 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, 
+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>
@@ -497,7 +497,7 @@
 <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, 
+<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>
 
@@ -516,7 +516,7 @@
 <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"}, 
+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>
@@ -552,14 +552,14 @@
 {@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 
+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 
+<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 
+ 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>
 
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
index 6d6a3ad..050abf4 100644
--- a/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
@@ -23,7 +23,7 @@
   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 
+ informasi yang harus dimiliki sistem agar bisa menjalankan setiap kode
 aplikasi.</span> Di antaranya, manifes melakukan hal berikut ini:
 </p>
 
@@ -32,26 +32,26 @@
 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 
+ 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>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>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 
+<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 
+<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 
+<li>Mendeklarasikan tingkat minimum API Android yang diperlukan
 aplikasi.</li>
 
 <li>Mencantumkan daftar pustaka yang harus ditautkan aplikasi.</li>
@@ -61,12 +61,12 @@
 <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. 
+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>
@@ -126,9 +126,9 @@
 </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.  
+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">
@@ -158,74 +158,74 @@
 </p>
 
 
-    
+
 
 <h2 id="filec">Konvensi File</h2>
 
 <p>
-Sebagian konvensi dan aturan berlaku secara umum untuk semua elemen 
+Sebagian konvensi dan aturan berlaku secara umum untuk semua elemen
 dan atribut di manifes:
 </p>
 
 <dl>
 <dt><b>Elemen</b></dt>
-<dd>Hanya elemen 
+<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 
+<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.  
+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 
+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> 
+ 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 
+<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 
+<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 
+ 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>).  
+<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.  
+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>
 
@@ -239,12 +239,12 @@
 &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 
+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: 
+).  Penetapan berikut sama dengan di atas:
 </p>
 
 <pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -257,13 +257,13 @@
 &lt;/manifest&gt;</pre>
 
 <p>
-Saat memulai komponen, Android akan membuat instance subkelas yang diberi nama.  
+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.  
+<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;
@@ -275,23 +275,23 @@
 
 <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 
+, 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.  
+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 ?}' 
+Nilai tema diekspresikan dengan cara yang sama, namun dengan awal '{@code ?}'
 dan bukan '{@code @}':
 </p>
 
@@ -299,8 +299,8 @@
 </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 
+<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>
 
@@ -308,7 +308,7 @@
 <h2 id="filef">Fitur File</h2>
 
 <p>
-Bagian berikut menjelaskan cara menerapkan sebagian fitur Android 
+Bagian berikut menjelaskan cara menerapkan sebagian fitur Android
 dalam file manifest.
 </p>
 
@@ -316,37 +316,37 @@
 <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 
+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 
+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 
+.  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 
+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 
+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>
 
@@ -354,42 +354,42 @@
 <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 
+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 
+ 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 
+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 
+.  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 
+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>
 
@@ -397,14 +397,14 @@
 <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.  
+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 
+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>
 
@@ -418,25 +418,25 @@
 </p>
 
 <p>
-Jika aplikasi memerlukan akses ke fitur yang dilindungi oleh izin, 
-aplikasi harus mendeklarasikan bahwa aplikasi memerlukan izin itu dengan elemen 
+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. 
+ 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 
+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>
@@ -457,43 +457,43 @@
 </pre>
 
 <p>
-Perhatikan, dalam contoh ini izin {@code DEBIT_ACCT} tidak hanya 
-dideklarasikan dengan elemen 
+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 
+, 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.  
+.  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 
+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>. 
+.  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 
+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 
+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; 
+ 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> 
+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>
 
@@ -501,17 +501,17 @@
 <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, 
+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 
+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
index 76bc9915..3058815 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@
       <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>
 
@@ -63,8 +63,8 @@
 
 <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 
+terutama berfokus pada penggunaan API Penyedia Kalender sebagai sebuah aplikasi. Untuk
+pembahasan ragam adaptor sinkronisasi, lihat
 <a href="#sync-adapter">Adaptor Sinkronisasi</a>.</p>
 
 
@@ -89,7 +89,7 @@
 <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 
+ 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
@@ -113,26 +113,26 @@
   </tr>
   <tr>
     <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-    
-    <td>Tabel ini menyimpan 
+
+    <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} 
+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
@@ -141,7 +141,7 @@
   </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
@@ -149,17 +149,17 @@
   </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}, 
+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
@@ -178,9 +178,9 @@
 
 
 <li><strong>Adaptor sinkronisasi.</strong> Adaptor sinkronisasi menyinkronkan data kalender
-pada perangkat pengguna dengan server atau sumber data lain. Dalam tabel 
+pada perangkat pengguna dengan server atau sumber data lain. Dalam tabel
 {@link android.provider.CalendarContract.Calendars} dan
-{@link android.provider.CalendarContract.Events}, 
+{@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
@@ -211,7 +211,7 @@
 
 <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>. 
+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>
@@ -229,7 +229,7 @@
   </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
@@ -240,7 +240,7 @@
   </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
@@ -253,8 +253,8 @@
 <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 
+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>
 
@@ -268,18 +268,18 @@
     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 
+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
@@ -289,7 +289,7 @@
 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> 
+disinkronkan.</p> </div> </div>
 
 
 <p> Di bagian berikutnya pada contoh ini, Anda akan membuat query. Pemilihan
@@ -301,59 +301,59 @@
 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, 
+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 (" 
+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. 
+        "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 
+URI
 
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+({@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. 
+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()}) 
+nama tampilan kalender dengan pendekatan
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
 :</p>
 
 <pre>private static final String DEBUG_TAG = "MyActivity";
@@ -375,7 +375,7 @@
 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} 
+{@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>
@@ -434,7 +434,7 @@
   </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
@@ -444,39 +444,39 @@
   </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} 
+    <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 
+
+    <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>
@@ -514,11 +514,11 @@
 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
@@ -526,9 +526,9 @@
 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 
+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
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -578,14 +578,14 @@
 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> 
+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. 
+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 
+kejadian. Contoh ini mengubah judul kejadian dengan pendekatan
 {@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
 :</p>
 
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -625,22 +625,22 @@
 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);  
+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()} 
+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 
+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> 
+android.provider.BaseColumns#_ID} kejadian tertentu.</p>
 
 <p>Tabel berikut mencantumkan
-bidang-bidang yang bisa ditulis. Saat menyisipkan peserta baru, Anda harus menyertakan semuanya 
+bidang-bidang yang bisa ditulis. Saat menyisipkan peserta baru, Anda harus menyertakan semuanya
 kecuali <code>ATTENDEE_NAME</code>.
 </p>
 
@@ -698,7 +698,7 @@
 <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} 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
 diperlukan:</p>
 
 <pre>
@@ -718,17 +718,17 @@
 <h2 id="reminders">Tabel Pengingat</h2>
 
 <p>Tiap baris tabel {@link android.provider.CalendarContract.Reminders}
-mewakili satu pengingat untuk sebuah kejadian. Memanggil 
+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 
+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} 
+android.provider.CalendarContract.Calendars}. Lihat
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
 untuk detailnya.</p>
 
 
@@ -773,16 +773,16 @@
 
 <h2 id="instances">Tabel Instances</h2>
 
-<p>Tabel 
+<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 
+<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>
 
 
@@ -801,18 +801,18 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-    
+
     <td>Hari selesai Julian dari instance, relatif terhadap
-zona waktu Kalender. 
-    
+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>
@@ -820,16 +820,16 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>Hari mulai Julian dari instance, relatif terhadap zona waktu Kalender. 
+    <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. 
+zona waktu Kalender.
 </td>
-    
+
   </tr>
 
 </table>
@@ -840,7 +840,7 @@
 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. 
+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
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -922,9 +922,9 @@
     <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>. 
+    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>
@@ -935,11 +935,11 @@
 
      </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}. 
+
+    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>
 
@@ -952,12 +952,12 @@
   <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}. 
+
+  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>
 
@@ -972,11 +972,11 @@
     <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}. 
+
+   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>
@@ -996,7 +996,7 @@
     <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>
@@ -1004,25 +1004,25 @@
   <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>Bagian berikut menjelaskan cara menggunakan semua intent ini.</p>
 
 
@@ -1059,23 +1059,23 @@
 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} 
+  <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
@@ -1083,10 +1083,10 @@
 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();
@@ -1158,18 +1158,18 @@
 
 <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, 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 
+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>
@@ -1180,5 +1180,5 @@
         .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
  }
 </pre>
-<p>Untuk contoh implementasi adaptor sinkronisasi (yang tidak terkait secara khusus dengan Kalender), lihat 
+<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/content-provider-basics.jd b/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd
index c4003ca..4af9277 100644
--- 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
@@ -236,7 +236,7 @@
     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 
+    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>
@@ -251,7 +251,7 @@
 </pre>
 <p>
     Tabel 2 menampilkan cara argumen untuk
-    {@link android.content.ContentResolver#query 
+    {@link android.content.ContentResolver#query
     query(Uri,projection,selection,selectionArgs,sortOrder)} cocok dengan sebuah pernyataan SELECT di SQL:
 </p>
 <p class="table-caption">
@@ -310,7 +310,7 @@
     {@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. 
+    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>
@@ -343,8 +343,8 @@
     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. 
+    <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.
@@ -359,8 +359,8 @@
 </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 
+    {@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
@@ -428,7 +428,7 @@
 <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 
+    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>
@@ -438,8 +438,8 @@
 <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 
+    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>
@@ -558,21 +558,21 @@
 selectionArgs[0] = mUserInput;
 </pre>
 <p>
-    Sebuah klausa pemilihan yang menggunakan <code>?</code> sebagai parameter yang bisa diganti dan sebuah larik 
+    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 
+    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 
+    {@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 
+    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">
@@ -703,14 +703,14 @@
 <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, 
+    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> 
+<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>
@@ -793,8 +793,8 @@
     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 
+    {@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>
@@ -828,7 +828,7 @@
 </pre>
 <p>
     Anda juga harus membersihkan input pengguna bila memanggil
-    {@link android.content.ContentResolver#update ContentResolver.update()}. Untuk mengetahui selengkapnya tentang 
+    {@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>
@@ -858,7 +858,7 @@
 </pre>
 <p>
     Anda juga harus membersihkan input pengguna bila memanggil
-    {@link android.content.ContentResolver#delete ContentResolver.delete()}. Untuk mengetahui selengkapnya tentang 
+    {@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 -->
@@ -883,7 +883,7 @@
     </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" 
+    larik byte 64 KB. Anda bisa melihat tipe data yang tersedia dengan memperhatikan metode "get"
     kelas {@link android.database.Cursor}.
 </p>
 <p>
@@ -905,7 +905,7 @@
     {@link android.content.ContentResolver#getType ContentResolver.getType()}.
 </p>
 <p>
-    Bagian <a href="#MIMETypeReference">Acuan Tipe MIME</a> menerangkan 
+    Bagian <a href="#MIMETypeReference">Acuan Tipe MIME</a> menerangkan
     sintaks tipe MIME baik yang standar maupun custom.
 </p>
 
@@ -946,9 +946,9 @@
     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 
+    {@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>
@@ -1011,7 +1011,7 @@
 <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 
+    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>
@@ -1184,7 +1184,7 @@
 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 
+    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
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
index fefce70..7fbc613 100644
--- 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
@@ -1171,7 +1171,7 @@
             <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 
+                datanya, atau keduanya. Label ini muncul dalam daftar aplikasi di
                 <em>Settings</em> &gt; <em>Apps</em> &gt; <em>All</em>.
             </li>
         </ul>
@@ -1189,7 +1189,7 @@
     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 
+    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
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
index fc6f12b..2dcd55e 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
@@ -69,7 +69,7 @@
 <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 
+ 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.
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
index c066e85..f857467 100644
--- a/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
@@ -96,7 +96,7 @@
 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 
+<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>
@@ -446,7 +446,7 @@
 
 <h3 id="delete">Menghapus dokumen</h3>
 
-<p>Jika Anda memiliki URI dokumen dan 
+<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},
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
index e4a0bea..6774557 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
@@ -60,7 +60,7 @@
 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 
+tidak termasuk ekstensi; atau nilai dalam atribut {@code android:name} XML, jika
 sumber daya itu sebuah nilai sederhana (misalnya sebuah string).</li>
 </ul>
 
@@ -259,8 +259,8 @@
     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. 
+<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,
@@ -332,6 +332,6 @@
 
 <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 
+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
index 966800c..def4932 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/overview.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/overview.jd
@@ -24,7 +24,7 @@
 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 
+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>
 
@@ -46,7 +46,7 @@
 <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 
+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,
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
index d6bbfc5..9bccd24 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
@@ -176,7 +176,7 @@
         <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="style-resource.html">Sumber Daya Gaya</a>, dan
         <a href="more-resources.html">Tipe Sumber Daya Lainnya</a>.</p>
     </td>
   </tr>
@@ -289,7 +289,7 @@
  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 
+        <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
@@ -312,7 +312,7 @@
         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 
+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>
@@ -428,8 +428,8 @@
         <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 
+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>
@@ -455,14 +455,14 @@
 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 
+ 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 
+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}
@@ -482,35 +482,35 @@
       </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 
+        <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 
+        <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 
+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 
+        <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 
+        <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 
+        <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 
+        <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},
@@ -552,7 +552,7 @@
         <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}, 
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#orientation},
 yang menunjukkan orientasi perangkat saat ini.</p>
       </td>
     </tr>
@@ -569,19 +569,19 @@
         <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 
+          <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 
+terutama diorientasikan seputar DPAD atau
 interaksi non-pointer lainnya</li>
-          <li>{@code appliance}: Perangkat berlaku sebagai 
+          <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 
+        <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 
+        <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>
@@ -601,7 +601,7 @@
         <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 
+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>
@@ -627,8 +627,8 @@
 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> 
+          <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
@@ -696,7 +696,7 @@
 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 
+android.content.res.Configuration#keyboardHidden}, yang menunjukkan visibilitas
 keyboard fisik dan visibilitas segala jenis keyboard (termasuk keyboard perangkat lunak), masing-masing.</p>
       </td>
     </tr>
@@ -716,7 +716,7 @@
           <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}, 
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#keyboard},
 yang menunjukkan metode utama input teks yang tersedia.</p>
       </td>
     </tr>
@@ -810,7 +810,7 @@
     <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>. 
+    <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>
@@ -947,7 +947,7 @@
 {@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 
+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
@@ -1058,7 +1058,7 @@
   </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. 
+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>
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
index c9a5ead..09ad60c 100644
--- a/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
@@ -82,12 +82,12 @@
 <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 
+  <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 
+  <li>Gunakan {@link android.app.FragmentManager} untuk mengambil fragmen saat aktivitas
 di-restart.</li>
 </ol>
 
@@ -125,8 +125,8 @@
 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 
+<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>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/controls.jd b/docs/html-intl/intl/in/guide/topics/ui/controls.jd
index 7ee2957..3ebf48b 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <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} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 83ff746..1c8a0d6 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
@@ -74,7 +74,7 @@
 <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 
+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>
@@ -107,7 +107,7 @@
 
 <h2 id="load">Muat Sumber Daya XML</h2>
 
-<p>Saat mengompilasi aplikasi, masing-masing file layout XML akan dikompilasi dalam sebuah sumber daya 
+<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>,
@@ -367,8 +367,8 @@
 
 <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. 
+<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}
@@ -445,7 +445,7 @@
 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 
+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,
diff --git a/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
index 65714a9..06a25ac 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -89,7 +89,7 @@
 
 <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 
+. 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>
@@ -235,8 +235,8 @@
 </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 
+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>
@@ -247,8 +247,8 @@
   <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> 
+  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
@@ -271,7 +271,7 @@
 <li>Daftar pilihan ganda persisten (kotak cek)</li>
 </ul>
 
-<p>Untuk membuat daftar pilihan tunggal seperti dalam gambar 3, 
+<p>Untuk membuat daftar pilihan tunggal seperti dalam gambar 3,
 gunakan metode {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
 
 <pre style="clear:right">
@@ -291,7 +291,7 @@
 
 <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()}. 
+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
@@ -300,7 +300,7 @@
 
 <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 
+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>
@@ -317,11 +317,11 @@
 
 <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 
+<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) 
+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
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -373,7 +373,7 @@
 
 <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) 
+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>
@@ -442,7 +442,7 @@
 gaya font yang cocok.</p>
 
 <p>Untuk memekarkan layout dalam {@link android.support.v4.app.DialogFragment} Anda,
-ambillah {@link android.view.LayoutInflater} dengan 
+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.
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -638,12 +638,12 @@
 
 <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} 
+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 
+<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>
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
@@ -776,7 +776,7 @@
 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 
+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>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/menus.jd b/docs/html-intl/intl/in/guide/topics/ui/menus.jd
index 2cd3e6a..1ee0244 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/menus.jd
@@ -60,7 +60,7 @@
 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 
+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>
 
@@ -83,9 +83,9 @@
 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.
@@ -94,7 +94,7 @@
 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
@@ -128,14 +128,14 @@
 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 
+    <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
@@ -253,7 +253,7 @@
 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 
+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>
@@ -273,7 +273,7 @@
 
 <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, 
+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>
 
@@ -285,7 +285,7 @@
 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 
+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>
 
@@ -317,7 +317,7 @@
 {@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 
+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>
@@ -346,7 +346,7 @@
 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 
+<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,
@@ -363,7 +363,7 @@
 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> 
+<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
@@ -419,7 +419,7 @@
 </li>
 
   <li>Implementasikan metode {@link
-android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 
+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()}
@@ -445,7 +445,7 @@
 
 <li>Implementasikan {@link android.app.Activity#onContextItemSelected(MenuItem)
 onContextItemSelected()}.
-  <p>Bila pengguna memilih item menu, sistem akan memanggil metode ini sehingga Anda bisa melakukan 
+  <p>Bila pengguna memilih item menu, sistem akan memanggil metode ini sehingga Anda bisa melakukan
 tindakan yang sesuai. Misalnya:</p>
 
 <pre>
@@ -609,7 +609,7 @@
 
 <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, 
+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>
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -1010,7 +1010,7 @@
 <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 
+<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>
@@ -1026,6 +1026,6 @@
 <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 
+<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
index 9033b9f..bb48b80 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
@@ -147,7 +147,7 @@
 </p>
 <p>
     Dalam {@link android.app.Notification}, tindakan itu sendiri didefinisikan oleh
-    {@link android.app.PendingIntent} berisi 
+    {@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
@@ -174,12 +174,12 @@
     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, 
+    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 
+    dan mengelola prioritas pemberitahuan dengan benar" dalam panduan
 Desain <a href="{@docRoot}design/patterns/notifications.html">Pemberitahuan</a>.
 </p>
 <!-- ------------------------------------------------------------------------------------------ -->
@@ -310,7 +310,7 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <h2 id="Managing">Mengelola Pemberitahuan</h2>
 <p>
-    Bila perlu mengeluarkan pemberitahuan beberapa kali untuk tipe kejadian yang sama, 
+    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>
@@ -506,7 +506,7 @@
                 TaskStackBuilder.create()}.
             </li>
             <li>
-                Tambahkan back-stack ke stack-builder dengan memanggil 
+                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
@@ -933,7 +933,7 @@
     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 
+    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()},
diff --git a/docs/html-intl/intl/in/guide/topics/ui/overview.jd b/docs/html-intl/intl/in/guide/topics/ui/overview.jd
index a0b2b06..ca8b420 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <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
diff --git a/docs/html-intl/intl/in/guide/topics/ui/settings.jd b/docs/html-intl/intl/in/guide/topics/ui/settings.jd
index 5ac61f9..89be52f 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@
 
 <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} 
+aplikasi Messaging Android. Memilih item yang didefinisikan oleh {@link android.preference.Preference}
 akan membuka antarmuka untuk mengubah pengaturan.</p>
 
 
@@ -163,7 +163,7 @@
 java.lang.String}.</dd>
 </dl>
 
-<p>Lihat kelas {@link android.preference.Preference} untuk mengetahui daftar subkelas lain dan 
+<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
@@ -226,7 +226,7 @@
   <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}. 
+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
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -370,12 +370,12 @@
 
 <dl>
   <dt>{@code android:action}</dt>
-    <dd>Tindakan yang akan ditetapkan, sesuai metode 
+    <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 
+    <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
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@
 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> 
+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 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -879,7 +879,7 @@
 });
 </pre>
 
-<p>Sebagai gantinya, simpan referensi ke listener dalam bidang data instance 
+<p>Sebagai gantinya, simpan referensi ke listener dalam bidang data instance
 objek yang akan ada selama listener dibutuhkan:</p>
 
 <pre>
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index 5068176..0307b34 100644
--- a/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
@@ -26,11 +26,11 @@
 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, 
+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 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>
@@ -46,28 +46,28 @@
 
 <dl>
   <dt><code>onClick()</code></dt>
-    <dd>Dari {@link android.view.View.OnClickListener}. 
+    <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), 
+    <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}. 
+    <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}. 
+    <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}. 
+    <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 
+    <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>
@@ -75,8 +75,8 @@
 <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> 
+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>
@@ -121,20 +121,20 @@
 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; 
+  <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> - 
+  <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; 
+    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 
+  <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>
@@ -142,12 +142,12 @@
 <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 
+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 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
@@ -157,14 +157,14 @@
 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 
+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 
+<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,
@@ -176,19 +176,19 @@
   <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, 
+<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 
+    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 
+    pada View induk untuk menunjukan larangan mencegat kejadian sentuh dengan <code>{@link
     android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
 </ul>
 
@@ -199,11 +199,11 @@
 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". 
+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 
+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.
@@ -214,7 +214,7 @@
 dengan antarmuka pengguna tanpa menyentuh layar.
 </p>
 <p>
-Status mode sentuh dipertahankan di seluruh sistem (semua jendela dan aktivitas). 
+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>
@@ -257,7 +257,7 @@
 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), 
+<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>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/in/preview/api-overview.jd b/docs/html-intl/intl/in/preview/api-overview.jd
index b0a0317..b652dd9 100644
--- a/docs/html-intl/intl/in/preview/api-overview.jd
+++ b/docs/html-intl/intl/in/preview/api-overview.jd
@@ -815,7 +815,7 @@
 sederhana yang memperinci dengan jelas direktori apa yang aksesnya diminta
 oleh aplikasi.</p>
 
-<p>Untuk informasi selengkapnya, lihat dokumentasi pengembang 
+<p>Untuk informasi selengkapnya, lihat dokumentasi pengembang
 <a href="{@docRoot}preview/features/scoped-folder-access.html">Scoped
 Directory Access</a>.</p>
 
diff --git a/docs/html-intl/intl/in/preview/behavior-changes.jd b/docs/html-intl/intl/in/preview/behavior-changes.jd
index 6e6ebae9..521312e 100644
--- a/docs/html-intl/intl/in/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/in/preview/behavior-changes.jd
@@ -45,7 +45,7 @@
 
 <p>
   Bersama fitur dan kemampuan baru, Android N
-  menyertakan berbagai macam perubahan sistem dan perubahan perilaku API. Dokumen ini 
+  menyertakan berbagai macam perubahan sistem dan perubahan perilaku API. Dokumen ini
   menyoroti beberapa perubahan utama yang harus dipahami dan diperhitungkan
   dalam aplikasi Anda.
 </p>
@@ -482,7 +482,7 @@
   </li>
 
   <li>Pemilik perangkat bisa mengelola pengguna tambahan lebih mudah. Bila perangkat
-  berjalan dalam mode pemilik perangkat, maka pembatasan <code>DISALLOW_ADD_USER</code> 
+  berjalan dalam mode pemilik perangkat, maka pembatasan <code>DISALLOW_ADD_USER</code>
   secara otomatis akan ditetapkan. Ini mencegah pengguna membuat pengguna tambahan yang
   tidak terkelola. Selain itu, <code>CreateUser()</code> dan
   <code>createAndInitializeUser()</code> metode tidak digunakan lagi; metode
diff --git a/docs/html-intl/intl/in/preview/download-ota.jd b/docs/html-intl/intl/in/preview/download-ota.jd
index 1efe9b7..4adf9bb 100644
--- a/docs/html-intl/intl/in/preview/download-ota.jd
+++ b/docs/html-intl/intl/in/preview/download-ota.jd
@@ -202,65 +202,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
-      MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
-      SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
-      MD5: e8b12f7721c53af9a450f7058928a5fc<br>
-      SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
-      MD5: 3fac09fef759dde26e57cb80b20b6477<br>
-      SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
-      MD5: 58312c4a5971818ef5c77a3f446003da<br>
-      SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
-      MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
-      SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
-      MD5: 1461622ad53ea842b2722fa7b49b8172<br>
-      SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
-      MD5: c60117f3640cc6db12386fd632289c7d<br>
-      SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
-      MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
-      SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/in/preview/download.jd b/docs/html-intl/intl/in/preview/download.jd
index a759a11..e6714bb 100644
--- a/docs/html-intl/intl/in/preview/download.jd
+++ b/docs/html-intl/intl/in/preview/download.jd
@@ -300,72 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
-      MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
-      SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
-      MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
-      SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
-      MD5: e93de7949433339856124c3729c15ebb<br>
-      SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
-      MD5: 565be87ebb2d5937e2abe1a42645864b<br>
-      SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
-      MD5: a8464e15c6683fe2afa378a63e205fda<br>
-      SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
-      MD5: c0dbb7db671f61b2785da5001cedefcb<br>
-      SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
-      MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
-      SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
-      MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
-      SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> (D6603 dan D6653)</td>
-    <td>Unduh: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      Untuk informasi selengkapnya, lihat<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Coba Android N Developer Preview untuk Xperia Z3</a>.
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
@@ -458,7 +459,7 @@
     <strong>x86</strong> ABI), kemudian klik <strong>Next</strong>.
     (Hanya citra sistem x86 yang saat ini didukung dengan Android Emulator
 untuk Android N Preview.)
-  <li>Selesaikan konfigurasi AVD selanjutnya dan klik 
+  <li>Selesaikan konfigurasi AVD selanjutnya dan klik
     <strong>Finish</strong>.</li>
 </ol>
 
diff --git a/docs/html-intl/intl/in/preview/features/background-optimization.jd b/docs/html-intl/intl/in/preview/features/background-optimization.jd
index 5712ab6..c6bf175 100644
--- a/docs/html-intl/intl/in/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/in/preview/features/background-optimization.jd
@@ -297,7 +297,7 @@
   <dd>
     Mengembalikan larik URL yang telah memicu pekerjaan. Ini akan berupa {@code
     null} jika tidak ada URI yang memicu pekerjaan (misalnya, pekerjaan
-    dipicu karena batas waktu atau alasan lainnya), atau jumlah 
+    dipicu karena batas waktu atau alasan lainnya), atau jumlah
     URI yang berubah lebih dari 50.
   </dd>
 
diff --git a/docs/html-intl/intl/in/preview/features/data-saver.jd b/docs/html-intl/intl/in/preview/features/data-saver.jd
index f64609b..6cd64d2 100644
--- a/docs/html-intl/intl/in/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/in/preview/features/data-saver.jd
@@ -50,7 +50,7 @@
 <p>
   N Developer Preview memperluas {@link android.net.ConnectivityManager}
   API untuk menyediakan cara pada aplikasi untuk <a href="#status">menerima preferensi Data Saver
-  pengguna</a> dan <a href="#monitor-changes">memantau perubahan 
+  pengguna</a> dan <a href="#monitor-changes">memantau perubahan
   preferensi</a>. Hal ini dianggap praktik terbaik bagi aplikasi untuk memeriksa apakah
   pengguna telah mengaktifkan DataSaver dan berusaha membatasi penggunaan data latar depan dan
   data latar belakang.
diff --git a/docs/html-intl/intl/in/preview/features/multi-window.jd b/docs/html-intl/intl/in/preview/features/multi-window.jd
index 33399e9..3f75def 100644
--- a/docs/html-intl/intl/in/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/in/preview/features/multi-window.jd
@@ -325,7 +325,7 @@
     <p class="note">
       <strong>Catatan:</strong> Mode gambar-dalam-gambar adalah kasus khusus pada
       mode multi-jendela. Jika <code>myActivity.isInPictureInPictureMode()</code>
-     mengembalikan nilai true, maka <code>myActivity.isInMultiWindowMode()</code> juga 
+     mengembalikan nilai true, maka <code>myActivity.isInMultiWindowMode()</code> juga
       mengembalikan nilai true.
     </p>
   </dd>
diff --git a/docs/html-intl/intl/in/preview/features/security-config.jd b/docs/html-intl/intl/in/preview/features/security-config.jd
index 53f5576..7a0303e 100644
--- a/docs/html-intl/intl/in/preview/features/security-config.jd
+++ b/docs/html-intl/intl/in/preview/features/security-config.jd
@@ -739,7 +739,7 @@
       </dt>
 
       <dd>
-        Algoritme intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya 
+        Algoritme intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya
         {@code "SHA-256"} yang didukung.
       </dd>
     </dl>
diff --git a/docs/html-intl/intl/in/preview/j8-jack.jd b/docs/html-intl/intl/in/preview/j8-jack.jd
index bbb16703..4389184 100644
--- a/docs/html-intl/intl/in/preview/j8-jack.jd
+++ b/docs/html-intl/intl/in/preview/j8-jack.jd
@@ -126,7 +126,7 @@
 </h2>
 
 <p>
-  Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan 
+  Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan
   <a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a> yang baru.  Toolchain Android
  yang baru ini mengompilasi sumber bahasa Java menjadi dex
   bytecode yang bisa dibaca Android, memiliki format  pustaka {@code .jack} sendiri, dan menyediakan sebagian besar fitur toolchain
diff --git a/docs/html-intl/intl/in/preview/overview.jd b/docs/html-intl/intl/in/preview/overview.jd
index c1fc0b5..c38a579 100644
--- a/docs/html-intl/intl/in/preview/overview.jd
+++ b/docs/html-intl/intl/in/preview/overview.jd
@@ -167,7 +167,7 @@
 <p>
   <strong>Tiga tahapan pencapaian pratinjau pertama</strong> memberikan <strong>ujian
   pertama dan lingkungan pengembangan</strong> yang membantu Anda mengidentifikasi
-  masalah kompatibilitas dalam aplikasi Anda saat ini dan merencanakan migrasi atau menampilkan pekerjaan 
+  masalah kompatibilitas dalam aplikasi Anda saat ini dan merencanakan migrasi atau menampilkan pekerjaan
   yang diperlukan untuk menargetkan platform baru. Ini adalah periode prioritas yang akan
   memberi kami masukan dari Anda tentang fitur dan API serta masalah kompatibilitas file
   &mdash; untuk semua ini, gunakan <a href="{@docRoot}preview/bug">Issue
@@ -314,8 +314,8 @@
 </p>
 
 <ul>
-  <li> <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk 
-Android N</a> memiliki 
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk
+Android N</a> memiliki
  petunjuk langkah demi langkah untuk memulai.</li>
   <li> <a href="{@docRoot}preview/behavior-changes.html">Perubahan
   Perilaku</a> akan menunjukkan kepada Anda bidang-bidang utama untuk diuji.</li>
diff --git a/docs/html-intl/intl/in/preview/setup-sdk.jd b/docs/html-intl/intl/in/preview/setup-sdk.jd
index 9999705..c03f388 100644
--- a/docs/html-intl/intl/in/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/in/preview/setup-sdk.jd
@@ -92,7 +92,7 @@
     <a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
     <td width="100%">
       MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7 
+      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
     </td>
   </tr>
 <table>
diff --git a/docs/html-intl/intl/in/preview/support.jd b/docs/html-intl/intl/in/preview/support.jd
index 5571b11..885e7c7 100644
--- a/docs/html-intl/intl/in/preview/support.jd
+++ b/docs/html-intl/intl/in/preview/support.jd
@@ -457,7 +457,7 @@
   versi aplikasi multi-APK yang didesain untuk mendukung Vulkan yang lebih rendah pada
   perangkat dengan dukungan versi yang lebih tinggi. Saat ini, Google Play Store tidak
   menerima unggahan aplikasi yang menggunakan penargetan versi Vulkan. Dukungan ini
-  akan ditambahkan pada Google Play Store di masa mendatang dan diperbaiki dalam 
+  akan ditambahkan pada Google Play Store di masa mendatang dan diperbaiki dalam
   Google Play Services versi berikutnya (akan disertakan dalam rilis Developer Preview
   mendatang). Perangkat N yang menggunakan Google Play Services 9.0.83 akan
   tetap menerima versi Aplikasi yang menargetkan dukungan Vulkan dasar.
diff --git a/docs/html-intl/intl/in/training/material/drawables.jd b/docs/html-intl/intl/in/training/material/drawables.jd
index 56fd17f..493abd4 100644
--- a/docs/html-intl/intl/in/training/material/drawables.jd
+++ b/docs/html-intl/intl/in/training/material/drawables.jd
@@ -66,7 +66,7 @@
 <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 
+<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>
 
diff --git a/docs/html-intl/intl/in/training/material/lists-cards.jd b/docs/html-intl/intl/in/training/material/lists-cards.jd
index 358f1d1..46dd19af 100644
--- a/docs/html-intl/intl/in/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/in/training/material/lists-cards.jd
@@ -83,7 +83,7 @@
 <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 
+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>
@@ -253,7 +253,7 @@
 
 <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 
+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>
 
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/about.jd b/docs/html-intl/intl/ja/distribute/googleplay/about.jd
index 56eaf2c..6a58cf6 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@
 
 @jd:body
 
-<div id="qv-wrapper">           
+<div id="qv-wrapper">
   <div id="qv">
   <h2>Google Play について</h2>
     <ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/auto.jd b/docs/html-intl/intl/ja/distribute/googleplay/auto.jd
index 0cbf8b1..bc5a01f 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/auto.jd
@@ -160,4 +160,4 @@
     data-query="collection:autolanding"
     data-cardSizes="9x6, 6x3x2"
     data-maxResults="6">
-  </div> 
\ No newline at end of file
+  </div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd
index 8dd562d..29e4145 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/developer-console.jd
@@ -5,7 +5,7 @@
 
 @jd:body
 
-<div id="qv-wrapper">           
+<div id="qv-wrapper">
   <div id="qv">
     <h2>公開機能</h2>
     <ol>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd b/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd
index 53258de..54c4f34 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/families/about.jd
@@ -36,4 +36,4 @@
 
 <div class="paging-links" style="padding-top:.75em;">
   <a href="{@docRoot}distribute/googleplay/families/start.html" class="next-class-link">次のトピック:オプトイン</a>
-</div> 
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd
index 206429c..da877f9 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>本書の内容</h2>
@@ -106,7 +106,7 @@
   </dt>
 
   <dd>
-    Designed for Families プログラムにオプトインすると、Google Play はアプリを審査し、ファミリー層に適切かどうか確認します。アプリがすべてのプログラム要件に準拠している場合、公開までの時間は通常よりも長くかかることはないはずです。ただし、Designed for Families 審査で却下された場合、アプリの公開が遅れる可能性があります。 
+    Designed for Families プログラムにオプトインすると、Google Play はアプリを審査し、ファミリー層に適切かどうか確認します。アプリがすべてのプログラム要件に準拠している場合、公開までの時間は通常よりも長くかかることはないはずです。ただし、Designed for Families 審査で却下された場合、アプリの公開が遅れる可能性があります。
   </dd>
 
   <dt>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd b/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd
index e8e9ee5..023e2c1 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/families/start.jd
@@ -51,7 +51,7 @@
 </p>
 
 <p class="note">
-  <strong>注:</strong> Designed for Families プログラムで公開されたアプリは Google Play ですべてのユーザーも利用できます。 
+  <strong>注:</strong> Designed for Families プログラムで公開されたアプリは Google Play ですべてのユーザーも利用できます。
 </p>
 
 <p>
@@ -67,4 +67,4 @@
 
 <div class="paging-links" style="padding-top:.75em;">
   <a href="{@docRoot}distribute/googleplay/families/faq.html" class="next-class-link">次のトピック:よくある質問</a>
-</div> 
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/guide.jd b/docs/html-intl/intl/ja/distribute/googleplay/guide.jd
index 137c63f..1655017 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/guide.jd
@@ -54,4 +54,4 @@
     data-query="collection:play_dev_guide"
     data-cardSizes="9x6"
     data-maxResults="1">
-  </div> 
\ No newline at end of file
+  </div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd
index eda7297..2870153 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/auto.jd
@@ -431,4 +431,4 @@
 
 <p class="caution">
   <strong>重要: </strong>この制限のため、Auto サポートのプロトタイプの作成に、実働 APK を使用してはなりません。
-</p> 
\ No newline at end of file
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd
index 5229aa7..ddf4115 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/core.jd
@@ -13,7 +13,7 @@
         <li><a href="#listing">Google Play</a></li>
 
   </ol>
-  
+
   <h2>テスト</h2>
   <ol>
     <li><a href="#test-environment">テスト環境の設定</a></li>
@@ -25,7 +25,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">タブレットのアプリ品質</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">アプリを最適化する</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -70,7 +70,7 @@
     <th style="width:54px;">
       ID
     </th>
-    
+
 
     <th>
       説明
@@ -1011,4 +1011,4 @@
 
 <p>
   {@link android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen() penaltyFlashScreen()}  を使用して<code>ThreadPolicy</code> に対するポリシー違反の<strong>視覚通知</strong>を有効にします。
-</p> 
\ No newline at end of file
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd
index f0cc133..dbdabc2 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/tablets.jd
@@ -46,7 +46,7 @@
 
 <div class="headerLine"><h2 id="core-app-quality">1.タブレット アプリの基本的な品質テスト</h2></div>
 
-<p>タブレット アプリの優れたエクスペリエンスを提供する最初のステップは、アプリがターゲットとしているすべてのデバイスとフォーム ファクタに対して、<em>アプリの中核品質基準</em>に適合していることを確認することです。詳細については、<a href="{@docRoot}distribute/essentials/quality/core.html">アプリの中核品質に関するガイドライン</a>を参照してください。 
+<p>タブレット アプリの優れたエクスペリエンスを提供する最初のステップは、アプリがターゲットとしているすべてのデバイスとフォーム ファクタに対して、<em>アプリの中核品質基準</em>に適合していることを確認することです。詳細については、<a href="{@docRoot}distribute/essentials/quality/core.html">アプリの中核品質に関するガイドライン</a>を参照してください。
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd
index 9fa4439..1d92d8c 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/quality/wear.jd
@@ -395,4 +395,4 @@
 </p>
 <p>
   はい。上記の要件は、アプリが Google Play で Android Wear アプリとして識別され、Android Wear ユーザーが発見しやすくなるかどうかのみを判断するものです。アプリが Wear アプリとして承認されなくても、電話やタブレットなどの他のデバイス タイプで利用可能です。ウェアラブル端末へのインストールも可能です。
-</p> 
\ No newline at end of file
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/start.jd b/docs/html-intl/intl/ja/distribute/googleplay/start.jd
index 3c5e548..93aee136 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/start.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/start.jd
@@ -134,4 +134,4 @@
   data-query="collection:distribute/googleplay/gettingstarted"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
-  data-maxResults="6"></div> 
\ No newline at end of file
+  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/tv.jd b/docs/html-intl/intl/ja/distribute/googleplay/tv.jd
index 1a7558d..9532bf4 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/tv.jd
@@ -173,7 +173,7 @@
 <h3 id="track_review">5.審査と承認をトラッキングする</h3>
 
 <p>
-  アプリが上述の Android TV 向けの技術上の基準と品質基準に適合すると、ユーザーはそのアプリを Android TV で活用できるようになります。アプリが基準を満たしていない場合、<strong>デベロッパー アカウント アドレスに送られた通知メール</strong>を受け取ります。このメールには対処が必要な領域の要約が記載されています。必要な調整を行ったら、デベロッパー コンソールにアプリの新規バージョンをアップロードできます。 
+  アプリが上述の Android TV 向けの技術上の基準と品質基準に適合すると、ユーザーはそのアプリを Android TV で活用できるようになります。アプリが基準を満たしていない場合、<strong>デベロッパー アカウント アドレスに送られた通知メール</strong>を受け取ります。このメールには対処が必要な領域の要約が記載されています。必要な調整を行ったら、デベロッパー コンソールにアプリの新規バージョンをアップロードできます。
 </p>
 
 <p>
@@ -190,7 +190,7 @@
   </li>
 
   <li>
-    <em>承認</em> — アプリが審査され、承認されました。アプリは Android TV ユーザーが直接利用できるようになります。 
+    <em>承認</em> — アプリが審査され、承認されました。アプリは Android TV ユーザーが直接利用できるようになります。
   </li>
 
   <li>
@@ -207,4 +207,4 @@
     data-query="collection:tvlanding"
     data-cardSizes="9x6, 6x3x2"
     data-maxResults="6">
-  </div> 
+  </div>
diff --git a/docs/html-intl/intl/ja/distribute/googleplay/wear.jd b/docs/html-intl/intl/ja/distribute/googleplay/wear.jd
index 4e0196e..85cffca 100644
--- a/docs/html-intl/intl/ja/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/ja/distribute/googleplay/wear.jd
@@ -196,4 +196,4 @@
     data-query="collection:wearlanding"
     data-cardSizes="6x2"
     data-maxResults="3">
-  </div> 
\ No newline at end of file
+  </div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd
index b1394f8..a6f1a7f 100644
--- a/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/ja/distribute/tools/launch-checklist.jd
@@ -789,4 +789,4 @@
   data-query="collection:distribute/toolsreference/launchchecklist/afterlaunch"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3,9x3,9x3,9x3,9x3,9x3"
-  data-maxResults="6"></div> 
\ No newline at end of file
+  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd
index b2c797b..5bb9fe0 100644
--- a/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/ja/distribute/tools/localization-checklist.jd
@@ -2,7 +2,7 @@
 page.metaDescription=Android と Google Play から提供される世界中のユーザーを活用します。このチェックリストを読んで、お客様の製品を世界中のマーケットに提供する方法の概要を把握してください。
 meta.tags="localizing, publishing, disttools"
 page.tags="local, l10n, translation, language"
-page.image=/distribute/images/localization-checklist.jpg 
+page.image=/distribute/images/localization-checklist.jpg
 
 @jd:body
 
@@ -713,4 +713,4 @@
   data-query="collection:distribute/toolsreference/localizationchecklist/supportlaunch"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3,9x3,6x3,9x3,9x3,9x3"
-  data-maxResults="6"></div> 
\ No newline at end of file
+  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/google/play/filters.jd b/docs/html-intl/intl/ja/google/play/filters.jd
index 5ab6336..eed069f 100644
--- a/docs/html-intl/intl/ja/google/play/filters.jd
+++ b/docs/html-intl/intl/ja/google/play/filters.jd
@@ -263,4 +263,4 @@
 
 <p class="caution"><strong>警告:</strong> 同じアプリに複数の APK を公開することは拡張機能とみなされます。<strong>大部分のアプリは、広範囲のデバイス設定をサポートする APK を 1 つだけ公開すべきです</strong>。複数の APK を公開する場合、フィルタ固有のルールに従う必要があります。また、設定ごとに適切なアップデート パスを確保するため、各 APK のバージョン コードに特別な注意を払う必要があります。</p>
 
-<p>Google Play で複数の APK を公開する方法について詳しくは、<a href="{@docRoot}google/play/publishing/multiple-apks.html">複数の APK サポート（Multiple APK Support）</a>をご覧ください。</p> 
\ No newline at end of file
+<p>Google Play で複数の APK を公開する方法について詳しくは、<a href="{@docRoot}google/play/publishing/multiple-apks.html">複数の APK サポート（Multiple APK Support）</a>をご覧ください。</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/guide/components/activities.jd b/docs/html-intl/intl/ja/guide/components/activities.jd
index 9b06d2c..227f7f4 100644
--- a/docs/html-intl/intl/ja/guide/components/activities.jd
+++ b/docs/html-intl/intl/ja/guide/components/activities.jd
@@ -53,7 +53,7 @@
 <p> 通常、アプリケーションは複数のアクティビティで構成されており、各アプリケーションはそれぞれ緩やかにつながっています。
 一般的には、アプリケーションの 1 つのアクティビティが「メイン」アクティビティとして指定され、ユーザーが初めてアプリケーションを起動したときに表示されるのがこのアクティビティになります。
 その後、各アクティビティで別のアクティビティを開始して別の操作を実行できます。
-新しいアクティビティの開始時には、前のアクティビティは停止しますが、そのアクティビティはシステムによってスタック（「バックスタック」）に維持されます 
+新しいアクティビティの開始時には、前のアクティビティは停止しますが、そのアクティビティはシステムによってスタック（「バックスタック」）に維持されます
 
 新しいアクティビティが開始すると、それがバックスタックに入ってユーザーに表示されます。
 バックスタックは「後入れ先出し」の基本的なスタック メカニズムを順守するため、ユーザーが現在のアクティビティを完了して [<em>戻る</em>] ボタンを押すと、そのアクティビティはスタックから消え（破棄され）、前のアクティビティが再開します。
diff --git a/docs/html-intl/intl/ja/guide/components/fragments.jd b/docs/html-intl/intl/ja/guide/components/fragments.jd
index 31fb7f5..7f90963 100644
--- a/docs/html-intl/intl/ja/guide/components/fragments.jd
+++ b/docs/html-intl/intl/ja/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -332,7 +332,7 @@
 fragmentTransaction.commit();
 </pre>
 
-  <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()} に渡される最初の引数はフラグメントを配置する {@link android.view.ViewGroup} でリソース ID で指定されており、2 つ目のパラメータは追加するフラグメントです。 
+  <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} を呼び出して変更を適用する必要があります。
@@ -378,7 +378,7 @@
   <li>{@link
 android.app.FragmentManager#findFragmentById findFragmentById()}（アクティビティ レイアウトで UI を提供するフラグメントの場合）や {@link android.app.FragmentManager#findFragmentByTag
 findFragmentByTag()}（UI を提供しないフラグメントの場合）を使用して、アクティビティにあるフラグメントを取得する。
-</li> 
+</li>
   <li>{@link
 android.app.FragmentManager#popBackStack()} を使用してフラグメントをバックスタックから取り出す（ユーザーによる [<em>戻る</em>] コマンドをシミュレートする）。</li>
   <li>{@link
@@ -785,7 +785,7 @@
 
 <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} のアクティビティを開始してアイテムのコンテンツを表示します。
@@ -798,7 +798,7 @@
 
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
 details_activity}
- 
+
 <p>構成が横方向の場合はアクティビティは自ら終了するため、メイン アクティビティが引き継いで {@code DetailsFragment} を {@code TitlesFragment} の横に表示できます。これは、ユーザーが縦方向のときに {@code DetailsActivity} を開始し、その後横方向に回転した（ここで現在のアクティビティが再開される）ときに起こることがあります。
 
 
diff --git a/docs/html-intl/intl/ja/guide/components/fundamentals.jd b/docs/html-intl/intl/ja/guide/components/fundamentals.jd
index 46e9868..e1a26cd 100644
--- a/docs/html-intl/intl/ja/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/ja/guide/components/fundamentals.jd
@@ -379,7 +379,7 @@
 </p>
 
 <p>たとえば、アプリでカメラを使用する必要があり、Android 2.1 で採用された API（<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API レベル</a> 7）を使用する場合、次のようにマニフェスト ファイルでそれを要件として宣言する必要があります。
-</p> 
+</p>
 
 <pre>
 &lt;manifest ... >
diff --git a/docs/html-intl/intl/ja/guide/components/index.jd b/docs/html-intl/intl/ja/guide/components/index.jd
index 803f99b..f4801c9 100644
--- a/docs/html-intl/intl/ja/guide/components/index.jd
+++ b/docs/html-intl/intl/ja/guide/components/index.jd
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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 スレッドが最小限の作業を行うようにすることです。
@@ -32,7 +32,7 @@
 
   <div class="col-6">
     <h3>トレーニング</h3>
-    
+
     <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
       <h4>アクティビティのライフサイクルの管理</h4>
       <p>このレッスンでは、各 Activity インスタンスが受け取る重要なライフサイクル コールバック メソッドについて、それらを使用してユーザーの予期する内容でアクティビティを動作させる方法と、アクティビティがそれらを必要としないときに、システムのリソースを消費しないようにする方法について学習します。
diff --git a/docs/html-intl/intl/ja/guide/components/loaders.jd b/docs/html-intl/intl/ja/guide/components/loaders.jd
index bc93677..6034717 100644
--- a/docs/html-intl/intl/ja/guide/components/loaders.jd
+++ b/docs/html-intl/intl/ja/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>キークラス</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>関連サンプル</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@
 再度データを問い合わせる必要がない。
 </li>
   </ul>
- 
+
 <h2 id="summary">Loader API の概要</h2>
 
 <p>アプリケーションでローダを使用するのに必要になりそうなクラスやインターフェースは複数あります。
@@ -129,7 +129,7 @@
 </li>
   <li>{@link android.app.LoaderManager.LoaderCallbacks} の実装。ここで、新しいローダを作成して既存のローダへの参照を管理します。
 
-</li> 
+</li>
 <li>{@link
 android.widget.SimpleCursorAdapter} などのローダのデータを表示する方法。</li>
   <li>{@link android.content.CursorLoader} を使用するときの、{@link android.content.ContentProvider} などのデータ ソース。
@@ -140,7 +140,7 @@
 <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> 
+android.app.LoaderManager} は 1 つだけ存在します。</p>
 
 <p>通常は、アクティビティの {@link
 android.app.Activity#onCreate onCreate()} メソッドか、フラグメントの {@link android.app.Fragment#onActivityCreated onActivityCreated()} メソッド内で {@link android.content.Loader} を初期化します。
@@ -157,13 +157,13 @@
 <ul>
   <li>ローダを識別する一意の ID。この例では、ID は 0 です。</li>
 <li>ローダの構築時に提供する任意の引数（この例では <code>null</code>）。
-</li> 
+</li>
 
 <li>{@link android.app.LoaderManager} がローダのイベントを報告する際に呼び出す {@link android.app.LoaderManager.LoaderCallbacks} の実装。
 この例では、ローカルクラスが {@link
 android.app.LoaderManager.LoaderCallbacks} インターフェースを実装するため、自身の {@code this} に参照を渡します。
 
-</li> 
+</li>
 </ul>
 <p>{@link android.app.LoaderManager#initLoader initLoader()} の呼び出しによって、ローダが初期化され、アクティブになります。
 結果には次の 2 つの可能性があります。</p>
@@ -366,7 +366,7 @@
 android.app.Fragment} の完全な実装の例です。
 {@link
 android.content.CursorLoader} を使用してプロバイダへのクエリを管理しています。</p>
- 
+
 <p>この例にあるように、アプリケーションがユーザーの連絡先にアクセスするには、マニフェストに {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} の許可を含める必要があります。
 
 </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
index 691a5f4..ae36411 100644
--- a/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
@@ -319,7 +319,7 @@
     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) {
diff --git a/docs/html-intl/intl/ja/guide/publishing/app-signing.jd b/docs/html-intl/intl/ja/guide/publishing/app-signing.jd
index 2d2acfa..efe66f4 100644
--- a/docs/html-intl/intl/ja/guide/publishing/app-signing.jd
+++ b/docs/html-intl/intl/ja/guide/publishing/app-signing.jd
@@ -53,7 +53,7 @@
 <ul>
   <li>すべてのアプリケーションは<em>署名される必要があります</em>。署名されていないアプリケーションはシステムにインストールされません。</li>
   <li>アプリケーションの署名に、自己署名証明書を使用できます。認証機関は不要です。</li>
-  <li>アプリケーションをエンド ユーザーにリリースする準備ができたら、適切な秘密鍵を使用してアプリケーションに署名する必要があります。SDK ツールで生成されたデバッグ キーで署名されたアプリケーションは、公開できません。 
+  <li>アプリケーションをエンド ユーザーにリリースする準備ができたら、適切な秘密鍵を使用してアプリケーションに署名する必要があります。SDK ツールで生成されたデバッグ キーで署名されたアプリケーションは、公開できません。
   </li>
   <li>システムが署名証明書の有効期限を確認するのは、インストール時のみです。アプリケーションのインストール後に署名者証明書が期限切れになった場合、アプリケーションは正常な動作を継続します。</li>
   <li>標準ツールである Keytool と Jarsigner を使用してキーを生成し、アプリケーションの .apk ファイルに署名できます。</li>
@@ -61,7 +61,7 @@
 
 <p>Android システムは、適切に署名されていないアプリケーションをインストールせず、実行もしません。この規則は、実際のデバイスでもエミュレータでも、Android システムが実行されるすべての状況で適用されます。このため、エミュレータまたはデバイス上で実行またはデバッグする前に、アプリケーションの署名を設定する必要があります。</p>
 
-<p>Android SDK ツールは、デバッグ時のアプリケーション署名を支援します。「ADT Plugin for Eclipse」と「Ant ビルド ツール」では両方とも、<em>デバッグ モード</em>と<em>リリース モード</em>の 2 種類の署名モードを利用できます。 
+<p>Android SDK ツールは、デバッグ時のアプリケーション署名を支援します。「ADT Plugin for Eclipse」と「Ant ビルド ツール」では両方とも、<em>デバッグ モード</em>と<em>リリース モード</em>の 2 種類の署名モードを利用できます。
 
 <ul>
 <li>開発およびテスト中は、デバッグ モードでコンパイルできます。デバッグ モードでは、ビルド ツールは JDK に付属の Keytool ユーティリティを使用して、キーストアとキーを既知のエイリアスとパスワードで作成します。コンパイルのたびに、ツールはデバッグ キーを使用してアプリケーションの .apk ファイルに署名します。パスワードは既知のものなので、コンパイルのたびにツールにキーストア/キー パスワードを入力する必要はありません。</li>
@@ -198,8 +198,8 @@
 <ul>
 <li>自分が所有している。</li>
 <li>アプリケーションで識別される、個人、法人、または組織の実体を表す。</li>
-<li>アプリケーションまたはアプリケーション スイートの予期される使用期間を超える有効期間を持っている。有効期間として、25 年以上を推奨します。 
-<p>アプリケーションを Android マーケットに公開する予定の場合、2033 年 10 月 22 日までの有効期間が必要です。有効期間がこの日付以前に期限切れになるキーで署名されたアプリケーションは、アップロードできません。 
+<li>アプリケーションまたはアプリケーション スイートの予期される使用期間を超える有効期間を持っている。有効期間として、25 年以上を推奨します。
+<p>アプリケーションを Android マーケットに公開する予定の場合、2033 年 10 月 22 日までの有効期間が必要です。有効期間がこの日付以前に期限切れになるキーで署名されたアプリケーションは、アップロードできません。
 </p></li>
 <li>Android SDK ツールで生成されたデバッグ キーではない。 </li>
 </ul>
@@ -248,7 +248,7 @@
 
 <p>秘密鍵を生成する Keytool コマンドの例を示します。</p>
 
-<pre>$ keytool -genkey -v -keystore my-release-key.keystore 
+<pre>$ keytool -genkey -v -keystore my-release-key.keystore
 -alias alias_name -keyalg RSA -validity 10000</pre>
 
 <p>上記のコマンド例を実行すると、Keytool からキーストアとキーのパスワードと、キーの識別名フィールドの指定が求められます。キーストアが <code>my-release-key.keystore</code> というファイルとして生成されます。キーストアとキーは、入力したパスワードで保護されます。キーストアには 1 つのキーが含まれ、10000 日間有効です。エイリアスは、後で使用する名前で、アプリケーションに署名するときにこのキーストアを参照する名前です。 </p>
@@ -282,10 +282,10 @@
 </tr>
 </table>
 
-<p>Jarsigner を使用して <code>my_application.apk</code> というアプリケーション パッケージに署名する例を、上記で作成したキーストアを使用して示します。 
+<p>Jarsigner を使用して <code>my_application.apk</code> というアプリケーション パッケージに署名する例を、上記で作成したキーストアを使用して示します。
 </p>
 
-<pre>$ jarsigner -verbose -keystore my-release-key.keystore 
+<pre>$ jarsigner -verbose -keystore my-release-key.keystore
 my_application.apk alias_name</pre>
 
 <p>上記のコマンドを実行すると、Jarsigner からキーストアとキーのパスワードの入力が求められます。.apk がその場で変更され、.apk は署名されます。.apk に別のキーで複数回署名できます。</p>
diff --git a/docs/html-intl/intl/ja/guide/publishing/preparing.jd b/docs/html-intl/intl/ja/guide/publishing/preparing.jd
index c7a2950..a86f70c 100644
--- a/docs/html-intl/intl/ja/guide/publishing/preparing.jd
+++ b/docs/html-intl/intl/ja/guide/publishing/preparing.jd
@@ -68,7 +68,7 @@
 
 <h3 id="eula">2. アプリケーションへのエンドユーザー ライセンス契約の追加を検討する</h3>
 
-<p>個人、組織、知的財産を保護するため、アプリケーションのエンドユーザー ライセンス契約（EULA）を付加することを推奨します。 
+<p>個人、組織、知的財産を保護するため、アプリケーションのエンドユーザー ライセンス契約（EULA）を付加することを推奨します。
 
 <h3 id="iconlabel">3. アプリケーションのマニフェストにアイコンとラベルを指定する</h3>
 
diff --git a/docs/html-intl/intl/ja/guide/publishing/versioning.jd b/docs/html-intl/intl/ja/guide/publishing/versioning.jd
index 1928610..4da05bf 100644
--- a/docs/html-intl/intl/ja/guide/publishing/versioning.jd
+++ b/docs/html-intl/intl/ja/guide/publishing/versioning.jd
@@ -48,13 +48,13 @@
 <p>アプリケーションのバージョン情報を定義するには、アプリケーションのマニフェスト ファイルで属性を設定します。2 つの属性を使用でき、常にこの両方に値を定義することが推奨されています: </p>
 
 <ul>
-<li><code>android:versionCode</code> - アプリケーション コードのバージョンを他のバージョンと相対的に示す整数値。 
+<li><code>android:versionCode</code> - アプリケーション コードのバージョンを他のバージョンと相対的に示す整数値。
 
 <p>この値は整数なので、その他のアプリケーションはプログラムでバージョンの値を評価して関係を確認できます（たとえば、このバージョンがアップグレードかダウングレードなのか、など）。任意の整数値を設定できますが、アプリケーションの後続のリリースでは、現在より大きな値を使用するようにしてください。システムではこのバージョン管理の基準を強制しませんが、後継リリースの値を増加させることは標準的です。 </p>
 
 <p>通常、アプリケーションの最初のバージョンの versionCode を 1 に設定してリリースし、その後は各リリースについて、リリースがメジャー リリースであってもマイナー リリースであっても、値を単調増加させます。これは、<code>android:versionCode</code> の値は、ユーザーに表示されるアプリケーション リリース バージョンと類似している必要性はないことを意味します。以下の <code>android:versionName</code> をご覧ください。アプリケーションと公開サービスでは、このバージョンの値はユーザーには表示されません。</p>
 </li>
-<li><code>android:versionName</code> - アプリケーション コードのリリース バージョンを表す文字列値で、ユーザーに表示される値です。 
+<li><code>android:versionName</code> - アプリケーション コードのリリース バージョンを表す文字列値で、ユーザーに表示される値です。
 <p>値は文字列なので、アプリケーション バージョンを「&lt;major&gt;.&lt;minor&gt;.&lt;point&gt;」といった文字列や、その他のタイプの絶対的または相対的バージョン ID として記述できます。 </p>
 
 <p><code>android:versionCode</code> の場合と同様に、システムではこの値をアプリケーションでユーザーに表示する以外の目的で内部的に利用することはありません。公開サービスでは、ユーザーに表示するために <code>android:versionName</code> 値を取り出す可能性もあります。</p>
@@ -79,7 +79,7 @@
 
 <p>この例では、<code>android:versionCode</code> 値は現在の .apk がこのアプリケーション コードの 2 番目のリリースを含んでいることを表し、これは <code>android:codeName</code> 文字列が示すようにマイナー後継リリースであることを示します。 </p>
 
-<p>Android フレームワークには、アプリケーションがシステムに別のアプリケーションのバージョン情報を問い合わせる API が用意されています。バージョン情報を取得するため、アプリケーションは {@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)} 
+<p>Android フレームワークには、アプリケーションがシステムに別のアプリケーションのバージョン情報を問い合わせる API が用意されています。バージョン情報を取得するため、アプリケーションは {@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
 method of {@link android.content.pm.PackageManager PackageManager}. </p> を使用します。
 
 <h2 id="minsdkversion">最小システム API バージョンの指定</h2>
@@ -89,7 +89,7 @@
 <p>最小システム バージョンをマニフェストに指定するには、次の属性を使用します: </p>
 
 <ul>
-<li><code>android:minSdkVersion</code> - Android プラットフォームのコード バージョンに対応する整数値。 
+<li><code>android:minSdkVersion</code> - Android プラットフォームのコード バージョンに対応する整数値。
 <p>アプリケーションのインストールを準備する際に、システムはこの属性の値を確認して、システム バージョンと比較します。<code>android:minSdkVersion</code> 値がシステム バージョンよりも大きい場合、システムはアプリケーションのインストールを中止します。 </p>
 
 <p>この属性をマニフェストに指定しない場合、システムではアプリケーションがすべてのプラットフォーム バージョンと互換性があると仮定します。</p></li>
diff --git a/docs/html-intl/intl/ja/guide/topics/fundamentals.jd b/docs/html-intl/intl/ja/guide/topics/fundamentals.jd
index d76c92e..2517073 100644
--- a/docs/html-intl/intl/ja/guide/topics/fundamentals.jd
+++ b/docs/html-intl/intl/ja/guide/topics/fundamentals.jd
@@ -80,10 +80,10 @@
 <dl>
 
 <dt><b>アクティビティ</b></dt>
-<dd>アクティビティは、ユーザーが 1 つの操作を集中的に行うための視覚的なユーザー インターフェースを表します。<i></i>たとえば、ユーザーが選択できるメニュー アイテムの一覧を表示するアクティビティや、写真をキャプション付きで表示するアクティビティなどが考えられます。SMS アプリケーションなら、あるアクティビティでメッセージを送信する連絡先の一覧を表示し、別のアクティビティで選択した連絡先へのメッセージを入力し、その他のアクティビティで古いメッセージを参照したり設定を変更したりできます。これらのアクティビティを組み合わせて全体としてのユーザー インターフェースを形成しますが、それぞれのアクティビティは相互に独立しています。各アクティビティは、{@link android.app.Activity} 基本クラスのサブクラスとして実装されます。  
+<dd>アクティビティは、ユーザーが 1 つの操作を集中的に行うための視覚的なユーザー インターフェースを表します。<i></i>たとえば、ユーザーが選択できるメニュー アイテムの一覧を表示するアクティビティや、写真をキャプション付きで表示するアクティビティなどが考えられます。SMS アプリケーションなら、あるアクティビティでメッセージを送信する連絡先の一覧を表示し、別のアクティビティで選択した連絡先へのメッセージを入力し、その他のアクティビティで古いメッセージを参照したり設定を変更したりできます。これらのアクティビティを組み合わせて全体としてのユーザー インターフェースを形成しますが、それぞれのアクティビティは相互に独立しています。各アクティビティは、{@link android.app.Activity} 基本クラスのサブクラスとして実装されます。
 
 <p>
-アプリケーションは、1 つのアクティビティで構成することも、上記のSMS アプリケーションのように複数のアクティビティで構成することもできます。どのようなアクティビティがいくつ必要になるかは、アプリケーションやその設計に応じて異なります。通常は、アクティビティのうちのいずれかを最初のアクティビティとして指定し、ユーザーがアプリケーションを起動したときに表示します。あるアクティビティから別のアクティビティに移動するには、現在のアクティビティから次のアクティビティを開始します。  
+アプリケーションは、1 つのアクティビティで構成することも、上記のSMS アプリケーションのように複数のアクティビティで構成することもできます。どのようなアクティビティがいくつ必要になるかは、アプリケーションやその設計に応じて異なります。通常は、アクティビティのうちのいずれかを最初のアクティビティとして指定し、ユーザーがアプリケーションを起動したときに表示します。あるアクティビティから別のアクティビティに移動するには、現在のアクティビティから次のアクティビティを開始します。
 </p>
 
 <p>
@@ -105,7 +105,7 @@
 典型的な例としては、プレイリストの曲を再生するメディア プレーヤーが挙げられます。プレーヤー アプリケーションは、ユーザーが曲を選んで再生するための 1 つ以上のアクティビティで構成することが予想されますが、ユーザーはプレーヤーを離れて別の操作に移った後も曲を聞いていたいと考えられることから、曲の再生自体をアクティビティで処理するわけにはいきません。音楽の再生を続けるには、メディア プレーヤー アクティビティから、バックグラウンドで実行するサービスを開始します。音楽再生サービスは、それを開始したアクティビティが画面上に見えなくなった後もそのまま実行されます。
 </p>
 
-<p> 
+<p>
 また、実行中のサービスに接続（バインド）することもできます（実行されていない場合はそのサービスを開始することも可能です）。接続中は、サービスが公開しているインターフェースを使ってサービスと対話できます。音楽再生サービスであれは、このインターフェースを使って一時停止、巻き戻し、停止、再生の再開などの操作を実行できるようにします。
 </p>
 
@@ -121,11 +121,11 @@
 </p>
 
 <p>
-ブロードキャスト レシーバがユーザー インターフェースを表示することはありません。ただし、受信した情報への応答としてアクティビティを開始したり、{@link android.app.NotificationManager} を使用してユーザーにアラートを送信したりすることはあります。通知の際には、バックライトを点滅させる、バイブレーションを起動する、音を鳴らすなど、さまざまな方法でユーザーの注意を喚起できます。通常は、ステータス バーに永続アイコンを表示し、ユーザーがこれを開いてメッセージを取得できるようにします。 
+ブロードキャスト レシーバがユーザー インターフェースを表示することはありません。ただし、受信した情報への応答としてアクティビティを開始したり、{@link android.app.NotificationManager} を使用してユーザーにアラートを送信したりすることはあります。通知の際には、バックライトを点滅させる、バイブレーションを起動する、音を鳴らすなど、さまざまな方法でユーザーの注意を喚起できます。通常は、ステータス バーに永続アイコンを表示し、ユーザーがこれを開いてメッセージを取得できるようにします。
 </p></dd>
 
 <dt><b>コンテンツ プロバイダ</b></dt>
-<dd>コンテンツ プロバイダは、アプリケーションのデータを他のアプリケーションでも利用できるようにします。<i></i>データは、ファイル システムや SQLite データベースなど、一般に利用できる方法で格納されていれば使用できます。コンテンツ プロバイダは、{@link android.content.ContentProvider} 基本クラスの拡張です。プロバイダが制御する型のデータを、他のアプリケーションから取得および格納するための標準メソッド セットを実装しています。ただし、これらのメソッドをアプリケーションから直接呼び出すことはできません。代わりに、{@link android.content.ContentResolver} オブジェクトのメソッドを呼び出します。ContentResolver は、すべてのプロバイダと通信でき、プロバイダと連携して関係のあるすべてのプロセス間通信を管理します。 
+<dd>コンテンツ プロバイダは、アプリケーションのデータを他のアプリケーションでも利用できるようにします。<i></i>データは、ファイル システムや SQLite データベースなど、一般に利用できる方法で格納されていれば使用できます。コンテンツ プロバイダは、{@link android.content.ContentProvider} 基本クラスの拡張です。プロバイダが制御する型のデータを、他のアプリケーションから取得および格納するための標準メソッド セットを実装しています。ただし、これらのメソッドをアプリケーションから直接呼び出すことはできません。代わりに、{@link android.content.ContentResolver} オブジェクトのメソッドを呼び出します。ContentResolver は、すべてのプロバイダと通信でき、プロバイダと連携して関係のあるすべてのプロセス間通信を管理します。
 
 <p>
 コンテンツ プロバイダの使用方法について詳しくは、<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>のドキュメントをご覧ください。
@@ -134,40 +134,40 @@
 </dl>
 
 <p>
-Android では、特定のコンポーネントで処理すべきリクエストがあると、そのコンポーネントのアプリケーション プロセスが実行中かどうかを確認（必要に応じてプロセスを開始）し、そのコンポーネントの適切なインスタンスが利用可能かどうかを確認（必要に応じてインスタンスを作成）します。  
+Android では、特定のコンポーネントで処理すべきリクエストがあると、そのコンポーネントのアプリケーション プロセスが実行中かどうかを確認（必要に応じてプロセスを開始）し、そのコンポーネントの適切なインスタンスが利用可能かどうかを確認（必要に応じてインスタンスを作成）します。
 </p>
 
 
-<h3 id="actcomp">コンポーネントのアクティブ化: インテント</h3> 
+<h3 id="actcomp">コンポーネントのアクティブ化: インテント</h3>
 
 <p>
 コンテンツ プロバイダは、ContentResolver からのリクエストの対象になるとアクティブ化されます。それ以外の 3 つのコンポーネント（アクティビティ、サービス、ブロードキャスト レシーバ）は、インテントと呼ばれる非同期メッセージによってアクティブ化されます。<i></i>インテントは、メッセージのコンテンツを保持する {@link android.content.Intent} オブジェクトです。アクティビティやサービスの場合の Intent オブジェクトの主な役割は、リクエストされているアクションを指名し、その対象となるデータの URI を指定することです。たとえば、ユーザーに画像を表示するためのリクエストや、ユーザーにテキストを編集させるリクエストをアクティビティに伝達できます。ブロードキャスト レシーバの場合は、Intent オブジェクトがこれから通知を行うアクションを指名します。たとえば、カメラのボタンが押されたことを、関係のあるブロードキャスト レシーバに通知できます。
 </p>
 
 <p>
-以下に示すように、コンポーネントのタイプごとに別々のアクティブ化メソッドが用意されています: 
+以下に示すように、コンポーネントのタイプごとに別々のアクティブ化メソッドが用意されています:
 </p>
 
 <ul>
 
-<li>アクティビティを起動する（または何か新しい処理を実行させる）には、Intent オブジェクトを <code>{@link android.content.Context#startActivity 
-Context.startActivity()}</code> または <code>{@link 
-android.app.Activity#startActivityForResult 
-Activity.startActivityForResult()}</code> に渡します。応答アクティビティで <code>{@link android.app.Activity#getIntent getIntent()}</code> メソッドを呼び出すと、最初にそのアクティビティが起動されたときのインテントの内容を確認できます。Android によってアクティビティの <code>{@link 
+<li>アクティビティを起動する（または何か新しい処理を実行させる）には、Intent オブジェクトを <code>{@link android.content.Context#startActivity
+Context.startActivity()}</code> または <code>{@link
+android.app.Activity#startActivityForResult
+Activity.startActivityForResult()}</code> に渡します。応答アクティビティで <code>{@link android.app.Activity#getIntent getIntent()}</code> メソッドを呼び出すと、最初にそのアクティビティが起動されたときのインテントの内容を確認できます。Android によってアクティビティの <code>{@link
 android.app.Activity#onNewIntent onNewIntent()}</code> メソッドが呼び出され、アクティビティが後続のインテントに渡されます。
 
 <p>
-多くの場合、アクティビティから次のアクティビティを開始します。開始するアクティビティから結果が返される場合は、{@code startActivity()} ではなく {@code startActivityForResult()} を呼び出します。たとえば、ユーザーに写真を選択させるアクティビティを開始する場合は、ユーザーによって選択された写真が返されるかもしれません。結果は、呼び出し側のアクティビティの <code>{@link android.app.Activity#onActivityResult 
+多くの場合、アクティビティから次のアクティビティを開始します。開始するアクティビティから結果が返される場合は、{@code startActivity()} ではなく {@code startActivityForResult()} を呼び出します。たとえば、ユーザーに写真を選択させるアクティビティを開始する場合は、ユーザーによって選択された写真が返されるかもしれません。結果は、呼び出し側のアクティビティの <code>{@link android.app.Activity#onActivityResult
 onActivityResult()}</code> メソッドに渡した Intent オブジェクトで返されます。
 </p>
 </li>
 
-<li><p>サービスを開始する（または実行中のサービスに新しい指示を与える）には、<code>{@link 
-android.content.Context#startService Context.startService()}</code> に Intent オブジェクトを渡します。Android により、サービスの <code>{@link android.app.Service#onStart 
+<li><p>サービスを開始する（または実行中のサービスに新しい指示を与える）には、<code>{@link
+android.content.Context#startService Context.startService()}</code> に Intent オブジェクトを渡します。Android により、サービスの <code>{@link android.app.Service#onStart
 onStart()}</code> メソッドが呼び出されて Intent オブジェクトが渡されます。</p>
 
 <p>
-同様に、インテントを <code>{@link 
+同様に、インテントを <code>{@link
 android.content.Context#bindService Context.bindService()}</code> に渡すと、呼び出し側のコンポーネントと対象となるサービスの間の継続中の接続を確立できます。サービスは、<code>{@link android.app.Service#onBind onBind()}</code> 呼び出しで Intent オブジェクトを受け取ります（サービスがまだ開始されていない場合は、必要に応じて {@code bindService()} で開始できます）。たとえば、上で例に挙げた音楽再生サービスとの接続を確立するアクティビティを使用して、ユーザーが再生を操作するための手段（ユーザー インターフェース）を提供できます。アクティビティで {@code bindService()} を呼び出して接続を確立してから、サービスに定義されているメソッドを呼び出して再生を操作します。
 </p>
 
@@ -176,10 +176,10 @@
 </p>
 </li>
 
-<li><p>アプリケーションでブロードキャストを開始するには、<code>{@link 
-android.content.Context#sendBroadcast(Intent) Context.sendBroadcast()}</code>、<code>{@link android.content.Context#sendOrderedBroadcast(Intent, String) 
-Context.sendOrderedBroadcast()}</code>、<code>{@link 
-android.content.Context#sendStickyBroadcast Context.sendStickyBroadcast()}</code> などのメソッドのいずれかのバリエーションに Intent オブジェクトを渡します。Android によって <code>{@link 
+<li><p>アプリケーションでブロードキャストを開始するには、<code>{@link
+android.content.Context#sendBroadcast(Intent) Context.sendBroadcast()}</code>、<code>{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+Context.sendOrderedBroadcast()}</code>、<code>{@link
+android.content.Context#sendStickyBroadcast Context.sendStickyBroadcast()}</code> などのメソッドのいずれかのバリエーションに Intent オブジェクトを渡します。Android によって <code>{@link
 android.content.BroadcastReceiver#onReceive onReceive()}</code> メソッドが呼び出され、関係のあるすべてのブロードキャスト レシーバにインテントが配信されます。</p></li>
 
 </ul>
@@ -213,7 +213,7 @@
 <h3 id="manfile">マニフェスト ファイル</h3>
 
 <p>
-アプリケーション コンポーネントを開始するには、Android がそのコンポーネントの存在を認識している必要があります。アプリケーションのコンポーネントは、マニフェスト ファイルで宣言します。このファイルは、アプリケーションのコード、ファイル、リソースなどとともに Android パッケージ（{@code .apk} ファイル）にバンドルされます。  
+アプリケーション コンポーネントを開始するには、Android がそのコンポーネントの存在を認識している必要があります。アプリケーションのコンポーネントは、マニフェスト ファイルで宣言します。このファイルは、アプリケーションのコード、ファイル、リソースなどとともに Android パッケージ（{@code .apk} ファイル）にバンドルされます。
 </p>
 
 <p>
@@ -229,7 +229,7 @@
     &lt;application . . . &gt;
         &lt;activity android:name="com.example.project.FreneticActivity"
                   android:icon="@drawable/small_pic.png"
-                  android:label="@string/freneticLabel" 
+                  android:label="@string/freneticLabel"
                   . . .  &gt;
         &lt;/activity&gt;
         . . .
@@ -260,7 +260,7 @@
     &lt;application . . . &gt;
         &lt;activity android:name="com.example.project.FreneticActivity"
                   android:icon="@drawable/small_pic.png"
-                  android:label="@string/freneticLabel" 
+                  android:label="@string/freneticLabel"
                   . . .  &gt;
             &lt;intent-filter . . . &gt;
                 &lt;action android:name="android.intent.action.MAIN" /&gt;
@@ -304,7 +304,7 @@
 </p>
 
 <p>
-この場合、マップ ビューアは別のアプリケーションで定義されており、そのアプリケーションのプロセスで実行されていますが、ユーザーにとってはマップ ビューアが元のアプリケーションの一部であるかのように感じられます。Android では、両方のアクティビティを同じタスクに組み込むことで、このようなユーザー エクスペリエンスを実現できます。<i></i>簡単に言えば、ユーザーが 1 つの「アプリケーション」と感じるものがタスクです。関連するアクティビティをスタックにまとめたものがタスクです。スタック内のルート アクティビティは、タスクを開始するアクティビティです。通常であれば、ユーザーがアプリケーション ランチャで選択するアクティビティがこれに相当します。スタックの最上位にあるアクティビティは、ユーザーのアクションの焦点となっている実行中のアクティビティです。あるアクティビティから別のアクティビティを開始すると、そのアクティビティが新たにスタックにプッシュされて実行中のアクティビティになります。1 つ前のアクティビティはスタック内に残されています。ユーザーが [[]戻る] キーを押すと、現在のアクティビティがスタックからポップされ、1 つ前のアクティビティが実行中のアクティビティとして再開されます。  
+この場合、マップ ビューアは別のアプリケーションで定義されており、そのアプリケーションのプロセスで実行されていますが、ユーザーにとってはマップ ビューアが元のアプリケーションの一部であるかのように感じられます。Android では、両方のアクティビティを同じタスクに組み込むことで、このようなユーザー エクスペリエンスを実現できます。<i></i>簡単に言えば、ユーザーが 1 つの「アプリケーション」と感じるものがタスクです。関連するアクティビティをスタックにまとめたものがタスクです。スタック内のルート アクティビティは、タスクを開始するアクティビティです。通常であれば、ユーザーがアプリケーション ランチャで選択するアクティビティがこれに相当します。スタックの最上位にあるアクティビティは、ユーザーのアクションの焦点となっている実行中のアクティビティです。あるアクティビティから別のアクティビティを開始すると、そのアクティビティが新たにスタックにプッシュされて実行中のアクティビティになります。1 つ前のアクティビティはスタック内に残されています。ユーザーが [[]戻る] キーを押すと、現在のアクティビティがスタックからポップされ、1 つ前のアクティビティが実行中のアクティビティとして再開されます。
 </p>
 
 <p>
@@ -316,7 +316,7 @@
 </p>
 
 <p>
-タスク内のアクティビティは、1 つのユニットとして一緒に移動します。タスク全体（アクティビティ スタック全体）をフォアグラウンドに移動したり、バックグラウンドに移動したりできます。たとえば、現在のタスクは 4 つのアクティビティからなるスタックで、現在のアクティビティの下にアクティビティが 3 つあるとします。ここで、ユーザーが [ホーム] キーを押してアプリケーション ランチャに移動し、新しいアプリケーション（実際には新しいタスク）を選択したとします。<i></i>すると、現在のタスクはバックグラウンドに移動し、新しいタスクのルート アクティビティが表示されます。しばらくして、ユーザーがホーム画面に戻り 1 つ前のアプリケーション（タスク）を選択すると、そのタスクがスタック内の 4 つのアクティビティとともにフォアグラウンドに移動します。ここでユーザーが [戻る] キーを押しても、中断したばかりのアプリケーション（1 つ前のタスクのルート アクティビティ）は表示されません。代わりに、スタックの最上位のアクティビティがポップされ、同じタスクの 1 つ前のアクティビティが表示されます。 
+タスク内のアクティビティは、1 つのユニットとして一緒に移動します。タスク全体（アクティビティ スタック全体）をフォアグラウンドに移動したり、バックグラウンドに移動したりできます。たとえば、現在のタスクは 4 つのアクティビティからなるスタックで、現在のアクティビティの下にアクティビティが 3 つあるとします。ここで、ユーザーが [ホーム] キーを押してアプリケーション ランチャに移動し、新しいアプリケーション（実際には新しいタスク）を選択したとします。<i></i>すると、現在のタスクはバックグラウンドに移動し、新しいタスクのルート アクティビティが表示されます。しばらくして、ユーザーがホーム画面に戻り 1 つ前のアプリケーション（タスク）を選択すると、そのタスクがスタック内の 4 つのアクティビティとともにフォアグラウンドに移動します。ここでユーザーが [戻る] キーを押しても、中断したばかりのアプリケーション（1 つ前のタスクのルート アクティビティ）は表示されません。代わりに、スタックの最上位のアクティビティがポップされ、同じタスクの 1 つ前のアクティビティが表示されます。
 </p>
 
 <p>
@@ -330,7 +330,7 @@
 
 <p>
 また、主に使用する {@code <activity>} 属性は以下のとおりです:
-  
+
 <p style="margin-left: 2em">{@code taskAffinity} <br/>{@code launchMode} <br/>{@code allowTaskReparenting} <br/>{@code clearTaskOnLaunch} <br/>{@code alwaysRetainTaskState} <br/>{@code finishOnTaskLaunch}</p>
 
 <p>
@@ -348,7 +348,7 @@
 <dt><code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグ</dt>
 <dd>既に説明したとおり、新しいアクティビティは、デフォルトでは {@code startActivity()} を呼び出したアクティビティのタスクの一部として起動します。つまり、呼び出し側のアクティビティと同じスタックにプッシュされるということです。しかし、{@code startActivity()} に渡された Intent オブジェクトに {@code FLAG_ACTIVITY_NEW_TASK} フラグが含まれている場合、システムはその新しいアクティビティを別のタスクに収容しようとします。フラグの名前からも判断できますが、ほとんどの場合は新しいタスクが開始されます。ただし常にそうなるとは限りません。既存のタスクに新しいアクティビティと同じ親和性が割り当てられている場合、そのアクティビティはそのタスクの一部として起動します。そうでない場合には、新しいタスクが開始されます。</dd>
 
-<dt><code><a 
+<dt><code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code> 属性</dt>
 <dd>{@code allowTaskReparenting} 属性が "{@code true}" に設定されているアクティビティは、そのアクティビティと親和性のあるタスクがフォアグラウンドに移ったときに、アクティビティを開始したタスクから親和性のあるタスクに移動できます。たとえば、旅行アプリケーションの一部として、選択された都市の天気予報を表示するアクティビティが定義されているとします。このアクティビティには、同じアプリケーション内の他のアクティビティと同じ親和性（デフォルトの親和性）が割り当てられていますが、その親の割り当てを変更することも可能です。あるアクティビティが天気予報アクティビティを開始すると、その時点では開始側のアクティビティと同じタスクに属した状態になります。しかし、次に旅行アプリケーションがフォアグラウンドに移ると、天気予報アクティビティの割り当てが変更され、旅行アプリケーションのタスクの一部として表示されます。</dd>
 </dl>
@@ -372,29 +372,29 @@
 
 <ul>
 
-<li><b>インテントに応答するアクティビティをどのタスクに保持するか</b>。"{@code standard}" および "{@code singleTop}" モードの場合は、そのインテントを開始した（つまり <code>{@link android.content.Context#startActivity startActivity()}</code> を呼び出した）タスクに保持されます。ただし、Intent オブジェクトに <code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグが含まれている場合は、前のセクション<a href="#afftask">親和性と新しいタスク</a>で説明したとおり、別のタスクが選択されます。  
+<li><b>インテントに応答するアクティビティをどのタスクに保持するか</b>。"{@code standard}" および "{@code singleTop}" モードの場合は、そのインテントを開始した（つまり <code>{@link android.content.Context#startActivity startActivity()}</code> を呼び出した）タスクに保持されます。ただし、Intent オブジェクトに <code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> フラグが含まれている場合は、前のセクション<a href="#afftask">親和性と新しいタスク</a>で説明したとおり、別のタスクが選択されます。
 
 <p>
 一方、"{@code singleTask}" および "{@code singleInstance}" モードの場合は、アクティビティが常にタスクのルート アクティビティになります。タスクは定義されており、他のタスクの一部として起動されることはありません。
-</p>  
+</p>
 
 <li><p><b>アクティビティのインスタンスを複数生成できるか</b>。"{@code standard}" または "{@code singleTop}" アクティビティは複数回インスタンス化できます。それらのインスタンスを複数のタスクに割り当てることも、特定のタスクに同じアクティビティの複数のインスタンスを割り当てることも可能です。
-</p> 
+</p>
 
 <p>
 一方、"{@code singleTask}" および "{@code singleInstance}" アクティビティのインスタンスは 1 つに制限されます。これらのアクティビティはタスクのルートに当たります。したがって、これらのタスクの複数のインスタンスがデバイス上に同時に存在することはないということになります。
-</p>    
+</p>
 
 <li><p><b>インスタンスのタスクに他のアクティビティを含めることができるか</b>。"{@code singleInstance}" アクティビティは、そのタスク内の唯一のアクティビティとして単独で動作します。ここから別のアクティビティを開始した場合、そのアクティビティは起動モードに関係なく、あたかもインテントに {@code FLAG_ACTIVITY_NEW_TASK} フラグが含まれているかのように別のタスクで起動します。"{@code singleInstance}" モードと "{@code singleTask}" モードは、これ以外の点ではまったく同じです。</p>
 
 <p>
-他の 3 つのモードでは、タスクに複数のアクティビティを割り当てることができます。"{@code singleTask}" アクティビティは、常にタスクのルート アクティビティになりますが、同じタスクに割り当てることになる別のアクティビティを開始することができます。"{@code standard}" および "{@code singleTop}" アクティビティのインスタンスは、スタック内のどの位置にでも配置できます。  
+他の 3 つのモードでは、タスクに複数のアクティビティを割り当てることができます。"{@code singleTask}" アクティビティは、常にタスクのルート アクティビティになりますが、同じタスクに割り当てることになる別のアクティビティを開始することができます。"{@code standard}" および "{@code singleTop}" アクティビティのインスタンスは、スタック内のどの位置にでも配置できます。
 </p></li>
 
 <li><b>クラスの新しいインスタンスを起動して新しいインテントを処理するかどうか</b>。デフォルトの "{@code standard}" モードの場合は、新しいインテントに応答するときには必ず新しいインスタンスが作成されます。それぞれのインスタンスで処理するインテントは 1 つのみです。"{@code singleTop}" モードの場合は、クラスの既存のインスタンスが対象タスクのアクティビティ スタックの最上位にあれば、それを再利用して新しいインテントを処理します。スタックの最上位にない場合は再利用されません。代わりに、新しいインスタンスが作成されてスタックにプッシュされ、新しいインテントの処理に使用されます。
 
 <p>
-たとえば、タスクのアクティビティ スタックに、ルート アクティビティ A とアクティビティ B、C、D が含まれているとします。スタック内のアクティビティの順序は A-B-C-D で D が最上位です。ここに、アクティビティのタイプが D のインテントが届きます。D の起動モードがデフォルトの "{@code standard}" である場合は、そのクラスの新しいインスタンスが起動し、スタックは A-B-C-D-D となります。しかし、D の起動モードが "{@code singleTop}" であれば、スタックの最上位は D なので、新しいインテントは既存のインスタンスによって処理されるはずです。したがって、スタックは A-B-C-D のままとなります。  
+たとえば、タスクのアクティビティ スタックに、ルート アクティビティ A とアクティビティ B、C、D が含まれているとします。スタック内のアクティビティの順序は A-B-C-D で D が最上位です。ここに、アクティビティのタイプが D のインテントが届きます。D の起動モードがデフォルトの "{@code standard}" である場合は、そのクラスの新しいインスタンスが起動し、スタックは A-B-C-D-D となります。しかし、D の起動モードが "{@code singleTop}" であれば、スタックの最上位は D なので、新しいインテントは既存のインスタンスによって処理されるはずです。したがって、スタックは A-B-C-D のままとなります。
 </p>
 
 <p>
@@ -417,7 +417,7 @@
 </p>
 
 <p>
-起動モードについて詳しくは、<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">&lt;activity&gt;</a></code> 要素の説明をご覧ください。
 </p>
 
 
@@ -432,26 +432,26 @@
 </p>
 
 <dl>
-<dt><code><a 
+<dt><code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code> 属性</dt>
 <dd>タスクのルート アクティビティでこの属性を "{@code true}" に設定すると、上で説明したデフォルトの動作は発生しません。長時間経過しても、タスク内のすべてのアクティビティはそのまま残されます。</dd>
 
-<dt><code><a 
+<dt><code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code> 属性</dt>
 <dd>タスクのルート アクティビティでこの属性を "{@code true}" に設定した場合、ユーザーがいったんタスクを離れると、戻ったときにはルートを含むすべてのアクティビティがクリアされています。つまり、{@code alwaysRetainTaskState} の正反対の動作になります。ユーザーが一瞬でもタスクを離れると、最初の状態からやり直すことになります。</dd>
 
-<dt><code><a 
+<dt><code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code> 属性</dt>
 <dd>この属性は {@code clearTaskOnLaunch} に似ていますが、タスク全体ではなく単一のアクティビティに作用します。また、ルート アクティビティを含むどのアクティビティもクリアの対象となりえます。この属性が "{@code true}" に設定されたアクティビティは、現在のセッションの間のみタスクの一部を形成します。ユーザーがいったんそのタスクから離れてから、再度タスクに戻ると、このアクティビティはクリアされています</dd>
 </dl>
 
 <p>
-アクティビティをスタックから削除する方法は他にもあります。Intent オブジェクトに <code>{@link 
+アクティビティをスタックから削除する方法は他にもあります。Intent オブジェクトに <code>{@link
 android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_CLEAR_TOP}</code> フラグが含まれており、そのインテントを処理すべきタイプのアクティビティのインスタンスが対象タスクのスタック内に存在する場合は、そのインスタンスがスタックの最上位になってインテントに応答できるよう、それより上位のアクティビティはすべてクリアされます。指定されたアクティビティの起動モードが "{@code standard}" である場合は、そのアクティビティもスタックから削除され、新しいインスタンスが起動してインテントを処理します。起動モード "{@code standard}" では、新しいインテントを処理する際、常に新しいインスタンスが作成されるためです。
 </p>
 
 <p>
-{@code FLAG_ACTIVITY_CLEAR_TOP} は、ほとんどの場合 {@code FLAG_ACTIVITY_NEW_TASK} と組み合わせて使用します。これらのフラグを組み合わせると、別のタスクに既に存在しているアクティビティを探し、それをインテントに応答できる位置に配置できます。  
+{@code FLAG_ACTIVITY_CLEAR_TOP} は、ほとんどの場合 {@code FLAG_ACTIVITY_NEW_TASK} と組み合わせて使用します。これらのフラグを組み合わせると、別のタスクに既に存在しているアクティビティを探し、それをインテントに応答できる位置に配置できます。
 </p>
 
 
@@ -467,7 +467,7 @@
 
 <p>
 {@code FLAG_ACTIVITY_NEW_TASK} フラグにも、これと同じような難しさがあります。このフラグを指定したアクティビティでは、新しいタスクを開始した後にユーザーが [ホーム] キーを押してそのタスクを離れた場合に備え、タスクに戻るための手段を用意しておく必要があります。一部のエンティティ（たとえば通知マネージャ）は、アクティビティを常に外部タスクとして開始します。エンティティの一部として開始することはないため、{@code startActivity()} に渡すインテントには必ず {@code FLAG_ACTIVITY_NEW_TASK} を指定します。外部エンティティから呼び出すことのできるアクティビティでこのフラグが使用されている可能性がある場合は、開始されたタスクにユーザーが戻るための手段を別途提供するようにしてください。
-</p> 
+</p>
 
 <p>
 ユーザーがアクティビティに戻ることができるようにしない場合は、{@code <activity>} 要素の {@code finishOnTaskLaunch} を "{@code true}" に設定します。詳しくは、<a href="#clearstack">スタックのクリア</a>をご覧ください。
@@ -497,7 +497,7 @@
 
 <p>
 状況によっては、Android がプロセスを終了させるべきと判断する場合があります。たとえば、メモリが不足してきた場合や、他のプロセスでユーザーにすばやく応答する必要がある場合です。プロセスが終了すると、そのプロセス内で実行されているアプリケーション コンポーネントは破棄されます。それらのコンポーネントで処理する作業がもう一度発生すると、そのためのプロセスが再び開始されます。
-</p>  
+</p>
 
 <p>
 Android では、どのプロセスを終了させるかを判断するため、ユーザーにとっての相対的な重要度を重み付けして管理します。たとえば、アクティビティがまだ画面に表示されているプロセスを終了させるよりも、アクティビティが画面に表示されていないプロセスを終了させる方が合理的です。したがって、プロセスを終了させるかどうかは、そのプロセスで実行されているコンポーネントの状態に応じて判断されるということです。コンポーネントの状態については、後ほど<a href="#lcycles">コンポーネントのライフサイクル</a>で詳しく説明します。
@@ -507,7 +507,7 @@
 <h3 id="threads">スレッド</h3>
 
 <p>
-アプリケーションを単一のプロセスに限定したとしても、バックグラウンドでの処理にスレッドが必要になることはよくあります。ユーザー インターフェースはユーザーのアクションに対して常にすばやく応答できなければならないため、アクティビティをホストするスレッドで、ネットワーク ダウンロードのような時間のかかる処理を一緒にホストしないようにする必要があります。すぐに完了しない可能性のあるすべての処理は、別のスレッドに割り当てるようにしてください。 
+アプリケーションを単一のプロセスに限定したとしても、バックグラウンドでの処理にスレッドが必要になることはよくあります。ユーザー インターフェースはユーザーのアクションに対して常にすばやく応答できなければならないため、アクティビティをホストするスレッドで、ネットワーク ダウンロードのような時間のかかる処理を一緒にホストしないようにする必要があります。すぐに完了しない可能性のあるすべての処理は、別のスレッドに割り当てるようにしてください。
 </p>
 
 <p>
@@ -549,19 +549,19 @@
 <li>サービスのクライアント（ローカル側）には <code>{@link android.content.ServiceConnection#onServiceConnected
 onServiceConnected()}</code> および<code>{@link android.content.ServiceConnection#onServiceDisconnected
 onServiceDisconnected()}</code> メソッドが実装されているため、リモート サービスとの接続が確立されたときや切断されたときには通知を受けることができます。通知があり次第、<code>{@link android.content.Context#bindService bindService()}</code> を呼び出して接続を設定します。
-</li>  
+</li>
 
-<li> 
+<li>
 サービスの <code>{@link android.app.Service#onBind onBind()}</code> メソッドは、受け取ったインテント（{@code bindService()} に渡されたインテント）に応じて、接続を承認または拒否するために実装します。接続が承認されると、接続を承認するのであれば、スタブ サブクラスのインスタンスを返します。
 </li>
 
-<li>サービスが接続を承認すると、Android がクライアントの {@code onServiceConnected()} メソッドを呼び出し、IBinder オブジェクト（サービスが管理するスタブ サブクラスのプロキシ）を渡します。クライアントは、このプロキシを介してリモートサービスを呼び出すことができます。  
+<li>サービスが接続を承認すると、Android がクライアントの {@code onServiceConnected()} メソッドを呼び出し、IBinder オブジェクト（サービスが管理するスタブ サブクラスのプロキシ）を渡します。クライアントは、このプロキシを介してリモートサービスを呼び出すことができます。
 </li>
 </ul>
 
 <p>
 ここでは、説明を簡単にするため、RPC メカニズムの細かい点は省略しています。詳しくは、<a href="{@docRoot}guide/components/aidl.html">Designing a Remote Interface Using AIDL</a>、および {@link android.os.IBinder IBinder} クラスの説明をご覧ください。
-</p>  
+</p>
 
 
 <h3 id="tsafe">スレッドセーフなメソッド</h3>
@@ -572,18 +572,18 @@
 
 <p>
 前のセクションで説明した RPC のようにメソッドをリモートで呼び出すことができる場合は、このような状況が特に発生しやすくなります。IBinder オブジェクトに実装されているメソッドを IBinder と同じプロセスから呼び出すと、そのメソッドは呼び出し側のスレッドで実行されます。一方、別のプロセスからメソッドを呼び出した場合は、プロセスのメイン スレッドではなく、IBinder と同じプロセス内に保持されているスレッドのプールから選択されたスレッドで実行されます。たとえば、サービスの {@code onBind()} メソッドはそのサービスのプロセスのメイン スレッドから呼び出されるのに対し、{@code onBind()} から返されたオブジェクトに実装されているメソッド（たとえば RPC メソッドを実装するスタブ サブクラス）はプール内のスレッドから呼び出されます。サービスには複数のクライアントを割り当てることができるため、複数のプール スレッドを同じ IBinder に同時に割り当てることも可能です。したがって、IBinder メソッドはスレッドセーフになるように実装する必要があります。
-</p>  
+</p>
 
 <p>
 同様に、コンテンツ プロバイダも別のプロセスからのデータ リクエストを受け取ることができます。ContentResolver および ContentProvider クラスはプロセス間通信の管理の詳細を隠蔽しますが、それらのリクエストに応答する ContentProvider メソッド（<code>{@link android.content.ContentProvider#query query()}</code>、<code>{@link android.content.ContentProvider#insert insert()}</code>、<code>{@link android.content.ContentProvider#delete delete()}</code>、<code>{@link android.content.ContentProvider#update update()}</code>、および <code>{@link android.content.ContentProvider#getType getType()}</code> メソッド）は、プロセスのメイン スレッドではなく、コンテンツ プロバイダのプロセス内のスレッドのプールから呼び出されます。これらのメソッドを同時に呼び出すことのできるメソッドの数に制限はありません。したがって、これらのメソッドもスレッドセーフになるように実装する必要があります。
-</p> 
+</p>
 
 
 <h2 id="lcycles">コンポーネントのライフサイクル</h2>
 
 <p>
 アプリケーション コンポーネントにはライフサイクルがあります。ライフサイクルは、インテントへ応答することでのインスタンス化で始まり、そのインスタンスの破棄で終わります。この間、コンポーネントがアクティブなときとアクティブでないときがあり、アクティビティであればユーザーから見えるときと見えないときがあります。このセクションでは、アクティビティ、サービス、およびブロードキャスト レシーバのライフサイクルについて説明します。具体的には、それぞれがライフタイムの間に取ることのできる状態、状態の遷移を通知する方法、およびそれらの状態が、コンポーネントを実行しているプロセスが終了させられたり、インスタンスが破棄されたりする可能性への影響などについて説明します。
-</p> 
+</p>
 
 
 <h3 id="actlife">アクティビティのライフサイクル</h3>
@@ -624,12 +624,12 @@
     . . .
 }</pre>
 </div>
-</div> 
+</div>
 
 
 <p>
-これら 7 つのメソッドを使用すると、アクティビティのライフサイクル全体を定義できます。これらを実装することで、ネストされた 3 つのループからなるアクティビティのライフサイクルを監視できます: 
-</p> 
+これら 7 つのメソッドを使用すると、アクティビティのライフサイクル全体を定義できます。これらを実装することで、ネストされた 3 つのループからなるアクティビティのライフサイクルを監視できます:
+</p>
 
 <ul>
 <li>アクティビティの<b>ライフタイム全体</b>は、<code>{@link android.app.Activity#onCreate onCreate()}</code> が初めて呼び出されたときに始まり、最後に <code>{@link android.app.Activity#onDestroy}</code> が呼び出されたときに終了します。アクティビティは、{@code onCreate()} で「全体的」な状態のすべての初期設定を行い、{@code onDestroy()} 残っていたリソースをすべて解放します。たとえば、ネットワークからのデータのダウンロードをバックグラウンドで実行するスレッドは、{@code onCreate()} で作成され、{@code onDestroy()} で停止します。</li>
@@ -644,8 +644,8 @@
 <p>
 
 <p style="margin-left: 2em"><img src="{@docRoot}images/activity_lifecycle.png"
-alt="Android のアクティビティ ライフサイクルの状態遷移図"  /></p>  
-  
+alt="Android のアクティビティ ライフサイクルの状態遷移図"  /></p>
+
 <p>
 次の表では、各メソッドについて詳しく説明し、ライフサイクル全体における位置付けを示します:
 </p>
@@ -671,7 +671,7 @@
 
 <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 
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
 onRestart()}</code></td>
    <td>アクティビティが停止した後、それをもう一度開始する直前に呼び出されます。
        <p>この後には、必ず {@code onStart()} が呼び出されます。</p></td>
@@ -706,16 +706,16 @@
 
 <tr>
    <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
-   <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 
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
 onDestroy()}</code></td>
-   <td>アクティビティが破棄される前に呼び出されます。これが、アクティビティが受け取る最後の呼び出しとなります。このメソッドが呼び出される状況としては、アクティビティが完了する場合（<code>{@link android.app.Activity#finish 
+   <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>
@@ -744,8 +744,8 @@
 </p>
 
 <p>
-アクティビティが強制終了させられる前の状態を保存しておきたい場合は、アクティビティに <code>{@link android.app.Activity#onSaveInstanceState 
-onSaveInstanceState()}</code> メソッドを実装します。このメソッドは、アクティビティが破棄されやすい状態になる前（つまり {@code onPause()} が呼び出される前）に呼び出されます。その際、アクティビティの動的な状態を名前/値ペアとして記録できる {@link android.os.Bundle} オブジェクトが渡されます。アクティビティがもう一度開始されると、Bundle は {@code onCreate()} だけでなく、{@code onStart()} の後に呼び出される <code>{@link 
+アクティビティが強制終了させられる前の状態を保存しておきたい場合は、アクティビティに <code>{@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}</code> メソッドを実装します。このメソッドは、アクティビティが破棄されやすい状態になる前（つまり {@code onPause()} が呼び出される前）に呼び出されます。その際、アクティビティの動的な状態を名前/値ペアとして記録できる {@link android.os.Bundle} オブジェクトが渡されます。アクティビティがもう一度開始されると、Bundle は {@code onCreate()} だけでなく、{@code onStart()} の後に呼び出される <code>{@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}</code> メソッドにも渡され、保存されている状態をそのどちらかまたは両方で復元できます。
 </p>
 
@@ -871,15 +871,15 @@
 <li><b>フォアグラウンド プロセス</b>は、ユーザーがその時点で行っている作業に必要なプロセスです。以下のいずれかの条件を満たしているプロセスは、フォアグラウンド プロセスと見なされます:
 
 <ul>
-<li>ユーザーと対話中のアクティビティを実行している（Activity オブジェクトの <code>{@link android.app.Activity#onResume 
+<li>ユーザーと対話中のアクティビティを実行している（Activity オブジェクトの <code>{@link android.app.Activity#onResume
 onResume()}</code> メソッドが呼び出されている）。</li>
 
 <li><p>ユーザーと対話中のアクティビティにバインドされているサービスを実行している。</p></li>
 
-<li><p>いずれかのライフサイクル コールバック（<code>{@link android.app.Service#onCreate 
+<li><p>いずれかのライフサイクル コールバック（<code>{@link android.app.Service#onCreate
 onCreate()}</code>、<code>{@link android.app.Service#onStart onStart()}</code>、または <code>{@link android.app.Service#onDestroy onDestroy()}</code>）を実行している {@link android.app.Service} オブジェクトを保持している。</p></li>
 
-<li><p><code>{@link android.content.BroadcastReceiver#onReceive 
+<li><p><code>{@link android.content.BroadcastReceiver#onReceive
 onReceive()}</code> メソッドを実行している {@link android.content.BroadcastReceiver} オブジェクトを保持している。</p></li>
 </ul>
 
@@ -899,10 +899,10 @@
 可視プロセスは、非常に重要なプロセスと見なされ、すべてのフォアグラウンド プロセスの実行を維持するために必要でない限り、強制終了させられることはありません。
 </p></li>
 
-<li><p><b>サービス プロセス</b>は、<code>{@link android.content.Context#startService startService()}</code> メソッドで開始されたサービスを実行しているプロセスのうち、より重要度の高い 2 つのレベルのどちらにも該当しないプロセスです。サービス プロセスは、ユーザーに見えるものとの直接的な関係はありませんが、たとえばバックグラウンドでの MP3 の再生、ネットワークからのデータのダウンロードなど、ユーザーが気にかけている処理であることが一般的です。したがって、すべてのフォアグラウンド プロセスと可視プロセスに加え、これらのサービス プロセスの実行を維持するだけのメモリが確保できる限り、強制終了させられることはありません。  
+<li><p><b>サービス プロセス</b>は、<code>{@link android.content.Context#startService startService()}</code> メソッドで開始されたサービスを実行しているプロセスのうち、より重要度の高い 2 つのレベルのどちらにも該当しないプロセスです。サービス プロセスは、ユーザーに見えるものとの直接的な関係はありませんが、たとえばバックグラウンドでの MP3 の再生、ネットワークからのデータのダウンロードなど、ユーザーが気にかけている処理であることが一般的です。したがって、すべてのフォアグラウンド プロセスと可視プロセスに加え、これらのサービス プロセスの実行を維持するだけのメモリが確保できる限り、強制終了させられることはありません。
 </p></li>
 
-<li><p><b>バックグラウンド プロセス</b>は、その時点でユーザーから見えないアクティビティを保持している（Activity オブジェクトの <code>{@link android.app.Activity#onStop onStop()}</code> メソッドが呼び出されている）プロセスです。これらのプロセスは、ユーザー エクスペリエンスに直接的には影響しておらず、フォアグラウンド、可視、サービス プロセスからメモリが要求された場合はいつでも強制終了する可能性があります。通常は数多くのバックグラウンド プロセスが実行されているため、それらを LRU（least recently used）リストに登録し、ユーザーが一番最近見たアクティビティのプロセスが最後に強制終了するような仕組みになっています。アクティビティにライフサイクル メソッドが正しく実装されており、現在の状態が正しく保存されていれば、プロセスを強制終了してもユーザー エクスペリエンスに悪影響が及ぶことはありません。 
+<li><p><b>バックグラウンド プロセス</b>は、その時点でユーザーから見えないアクティビティを保持している（Activity オブジェクトの <code>{@link android.app.Activity#onStop onStop()}</code> メソッドが呼び出されている）プロセスです。これらのプロセスは、ユーザー エクスペリエンスに直接的には影響しておらず、フォアグラウンド、可視、サービス プロセスからメモリが要求された場合はいつでも強制終了する可能性があります。通常は数多くのバックグラウンド プロセスが実行されているため、それらを LRU（least recently used）リストに登録し、ユーザーが一番最近見たアクティビティのプロセスが最後に強制終了するような仕組みになっています。アクティビティにライフサイクル メソッドが正しく実装されており、現在の状態が正しく保存されていれば、プロセスを強制終了してもユーザー エクスペリエンスに悪影響が及ぶことはありません。
 </p></li>
 
 <li><p><b>空のプロセス</b>は、アクティブなアプリケーション コンポーネントを保持していないプロセスです。このようなプロセスを維持しておく唯一の理由は、これをキャッシュとして使用し、次回コンポーネントを実行するときの起動時間を短くするためです。多くの場合、システムはこれらのプロセスを強制終了させて、プロセス キャッシュとその基礎となるカーネル キャッシュの間でシステム リソース全体のバランスを取ります。</p></li>
@@ -915,7 +915,7 @@
 
 <p>
 また、あるプロセスに他のプロセスが依存しているために、そのプロセスのランクが引き上げられる可能性もあります。他のプロセスから依存されているプロセスが、依存しているプロセスよりも低いレベルにランク付けされることはありません。たとえば、プロセス A 内のコンテンツ プロバイダにプロセス B 内のクライアントが依存している場合や、プロセス A 内のサービスがプロセス B 内のコンポーネントにバインドされている場合、プロセス A は常にプロセス B よりは重要度が高いと見なされます。
-</p> 
+</p>
 
 <p>
 サービスを実行しているプロセスは、バックグラウンド アクティビティを実行しているプロセスよりも高くランク付けされます。したがって、時間のかかる処理を実行する場合、特にその処理がアクティビティよりも長く続くような場合は、単にスレッドを生成するのではなく、その処理用のサービスを開始することをおすすめします。たとえば、バックグラウンドで音楽を再生する場合や、カメラで撮影した写真を Web サイトにアップロードする場合などはこれに当たります。サービスを使用することで、アクティビティがどのような状況にあっても、処理の重要度として「サービス プロセス」レベル以上を維持できます。<a href="#broadlife">ブロードキャスト レシーバのライフサイクル</a>のセクションでも説明しましたが、ブロードキャスト レシーバにおいてもこれと同じ理由で、処理に時間がかかる場合はスレッドではなくサービスを使用することをおすすめします。
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
index 7d9e8ac..a0041de 100644
--- a/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
@@ -38,10 +38,10 @@
 これらの宣言によって、Android システムは、どんなコンポーネントがあり、それらのコンポーネントがどのような条件で起動されるのかを把握できます。
 </li>
 
-<li>アプリケーション コンポーネントをホストするプロセスを決定します。</li>  
+<li>アプリケーション コンポーネントをホストするプロセスを決定します。</li>
 
 <li>アプリケーションが API の保護された部分にアクセスしたり他のアプリケーションとやり取りしたりする際に必要となるパーミッションを宣言します。
-</li>  
+</li>
 
 <li>他のアプリケーションがアプリケーションのコンポーネントとやり取りするために必要なパーミッションを宣言します。
 </li>
@@ -66,7 +66,7 @@
 エレメントの詳細を見るには、図中、図の下にあるアルファベット順のエレメント一覧、またはその他の説明文に表示されているエレメント名をクリックしてください。
 
 
- 
+
 </p>
 
 <pre>
@@ -128,7 +128,7 @@
 <p>
 以下は、マニフェスト ファイルに含むことができるすべてのエレメントをアルファベット順に並べたものです。
 使用が許可されているのはこれらのエレメントのみです。独自のエレメントや属性は追加できません。
-  
+
 </p>
 
 <p style="margin-left: 2em">
@@ -158,7 +158,7 @@
 </p>
 
 
-    
+
 
 <h2 id="filec">ファイルの規則</h2>
 
@@ -218,7 +218,7 @@
 
 
 
-  
+
 
 <p>
 サブクラスを定義する場合は、コンポーネント クラス（{@link android.app.Activity}、{@link android.app.Service}、{@link android.content.BroadcastReceiver}、{@link android.content.ContentProvider}）でいつも行うように、サブクラスは {@code name} 属性で宣言されます。
@@ -244,7 +244,7 @@
 
 
 
-以下は、上記のものと同じ内容です。 
+以下は、上記のものと同じ内容です。
 </p>
 
 <pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -399,7 +399,7 @@
 <p>
 パーミッションは、コードの一部や端末上のデータへのアクセスを制限する機能を提供します。<i></i>
    誤用や悪用によってユーザーの利用を妨げたり有害な作用をもたらす恐れのある重要なデータやコードを保護したりするための制限を設定します。
-  
+
 </p>
 
 <p>
@@ -421,13 +421,13 @@
 アプリケーションがパーミッションにより保護されている機能へのアクセスを必要としている場合は、<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> エレメントをマニフェスト ファイルに記述し、そのパーミッションが必要であることを宣言する必要があります。
 
 
-これによって、アプリケーションが端末にインストールされた際に、インストーラーは、アプリケーションの証明書に署名した関係機関を確認し、場合によってはユーザーに尋ねることで、要求されたパーミッションを付与するかどうかを決定します。 
- 
- 
+これによって、アプリケーションが端末にインストールされた際に、インストーラーは、アプリケーションの証明書に署名した関係機関を確認し、場合によってはユーザーに尋ねることで、要求されたパーミッションを付与するかどうかを決定します。
+
+
 パーミッションが付与されると、アプリケーションは保護された機能を使用できるようになります。
 
 パーミッションが付与されなかった場合は、アプリケーションは機能にアクセスできず、ユーザーに通知が表示されることもありません。
- 
+
 </p>
 
 <p>
@@ -464,7 +464,7 @@
 
 アプリケーション自身によって保護が設定されている場合でも、アプリケーションの他のコンポーネントが保護されたアクティビティを起動するために、その使用を要求する必要があります。
 
-  
+
 </p>
 
 <p>
@@ -474,7 +474,7 @@
 
 
 その場合も <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> でその使用を要求する必要があります。
- 
+
 </p>
 
 <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
index 7b97c30..46409f9 100644
--- a/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@
       <li><a href="#intent-view">インテントを使用したカレンダー データの参照</a></li>
     </ol>
   </li>
-  
+
   <li><a href="#sync-adapter">同期アダプタ</a></li>
 </ol>
 
@@ -113,14 +113,14 @@
   </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;イベントのタイトル、場所、開始時刻、終了時刻などが該当します。
 
@@ -132,7 +132,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances}</td>
-    
+
     <td>このテーブルは、あるイベントの発生ごとの開始時刻と終了時刻を保持します。
 各行は、イベントの発生 1 回を表します。
 単発イベントには、イベントのインスタンスが 1 対 1 で対応します。
@@ -141,7 +141,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Attendees}</td>
-    
+
     <td>このテーブルは、イベントの参加者（ゲスト）の情報を保持します。
 各行は、1 回のイベントの 1 人のゲストを表します。
 ゲストのタイプと、ゲストのイベントへの出欠の回答を指定します。
@@ -149,7 +149,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Reminders}</td>
-    
+
     <td>このテーブルは、アラートや通知のデータを保持します。
 各行は、1 回のイベントの 1 つのアラートを表します。1 つのイベントが複数のリマインダーを持つことができます。
 1 イベントあたりの最大リマインダー数は {@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS} で指定され、指定されたカレンダーを所有する同期アダプタによって設定されます。
@@ -159,7 +159,7 @@
 リマインダーは、イベント開始前の分単位で指定され、ユーザーに注意喚起する手段を示す情報を保持します。
 </td>
   </tr>
-  
+
 </table>
 
 <p>カレンダー プロバイダ API は、柔軟で効果的な設計になっています。ですが同時に、エンドユーザーにとって使いやすくすることや、カレンダーとそのデータの整合性を保護することが重要です。
@@ -229,7 +229,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-    
+
     <td>カレンダーが表示対象として選択されているかどうかを示すブール値。値 0 は、このカレンダーに関連付けられているイベントを表示しないことを示します。
 
 値 1 は、このカレンダーに関連付けられているイベントを表示することを示します。
@@ -240,7 +240,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-    
+
     <td>カレンダーを同期してそのイベントを端末に格納するかどうかを示すブール値。
 値 0 は、このカレンダーを同期せず、イベントを端末に格納しないことを指定します。
 値 1 は、このカレンダーのイベントを同期し、イベントを端末に格納することを指定します。
@@ -268,13 +268,13 @@
     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} も含める必要があります。
@@ -289,7 +289,7 @@
 
 
 
-</p> </div> </div> 
+</p> </div> </div>
 
 
 <p> この例の次の部分では、クエリを作成します。クエリの条件は selection に指定しています。
@@ -308,38 +308,38 @@
 <pre>// Run query
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;   
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+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. 
+        "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 項目として指定できます。
@@ -434,7 +434,7 @@
   </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 週間であることを示します。
 
 
@@ -444,24 +444,24 @@
   </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} と組み合わせて、繰り返し発生全体を定義するのに使用します。
@@ -470,13 +470,13 @@
 
 詳細については、<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>
@@ -514,11 +514,11 @@
 
 
 </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} を含める必要があります。
 
 
@@ -528,7 +528,7 @@
 
 
 </li>
-  
+
 </ul>
 
 <p>イベントの挿入の例を次に示します。簡潔にするため、この例は UI スレッドで実行されています。
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -625,7 +625,7 @@
 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);  
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
 </pre>
 
 <h2 id="attendees">Attendees テーブル</h2>
@@ -637,7 +637,7 @@
 この {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} は特定のイベントの {@link android.provider.BaseColumns#_ID} と一致している必要があります。
 
 
-</p> 
+</p>
 
 <p>次の表に、書き込み可能なフィールドを示します。
 新しい参加者を挿入する際には、<code>ATTENDEE_NAME</code> を除くすべてを含める必要があります。
@@ -801,18 +801,18 @@
   </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>
@@ -820,16 +820,16 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>インスタンスの、カレンダーのタイムゾーンにおけるユリウス暦での開始日。 
+    <td>インスタンスの、カレンダーのタイムゾーンにおけるユリウス暦での開始日。
  </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-    
+
     <td>カレンダーのタイムゾーンにおける午前零時を基準にしたインスタンスの開始分。
- 
+
 </td>
-    
+
   </tr>
 
 </table>
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -924,7 +924,7 @@
     <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>
@@ -935,11 +935,11 @@
 
      </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>
 
@@ -952,12 +952,12 @@
   <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>
 
@@ -972,11 +972,11 @@
     <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>
@@ -996,7 +996,7 @@
     <td>イベントの名前。</td>
   </tr>
   <tr>
-  
+
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}
 </td>
     <td>イベントの開始時刻（エポックからのミリ秒単位）。</td>
@@ -1004,25 +1004,25 @@
   <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>次のセクションでは、これらのインテント使用方法を説明します。</p>
 
 
@@ -1059,14 +1059,14 @@
 
 </p>
 
-  
+
 <p>このアプローチのアプリケーションをユーザーが実行すると、アプリケーションによってユーザーがカレンダーに誘導されイベントを追加できるようになります。
 {@link android.content.Intent#ACTION_INSERT INSERT} インテントは、追加フィールドを使用して、カレンダーに格納されている詳細情報をフォームに自動入力します。
 
 それに対して、ユーザーはイベントのキャンセル、必要に応じたイベントの編集、イベントのカレンダーへの保存ができます。
 
 </p>
-  
+
 
 
 <p>次に示すのは、2012 年 1 月 19 日の午前 7:30 から 午前 8:30 までのイベントをスケジュールするコード スニペットです。
@@ -1075,7 +1075,7 @@
 <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} の各エクストラ フィールドを使用して、イベントの時間をフォームに自動入力しています。
 
 
@@ -1083,10 +1083,10 @@
 
 これらの値は、エポックからの UTC ミリ秒単位であることが必要です。
 </li>
-  
+
   <li>{@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL} エクストラ フィールドを使用して、参加者をメールアドレスで示したコンマ区切りリストを指定しています。
 </li>
-  
+
 </ul>
 <pre>
 Calendar beginTime = Calendar.getInstance();
@@ -1158,12 +1158,12 @@
 
 <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>同期アダプタは、アプリケーションやウィジェットより多くの列に書き込みアクセスできます。
   たとえば、アプリケーションで変更できるのは、名前、表示名、可視性の設定、カレンダーが同期対象かどうかなど、カレンダーの特性の一部のみです。
 
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
index e12b62f..09bc249 100644
--- a/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
@@ -2146,19 +2146,19 @@
         viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
 </pre>
 <p>
-    <strong>含まれているファイル:</strong> 
+    <strong>含まれているファイル:</strong>
 </p>
 <p>
     <code>res/xml/contacts.xml</code>
 </p>
 <p>
-    <strong>含めることのできる要素:</strong> 
+    <strong>含めることのできる要素:</strong>
 </p>
 <p>
     <strong><code>&lt;ContactsDataKind&gt;</code></strong>
 </p>
 <p>
-    <strong>説明:</strong> 
+    <strong>説明:</strong>
 </p>
 <p>
     ユーザーが連絡先の 1 人をソーシャル ネットワーキングに招待できるようにしたり、ソーシャル ネットワーキング ストリームのどれかがアップデートされたらユーザーに通知したりするための、Android コンポーネントや UI ラベルを宣言します。
@@ -2170,7 +2170,7 @@
 
 </p>
 <p>
-    <strong>属性:</strong> 
+    <strong>属性:</strong>
 </p>
 <dl>
     <dt>{@code inviteContactActivity}</dt>
@@ -2248,11 +2248,11 @@
         android:detailColumn="<em>column_name</em>"&gt;
 </pre>
 <p>
-    <strong>含まれているファイル:</strong> 
+    <strong>含まれているファイル:</strong>
 </p>
 <code>&lt;ContactsAccountType&gt;</code>
 <p>
-    <strong>説明:</strong> 
+    <strong>説明:</strong>
 </p>
 <p>
     この要素は、カスタムデータ行のコンテンツを未加工連絡先の詳細の一部として連絡先アプリケーションに表示させるために使用します。
@@ -2263,7 +2263,7 @@
 
 </p>
 <p>
-    <strong>属性:</strong> 
+    <strong>属性:</strong>
 </p>
 <dl>
     <dt>{@code android:mimeType}</dt>
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
index af218148..b14174f 100644
--- 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
@@ -377,7 +377,7 @@
         プロバイダの任意のコンテンツ URI に一致します。
     </dd>
     <dt>
-        <code>content://com.example.app.provider/table2/*</code>: 
+        <code>content://com.example.app.provider/table2/*</code>:
     </dt>
     <dd>
         テーブル <code>dataset1</code> と <code>dataset2</code> のコンテンツ URI に一致しますが、<code>table1</code> や <code>table3</code> のコンテンツ URI には一致しません。
@@ -791,7 +791,7 @@
         タイプ部分: <code>vnd</code>
     </li>
     <li>
-        サブタイプ部分: 
+        サブタイプ部分:
         <ul>
             <li>
     URI パターンが 1 つの行の場合: <code>android.cursor.<strong>item</strong>/</code>
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
index 6729e8b6..2024d5d 100644
--- a/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
@@ -110,7 +110,7 @@
   <tr>
     <td><code>drawable/</code></td>
 
-    <td><p>ビットマップ ファイル（{@code .png}、{@code .9.png}、{@code .jpg}、{@code .gif}）または次のドローアブル リソース サブタイプにコンパイルされる XML ファイル: 
+    <td><p>ビットマップ ファイル（{@code .png}、{@code .9.png}、{@code .jpg}、{@code .gif}）または次のドローアブル リソース サブタイプにコンパイルされる XML ファイル:
 </p>
       <ul>
         <li>ビットマップ ファイル</li>
@@ -510,7 +510,7 @@
 
 </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} 設定フィールドもご覧ください。これは、画面のサイズが小、中、大のいずれかであるかを表します。
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/controls.jd b/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
index 0bc2063..c76771f 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <tr>
         <td><a href="controls/radiobutton.html">ラジオボタン</a></td>
         <td>グループで選択できるオプションは 1 つのみであることを除き、チェックボックスと同様です。</td>
-	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
index 358fc30..006dc99 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -142,7 +142,7 @@
 
 <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 class="img-caption"><strong>図 1</strong>
 メッセージと 2 つのアクション ボタンを含むダイアログ</p>
 </div>
 
@@ -248,7 +248,7 @@
   <dt>Neutral</dt>
   <dd>ユーザーがアクションを続けたくない可能性があり、キャンセルしたいとは限らない場合に使います。
 ポジティブ ボタンとネガティブ ボタンの間に表示されます。
-たとえば、「後で通知する」のようなアクションの場合です。</dd> 
+たとえば、「後で通知する」のようなアクションの場合です。</dd>
 </dl>
 
 <p>各ボタンタイプのいずれか 1 つのみを {@link
@@ -258,7 +258,7 @@
 
 <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 class="img-caption"><strong>図 3</strong>
 タイトルとリストを含むダイアログ</p>
 </div>
 
@@ -318,7 +318,7 @@
 <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) 
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} または {@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} メソッドをそれぞれ使用します。
 
 
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -372,7 +372,7 @@
 </pre>
 
 <p>従来のリストとラジオボタンを含むリストでは、「排他的選択」アクションが提供されますが、ユーザーの選択を固定させたい場合は、{@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} を使用してください。つまり、ダイアログを後でもう一度開く場合は、ユーザーの現在の選択を表示し、ラジオボタンを含むリストを作成します。
 
 
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/menus.jd b/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
index 7d8090e..53142a1b 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@
 </p>
   <p><a href="#options-menu">オプション メニューの作成</a>のセクションをご覧ください。</p>
     </dd>
-    
+
   <dt><strong>コンテキスト メニューとコンテキスト アクション モード</strong></dt>
-  
+
    <dd>コンテキスト メニューは、ユーザーが要素を長押しクリックするときに表示される<a href="#FloatingContextMenu">フローティング メニュー</a>です。
 ここでは、選択したコンテンツやコンテキスト フレームに影響するアクションが提供されます。
 
@@ -94,7 +94,7 @@
 </p>
   <p><a href="#context-menu">コンテキスト メニューの作成</a>のセクションをご覧ください。</p>
 </dd>
-    
+
   <dt><strong>ポップアップ メニュー</strong></dt>
     <dd>ポップアップ メニューでは、メニューを呼び出すビューに固定された縦方向のリストでアイテムが表示されます。
 特定のコンテンツに関連するアクションの概要を表示したり、コマンドの 2 番目の部分のオプションを表示したりする場合に適しています。
@@ -135,7 +135,7 @@
   <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>のセクションをご覧ください。
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
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
index f341256..d0f1f72 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
@@ -531,7 +531,7 @@
             <li>
                 必要に応じて、{@link android.support.v4.app.TaskStackBuilder#editIntentAt TaskStackBuilder.editIntentAt()} を呼び出し、スタック上の {@link android.content.Intent} オブジェクトに引数を追加します。
 
-これは、場合によっては、ターゲット {@link android.app.Activity} に、ユーザーが 
+これは、場合によっては、ターゲット {@link android.app.Activity} に、ユーザーが
 
  <i>[戻る]</i> を使って移動したときに、適切なデータが表示されるようにするために必要です。
             </li>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/overview.jd b/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
index 08d9356..7bc49f4 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <p>UI レイアウト作成のガイドについては、<a href="declaring-layout.html">XML レイアウト</a>をご覧ください。
 
 
-  
+
 <h2 id="UIComponents">ユーザー インターフェース コンポーネント</h2>
 
 <p>{@link android.view.View} と {@link android.view.ViewGroup} オブジェクトを使用してすべての UI をビルドする必要はありません。
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/settings.jd b/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
index 9e6bb9d..c36a01c 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
@@ -226,7 +226,7 @@
   <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>。
 
 
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@
 </p>
 
 <p>たとえば、以下は Android 3.0 以降で使用されるプリファレンス ヘッダーの XML ファイル（{@code res/xml/preference_headers.xml}）です。
-</p> 
+</p>
 
 <pre>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index 1cff3f6..b4b3766 100644
--- a/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
@@ -187,7 +187,7 @@
     ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - {@link android.view.ViewGroup} が、イベントが子ビューにディスパッチされたときにイベントを監視できるようにします。
 </li>
   <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
-    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - このメソッドを親ビュー上で呼び出すことで、<code>{@link 
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - このメソッドを親ビュー上で呼び出すことで、<code>{@link
     android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> による親ビューのタップイベントのインターセプトを許可しないことを示すことができます。
 </li>
 </ul>
@@ -199,7 +199,7 @@
 ただし、端末にタッチ機能がある場合は、ユーザーはタップでインターフェースの操作を開始するため、アイテムをハイライトすることや、特定のビューにフォーカスを与えることは必要ではなくなりました。
 
 そのため、「タッチモード」と名付けられた操作モードが存在します。
- 
+
 </p>
 <p>
 タッチ可能な端末では、ユーザーが画面をタップすると、端末がタッチモードになります。
@@ -233,7 +233,7 @@
 
 <p>フォーカスの移動は、所定の方向で最も近くにあるアイテムを見つけるアルゴリズムに基づきますが、
 まれに、デフォルトのアルゴリズムが開発者の意図する動作と一致しない場合もあります。
-この場合、レイアウト ファイルの 
+この場合、レイアウト ファイルの
 
 <var>nextFocusDown</var>、 <var>nextFocusLeft</var>、 <var>nextFocusRight</var>、
 <var>nextFocusUp</var> の各 XML 属性を明示的にオーバーライドできます。これらの属性のいずれかを、フォーカスの移動<em>元</em>のビューに追加します。
@@ -253,11 +253,11 @@
 </pre>
 
 <p>本来、上記の縦方向のレイアウトでは、1 番上のボタンから上に移動しようとしても、2 番目のボタンから下に移動しようしても、どこにもフォーカスが移動しないはずでしたが、上記の処理により、
-1 番上のボタンによって 1 番下のボタンが 
+1 番上のボタンによって 1 番下のボタンが
  <var>nextFocusUp</var>  として定義され（逆の場合も同様）、フォーカスが、上から下と下から上に順番に移動するようになります。
 </p>
 
-<p>UI でビューをフォーカス可能にする場合は（従来は、ビューはフォーカス可能ではありません）、レイアウトの宣言で <code>android:focusable</code> XML 属性をビューに追加し、値を 
+<p>UI でビューをフォーカス可能にする場合は（従来は、ビューはフォーカス可能ではありません）、レイアウトの宣言で <code>android:focusable</code> XML 属性をビューに追加し、値を
 
  <var>true</var> に設定します。また、<code>android:focusableInTouchMode</code> を使用して、タッチモードのときにビューをフォーカス可能にすることもできます。
 </p>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/ja/preview/download-ota.jd b/docs/html-intl/intl/ja/preview/download-ota.jd
index 1107baf..835597b 100644
--- a/docs/html-intl/intl/ja/preview/download-ota.jd
+++ b/docs/html-intl/intl/ja/preview/download-ota.jd
@@ -202,65 +202,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
-      MD5:15fe2eba9b01737374196bdf0a792fe9<br>
-      SHA-1:5014b2bba77f9e1a680ac3f90729621c85a14283
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
-      MD5: e8b12f7721c53af9a450f7058928a5fc<br>
-      SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
-      MD5:3fac09fef759dde26e57cb80b20b6477<br>
-      SHA-1:27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
-      MD5:58312c4a5971818ef5c77a3f446003da<br>
-      SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
-      MD5:92b7d1fa252f7394e70f957c72d4aac8<br>
-      SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
-      MD5:1461622ad53ea842b2722fa7b49b8172<br>
-      SHA-1:409c061668ab270774877d7f3eae44fa48d2b931
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
-      MD5: c60117f3640cc6db12386fd632289c7d<br>
-      SHA-1:87349c767c69efb4172c90ce1d88cf578c3d28b3
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
-    <td>General Mobile 4G（Android One） <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
-      MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
-      SHA-1:6f33742290eb46f2561891f38ca2e754b4e50c6a
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/ja/preview/download.jd b/docs/html-intl/intl/ja/preview/download.jd
index 52c3c6c..52f7ae4 100644
--- a/docs/html-intl/intl/ja/preview/download.jd
+++ b/docs/html-intl/intl/ja/preview/download.jd
@@ -300,72 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
-      MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
-      SHA-1:5ba4053577007d15c96472206e3a79bc80ab194c
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
-      MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
-      SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
-      MD5: e93de7949433339856124c3729c15ebb<br>
-      SHA-1:81c341d57ef2cd139569b055d5d59e9e592a7abd
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
-      MD5:565be87ebb2d5937e2abe1a42645864b<br>
-      SHA-1:2b50e19dae2667b27f911e3c61ed64860caf43e1
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
-      MD5: a8464e15c6683fe2afa378a63e205fda<br>
-      SHA-1:2e89ebe67a46b2f3beb050746c13341cd11fa678
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
-      MD5: c0dbb7db671f61b2785da5001cedefcb<br>
-      SHA-1:1de74874f8d83e14d642f13b5a2130fc2aa55873
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
-      MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
-      SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
-    <td>General Mobile 4G（Android One） <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
-      MD5:7d34a9774fdd6e025d485ce6cfc23c4c<br>
-      SHA-1:5ab1212bc9417269d391aacf1e672fff24b4ecc5
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> （D6603 および D6653）</td>
-    <td>ダウンロード:<a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      詳細については、<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Xperia Z3 に Android N Developer Preview を試す</a>を参照してください。
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/ja/preview/features/background-optimization.jd b/docs/html-intl/intl/ja/preview/features/background-optimization.jd
index 1ea9f2e..04921c7 100644
--- a/docs/html-intl/intl/ja/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/ja/preview/features/background-optimization.jd
@@ -248,7 +248,7 @@
   setPeriodic()} または {@link android.app.job.JobInfo.Builder#setPersisted
   setPersisted()} と組み合わせて使うことはできません。
 コンテンツの変更を継続的に監視するには、アプリの {@link
-  android.app.job.JobService} が最新のコールバックの処理を完了する前に、新しい 
+  android.app.job.JobService} が最新のコールバックの処理を完了する前に、新しい
 {@link android.app.job.JobInfo} をスケジュールします。
 </p>
 
diff --git a/docs/html-intl/intl/ja/preview/features/direct-boot.jd b/docs/html-intl/intl/ja/preview/features/direct-boot.jd
index 6ba1852..933e682 100644
--- a/docs/html-intl/intl/ja/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ja/preview/features/direct-boot.jd
@@ -58,16 +58,16 @@
 <p>ダイレクト ブート モード中にアプリを実行したり、端末暗号化ストレージにアクセスしたりするには、アプリ コンポーネントの登録が必要です。
 
 アプリをシステムに登録するには、コンポーネントが
-<i>暗号化対応するように指定します。</i>コンポーネントが暗号化対応するよう指定するには、マニフェスト内で 
+<i>暗号化対応するように指定します。</i>コンポーネントが暗号化対応するよう指定するには、マニフェスト内で
 <code>android:directBootAware</code> 属性を true に設定します。<p>
 
-<p>暗号化対応コンポーネントを登録しておくと、端末を再起動したときにシステムから 
+<p>暗号化対応コンポーネントを登録しておくと、端末を再起動したときにシステムから
 <code>LOCKED_BOOT_COMPLETED</code> ブロードキャスト メッセージを受信できます。
 この時点で端末暗号化ストレージが使用できるようになり、ダイレクト ブート モード中にコンポーネントが実行しなければならないタスクを実行できます。たとえば、スケジュールしたアラームのトリガーなどが該当します。
 
 </p>
 
-<p>次のコード スニペットは、アプリのマニフェスト内で 
+<p>次のコード スニペットは、アプリのマニフェスト内で
 {@link android.content.BroadcastReceiver} を暗号化対応として登録し、<code>LOCKED_BOOT_COMPLETED</code> のインテント フィルタを追加する方法の例を示しています。
 </p>
 
@@ -126,7 +126,7 @@
 
 <p>ユーザーが端末をアップデートしてダイレクト ブート モードを使用できるようになると、既存のデータを端末暗号化ストレージに移行しなければならない場合があります。
 
-<code>Context.moveSharedPreferencesFrom()</code> および 
+<code>Context.moveSharedPreferencesFrom()</code> および
 <code>Context.moveDatabaseFrom()</code> を使用すると、設定およびデータベースのデータを認証情報暗号化ストレージと端末暗号化ストレージ間で移行できます。
 </p>
 
diff --git a/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
index cf2063f..6a25cec 100644
--- a/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
+++ b/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
@@ -49,7 +49,7 @@
 <h2 id="relation">ICU4J との関係</h2>
 
 <p>
-  Android N では、<code>com.ibm.icu</code> ではなく 
+  Android N では、<code>com.ibm.icu</code> ではなく
 <code>android.icu</code> パッケージを介して ICU4J API のサブセットを公開しています。Android フレームワークでは、さまざまな理由により ICU4J API を公開しないという選択も考えられます。たとえば、Android N で廃止された API を公開しないため、または ICU チームからまだ安定版の発表がないため、などの理由があります。
 
 
diff --git a/docs/html-intl/intl/ja/preview/features/multi-window.jd b/docs/html-intl/intl/ja/preview/features/multi-window.jd
index 4ad3d94..dba58be 100644
--- a/docs/html-intl/intl/ja/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ja/preview/features/multi-window.jd
@@ -146,7 +146,7 @@
   ユーザーがウィンドウのサイズを変更して、高さや幅を拡大した場合、ユーザー操作に一致するようにアクティビティのサイズが変更され、必要に応じて、<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更</a>が発行されます。
 
 アプリで新しく表示された領域を描画するまでに時間がかかる場合、{@link
-  android.R.attr#windowBackground windowBackground} 属性またはデフォルトの 
+  android.R.attr#windowBackground windowBackground} 属性またはデフォルトの
 <code>windowBackgroundFallback</code> システム属性によって指定された色でこれらの領域が一時的に塗りつぶされます。
 
 </p>
@@ -158,7 +158,7 @@
 サイズとレイアウトを制御するための属性をマニフェストに設定できます。
 
   ルート アクティビティ属性の設定は、タスクスタック内のすべてのアクティビティに適用されます。
-たとえば、ルート アクティビティにより 
+たとえば、ルート アクティビティにより
 <code>android:resizeableActivity</code> が true に設定されると、タスク スタック内のすべてのアクティビティのサイズを変更できるようになります。
 
 </p>
@@ -175,7 +175,7 @@
 
 <h4 id="resizeableActivity">android:resizeableActivity</h4>
 <p>
-  マルチ ウィンドウ ディスプレイを有効または無効にするには、この属性をマニフェストの <code>&lt;activity&gt;</code> ノードまたは 
+  マルチ ウィンドウ ディスプレイを有効または無効にするには、この属性をマニフェストの <code>&lt;activity&gt;</code> ノードまたは
 <code>&lt;application&gt;</code> ノードに設定します。
 
 </p>
@@ -361,7 +361,7 @@
 <h3 id="entering-pip">ピクチャ イン ピクチャ モードにする</h3>
 
 <p>
-  アクティビティをピクチャ イン ピクチャ モードにするには、新しいメソッド 
+  アクティビティをピクチャ イン ピクチャ モードにするには、新しいメソッド
 <code>Activity.enterPictureInPictureMode()</code> を呼び出します。端末がピクチャ イン ピクチャ モードをサポートしない場合、このメソッドの効果はありません。
 詳細については、<a href="picture-in-picture.html">ピクチャ イン ピクチャ</a>に関するドキュメントをご覧ください。
 
@@ -371,7 +371,7 @@
 
 <p>
   新しいアクティビティを起動するときに、可能であれば、新しいアクティビティを現在のアクティビティの隣に表示する必用があるかどうかをシステムに示すことができます。
-そうするには、フラグ 
+そうするには、フラグ
 <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code> を使用します。
 このフラグを渡すと、次の動作がリクエストされます。
 
@@ -434,10 +434,10 @@
   </dt>
 
   <dd>
-    {@link android.view.View#startDrag View.startDrag()} の新しいエイリアスです。異なるアクティビティ間のドラッグ＆ドロップを有効にするには、新しいフラグ 
+    {@link android.view.View#startDrag View.startDrag()} の新しいエイリアスです。異なるアクティビティ間のドラッグ＆ドロップを有効にするには、新しいフラグ
 <code>View.DRAG_FLAG_GLOBAL</code> を渡します。
-URI パーミッションを受け取る側のアクティビティに付与する必要がある場合、必要に応じて、新しいフラグ 
-<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> または 
+URI パーミッションを受け取る側のアクティビティに付与する必要がある場合、必要に応じて、新しいフラグ
+<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> または
 <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code> を渡します。
 
   </dd>
@@ -581,7 +581,7 @@
 <h3 id="test-disabled-mw">マルチ ウィンドウのサポートを無効にしている場合</h3>
 
 <p>
-  
+
 <code>android:resizableActivity="false"</code> を設定して、マルチ ウィンドウのサポートを無効にした場合は、Android N を実行している端末でアプリを起動し、アプリをフリーフォーム モードおよび分割画面モードにすることを試みる必要があります。
 
 アプリをマルチ ウィンドウ モードにすることを試みたとき、アプリが全画面モードのままであることを確認してください。
diff --git a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
index faf63ea..0bb4a75 100644
--- a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
@@ -72,8 +72,8 @@
 
 <h2 id="declaring">アクティビティがピクチャ イン ピクチャをサポートしていることを宣言する</h2>
 
-<p>デフォルトでは、システムはアプリの PIP を自動的にサポートしません。アプリで PIP をサポートする場合、マニフェストで 
-<code>android:supportsPictureInPicture</code> および 
+<p>デフォルトでは、システムはアプリの PIP を自動的にサポートしません。アプリで PIP をサポートする場合、マニフェストで
+<code>android:supportsPictureInPicture</code> および
 <code>android:resizeableActivity</code> を <code>true</code> に設定して、動画アクティビティを登録します。
 
 また、アクティビティがレイアウトの設定変更を処理するように指定して、PIP モードの遷移中にレイアウト変更が発生しても、アクティビティが再開しないようにします。
@@ -120,14 +120,14 @@
 <p class="img-caption"><strong>図 1.</strong> メディア コントロール バー上の [Picture-in-picture] ボタン
 </p>
 
-<p>Android N には、新しい 
+<p>Android N には、新しい
 <code>PlaybackControlsRow.PictureInPictureAction</code> クラスが含まれています。このクラスは、コントロール バーの PIP アクションと PIP アイコンの使用方法を定義します。
 </p>
 
 <h2 id="handling_ui">ピクチャ イン ピクチャの実行中に UI を処理する</h2>
 
 <p>アクティビティが PIP モードを開始したら、動画の再生のみを表示する必要があります。
-アクティビティが PIP を開始する前に UI 要素を削除して、再び全画面表示に戻ったら、削除した要素を復元します。<code>Activity.onPictureInPictureModeChanged()</code> または 
+アクティビティが PIP を開始する前に UI 要素を削除して、再び全画面表示に戻ったら、削除した要素を復元します。<code>Activity.onPictureInPictureModeChanged()</code> または
 <code>Fragment.onPictureInPictureModeChanged()</code> をオーバーライドして、必要に応じて UI 要素を有効または無効にします。次に例を示します。
 
 
@@ -152,7 +152,7 @@
 <p>アクティビティを PIP に切り替えると、システムはそのアクティビティを一時停止状態と見なして、アクティビティの <code>onPause()</code> メソッドを呼び出します。
 PIP モードによってアクティビティが一時停止になっても、動画の再生は一時停止せず、再生を続ける必要があります。
 
-アクティビティの 
+アクティビティの
 <code>onPause()</code> メソッドで PIP を確認し、適切に再生を処理してください。次に例を示します。
 </p>
 
@@ -180,7 +180,7 @@
 
 </p>
 
-<p>動画再生リクエストに対して単一のアクティビティが使用されるようにし、必要に応じて PIP モードの切り替えが行われるようにするには、マニフェストでアクティビティの 
+<p>動画再生リクエストに対して単一のアクティビティが使用されるようにし、必要に応じて PIP モードの切り替えが行われるようにするには、マニフェストでアクティビティの
 <code>android:launchMode</code> を <code>singleTask</code> に設定します。
 
 </p>
diff --git a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
index e77e481..e4f9ae2 100644
--- a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
@@ -37,16 +37,16 @@
 
 <h2 id="accessing">外部ストレージのディレクトリへのアクセス</h2>
 
-<p><code>StorageManager</code> クラスを使用して、適切な 
-<code>StorageVolume</code> インスタンスを取得します。次に、そのインスタンスの 
+<p><code>StorageManager</code> クラスを使用して、適切な
+<code>StorageVolume</code> インスタンスを取得します。次に、そのインスタンスの
 <code>StorageVolume.createAccessIntent()</code> メソッドを呼び出して、インテントを作成します。このインテントを使用して、外部ストレージのディレクトリにアクセスします。
 リムーバブル メディア ボリュームなど、使用できるすべてのボリュームのリストを取得するには、<code>StorageManager.getVolumesList()</code> を使用します。
 
 </p>
 
 <p>特定のファイルに関する情報がある場合は、
-<code>StorageManager.getStorageVolume(File)</code> を使用して、そのファイルを含む 
-<code>StorageVolume</code> を取得します。この <code>StorageVolume</code> で 
+<code>StorageManager.getStorageVolume(File)</code> を使用して、そのファイルを含む
+<code>StorageVolume</code> を取得します。この <code>StorageVolume</code> で
 <code>createAccessIntent()</code> を呼び出し、このファイルの外部ストレージ ディレクトリにアクセスします。
 </p>
 
@@ -58,7 +58,7 @@
 
 </p>
 
-<p>次のコード スニペットは、プライマリ共有ストレージの 
+<p>次のコード スニペットは、プライマリ共有ストレージの
 <code>Pictures</code> ディレクトリを開く方法の例を示しています。</p>
 
 <pre>
@@ -109,7 +109,7 @@
 &lt;/receiver&gt;
 </pre>
 
-<p>ユーザーが SD カードなどのリムーバブル メディアをマウントすると、システムは 
+<p>ユーザーが SD カードなどのリムーバブル メディアをマウントすると、システムは
 {@link android.os.Environment#MEDIA_MOUNTED} 通知を送信します。この通知は、インテント データ内の <code>StorageVolume</code> オブジェクトを提供します。このオブジェクトを使用して、リムーバブル メディア上のディレクトリにアクセスできます。
 
 次の例では、リムーバブル メディア上の <code>Pictures</code> ディレクトリにアクセスします。
@@ -127,7 +127,7 @@
 <h2 id="best">ベスト プラクティス</h2>
 
 <p>外部ディレクトリのアクセス URI はできる限り保持してください。そうすれば、ユーザーに何度もアクセス要求をする必要がなくなります。
-ユーザーがアクセスを付与したら、ディレクトリのアクセス URI を指定して 
+ユーザーがアクセスを付与したら、ディレクトリのアクセス URI を指定して
 <code>getContentResolver().takePersistableUriPermssion()</code> を呼び出します。
 システムが URI を保持し、以降のアクセス要求では <code>RESULT_OK</code> を返して、ユーザーに確認の UI を表示しません。
 
diff --git a/docs/html-intl/intl/ja/preview/setup-sdk.jd b/docs/html-intl/intl/ja/preview/setup-sdk.jd
index 37fa0867..06b24ca 100644
--- a/docs/html-intl/intl/ja/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/ja/preview/setup-sdk.jd
@@ -92,7 +92,7 @@
     <a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
     <td width="100%">
       MD5:19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7 
+      SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
     </td>
   </tr>
 <table>
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd
index 837fc2b..3fd3f47 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/index.jd
@@ -55,7 +55,7 @@
 </p>
 
 <h2>レッスン</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">アクティビティを開始する</a></b></dt>
   <dd>アクティビティのライフサイクルに関する基本、ユーザーがアプリを起動する方法、基本的なアクティビティ作成の方法について学習します。
@@ -68,5 +68,5 @@
   <dt><b><a href="recreating.html">アクティビティを再作成する</a></b></dt>
   <dd>アクティビティが破棄されるときの動作と、必要に応じてアクティビティの状態を再構築する方法について学習します。
 </dd>
-</dl> 
+</dl>
 
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd
index b837a00..fd21ef0 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>このレッスンでの学習内容</h2>
     <ol>
       <li><a href="#Pause">アクティビティを一時停止する</a></li>
       <li><a href="#Resume">アクティビティを再開する</a></li>
     </ol>
-    
+
     <h2>関連ドキュメント</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">アクティビティ</a>
@@ -59,7 +59,7 @@
 
 
 <h2 id="Pause">アクティビティを一時停止する</h2>
-      
+
 <p>システムがアクティビティに対して {@link android.app.Activity#onPause()} を呼び出した場合、技術的にはアクティビティはまだ部分的に表示されていることを意味しますが、ほとんどの場合は、ユーザーがアクティビティを離れていて、ほどなく停止状態になる徴候を示しています。
 
 通常、以下を行う場合には、{@link android.app.Activity#onPause()} コールバックを使用する必要があります。
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd
index 8647375..5753f13 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>このレッスンでの学習内容</h2>
     <ol>
       <li><a href="#SaveState">自分のアクティビティ状態を保存する</a></li>
       <li><a href="#RestoreState">自分のアクティビティ状態をリストアする</a></li>
     </ol>
-    
+
     <h2>関連ドキュメント</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">異なる画面のサポート
@@ -73,7 +73,7 @@
 
 <img src="{@docRoot}images/training/basics/basic-lifecycle-savestate.png" />
 <p class="img-caption"><strong>図 2.</strong> システムがアクティビティを停止し始めると、
-{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}（1）が呼び出されるため、{@link android.app.Activity} インスタンスの再作成の必要がある場合に備えて、保存する追加の状態データを指定できます。アクティビティが破棄され、同じインスタンスを再作成する必要がある場合、システムは（1）で定義された状態データを {@link android.app.Activity#onCreate onCreate()} メソッド（2）と 
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}（1）が呼び出されるため、{@link android.app.Activity} インスタンスの再作成の必要がある場合に備えて、保存する追加の状態データを指定できます。アクティビティが破棄され、同じインスタンスを再作成する必要がある場合、システムは（1）で定義された状態データを {@link android.app.Activity#onCreate onCreate()} メソッド（2）と
 {@link android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} メソッド（3）の両方に渡します。
 
 
@@ -105,7 +105,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -138,7 +138,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -157,12 +157,12 @@
 復元対象の保存済みの状態がある場合のみ {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} が呼び出されるため、
 {@link android.os.Bundle} が null であるかどうかをチェックする必要はありません。</p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd
index 124c323..06fcf80 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>このレッスンでの学習内容</h2>
 <ol>
   <li><a href="#lifecycle-states">ライフサイクル コールバックを理解する</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">新しいインスタンスを作成する</a></li>
   <li><a href="#Destroy">アクティビティを破棄する</a></li>
 </ol>
-    
+
     <h2>関連ドキュメント</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">アクティビティ</a></li>
@@ -83,7 +83,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -138,7 +138,7 @@
 
 
 
-<h2 id="launching-activity">アプリのランチャー アクティビティを指定する</h2> 
+<h2 id="launching-activity">アプリのランチャー アクティビティを指定する</h2>
 
 <p>ユーザーがホーム画面からアプリのアイコンを選択すると、システムはアプリ内で「ランチャー」（または「メイン」）のアクティビティであると宣言された {@link android.app.Activity} に対して {@link
 android.app.Activity#onCreate onCreate()} メソッドを呼び出します。
@@ -151,7 +151,7 @@
 <p>アプリのメインのアクティビティは、{@link
 android.content.Intent#ACTION_MAIN MAIN} アクションと {@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} カテゴリを含む <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a> を使用してマニフェストで宣言する必要があります。
-次に例を示します。</p> 
+次に例を示します。</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -180,7 +180,7 @@
 
 </p>
 
-<p>アクティビティの存続期間すべてにわたり、一度のみ発生すべき基本的なアプリの起動ロジックを実行するための 
+<p>アクティビティの存続期間すべてにわたり、一度のみ発生すべき基本的なアプリの起動ロジックを実行するための
 {@link android.app.Activity#onCreate onCreate()} メソッドを実装する必要があります。たとえば、
 {@link android.app.Activity#onCreate onCreate()} の実装では、ユーザー インターフェースを定義し、場合によってはいくつかのクラススコープの変数をインスタンス化する必要があります。
 </p>
@@ -200,10 +200,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd
index 0007fe6..b267cc8 100644
--- a/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/ja/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>このレッスンでの学習内容</h2>
     <ol>
       <li><a href="#Stop">アクティビティを停止する</a></li>
       <li><a href="#Start">アクティビティを開始/再起動する</a></li>
     </ol>
-    
+
     <h2>関連ドキュメント</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">アクティビティ</a>
@@ -78,7 +78,7 @@
 {@link android.app.Activity#onStop()} を使用してメモリのリークを引き起こす可能性があるリソースを解放することが重要です。
 </p>
 
-<p>{@link android.app.Activity#onPause onPause()} メソッドが 
+<p>{@link android.app.Activity#onPause onPause()} メソッドが
 {@link android.app.Activity#onStop()} の前に呼び出されますが、データベースに情報を書き込むような、規模が大きく CPU に負荷がかかるシャットダウン操作を実行するためには {@link android.app.Activity#onStop onStop()}を使用する必要があります。
 
 </p>
@@ -152,13 +152,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html-intl/intl/ja/training/basics/data-storage/files.jd b/docs/html-intl/intl/ja/training/basics/data-storage/files.jd
index dddfe37..b920c1a 100644
--- a/docs/html-intl/intl/ja/training/basics/data-storage/files.jd
+++ b/docs/html-intl/intl/ja/training/basics/data-storage/files.jd
@@ -183,7 +183,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -250,7 +250,7 @@
 
 
 
- 
+
   <p>たとえば、自分のアプリでダウンロードした追加のリソースや一時的なメディア ファイルです。</p>
   </dd>
 </dl>
@@ -265,7 +265,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -287,7 +287,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -366,7 +366,7 @@
 
 <div class="note">
 <p><strong>注:</strong> ユーザーがアプリをアンインストールすると、Android システムは次を削除します。
-</p> 
+</p>
 <ul>
 <li>内部ストレージに保存したすべてのファイル</li>
 <li>{@link
diff --git a/docs/html-intl/intl/ja/training/basics/intents/filters.jd b/docs/html-intl/intl/ja/training/basics/intents/filters.jd
index 1bcb266..3cf614d 100644
--- a/docs/html-intl/intl/ja/training/basics/intents/filters.jd
+++ b/docs/html-intl/intl/ja/training/basics/intents/filters.jd
@@ -152,7 +152,7 @@
 <p>アクティビティで実行するアクションを決定するために、起動時に使用された {@link
 android.content.Intent} を読み取ることができます。</p>
 
-<p>アクティビティが開始されたら、{@link android.app.Activity#getIntent()} を呼び出して、アクティビティを開始した 
+<p>アクティビティが開始されたら、{@link android.app.Activity#getIntent()} を呼び出して、アクティビティを開始した
 {@link android.content.Intent} を取得します。アクティビティのライフサイクル中はいつでもこれを行うことができますが、通常は、
 {@link android.app.Activity#onCreate onCreate()} や {@link android.app.Activity#onStart()} などの早い段階のコールバックの間に行う必要があります。
 </p>
diff --git a/docs/html-intl/intl/ja/training/basics/intents/sending.jd b/docs/html-intl/intl/ja/training/basics/intents/sending.jd
index 586bc15..d2a24f8 100644
--- a/docs/html-intl/intl/ja/training/basics/intents/sending.jd
+++ b/docs/html-intl/intl/ja/training/basics/intents/sending.jd
@@ -93,7 +93,7 @@
 さまざまな {@link
 android.content.Intent#putExtra(String,String) putExtra()} メソッドを使用して、特別データを 1 つ以上追加することができます。</p>
 
-<p>デフォルトでは、インテントに含まれる 
+<p>デフォルトでは、インテントに含まれる
 {@link android.net.Uri} データに基づいて、インテントに必要な適切な MIME タイプをシステムが決定します。インテントに {@link android.net.Uri} が含まれていない場合は、通常は {@link android.content.Intent#setType setType()} を使用して、インテントに関連するデータのタイプを指定する必要があります。
 
 MIME タイプの詳細な指定により、どの種類のアクティビティがインテントを受け取るかが指定されます。
diff --git a/docs/html-intl/intl/ja/training/material/animations.jd b/docs/html-intl/intl/ja/training/material/animations.jd
index 460147c..06a3a56 100644
--- a/docs/html-intl/intl/ja/training/material/animations.jd
+++ b/docs/html-intl/intl/ja/training/material/animations.jd
@@ -173,7 +173,7 @@
 </ul>
 
 <p>{@link android.transition.Visibility} クラスを拡張する Transition はすべて、EnterTransition または ExitTransition としてサポートされます。
-詳細については、API リファレンスの 
+詳細については、API リファレンスの
 {@link android.transition.Transition} クラスをご覧ください。</p>
 
 <p>Android 5.0（API レベル 21）では、次の共有要素遷移もサポートしています。</p>
@@ -226,7 +226,7 @@
 &lt;/transitionSet>
 </pre>
 
-<p><code>changeImageTransform</code> 要素は 
+<p><code>changeImageTransform</code> 要素は
 {@link android.transition.ChangeImageTransform} クラスに対応します。詳細については、API リファレンスの {@link android.transition.Transition} をご覧ください。
 </p>
 
@@ -263,7 +263,7 @@
 有効にしていないと、呼び出し元のアクティビティが Exit 遷移を開始したあと、window 遷移（スケールやフェードなど）が起きます。
 </p>
 
-<p>Enter 遷移をできるだけ早く開始するには、呼び出し先のアクティビティで 
+<p>Enter 遷移をできるだけ早く開始するには、呼び出し先のアクティビティで
 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
  メソッドを使用します。これにより、さらに印象的な Enter 遷移になります。</p>
 
@@ -321,7 +321,7 @@
 {@link android.view.View#setTransitionName View.setTransitionName()} メソッドを使用して両方のアクティビティに共通の要素名を指定します。
 </p>
 
-<p>2 つ目のアクティビティが終了したときにシーンの切り替えアニメーションを逆回転させるには、{@link android.app.Activity#finish Activity.finish()} の代わりに 
+<p>2 つ目のアクティビティが終了したときにシーンの切り替えアニメーションを逆回転させるには、{@link android.app.Activity#finish Activity.finish()} の代わりに
 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
  メソッドを呼び出します。</p>
 
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd
index c4aafe4..0b7d602 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@
 next.link=docking-monitoring.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>このレッスンの内容</h2>
@@ -24,9 +24,9 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 <p>バックグラウンド更新が電池消費量に及ぼす影響を抑えるために更新の頻度を変更するには、初めに現在の電池残量と充電状態を調べることをおすすめします。</p>
 
 <p>アプリの更新が電池消費量に及ぼす影響の度合いは、端末の電池残量と充電状態によって異なります。AC 電源から端末を充電しているときは、更新の実行による影響はごくわずかなので、ほとんどの場合は、端末が AC 電源に接続されている限り、更新頻度を最大にして差し支えありません。逆に、端末が電池で駆動しているときは、更新頻度を下げると電池消費量を抑えることができます。</p>
@@ -34,8 +34,8 @@
 <p>同様に、電池残量を調べると、残量がごくわずかであるときに更新頻度を下げたり、場合によっては停止させたりすることができます。</p>
 
 
-<h2 id="DetermineChargeState">現在の充電状態を特定する</h2> 
- 
+<h2 id="DetermineChargeState">現在の充電状態を特定する</h2>
+
 <p>初めに、現在の充電状態を特定します。{@link android.os.BatteryManager} によって電池と充電状態に関するすべての詳細情報が sticky {@link android.content.Intent} としてブロードキャストされますが、この中に充電状態が格納されています。</p>
 
 <p>これは sticky インテントであるため、{@link android.content.BroadcastReceiver} を登録する必要はありません。{@code registerReceiver} を呼び出し、{@code null} をレシーバとして渡すだけで（次のコード例を参照）、現在の電池状態のインテントが返されます。ここで実際の {@link android.content.BroadcastReceiver} オブジェクトを渡すこともできますが、このレッスンでは後で更新についての処理を行うので、これは必要ありません。</p>
@@ -58,7 +58,7 @@
 <p>一般的には、端末が AC 充電器に接続されているときはバックグラウンド更新の頻度を最大にし、USB 経由で充電中のときは頻度を下げ、電池で駆動中のときはさらに頻度を下げます。</p>
 
 
-<h2 id="MonitorChargeState">充電状態の変化を監視する</h2> 
+<h2 id="MonitorChargeState">充電状態の変化を監視する</h2>
 
 <p>充電状態は、端末が充電器に接続されたときにすぐに変化するので、充電状態の変化を監視し、その変化に応じて更新の頻度を変更することが重要です。</p>
 
@@ -75,11 +75,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 == BATTERY_PLUGGED_USB;
         boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@
 }</pre>
 
 
-<h2 id="CurrentLevel">現在の電池残量を特定する</h2> 
+<h2 id="CurrentLevel">現在の電池残量を特定する</h2>
 
 <p>状況によっては、現在の電池残量がわかると便利なことがあります。たとえば、電池残量が所定のレベルを下回った場合にアプリのバックグラウンド更新の頻度を下げることができます。</p>
 
@@ -99,7 +99,7 @@
 float batteryPct = level / (float)scale;</pre>
 
 
-<h2 id="MonitorLevel">電池残量の大きな変化を監視する</h2> 
+<h2 id="MonitorLevel">電池残量の大きな変化を監視する</h2>
 
 <p>電池状態を継続的に監視することは簡単ではありませんが、その必要もありません。</p>
 
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
index 82b0c6b..6cead05 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>このレッスンの内容</h2>
@@ -27,7 +27,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>反復アラームとバックグラウンド サービスの用途のうち代表的なものとしては、インターネット リソースからアプリのデータを定期的に更新するためのスケジュール設定や、データのキャッシュへの格納、長時間に及ぶダウンロードの実行などがあります。しかし、インターネットに接続されていないときや、速度が低すぎるためにダウンロードを完了できない場合にまで、更新をスケジューリングするために端末をスリープ状態から復帰させる必要があるでしょうか。</p>
@@ -35,18 +35,18 @@
 <p>{@link android.net.ConnectivityManager} を使用すると、端末が実際にインターネットに接続されているかどうかと、接続されている場合の接続タイプを調べることができます。</p>
 
 
-<h2 id="DetermineConnection">インターネット接続の有無を特定する</h2> 
- 
+<h2 id="DetermineConnection">インターネット接続の有無を特定する</h2>
+
 <p>端末がインターネットに接続されていない場合は、インターネット リソースに基づく更新をスケジューリングする必要性はありません。次のスニペットは、{@link android.net.ConnectivityManager} を使用してアクティブなネットワークを問い合わせて、インターネットに接続しているかどうかを特定する方法を示すものです。</p>
 
 <pre>ConnectivityManager cm =
         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
 
 
-<h2 id="DetermineType">インターネット接続のタイプを特定する</h2> 
+<h2 id="DetermineType">インターネット接続のタイプを特定する</h2>
 
 <p>現在使用可能なインターネット接続のタイプも調べることができます。</p>
 
@@ -59,7 +59,7 @@
 <p>更新を停止した場合は、接続状態の変化を受信することが重要です。インターネット接続が確立されたら更新を再開できるようにするためです。</p>
 
 
-<h2 id="MonitorChanges">接続状態の変化を監視する</h2> 
+<h2 id="MonitorChanges">接続状態の変化を監視する</h2>
 
 <p>接続状態の詳細が変化すると、{@link android.net.ConnectivityManager} によって {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}（{@code "android.net.conn.CONNECTIVITY_CHANGE"}）アクションがブロードキャストされます。アプリのマニフェスト内でブロードキャスト レシーバを登録し、このような変化を検出することで、それに応じてアプリのバックグラウンド更新を再開（または停止）することができます。</p>
 
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd
index 9c0e054..7d227df 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>このレッスンの内容</h2>
@@ -26,7 +26,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Android 搭載端末を装着できるホルダーの種類には、さまざまなものがあります。たとえば、車載用や家庭用のホルダーがあり、デジタルかアナログかという区別もあります。ホルダー装着状態は一般的に、充電状態と密接にリンクしています。多くのホルダーは、装着されている端末に電力を供給しているからです。</p>
@@ -36,8 +36,8 @@
 <p>ホルダー装着状態も sticky {@link android.content.Intent} としてブロードキャストされるので、端末がホルダーに装着されているかどうかと、装着されている場合のホルダーのタイプを問い合わせることができます。</p>
 
 
-<h2 id="CurrentDockState">現在のホルダー装着状態を特定する</h2> 
- 
+<h2 id="CurrentDockState">現在のホルダー装着状態を特定する</h2>
+
 <p>ホルダー装着状態の詳細は、{@link android.content.Intent#ACTION_DOCK_EVENT} アクションの sticky ブロードキャストにエクストラとして含まれています。これは sticky であるため、{@link android.content.BroadcastReceiver} を登録する必要はありません。次のコード例に示すように、{@link android.content.Context#registerReceiver registerReceiver()} を呼び出し、{@code null} をブロードキャスト レシーバとして渡します。</p>
 
 <pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@
 boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
 
 
-<h2 id="DockType">現在のホルダーのタイプを特定する</h2> 
+<h2 id="DockType">現在のホルダーのタイプを特定する</h2>
 
-<p>端末がホルダーに装着されている場合のホルダーのタイプは、次の 4 つのいずれかです。 
+<p>端末がホルダーに装着されている場合のホルダーのタイプは、次の 4 つのいずれかです。
 <ul><li>カー</li>
 <li>卓上</li>
 <li>ローエンド（アナログ）卓上</li>
@@ -60,12 +60,12 @@
 <p>最後の 2 つは、Android API レベル 11 で追加されたものです。したがって、ホルダーのタイプだけがわかればよく、デジタルとアナログの区別は問わないという場合は、次のように 3 つすべてについて調べるとよいでしょう。</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">ホルダーの装着状態またはタイプの変化を監視する</h2> 
+<h2 id="MonitorDockState">ホルダーの装着状態またはタイプの変化を監視する</h2>
 
 <p>端末がホルダーに装着されたり、装着が解除されたりするたびに、{@link android.content.Intent#ACTION_DOCK_EVENT} アクションがブロードキャストされます。端末のホルダー装着状態の変化を監視するには、次のコード例に示すように、アプリのマニフェスト内でブロードキャスト レシーバを登録します。</p>
 
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd
index 07897b1..9a983e9 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
-<h2>依存関係と前提条件</h2> 
+<h2>依存関係と前提条件</h2>
 <ul>
   <li>Android 2.0（API レベル 5）以上</li>
   <li>「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」を読み終えていること</li>
@@ -21,19 +21,19 @@
   <li><a href="{@docRoot}guide/components/services.html">サービス</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>アプリを開発するときは、ホスト端末の電池消費量への影響を抑えるよう心がける必要があります。このクラスを修了すると、開発するアプリの中でホスト端末の状態を監視し、それに基づいて機能や動作を変更することができるようになります。</p>
 
 <p>接続が失われたときはバックグラウンド サービスの更新を停止する、電池残量が低下したときは更新の頻度を下げるといった対策を講じることにより、ユーザー エクスペリエンスを損なうことなく、アプリが電池消費量に及ぼす影響を最小限に抑えることができます。</p>
 
-<h2>レッスン</h2> 
- 
+<h2>レッスン</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="battery-monitoring.html">電池残量と充電状態の監視</a></b></dt>
   <dd>アプリの更新頻度を変更するために現在の電池残量や充電状態の変化を特定および監視する方法を学習します。</dd>
@@ -46,4 +46,4 @@
 
   <dt><b><a href="manifest-receivers.html">オンデマンドでのブロードキャスト レシーバ操作</a></b></dt>
   <dd>マニフェスト内で宣言したブロードキャスト レシーバのオンとオフを実行時に切り替えます。端末の状態に応じて、不要なレシーバを無効にすることができます。効率を上げるために、状態変化レシーバのオンとオフを切り替える方法や、端末が特定の状態になるまでアクションを延期する方法を学習します。</dd>
-</dl> 
\ No newline at end of file
+</dl>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd
index 7635d9f..eff1221 100644
--- a/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/ja/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>このレッスンの内容</h2>
@@ -23,7 +23,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>端末の状態変化を監視する最も単純な方法は、監視対象とする状態ごとに {@link android.content.BroadcastReceiver} を作成し、それぞれをアプリのマニフェスト内で登録するというものです。これらの各レシーバ内で、端末の現在の状態に基づいて反復アラームのスケジュールを再設定します。</p>
@@ -31,10 +31,10 @@
 <p>この方法のデメリットは、これらのレシーバのいずれかがトリガされるたびに端末がスリープから復帰することですが、このことは必要以上に頻繁に発生する可能性があります。</p>
 
 <p>これよりも良い方法は、実行時にブロードキャスト レシーバをオンまたはオフにするというものです。このようにすれば、マニフェスト内で宣言したレシーバを受動的アラームとして使用できます。つまり、このアラームは、必要なときにだけシステム イベントによって呼び出されます。</p>
- 
 
-<h2 id="ToggleReceivers">効率を上げるために状態変化レシーバのオンとオフを切り替える </h2> 
- 
+
+<h2 id="ToggleReceivers">効率を上げるために状態変化レシーバのオンとオフを切り替える </h2>
+
 <p>{@link android.content.pm.PackageManager} を使用すると、マニフェスト内で定義されているコンポーネントの有効化状態を切り替えることができます。このコンポーネントにはブロードキャスト レシーバも該当するので、次に示すようにオンとオフを切り替えることができます。</p>
 
 <pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd b/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd
index 8b1e6ac..c738d39 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
+<div id="tb-wrapper">
+<div id="tb">
+
 <h2>このレッスンでの学習内容</h2>
 
 <ol>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">タブレットと携帯端末のサポート</a></li>
 </ul>
- 
+
 <h2>試してみる</h2>
- 
+
 <div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>アプリが現在表示しているレイアウトによって、UI フローが異なる可能性があります。たとえば、アプリがデュアルペイン モードであれば、左ペインのアイテムをクリックすると、単に右ペインにコンテンツが表示されるだけですが、シングルペイン モードであれば、コンテンツは（別のアクティビティ内の）コンテンツ専用のペインに表示される必要があります。</p>
 
@@ -56,7 +56,7 @@
         setContentView(R.layout.main_layout);
 
         View articleView = findViewById(R.id.article);
-        mIsDualPane = articleView != null &amp;&amp; 
+        mIsDualPane = articleView != null &amp;&amp;
                         articleView.getVisibility() == View.VISIBLE;
     }
 }
@@ -116,7 +116,7 @@
     else {
         /* use list navigation (spinner) */
         actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
-        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+        SpinnerAdapter adap = new ArrayAdapter<String>(this,
                 R.layout.headline_item, CATEGORIES);
         actionBar.setListNavigationCallbacks(adap, handler);
     }
@@ -168,7 +168,7 @@
 public class HeadlinesFragment extends ListFragment {
     ...
     &#64;Override
-    public void onItemClick(AdapterView&lt;?&gt; parent, 
+    public void onItemClick(AdapterView&lt;?&gt; parent,
                             View view, int position, long id) {
         if (null != mHeadlineSelectedListener) {
             mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/ja/training/multiscreen/index.jd b/docs/html-intl/intl/ja/training/multiscreen/index.jd
index 9e01584..f1ee24a 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
-<h2>必要な知識と前提条件</h2> 
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>必要な知識と前提条件</h2>
 
 <ul>
   <li>Android 1.6 以上（サンプル アプリを使用するには 2.1 以上）</li>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/screens_support.html">複数画面のサポート</a></li>
 </ul>
- 
-<h2>試してみる</h2> 
- 
-<div class="download-box"> 
+
+<h2>試してみる</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
- 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
 <p>Android は、小さな携帯電話から大きなテレビまで、画面サイズも種類もさまざまなデバイスに搭載できます。そのため、できる限り多くのユーザーが使用できるように、すべての画面サイズに対応できるようアプリを設計することが重要になります。</p>
 
 <p>しかし、さまざまな種類のデバイスに対応できるだけでは十分ではありません。画面サイズによって、ユーザーが操作できることが決まってくるため、本当にユーザーを満足させてよい印象を持ってもらうためには、アプリが単に複数の画面をサポートするだけでは不十分です: 画面設定ごとにユーザー エクスペリエンスを最適化する必要があります。<em></em><em></em></p>
@@ -48,17 +48,17 @@
 
 <p class="note"><strong>注:</strong> このクラスと関連サンプルでは、<a
 href="{@docRoot}tools/support-library/index.html">サポート ライブラリ</a>を使用します。理由は、Android 3.0 未満のバージョンで <PH>{@link android.app.Fragment}</PH> API を使用するためです。このクラスのすべての API を使用するには、ライブラリをダウンロードして、アプリに追加する必要があります。</p>
- 
 
-<h2>レッスン</h2> 
- 
-<dl> 
-  <dt><b><a href="screensizes.html">さまざまな画面サイズのサポート</a></b></dt> 
-    <dd>このレッスンでは、さまざまな画面サイズに適したレイアウトを（柔軟なビュー サイズ、 <PH>{@link android.widget.RelativeLayout}</PH>、画面サイズと画面の向きの修飾子、エイリアス フィルタ、ナインパッチ ビットマップを使用して）設計する方法について学習します。</dd> 
- 
-  <dt><b><a href="screendensities.html">さまざまな画面密度のサポート</a></b></dt> 
-    <dd>このレッスンでは、（密度非依存ピクセルを使用し、各密度に適したビットマップを提供して）ピクセル密度が異なる画面をサポートする方法について学習します。</dd> 
- 
-  <dt><b><a href="adaptui.html">順応性のある UI フローの実装</a></b></dt> 
-    <dd>このレッスンでは、いくつかの画面サイズ/密度の組み合わせに適した方法（実行時にアクティブなレイアウトを検出する方法、現在のレイアウトに合わせて応答する方法、画面設定の変更を処理する方法）で UI を実装する方法について学習します。</dd> 
-</dl> 
+
+<h2>レッスン</h2>
+
+<dl>
+  <dt><b><a href="screensizes.html">さまざまな画面サイズのサポート</a></b></dt>
+    <dd>このレッスンでは、さまざまな画面サイズに適したレイアウトを（柔軟なビュー サイズ、 <PH>{@link android.widget.RelativeLayout}</PH>、画面サイズと画面の向きの修飾子、エイリアス フィルタ、ナインパッチ ビットマップを使用して）設計する方法について学習します。</dd>
+
+  <dt><b><a href="screendensities.html">さまざまな画面密度のサポート</a></b></dt>
+    <dd>このレッスンでは、（密度非依存ピクセルを使用し、各密度に適したビットマップを提供して）ピクセル密度が異なる画面をサポートする方法について学習します。</dd>
+
+  <dt><b><a href="adaptui.html">順応性のある UI フローの実装</a></b></dt>
+    <dd>このレッスンでは、いくつかの画面サイズ/密度の組み合わせに適した方法（実行時にアクティブなレイアウトを検出する方法、現在のレイアウトに合わせて応答する方法、画面設定の変更を処理する方法）で UI を実装する方法について学習します。</dd>
+</dl>
diff --git a/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd b/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd
index 3482d5c..6f9136c 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>このレッスンでの学習内容</h2>
 <ol>
@@ -29,15 +29,15 @@
 </ul>
 
 <h2>試してみる</h2>
- 
-<div class="download-box"> 
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>このレッスンでは、異なるリソースを生成し、かつ解像度非依存単位を使用して、異なる画面密度をサポートする方法について学習します。</p>
 
@@ -48,8 +48,8 @@
 <p>たとえば、2 つのビューの間にスペースを挿入する場合は、<code>px</code> ではなくて <code>dp</code> を使用します:</p>
 
 <pre>
-&lt;Button android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+&lt;Button android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:text="&#64;string/clickme"
     android:layout_marginTop="20dp" /&gt;
 </pre>
@@ -57,8 +57,8 @@
 <p>テキスト サイズを指定する場合は、常に <code>sp</code> を使用します:</p>
 
 <pre>
-&lt;TextView android:layout_width="match_parent" 
-    android:layout_height="wrap_content" 
+&lt;TextView android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:textSize="20sp" /&gt;
 </pre>
 
diff --git a/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd b/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd
index 3655a33..49c1793 100644
--- a/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/ja/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>このレッスンでの学習内容</h2>
 <ol>
@@ -30,26 +30,26 @@
   <li><a href="{@docRoot}guide/practices/screens_support.html">複数画面のサポート</a></li>
 </ul>
 
-<h2>試してみる</h2> 
- 
-<div class="download-box"> 
+<h2>試してみる</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">サンプル アプリのダウンロード</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
 
 <p>このレッスンでは、異なる画面サイズを以下のような方法でサポートする方法について学習します:</p>
-<ul> 
-  <li>画面に収まるようにレイアウト サイズを適切に変更する</li> 
-  <li>画面設定に基づいて適切な UI レイアウトを表示する</li> 
+<ul>
+  <li>画面に収まるようにレイアウト サイズを適切に変更する</li>
+  <li>画面設定に基づいて適切な UI レイアウトを表示する</li>
   <li>適切な画面に適切なレイアウトを適用する</li>
-  <li>適切にサイズ調整したビットマップを表示する</li> 
-</ul> 
+  <li>適切にサイズ調整したビットマップを表示する</li>
+</ul>
 
 
-<h2 id="TaskUseWrapMatchPar">「wrap_content」と「match_parent」を使用する</h2> 
+<h2 id="TaskUseWrapMatchPar">「wrap_content」と「match_parent」を使用する</h2>
 
 <p>レイアウトをさまざまな画面サイズに柔軟に対応させるには、一部のビュー コンポーネントの幅と高さに <code>"wrap_content"</code> と <code>"match_parent"</code> を使用する必要があります。<code>"wrap_content"</code> を使用すると、ビューの幅や高さがそのビュー内にコンテンツが収まるのに必要な最小サイズに設定されます。一方、<code>"match_parent"</code>（API レベル 8 より前の名称は <code>"fill_parent"</code>）を使用すると、コンポーネントがその親ビューのサイズに一致するまで拡大されます。</p>
 
@@ -65,7 +65,7 @@
 <p class="img-caption"><strong>図 1.</strong> News Reader サンプル アプリの縦表示（左）と横表示（右）</p>
 
 
-<h2 id="TaskUseRelativeLayout">RelativeLayout を使用する</h2> 
+<h2 id="TaskUseRelativeLayout">RelativeLayout を使用する</h2>
 
 <p>ネストされた <PH>{@link android.widget.LinearLayout} インスタンスや、</PH> <code>"wrap_content"</code> と <code>"match_parent"</code> のサイズの組み合わせを使用すると、かなり複雑なレイアウトを作成できます。しかし、 <PH>{@link android.widget.LinearLayout}</PH> では、子ビューの空間的な位置関係を正確に制御することはできません。 <PH>{@link android.widget.LinearLayout} のビューは、</PH> 単に一列に並ぶだけです。子ビューに対して直線以外のさまざまな配置を実現する必要がある場合は、 <PH>{@link android.widget.RelativeLayout}</PH>を使用することでうまくいくことがよくあります。たとえば、1 つの子ビューを画面の左側に配置し、もう 1 つの子ビューを右側に配置できます。</p>
 
@@ -115,8 +115,8 @@
 
 <p>コンポーネントのサイズが変更されても、 <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>で指定されたとおりに空間的な位置関係が維持されていることがわかります。</p>
 
- 
-<h2 id="TaskUseSizeQuali">サイズ修飾子を使用する</h2> 
+
+<h2 id="TaskUseSizeQuali">サイズ修飾子を使用する</h2>
 
 <p>柔軟なレイアウトや相対的なレイアウトから得られる恩恵は、前のセクションで説明したことくらいです。これらのレイアウトはコンポーネントの内部や周囲のスペースを引き延ばすことでさまざまな画面に対応しますが、それぞれの画面サイズに合った最高のユーザー エクスペリエンスを実現していない可能性があります。したがって、アプリでは、柔軟なレイアウトの実装だけではなく、さまざまな画面設定に合わせた複数の代替レイアウトも必要になります。これは、<a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">設定修飾子</a>を使用することで実現可能です。設定修飾子により、ランタイムが現在のデバイスの設定に基づいて適切なリソース（画面サイズ別のレイアウト デザインなど）を自動的に選択できます。</p>
 
@@ -158,7 +158,7 @@
 <p>ただし、Android 3.2 未満のデバイスではこの修飾子は機能しません。これは <code>sw600dp</code> をサイズ修飾子として認識できないためです。したがって、引き続き <code>large</code> 修飾子も使用する必要があります。そこで、<code>res/layout-sw600dp/main.xml</code> と同じ内容の <code>res/layout-large/main.xml</code> という名前のファイルも必要になります。次のセクションでは、このようにレイアウト ファイルの重複を避けるためのテクニックについて学習します。</p>
 
 
-<h2 id="TaskUseAliasFilters">レイアウト エイリアスを使用する</h2> 
+<h2 id="TaskUseAliasFilters">レイアウト エイリアスを使用する</h2>
 
 <p>最小幅修飾子は、Android 3.2 以上でしか利用できません。したがって、旧バージョンとの互換性を維持するために、あいまいなサイズ分類（small、normal、large、xlarge）も併用することが必要です。たとえば、携帯端末ではシングルペイン UI、7 インチ タブレットやテレビなどの大きなデバイスではマルチペイン UI を表示するよう UI を設計する場合、以下のようなファイルが必要になります:</p>
 
@@ -202,7 +202,7 @@
 <PH>Android 3.2 未満のタブレット/テレビは {@code large} に一致し、</PH>Android 3.2 以上のタブレット/テレビは <code>sw600dp</code> に一致します）タブレット/テレビに適用されます。</p>
 
 
-<h2 id="TaskUseOriQuali">画面の向きの修飾子を使用する</h2> 
+<h2 id="TaskUseOriQuali">画面の向きの修飾子を使用する</h2>
 
 <p>横表示と縦表示が両方とも正しく表示されるレイアウトもありますが、ほとんどのレイアウトは調整が必要になります。以下に、News Reader サンプル アプリの各画面のサイズと向きでレイアウトがどのように表示されるかを示します:</p>
 
diff --git a/docs/html-intl/intl/ko/about/versions/android-5.0.jd b/docs/html-intl/intl/ko/about/versions/android-5.0.jd
index 48d542e..b4217c6 100644
--- a/docs/html-intl/intl/ko/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/ko/about/versions/android-5.0.jd
@@ -381,7 +381,7 @@
 <h3 id="AudioPlayback">오디오 재생</h3>
 <p>이 출시 버전에는 다음과 같은 {@link android.media.AudioTrack}에 대한 변경사항이 포함되어 있습니다.</p>
 <ul>
-  <li>이제 앱에서 부동 소수점 형식({@link android.media.AudioFormat#ENCODING_PCM_FLOAT ENCODING_PCM_FLOAT})으로 오디오 데이터를 제공할 수 있습니다. 이를 통해 더 큰 음량비, 더 일관된 정밀도 및 더 큰 헤드룸이 가능해졌습니다. 부동 소수점 연산은 중간 과정 계산에 특히 유용합니다. 재생 엔드포인트는 오디오 데이터에 낮은 비트 심도로 정수 형식을 사용합니다 (Android 5.0에서 일부 내부 파이프라인은 아직 부동 소수점이 아님). 
+  <li>이제 앱에서 부동 소수점 형식({@link android.media.AudioFormat#ENCODING_PCM_FLOAT ENCODING_PCM_FLOAT})으로 오디오 데이터를 제공할 수 있습니다. 이를 통해 더 큰 음량비, 더 일관된 정밀도 및 더 큰 헤드룸이 가능해졌습니다. 부동 소수점 연산은 중간 과정 계산에 특히 유용합니다. 재생 엔드포인트는 오디오 데이터에 낮은 비트 심도로 정수 형식을 사용합니다 (Android 5.0에서 일부 내부 파이프라인은 아직 부동 소수점이 아님).
   <li>이제 앱에서 오디오 데이터를 {@link android.media.MediaCodec}에서 제공하는 것과 같은 형식인 {@link java.nio.ByteBuffer}로 제공할 수 있습니다.
   <li>{@link android.media.AudioTrack#WRITE_NON_BLOCKING WRITE_NON_BLOCKING} 옵션은 일부 앱에서 버퍼링 및 멀티스레딩을 단순화할 수 있습니다.
 </ul>
@@ -429,7 +429,7 @@
 <p>시스템에서 적절한 네트워크를 감지하면 감지한 네트워크에 연결하고 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 콜백을 호출합니다. 콜백의 {@link android.net.Network} 개체를 사용하여 네트워크에 대한 추가 정보를 가져오거나, 트래픽이 선택한 네트워크를 사용하도록 유도합니다.</p>
 
 <h3 id="BluetoothBroadcasting">저전력 블루투스</h3>
-<p>Android 4.3에서는 <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">저전력 블루투스</a>(<em>블루투스 LE</em>)에 대한 플랫폼 지원이 도입되었습니다. Android 5.0에서는 Android 기기가 블루투스 LE <em>주변기기</em>로 작동할 수 있습니다. 앱에서 이 기능을 사용하여 주변 기기에 블루투스로 연결할 수 있음을 알릴 수 있습니다. 예를 들어 기기가 만보계나 건강 모니터링 기기로 작동하면서 다른 블루투스 LE 기기와 데이터를 통신할 수 있도록 하는 앱을 제작할 수 있습니다.</p> 
+<p>Android 4.3에서는 <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">저전력 블루투스</a>(<em>블루투스 LE</em>)에 대한 플랫폼 지원이 도입되었습니다. Android 5.0에서는 Android 기기가 블루투스 LE <em>주변기기</em>로 작동할 수 있습니다. 앱에서 이 기능을 사용하여 주변 기기에 블루투스로 연결할 수 있음을 알릴 수 있습니다. 예를 들어 기기가 만보계나 건강 모니터링 기기로 작동하면서 다른 블루투스 LE 기기와 데이터를 통신할 수 있도록 하는 앱을 제작할 수 있습니다.</p>
 <p>새 {@link android.bluetooth.le} API를 사용하면 앱에서 광고를 브로드캐스팅하고, 응답을 스캔하며, 주변의 블루투스 LE 기기와 연결을 설정하도록 할 수 있습니다. 새 광고 및 스캔 기능을 사용하려면 매니페스트에 {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 권한을 추가합니다. 사용자가 Play 스토어에서 앱을 업데이트하거나 다운로드할 때 사용자에게 앱에 권한을 부여할 것인지 묻는 메시지('블루투스 연결 정보: 주변의 블루투스 기기에 브로드캐스팅하거나 이러한 기기에 대한 정보 수집하는 등 앱에서 블루투스를 제어하도록 허용합니다.')가 표시됩니다.</p>
 
 <p>다른 앱에서 내 앱을 찾을 수 있도록 블루투스 LE 광고를 시작하려면 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()}을 호출하고 이를 {@link android.bluetooth.le.AdvertiseCallback} 클래스 구현에 전달합니다. 콜백 개체는 광고 작업의 성공 또는 실패에 대한 보고서를 수신합니다.</p>
diff --git a/docs/html-intl/intl/ko/design/patterns/navigation.jd b/docs/html-intl/intl/ko/design/patterns/navigation.jd
index 5f335d5..91d1dcc 100644
--- a/docs/html-intl/intl/ko/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ko/design/patterns/navigation.jd
@@ -152,7 +152,7 @@
 
 <h2 id="between-apps">앱 간 탐색</h2>
 
-<p>Android 시스템의 본질적인 강점 중 하나는 앱이 
+<p>Android 시스템의 본질적인 강점 중 하나는 앱이
 다른 앱을 실행할 수 있다는 점이며, 이로 인해 사용자는 한 앱에서 다른 앱으로 직접 이동할 수 있습니다. 예를 들어,
 사진을 캡처해야 하는 앱은 카메라 앱을 작동시킬 수 있으며, 카메라 앱은 사진을
 해당 앱으로 돌려줍니다. 이러한 기능은 개발자와 사용자 모두에게 매우 유용합니다.
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/about.jd b/docs/html-intl/intl/ko/distribute/googleplay/about.jd
index 57b5226..2968ed4 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@
 
 @jd:body
 
-    <div id="qv-wrapper">           
+    <div id="qv-wrapper">
   <div id="qv">
   <h2>Google Play 정보</h2>
     <ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/auto.jd b/docs/html-intl/intl/ko/distribute/googleplay/auto.jd
index 6536f1a..5b93b6b 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/auto.jd
@@ -32,7 +32,7 @@
 
 <p>
   시작하려면 이 문서를 참조하여 Google Play를 통해 사용자에게 Auto 앱을 배포하는 방법을 배우십시오.
- 앱이 충족해야 하는 유용성, 품질 및 안전 관련 가이드라인에 대한 내용은 
+ 앱이 충족해야 하는 유용성, 품질 및 안전 관련 가이드라인에 대한 내용은
 <a href="{@docRoot}distribute/essentials/quality/auto.html">Auto 앱 품질</a>
 을 참조하십시오.
  앱이 준비되면 개발자 콘솔의 약관에 동의하고 검토용 APK를 업로드할 수 있습니다.
@@ -98,7 +98,7 @@
   Auto 앱은 잘 작동하고 차 안에서 멋있게 보이고 최고의 사용자 경험을 제공하도록 디자인해야 합니다.
    Google Play는 사용자가 Google Play에서 쉽게 검색할 수 있도록 선정된 고품질 Auto 앱을 소개합니다.
  다음과 같은 방법으로 참여하여 사용자에게 멋진 Android Auto 앱을 제공할 수 있습니다.
-  
+
 </p>
 
 <ul>
@@ -127,7 +127,7 @@
 
 <p>
   약관에 동의한 후에만 Auto 앱을 업로드할 수 있습니다. 다음은 Auto 앱을 지정하는 기준에 대한 설명입니다.
-  
+
 </p>
 
 <ul>
@@ -159,10 +159,10 @@
 
 <p>
   검토는 휴대폰이나 태블릿 등 Google Play 스토어의 다른 장치에서 앱의 사용 가능성을 결정합니다.
-  
+
   휴대폰/태블릿 구성요소 업데이트를 포함한 기존 앱이 있는 경우, Android Auto 구성요소가 검토를 통과해야 Google Play 스토어에서 업데이트된 앱을 사용할 수 있습니다.
 
-  
+
 </p>
 
 <p>
@@ -209,7 +209,7 @@
 <p>앱이 승인되지 않으면 개발자는 해결해야 할 문제에 대한 요약이 포함된 <strong>알림 이메일을 개발자 계정 주소</strong>로 받게 됩니다.
    필요한 조정을 거친 후에 새로운 앱 버전을 개발자 콘솔에 업로드할 수 있습니다.
 
-  
+
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd
index b2dc6d5..fca59e8 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@
 Xnonavpage=true
 
 @jd:body
-    
-    <div id="qv-wrapper">           
+
+    <div id="qv-wrapper">
   <div id="qv">
     <h2>게시 기능</h2>
     <ol>
@@ -420,7 +420,7 @@
   <li>가격을 책정합니다.
   </li>
 
-  <li>앱을 포함한 제품을 게시하거나, 사용하지 않는 제품을 회수합니다. 
+  <li>앱을 포함한 제품을 게시하거나, 사용하지 않는 제품을 회수합니다.
   </li>
 </ul>
 
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd
index 92dbcf0..8bf330d 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>이 문서의 내용</h2>
@@ -141,7 +141,7 @@
  앱이 모든 프로그램 요구사항을 준수할 경우 게시 시간이 평소보다 오래 걸리지 않습니다. 하지만 Designed for Families 검토 중에 앱이 거부되면 게시가 지연될 수 있습니다.
 
 
- 
+
   </dd>
 
   <dt>
@@ -163,7 +163,7 @@
 
   <dt>
     앱을 게시한 후에 Designed for Families 프로그램 요구사항을 준수하지 않는 것으로 확인되면 어떻게 됩니까?
- 
+
   </dt>
 
   <dd>
@@ -185,7 +185,7 @@
 
   <dt>
     Designed for Families 프로그램에서 승인된 앱을 업데이트하면 어떻게 됩니까?
-    
+
   </dt>
 
   <dd>
@@ -265,7 +265,7 @@
 
  인앱 광고를 포함한 전반적인 사용자 경험이 <a href="https://support.google.com/googleplay/android-developer/answer/6184502">Designed for Families 프로그램 요구사항</a>을 충족하도록 보장하는 것은 개발자의 책임입니다.
 
- 
+
   </dd>
 
   <dt>
@@ -297,7 +297,7 @@
   </dt>
 
   <dd>
-    당사는 부모와 보호자가 Google Play 스토어에서 신뢰할 수 있는 브랜드와 개발자가 제작한 우수한 아동 및 가족용 앱을 찾을 수 있도록 하는 것을 목표로 합니다. 
+    당사는 부모와 보호자가 Google Play 스토어에서 신뢰할 수 있는 브랜드와 개발자가 제작한 우수한 아동 및 가족용 앱을 찾을 수 있도록 하는 것을 목표로 합니다.
 
 
   </dd>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd b/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd
index 06f76b5..4a93b564 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@
 
 <p class="note">
   <strong>참고:</strong> Designed for Families 프로그램에 게시된 앱은 Google Play의 모든 사용자도 사용할 수 있습니다.
- 
+
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/guide.jd b/docs/html-intl/intl/ko/distribute/googleplay/guide.jd
index e8d25ff..2a622b7 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/guide.jd
@@ -34,7 +34,7 @@
 
   <li>
     <strong>사용자 확보 및 유지</strong> &mdash; 앱을 설치한 사람을 실제 사용자로 확보하고 해당 사용자를 효율적으로 유지하는 방법을 안내합니다.
-    
+
   </li>
 
   <li>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd
index c914aab..cec3dc6 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@
         <li><a href="#listing">Google Play</a></li>
 
   </ol>
-  
+
   <h2>테스트</h2>
   <ol>
     <li><a href="#test-environment">테스트 환경 설정</a></li>
@@ -24,7 +24,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">태블릿 앱 품질</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">앱 최적화</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -59,7 +59,7 @@
 
 
 
-  
+
 </p>
 
 <div class="headerLine">
@@ -84,7 +84,7 @@
     <th style="width:54px;">
       ID
     </th>
-    
+
 
     <th>
       설명
@@ -166,7 +166,7 @@
   </td>
   <td>
     어디서든지 홈 버튼을 누르면 장치의 홈 화면으로 이동합니다.
-    
+
   </td>
   <td>
     <a href="#core">CR-1</a>
@@ -292,7 +292,7 @@
     앱이 핵심 기능과 관련되지 않은 경우 사용자가 비용을 지불할 수 있는 서비스(예: 전화 걸기 또는 SMS) 또는 민감한 데이터(예: 연락처 또는 시스템 로그)에 대한 액세스 권한을 요청하지 않습니다.
 
 
-    
+
     </p>
   </td>
   </tr>
@@ -594,7 +594,7 @@
   </td>
   <td>
     정상적인 앱 사용 및 로드 시 음악 및 동영상 재생이 매끄럽고 잔금, 버벅거림 또는 기타 아티팩트가 없습니다.
- 
+
   </td>
   <td>
     <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd
index 6cf38c3..23ddbcb 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/quality/tablets.jd
@@ -56,7 +56,7 @@
 
 <p>뛰어난 태블릿 앱 경험을 제공하는 첫 번째 단계는 앱이 대상으로 삼은 모든 장치 및 폼 팩터에 대한 <em>핵심 앱 품질 기준</em>을 충족하는지 확인하는 것입니다.
 
- 자세한 내용은 <a href="{@docRoot}distribute/essentials/quality/core.html">핵심 앱 품질 가이드라인</a>을 참조하십시오. 
+ 자세한 내용은 <a href="{@docRoot}distribute/essentials/quality/core.html">핵심 앱 품질 가이드라인</a>을 참조하십시오.
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd
index 7ab9367..e35e566 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/quality/wear.jd
@@ -331,7 +331,7 @@
   </td>
   <td>
     <p style="margin-bottom:.5em;">
-      앱이 필요한 경우 확인 애니메이션을 표시합니다. 
+      앱이 필요한 경우 확인 애니메이션을 표시합니다.
       (<a href="{@docRoot}design/wear/patterns.html#Countdown">방법 알아보기</a>)
     </p>
   </td>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/start.jd b/docs/html-intl/intl/ko/distribute/googleplay/start.jd
index f5dd1b3..495df80 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/start.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/start.jd
@@ -75,7 +75,7 @@
   <li>해당 국가 또는 지역의 <strong>개발자 배포 계약</strong>을 읽고 동의합니다.
  Google Play에 게시하는 앱 및 스토어 목록은 개발자 프로그램 정책 및 미국 수출 법규를 준수해야 합니다.
 
-  
+
   </li>
 
   <li>Google Wallet을 사용하여 <strong>등록 수수료로 미화 25달러</strong>를 지불합니다. Google Wallet 계정이 없는 경우 프로세스 진행 중에 계정을 설정할 수 있습니다.
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/tv.jd b/docs/html-intl/intl/ko/distribute/googleplay/tv.jd
index 58f4c2e..3efa93bd 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/tv.jd
@@ -261,7 +261,7 @@
 
  필요한 조정을 거친 후에 새로운 앱 버전을 개발자 콘솔에 업로드할 수 있습니다.
 
- 
+
 </p>
 
 <p>
@@ -282,7 +282,7 @@
 
   <li>
     <em>승인됨</em> — 앱이 검토 후에 승인되었습니다. Android TV 사용자가 앱을 바로 사용할 수 있습니다.
- 
+
   </li>
 
   <li>
diff --git a/docs/html-intl/intl/ko/distribute/googleplay/wear.jd b/docs/html-intl/intl/ko/distribute/googleplay/wear.jd
index 864f668..1f916c2 100644
--- a/docs/html-intl/intl/ko/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/ko/distribute/googleplay/wear.jd
@@ -121,7 +121,7 @@
   Wear 앱은 잘 작동하고 Android Wear에서 멋있게 보이고 최고의 사용자 경험을 제공하도록 디자인해야 합니다.
    Google Play는 사용자가 쉽게 검색할 수 있도록 선정된 고품질 Wear 앱을 소개합니다.
  다음과 같은 방법으로 참여하여 사용자에게 멋진 Android Wear 앱을 제공할 수 있습니다.
- 
+
 </p>
 
 <ul>
diff --git a/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd
index a8a2dcd..623c129 100644
--- a/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/ko/distribute/tools/launch-checklist.jd
@@ -197,7 +197,7 @@
 <p>
   Android 장치에서 Android 사용자는 검색에 사용할 완성도를 설정할 수 있습니다.
  Google Play는 설정에 따라 앱을 필터링하므로 선택한 콘텐츠 등급은 사용자에게 앱을 배포하는 데 영향을 줄 수 있습니다.
- 앱 바이너리를 변경할 필요 없이 개발자 콘솔에서 앱의 콘텐츠 등급을 할당(또는 변경)할 수 있습니다. 
+ 앱 바이너리를 변경할 필요 없이 개발자 콘솔에서 앱의 콘텐츠 등급을 할당(또는 변경)할 수 있습니다.
 
 
 </p>
@@ -764,7 +764,7 @@
 
 <p>
   개발자 콘솔에서 앱의 대상 지역을 설정한 후에 지원하는 모든 언어에 대해 현지화된 스토어 목록, 홍보 그래픽 등을 추가하십시오.
- 
+
 
 </p>
 
diff --git a/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd
index cf46481..4cc9735 100644
--- a/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/ko/distribute/tools/localization-checklist.jd
@@ -187,7 +187,7 @@
 
 
 
-  
+
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/ko/guide/components/activities.jd b/docs/html-intl/intl/ko/guide/components/activities.jd
index 001982f..255a111 100644
--- a/docs/html-intl/intl/ko/guide/components/activities.jd
+++ b/docs/html-intl/intl/ko/guide/components/activities.jd
@@ -44,31 +44,31 @@
 
 
 
-<p>{@link android.app.Activity}는 일종의 애플리케이션 구성 요소로서, 
-사용자와 상호작용할 수 있는 화면을 제공하여 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기 등의 일을 할 수 
-있습니다. 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어올 수 있습니다. 이 창은 
-일반적으로 화면을 가득 채우지만, 작은 창으로 만들어 다른 창 위에 띄울 수도 
+<p>{@link android.app.Activity}는 일종의 애플리케이션 구성 요소로서,
+사용자와 상호작용할 수 있는 화면을 제공하여 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기 등의 일을 할 수
+있습니다. 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어올 수 있습니다. 이 창은
+일반적으로 화면을 가득 채우지만, 작은 창으로 만들어 다른 창 위에 띄울 수도
 있습니다.</p>
 
-<p> 하나의 애플리케이션은 보통 여러 개의 액티비티가 느슨하게 서로 묶여 있는 형태로 
-구성됩니다. 통상 한 애플리케이션 내에서 하나의 액티비티가 "주요" 액티비티로 지정되며, 
-사용자가 이 애플리케이션을 처음 실행할 때 이 액티비티가 사용자에게 표시됩니다. 그런 후 
+<p> 하나의 애플리케이션은 보통 여러 개의 액티비티가 느슨하게 서로 묶여 있는 형태로
+구성됩니다. 통상 한 애플리케이션 내에서 하나의 액티비티가 "주요" 액티비티로 지정되며,
+사용자가 이 애플리케이션을 처음 실행할 때 이 액티비티가 사용자에게 표시됩니다. 그런 후
 각각의 액티비티는 여러 가지 작업을 수행하기 위해 또 다른 액티비티를 시작할 수 있습니다. 새로운
 액티비티가 시작될 때마다 이전 액티비티는 중단되지만 시스템은 해당 액티비티를
-스택("백 스택")에 보존합니다. 새로운 액티비티가 시작되면, 이것이 백 스택 위로 밀려와 사용자의 
-시선을 끕니다. 백 스택은 기본적인 "후입선출" 방식을 지키므로, 
-사용자가 현재 액티비티를 끝내고 <em>뒤로</em> 버튼을 누르면 해당 액티비티가 
+스택("백 스택")에 보존합니다. 새로운 액티비티가 시작되면, 이것이 백 스택 위로 밀려와 사용자의
+시선을 끕니다. 백 스택은 기본적인 "후입선출" 방식을 지키므로,
+사용자가 현재 액티비티를 끝내고 <em>뒤로</em> 버튼을 누르면 해당 액티비티가
 스택에서 튀어나와(소멸되고) 이전 액티비티를 재개합니다 (백 스택은
 <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업
 및 백 스택</a> 문서에서 상세하게 논의합니다).</p>
 
 <p>한 액티비티가 새로운 액티비티의 시작으로 인해 중단된 경우, 이 상태 변경은
-액티비티의 수명 주기 콜백 메서드를 통해 알려집니다. 
+액티비티의 수명 주기 콜백 메서드를 통해 알려집니다.
 액티비티가 시스템 액티비티를 생성, 중단, 재시작, 제거하는 등의 상태 변화로 인해 받을 수 있는 콜백 메서드는 여러 가지가 있습니다.
 
  각 콜백은 상태 변화에 알맞은 특정 작업을 수행할 기회를 제공합니다.
- 예를 들어 액티비티가 중단되면 네트워크 또는 데이터베이스 연결과 같이 
-큰 개체는 모두 해제해야 합니다. 액티비티가 재개되면, 필요한 리소스를 
+ 예를 들어 액티비티가 중단되면 네트워크 또는 데이터베이스 연결과 같이
+큰 개체는 모두 해제해야 합니다. 액티비티가 재개되면, 필요한 리소스를
 다시 획득하여 중단된 작업을 재개할 수 있습니다. 이러한 상태 전환은
 모두 액티비티 수명 주기의 일부입니다.</p>
 
@@ -83,52 +83,52 @@
 <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>시스템이 이 메서드를 호출하는 것은 사용자가 액티비티를 떠난다는
+첫 번째 신호입니다(다만 이것이 항상 액티비티가 소멸 중이라는 뜻은 아닙니다). 현재 사용자 세션을 넘어서
+지속되어야 하는 변경 사항을 커밋하려면 보통 이곳에서 해아 합니다(사용자가
 돌아오지 않을 수 있기 때문입니다).</dd>
 </dl>
 
-<p>여러 액티비티 사이에서 원활한 사용자 경험을 제공하고, 액티비티 중단이나 심지어 
-소멸을 초래할 수도 있는 예상치 못한 간섭을 처리하기 위해 사용해야 하는 다른 수명 주기 
-콜백 메서드도 여러 가지 있습니다. 모든 수명 주기 콜백 메서드는 나중에 
+<p>여러 액티비티 사이에서 원활한 사용자 경험을 제공하고, 액티비티 중단이나 심지어
+소멸을 초래할 수도 있는 예상치 못한 간섭을 처리하기 위해 사용해야 하는 다른 수명 주기
+콜백 메서드도 여러 가지 있습니다. 모든 수명 주기 콜백 메서드는 나중에
 <a href="#Lifecycle">액티비티 수명 주기 관리</a> 섹션에서 자세히 논의할 것입니다.</p>
 
 
 
 <h3 id="UI">사용자 인터페이스 구현하기</h3>
 
-<p> 한 액티비티에 대한 사용자 인터페이스는 보기 계층&mdash;즉, 
+<p> 한 액티비티에 대한 사용자 인터페이스는 보기 계층&mdash;즉,
 {@link android.view.View} 클래스에서 파생된 개체가 제공합니다.  각 보기는 액티비티 창 안의 특정한 직사각형 공간을
- 제어하며 사용자 상호 작용에 대응할 수 있습니다. 예를 들어, 어떤 보기는 사용자가 터치하면 
+ 제어하며 사용자 상호 작용에 대응할 수 있습니다. 예를 들어, 어떤 보기는 사용자가 터치하면
 작업을 시작하는 버튼일 수 있습니다.</p>
 
-<p>Android는 레이아웃을 디자인하고 정리하는 데 사용할 수 있도록 여러 가지 보기를 미리 만들어 
-제공합니다. "위젯"이란 화면에 시각적(이자 대화형) 요소를 제공하는 보기입니다. 예를 들어 
+<p>Android는 레이아웃을 디자인하고 정리하는 데 사용할 수 있도록 여러 가지 보기를 미리 만들어
+제공합니다. "위젯"이란 화면에 시각적(이자 대화형) 요소를 제공하는 보기입니다. 예를 들어
 버튼, 텍스트 필드, 확인란이나 그저 하나의 이미지일 수도 있습니다. "레이아웃"은 선형 레이아웃, 격자형 레이아웃, 상대적 레이아웃과 같이 하위 레이아웃에 대해 독특한 레이아웃 모델을 제공하는 {@link
 android.view.ViewGroup}에서 파생된
 보기입니다. 또한, {@link android.view.View}와
 {@link android.view.ViewGroup} 클래스(또는 기존 하위 클래스)의 아래로 내려가서 위젯과 레이아웃을 생성하고
 이를 액티비티 레이아웃에 적용할 수 있습니다.</p>
 
-<p>보기를 사용하여 레이아웃을 정의하는 가장 보편적인 방식은 애플리케이션 리소스에 저장된 
+<p>보기를 사용하여 레이아웃을 정의하는 가장 보편적인 방식은 애플리케이션 리소스에 저장된
 XML 레이아웃 파일을 사용하는 것입니다. 이렇게 하면 액티비티의 동작을 정의하는
-소스 코드와 별개로 사용자 인터페이스 디자인을 유지할 수 있습니다. 
+소스 코드와 별개로 사용자 인터페이스 디자인을 유지할 수 있습니다.
 {@link android.app.Activity#setContentView(int) setContentView()}로 액티비티의 UI로서 레이아웃을 설정하고,
 해당 레이아웃의 리소스 ID를 전달할 수 있습니다. 그러나 액티비티 코드에 새로운 {@link android.view.View}를 생성하고
  새로운 {@link
-android.view.View}를 {@link android.view.ViewGroup}에 삽입하여 보기 계층을 구축한 뒤 루트 
+android.view.View}를 {@link android.view.ViewGroup}에 삽입하여 보기 계층을 구축한 뒤 루트
 {@link android.view.ViewGroup}을 {@link android.app.Activity#setContentView(View)
 setContentView()}에 전달해도 해당 레이아웃을 사용할 수 있습니다.</p>
 
@@ -138,7 +138,7 @@
 
 <h3 id="Declaring">매니페스트에서 액티비티 선언하기</h3>
 
-<p>시스템에서 액티비티에 액세스할 수 있게 하려면 이를 매니페스트 파일에서 
+<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>
@@ -169,12 +169,12 @@
 
 <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>를 사용하는 
+&lt;intent-filter&gt;}</a>를 사용하는
 것입니다.</p>
 
-<p>Android SDK 도구를 사용하여 새 애플리케이션을 생성하는 경우, 개발자를 위해 
-생성되어 있는 스텁 액티비티에 자동으로 인텐트 필터가 포함되어 있어 "주요" 동작에 
-응답하는 액티비티를 선언하며, 이는 "시작 관리자" 범주에 배치해야 합니다. 인텐트 필터는 다음과 
+<p>Android SDK 도구를 사용하여 새 애플리케이션을 생성하는 경우, 개발자를 위해
+생성되어 있는 스텁 액티비티에 자동으로 인텐트 필터가 포함되어 있어 "주요" 동작에
+응답하는 액티비티를 선언하며, 이는 "시작 관리자" 범주에 배치해야 합니다. 인텐트 필터는 다음과
 같은 형태를 띱니다.</p>
 
 <pre>
@@ -188,23 +188,23 @@
 
 <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> 요소는 이 액티비티가 시스템의 
+&lt;category&gt;}</a> 요소는 이 액티비티가 시스템의
 애플리케이션 시작 관리자에 목록으로 나열되어야 한다는 것을 나타냅니다(사용자가 이 액티비티를 시작할 수 있도록 해줌).</p>
 
-<p>애플리케이션이 자체 포함 방식이기를 원하고 다른 애플리케이션이 이 
-애플리케이션의 액티비티를 활성화하도록 허용하지 않고자 하면, 달리 인텐트 필터가 더 필요하지 않습니다. "주요" 동작과 "시작 관리자" 범주가 있는 
-액티비티는 하나뿐이어야 합니다(이전 예시 참조). 다른 애플리케이션에서 
-사용할 수 없게 하고자 하는 액티비티에는 인텐트 필터가 있으면 안 됩니다. 
+<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> 요소를 포함시킬 수 있습니다. 이와 같은 요소는 액티비티가 응답할 수 있는 인텐트의 유형을 
+&lt;data&gt;}</a> 요소를 포함시킬 수 있습니다. 이와 같은 요소는 액티비티가 응답할 수 있는 인텐트의 유형을
 나타냅니다.</p>
 
 <p>액티비티가 인텐트에 응답하는 방식에 관한 자세한 정보는 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
@@ -215,15 +215,15 @@
 <h2 id="StartingAnActivity">액티비티 시작하기</h2>
 
 <p>다른 액티비티를 시작하려면 {@link android.app.Activity#startActivity
- startActivity()}를 호출한 다음 이에 시작하고자 하는 액티비티를 설명하는 {@link android.content.Intent}를 
-전달하면 됩니다. 인텐트는 시작하고자 하는 액티비티를 정확히 나타내거나, 수행하고자 하는 작업의 
-유형을 설명하는 것입니다(시스템이 적절한 액티비티를 선택하며, 
+ startActivity()}를 호출한 다음 이에 시작하고자 하는 액티비티를 설명하는 {@link android.content.Intent}를
+전달하면 됩니다. 인텐트는 시작하고자 하는 액티비티를 정확히 나타내거나, 수행하고자 하는 작업의
+유형을 설명하는 것입니다(시스템이 적절한 액티비티를 선택하며,
 이는
  다른 애플리케이션에서 가져온 것일 수도 있습니다). 인텐트는 소량의 데이터를 운반하여 시작된 액티비티에서
  사용할 수 있습니다.</p>
 
 <p>본인의 애플리케이션 안에서 작업하는 경우에는, 알려진 액티비티를 시작하기만 하면 되는 경우가 잦습니다.
- 이렇게 하려면 시작하고자 하는 액티비티를 명시적으로 정의하는 인텐트를 클래스 이름을 
+ 이렇게 하려면 시작하고자 하는 액티비티를 명시적으로 정의하는 인텐트를 클래스 이름을
 사용하여 생성하면 됩니다. 예를 들어, 다음은 한 액티비티가 {@code
 SignInActivity}라는 이름의 다른 액티비티를 시작하는 방법입니다.</p>
 
@@ -232,15 +232,15 @@
 startActivity(intent);
 </pre>
 
-<p>그러나, 애플리케이션이 다른 몇 가지 동작을 수행하고자 할 수도 있습니다. 예를 들어 이메일 보내기, 문자 
-메시지 보내기 또는 상태 업데이트 등을 액티비티의 데이터를 사용하여 수행하는 것입니다. 이 경우, 본인의 애플리케이션에 
-그러한 동작을 수행할 자체 액티비티가 없을 수도 있습니다. 따라서 기기에 있는 다른 애플리케이션이 
-제공하는 액티비티를 대신 활용하여 동작을 수행하도록 할 수 있습니다. 바로 이 부분에서 
-인텐트의 진가가 발휘됩니다. 수행하고자 하는 동작을 설명하는 인텐트를 생성하면 
+<p>그러나, 애플리케이션이 다른 몇 가지 동작을 수행하고자 할 수도 있습니다. 예를 들어 이메일 보내기, 문자
+메시지 보내기 또는 상태 업데이트 등을 액티비티의 데이터를 사용하여 수행하는 것입니다. 이 경우, 본인의 애플리케이션에
+그러한 동작을 수행할 자체 액티비티가 없을 수도 있습니다. 따라서 기기에 있는 다른 애플리케이션이
+제공하는 액티비티를 대신 활용하여 동작을 수행하도록 할 수 있습니다. 바로 이 부분에서
+인텐트의 진가가 발휘됩니다. 수행하고자 하는 동작을 설명하는 인텐트를 생성하면
 시스템이 적절한 액티비티를
  다른 애플리케이션에서 시작하는 것입니다. 해당 인텐트를
  처리할 수 있는 액티비티가 여러 개 있는 경우, 사용자가 어느 것을 사용할지 선택합니다. 예를
- 들어 사용자가 이메일 메시지를 보낼 수 있게 하려면, 다음과 같은 인텐트를 
+ 들어 사용자가 이메일 메시지를 보낼 수 있게 하려면, 다음과 같은 인텐트를
 생성하면 됩니다.</p>
 
 <pre>
@@ -250,7 +250,7 @@
 </pre>
 
 <p>인텐트에 추가된 {@link android.content.Intent#EXTRA_EMAIL} 추가 사항은 이메일이 전송되어야 할 이메일 주소의
- 문자열 배열입니다. 이메일 애플리케이션이 이 인텐트에 
+ 문자열 배열입니다. 이메일 애플리케이션이 이 인텐트에
 응답하면, 애플리케이션은 추가 사항이 제공한 문자열 배열을 읽어낸 다음 이를 이메일 작성 양식의
  "수신" 필드에 배치합니다. 이 상황에서 이메일 애플리케이션의 액티비티가 시작되고 사용자가
  작업을 끝내면 본인의 액티비티가 재개되는 것입니다.</p>
@@ -263,14 +263,14 @@
 <p>때로는 시작한 액티비티에서 결과를 받고 싶을 수도 있습니다. 그런 경우,
  ({@link android.app.Activity#startActivity
  startActivity()} 대신) {@link android.app.Activity#startActivityForResult
- startActivityForResult()}를 호출해서 액티비티를 시작합니다. 그런 다음 후속 액티비티에서 결과를 
+ startActivityForResult()}를 호출해서 액티비티를 시작합니다. 그런 다음 후속 액티비티에서 결과를
 받으려면, {@link android.app.Activity#onActivityResult onActivityResult()} 콜백
  메서드를 구현합니다. 해당 후속 액티비티가 완료되면, 이것이 {@link
 android.content.Intent} 형식으로 결과를 {@link android.app.Activity#onActivityResult onActivityResult()}
  메서드에 반환합니다.</p>
 
-<p>예를 들어 사용자가 연락처 중에서 하나를 고를 수 있도록 하고 싶을 수 있습니다. 
-즉 여러분의 액티비티가 해당 연락처의 정보로 무언가 할 수 있도록 하는 것입니다. 그와 같은 인텐트를 생성하고 결과를 처리하려면 
+<p>예를 들어 사용자가 연락처 중에서 하나를 고를 수 있도록 하고 싶을 수 있습니다.
+즉 여러분의 액티비티가 해당 연락처의 정보로 무언가 할 수 있도록 하는 것입니다. 그와 같은 인텐트를 생성하고 결과를 처리하려면
 다음과 같이 하면 됩니다.</p>
 
 <pre>
@@ -299,7 +299,7 @@
 <p>이 예시는 액티비티 결과를 처리하기 위해 {@link
 android.app.Activity#onActivityResult onActivityResult()} 메서드에서 사용해야 할 기본 논리를
  나타낸 것입니다. 첫 번째 조건은 요청이 성공적인지 확인합니다. 요청에 성공했다면
-{@code resultCode}가 {@link android.app.Activity#RESULT_OK}가 됩니다. 또한, 이 결과가 응답하는 요청이 
+{@code resultCode}가 {@link android.app.Activity#RESULT_OK}가 됩니다. 또한, 이 결과가 응답하는 요청이
 알려져 있는지도 확인합니다. 이 경우에는 {@code requestCode}가
 {@link android.app.Activity#startActivityForResult
 startActivityForResult()}와 함께 전송된 두 번째 매개변수와 일치합니다. 여기서부터 코드가
@@ -317,58 +317,58 @@
 <h2 id="ShuttingDown">액티비티 종료하기</h2>
 
 <p>액티비티를 종료하려면 해당 액티비티의 {@link android.app.Activity#finish
-finish()} 메서드를 호출하면 됩니다. 
+finish()} 메서드를 호출하면 됩니다.
 {@link android.app.Activity#finishActivity finishActivity()}를 호출하여 이전에 시작한 별도의 액티비티를 종료할 수도 있습니다.</p>
 
-<p class="note"><strong>참고:</strong> 대부분의 경우, 이와 같은 메서드를 사용하여 액티비티를 명시적으로 
-종료해서는 안 됩니다. 다음 섹션에서 액티비티 수명 주기에 관해 논의한 바와 같이, 
-Android 시스템이 액티비티의 수명을 대신 관리해주므로 직접 액티비티를 종료하지 
-않아도 됩니다. 이와 같은 메서드를 호출하면 예상되는 사용자 
-환경에 부정적인 영향을 미칠 수 있으며, 따라서 사용자가 액티비티의 이 인스턴스에 돌아오는 것을 절대 바라지 않는 경우에만 
+<p class="note"><strong>참고:</strong> 대부분의 경우, 이와 같은 메서드를 사용하여 액티비티를 명시적으로
+종료해서는 안 됩니다. 다음 섹션에서 액티비티 수명 주기에 관해 논의한 바와 같이,
+Android 시스템이 액티비티의 수명을 대신 관리해주므로 직접 액티비티를 종료하지
+않아도 됩니다. 이와 같은 메서드를 호출하면 예상되는 사용자
+환경에 부정적인 영향을 미칠 수 있으며, 따라서 사용자가 액티비티의 이 인스턴스에 돌아오는 것을 절대 바라지 않는 경우에만
 사용해야 합니다.</p>
 
 
 <h2 id="Lifecycle">액티비티 수명 주기 관리하기</h2>
 
-<p>콜백 메서드를 구현하여 액티비티의 수명 주기를 관리하는 것은 
-강력하고 유연한 애플리케이션 개발에 
-대단히 중요한 역할을 합니다. 액티비티의 수명 주기는 다른 액티비티와의 관계, 
+<p>콜백 메서드를 구현하여 액티비티의 수명 주기를 관리하는 것은
+강력하고 유연한 애플리케이션 개발에
+대단히 중요한 역할을 합니다. 액티비티의 수명 주기는 다른 액티비티와의 관계,
 액티비티의 작업과 백 스택 등에 직접적으로 영향을 받습니다.</p>
 
 <p>액티비티는 기본적으로 세 가지 상태로 존재할 수 있습니다.</p>
 
 <dl>
   <dt><i>재개됨</i></dt>
-    <dd>액티비티가 화면 전경에 있으며 사용자의 초점이 맞춰져 있습니다 (이 상태를 때로는 
+    <dd>액티비티가 화면 전경에 있으며 사용자의 초점이 맞춰져 있습니다 (이 상태를 때로는
 "실행 중"이라고 일컫기도 합니다).</dd>
 
   <dt><i>일시정지됨</i></dt>
     <dd>다른 액티비티가 전경에 나와 있고 사용자의 시선을 집중시키고 있지만, 이 액티비티도 여전히 표시되어 있습니다. 다시 말해,
-다른 액티비티가 이 액티비티 위에 표시되어 있으며 해당 액티비티는 부분적으로 투명하거나 
+다른 액티비티가 이 액티비티 위에 표시되어 있으며 해당 액티비티는 부분적으로 투명하거나
 전체 화면을 덮지 않는 상태라는 뜻입니다. 일시정지된 액티비티는 완전히 살아있지만({@link android.app.Activity}
-개체가 메모리에 보관되어 있고, 모든 상태 및 구성원 정보를 유지하며, 
+개체가 메모리에 보관되어 있고, 모든 상태 및 구성원 정보를 유지하며,
 창 관리자에 붙어 있는 상태로 유지됨), 메모리가 극히 부족한 경우 시스템이 중단시킬 수 있습니다.</dd>
 
   <dt><i>정지됨</i></dt>
-    <dd>이 액티비티가 다른 액티비티에 완전히 가려진 상태입니다(액티비티가 이제 
+    <dd>이 액티비티가 다른 액티비티에 완전히 가려진 상태입니다(액티비티가 이제
 "배경"에 위치함). 중단된 액티비티도 여전히 살아 있기는 마찬가지입니다({@link android.app.Activity}
 개체가 메모리에 보관되어 있고, 모든 상태와 구성원 정보를 유지하시만 창 관리자에 붙어 있지 <em>않음</em>
-). 그러나, 이는 더 이상 사용자에게 표시되지 않으며 
+). 그러나, 이는 더 이상 사용자에게 표시되지 않으며
 다른 곳에 메모리가 필요하면 시스템이 종료시킬 수 있습니다.</dd>
 </dl>
 
-<p>액티비티가 일시정지 또는 중단된 상태이면, 시스템이 이를 메모리에서 삭제할 수 있습니다. 이러기 위해서는 
-종료를 요청하거나({@link android.app.Activity#finish finish()} 메서드를 호출) 단순히 이 액티비티의 프로세스를 중단시키면 
-됩니다.  액티비티가 다시 열릴 때에는(종료 또는 중단된 후에) 처음부터 다시 생성해야 
+<p>액티비티가 일시정지 또는 중단된 상태이면, 시스템이 이를 메모리에서 삭제할 수 있습니다. 이러기 위해서는
+종료를 요청하거나({@link android.app.Activity#finish finish()} 메서드를 호출) 단순히 이 액티비티의 프로세스를 중단시키면
+됩니다.  액티비티가 다시 열릴 때에는(종료 또는 중단된 후에) 처음부터 다시 생성해야
 합니다.</p>
 
 
 
 <h3 id="ImplementingLifecycleCallbacks">수명 주기 콜백 구현하기</h3>
 
-<p>위에서 설명한 바와 같이 액티비티가 여러 가지 상태를 오가며 전환되면, 이와 같은 내용이 
-여러 가지 콜백 메서드를 통해 통지됩니다. 콜백 메서드는 모두 후크로서, 
-액티비티 상태가 변경될 때 적절한 작업을 하기 위해 이를 재정의할 수 있습니다. 다음의 골격 
+<p>위에서 설명한 바와 같이 액티비티가 여러 가지 상태를 오가며 전환되면, 이와 같은 내용이
+여러 가지 콜백 메서드를 통해 통지됩니다. 콜백 메서드는 모두 후크로서,
+액티비티 상태가 변경될 때 적절한 작업을 하기 위해 이를 재정의할 수 있습니다. 다음의 골격
 액티비티에는 기본 수명 주기 메서드가 각각 하나씩 포함되어 있습니다.</p>
 
 
@@ -410,51 +410,51 @@
 <p class="note"><strong>참고:</strong> 이와 같은 수명 주기 메서드를 구현하려면, 항상
  슈퍼클래스 구현을 호출한 다음에만 다른 작업을 시작할 수 있습니다(위의 예시 참조).</p>
 
-<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}에 해제해야 합니다. 예를 들어, 
-액티비티에 네트워크에서 데이터를 다운로드하기 위해 배경에서 실행 중인 스레드가 있는 경우, 이는 
+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()} 호출 사이를 말합니다. 이 기간 중에는 사용자가 액티비티를 화면에서 보고 이와 
+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#onStop onStop()}에서 등록을 해제하면 사용자는 여러분이 무엇을 표시하고 있는지 더 이상 볼 수
 없게 됩니다. 시스템은 액티비티의 전체 수명 내내 {@link android.app.Activity#onStart onStart()} 및 {@link
-android.app.Activity#onStop onStop()}을 여러 번 호출할 수 있으며, 이때 
+android.app.Activity#onStop onStop()}을 여러 번 호출할 수 있으며, 이때
 액티비티는 사용자에게 표시되었다 숨겨지는 상태를 오가게 됩니다.</p></li>
 
 <li><p>액티비티의 <b>전경 수명</b>은 {@link
 android.app.Activity#onResume onResume()} 호출에서 {@link android.app.Activity#onPause
-onPause()} 호출 사이를 말합니다. 이 기간 중에는 이 액티비티가 화면에서 다른 모든 액티비티 앞에 표시되며 사용자 입력도 
+onPause()} 호출 사이를 말합니다. 이 기간 중에는 이 액티비티가 화면에서 다른 모든 액티비티 앞에 표시되며 사용자 입력도
 여기에 집중됩니다.  액티비티는 전경에 나타났다 숨겨지는 전환을 자주 반복할 수 있습니다. 예를 들어
-, 기기가 절전 모드에 들어가거나 대화 상자가 
-나타나면 {@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>같은 수명 주기 콜백 메서드가 표 1에 나열되어 있으며, 이 표는 각 콜백
+메서드를 더욱 상세하게 설명하며 액티비티의 전반적인
+수명 주기 내에서 각 메서드의 위치를 나타내기도 합니다. 여기에는 콜백 메서드가 완료된 다음
 시스템이 액티비티를 중단시킬 수 있는지 여부도 포함되어 있습니다.</p>
 
 <p class="table-caption"><strong>표 1.</strong> 액티비티 수명 주기
@@ -474,9 +474,9 @@
 <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>
@@ -508,7 +508,7 @@
    <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>
@@ -517,10 +517,10 @@
 
 <tr>
    <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
-   <td>시스템이 다른 액티비티를 재개하기 직전에 
-호출됩니다.  이 메서드는 일반적으로 데이터를 유지하기 위해 저장되지 않은 변경 사항을 
-커밋하는 데, 애니메이션을 비롯하여 CPU를 소모하는 기타 작업을 중단하는 등 
-여러 가지 용도에 사용됩니다.  이 메서드는 무슨 일을 하든 매우 빨리 끝내야 합니다. 
+   <td>시스템이 다른 액티비티를 재개하기 직전에
+호출됩니다.  이 메서드는 일반적으로 데이터를 유지하기 위해 저장되지 않은 변경 사항을
+커밋하는 데, 애니메이션을 비롯하여 CPU를 소모하는 기타 작업을 중단하는 등
+여러 가지 용도에 사용됩니다.  이 메서드는 무슨 일을 하든 매우 빨리 끝내야 합니다.
 이것이 반환될 때까지 다음 액티비티가 재개되지 않기 때문입니다.
        <p>액티비티가 다시 전경으로 돌아오면 {@code onResume()}이 뒤에 따라오고
 액티비티가 사용자에게 보이지 않게 되면{@code onStop()}이 뒤에 따라옵니다.
@@ -544,11 +544,11 @@
 <tr>
    <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
 onDestroy()}</code></td>
-   <td>액티비티가 소멸되기 전에 호출됩니다.  이것이 액티비티가 받는 
-마지막 호출입니다.  이것이 호출될 수 있는 경우는 액티비티가 
+   <td>액티비티가 소멸되기 전에 호출됩니다.  이것이 액티비티가 받는
+마지막 호출입니다.  이것이 호출될 수 있는 경우는 액티비티가
 완료되는 중이라서(누군가가 여기에 <code>{@link android.app.Activity#finish
-       finish()}</code>를 호출해서)일 수도 있고, 시스템이 공간을 절약하기 위해 액티비티의 이 인스턴스를 일시적으로 소멸시키는 
-중이기 때문일 수도 있습니다.  이와 같은 
+       finish()}</code>를 호출해서)일 수도 있고, 시스템이 공간을 절약하기 위해 액티비티의 이 인스턴스를 일시적으로 소멸시키는
+중이기 때문일 수도 있습니다.  이와 같은
 두 가지 시나리오는 <code>{@link
        android.app.Activity#isFinishing isFinishing()}</code> 메서드로 구분할 수 있습니다.</td>
    <td align="center"><strong style="color:#800000">예</strong></td>
@@ -558,49 +558,49 @@
 </table>
 
 <p>"완료 후 중단 가능?"이라는 레이블이 붙은 열은
- 시스템이 <em>메서드가 반환된 후</em> 액티비티 코드의 다른 줄을 실행하지 않고도 
+ 시스템이 <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()} 중에 
-어느 정보를 유지해야 할지는 조심해서 선택해야 합니다. 이 메서드에 차단 절차가 있으면 
-다음 액티비티로의 전환을 차단하고 사용자 경험을 느려지게 할 수 있기 
+호출되지 않을 수도 있습니다. 따라서, 중요한 영구적 데이터(사용자 편집 등)를 보관하기 위해 작성하는 경우에는 {@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()}이 호출되는 시기 사이에 중단시킬 수 있습니다. 다시 중단시킬 수 있는 상태가 되려면 
+<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에 나타난 이런 정의에 
-따르면 엄밀히 말해 "중단 가능한" 것이 아닌 액티비티라도 시스템이 중단시킬 수는 있습니다. 다만 이것은 다른 리소스가 없는 
-극단적인 상황에서만 발생합니다. 액티비티가 중단될 수 있는 시기가 
+<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><a href="#Lifecycle">액티비티 수명 주기 관리하기</a> 도입부에서는 액티비티가
+일시중지되거나
+중단되었더라도 액티비티의 상태는 그대로 유지된다고 잠시 언급한 바 있습니다. 이것은
+{@link android.app.Activity} 개체가 일시중지되거나 중단된 경우에도
+메모리 안에 그대로 보관되었기 때문에 가능합니다. 즉 이 액티비티의 구성원과 현재 상태에 대한 모든 정보가 아직 살아 있다는 뜻입니다. 따라서, 사용자가
+액티비티 내에서 변경한 모든 내용도 그대로 유지되어 액티비티가 전경으로
 돌아갈 때("재개"될 때) 그와 같은 변경 사항도 그대로 존재하게 됩니다.</p>
 
 <p>그러나 시스템이 메모리를 복구하기 위해 액티비티를 소멸시키는 경우에는 {@link
-android.app.Activity} 개체가 소멸되므로 시스템이 액티비티의 상태를 온전히 유지한 채로 간단하게 재개할 수 없게 
-됩니다. 대신, 사용자가 다시 이 액티비티로 이동해 오면 시스템이 {@link android.app.Activity} 개체를 
-다시 생성해야 합니다. 하지만, 사용자는 시스템이 
-해당 액티비티를 소멸시켰다가 다시 생성했다는 것을 모릅니다. 
+android.app.Activity} 개체가 소멸되므로 시스템이 액티비티의 상태를 온전히 유지한 채로 간단하게 재개할 수 없게
+됩니다. 대신, 사용자가 다시 이 액티비티로 이동해 오면 시스템이 {@link android.app.Activity} 개체를
+다시 생성해야 합니다. 하지만, 사용자는 시스템이
+해당 액티비티를 소멸시켰다가 다시 생성했다는 것을 모릅니다.
 따라서 액티비티가 예전과 똑같을 것이라고 예상할 것입니다. 이런 상황에서는
 액티비티 상태에 관한 정보를 저장할 수 있는 추가 콜백 메서드
 {@link
@@ -617,19 +617,19 @@
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}에게 전달합니다. 이들 메서드 중
 하나를 사용하여 {@link android.os.Bundle}에서 저장된 상태를 추출하고 액티비티 상태
 를 복원할 수 있습니다. 복구할 상태 정보가 없는 경우, 여러분에게 전달되는 {@link
-android.os.Bundle}은 null입니다(액티비티가 처음 생성되었을 때 이런 경우가 
+android.os.Bundle}은 null입니다(액티비티가 처음 생성되었을 때 이런 경우가
 발생합니다).</p>
 
 <img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
-<p class="img-caption"><strong>그림 2.</strong> 액티비티의 상태가 온전한 채로 사용자의 
-초점에 다시 돌아오는 데에는 두 가지 방식이 있습니다. 하나는 액티비티가 소멸되었다가 다시 생성되어 액티비티가 
-이전에 저장된 상태를 복구해야 하는 경우, 다른 하나는 액티비티가 중단되었다가 재개되었으며 
+<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
@@ -642,9 +642,9 @@
 android.app.Activity#onSaveInstanceState onSaveInstanceState()}가 일부 액티비티 상태를 복구합니다. 특히, 기본
 구현은 레이아웃에서 {@link
 android.view.View}가 나올 때마다 해당하는 {@link
-android.view.View#onSaveInstanceState onSaveInstanceState()} 메서드를 호출하고, 이 때문에 각 보기가 저장해야 하는 자체 관련 정보를 제공할 수 
-있게 해줍니다. Android 프레임워크를 사용하는 위젯은 거의 대부분 이 메서드를 
-필요에 따라 구현하므로, UI에 눈에 보이는 변경이 있으면 모두 자동으로 저장되며 액티비티를 다시 
+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>
@@ -653,9 +653,9 @@
 
 <div class="sidebox-wrapper">
 <div class="sidebox">
-<p>또한, 
-{@link android.R.attr#saveEnabled android:saveEnabled} 속성을 {@code "false"}로 설정하거나 
-{@link android.view.View#setSaveEnabled setSaveEnabled()} 메서드를 호출해서 레이아웃의 보기가 상태를 저장하지 못하도록 명시적으로 막을 수 있습니다. 보통은 이것을 비활성화해서는 
+<p>또한,
+{@link android.R.attr#saveEnabled android:saveEnabled} 속성을 {@code "false"}로 설정하거나
+{@link android.view.View#setSaveEnabled setSaveEnabled()} 메서드를 호출해서 레이아웃의 보기가 상태를 저장하지 못하도록 명시적으로 막을 수 있습니다. 보통은 이것을 비활성화해서는
 안 되지만, 액티비티 UI의 상태를 다르게 복구하고자 하는 경우 그렇게 할 수도 있습니다.</p>
 </div>
 </div>
@@ -668,25 +668,25 @@
 ).</p>
 
 <p>{@link
-android.app.Activity#onSaveInstanceState onSaveInstanceState()}의 기본 구현이 UI 상태를 저장하는 데 도움이 되기 때문에, 
-추가 상태 정보를 저장하기 위해 이 메서드를 재정의하려면 
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}의 기본 구현이 UI 상태를 저장하는 데 도움이 되기 때문에,
+추가 상태 정보를 저장하기 위해 이 메서드를 재정의하려면
 작업을 하기 전에 항상{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}의 슈퍼클래스 구현
 을 호출해야 합니다. 이와 마찬가지로 {@link
-android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 재정의하는 경우, 이것의 슈퍼클래스 구현을 호출해야 하기도 합니다. 
+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>
 
 
@@ -700,8 +700,8 @@
 설계되었습니다
 (예: 다양한 화면 방향과 크기에 대한 다양한 레이아웃).</p>
 
-<p>액티비티를 적절히 설계하여 화면 방향 변경으로 인한 재시작을 감당할 수 있으며 
-위에 설명한 것처럼 액티비티 상태를 복구할 수 있도록 하면, 애플리케이션이 액티비티 수명 주기에서 
+<p>액티비티를 적절히 설계하여 화면 방향 변경으로 인한 재시작을 감당할 수 있으며
+위에 설명한 것처럼 액티비티 상태를 복구할 수 있도록 하면, 애플리케이션이 액티비티 수명 주기에서
 예기치 못한 이벤트가 일어나도 더욱 탄력적으로 복구될 수 있습니다.</p>
 
 <p>이러한 재시작을 처리하는 가장 좋은 방법은 이전 섹션에서 논의한 바와 같이
@@ -710,22 +710,22 @@
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}(또는 {@link
 android.app.Activity#onCreate onCreate()})를 사용하여 액티비티 상태를 저장하고 복구하는 것입니다.</p>
 
-<p>런타임에 발생하는 구성 변경과 그 처리 방법에 대한 자세한 정보는 
-<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 
+<p>런타임에 발생하는 구성 변경과 그 처리 방법에 대한 자세한 정보는
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경
 처리하기</a>에 대한 가이드를 읽어보십시오.</p>
 
 
 
 <h3 id="CoordinatingActivities">액티비티 조정하기</h3>
 
- <p>한 액티비티가 다른 액티비티를 시작하면, 둘 모두 수명 주기 전환을 겪습니다. 첫 번째 액티비티는 
-일시중지하고 중단되는 반면(배경에서 계속 보이는 경우에는 중단되지 않습니다만), 다른 액티비티는 
-생성되는 것입니다. 이와 같은 액티비티가 디스크 또는 다른 속에 저장된 데이터를 공유하는 경우, 
-첫 번째 액티비티는 두 번째 액티비티가 생성되기 전에 완전히 중단되지 않는다는 점을 이해하는 것이 중요합니다. 
+ <p>한 액티비티가 다른 액티비티를 시작하면, 둘 모두 수명 주기 전환을 겪습니다. 첫 번째 액티비티는
+일시중지하고 중단되는 반면(배경에서 계속 보이는 경우에는 중단되지 않습니다만), 다른 액티비티는
+생성되는 것입니다. 이와 같은 액티비티가 디스크 또는 다른 속에 저장된 데이터를 공유하는 경우,
+첫 번째 액티비티는 두 번째 액티비티가 생성되기 전에 완전히 중단되지 않는다는 점을 이해하는 것이 중요합니다.
 그렇다기보다는, 두 번째 액티비티의 시작 과정이 첫 번째 액티비티 중단 과정과 겹쳐 일어납니다.
 </p>
 
-<p>수명 주기 콜백은 분명히 정의된 순서가 있으며 특히 두 개의 액티비티가 
+<p>수명 주기 콜백은 분명히 정의된 순서가 있으며 특히 두 개의 액티비티가
 같은 프로세스 안에 있으면서 하나가 다른 하나를 시작하는 경우 순서가 더욱 확실합니다. 다음은 액티비티 A가
 액티비티 B를 시작할 때 발생하는 작업 순서입니다. </p>
 
@@ -741,8 +741,8 @@
 </ol>
 
  <p>이처럼 수명 주기 콜백의 순서를 예측할 수 있기 때문에 한 액티비티에서 다른 액티비티로 전환되는
- 정보를 관리할 수 있습니다. 예를 들어 첫 번째 액티비티가 중단될 때 데이터베이스에 
-내용을 작성해서 다음 액티비티가 그 내용을 읽을 수 있도록 하려면, 데이터베이스에는 
+ 정보를 관리할 수 있습니다. 예를 들어 첫 번째 액티비티가 중단될 때 데이터베이스에
+내용을 작성해서 다음 액티비티가 그 내용을 읽을 수 있도록 하려면, 데이터베이스에는
 {@link android.app.Activity#onPause onPause()} 중에({@link
 android.app.Activity#onStop onStop()} 중이 아니라) 쓰기 작업을 해야 합니다.</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
index bf97b26..276ff24 100644
--- a/docs/html-intl/intl/ko/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/ko/guide/components/bound-services.jd
@@ -41,22 +41,22 @@
 </div>
 
 
-<p>바인딩된 서비스란 클라이언트 서버 인터페이스 안의 서버를 말합니다. 바인딩된 서비스를 사용하면 구성 요소(활동 등)를 
-서비스에 바인딩되게 하거나, 요청을 보내고 응답을 수신하며 심지어는 
+<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()} 콜백 메서드를 구현해야 합니다. 
+<p>바인딩된 서비스란 일종의 {@link android.app.Service} 클래스 구현으로,
+이를 통해 다른 애플리케이션이 이 서비스에 바인딩하여 상호 작용할 수 있도록 해주는 것입니다. 한 서비스에 대한 바인딩을 제공하려면,
+{@link android.app.Service#onBind onBind()} 콜백 메서드를 구현해야 합니다.
 이 메서드는 클라이언트가 서비스와 상호 작용하는 데 사용하는 프로그래밍 인터페이스를 정의하는 {@link android.os.IBinder} 개체를
 반환합니다.</p>
 
@@ -65,24 +65,24 @@
   <h3>시작된 서비스에 바인딩</h3>
 
 <p><a href="{@docRoot}guide/components/services.html">서비스</a>
-문서에서 논의된 바와 같이, 시작되었으면서도 바인딩된 서비스를 만들 수 있습니다. 다시 말해, 
-{@link android.content.Context#startService startService()}를 호출하여 서비스를 시작할 수 있으며 
+문서에서 논의된 바와 같이, 시작되었으면서도 바인딩된 서비스를 만들 수 있습니다. 다시 말해,
+{@link android.content.Context#startService startService()}를 호출하여 서비스를 시작할 수 있으며
 이를 통해 서비스가 무한히 실행되도록 할 수 있으며, {@link
 android.content.Context#bindService bindService()}를 호출하면 클라이언트가 해당 서비스에 바인딩되도록 할 수 있다는 것입니다.
-  <p>서비스를 시작되고 바인딩되도록 허용한 다음 서비스가 시작되면 
-시스템은 클라이언트가 모두 바인딩을 해제해도 서비스를 소멸시키지 <em>않습니다</em>. 대신, 
+  <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> 관련 섹션을 꼭 읽어보십시오. 시작된 서비스에 바인딩을 
+</a> 관련 섹션을 꼭 읽어보십시오. 시작된 서비스에 바인딩을
 추가할 때 서비스 수명 주기에 관한 자세한 정보를 얻을 수 있습니다.</p>
 </div>
 </div>
@@ -90,23 +90,23 @@
 <p>클라이언트가 서비스에 바인딩하려면 {@link android.content.Context#bindService
 bindService()}를 호출하면 됩니다. 이 때, 반드시 {@link
 android.content.ServiceConnection}의 구현을 제공해야 하며 이것이 서비스와의 연결을 모니터링합니다. {@link
-android.content.Context#bindService bindService()} 메서드는 값 없이 즉시 반환됩니다. 
-그러나 Android 시스템이 클라이언트와 서비스 사이의 
+android.content.Context#bindService bindService()} 메서드는 값 없이 즉시 반환됩니다.
+그러나 Android 시스템이 클라이언트와 서비스 사이의
 연결을 만드는 경우, 시스템은 {@link
 android.content.ServiceConnection#onServiceConnected onServiceConnected()}를 {@link
-android.content.ServiceConnection}에서 호출하여 클라이언트가 서비스와 통신하는 데 사용할 수 있도록 {@link android.os.IBinder}를 
+android.content.ServiceConnection}에서 호출하여 클라이언트가 서비스와 통신하는 데 사용할 수 있도록 {@link android.os.IBinder}를
 전달하게 됩니다.</p>
 
-<p>여러 클라이언트가 한 번에 서비스에 연결될 수 있습니다. 그러나, 시스템이 서비스의 
-{@link android.app.Service#onBind onBind()} 메서드를 호출하여 {@link android.os.IBinder}를 검색하는 경우는 첫 번째 클라이언트가 
-바인딩되는 경우뿐입니다. 시스템은 그 후 같은 {@link android.os.IBinder}를 바인딩되는 추가 
+<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.app.Service#onBind onBind()} 콜백 메서드가 반환하는 인터페이스를 정의하는 것입니다.
 서비스의 {@link android.os.IBinder} 인터페이스를 정의하는 방법에는 몇 가지가 있고, 다음
 섹션에서는 각 기법에 관해 논의합니다.</p>
 
@@ -115,42 +115,42 @@
 <h2 id="Creating">바인딩된 서비스 생성</h2>
 
 <p>바인딩을 제공하는 서비스를 생성할 때는 클라이언트가 서비스와 상호 작용하는 데 사용할 수 있는 프로그래밍 인터페이스를 제공하는 {@link android.os.IBinder}
-를 제공해야 합니다. 
+를 제공해야 합니다.
 인터페이스를 정의하는 방법은 세 가지가 있습니다.</p>
 
 <dl>
   <dt><a href="#Binder">바인더 클래스 확장</a></dt>
-  <dd>서비스가 본인의 애플리케이션 전용이며 클라이언트와 같은 과정으로 실행되는 
+  <dd>서비스가 본인의 애플리케이션 전용이며 클라이언트와 같은 과정으로 실행되는
 경우(이런 경우가 흔함), 인터페이스를 생성할 때 {@link android.os.Binder} 클래스를
- 확장하고 그 인스턴스를 
-{@link android.app.Service#onBind onBind()}에서 반환하는 방식을 사용해야 합니다. 클라이언트가 {@link android.os.Binder}를 받으며, 
-이를 사용하여 {@link android.os.Binder} 구현 또는 심지어 {@link android.app.Service}에서 
+ 확장하고 그 인스턴스를
+{@link android.app.Service#onBind onBind()}에서 반환하는 방식을 사용해야 합니다. 클라이언트가 {@link android.os.Binder}를 받으며,
+이를 사용하여 {@link android.os.Binder} 구현 또는 심지어 {@link android.app.Service}에서
 사용할 수 있는 공개 메서드에 직접 액세스할 수 있습니다.
-  <p>이것은 서비스가 본인의 애플리케이션을 위해 단순히 배경에서 작동하는 요소에 그치는 경우 
-선호되는 기법입니다. 인터페이스를 생성할 때 이 방식을 사용하지 않는 유일한 이유는 
+  <p>이것은 서비스가 본인의 애플리케이션을 위해 단순히 배경에서 작동하는 요소에 그치는 경우
+선호되는 기법입니다. 인터페이스를 생성할 때 이 방식을 사용하지 않는 유일한 이유는
 서비스를 다른 애플리케이션에서나 별도의 프로세스에 걸쳐 사용하고 있는 경우뿐입니다.</dd>
 
   <dt><a href="#Messenger">메신저 사용</a></dt>
-  <dd>인터페이스를 여러 프로세스에 걸쳐 적용되도록 해야 하는 경우, 서비스에 대한 
-인터페이스를 {@link android.os.Messenger}로 생성할 수 있습니다. 
+  <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}를 
+android.os.Message} 개체를 사용해 서비스에 명령을 보낼 수 있게 해줍니다. 이외에도, 클라이언트가 자체적으로 {@link android.os.Messenger}를
 정의하여 서비스가 메시지를 돌려보낼 수 있도록 할 수도 있습니다.
   <p>이것이 프로세스간 통신(IPC)을 수행하는 가장 간단한 방법입니다. {@link
-android.os.Messenger}가 모든 요청을 단일 스레드에 대기하게 해서, 서비스를 스레드로부터 안전하게 
+android.os.Messenger}가 모든 요청을 단일 스레드에 대기하게 해서, 서비스를 스레드로부터 안전하게
 설계하지 않아도 되기 때문입니다.</p>
   </dd>
 
   <dt>AIDL 사용하기</dt>
-  <dd>AIDL(Android Interface Definition Language)은 개체를 운영 체제가 이해할 수 있는 
-원시 데이터로 구성 해제한 다음 여러 프로세스에 걸쳐 집결하여 IPC를 수행하기 위해 
-필요한 모든 작업을 수행합니다. 이전 기법은 {@link android.os.Messenger}를 사용했는데, 
+  <dd>AIDL(Android Interface Definition Language)은 개체를 운영 체제가 이해할 수 있는
+원시 데이터로 구성 해제한 다음 여러 프로세스에 걸쳐 집결하여 IPC를 수행하기 위해
+필요한 모든 작업을 수행합니다. 이전 기법은 {@link android.os.Messenger}를 사용했는데,
 사실 그 기본 구조가 AIDL을 기반으로 하고 있는 것입니다. 위에서 언급한 바와 같이 {@link android.os.Messenger}는 단일 스레드에 모든 클라이언트 요청
-대기열을 생성하므로 서비스는 한 번에 요청을 하나씩 수신합니다. 그러나, 
-서비스가 동시에 여러 요청을 처리하도록 하고 싶은 경우에는 AIDL을 직접 사용해도 
+대기열을 생성하므로 서비스는 한 번에 요청을 하나씩 수신합니다. 그러나,
+서비스가 동시에 여러 요청을 처리하도록 하고 싶은 경우에는 AIDL을 직접 사용해도
 됩니다. 이 경우, 서비스가 다중 스레딩을 할 수 있어야 하며 스레드로부터 안전하게 구축되었어야 합니다.
   <p>AIDL을 직접 사용하려면
 프로그래밍 인터페이스를 정의하는 {@code .aidl} 파일을 생성해야 합니다. Android SDK 도구는
@@ -159,10 +159,10 @@
   </dd>
 </dl>
 
-  <p class="note"><strong>참고:</strong> 대부분의 애플리케이션의 경우, 
-바인딩된 서비스를 생성하기 위해 AIDL를 사용해서는 <strong>안 됩니다</strong>. 
-그러려면 다중 스레딩 기능이 필요할 수 있고, 따라서 더 복잡한 구현을 초래할 수 있기 때문입니다. 따라서 AIDL은 
-대부분의 애플리케이션에 적합하지 않으므로 이 문서에서는 여러분의 서비스에 이를 이용하는 방법에 대해 다루지 않습니다. AIDL을 직접 사용해야 한다는 확신이 드는 경우, 
+  <p class="note"><strong>참고:</strong> 대부분의 애플리케이션의 경우,
+바인딩된 서비스를 생성하기 위해 AIDL를 사용해서는 <strong>안 됩니다</strong>.
+그러려면 다중 스레딩 기능이 필요할 수 있고, 따라서 더 복잡한 구현을 초래할 수 있기 때문입니다. 따라서 AIDL은
+대부분의 애플리케이션에 적합하지 않으므로 이 문서에서는 여러분의 서비스에 이를 이용하는 방법에 대해 다루지 않습니다. AIDL을 직접 사용해야 한다는 확신이 드는 경우,
 <a href="{@docRoot}guide/components/aidl.html">AIDL</a> 문서를 참조하십시오.
 </p>
 
@@ -172,12 +172,12 @@
 <h3 id="Binder">바인더 클래스 확장</h3>
 
 <p>서비스를 사용하는 것이 로컬 애플리케이션뿐이고 여러 프로세스에 걸쳐 작동할 필요가 없는 경우,
-나름의 {@link android.os.Binder} 클래스를 구현하여 
+나름의 {@link android.os.Binder} 클래스를 구현하여
 클라이언트로 하여금 서비스 내의 공개 메서드에 직접 액세스할 수 있도록 할 수도 있습니다.</p>
 
-<p class="note"><strong>참고:</strong> 이것은 클라이언트와 서비스가 
-같은 애플리케이션 및 프로세스에 있는 경우에만 통하며, 이 경우가 가장 보편적입니다. 이 방식이 잘 통하는 경우를 예로 들면, 
-음악 애플리케이션에서 자체 서비스에 액티비티를 바인딩하여 배경에서 음악을 재생하도록 해야 하는 
+<p class="note"><strong>참고:</strong> 이것은 클라이언트와 서비스가
+같은 애플리케이션 및 프로세스에 있는 경우에만 통하며, 이 경우가 가장 보편적입니다. 이 방식이 잘 통하는 경우를 예로 들면,
+음악 애플리케이션에서 자체 서비스에 액티비티를 바인딩하여 배경에서 음악을 재생하도록 해야 하는
 경우가 있습니다.</p>
 
 <p>이렇게 설정하는 방법은 다음과 같습니다.</p>
@@ -185,7 +185,7 @@
   <li>서비스에서 다음 중 한 가지에 해당하는 {@link android.os.Binder}의 인스턴스를 생성합니다.
     <ul>
       <li>클라이언트가 호출할 수 있는 공개 메서드 포함</li>
-      <li>클라이언트가 호출할 수 있는 공개 메서드가 있는 현재{@link android.app.Service} 
+      <li>클라이언트가 호출할 수 있는 공개 메서드가 있는 현재{@link android.app.Service}
 인스턴스를 반환</li>
       <li>클라이언트가 호출할 수 있는 공개 메서드가 포함된 서비스가 호스팅하는 다른 클래스의 인스턴스를 반환
 </li>
@@ -193,16 +193,16 @@
   <li>{@link
 android.app.Service#onBind onBind()} 콜백 메서드에서 이 {@link android.os.Binder}의 인스턴스를 반환합니다.</li>
   <li>클라이언트의 경우, {@link android.os.Binder}를 {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} 
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}
 콜백 메서드에서 받아 제공된 메서드를 사용해 서비스를 바인딩하기 위해 호출합니다.</li>
 </ol>
 
-<p class="note"><strong>참고:</strong> 서비스와 클라이언트가 같은 애플리케이션에 
-있어야 하는 것은 그래야만 클라이언트가 반환된 개체를 캐스팅하여 해당 API를 적절하게 호출할 수 있기 때문입니다. 또한 
-서비스와 클라이언트는 같은 프로세스에 있어야 하기도 합니다. 이 기법에서는 
+<p class="note"><strong>참고:</strong> 서비스와 클라이언트가 같은 애플리케이션에
+있어야 하는 것은 그래야만 클라이언트가 반환된 개체를 캐스팅하여 해당 API를 적절하게 호출할 수 있기 때문입니다. 또한
+서비스와 클라이언트는 같은 프로세스에 있어야 하기도 합니다. 이 기법에서는
 여러 프로세스에 걸친 집결 작업을 전혀 수행하지 않기 때문입니다.</p>
 
-<p>예컨대, 어떤 서비스가 클라이언트에게 {@link android.os.Binder} 구현을 통해 서비스 내의 
+<p>예컨대, 어떤 서비스가 클라이언트에게 {@link android.os.Binder} 구현을 통해 서비스 내의
 메서드에 액세스할 수 있도록 한다고 합시다.</p>
 
 <pre>
@@ -303,12 +303,12 @@
 }
 </pre>
 
-<p>위 예시는 클라이언트가 
+<p>위 예시는 클라이언트가
 {@link android.content.ServiceConnection} 구현과 {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} 콜백을 사용하여 서비스에 바인딩하는 방법을 보여줍니다. 다음 
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} 콜백을 사용하여 서비스에 바인딩하는 방법을 보여줍니다. 다음
 섹션에서는 서비스에 바인딩하는 이러한 과정에 대해 좀 더 자세한 정보를 제공합니다.</p>
 
-<p class="note"><strong>참고:</strong> 위 예시에서는 서비스에서 분명히 바인딩을 해제하지는 않습니다. 
+<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
@@ -326,26 +326,26 @@
   <h4>AIDL과 비교</h4>
   <p>IPC를 수행해야 할 경우, 인터페이스에 대해 {@link android.os.Messenger}를 사용하는 것이
 AIDL로 구현하는 것보다 간단합니다. 왜냐하면 {@link android.os.Messenger}는
-모든 호출을 서비스에 대기시키지만 순수한 AIDL 인터페이스는 
+모든 호출을 서비스에 대기시키지만 순수한 AIDL 인터페이스는
 서비스에 동시에 요청을 전송하여 다중 스레딩을 처리해야 하기 때문입니다.</p>
   <p>대부분의 애플리이션에서는 서비스가 다중 스레딩을 수행할 필요가 없으므로 {@link
-android.os.Messenger}를 사용하면 호출을 한 번에 하나씩 처리할 수 있습니다. 서비스가 
+android.os.Messenger}를 사용하면 호출을 한 번에 하나씩 처리할 수 있습니다. 서비스가
 다중 스레딩되는 것이 중요한 경우, 인터페이스를 정의하는 데 <a href="{@docRoot}guide/components/aidl.html">AIDL</a>을 사용해야 합니다.</p>
 </div>
 </div>
 
-<p>서비스가 원격 프로세스와 통신해야 한다면 서비스에 인터페이스를 제공하는 데 
-{@link android.os.Messenger}를 사용하면 됩니다. 이 기법을 사용하면 
+<p>서비스가 원격 프로세스와 통신해야 한다면 서비스에 인터페이스를 제공하는 데
+{@link android.os.Messenger}를 사용하면 됩니다. 이 기법을 사용하면
 AIDL을 쓰지 않고도 프로세스간 통신(IPC)을 수행할 수 있게 해줍니다.</p>
 
 <p>다음은 {@link android.os.Messenger} 사용 방법을 간략하게 요약한 것입니다.</p>
 
 <ul>
-  <li>서비스가 클라이언트로부터 각 호출에 대해 콜백을 받는 {@link android.os.Handler}를 
+  <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}를 생성하여 서비스가 
+  <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}를 참조)를 인스턴트화하고, 이를 이용하여
@@ -356,8 +356,8 @@
 </ul>
 
 
-<p>이렇게 하면, 클라이언트가 서비스에서 호출할 "메서드"가 없습니다. 대신 클라이언트는 
-"메시지"({@link android.os.Message} 개체)를 전달하여 서비스가 
+<p>이렇게 하면, 클라이언트가 서비스에서 호출할 "메서드"가 없습니다. 대신 클라이언트는
+"메시지"({@link android.os.Message} 개체)를 전달하여 서비스가
 {@link android.os.Handler}로 받을 수 있도록 합니다.</p>
 
 <p>다음은 {@link android.os.Messenger} 인터페이스를 사용하는 간단한 예시 서비스입니다.</p>
@@ -406,7 +406,7 @@
 
 <p>클라이언트는 서비스가 반환한 {@link
 android.os.IBinder}에 기초하여 {@link android.os.Messenger}를 생성하고 {@link
-android.os.Messenger#send send()}로 메시지를 전송하기만 하면 됩니다. 예를 들어, 다음은 
+android.os.Messenger#send send()}로 메시지를 전송하기만 하면 됩니다. 예를 들어, 다음은
 서비스에 바인딩하여 {@code MSG_SAY_HELLO} 메시지를 서비스에 전달하는 간단한 액티비티입니다.</p>
 
 <pre>
@@ -477,7 +477,7 @@
 </pre>
 
 <p>이 예시에는 서비스가 클라이언트에 응답하는 방식이 나타나 있지 않다는 것을 유념하십시오. 서비스가 응답하게 하려면
- 클라이언트에도 {@link android.os.Messenger}를 생성해야 합니다. 
+ 클라이언트에도 {@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}를
 서비스에 전송합니다.
@@ -493,7 +493,7 @@
 
 <h2 id="Binding">서비스에 바인딩</h2>
 
-<p>애플리케이션 구성 요소(클라이언트)를 서비스에 바인딩하려면 
+<p>애플리케이션 구성 요소(클라이언트)를 서비스에 바인딩하려면
 {@link android.content.Context#bindService bindService()}를 호출하면 됩니다. 그러면 Android
 system이 서비스의 {@link android.app.Service#onBind
 onBind()} 메서드를 호출하고, 이는 서비스와의 상호 작용을 위해 {@link android.os.IBinder}를 반환합니다.</p>
@@ -505,7 +505,7 @@
 bindService()}에 전달해야 합니다. {@link android.content.ServiceConnection}에는
 {@link android.os.IBinder}를 전달하기 위해 시스템이 호출하는 콜백 메서드가 포함됩니다.</p>
 
-<p class="note"><strong>참고:</strong> 서비스에 바인딩할 수 있는 것은 액티비티, 서비스 및 
+<p class="note"><strong>참고:</strong> 서비스에 바인딩할 수 있는 것은 액티비티, 서비스 및
 콘텐츠 제공자뿐입니다. 브로드캐스트 수신자로부터는 서비스에 바인딩할 수 <strong>없습니다</strong>.</p>
 
 <p>따라서, 클라이언트로부터 서비스에 바인딩하려면 다음과 같이 해야 합니다. </p>
@@ -514,12 +514,12 @@
     <p>이 구현으로 두 가지 콜백 메서드를 재정의해야 합니다.</p>
     <dl>
       <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
-        <dd>시스템이 이것을 호출하여 서비스의 
+        <dd>시스템이 이것을 호출하여 서비스의
 {@link android.app.Service#onBind onBind()} 메서드가 반환한 {@link android.os.IBinder}를 전달합니다.</dd>
       <dt>{@link android.content.ServiceConnection#onServiceDisconnected
 onServiceDisconnected()}</dt>
-        <dd>Android 시스템이 이것을 호출하는 경우는 서비스로의 연결이 
-예기치 못하게 끊어졌을 때, 즉 서비스가 충돌했거나 중단되었을 때 등입니다. 
+        <dd>Android 시스템이 이것을 호출하는 경우는 서비스로의 연결이
+예기치 못하게 끊어졌을 때, 즉 서비스가 충돌했거나 중단되었을 때 등입니다.
 클라이언트가 바인딩을 해제한다고 이것이 호출되지는 <em>않습니다</em>.</dd>
     </dl>
   </li>
@@ -527,19 +527,19 @@
 android.content.Context#bindService bindService()}를 호출하고 {@link
 android.content.ServiceConnection} 구현을 전달합니다. </li>
   <li>시스템이 {@link android.content.ServiceConnection#onServiceConnected
-onServiceConnected()} 콜백 메서드를 호출하면, 인터페이스가 정의한 메서드를 사용하여 
+onServiceConnected()} 콜백 메서드를 호출하면, 인터페이스가 정의한 메서드를 사용하여
 서비스에 호출을 시작해도 됩니다.</li>
   <li>서비스로부터 연결을 해제하려면 {@link
 android.content.Context#unbindService unbindService()}를 호출합니다.
-    <p>클라이언트가 소멸되면 이는 서비스에서 바인딩을 해제하게 되지만, 
-서비스와 상호 작용을 마쳤을 때 또는 액티비티가 일시 중지되었을 때에는 항상 바인딩을 해제해야 합니다. 
-이렇게 해야 서비스가 사용 중이 아닐 때에는 중지할 수 있습니다 
+    <p>클라이언트가 소멸되면 이는 서비스에서 바인딩을 해제하게 되지만,
+서비스와 상호 작용을 마쳤을 때 또는 액티비티가 일시 중지되었을 때에는 항상 바인딩을 해제해야 합니다.
+이렇게 해야 서비스가 사용 중이 아닐 때에는 중지할 수 있습니다
 (바인딩과 바인딩 해제의 적절한 시기는 아래에서 좀 더 논의합니다).</p>
   </li>
 </ol>
 
-<p>예를 들어, 다음 코드 조각은 위와 같이 
-<a href="#Binder">바인더 클래스를 확장해서</a> 생성한 서비스와 클라이언트를 연결합니다. 그러므로 이것이 해야 하는 일은 반환된 
+<p>예를 들어, 다음 코드 조각은 위와 같이
+<a href="#Binder">바인더 클래스를 확장해서</a> 생성한 서비스와 클라이언트를 연결합니다. 그러므로 이것이 해야 하는 일은 반환된
 {@link android.os.IBinder}를 {@code LocalService} 클래스에 캐스팅하고 {@code
 LocalService} 인스턴스를 요청하는 것뿐입니다.</p>
 
@@ -564,7 +564,7 @@
 };
 </pre>
 
-<p>이 {@link android.content.ServiceConnection}이 있으면 클라이언트는 
+<p>이 {@link android.content.ServiceConnection}이 있으면 클라이언트는
 이것을 {@link android.content.Context#bindService bindService()}에 전달하여 서비스에 바인딩할 수 있습니다. 예:</p>
 
 <pre>
@@ -573,12 +573,12 @@
 </pre>
 
 <ul>
-  <li>{@link android.content.Context#bindService bindService()}의 첫 번째 매개변수는 바인딩할 서비스를 명시적으로 명명하는 
-{@link android.content.Intent}입니다(인텐트는 
+  <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}를 사용합니다(이미 살아 있는 상태가 아닌 경우). 
+android.content.Context#BIND_AUTO_CREATE}를 사용합니다(이미 살아 있는 상태가 아닌 경우).
 가능한 기타 값은 {@link android.content.Context#BIND_DEBUG_UNBIND}
  및 {@link android.content.Context#BIND_NOT_FOREGROUND}, 또는 값이 없는 경우 {@code 0}입니다.</li>
 </ul>
@@ -588,27 +588,27 @@
 
 <p>다음은 서비스에 바인딩하는 데 관한 몇 가지 중요한 참고 사항입니다.</p>
 <ul>
-  <li>항상 {@link android.os.DeadObjectException} 예외를 트래핑해야 합니다. 
+  <li>항상 {@link android.os.DeadObjectException} 예외를 트래핑해야 합니다.
 이것은 연결이 끊어지면 발생합니다. 원격 메서드에 의해 발생하는 예외는 이것뿐입니다.</li>
   <li>개체는 여러 프로세스에 걸쳐 감안된 참조입니다. </li>
   <li>일반적으로, 클라이언트의 수명 주기를
 결합하고 분해하는 순간을 일치시키면서 바인딩과 바인딩 해제를 페어링해야 합니다. 예:
     <ul>
-      <li>액티비티가 눈에 보이는 동안에만 서비스와 상호 작용해야 한다면 
+      <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()} 중에는 바인딩을 해제합니다. 
-이때, 사용자의 액티비티가 서비스가 실행되는 시간 전체에서(배경에서라도) 서비스를 사용한다는 것을 유념해야 합니다. 
+{@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>
@@ -624,8 +624,8 @@
 
 <h2 id="Lifecycle">바인딩된 서비스 수명 주기 관리</h2>
 
-<p>서비스가 모든 클라이언트로부터 바인딩 해제되면, Android 시스템이 이를 소멸시킵니다(다만 
-{@link android.app.Service#onStartCommand onStartCommand()}와도 함께 시작된 경우는 예외). 
+<p>서비스가 모든 클라이언트로부터 바인딩 해제되면, Android 시스템이 이를 소멸시킵니다(다만
+{@link android.app.Service#onStartCommand onStartCommand()}와도 함께 시작된 경우는 예외).
 따라서, 서비스가 순전히 바인딩된 서비스일 경우에는 해당 서비스의 수명 주기를 관리하지 않아도 됩니다.
 클라이언트에 바인딩되었는지를 근거로 Android 시스템이 대신 관리해주기 때문입니다.</p>
 
diff --git a/docs/html-intl/intl/ko/guide/components/fragments.jd b/docs/html-intl/intl/ko/guide/components/fragments.jd
index a41250c..96bf7a1 100644
--- a/docs/html-intl/intl/ko/guide/components/fragments.jd
+++ b/docs/html-intl/intl/ko/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -46,79 +46,79 @@
 </div>
 </div>
 
-<p>{@link android.app.Fragment}는 동작 또는 
-{@link android.app.Activity} 내에서 사용자 인터페이스의 일부를 나타냅니다. 여러 개의 프래그먼트를 하나의 액티비티에 
-조합하여 창이 여러 개인 UI를 구축할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 프래그먼트는 자체 수명 주기를 가지고, 자체 입력 이벤트를 받으며, 
-액티비티 실행 중에 추가 및 제거가 가능한 액티비티의 모듈식 섹션이라고 
-생각하면 됩니다(다른 액티비티에 
+<p>{@link android.app.Fragment}는 동작 또는
+{@link android.app.Activity} 내에서 사용자 인터페이스의 일부를 나타냅니다. 여러 개의 프래그먼트를 하나의 액티비티에
+조합하여 창이 여러 개인 UI를 구축할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 프래그먼트는 자체 수명 주기를 가지고, 자체 입력 이벤트를 받으며,
+액티비티 실행 중에 추가 및 제거가 가능한 액티비티의 모듈식 섹션이라고
+생각하면 됩니다(다른 액티비티에
 재사용할 수 있는 "하위 액티비티"와 같은 개념).</p>
 
-<p>프래그먼트는 항상 액티비티 내에 포함되어 있어야 하며 해당 프래그먼트의 수명 주기는 
-호스트 액티비티의 수명 주기에 직접적으로 영향을 받습니다. 예를 들어 액티비티가 일시정지되는 경우, 그 안의 모든 프래그먼트도 
-일시정지되며 액티비티가 소멸되면 모든 프래그먼트도 마찬가지로 소멸됩니다. 그러나 액티비티가 실행 중인 
-동안에는(<em>재개됨</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">수명 주기 상태</a>에 있을 때를 말합니다) 
-각 프래그먼트를 추가 또는 제거하는 등 개별적으로 조작할 수 있습니다. 그와 같은 프래그먼트 트랜잭션을 
-수행할 때에는 이를 액티비티가 관리하는 백 스택에도 
-추가할 수 있습니다. 각 백 스택 항목이 발생한 프래그먼트 트랜잭션의 
+<p>프래그먼트는 항상 액티비티 내에 포함되어 있어야 하며 해당 프래그먼트의 수명 주기는
+호스트 액티비티의 수명 주기에 직접적으로 영향을 받습니다. 예를 들어 액티비티가 일시정지되는 경우, 그 안의 모든 프래그먼트도
+일시정지되며 액티비티가 소멸되면 모든 프래그먼트도 마찬가지로 소멸됩니다. 그러나 액티비티가 실행 중인
+동안에는(<em>재개됨</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">수명 주기 상태</a>에 있을 때를 말합니다)
+각 프래그먼트를 추가 또는 제거하는 등 개별적으로 조작할 수 있습니다. 그와 같은 프래그먼트 트랜잭션을
+수행할 때에는 이를 액티비티가 관리하는 백 스택에도
+추가할 수 있습니다. 각 백 스택 항목이 발생한 프래그먼트 트랜잭션의
 기록이 됩니다. 이 백 스택을 사용하면 사용자가 프래그먼트 트랜잭션을 거꾸로 돌릴 수 있습니다(뒤로 이동).
 이때 <em>뒤로</em> 버튼을 누르면 됩니다.</p>
 
 <p>프래그먼트를 액티비티 레이아웃의 일부로 추가하는 경우, 이는 액티비티의 보기 계층 내부의 {@link
-android.view.ViewGroup} 안에 살며, 해당 프래그먼트가 자신의 보기 
+android.view.ViewGroup} 안에 살며, 해당 프래그먼트가 자신의 보기
 레이아웃을 정의합니다.
-프래그먼트를 액티비티 레이아웃에 삽입하려면 해당 프래그먼트를 
-액티비티의 레이아웃 파일에서 {@code &lt;fragment&gt;} 요소로 선언하거나, 애플리케이션 코드에서 이를 
-기존의 {@link android.view.ViewGroup}에 추가하면 됩니다. 그러나 프래그먼트가 
-액티비티 레이아웃의 일부분이어야만 하는 것은 아닙니다. 나름의 UI가 없는 프래그먼트도 액티비티를 위한 
+프래그먼트를 액티비티 레이아웃에 삽입하려면 해당 프래그먼트를
+액티비티의 레이아웃 파일에서 {@code &lt;fragment&gt;} 요소로 선언하거나, 애플리케이션 코드에서 이를
+기존의 {@link android.view.ViewGroup}에 추가하면 됩니다. 그러나 프래그먼트가
+액티비티 레이아웃의 일부분이어야만 하는 것은 아닙니다. 나름의 UI가 없는 프래그먼트도 액티비티를 위한
 보이지 않는 작업자로 사용할 수 있습니다.</p>
 
-<p>이 문서에서는 프래그먼트를 사용하도록 애플리케이션을 구축하는 법을 
-설명합니다. 그중에는 프래그먼트를 액티비티의 백 스택에 추가했을 때 프래그먼트가 자신의 상태를 유지하는 방법, 
-액티비티 및 액티비티 내의 다른 프래그먼트와 이벤트를 공유하는 방법과 액티비티의 
+<p>이 문서에서는 프래그먼트를 사용하도록 애플리케이션을 구축하는 법을
+설명합니다. 그중에는 프래그먼트를 액티비티의 백 스택에 추가했을 때 프래그먼트가 자신의 상태를 유지하는 방법,
+액티비티 및 액티비티 내의 다른 프래그먼트와 이벤트를 공유하는 방법과 액티비티의
 작업 모음에 참가하는 법 등등 여러 가지가 포함됩니다.</p>
 
 
 <h2 id="Design">디자인 철학</h2>
 
-<p>Android가 프래그먼트를 처음 도입한 것은 Android 3.0(API 레벨 11)부터입니다. 기본적으로 
-태블릿과 같은 큰 화면에서 보다 역동적이고 유연한 UI 디자인을 지원하는 것이 목적이었습니다. 태블릿의 화면은 
-핸드셋 화면보다 훨씬 크기 때문에 UI 구성 요소를 조합하고 상호 교환할 공간이 
-더 많습니다. 프래그먼트는 개발자가 보기 계층에 복잡한 변경 내용을 관리하지 않아도 
-그러한 디자인을 사용할 수 있도록 해주는 것입니다. 한 액티비티의 레이아웃을 여러 프래그먼트로 나누면 
-런타임에 액티비티의 외관을 수정할 수도 있고 그러한 변경 내용을 해당 액티비티가 관리하는 
+<p>Android가 프래그먼트를 처음 도입한 것은 Android 3.0(API 레벨 11)부터입니다. 기본적으로
+태블릿과 같은 큰 화면에서 보다 역동적이고 유연한 UI 디자인을 지원하는 것이 목적이었습니다. 태블릿의 화면은
+핸드셋 화면보다 훨씬 크기 때문에 UI 구성 요소를 조합하고 상호 교환할 공간이
+더 많습니다. 프래그먼트는 개발자가 보기 계층에 복잡한 변경 내용을 관리하지 않아도
+그러한 디자인을 사용할 수 있도록 해주는 것입니다. 한 액티비티의 레이아웃을 여러 프래그먼트로 나누면
+런타임에 액티비티의 외관을 수정할 수도 있고 그러한 변경 내용을 해당 액티비티가 관리하는
 백 스택에 보존할 수도 있습니다.</p>
 
-<p>예를 들어 뉴스 애플리케이션이라면 하나의 프래그먼트를 사용하여 
-왼쪽에 기사 목록을 표시하도록 하고 또 다른 프래그먼트로 오른쪽에 기사 내용을 표시하도록 할 수 있습니다. 두 프래그먼트 모두 
-한 액티비티에서 양쪽으로 나란히 나타나며, 각 프래그먼트에 나름의 수명 주기 콜백 메서드가 있고 
-각자 사용자 입력 이벤트를 따로 처리하게 됩니다. 따라서, 사용자는 기사를 선택하는 데 한 액티비티를 쓰고 
-기사를 읽는 데 또 다른 액티비티를 선택하는 대신에 같은 액티비티 안에서 기사를 선택하고 읽는 과정을 
+<p>예를 들어 뉴스 애플리케이션이라면 하나의 프래그먼트를 사용하여
+왼쪽에 기사 목록을 표시하도록 하고 또 다른 프래그먼트로 오른쪽에 기사 내용을 표시하도록 할 수 있습니다. 두 프래그먼트 모두
+한 액티비티에서 양쪽으로 나란히 나타나며, 각 프래그먼트에 나름의 수명 주기 콜백 메서드가 있고
+각자 사용자 입력 이벤트를 따로 처리하게 됩니다. 따라서, 사용자는 기사를 선택하는 데 한 액티비티를 쓰고
+기사를 읽는 데 또 다른 액티비티를 선택하는 대신에 같은 액티비티 안에서 기사를 선택하고 읽는 과정을
 모두 끝낼 수 있는 것입니다. 이것은 그림 1에 나타낸 태블릿 레이아웃과 같습니다.</p>
 
-<p>프래그먼트를 디자인할 때에는 각 프래그먼트를 모듈식이며 재사용 가능한 액티비티 구성 요소로 만들어야 합니다. 
-다시 말해, 각 프래그먼트가 나름의 레이아웃을 따로 정의하고 자기만의 수명 주기 콜백으로 자기 나름의 동작을 정의하기 때문에 
-한 프래그먼트를 여러 액티비티에 포함시킬 수 있습니다. 그러므로 재사용을 염두에 두고 디자인하며 
-한 프래그먼트를 또 다른 프래그먼트로부터 직접 조작하는 것은 삼가야 합니다. 이것은 특히 모듈식 프래그먼트를 사용하면 
-프래그먼트 조합을 여러 가지 화면 크기에 맞춰 변경할 수 있도록 해주기 때문에 중요한 요점입니다. 태블릿과 핸드셋을 모두 지원하는 
-애플리케이션을 디자인하는 경우, 사용 가능한 화면 공간을 토대로 사용자 경험을 최적화하도록 프래그먼트를 
-여러 레이아웃 구성에 재사용할 수 있습니다. 예를 들어 핸드셋에서의 경우 
-프래그먼트를 분리해서 단일 창 UI를 제공하도록 해야할 수 있습니다. 같은 액티비티 안에 하나 이상이 들어가지 않을 수 
+<p>프래그먼트를 디자인할 때에는 각 프래그먼트를 모듈식이며 재사용 가능한 액티비티 구성 요소로 만들어야 합니다.
+다시 말해, 각 프래그먼트가 나름의 레이아웃을 따로 정의하고 자기만의 수명 주기 콜백으로 자기 나름의 동작을 정의하기 때문에
+한 프래그먼트를 여러 액티비티에 포함시킬 수 있습니다. 그러므로 재사용을 염두에 두고 디자인하며
+한 프래그먼트를 또 다른 프래그먼트로부터 직접 조작하는 것은 삼가야 합니다. 이것은 특히 모듈식 프래그먼트를 사용하면
+프래그먼트 조합을 여러 가지 화면 크기에 맞춰 변경할 수 있도록 해주기 때문에 중요한 요점입니다. 태블릿과 핸드셋을 모두 지원하는
+애플리케이션을 디자인하는 경우, 사용 가능한 화면 공간을 토대로 사용자 경험을 최적화하도록 프래그먼트를
+여러 레이아웃 구성에 재사용할 수 있습니다. 예를 들어 핸드셋에서의 경우
+프래그먼트를 분리해서 단일 창 UI를 제공하도록 해야할 수 있습니다. 같은 액티비티 안에 하나 이상이 들어가지 않을 수
 있기 때문입니다.</p>
 
 <img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> 프래그먼트가 정의한 두 가지 UI 모듈이 
-태블릿 디자인에서는 하나의 액티비티로 조합될 수 있는 반면 핸드셋 디자인에서는 분리될 수 있다는 것을 
+<p class="img-caption"><strong>그림 1.</strong> 프래그먼트가 정의한 두 가지 UI 모듈이
+태블릿 디자인에서는 하나의 액티비티로 조합될 수 있는 반면 핸드셋 디자인에서는 분리될 수 있다는 것을
 예시로 나타낸 것입니다.</p>
 
-<p>예를 들어&mdash;뉴스 애플리케이션 예시를 계속 사용하겠습니다&mdash;이 애플리케이션을 태블릿 크기의 기기에서 실행하는 경우, 
-애플리케이션 내의 <em>액티비티 A</em> 안에 두 개의 프래그먼트를 포함시킬 수 있습니다. 그러나 
-핸드셋 크기의 화면에서라면 두 프래그먼트를 모두 쓸 만큼 공간이 충분치 않습니다. 
-따라서 <em>액티비티 A</em>에는 기사 목록에 해당되는 프래그먼트만 포함하고, 사용자가 기사를 하나 선택하면 이것이 
-<em>액티비티 B</em>를 시작합니다. 여기에 기사를 읽을 두 번째 프래그먼트가 포함되어 있습니다. 따라서 이 애플리케이션은 
-서로 다른 조합으로 프래그먼트를 재사용함으로써 태블릿과 핸드셋을 둘 다 지원하는 
+<p>예를 들어&mdash;뉴스 애플리케이션 예시를 계속 사용하겠습니다&mdash;이 애플리케이션을 태블릿 크기의 기기에서 실행하는 경우,
+애플리케이션 내의 <em>액티비티 A</em> 안에 두 개의 프래그먼트를 포함시킬 수 있습니다. 그러나
+핸드셋 크기의 화면에서라면 두 프래그먼트를 모두 쓸 만큼 공간이 충분치 않습니다.
+따라서 <em>액티비티 A</em>에는 기사 목록에 해당되는 프래그먼트만 포함하고, 사용자가 기사를 하나 선택하면 이것이
+<em>액티비티 B</em>를 시작합니다. 여기에 기사를 읽을 두 번째 프래그먼트가 포함되어 있습니다. 따라서 이 애플리케이션은
+서로 다른 조합으로 프래그먼트를 재사용함으로써 태블릿과 핸드셋을 둘 다 지원하는
 것입니다(그림 1 참조).</p>
 
-<p>여러 가지 화면 구성에 맞게 여러 가지 프래그먼트 조합으로 애플리케이션을 디자인하는 법에 대한 자세한 정보는 
+<p>여러 가지 화면 구성에 맞게 여러 가지 프래그먼트 조합으로 애플리케이션을 디자인하는 법에 대한 자세한 정보는
 <a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 및 핸드셋 지원</a>에 대한 가이드를 참조하십시오.</p>
 
 
@@ -132,36 +132,36 @@
 </div>
 
 <p>프래그먼트를 생성하려면 {@link android.app.Fragment}의 하위 클래스(또는 이의 기존
-하위 클래스)를 생성해야 합니다. {@link android.app.Fragment} 클래스에는 
-{@link android.app.Activity}와 아주 유사해 보이는 코드가 있습니다. 여기에는 액티비티와 비슷한 콜백 메서드가 들어 있습니다. 
+하위 클래스)를 생성해야 합니다. {@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 애플리케이션을 변환하여 프래그먼트를 사용하도록 하려면 그저 
-액티비티의 콜백 메서드에서 프래그먼트에 해당되는 콜백 메서드로 코드를 옮기기만 하면 
+{@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>시스템은 프래그먼트를 생성할 때 이것을 호출합니다. 구현 내에서 프래그먼트의 기본 구성 요소 중
+프래그먼트가 일시정지되거나 중단되었다가 재개되었을 때 유지하고자 하는 것을
 초기화해야 합니다.</dd>
   <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
-  <dd>시스템은 프래그먼트가 자신의 사용자 인터페이스를 처음으로 그릴 시간이 되면 
-이것을 호출합니다. 프래그먼트에 맞는 UI를 그리려면 메서드에서 {@link android.view.View}를 반환해야 합니다. 
-이 메서드는 프래그먼트 레이아웃의 루트입니다. 프래그먼트가 UI를 제공하지 않는 경우 null을 반환하면 
+  <dd>시스템은 프래그먼트가 자신의 사용자 인터페이스를 처음으로 그릴 시간이 되면
+이것을 호출합니다. 프래그먼트에 맞는 UI를 그리려면 메서드에서 {@link android.view.View}를 반환해야 합니다.
+이 메서드는 프래그먼트 레이아웃의 루트입니다. 프래그먼트가 UI를 제공하지 않는 경우 null을 반환하면
 됩니다.</dd>
   <dt>{@link android.app.Activity#onPause onPause()}</dt>
-  <dd>시스템이 이 메서드를 호출하는 것은 사용자가 프래그먼트를 떠난다는 
-첫 번째 신호입니다(다만 이것이 항상 프래그먼트가 소멸 중이라는 뜻은 아닙니다). 현재 사용자 세션을 넘어서 
-지속되어야 하는 변경 사항을 커밋하려면 보통 이곳에서 해아 합니다(사용자가 
+  <dd>시스템이 이 메서드를 호출하는 것은 사용자가 프래그먼트를 떠난다는
+첫 번째 신호입니다(다만 이것이 항상 프래그먼트가 소멸 중이라는 뜻은 아닙니다). 현재 사용자 세션을 넘어서
+지속되어야 하는 변경 사항을 커밋하려면 보통 이곳에서 해아 합니다(사용자가
 돌아오지 않을 수 있기 때문입니다).</dd>
 </dl>
 
-<p>대부분의 애플리케이션은 각각의 프래그먼트에 이와 같은 메서드를 최소한 세 개씩 
-구현해야 하지만, 프래그먼트 수명 주기의 여러 단계를 처리하려면 사용해야 하는 다른 콜백 메서드도 
-많이 있습니다. 모든 수명 주기 콜백 메서드는 나중에 
+<p>대부분의 애플리케이션은 각각의 프래그먼트에 이와 같은 메서드를 최소한 세 개씩
+구현해야 하지만, 프래그먼트 수명 주기의 여러 단계를 처리하려면 사용해야 하는 다른 콜백 메서드도
+많이 있습니다. 모든 수명 주기 콜백 메서드는 나중에
 <a href="#Lifecycle">프래그먼트 수명 주기 처리</a> 섹션에서 더욱 상세히 논의할 것입니다.</p>
 
 
@@ -170,45 +170,45 @@
 
 <dl>
   <dt>{@link android.app.DialogFragment}</dt>
-  <dd>부동 대화 창을 표시합니다. 이 클래스를 사용하여 대화를 생성하면 
-{@link android.app.Activity} 클래스의 대화 도우미 메서드를 사용하는 것의 
-좋은 대안책이 됩니다. 이렇게 하면 프래그먼트 대화를 액티비티가 관리하는 프래그먼트의 백 스택에 통합시킬 수 있어, 
+  <dd>부동 대화 창을 표시합니다. 이 클래스를 사용하여 대화를 생성하면
+{@link android.app.Activity} 클래스의 대화 도우미 메서드를 사용하는 것의
+좋은 대안책이 됩니다. 이렇게 하면 프래그먼트 대화를 액티비티가 관리하는 프래그먼트의 백 스택에 통합시킬 수 있어,
 사용자가 무시된 프래그먼트를 반환할 수 있도록 해주기 때문입니다.</dd>
 
   <dt>{@link android.app.ListFragment}</dt>
   <dd>어댑터가 관리하는 항목의 목록(예: {@link
-android.widget.SimpleCursorAdapter})을 표시하며, {@link android.app.ListActivity}와 비슷합니다. 
+android.widget.SimpleCursorAdapter})을 표시하며, {@link android.app.ListActivity}와 비슷합니다.
 이것은 목록 보기를 관리하는 데 쓰는 몇 가지 메서드를 제공합니다. 예를 들어 {@link
-android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} 콜백을 
+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>{@link android.preference.Preference} 객체의 계층을 목록으로 표시하며,
+{@link android.preference.PreferenceActivity}와 비슷합니다. 이것은
 애플리케이션에 대한 "설정" 액티비티를 생성할 때 유용합니다.</dd>
 </dl>
 
 
 <h3 id="UI">사용자 인터페이스 추가하기</h3>
 
-<p>프래그먼트는 일반적으로 액티비티에 속한 사용자 인터페이스의 일부분으로 사용되며 
+<p>프래그먼트는 일반적으로 액티비티에 속한 사용자 인터페이스의 일부분으로 사용되며
 자기 나름의 레이아웃으로 액티비티에 참가합니다.</p>
 
 <p>프래그먼트에 대해 레이아웃을 제공하려면 반드시 {@link
-android.app.Fragment#onCreateView onCreateView()} 콜백 메서드를 구현해야 합니다. 
-이것은 프래그먼트가 자신의 레이아웃을 그릴 때가 되면 Android 시스템이 호출하는 것입니다. 이 메서드의 구현은 반드시 
+android.app.Fragment#onCreateView onCreateView()} 콜백 메서드를 구현해야 합니다.
+이것은 프래그먼트가 자신의 레이아웃을 그릴 때가 되면 Android 시스템이 호출하는 것입니다. 이 메서드의 구현은 반드시
 {@link android.view.View}를 반환해야 합니다. 이것은 프래그먼트 레이아웃의 루트입니다.</p>
 
 <p class="note"><strong>참고:</strong> 프래그먼트가 {@link
-android.app.ListFragment}의 하위 클래스인 경우, 기본 구현이 
+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()}가 
+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}의 하위 클래스입니다. 이것이 
+<p>예를 들어 다음은 {@link android.app.Fragment}의 하위 클래스입니다. 이것이
 {@code example_fragment.xml} 파일로부터 레이아웃을 로딩합니다.</p>
 
 <pre>
@@ -225,49 +225,49 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <h3>레이아웃 생성</h3>
-  <p>위의 샘플에서 {@code R.layout.example_fragment}는 
-애플리케이션 리소스에 저장된 {@code example_fragment.xml}이라는 레이아웃 리소스에 대한 참조입니다. 레이아웃을 
+  <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}이며(액티비티의 레이아웃으로부터), 
+onCreateView()}로 전달된 {@code container} 매개변수가 상위 {@link android.view.ViewGroup}이며(액티비티의 레이아웃으로부터),
 이 안에 프래그먼트 레이아웃이 삽입됩니다.
- {@code savedInstanceState} 매개변수는 일종의 {@link android.os.Bundle}로, 
-이것은 프래그먼트가 재개되는 중인 경우 프래그먼트의 이전 인스턴스에 대한 데이터를 
-제공합니다(상태를 복원하는 것은 <a href="#Lifecycle">프래그먼트 수명 주기 
+ {@code savedInstanceState} 매개변수는 일종의 {@link android.os.Bundle}로,
+이것은 프래그먼트가 재개되는 중인 경우 프래그먼트의 이전 인스턴스에 대한 데이터를
+제공합니다(상태를 복원하는 것은 <a href="#Lifecycle">프래그먼트 수명 주기
 처리</a>에서 좀 더 논의합니다).</p>
 
-<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} 메서드는 
+<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} 메서드는
 다음과 같은 세 개의 인수를 취합니다.</p>
 <ul>
   <li>팽창시키고자 하는 레이아웃의 리소스 ID.</li>
   <li>팽창된 레이아웃의 상위가 될 {@link android.view.ViewGroup}. {@code
-container}를 전달해야 시스템이 레이아웃 매개변수를 팽창된 레이아웃의 루트 보기에 실행 중인 상위 보기에서 지정한 것과 같이 
+container}를 전달해야 시스템이 레이아웃 매개변수를 팽창된 레이아웃의 루트 보기에 실행 중인 상위 보기에서 지정한 것과 같이
 적용할 수 있으므로 이는 중요한 부분입니다.</li>
   <li>팽창된 레이아웃이 팽창 중에 {@link
-android.view.ViewGroup}(두 번째 매개변수)에 첨부되어야 하는지를 나타내는 부울 값 (이 경우, 
+android.view.ViewGroup}(두 번째 매개변수)에 첨부되어야 하는지를 나타내는 부울 값 (이 경우,
 이것은 거짓입니다. 시스템이 이미 팽창된 레이아웃을 {@code
 container} 안에 삽입하고 있기 때문입니다. 참을 전달하면 최종 레이아웃에 중복된 보기 그룹을 생성하게 됩니다).</li>
 </ul>
 
-<p>이제 레이아웃을 제공하는 프래그먼트 생성하는 법을 알게 되셨습니다. 다음은 프래그먼트를 
+<p>이제 레이아웃을 제공하는 프래그먼트 생성하는 법을 알게 되셨습니다. 다음은 프래그먼트를
 액티비티에 추가해야 합니다.</p>
 
 
 
 <h3 id="Adding">액티비티에 프래그먼트 추가</h3>
 
-<p>프래그먼트는 보통 UI의 일부분으로 호스트 액티비티에 참가합니다. 이는 해당 액티비티의 
-전반적인 보기 계층의 일부분으로 포함되게 됩니다. 프래그먼트를 액티비티 레이아웃에 추가하는 데에는 두 가지 방법이 
+<p>프래그먼트는 보통 UI의 일부분으로 호스트 액티비티에 참가합니다. 이는 해당 액티비티의
+전반적인 보기 계층의 일부분으로 포함되게 됩니다. 프래그먼트를 액티비티 레이아웃에 추가하는 데에는 두 가지 방법이
 있습니다.</p>
 
 <ul>
   <li><b>프래그먼트를 액티비티의 레이아웃 파일 안에서 선언합니다.</b>
-<p>이 경우, 프래그먼트에 대한 레이아웃 속성을 마치 
-보기인 것처럼 나타낼 수 있습니다. 예를 들어 다음은 프래그먼트가 두 개 있는 
+<p>이 경우, 프래그먼트에 대한 레이아웃 속성을 마치
+보기인 것처럼 나타낼 수 있습니다. 예를 들어 다음은 프래그먼트가 두 개 있는
 한 액티비티에 대한 레이아웃 파일을 나타낸 것입니다.</p>
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?&gt;
@@ -290,31 +290,31 @@
   <p>{@code &lt;fragment&gt;} 안의 {@code android:name} 속성이 레이아웃 안에서 인스턴트화할 {@link
 android.app.Fragment} 클래스를 나타냅니다.</p>
 
-<p>시스템은 이 액티비티 레이아웃을 생성할 때 레이아웃에서 지정된 각 프래그먼트를 인스턴트화하며 각각에 대해 
-{@link android.app.Fragment#onCreateView onCreateView()} 메서드를 
-호출하여 각 프래그먼트의 레이아웃을 검색합니다. 시스템은 프래그먼트가 반환한 {@link android.view.View}를 
+<p>시스템은 이 액티비티 레이아웃을 생성할 때 레이아웃에서 지정된 각 프래그먼트를 인스턴트화하며 각각에 대해
+{@link android.app.Fragment#onCreateView onCreateView()} 메서드를
+호출하여 각 프래그먼트의 레이아웃을 검색합니다. 시스템은 프래그먼트가 반환한 {@link android.view.View}를
 {@code &lt;fragment&gt;} 요소 자리에 곧바로 삽입합니다.</p>
 
 <div class="note">
-  <p><strong>참고:</strong> 각 프래그먼트에는 액티비티가 재시작되는 경우 
-프래그먼트를 복구하기 위해 시스템이 사용할 수 있는 고유한 식별자가 필요합니다(그리고, 개발자는 이것을 사용하여 프래그먼트를 캡처해 
-이를 제거하는 등 여러 가지 트랜잭션을 수행할 수 있습니다). 프래그먼트에 ID를 제공하는 데에는 
+  <p><strong>참고:</strong> 각 프래그먼트에는 액티비티가 재시작되는 경우
+프래그먼트를 복구하기 위해 시스템이 사용할 수 있는 고유한 식별자가 필요합니다(그리고, 개발자는 이것을 사용하여 프래그먼트를 캡처해
+이를 제거하는 등 여러 가지 트랜잭션을 수행할 수 있습니다). 프래그먼트에 ID를 제공하는 데에는
 다음과 같은 세 가지 방법이 있습니다.</p>
   <ul>
     <li>고유한 ID와 함께 {@code android:id} 속성을 제공합니다.</li>
     <li>고유한 문자열과 함께 {@code android:tag} 속성을 제공합니다.</li>
-    <li>위의 두 가지 중 어느 것도 제공하지 않으면, 시스템은 컨테이너 보기의 ID를 
+    <li>위의 두 가지 중 어느 것도 제공하지 않으면, 시스템은 컨테이너 보기의 ID를
 사용합니다.</li>
   </ul>
 </div>
   </li>
 
   <li><b>또는, 프로그래밍 방식으로 프래그먼트를 기존의 {@link android.view.ViewGroup}에 추가합니다.</b>
-<p>액티비티가 실행 중인 동안에는 언제든 액티비티 레이아웃에 프래그먼트를 추가할 수 있습니다. 그저 프래그먼트를 배치할 
+<p>액티비티가 실행 중인 동안에는 언제든 액티비티 레이아웃에 프래그먼트를 추가할 수 있습니다. 그저 프래그먼트를 배치할
 {@link
 android.view.ViewGroup}를 지정하기만 하면 됩니다.</p>
-  <p>액티비티 내에서 프래그먼트 트랜잭션을 수행하려면(프래그먼트 추가, 제거 또는 
-교체 등), {@link android.app.FragmentTransaction}에서 가져온 API를 사용해야 합니다. 
+  <p>액티비티 내에서 프래그먼트 트랜잭션을 수행하려면(프래그먼트 추가, 제거 또는
+교체 등), {@link android.app.FragmentTransaction}에서 가져온 API를 사용해야 합니다.
 {@link android.app.FragmentTransaction}의 인스턴스를 {@link android.app.Activity}에서 가져오는 방법은 다음과 같습니다.</p>
 
 <pre>
@@ -323,7 +323,7 @@
 </pre>
 
 <p>그런 다음 {@link
-android.app.FragmentTransaction#add(int,Fragment) add()} 메서드를 사용하여 프래그먼트를 추가하고, 추가할 프래그먼트와 이를 삽입할 
+android.app.FragmentTransaction#add(int,Fragment) add()} 메서드를 사용하여 프래그먼트를 추가하고, 추가할 프래그먼트와 이를 삽입할
 보기를 지정하면 됩니다. 예:</p>
 
 <pre>
@@ -332,11 +332,11 @@
 fragmentTransaction.commit();
 </pre>
 
-  <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()}에 
-전달되는 첫 인수가 {@link android.view.ViewGroup}입니다. 
+  <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()}에
+전달되는 첫 인수가 {@link android.view.ViewGroup}입니다.
 여기에 프래그먼트가 리소스 ID가 지정한 바와 같이 배치되어야 하며, 두 번째 매개변수는 추가할 프래그먼트입니다.</p>
   <p>
-{@link android.app.FragmentTransaction}을 변경하고 나면, 반드시 
+{@link android.app.FragmentTransaction}을 변경하고 나면, 반드시
 {@link android.app.FragmentTransaction#commit}을 호출해야 변경 내용이 적용됩니다.</p>
   </li>
 </ul>
@@ -344,41 +344,41 @@
 
 <h4 id="AddingWithoutUI">UI 없이 프래그먼트 추가</h4>
 
-<p>위의 예시에서는 UI를 제공하기 위해 프래그먼트를 액티비티에 추가하는 방법을 보여드렸습니다. 하지만 
-추가로 UI를 제시하지 않고 액티비티에 대한 배경 동작을 제공하는 데에도 프래그먼트를 사용할 수 
+<p>위의 예시에서는 UI를 제공하기 위해 프래그먼트를 액티비티에 추가하는 방법을 보여드렸습니다. 하지만
+추가로 UI를 제시하지 않고 액티비티에 대한 배경 동작을 제공하는 데에도 프래그먼트를 사용할 수
 있습니다.</p>
 
 <p>UI 없이 프래그먼트를 추가하려면 액티비티로부터 가져온 프래그먼트를 {@link
-android.app.FragmentTransaction#add(Fragment,String)}을 사용하여 추가합니다(이때, 프래그먼트에 대해 
-보기 ID보다는 고유한 문자열 "태그"를 제공합니다). 이렇게 하면 프래그먼트가 추가되지만, 
+android.app.FragmentTransaction#add(Fragment,String)}을 사용하여 추가합니다(이때, 프래그먼트에 대해
+보기 ID보다는 고유한 문자열 "태그"를 제공합니다). 이렇게 하면 프래그먼트가 추가되지만,
 이것은 액티비티 레이아웃 안에 있는 보기와 연관되어 있지 않기 때문에 {@link
 android.app.Fragment#onCreateView onCreateView()}로의 호출은 받지 않습니다. 따라서 그 메서드는 구현하지 않아도 됩니다.</p>
 
-<p>프래그먼트에 대해 문자열 태그를 제공하는 것은 엄밀히 말해 비 UI 프래그먼트에만 해당되는 것은 아닙니다. UI가 있는 
-프래그먼트에도 문자열 태그를 제공할 수 있습니다. 하지만 프래그먼트에 
-UI가 없는 경우라면 이를 식별할 방법은 문자열 태그뿐입니다. 액티비티에서 나중에 
+<p>프래그먼트에 대해 문자열 태그를 제공하는 것은 엄밀히 말해 비 UI 프래그먼트에만 해당되는 것은 아닙니다. UI가 있는
+프래그먼트에도 문자열 태그를 제공할 수 있습니다. 하지만 프래그먼트에
+UI가 없는 경우라면 이를 식별할 방법은 문자열 태그뿐입니다. 액티비티에서 나중에
 프래그먼트를 가져오고자 하는 경우, {@link android.app.FragmentManager#findFragmentByTag
 findFragmentByTag()}를 사용해야 합니다.</p>
 
 <p>예를 들어 어떤 액티비티에서 UI 없이 프래그먼트를 배경 작업자로 사용한다고 가정해봅시다. 이것의 예로 {@code
-FragmentRetainInstance.java} 샘플을 들 수 있으며 
-이는 SDK 샘플에 포함되어 있고(Android SDK Manager를 통해 이용 가능), 시스템에는 
+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}를 사용해야 합니다. 이것을 
+<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()}로 가져오기(액티비티 레이아웃 내에서 
+android.app.FragmentManager#findFragmentById findFragmentById()}로 가져오기(액티비티 레이아웃 내에서
 UI를 제공하는 프래그먼트의 경우) 또는 {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()}로 가져오기(UI를 제공하거나 하지 않는 프래그먼트의 경우).</li> 
+findFragmentByTag()}로 가져오기(UI를 제공하거나 하지 않는 프래그먼트의 경우).</li>
   <li>백 스택에서 프래그먼트를 {@link
 android.app.FragmentManager#popBackStack()}을 사용하여 튀어나오게 하기(사용자가 내린 <em>뒤로</em> 명령을 시뮬레이트함).</li>
   <li>백 스택에 변경 내용이 있는지 알아보기 위해 {@link
@@ -388,18 +388,18 @@
 <p>이와 같은 메서드와 그 외 다른 메서드에 대한 자세한 정보는 {@link
 android.app.FragmentManager} 클래스 관련 문서를 참조하십시오.</p>
 
-<p>이전 섹션에서 설명한 바와 같이 {@link android.app.FragmentManager}를 
+<p>이전 섹션에서 설명한 바와 같이 {@link android.app.FragmentManager}를
 사용해서도 {@link android.app.FragmentTransaction}
 을 열 수 있습니다. 이렇게 하면 프래그먼트 추가 및 제거 등 트랜잭션을 수행할 수 있게 해줍니다.</p>
 
 
 <h2 id="Transactions">프래그먼트 트랜잭션 수행</h2>
 
-<p>액티비티에서 프래그먼트를 사용하는 경우 특히 유용한 점은 사용자 상호 작용에 응답하여 추가, 
-제거, 교체 및 다른 작업을 수행할 수 있다는 것입니다. 액티비티에 적용한 
+<p>액티비티에서 프래그먼트를 사용하는 경우 특히 유용한 점은 사용자 상호 작용에 응답하여 추가,
+제거, 교체 및 다른 작업을 수행할 수 있다는 것입니다. 액티비티에 적용한
 변경 내용의 집합을 하나의 트랜잭션이라 칭합니다. 이것을 수행하려면 {@link
-android.app.FragmentTransaction} 내의 API를 사용하면 됩니다. 해당 액티비티가 관리하는 백 스택에 행해진 각 트랜잭션을 
-저장할 수도 있습니다. 이렇게 하면 사용자가 프래그먼트 변경 내역을 거쳐 뒤로 탐색할 수 있습니다(액티비티를 통과해 
+android.app.FragmentTransaction} 내의 API를 사용하면 됩니다. 해당 액티비티가 관리하는 백 스택에 행해진 각 트랜잭션을
+저장할 수도 있습니다. 이렇게 하면 사용자가 프래그먼트 변경 내역을 거쳐 뒤로 탐색할 수 있습니다(액티비티를 통과해
 뒤로 탐색하는 것과 비슷합니다).</p>
 
 <p>{@link android.app.FragmentTransaction}의 인스턴스를 {@link
@@ -410,20 +410,20 @@
 FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
 </pre>
 
-<p>각 트랜잭션은 동시에 수행하고자 하는 여러 변경을 집합적으로 일컫는 말입니다. 주어진 
+<p>각 트랜잭션은 동시에 수행하고자 하는 여러 변경을 집합적으로 일컫는 말입니다. 주어진
 트랜잭션에 대해 수행하고자 하는 모든 변경 사항을 설정하려면 {@link
 android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()},
-및 {@link android.app.FragmentTransaction#replace replace()}와 같은 메서드를 사용하면 됩니다. 그런 다음, 
+및 {@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()}입니다. 
-이렇게 해야 트랜잭션을 프래그먼트 트랜잭션의 백 스택에 추가할 수 있습니다. 이 백 스택을 액티비티가 관리하며, 
+android.app.FragmentTransaction#addToBackStack addToBackStack()}입니다.
+이렇게 해야 트랜잭션을 프래그먼트 트랜잭션의 백 스택에 추가할 수 있습니다. 이 백 스택을 액티비티가 관리하며,
 이를 통해 사용자가 이전 프래그먼트 상태로 되돌아갈 수 있습니다. 이때 <em>뒤로</em> 버튼을 누르면 됩니다.</p>
 
-<p>예를 들어 다음은 한 프래그먼트를 다른 것으로 교체하고 이전 상태를 백 스택에 보존하는 법을 
+<p>예를 들어 다음은 한 프래그먼트를 다른 것으로 교체하고 이전 상태를 백 스택에 보존하는 법을
 나타낸 것입니다.</p>
 
 <pre>
@@ -440,49 +440,49 @@
 transaction.commit();
 </pre>
 
-<p>이 예시에서 {@code newFragment}가 현재 레이아웃 컨테이너에 있는 
+<p>이 예시에서 {@code newFragment}가 현재 레이아웃 컨테이너에 있는
 프래그먼트(있는 경우)를 교체합니다. 이는 {@code R.id.fragment_container} ID로 식별할 수 있습니다. {@link
-android.app.FragmentTransaction#addToBackStack addToBackStack()}를 호출하면 교체 트랜잭션이 
-백 스택에 저장되고, 따라서 사용자가 트랜잭션을 거꾸로 수행하여 
+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> 버튼을 누르면 
+android.app.FragmentTransaction#addToBackStack addToBackStack()}을 호출하면, {@link android.app.FragmentTransaction#commit commit()}을 호출하기 전에 적용된 모든 변경 내용이
+백 스택에 하나의 트랜잭션으로 추가되며, <em>뒤로</em> 버튼을 누르면
 모두 한꺼번에 역행하게 됩니다.</p>
 
-<p>{@link android.app.FragmentTransaction}에 변경 내용을 추가하는 순서는 중요하지 않습니다. 
+<p>{@link android.app.FragmentTransaction}에 변경 내용을 추가하는 순서는 중요하지 않습니다.
 다만 다음과 같은 예외가 있습니다.</p>
 <ul>
   <li>{@link android.app.FragmentTransaction#commit()}을 마지막으로 호출해야만 합니다.</li>
-  <li>같은 컨테이너에 여러 개의 프래그먼트를 추가하는 경우, 이를 추가하는 순서가 이들이 
+  <li>같은 컨테이너에 여러 개의 프래그먼트를 추가하는 경우, 이를 추가하는 순서가 이들이
 보기 계층에 나타나는 순서를 결정 짓습니다.</li>
 </ul>
 
 <p>프래그먼트를 제거하는 트랜잭션을 수행하면서 {@link android.app.FragmentTransaction#addToBackStack(String)
-addToBackStack()}을 호출하지 않는 경우, 
-해당 프래그먼트는 트랜잭션이 적용되면 소멸되고 사용자가 이를 되짚어 탐색할 수 없게 됩니다. 반면에 
-프래그먼트를 제거하면서 {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}을 호출하면, 
-해당 프래그먼트는 <em>중단</em>되고 사용자가 뒤로 탐색하면 
+addToBackStack()}을 호출하지 않는 경우,
+해당 프래그먼트는 트랜잭션이 적용되면 소멸되고 사용자가 이를 되짚어 탐색할 수 없게 됩니다. 반면에
+프래그먼트를 제거하면서 {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}을 호출하면,
+해당 프래그먼트는 <em>중단</em>되고 사용자가 뒤로 탐색하면
 재개됩니다.</p>
 
-<p class="note"><strong>팁:</strong> 각 프래그먼트 트랜잭션에 대해 전환 애니메이션을 적용하려면 
-커밋하기 전에 {@link android.app.FragmentTransaction#setTransition setTransition()}을 
+<p class="note"><strong>팁:</strong> 각 프래그먼트 트랜잭션에 대해 전환 애니메이션을 적용하려면
+커밋하기 전에 {@link android.app.FragmentTransaction#setTransition setTransition()}을
 호출하면 됩니다.</p>
 
-<p>{@link android.app.FragmentTransaction#commit()}을 호출해도 그 즉시 트랜잭션을 수행하지는 
-않습니다. 그보다는, 액티비티의 UI 스레드("주요" 스레드)를 스레드가 할 수 있는 한 빨리 
+<p>{@link android.app.FragmentTransaction#commit()}을 호출해도 그 즉시 트랜잭션을 수행하지는
+않습니다. 그보다는, 액티비티의 UI 스레드("주요" 스레드)를 스레드가 할 수 있는 한 빨리
 이 트랜잭션을 수행하도록 일정을 예약하는 것에 가깝습니다. 하지만 필요한 경우 UI 스레드로부터 {@link
-android.app.FragmentManager#executePendingTransactions()}를 호출하면 
-{@link android.app.FragmentTransaction#commit()}이 제출한 트랜잭션을 즉시 실행할 수 있습니다. 트랜잭션이 
+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>하기 전뿐입니다(사용자가 액티비티를 떠날 때). 그 시점 이후에 적용하려고 하면 예외가 
-발생합니다. 이것은 액티비티를 복원해야 하는 경우 적용 이후의 상태가 손실될 수 
+android.app.FragmentTransaction#commit commit()}을 사용해도 되는 것은 액티비티가 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">그 상태를
+저장</a>하기 전뿐입니다(사용자가 액티비티를 떠날 때). 그 시점 이후에 적용하려고 하면 예외가
+발생합니다. 이것은 액티비티를 복원해야 하는 경우 적용 이후의 상태가 손실될 수
 있기 때문입니다. 적용이 손실되어도 괜찮은 상황이라면, {@link
 android.app.FragmentTransaction#commitAllowingStateLoss()}를 사용하십시오.</p>
 
@@ -491,19 +491,19 @@
 
 <h2 id="CommunicatingWithActivity">액티비티와 통신</h2>
 
-<p>{@link android.app.Fragment}는 
-{@link android.app.Activity}로부터 독립적인 객체로 구현되었고 여러 개의 액티비티 안에서 사용할 수 있는 것이 사실이지만, 
+<p>{@link android.app.Fragment}는
+{@link android.app.Activity}로부터 독립적인 객체로 구현되었고 여러 개의 액티비티 안에서 사용할 수 있는 것이 사실이지만,
 프래그먼트의 주어진 인스턴스는 그것을 포함하고 있는 액티비티에 직접적으로 연결되어 있습니다.</p>
 
 <p>구체적으로 말하면, 이 프래그먼트는 {@link
-android.app.Fragment#getActivity()}를 사용하여 {@link android.app.Activity} 인스턴스에 액세스하여 
+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}로부터의 
+<p>이와 마찬가지로, 액티비티도 프래그먼트 안의 메서드를 호출할 수 있습니다. 그러려면 {@link android.app.FragmentManager}로부터의
 {@link android.app.Fragment}에 대한 참조를 가져와야 하며, 이때 {@link
 android.app.FragmentManager#findFragmentById findFragmentById()} 또는 {@link
 android.app.FragmentManager#findFragmentByTag findFragmentByTag()}를 사용합니다. 예:</p>
@@ -515,14 +515,14 @@
 
 <h3 id="EventCallbacks">액티비티로의 이벤트 콜백 생성</h3>
 
-<p>어떤 경우에는 프래그먼트로 하여금 액티비티와 이벤트를 공유하게 해야 할 수 있습니다. 이렇게 하기 위한 
-한 가지 좋은 방법은 프래그먼트 내부의 콜백 인터페이스를 정의한 다음 해당 호스트 액티비티가 이를 구현하도록 
-하는 것입니다. 액티비티가 인터페이스를 통해 콜백을 수신하면, 필요에 따라 그 정보를 레이아웃 내의 
+<p>어떤 경우에는 프래그먼트로 하여금 액티비티와 이벤트를 공유하게 해야 할 수 있습니다. 이렇게 하기 위한
+한 가지 좋은 방법은 프래그먼트 내부의 콜백 인터페이스를 정의한 다음 해당 호스트 액티비티가 이를 구현하도록
+하는 것입니다. 액티비티가 인터페이스를 통해 콜백을 수신하면, 필요에 따라 그 정보를 레이아웃 내의
 다른 프래그먼트와 공유할 수 있습니다.</p>
 
-<p>예를 들어 어떤 뉴스 애플리케이션에서 액티비티 하나에 프래그먼트가 두 개 있습니다. 
- 하나는 기사 목록을 표시(프래그먼트 A)하고 다른 하나는 기사 하나를 표시(프래그먼트 B)하는 경우 목록 항목이 선택되면 
-프래그먼트 A가 액티비티에 알려야 프래그먼트 B에 해당 기사를 표시하라고 알릴 수 있습니다. 이 경우, 
+<p>예를 들어 어떤 뉴스 애플리케이션에서 액티비티 하나에 프래그먼트가 두 개 있습니다.
+ 하나는 기사 목록을 표시(프래그먼트 A)하고 다른 하나는 기사 하나를 표시(프래그먼트 B)하는 경우 목록 항목이 선택되면
+프래그먼트 A가 액티비티에 알려야 프래그먼트 B에 해당 기사를 표시하라고 알릴 수 있습니다. 이 경우,
 {@code OnArticleSelectedListener} 인터페이스는 프래그먼트 A 내부에 선언됩니다.</p>
 
 <pre>
@@ -537,12 +537,12 @@
 </pre>
 
 <p>그러면 프래그먼트를 호스팅하는 액티비티가 {@code OnArticleSelectedListener}
- 인터페이스를 
-구현하고 {@code onArticleSelected()}를 재정의하여 프래그먼트 A로부터 일어난 이벤트를 
-프래그먼트 B에 알립니다. 호스트 액티비티가 이 인터페이스를 구현하도록 
+ 인터페이스를
+구현하고 {@code onArticleSelected()}를 재정의하여 프래그먼트 A로부터 일어난 이벤트를
+프래그먼트 B에 알립니다. 호스트 액티비티가 이 인터페이스를 구현하도록
 확실히 하려면 프래그먼트 A의 {@link
 android.app.Fragment#onAttach onAttach()} 콜백 메서드(프래그먼트를 액티비티에 추가할 때 시스템이 호출하는 것)가 {@code OnArticleSelectedListener}의 인스턴스를 인스턴트화해야 합니다. 이때 {@link android.app.Fragment#onAttach
-onAttach()} 안으로 전달된 {@link android.app.Activity}를 
+onAttach()} 안으로 전달된 {@link android.app.Activity}를
 캐스팅하는 방법을 씁니다.</p>
 
 <pre>
@@ -562,14 +562,14 @@
 }
 </pre>
 
-<p>액티비티가 인터페이스를 구현하지 않은 경우, 프래그먼트가 
-{@link java.lang.ClassCastException}을 발생시킵니다. 
-성공 시, {@code mListener} 구성원이 액티비티의 
-{@code OnArticleSelectedListener} 구현에 대한 참조를 보유하므로, 프래그먼트 A가 액티비티와 이벤트를 공유할 수 있습니다. 
-이때 {@code OnArticleSelectedListener} 인터페이스가 정의한 메서드를 호출하는 방법을 씁니다. 예를 들어 프래그먼트 A가 
-{@link android.app.ListFragment}의 확장인 경우, 
+<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()}를 호출하여 
+onListItemClick()}을 호출하고, 그러면 이것이 {@code onArticleSelected()}를 호출하여
 해당 이벤트를 액티비티와 공유하는 것입니다.</p>
 
 <pre>
@@ -588,42 +588,42 @@
 </pre>
 
 <p>{@link
-android.app.ListFragment#onListItemClick onListItemClick()}에 전달된 {@code id} 매개변수가 클릭한 항목의 행 ID이며, 
+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>. -->콘텐츠 제공자 사용법에 대한 자세한 정보는 
+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()}를 구현하는 방법을 씁니다. 이 메서드가 
+<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()}를 호출하여 프래그먼트가 
-옵션 메뉴에 항목을 추가하고자 한다는 것을 나타내야 합니다(그렇지 않으면 해당 프래그먼트가 
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()}를 호출하여 프래그먼트가
+옵션 메뉴에 항목을 추가하고자 한다는 것을 나타내야 합니다(그렇지 않으면 해당 프래그먼트가
 {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}로의 호출을 받지 못하게 됩니다).</p>
 
-<p>그런 다음 프래그먼트로부터 옵션 메뉴에 추가하는 모든 항목은 기존의 메뉴 항목에 
+<p>그런 다음 프래그먼트로부터 옵션 메뉴에 추가하는 모든 항목은 기존의 메뉴 항목에
 추가됩니다. 해당 프래그먼트는 메뉴 항목을 선택하면 {@link
-android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}로의 콜백도 
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}로의 콜백도
 수신하게 됩니다.</p>
 
 <p>또한 프래그먼트 레이아웃에 보기를 등록하여 컨텍스트 메뉴를 제공하도록 할 수도 있습니다. 이때 {@link
-android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}를 호출하면 됩니다. 사용자가 컨텍스트 메뉴를 열면, 
+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 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>
@@ -635,11 +635,11 @@
 
 <div class="figure" style="width:350px">
 <img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
-<p class="img-caption"><strong>그림 3.</strong> 액티비티 수명 주기가 프래그먼트 수명 주기에 미치는 
+<p class="img-caption"><strong>그림 3.</strong> 액티비티 수명 주기가 프래그먼트 수명 주기에 미치는
 영향입니다.</p>
 </div>
 
-<p>프래그먼트의 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 매우 비슷합니다. 액티비티와 마찬가지로 
+<p>프래그먼트의 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 매우 비슷합니다. 액티비티와 마찬가지로
 프래그먼트는 세 가지 상태로 존재할 수 있습니다.</p>
 
 <dl>
@@ -647,57 +647,57 @@
     <dd>프래그먼트가 실행 중인 액티비티에 표시됩니다.</dd>
 
   <dt><i>일시정지됨</i></dt>
-    <dd>또 다른 액티비티가 전경에 나와 있고 사용자가 이에 초점을 맞추고 있지만, 
-이 프래그먼트가 있는 액티비티도 여전히 표시되어 있습니다(전경의 액티비티가 부분적으로 투명하거나 
+    <dd>또 다른 액티비티가 전경에 나와 있고 사용자가 이에 초점을 맞추고 있지만,
+이 프래그먼트가 있는 액티비티도 여전히 표시되어 있습니다(전경의 액티비티가 부분적으로 투명하거나
 전체 화면을 뒤덮지 않습니다).</dd>
 
   <dt><i>정지됨</i></dt>
-    <dd>프래그먼트가 표시되지 않습니다. 호스트 액티비티가 정지되었거나 
-프래그먼트가 액티비티에서 제거되었지만 백 스택에 추가되었습니다. 정지된 프래그먼트도 
-여전히 표시는 됩니다(모든 상태 및 구성원 정보를 시스템이 보존합니다). 하지만, 사용자에게는 
+    <dd>프래그먼트가 표시되지 않습니다. 호스트 액티비티가 정지되었거나
+프래그먼트가 액티비티에서 제거되었지만 백 스택에 추가되었습니다. 정지된 프래그먼트도
+여전히 표시는 됩니다(모든 상태 및 구성원 정보를 시스템이 보존합니다). 하지만, 사용자에게는
 더 이상 표시되지 않으며 액티비티를 종료하면 이것도 종료됩니다.</dd>
 </dl>
 
 <p>이번에도 액티비티와 마찬가지로, 프래그먼트의 상태를 보존하려면 {@link
-android.os.Bundle}을 사용합니다. 이는 혹시나 액티비티의 프로세스가 종료되고 액티비티를 
+android.os.Bundle}을 사용합니다. 이는 혹시나 액티비티의 프로세스가 종료되고 액티비티를
 다시 만들 때 해당 프래그먼트의 상태를 복구해야 할 필요가 있을 때를 대비하는 것입니다. 상태를 저장하려면 프래그먼트의 {@link
-android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 콜백 중에 저장할 수 있고, 복구는 
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 콜백 중에 저장할 수 있고, 복구는
 {@link android.app.Fragment#onCreate onCreate()}, {@link
 android.app.Fragment#onCreateView onCreateView()} 또는 {@link
-android.app.Fragment#onActivityCreated onActivityCreated()} 중 한 가지가 진행되는 동안 할 수 있습니다. 상태 저장에 관한 자세한 정보는 
+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>에서 설명하였습니다). 
-하지만, 프래그먼트가 호스트 액티비티가 관리하는 백 스택 안에 배치되는 것은 해당 인스턴스를 저장하라고 명시적으로 요청하는 경우뿐입니다. 
+<p>액티비티와 프래그먼트의 수명 주기에서 가장 중대한 차이점은
+해당되는 백 스택에 저장되는 방법입니다. 액티비티는 중단되었을 때 시스템이 관리하는
+액티비티 백 스택 안에 배치되는 것이 기본입니다(따라서 사용자가 <em>뒤로</em> 버튼을 사용하여 다시 이 액티비티로
+뒤로 탐색할 수 있습니다. 이 내용은 <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업 및 백 스택</a>에서 설명하였습니다).
+하지만, 프래그먼트가 호스트 액티비티가 관리하는 백 스택 안에 배치되는 것은 해당 인스턴스를 저장하라고 명시적으로 요청하는 경우뿐입니다.
 이때 프래그먼트를 제거하는 트랜잭션 중 {@link
-android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}을 
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}을
 호출합니다.</p>
 
-<p>이것만 제외하면, 프래그먼트 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 
-아주 비슷합니다. 따라서, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티 
-수명 주기 관리</a>에 쓰이는 실례가 프래그먼트에도 똑같이 적용되는 것입니다. 하지만 또 한 가지 이해해두어야 하는 것이 있습니다. 즉, 
+<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()}를 호출하면 됩니다. 
+<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}를 받으면, 
+<p>프래그먼트가 있는 액티비티의 수명 주기는 해당 프래그먼트의 수명 주기에 직접적인
+영향을 미칩니다. 따라서 액티비티에 대한 각 수명 주기 콜백이 각 프래그먼트에 대한 비슷한 콜백을
+유발합니다. 예를 들어 액티비티가 {@link android.app.Activity#onPause}를 받으면,
 해당 액티비티 내의 각 프래그먼트가 {@link android.app.Fragment#onPause}를 받습니다.</p>
 
-<p>하지만 프래그먼트에는 몇 가지 수명 주기 콜백이 더 있습니다. 이것은 액티비티와의 
-고유한 상호 작용을 다루어 프래그먼트의 UI를 구축하고 소멸시키는 것과 같은 
+<p>하지만 프래그먼트에는 몇 가지 수명 주기 콜백이 더 있습니다. 이것은 액티비티와의
+고유한 상호 작용을 다루어 프래그먼트의 UI를 구축하고 소멸시키는 것과 같은
 작업을 수행합니다. 이러한 추가적인 콜백 메서드를 예로 들면 다음과 같습니다.</p>
 
 <dl>
@@ -715,17 +715,17 @@
     <dd>프래그먼트가 액티비티와 연결이 끊어지는 중일 때 호출됩니다.</dd>
 </dl>
 
-<p>호스트 액티비티의 영향을 받을 프래그먼트 수명 주기의 흐름은 그림 3에서 
-확인하십시오. 이 그림을 보면 액티비티의 각 연속된 상태가 프래그먼트가 어느 
+<p>호스트 액티비티의 영향을 받을 프래그먼트 수명 주기의 흐름은 그림 3에서
+확인하십시오. 이 그림을 보면 액티비티의 각 연속된 상태가 프래그먼트가 어느
 콜백 메서드를 받게 되는지 결정 짓는다는 것을 볼 수 있습니다. 예를 들어 액티비티가 자신의 {@link
-android.app.Activity#onCreate onCreate()} 콜백을 받은 경우, 해당 액티비티 안에 있는 프래그먼트는 
+android.app.Activity#onCreate onCreate()} 콜백을 받은 경우, 해당 액티비티 안에 있는 프래그먼트는
 {@link android.app.Fragment#onActivityCreated onActivityCreated()} 콜백을 받을 뿐입니다.</p>
 
-<p>액티비티가 재개된 상태에 도달하면 자유자재로 프래그먼트를 액티비티에 추가하거나 액티비티에서 
-제거해도 됩니다. 따라서, 액티비티가 재개된 상태에 있는 동안에만 프래그먼트의 수명 주기를 
+<p>액티비티가 재개된 상태에 도달하면 자유자재로 프래그먼트를 액티비티에 추가하거나 액티비티에서
+제거해도 됩니다. 따라서, 액티비티가 재개된 상태에 있는 동안에만 프래그먼트의 수명 주기를
 독립적으로 변경할 수 있는 것입니다.</p>
 
-<p>그러나 액티비티가 재개된 상태를 떠나면 액티비티는 다시 프래그먼트를 그 수명 주기 안으로 
+<p>그러나 액티비티가 재개된 상태를 떠나면 액티비티는 다시 프래그먼트를 그 수명 주기 안으로
 밀어넣습니다.</p>
 
 
@@ -733,13 +733,13 @@
 
 <h2 id="Example">예</h2>
 
-<p>이 문서에서 논의한 모든 것을 한 번에 모아 보기 위해, 다음은 두 개의 프래그먼트를 사용하여 
-창이 두 개인 레이아웃을 생성하는 액티비티를 예시로 나타낸 것입니다. 아래의 액티비티에 포함된 
-한 프래그먼트는 셰익스피어 희곡 제목 목록을 표시하고, 또 다른 하나는 목록에서 선택했을 때 
-해당 희곡의 요약을 표시합니다. 또한 화면 구성을 근거로 프래그먼트를 여러 가지로 구성하여 제공하는 방법도 
+<p>이 문서에서 논의한 모든 것을 한 번에 모아 보기 위해, 다음은 두 개의 프래그먼트를 사용하여
+창이 두 개인 레이아웃을 생성하는 액티비티를 예시로 나타낸 것입니다. 아래의 액티비티에 포함된
+한 프래그먼트는 셰익스피어 희곡 제목 목록을 표시하고, 또 다른 하나는 목록에서 선택했을 때
+해당 희곡의 요약을 표시합니다. 또한 화면 구성을 근거로 프래그먼트를 여러 가지로 구성하여 제공하는 방법도
 보여줍니다.</p>
 
-<p class="note"><strong>참고:</strong> 이 액티비티에 대한 완전한 소스 코드는 
+<p class="note"><strong>참고:</strong> 이 액티비티에 대한 완전한 소스 코드는
 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
 FragmentLayout.java}</a>에서 이용하실 수 있습니다.</p>
 
@@ -752,44 +752,44 @@
 
 {@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
 
-<p>시스템은 이 레이아웃을 사용하여 액티비티가 레이아웃을 로딩하자마자 {@code TitlesFragment}를 초기화합니다(이것이 희곡 제목을 
+<p>시스템은 이 레이아웃을 사용하여 액티비티가 레이아웃을 로딩하자마자 {@code TitlesFragment}를 초기화합니다(이것이 희곡 제목을
 목록으로 나열합니다). 반면 {@link android.widget.FrameLayout}
-(희곡 요약을 표시하는 프래그먼트가 배치될 곳)은 화면 오른쪽에 있는 
-공간을 차지하기는 하지만 처음에는 텅 빈 상태로 유지됩니다. 아래에서 볼 수 있듯이, 사용자가 해당 목록에서 
+(희곡 요약을 표시하는 프래그먼트가 배치될 곳)은 화면 오른쪽에 있는
+공간을 차지하기는 하지만 처음에는 텅 빈 상태로 유지됩니다. 아래에서 볼 수 있듯이, 사용자가 해당 목록에서
 항목을 하나 선택해야만 프래그먼트가 {@link android.widget.FrameLayout} 안에 배치됩니다.</p>
 
-<p>그러나 희곡 목록과 요약을 둘 다 나란히 표시할 만큼 너비가 넓지 않은 
-화면 구성도 있습니다. 따라서 위의 레이아웃은 가로 방향 화면 구성에만 사용되며, 
+<p>그러나 희곡 목록과 요약을 둘 다 나란히 표시할 만큼 너비가 넓지 않은
+화면 구성도 있습니다. 따라서 위의 레이아웃은 가로 방향 화면 구성에만 사용되며,
 이를 {@code res/layout-land/fragment_layout.xml}에 저장하여 씁니다.</p>
 
-<p>그러므로 화면이 세로 방향으로 구성된 경우, 시스템은 다음 레이아웃을 적용합니다. 이것은 
+<p>그러므로 화면이 세로 방향으로 구성된 경우, 시스템은 다음 레이아웃을 적용합니다. 이것은
 {@code res/layout/fragment_layout.xml}에 저장되어 있습니다.</p>
 
 {@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
 
-<p>이 레이아웃에는 {@code TitlesFragment}만 포함되어 있습니다. 이는 다시 말해 기기가 세로 방향인 경우에는 
-희곡 제목 목록만 표시된다는 뜻입니다. 따라서 사용자가 이 구성에서 목록 항목을 하나 클릭하면, 
-애플리케이션이 두 번째 프래그먼트를 로딩하는 대신 새 액티비티를 시작하여 요약을 
+<p>이 레이아웃에는 {@code TitlesFragment}만 포함되어 있습니다. 이는 다시 말해 기기가 세로 방향인 경우에는
+희곡 제목 목록만 표시된다는 뜻입니다. 따라서 사용자가 이 구성에서 목록 항목을 하나 클릭하면,
+애플리케이션이 두 번째 프래그먼트를 로딩하는 대신 새 액티비티를 시작하여 요약을
 표시하게 됩니다.</p>
 
 <p>다음으로, 프래그먼트 클래스에서 이것을 달성하는 방법을 보시겠습니다. 첫 번째가 {@code
 TitlesFragment}로, 셰익스피어 희곡 제목 목록을 표시하는 것입니다. 이 프래그먼트는 {@link
 android.app.ListFragment}를 확장하며 목록 보기 작업의 대부분을 처리하기 위해 여기에 의존합니다.</p>
 
-<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>두 번째 프래그먼트인 {@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> 경우(이 보기가 
+<p>{@code TitlesFragment} 클래스에서 다룬 것을 되살려 보면, 사용자가 목록 항목을 클릭하고
+현재 레이아웃이 {@code R.id.details} 보기를 포함하지 <em>않는</em> 경우(이 보기가
 {@code DetailsFragment}가 속하는 곳임), 애플리케이션은 항목의 내용을 표시하기 위해 {@code DetailsActivity}
  액티비티를 시작하게 됩니다.</p>
 
@@ -798,14 +798,14 @@
 
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
 details_activity}
- 
-<p>이 액티비티는 구성이 가로 방향인 경우 알아서 종료한다는 점을 눈여겨 보십시오. 따라서 
+
+<p>이 액티비티는 구성이 가로 방향인 경우 알아서 종료한다는 점을 눈여겨 보십시오. 따라서
 주요 액티비티가 작업을 인계 받아 {@code DetailsFragment}를 {@code TitlesFragment}와 함께 표시할 수 있는 것입니다.
-이것은 사용자가 세로 방향 구성에서 {@code DetailsActivity}를 시작했지만 
+이것은 사용자가 세로 방향 구성에서 {@code DetailsActivity}를 시작했지만
 그런 다음 가로 방향으로 돌리는 경우(현재 액티비티를 다시 시작함) 일어날 수 있습니다.</p>
 
 
-<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
index 608b5a2c..6bb5a9f 100644
--- a/docs/html-intl/intl/ko/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/ko/guide/components/fundamentals.jd
@@ -22,54 +22,54 @@
 </div>
 </div>
 
-<p>Android 앱은 Java 프로그래밍 언어로 작성됩니다. Android SDK 도구는 
+<p>Android 앱은 Java 프로그래밍 언어로 작성됩니다. Android SDK 도구는
 코드를 컴파일링하여 모든 데이터 및 리소스 파일과 함께 하나의 APK로 만듭니다. 이것은 즉, <i>Android 패키지</i>
-를 뜻하며, 이는 일종의 {@code .apk} 접미사가 있는 아카이브 파일입니다. 한 개의 APK 파일에는 
+를 뜻하며, 이는 일종의 {@code .apk} 접미사가 있는 아카이브 파일입니다. 한 개의 APK 파일에는
 Android 앱의 모든 콘텐츠가 들어 있으며 이 파일이 바로 Android로 구동하는 기기가 앱을 설치할 때 사용하는 파일입니다.</p>
 
 <p>Android 앱은 일단 기기에 설치되고 나면 각자 나름의 보안 샌드박스 안에 살게 됩니다. </p>
 
 <ul>
- <li>Android 운영 체제는 멀티 사용자 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와 
+ <li>Android 운영 체제는 멀티 사용자 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와
 같습니다.</li>
 
-<li>기본적으로 시스템이 각 앱에 고유한 Linux ID를 할당합니다(이 ID는 시스템만 
-사용할 수 있으며 앱은 이것을 알지 못합니다). 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여 
+<li>기본적으로 시스템이 각 앱에 고유한 Linux ID를 할당합니다(이 ID는 시스템만
+사용할 수 있으며 앱은 이것을 알지 못합니다). 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여
 해당 앱에 할당된 사용자 ID만 이에 액세스할 수 있도록 합니다. </li>
 
-<li>각 프로세스에는 나름의 가상 머신(VM)이 있고, 그렇기 때문에 한 앱의 코드가 다른 여러 앱과는 격리된 상태로 
+<li>각 프로세스에는 나름의 가상 머신(VM)이 있고, 그렇기 때문에 한 앱의 코드가 다른 여러 앱과는 격리된 상태로
 실행됩니다.</li>
 
-<li>기본적으로 모든 앱이 나름의 Linux 프로세스에서 실행됩니다. Android는 앱의 구성 요소 중 
-어느 것이라도 실행해야 하는 경우 프로세스를 시작하고, 이것이 더 이상 필요 없어지거나 시스템이 다른 앱을 위해 
+<li>기본적으로 모든 앱이 나름의 Linux 프로세스에서 실행됩니다. Android는 앱의 구성 요소 중
+어느 것이라도 실행해야 하는 경우 프로세스를 시작하고, 이것이 더 이상 필요 없어지거나 시스템이 다른 앱을 위해
 메모리를 회복해야 하는 경우 해당 프로세스를 종료합니다.</li>
 </ul>
 
-<p>Android 시스템은 이런 방식으로 <em>최소 특권의 원리</em>를 구현하는 것입니다. 다시 말해, 
-각 앱은 기본적으로 자신의 작업을 수행하기 위해 필요한 구성 요소에만 액세스 권한을 가지고 
-그 이상은 허용되지 않습니다. 이렇게 하면 대단히 안전한 환경이 만들어져 앱이 시스템에서 
+<p>Android 시스템은 이런 방식으로 <em>최소 특권의 원리</em>를 구현하는 것입니다. 다시 말해,
+각 앱은 기본적으로 자신의 작업을 수행하기 위해 필요한 구성 요소에만 액세스 권한을 가지고
+그 이상은 허용되지 않습니다. 이렇게 하면 대단히 안전한 환경이 만들어져 앱이 시스템에서
 자신이 권한을 부여 받지 못한 부분에는 액세스할 수 없게 됩니다.</p>
 
-<p>그러나, 앱이 다른 여러 앱과 데이터를 공유하는 것과 앱이 시스템 서비스에 액세스하는 데에는 
+<p>그러나, 앱이 다른 여러 앱과 데이터를 공유하는 것과 앱이 시스템 서비스에 액세스하는 데에는
 여러 가지 방법이 있습니다.</p>
 
 <ul>
-  <li>두 개의 앱이 같은 Linux 사용자 ID를 공유하도록 설정할 수도 있습니다. 이 경우 
-두 앱은 서로의 파일에 액세스할 수 있게 됩니다.  시스템 리소스를 절약하려면, 같은 사용자 ID를 가진 앱이 
-같은 Linux 프로세스에서 실행되도록 설정하고 같은 VM을 공유하도록 할 수도 있습니다(이들 앱은 같은 인증서로 
+  <li>두 개의 앱이 같은 Linux 사용자 ID를 공유하도록 설정할 수도 있습니다. 이 경우
+두 앱은 서로의 파일에 액세스할 수 있게 됩니다.  시스템 리소스를 절약하려면, 같은 사용자 ID를 가진 앱이
+같은 Linux 프로세스에서 실행되도록 설정하고 같은 VM을 공유하도록 할 수도 있습니다(이들 앱은 같은 인증서로
 서명해야 합니다).</li>
-  <li>앱은 사용자의 연락처, SMS 메시지, 마운트 가능한 저장소(SD 카드), 
-카메라, Bluetooth를 비롯하여 이외에도 여러 가지 기기 데이터에 액세스할 권한을 요청할 수 있습니다. 모든 
+  <li>앱은 사용자의 연락처, SMS 메시지, 마운트 가능한 저장소(SD 카드),
+카메라, Bluetooth를 비롯하여 이외에도 여러 가지 기기 데이터에 액세스할 권한을 요청할 수 있습니다. 모든
 앱 권한은 설치 시점에 사용자가 허용해야 합니다.</li>
 </ul>
 
-<p>이렇게 해서 Android 앱이 시스템 내에 어떤 식으로 존재하는지 기본 정보를 알아보았습니다. 이 문서의 
+<p>이렇게 해서 Android 앱이 시스템 내에 어떤 식으로 존재하는지 기본 정보를 알아보았습니다. 이 문서의
 나머지 부분에서 소개될 내용은 다음과 같습니다.</p>
 <ul>
   <li>앱을 정의하는 핵심 프레임워크 구성 요소.</li>
-  <li>구성 요소를 선언하고 앱에 맞는 필수 기기 특징을 선언할 수 있는 매니페스트 
+  <li>구성 요소를 선언하고 앱에 맞는 필수 기기 특징을 선언할 수 있는 매니페스트
 파일.</li>
-  <li>앱 코드로부터 별도로 분리되어 있으며 앱이 다양한 기기 구성에 맞게 자신의 행동을 
+  <li>앱 코드로부터 별도로 분리되어 있으며 앱이 다양한 기기 구성에 맞게 자신의 행동을
 안정적으로 최적화할 수 있도록 해주는 리소스.</li>
 </ul>
 
@@ -77,13 +77,13 @@
 
 <h2 id="Components">앱 구성 요소</h2>
 
-<p>앱 구성 요소는 Android 앱을 이루는 가장 기본적인 구성 단위입니다. 각 
-구성 요소는 시스템이 앱으로 들어올 수 있는 각기 다른 통과 지점을 나타냅니다. 구성 요소 중에는 
-실제 사용자가 쓸 수 있는 진입 지점이 아닌 것도 있고, 일부는 서로에게 의존하지만, 
-각각의 구성 요소는 따로 떨어진 엔티티로서 존재하며 각기 특정한 역할을 수행합니다. 즉 하나하나가 
+<p>앱 구성 요소는 Android 앱을 이루는 가장 기본적인 구성 단위입니다. 각
+구성 요소는 시스템이 앱으로 들어올 수 있는 각기 다른 통과 지점을 나타냅니다. 구성 요소 중에는
+실제 사용자가 쓸 수 있는 진입 지점이 아닌 것도 있고, 일부는 서로에게 의존하지만,
+각각의 구성 요소는 따로 떨어진 엔티티로서 존재하며 각기 특정한 역할을 수행합니다. 즉 하나하나가
 앱의 전반적인 행동을 정의하는 데 유용한 고유한 구성 단위인 것입니다.</p>
 
-<p>앱 구성 요소에는 네 가지 서로 다른 유형이 있습니다. 각 유형이 뚜렷한 목적을 가지고 있으며 
+<p>앱 구성 요소에는 네 가지 서로 다른 유형이 있습니다. 각 유형이 뚜렷한 목적을 가지고 있으며
 각자 나름의 수명 주기가 있어 구성 요소의 생성 및 소멸 방식을 정의합니다.</p>
 
 <p>다음은 네 가지 유형의 앱 구성 요소를 나타낸 것입니다.</p>
@@ -92,15 +92,15 @@
 
 <dt><b>액티비티</b></dt>
 
-<dd>통상 <i>액티비티</i> 라고 하면, 사용자 인터페이스가 있는 화면 하나를 나타냅니다. 예를 들어 
-이메일 앱이라면 새 이메일 목록을 표시하는 액티비티가 하나 있고, 
-이메일을 작성하는 액티비티가 또 하나, 그리고 이메일을 읽는 데 쓰는 액티비티가 또 하나 있을 수 있습니다. 여러 
-액티비티가 함께 작동하여 해당 이메일 앱에서 짜임새 있는 사용자 환경을 형성하는 것은 사실이지만, 각자 서로와는 
-독립적인 형태입니다. 따라서, 다른 앱이 이와 같은 액티비티 중 어느 것이라도 하나만 
-시작할 수 있습니다(이메일 앱이 그렇게 하도록 허용하는 경우). 예를 들어, 카메라 앱이라면 이메일 앱 안의 
+<dd>통상 <i>액티비티</i> 라고 하면, 사용자 인터페이스가 있는 화면 하나를 나타냅니다. 예를 들어
+이메일 앱이라면 새 이메일 목록을 표시하는 액티비티가 하나 있고,
+이메일을 작성하는 액티비티가 또 하나, 그리고 이메일을 읽는 데 쓰는 액티비티가 또 하나 있을 수 있습니다. 여러
+액티비티가 함께 작동하여 해당 이메일 앱에서 짜임새 있는 사용자 환경을 형성하는 것은 사실이지만, 각자 서로와는
+독립적인 형태입니다. 따라서, 다른 앱이 이와 같은 액티비티 중 어느 것이라도 하나만
+시작할 수 있습니다(이메일 앱이 그렇게 하도록 허용하는 경우). 예를 들어, 카메라 앱이라면 이메일 앱 안의
 액티비티를 시작하여 새 메일을 작성하도록 해서 사용자가 사진을 공유하도록 할 수 있습니다.
 
-<p>액티비티는 {@link android.app.Activity}의 하위 클래스로 구현되며 이에 대한 더 자세한 내용은 
+<p>액티비티는 {@link android.app.Activity}의 하위 클래스로 구현되며 이에 대한 더 자세한 내용은
 <a href="{@docRoot}guide/components/activities.html">액티비티</a>
 개발자 가이드에서 확인하실 수 있습니다.</p>
 </dd>
@@ -108,14 +108,14 @@
 
 <dt><b>서비스</b></dt>
 
-<dd>통상 <i>서비스</i> 라고 하면 배경에서 실행되는 구성 요소로, 오랫동안 실행되는 
-작업을 수행하거나 원격 프로세스를 위한 작업을 수행하는 것입니다. 서비스는 
-사용자 인터페이스를 제공하지 않습니다. 예를 들어 서비스는 사용자가 다른 앱에 있는 동안에 배경에서 음악을 재생할 수도 있고, 
-아니면 사용자와 액티비티 사이의 상호 작용을 차단하지 않고 네트워크를 가로질러 
-데이터를 가져올 수도 있습니다. 또 다른 구성 요소(예: 액티비티)가 서비스를 시작한 다음 
+<dd>통상 <i>서비스</i> 라고 하면 배경에서 실행되는 구성 요소로, 오랫동안 실행되는
+작업을 수행하거나 원격 프로세스를 위한 작업을 수행하는 것입니다. 서비스는
+사용자 인터페이스를 제공하지 않습니다. 예를 들어 서비스는 사용자가 다른 앱에 있는 동안에 배경에서 음악을 재생할 수도 있고,
+아니면 사용자와 액티비티 사이의 상호 작용을 차단하지 않고 네트워크를 가로질러
+데이터를 가져올 수도 있습니다. 또 다른 구성 요소(예: 액티비티)가 서비스를 시작한 다음
 실행되도록 두거나 자신에게 바인딩하여 상호 작용하도록 할 수도 있습니다.
 
-<p>서비스는 {@link android.app.Service}의 하위 클래스로 구현되며 이에 대한 더 자세한 내용은 
+<p>서비스는 {@link android.app.Service}의 하위 클래스로 구현되며 이에 대한 더 자세한 내용은
 <a href="{@docRoot}guide/components/services.html">서비스</a>
 개발자 가이드에서 확인하실 수 있습니다.</p>
 </dd>
@@ -123,20 +123,20 @@
 
 <dt><b>콘텐츠 제공자</b></dt>
 
-<dd>통상 <i>콘텐츠 제공자</i> 는 공유된 앱 데이터 집합을 관리합니다. 데이터는 파일 시스템이나 SQLite 데이터베이스, 
-또는 웹이나 기타 영구적인 저장소 위치 중 앱이 액세스할 수 있는 곳이라면 어디에든 저장할 수 
-있습니다. 다른 여러 앱은 콘텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 심지어는 수정할 수도 
-있습니다(콘텐츠 제공자가 그렇게 하도록 허용하는 경우). 예를 들어, Android 시스템은 사용자의 연락처 정보를 
-관리하는 콘텐츠 제공자를 제공합니다. 따라서, 적절한 권한을 가진 앱이라면 
+<dd>통상 <i>콘텐츠 제공자</i> 는 공유된 앱 데이터 집합을 관리합니다. 데이터는 파일 시스템이나 SQLite 데이터베이스,
+또는 웹이나 기타 영구적인 저장소 위치 중 앱이 액세스할 수 있는 곳이라면 어디에든 저장할 수
+있습니다. 다른 여러 앱은 콘텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 심지어는 수정할 수도
+있습니다(콘텐츠 제공자가 그렇게 하도록 허용하는 경우). 예를 들어, Android 시스템은 사용자의 연락처 정보를
+관리하는 콘텐츠 제공자를 제공합니다. 따라서, 적절한 권한을 가진 앱이라면
 어떤 것이든 해당 콘텐츠 제공자의 일부를 쿼리하여(예를 들어 {@link
 android.provider.ContactsContract.Data} 등) 특정한 사람에 대한 정보를 읽고 쓸 수 있습니다.
 
-<p>콘텐츠 제공자는 앱에서 비공개이며 공유되지 않는 데이터를 읽고 쓰는 데에도 
-유용합니다. 예를 들어 <a href="{@docRoot}resources/samples/NotePad/index.html">메모장</a> 샘플 앱은 메모한 내용을 저장하는 데 
+<p>콘텐츠 제공자는 앱에서 비공개이며 공유되지 않는 데이터를 읽고 쓰는 데에도
+유용합니다. 예를 들어 <a href="{@docRoot}resources/samples/NotePad/index.html">메모장</a> 샘플 앱은 메모한 내용을 저장하는 데
 콘텐츠 제공자를 사용합니다.</p>
 
 <p>콘텐츠 제공자는 {@link android.content.ContentProvider}의
-하위 클래스로 구현되며, 다른 앱이 트랜잭션을 수행할 수 있도록 활성화하는 표준 API 집합을 
+하위 클래스로 구현되며, 다른 앱이 트랜잭션을 수행할 수 있도록 활성화하는 표준 API 집합을
 구현해야 합니다. 자세한 내용은 <a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a> 개발자
 가이드를 참조하십시오.</p>
 </dd>
@@ -144,18 +144,18 @@
 
 <dt><b>브로드캐스트 수신기</b></dt>
 
-<dd>통상 <i>브로드캐스트 수신기</i> 는 시스템 전체에 대한 브로드캐스트 공지에 응답하는 구성 요소를 
-말합니다.  대다수의 브로드캐스트는 시스템에서 시작합니다. 예를 들어, 화면이 꺼졌다거나 
+<dd>통상 <i>브로드캐스트 수신기</i> 는 시스템 전체에 대한 브로드캐스트 공지에 응답하는 구성 요소를
+말합니다.  대다수의 브로드캐스트는 시스템에서 시작합니다. 예를 들어, 화면이 꺼졌다거나
 배터리 잔량이 부족하다거나, 사진을 캡처했다는 것을 알리는 브로드캐스트가 있습니다.
-앱도 브로드캐스트를 시작합니다. 예를 들어, 기기에 몇 가지 데이터를 다운로드하여 다른 앱도 사용할 수 있다는 
-사실을 다른 여러 앱에게 알리는 것입니다. 브로드캐스트 수신기는 사용자 인터페이스를 표시하지 않지만, 
-<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 알림을 생성</a>하여 
-사용자에게 브로드캐스트 이벤트가 발생했다고 알릴 수 있습니다. 다만 브로드캐스트 수신기는 
-그저 다른 구성 요소로의 "게이트웨이"인 경우가 더 보편적이고, 극소량의 작업만 수행하도록 만들어진 경우가 많습니다. 예컨대 
+앱도 브로드캐스트를 시작합니다. 예를 들어, 기기에 몇 가지 데이터를 다운로드하여 다른 앱도 사용할 수 있다는
+사실을 다른 여러 앱에게 알리는 것입니다. 브로드캐스트 수신기는 사용자 인터페이스를 표시하지 않지만,
+<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 알림을 생성</a>하여
+사용자에게 브로드캐스트 이벤트가 발생했다고 알릴 수 있습니다. 다만 브로드캐스트 수신기는
+그저 다른 구성 요소로의 "게이트웨이"인 경우가 더 보편적이고, 극소량의 작업만 수행하도록 만들어진 경우가 많습니다. 예컨대
 서비스를 시작하여 이벤트를 근거로 한 어떤 작업을 수행하도록 할 수 있습니다.
 
-<p>브로드캐스트 수신기는 {@link android.content.BroadcastReceiver}의 
-하위 클래스로 구현되며 각 브로드캐스트는 {@link android.content.Intent} 객체로 전달됩니다. 자세한 정보는 
+<p>브로드캐스트 수신기는 {@link android.content.BroadcastReceiver}의
+하위 클래스로 구현되며 각 브로드캐스트는 {@link android.content.Intent} 객체로 전달됩니다. 자세한 정보는
 {@link android.content.BroadcastReceiver} 클래스를 참조하십시오.</p>
 </dd>
 
@@ -163,72 +163,72 @@
 
 
 
-<p>Android 시스템 디자인의 독특한 점으로 어떤 앱이든 다른 앱의 구성 요소를 시작할 수 있다는 점을 
-들 수 있습니다. 예를 들어 사용자가 기기 카메라로 사진을 캡처하기를 바라는 경우, 
-그런 작업을 수행하는 또 다른 앱이 있을 가능성이 높습니다. 그러면 사진을 캡처하는 액티비티를 직접 개발하는 대신 
-여러분의 앱이 그 앱을 사용하도록 하면 됩니다. 카메라 앱에 
+<p>Android 시스템 디자인의 독특한 점으로 어떤 앱이든 다른 앱의 구성 요소를 시작할 수 있다는 점을
+들 수 있습니다. 예를 들어 사용자가 기기 카메라로 사진을 캡처하기를 바라는 경우,
+그런 작업을 수행하는 또 다른 앱이 있을 가능성이 높습니다. 그러면 사진을 캡처하는 액티비티를 직접 개발하는 대신
+여러분의 앱이 그 앱을 사용하도록 하면 됩니다. 카메라 앱에
 통합하기는커녕 카메라 앱의 코드에 연결시킬 필요조차도 없습니다.
-그 대신, 그저 사진을 캡처하는 카메라 앱 안의 해당 액티비티를 시작하기만 하면 
-됩니다. 작업이 완료되면 사진이 앱으로 반환되기까지 하여 바로 사용할 수 있습니다. 사용자에게는, 
+그 대신, 그저 사진을 캡처하는 카메라 앱 안의 해당 액티비티를 시작하기만 하면
+됩니다. 작업이 완료되면 사진이 앱으로 반환되기까지 하여 바로 사용할 수 있습니다. 사용자에게는,
 마치 카메라가 여러분의 앱의 일부분인 것처럼 보입니다.</p>
 
-<p>시스템이 구성 요소를 시작하는 경우, 그 앱에 대한 프로세스를 시작하는 것이며(이미 
-실행 중이지 않은 경우), 해당 구성 요소에 필요한 클래스를 인스턴트화하는 것입니다. 예를 들어 여러분의 앱이 
-카메라 앱 내에서 사진을 캡처하는 액티비티를 시작한다고 하면, 해당 액티비티는 
-여러분 앱의 프로세스가 아니라 카메라 앱에 속한 프로세스에서 실행됩니다. 
-따라서 대부분의 다른 시스템에서와는 달리 Android 앱에는 단일한 진입 
+<p>시스템이 구성 요소를 시작하는 경우, 그 앱에 대한 프로세스를 시작하는 것이며(이미
+실행 중이지 않은 경우), 해당 구성 요소에 필요한 클래스를 인스턴트화하는 것입니다. 예를 들어 여러분의 앱이
+카메라 앱 내에서 사진을 캡처하는 액티비티를 시작한다고 하면, 해당 액티비티는
+여러분 앱의 프로세스가 아니라 카메라 앱에 속한 프로세스에서 실행됩니다.
+따라서 대부분의 다른 시스템에서와는 달리 Android 앱에는 단일한 진입
 지점이 없습니다(예를 들어 {@code main()} 기능이 없습니다).</p>
 
-<p>시스템이 각 앱을 별도의 프로세스에서 실행하며 다른 앱에 대한 액세스를 제한하는 
-파일 권한을 가지고 실행하기 때문에 여러분의 앱은 또 다른 앱에서 곧바로 구성 요소를 
-활성화할 수는 없습니다. 하지만 Android 시스템은 할 수 있습니다. 그래서 또 다른 앱에 있는 
-구성 요소를 활성화하려면 시스템에 메시지를 전달하여 특정 구성 요소를 시작하고자 하는 <em>인텐트</em>를 
+<p>시스템이 각 앱을 별도의 프로세스에서 실행하며 다른 앱에 대한 액세스를 제한하는
+파일 권한을 가지고 실행하기 때문에 여러분의 앱은 또 다른 앱에서 곧바로 구성 요소를
+활성화할 수는 없습니다. 하지만 Android 시스템은 할 수 있습니다. 그래서 또 다른 앱에 있는
+구성 요소를 활성화하려면 시스템에 메시지를 전달하여 특정 구성 요소를 시작하고자 하는 <em>인텐트</em>를
 밝혀야 합니다. 그러면 시스템이 대신 해당 구성 요소를 활성화해줍니다.</p>
 
 
 <h3 id="ActivatingComponents">구성 요소 활성화</h3>
 
-<p>네 가지 구성 요소 중 세 가지&mdash;액티비티, 서비스 및 
+<p>네 가지 구성 요소 중 세 가지&mdash;액티비티, 서비스 및
 브로드캐스트 수신기&mdash;는 일명 <em>인텐트</em>라고 하는 비동기식 메시지가 활성화합니다.
-인텐트는 각각의 구성 요소를 런타임에 서로 바인딩하며(다른 구성 요소로부터 작업을 요청하는 
-일종의 메신저로 생각하면 됩니다), 이는 구성 요소가 여러분의 앱에 속하든 아니든 
+인텐트는 각각의 구성 요소를 런타임에 서로 바인딩하며(다른 구성 요소로부터 작업을 요청하는
+일종의 메신저로 생각하면 됩니다), 이는 구성 요소가 여러분의 앱에 속하든 아니든
 무관합니다.</p>
 
-<p>인텐트는 {@link android.content.Intent} 객체로 생성되며, 이것이 
-특정 구성 요소를 활성화할지 아니면 구성 요소의 특정 <em>유형</em>을 활성화할지를 나타내는 메시지를 정의합니다. 인텐트는 
+<p>인텐트는 {@link android.content.Intent} 객체로 생성되며, 이것이
+특정 구성 요소를 활성화할지 아니면 구성 요소의 특정 <em>유형</em>을 활성화할지를 나타내는 메시지를 정의합니다. 인텐트는
 각각 명시적이거나 암시적일 수 있습니다.</p>
 
-<p>액티비티와 서비스의 경우, 인텐트는 수행할 작업을 정의하며(예를 들어 무언가를 '보기" 또는 
-"보내기"), 작업을 수행할 데이터의 URI를 나타낼 수 있습니다(시작되는 구성 요소가 알아야 할 것은 
-이외에도 많이 있습니다). 예를 들어, 인텐트는 액티비티에 이미지를 표시하거나 웹 페이지를 열라는 요청을 
-전달할 수 있습니다. 어떤 경우에는 액티비티를 시작하여 
-결과를 받아오도록 할 수 있습니다. 이런 경우 이 액티비티는 
-{@link android.content.Intent}로 결과를 반환하기도 합니다(예를 들어, 사용자가 
-개인적인 연락처를 선택하도록 한 다음 그것을 반환하도록 하는 인텐트를 발행할 수 있습니다&mdash;반환 인텐트에 
+<p>액티비티와 서비스의 경우, 인텐트는 수행할 작업을 정의하며(예를 들어 무언가를 '보기" 또는
+"보내기"), 작업을 수행할 데이터의 URI를 나타낼 수 있습니다(시작되는 구성 요소가 알아야 할 것은
+이외에도 많이 있습니다). 예를 들어, 인텐트는 액티비티에 이미지를 표시하거나 웹 페이지를 열라는 요청을
+전달할 수 있습니다. 어떤 경우에는 액티비티를 시작하여
+결과를 받아오도록 할 수 있습니다. 이런 경우 이 액티비티는
+{@link android.content.Intent}로 결과를 반환하기도 합니다(예를 들어, 사용자가
+개인적인 연락처를 선택하도록 한 다음 그것을 반환하도록 하는 인텐트를 발행할 수 있습니다&mdash;반환 인텐트에
 선택한 연락처를 가리키는 URI가 포함됩니다).</p>
 
-<p>브로드캐스트 수신기의 경우, 인텐트는 단순히 브로드캐스트될 알림을 
-정의할 뿐입니다(예를 들어, 기기 배터리 잔량이 낮다는 것을 나타내는 브로드캐스트에는 
+<p>브로드캐스트 수신기의 경우, 인텐트는 단순히 브로드캐스트될 알림을
+정의할 뿐입니다(예를 들어, 기기 배터리 잔량이 낮다는 것을 나타내는 브로드캐스트에는
 "배터리 부족"을 나타내는 알려진 작업 문자열만 포함됩니다).</p>
 
-<p>남은 하나의 구성 요소 유형, 즉 콘텐츠 제공자는 인텐트가 활성화하지 않습니다. 그보다는 
-{@link android.content.ContentResolver}로부터의 요청으로 지정되면 활성화됩니다. 콘텐츠 
-확인자는 콘텐츠 제공자와의 모든 직접적인 트랜잭션을 처리하여 
+<p>남은 하나의 구성 요소 유형, 즉 콘텐츠 제공자는 인텐트가 활성화하지 않습니다. 그보다는
+{@link android.content.ContentResolver}로부터의 요청으로 지정되면 활성화됩니다. 콘텐츠
+확인자는 콘텐츠 제공자와의 모든 직접적인 트랜잭션을 처리하여
 제공자와의 트랜잭션을 수행하는 구성 요소가 그런 일을 하지 않아도 되게 하고, 그 대신 {@link
-android.content.ContentResolver} 객체에서 메서드를 호출합니다. 이렇게 되면 콘텐츠 제공자와 
+android.content.ContentResolver} 객체에서 메서드를 호출합니다. 이렇게 되면 콘텐츠 제공자와
 정보를 요청하는 구성 요소 사이에 추상화 계층이 하나 남습니다(보안 목적).</p>
 
 <p>각 유형의 구성 요소를 활성화하는 데에는 각기 별도의 메서드가 있습니다.</p>
 <ul>
-  <li>액티비티를 시작하려면(아니면 무언가 새로운 할 일을 주려면) 
+  <li>액티비티를 시작하려면(아니면 무언가 새로운 할 일을 주려면)
 {@link android.content.Intent}를 {@link android.content.Context#startActivity
-startActivity()} 또는 {@link android.app.Activity#startActivityForResult startActivityForResult()}에 
+startActivity()} 또는 {@link android.app.Activity#startActivityForResult startActivityForResult()}에
 전달하면 됩니다(액티비티가 결과를 반환하기를 원하는 경우).</li>
-  <li>서비스를 시작하려면(또는 진행 중인 서비스에 새로운 지침을 주려면) 
+  <li>서비스를 시작하려면(또는 진행 중인 서비스에 새로운 지침을 주려면)
 {@link android.content.Intent}를 {@link android.content.Context#startService
-startService()}에 전달하면 됩니다. 아니면 {@link android.content.Intent}를 
+startService()}에 전달하면 됩니다. 아니면 {@link android.content.Intent}를
 {@link android.content.Context#bindService bindService()}에 전달하여 서비스에 바인딩할 수도 있습니다.</li>
-  <li>브로드캐스트를 시작하려면 {@link android.content.Intent}를 
+  <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>
@@ -236,29 +236,29 @@
 android.content.ContentProvider#query query()}를 호출하면 됩니다.</li>
 </ul>
 
-<p>인텐트 사용에 관한 자세한 정보는 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 
-인텐트 필터</a>문서를 참조하십시오. 특정 구성 요소를 활성화하는 데 관한 자세한 정보 또한 다음 문서에 
+<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 시스템이 앱 구성 요소를 시작하려면 시스템은 우선 해당 구성 요소가 
+<p>Android 시스템이 앱 구성 요소를 시작하려면 시스템은 우선 해당 구성 요소가
 존재하는지 알아야 합니다. 그러기 위해 앱의 {@code AndroidManifest.xml} 파일을 읽습니다(즉 "매니페스트"
-파일). 앱은 이 파일 안에 모든 구성 요소를 선언해야 하며, 이 파일은 앱 프로젝트 디렉터리의 루트에 
+파일). 앱은 이 파일 안에 모든 구성 요소를 선언해야 하며, 이 파일은 앱 프로젝트 디렉터리의 루트에
 있어야 합니다.</p>
 
 <p>매니페스트는 앱의 구성 요소를 선언하는 것 이외에도 수많은 역할을 합니다.
 예를 들면 다음과 같습니다.</p>
 <ul>
-  <li>앱이 요구하는 모든 사용자 권한 식별(예: 인터넷 액세스 또는 사용자의 연락처로의 
+  <li>앱이 요구하는 모든 사용자 권한 식별(예: 인터넷 액세스 또는 사용자의 연락처로의
 읽기 액세스)</li>
   <li>앱이 어느 API를 사용하는지를 근거로 하여 앱에서 요구하는 최소 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a>
 선언</li>
-  <li>앱에서 사용하거나 필요로 하는 하드웨어 및 소프트웨어 기능 선언(예: 카메라, 
+  <li>앱에서 사용하거나 필요로 하는 하드웨어 및 소프트웨어 기능 선언(예: 카메라,
 블루투스 서비스 또는 멀티터치 화면 등)</li>
-  <li>앱이 링크되어야 하는 API 라이브러리(Android 프레임워크 
+  <li>앱이 링크되어야 하는 API 라이브러리(Android 프레임워크
 API 제외)(예: <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps
 라이브러리</a>)</li>
   <li>그 외 기타 등등</li>
@@ -267,7 +267,7 @@
 
 <h3 id="DeclaringComponents">구성 요소 선언</h3>
 
-<p>매니페스트의 주요 작업은 시스템에 앱의 구성 요소에 대해 알리는 것입니다. 예를 들어 
+<p>매니페스트의 주요 작업은 시스템에 앱의 구성 요소에 대해 알리는 것입니다. 예를 들어
 매니페스트 파일은 액티비티를 다음과 같이 선언할 수 있습니다. </p>
 
 <pre>
@@ -283,36 +283,36 @@
 
 <p><code><a
 href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
-요소에서 {@code android:icon} 속성은 앱을 식별하는 아이콘에 대한 리소스를 
+요소에서 {@code android:icon} 속성은 앱을 식별하는 아이콘에 대한 리소스를
 가리킵니다.</p>
 
 <p><code><a
-href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소에서는, 
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소에서는,
 {@code android:name} 속성이 {@link
-android.app.Activity} 하위 클래스의 완전히 정규화된 클래스 이름을 나타내며 {@code android:label} 속성은 액티비티의 
+android.app.Activity} 하위 클래스의 완전히 정규화된 클래스 이름을 나타내며 {@code android:label} 속성은 액티비티의
 사용자에게 표시되는 레이블로 사용할 문자열을 나타냅니다.</p>
 
 <p>모든 앱 구성 요소를 이렇게 선언해야 합니다.</p>
 <ul>
-  <li>액티비티는 
+  <li>액티비티는
 <code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소</li>
-  <li>서비스는 
+  <li>서비스는
 <code><a
 href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 요소</li>
-  <li>브로드캐스트 수신기는 
+  <li>브로드캐스트 수신기는
 <code><a
 href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> 요소</li>
-  <li>콘텐츠 제공자는 
+  <li>콘텐츠 제공자는
 <code><a
 href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 요소</li>
 </ul>
 
-<p>액티비티, 서비스를 비롯하여 소스에는 포함시키지만 매니페스트에서는 선언하지 않는 
-콘텐츠 제공자는 시스템에 표시되지 않으며, 따라서 실행될 수 없습니다.  그러나 
+<p>액티비티, 서비스를 비롯하여 소스에는 포함시키지만 매니페스트에서는 선언하지 않는
+콘텐츠 제공자는 시스템에 표시되지 않으며, 따라서 실행될 수 없습니다.  그러나
 브로드캐스트
  수신기는 매니페스트에서 선언해도 되고 코드를 사용해(
-{@link android.content.BroadcastReceiver} 객체로) 동적으로 생성한 다음 시스템에 등록해도 됩니다. 이때 
+{@link android.content.BroadcastReceiver} 객체로) 동적으로 생성한 다음 시스템에 등록해도 됩니다. 이때
 {@link android.content.Context#registerReceiver registerReceiver()}를 호출하는 방법을 씁니다.</p>
 
 <p>앱에 맞는 매니페스트 파일을 구성하는 방법에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml 파일</a>을
@@ -322,26 +322,26 @@
 
 <h3 id="DeclaringComponentCapabilities">구성 요소 기능 선언</h3>
 
-<p>위에서 논한 바와 같이, <a href="#ActivatingComponents">활성화 상태의 구성 요소</a>에서는 
-{@link android.content.Intent}를 사용하여 액티비티, 서비스 및 브로드캐스트 수신기를 시작할 수 있습니다. 그렇게 하려면 
-대상 구성 요소를 인텐트 내에서 명시적으로 명명하면 됩니다(구성 요소 클래스 이름을 사용). 그러나, 
-인텐트의 진정한 힘은 <em>암시적 인텐트</em>의 개념에서 발휘됩니다. 암시적 인텐트는 
-그저 수행할 작업의 유형을 설명할 뿐이며(또한, 선택 사항으로, 해당 작업을 수행하고자 하는 
-데이터 위치도) 시스템에 기기에서 작업을 수행할 수 있는 구성 요소를 찾아 
-시작하도록 해줍니다. 인텐트가 설명한 작업을 수행할 수 있는 구성 요소가 여러 개인 경우, 
+<p>위에서 논한 바와 같이, <a href="#ActivatingComponents">활성화 상태의 구성 요소</a>에서는
+{@link android.content.Intent}를 사용하여 액티비티, 서비스 및 브로드캐스트 수신기를 시작할 수 있습니다. 그렇게 하려면
+대상 구성 요소를 인텐트 내에서 명시적으로 명명하면 됩니다(구성 요소 클래스 이름을 사용). 그러나,
+인텐트의 진정한 힘은 <em>암시적 인텐트</em>의 개념에서 발휘됩니다. 암시적 인텐트는
+그저 수행할 작업의 유형을 설명할 뿐이며(또한, 선택 사항으로, 해당 작업을 수행하고자 하는
+데이터 위치도) 시스템에 기기에서 작업을 수행할 수 있는 구성 요소를 찾아
+시작하도록 해줍니다. 인텐트가 설명한 작업을 수행할 수 있는 구성 요소가 여러 개인 경우,
 어느 것을 사용할지 사용자가 선택합니다.</p>
 
-<p>시스템이 인텐트에 응답할 수 있는 구성 요소를 식별하는 방법은 수신한 인텐트를 
- <i>인텐트 필터</i> 와 비교하는 것입니다. 이 인텐트 필터는 기기의 다른 여러 앱의 매니페스트 
+<p>시스템이 인텐트에 응답할 수 있는 구성 요소를 식별하는 방법은 수신한 인텐트를
+ <i>인텐트 필터</i> 와 비교하는 것입니다. 이 인텐트 필터는 기기의 다른 여러 앱의 매니페스트
 파일이 제공합니다.</p>
 
-<p>앱의 매니페스트에서 액티비티를 선언하는 경우, 선택 사항으로 
-해당 액티비티의 기능을 선언하는 인텐트 필터를 포함시켜서 다른 앱으로부터의 인텐트에 
-응답할 수 있도록 할 수 있습니다. 구성 요소에 대한 인텐트 필터를 선언하려면 
+<p>앱의 매니페스트에서 액티비티를 선언하는 경우, 선택 사항으로
+해당 액티비티의 기능을 선언하는 인텐트 필터를 포함시켜서 다른 앱으로부터의 인텐트에
+응답할 수 있도록 할 수 있습니다. 구성 요소에 대한 인텐트 필터를 선언하려면
 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 &lt;intent-filter&gt;}</a> 요소를 해당 구성 요소의 선언 요소 하위로 추가하면 됩니다.</p>
 
-<p>예를 들어, 새 이메일을 작성하는 데 쓰는 액티비티가 있는 이메일 앱을 구축했다고 가정합시다. 이때 "전송" 인텐트에 
+<p>예를 들어, 새 이메일을 작성하는 데 쓰는 액티비티가 있는 이메일 앱을 구축했다고 가정합시다. 이때 "전송" 인텐트에
 응답하는 인텐트 필터를 선언하려면(새 이메일을 전송하기 위해) 다음과 같이 하면 됩니다.</p>
 <pre>
 &lt;manifest ... >
@@ -360,7 +360,7 @@
 
 <p>그런 다음, 다른 앱이 {@link
 android.content.Intent#ACTION_SEND} 작업을 가진 인텐트를 생성하여 그것을 {@link android.app.Activity#startActivity
-startActivity()}로 전달하면 시스템이 여러분의 액티비티를 시작하여 사용자가 이메일을 임시 보관하고 전송할 수 
+startActivity()}로 전달하면 시스템이 여러분의 액티비티를 시작하여 사용자가 이메일을 임시 보관하고 전송할 수
 있습니다.</p>
 
 <p>인텐트 필터 생성에 관한 자세한 내용은 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a> 문서를 참조하십시오.
@@ -370,16 +370,16 @@
 
 <h3 id="DeclaringRequirements">앱 요구 사항 선언</h3>
 
-<p>Android로 구동되는 기기는 수없이 많지만 모두 똑같은 특징을 갖고 같은 
-기능을 제공하는 것은 아닙니다. 앱이 필요로 하는 기능이 부족한 기기에 앱을 설치하게 되는 불상사를 방지하려면, 
-앱이 지원하는 기기 유형에 대한 프로필을 명확하게 정의하는 것이 중요합니다. 
-그러려면 매니페스트 파일에 기기와 소프트웨어 요구 사항을 
-선언하면 됩니다. 이와 같은 선언은 대부분 정보성일 뿐이며 시스템은 이를 읽지 않는 것이 일반적이지만, 
-Google Play와 같은 외부 서비스는 사용자가 본인의 기기에서 앱을 검색할 때 필터링을 제공하기 위해 
+<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> 
+<p>예를 들어, 앱에 카메라가 필요하고 Android 2.1부터 도입된 API를 사용하는 경우(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a> 7)
+이과 같은 내용을 매니페스트 파일에 요구 사항으로 선언하려면 다음과 같이 합니다.</p>
 
 <pre>
 &lt;manifest ... >
@@ -390,15 +390,15 @@
 &lt;/manifest>
 </pre>
 
-<p>이제 카메라가 <em>없고</em> Android 버전이 2.1 <em>이하</em>인 기기는 
+<p>이제 카메라가 <em>없고</em> Android 버전이 2.1 <em>이하</em>인 기기는
 Google Play에서 여러분의 앱을 설치할 수 없습니다.</p>
 
-<p>그러나, 앱이 카메라를 사용하기는 하지만 꼭 
+<p>그러나, 앱이 카메라를 사용하기는 하지만 꼭
 <em>필요한</em> 것은 아니라고 선언할 수도 있습니다. 이 경우에는, 앱이 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
- 속성을 {@code "false"}에 설정하고 런타임을 확인하여 
+ 속성을 {@code "false"}에 설정하고 런타임을 확인하여
 해당 기기에 카메라가 있는지, 경우에 따라 모든 카메라 기능을 비활성화할 수 있는지 알아봅니다.</p>
 
-<p>여러 가지 기기와 앱의 호환성을 관리하는 방법에 대한 자세한 정보는 
+<p>여러 가지 기기와 앱의 호환성을 관리하는 방법에 대한 자세한 정보는
 <a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a>
  문서를 참조하십시오.</p>
 
@@ -407,40 +407,40 @@
 <h2 id="Resources">앱 리소스</h2>
 
 <p>Android 앱을 이루는 것은 코드만이 아닙니다. 소스 코드와는 별개인 여러 리소스가 필요합니다.
-예를 들어 이미지, 오디오 파일과 앱을 시각적으로 표현하는 것과 관련된 모든 것들이 있습니다. 
-예컨대 애니메이션, 메뉴, 스타일, 색상과 액티비티 사용자 인터페이스의 레이아웃을 XML 파일로 
-정의해야 합니다. 앱 리소스를 사용하면 앱의 다양한 특성을 
-쉽게 업데이트할 수 있으며 코드를 수정하지 않아도 되고 일련의 대체 리소스를 
-제공함으로써 다양한 기기 구성에 맞게 앱을 
+예를 들어 이미지, 오디오 파일과 앱을 시각적으로 표현하는 것과 관련된 모든 것들이 있습니다.
+예컨대 애니메이션, 메뉴, 스타일, 색상과 액티비티 사용자 인터페이스의 레이아웃을 XML 파일로
+정의해야 합니다. 앱 리소스를 사용하면 앱의 다양한 특성을
+쉽게 업데이트할 수 있으며 코드를 수정하지 않아도 되고 일련의 대체 리소스를
+제공함으로써 다양한 기기 구성에 맞게 앱을
 최적화할 수도 있습니다(예: 여러 가지 언어 및 화면 크기).</p>
 
-<p>Android 프로젝트에 포함시키는 리소스마다 SDK 빌드 도구가 고유한 
-정수 ID를 정의하므로, 이를 사용하여 앱 코드에서의 리소스나 XML로 정의된 
+<p>Android 프로젝트에 포함시키는 리소스마다 SDK 빌드 도구가 고유한
+정수 ID를 정의하므로, 이를 사용하여 앱 코드에서의 리소스나 XML로 정의된
 다른 리소스에서 참조할 수 있습니다. 예를 들어 앱에 {@code
-logo.png}라는 이름의 이미지 파일이 들어 있다고 하면({@code res/drawable/} 디렉터리에 저장됨) SDK 도구가 
-{@code R.drawable.logo}라는 리소스 ID를 생성합니다. 이것을 사용하여 이미지를 참조하고 사용자 인터페이스에 
+logo.png}라는 이름의 이미지 파일이 들어 있다고 하면({@code res/drawable/} 디렉터리에 저장됨) SDK 도구가
+{@code R.drawable.logo}라는 리소스 ID를 생성합니다. 이것을 사용하여 이미지를 참조하고 사용자 인터페이스에
 삽입할 수 있습니다.</p>
 
-<p>소스 코드와는 별개로 리소스를 제공하는 것의 가장 중요한 측면 중 하나는 
-여러 가지 기기 구성에 맞게 대체 리소스를 제공할 능력을 갖추게 
-됩니다. 예를 들어 UI 문자열을 XML로 정의하면 이러한 문자열을 다른 언어로 변환한 뒤 
+<p>소스 코드와는 별개로 리소스를 제공하는 것의 가장 중요한 측면 중 하나는
+여러 가지 기기 구성에 맞게 대체 리소스를 제공할 능력을 갖추게
+됩니다. 예를 들어 UI 문자열을 XML로 정의하면 이러한 문자열을 다른 언어로 변환한 뒤
 그러한 문자열을 별개의 파일에 저장할 수 있습니다. 그런 다음, 리소스 디렉터리 이름에 추가한 언어 <em>한정자</em>
-(예를 들어 프랑스어 문자열 값의 경우 {@code res/values-fr/}) 및 
-사용자의 언어 설정을 근거로 하여 Android 시스템이 적절한 언어 문자열을 UI에 
+(예를 들어 프랑스어 문자열 값의 경우 {@code res/values-fr/}) 및
+사용자의 언어 설정을 근거로 하여 Android 시스템이 적절한 언어 문자열을 UI에
 적용하는 것입니다.</p>
 
 <p>Android는 대체 리소스에 대해 다양한 <em>한정자</em>를 지원합니다. 한정자란
- 리소스 디렉터리의 이름에 포함시키는 짧은 문자열로, 이를 사용해 해당 리소스를 사용할 기기 구성을 
-정의합니다. 또 다른 예를 들자면, 
-기기의 화면 방향과 크기에 따라 액티비티에 여러 가지 레이아웃을 생성해야 할 때가 
-많습니다. 예를 들어 기기 화면이 세로 
-방향(키가 큼)인 경우, 버튼이 세로 방향으로 되어 있는 레이아웃을 사용하는 것이 좋지만 화면이 
-가로 방향(폭이 넓음)인 경우, 버튼이 가로 방향으로 정렬되어야 합니다. 방향에 따라 레이아웃을 변경하려면, 
-서로 다른 두 가지 레이아웃을 정의하여 적절한 한정자를 각각의 레이아웃의 디렉터리 이름에 
-적용하면 됩니다. 그러면 시스템이 현재 기기 방향에 따라 적절한 레이아웃을 
+ 리소스 디렉터리의 이름에 포함시키는 짧은 문자열로, 이를 사용해 해당 리소스를 사용할 기기 구성을
+정의합니다. 또 다른 예를 들자면,
+기기의 화면 방향과 크기에 따라 액티비티에 여러 가지 레이아웃을 생성해야 할 때가
+많습니다. 예를 들어 기기 화면이 세로
+방향(키가 큼)인 경우, 버튼이 세로 방향으로 되어 있는 레이아웃을 사용하는 것이 좋지만 화면이
+가로 방향(폭이 넓음)인 경우, 버튼이 가로 방향으로 정렬되어야 합니다. 방향에 따라 레이아웃을 변경하려면,
+서로 다른 두 가지 레이아웃을 정의하여 적절한 한정자를 각각의 레이아웃의 디렉터리 이름에
+적용하면 됩니다. 그러면 시스템이 현재 기기 방향에 따라 적절한 레이아웃을
 자동으로 적용합니다.</p>
 
-<p>애플리케이션에 포함할 수 있는 여러 가지 종류의 리소스와, 각기 다른 기기 구성에 따라 
+<p>애플리케이션에 포함할 수 있는 여러 가지 종류의 리소스와, 각기 다른 기기 구성에 따라
 대체 리소스를 생성하는 방법에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/resources/providing-resources.html">리소스 제공</a>을 읽어보십시오.</p>
 
 
@@ -451,15 +451,15 @@
   <dl>
     <dt><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
     </dt>
-    <dd>{@link android.content.Intent} API를 사용하여 
-앱 구성 요소(예: 액티비티 및 서비스 등)를 활성화하는 방법, 앱 구성 요소를 다른 여러 앱이 사용할 수 있도록 하는 방법 
+    <dd>{@link android.content.Intent} API를 사용하여
+앱 구성 요소(예: 액티비티 및 서비스 등)를 활성화하는 방법, 앱 구성 요소를 다른 여러 앱이 사용할 수 있도록 하는 방법
 등에 관한 정보입니다.</dd>
     <dt><a href="{@docRoot}guide/components/activities.html">액티비티</a></dt>
-    <dd>{@link android.app.Activity} 클래스의 인스턴스를 생성하는 방법에 관한 정보로, 
+    <dd>{@link android.app.Activity} 클래스의 인스턴스를 생성하는 방법에 관한 정보로,
 애플리케이션에 사용자 인터페이스가 있는 독특한 화면을 제공합니다.</dd>
     <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">리소스 제공</a></dt>
-    <dd>Android 앱이 앱 코드와는 별개의 앱 리소스에 대해 구조화된 방식에 관한 정보로, 
-특정 기기 구성에 맞게 대체 리소스를 제공하는 방법도 포함되어 
+    <dd>Android 앱이 앱 코드와는 별개의 앱 리소스에 대해 구조화된 방식에 관한 정보로,
+특정 기기 구성에 맞게 대체 리소스를 제공하는 방법도 포함되어
 있습니다.
     </dd>
   </dl>
@@ -468,11 +468,11 @@
   <h2 class="norule">혹시 다음과 같은 내용에도 흥미가 있으신가요?</h2>
   <dl>
     <dt><a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a></dt>
-    <dd>여러 가지 유형의 기기에서 Android의 작동 방식과 앱을 각 기기에 맞춰 최적화하는 방법 
-또는 여러 가지 기기에 대해 앱의 가용성을 제한하는 방법 등에 관한 
+    <dd>여러 가지 유형의 기기에서 Android의 작동 방식과 앱을 각 기기에 맞춰 최적화하는 방법
+또는 여러 가지 기기에 대해 앱의 가용성을 제한하는 방법 등에 관한
 정보입니다.</dd>
     <dt><a href="{@docRoot}guide/topics/security/permissions.html">시스템 권한</a></dt>
-    <dd>Android가 특정 API에 대한 앱의 액세스를 제한하기 위해 권한 시스템을 
+    <dd>Android가 특정 API에 대한 앱의 액세스를 제한하기 위해 권한 시스템을
 사용하는 방법으로, 그러한 API를 사용하려면 앱에 대해 사용자의 승인이 필요합니다.</dd>
   </dl>
 </div>
diff --git a/docs/html-intl/intl/ko/guide/components/index.jd b/docs/html-intl/intl/ko/guide/components/index.jd
index 3662632..a860c0f 100644
--- a/docs/html-intl/intl/ko/guide/components/index.jd
+++ b/docs/html-intl/intl/ko/guide/components/index.jd
@@ -1,7 +1,7 @@
 page.title=앱 구성 요소
 page.landing=true
-page.landing.intro=Android의 애플리케이션 프레임워크는 일련의 재사용 가능한 구성 요소를 사용하여 풍성하고 혁신적인 앱을 생성할 수 있습니다. 이 섹션에서는 앱의 구성 단위를 정의 내리는 구성 요소를 구축하는 방법과 인텐트를 사용하여 이와 같은 구성 요소를 연결시키는 법을 설명합니다. 
-page.metaDescription=Android의 애플리케이션 프레임워크는 일련의 재사용 가능한 구성 요소를 사용하여 풍성하고 혁신적인 앱을 생성할 수 있습니다. 이 섹션에서는 앱의 구성 단위를 정의 내리는 구성 요소를 구축하는 방법과 인텐트를 사용하여 이와 같은 구성 요소를 연결시키는 법을 설명합니다. 
+page.landing.intro=Android의 애플리케이션 프레임워크는 일련의 재사용 가능한 구성 요소를 사용하여 풍성하고 혁신적인 앱을 생성할 수 있습니다. 이 섹션에서는 앱의 구성 단위를 정의 내리는 구성 요소를 구축하는 방법과 인텐트를 사용하여 이와 같은 구성 요소를 연결시키는 법을 설명합니다.
+page.metaDescription=Android의 애플리케이션 프레임워크는 일련의 재사용 가능한 구성 요소를 사용하여 풍성하고 혁신적인 앱을 생성할 수 있습니다. 이 섹션에서는 앱의 구성 단위를 정의 내리는 구성 요소를 구축하는 방법과 인텐트를 사용하여 이와 같은 구성 요소를 연결시키는 법을 설명합니다.
 page.landing.image=images/develop/app_components.png
 page.image=images/develop/app_components.png
 
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,35 +21,35 @@
       <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>반응형 애플리케이션을 생성할 때에는 주요 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>이 클래스에서는 각각의 액티비티
+인스턴스가 수신하는 중요한 수명 주기 콜백 메서드를 설명합니다. 또한 이러한 콜백 메서드를 사용하여 액티비티가
 사용자가 원하는 작업을 하고, 액티비티가 필요로 하지 않을 때 시스템 리소스 사용을 방지하는 방법에 대해서도 설명합니다.</p>
     </a>
 
     <a href="http://developer.android.com/training/basics/fragments/index.html">
       <h4>프래그먼트로 동적 UI 구축하기</h4>
-      <p>이 클래스에서는 Android 1.6만큼 오래된 버전을 실행하는 기기도 
-계속 지원하면서 프래그먼트로 동적 사용자 경험을 생성하고, 기기의 화면 크기에 따라 앱의 사용자 환경을 
+      <p>이 클래스에서는 Android 1.6만큼 오래된 버전을 실행하는 기기도
+계속 지원하면서 프래그먼트로 동적 사용자 경험을 생성하고, 기기의 화면 크기에 따라 앱의 사용자 환경을
 최적화할 수 있는 방법을 보여줍니다.</p>
     </a>
 
     <a href="http://developer.android.com/training/sharing/index.html">
       <h4>콘텐츠 공유하기</h4>
-      <p>이 클래스는 인텐트 API와 ActionProvider 객체를 사용하여 여러 애플리케이션 사이에서 
+      <p>이 클래스는 인텐트 API와 ActionProvider 객체를 사용하여 여러 애플리케이션 사이에서
 콘텐츠를 전송하고 수신하는 몇 가지 보편적인 방법을 다룹니다.</p>
     </a>
   </div>
diff --git a/docs/html-intl/intl/ko/guide/components/loaders.jd b/docs/html-intl/intl/ko/guide/components/loaders.jd
index cfbbb91..dd02e11 100644
--- a/docs/html-intl/intl/ko/guide/components/loaders.jd
+++ b/docs/html-intl/intl/ko/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>Key 클래스</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>관련 샘플</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -39,22 +39,22 @@
   </div>
 </div>
 
-<p>로더는 Android 3.0부터 도입된 것으로, 액티비티 또는 프래그먼트에서 비동기식으로 데이터를 쉽게 
+<p>로더는 Android 3.0부터 도입된 것으로, 액티비티 또는 프래그먼트에서 비동기식으로 데이터를 쉽게
 로딩할 수 있게 합니다. 로더의 특성은 다음과 같습니다.</p>
   <ul>
     <li>모든 {@link android.app.Activity}와 {@link
 android.app.Fragment}에 사용할 수 있습니다.</li>
     <li>데이터의 비동기식 로딩을 제공합니다.</li>
-    <li>데이터의 출처를 모니터링하여 그 콘텐츠가 변경되면 새 결과를 
+    <li>데이터의 출처를 모니터링하여 그 콘텐츠가 변경되면 새 결과를
 전달합니다.</li>
-    <li>구성 변경 후에 재생성된 경우, 마지막 로더의 커서로 자동으로 
-다시 연결됩니다. 따라서 데이터를 다시 쿼리하지 않아도 
+    <li>구성 변경 후에 재생성된 경우, 마지막 로더의 커서로 자동으로
+다시 연결됩니다. 따라서 데이터를 다시 쿼리하지 않아도
 됩니다.</li>
   </ul>
- 
+
 <h2 id="summary">로더 API 요약</h2>
 
-<p>애플리케이션 안에서 로더를 사용하는 데 관련된 클래스와 인터페이스는 
+<p>애플리케이션 안에서 로더를 사용하는 데 관련된 클래스와 인터페이스는
 여러 가지가 있습니다. 다음 표에서 요약되어 있습니다.</p>
 
 <table>
@@ -64,16 +64,16 @@
   </tr>
   <tr>
     <td>{@link android.app.LoaderManager}</td>
-    <td>{@link android.app.Activity} 또는 
+    <td>{@link android.app.Activity} 또는
 {@link android.app.Fragment}와 연관된 추상 클래스로, 하나 이상의 {@link
-android.content.Loader} 인스턴스를 관리하는 데 쓰입니다. 이것을 사용하면 애플리케이션이 
+android.content.Loader} 인스턴스를 관리하는 데 쓰입니다. 이것을 사용하면 애플리케이션이
 {@link android.app.Activity}
- 또는 {@link android.app.Fragment} 수명 주기와 함께 실행 시간이 긴 작업을 관리하는 데 도움이 됩니다. 이것의 가장 보편적인 용법은 
-{@link android.content.CursorLoader}와 함께 사용하는 것이지만, 
+ 또는 {@link android.app.Fragment} 수명 주기와 함께 실행 시간이 긴 작업을 관리하는 데 도움이 됩니다. 이것의 가장 보편적인 용법은
+{@link android.content.CursorLoader}와 함께 사용하는 것이지만,
 다른 유형의 데이터를 로드하기 위해 애플리케이션이 자체 로더를 작성하는 것도 얼마든지 가능합니다.
     <br />
     <br />
-    액티비티 또는 프래그먼트당 {@link android.app.LoaderManager}는 하나씩밖에 없습니다. 하지만 {@link android.app.LoaderManager}에는 로더가 여러 개 있어도 
+    액티비티 또는 프래그먼트당 {@link android.app.LoaderManager}는 하나씩밖에 없습니다. 하지만 {@link android.app.LoaderManager}에는 로더가 여러 개 있어도
 됩니다.</td>
   </tr>
   <tr>
@@ -85,10 +85,10 @@
   </tr>
   <tr>
     <td>{@link android.content.Loader}</td>
-    <td>데이터의 비동기식 로딩을 수행하는 추상 클래스입니다. 이것이 로더의 기본 
+    <td>데이터의 비동기식 로딩을 수행하는 추상 클래스입니다. 이것이 로더의 기본
 클래스입니다. 보통은 {@link
-android.content.CursorLoader}를 사용하기 마련이지만, 자신만의 하위 클래스를 구현해도 됩니다. 로더가 활성 상태인 동안에는 
-소속 데이터의 출처를 모니터링하고 콘텐츠가 변경되면 새 결과를 
+android.content.CursorLoader}를 사용하기 마련이지만, 자신만의 하위 클래스를 구현해도 됩니다. 로더가 활성 상태인 동안에는
+소속 데이터의 출처를 모니터링하고 콘텐츠가 변경되면 새 결과를
 전달하는 것이 정상입니다. </td>
   </tr>
   <tr>
@@ -97,118 +97,118 @@
   </tr>
   <tr>
     <td>{@link android.content.CursorLoader}</td>
-    <td>{@link android.content.AsyncTaskLoader}의 하위 클래스로, 이것이 
+    <td>{@link android.content.AsyncTaskLoader}의 하위 클래스로, 이것이
 {@link android.content.ContentResolver}를 쿼리하고 {@link
 android.database.Cursor}를 반환합니다. 이 클래스는 커서 쿼리에 대한 표준 방식으로 {@link
-android.content.Loader} 프로토콜을 구현하며, 
-{@link android.content.AsyncTaskLoader}에 구축되어 
-배경 스레드에서 커서 쿼리를 수행하므로 애플리케이션의 UI를 차단하지 않습니다. 
+android.content.Loader} 프로토콜을 구현하며,
+{@link android.content.AsyncTaskLoader}에 구축되어
+배경 스레드에서 커서 쿼리를 수행하므로 애플리케이션의 UI를 차단하지 않습니다.
 이 로더를 사용하는 것이 프래그먼트나 액티비티의 API를 통해 관리된 쿼리를 수행하는 대신 {@link
-android.content.ContentProvider}에서 
+android.content.ContentProvider}에서
 비동기식으로 데이터를 로딩하는 최선의 방법입니다.</td>
   </tr>
 </table>
 
-<p>위의 표에 나열된 클래스와 인터페이스가 애플리케이션 내에서 로더를 구현하는 데 
-사용할 기본적인 구성 요소입니다. 생성하는 로더마다 
+<p>위의 표에 나열된 클래스와 인터페이스가 애플리케이션 내에서 로더를 구현하는 데
+사용할 기본적인 구성 요소입니다. 생성하는 로더마다
 이 모든 것이 다 필요한 것은 아니지만, 로더를 초기화하려면 항상 {@link
 android.app.LoaderManager}를 참조해야 하고 {@link
-android.content.CursorLoader}와 같은 {@link android.content.Loader} 
-클래스도 구현해야 합니다. 다음 몇 섹션에서는 애플리케이션 안에서 이와 같은 
+android.content.CursorLoader}와 같은 {@link android.content.Loader}
+클래스도 구현해야 합니다. 다음 몇 섹션에서는 애플리케이션 안에서 이와 같은
 클래스와 인터페이스를 사용하는 법을 보여줍니다.</p>
 
 <h2 id ="app">애플리케이션 안에서 로더 사용하기</h2>
-<p>이 섹션에서는 Android 애플리케이션 내에서 로더를 사용하는 방법을 설명합니다. 로더를 
+<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} 하위 클래스를 구현하여 
+android.content.ContentProvider}가 지원하는 데이터를 로딩할 {@link android.content.CursorLoader}. 아니면, 개발자 나름의
+{@link android.content.Loader} 또는 {@link android.content.AsyncTaskLoader} 하위 클래스를 구현하여
 다른 출처에서 데이터를 로딩해도 됩니다.</li>
   <li>{@link android.app.LoaderManager.LoaderCallbacks}의 구현.
-여기에서 새 로더를 생성하고 기존 로더에 대한 참조를 
-관리합니다.</li> 
+여기에서 새 로더를 생성하고 기존 로더에 대한 참조를
+관리합니다.</li>
 <li>로더의 데이터를 표시하는 방법(예: {@link
 android.widget.SimpleCursorAdapter})</li>
-  <li>{@link android.content.ContentProvider}와 같은 데이터 출처로, 
+  <li>{@link android.content.ContentProvider}와 같은 데이터 출처로,
 {@link android.content.CursorLoader}를 사용하는 경우에 해당.</li>
 </ul>
 <h3 id="starting">로더 시작</h3>
 
-<p>{@link android.app.LoaderManager}는 {@link android.app.Activity} 또는 
+<p>{@link android.app.LoaderManager}는 {@link android.app.Activity} 또는
 {@link android.app.Fragment} 내에서 하나 이상의 {@link
 android.content.Loader} 인스턴스를 관리합니다. 액티비티 또는 프래그먼트당 {@link
-android.app.LoaderManager}는 하나씩밖에 없습니다.</p> 
+android.app.LoaderManager}는 하나씩밖에 없습니다.</p>
 
-<p>보통은 
+<p>보통은
 액티비티의 {@link
-android.app.Activity#onCreate onCreate()} 메서드 내에서, 또는 프래그먼트의 
-{@link android.app.Fragment#onActivityCreated onActivityCreated()} 메서드 내에서 {@link android.content.Loader}를 초기화합니다. 이렇게 하려면 
+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>{@link android.app.LoaderManager#initLoader initLoader()} 메서드는
 다음과 같은 인수를 취합니다.</p>
 <ul>
   <li>로더를 식별하는 고유한 ID. 이 예시에서 ID는 0입니다.</li>
 <li>생성 시 로더에 제공할 선택적 인수
-(이 예시에서는 <code>null</code>).</li> 
+(이 예시에서는 <code>null</code>).</li>
 
-<li>{@link android.app.LoaderManager.LoaderCallbacks} 구현. 로더 이벤트를 보고하기 위해 
+<li>{@link android.app.LoaderManager.LoaderCallbacks} 구현. 로더 이벤트를 보고하기 위해
 {@link android.app.LoaderManager}가 이것을 호출합니다. 이 예시에서는
  로컬 클래스가 {@link
-android.app.LoaderManager.LoaderCallbacks} 인터페이스를 구현하여 자신에 대한 참조인 
-{@code this}를 통과합니다.</li> 
+android.app.LoaderManager.LoaderCallbacks} 인터페이스를 구현하여 자신에 대한 참조인
+{@code this}를 통과합니다.</li>
 </ul>
-<p>{@link android.app.LoaderManager#initLoader initLoader()} 호출로 로더가 초기화되었고 활성 상태이도록 
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 호출로 로더가 초기화되었고 활성 상태이도록
 확실히 합니다. 이로써 발생할 수 있는 결과가 두 가지 있습니다.</p>
 <ul>
-  <li>ID가 지정한 로더가 이미 존재하는 경우, 마지막으로 생성된 로더를 
+  <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()}를 발생시킵니다. 
+  <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()} 도중). 
+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.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}로, 이를 사용해 특정한 이벤트가 일어났을 때 
+android.app.LoaderManager.LoaderCallbacks}로, 이를 사용해 특정한 이벤트가 일어났을 때
 로딩 프로세스에 개입하게 됩니다. 이 주제에 대한 자세한 논의는 <a href="#callback">LoaderManager 콜백 사용하기</a>를 참조하십시오.</p>
 
 <h3 id="restarting">로더 다시 시작</h3>
 
-<p>위에서 나타난 것과 같이 {@link android.app.LoaderManager#initLoader initLoader()}를 사용하는 경우, 
-이것은 지정된 ID에 해당되는 기존 로더가 있으면 그것을 사용합니다. 
-없으면, 하나 생성합니다. 하지만 때로는 오래된 데이터를 폐기하고 새로 시작하고 싶을 때가 
+<p>위에서 나타난 것과 같이 {@link android.app.LoaderManager#initLoader initLoader()}를 사용하는 경우,
+이것은 지정된 ID에 해당되는 기존 로더가 있으면 그것을 사용합니다.
+없으면, 하나 생성합니다. 하지만 때로는 오래된 데이터를 폐기하고 새로 시작하고 싶을 때가
 있습니다.</p>
 
 <p>오래된 데이터를 폐기하려면 {@link
-android.app.LoaderManager#restartLoader restartLoader()}를 사용합니다. 예를 들어, 다음의 
-{@link android.widget.SearchView.OnQueryTextListener} 구현은 
-사용자의 쿼리가 변경되면 로더를 다시 시작합니다. 로더를 다시 시작해야 수정된 검색 필터를 사용하여 
+android.app.LoaderManager#restartLoader restartLoader()}를 사용합니다. 예를 들어, 다음의
+{@link android.widget.SearchView.OnQueryTextListener} 구현은
+사용자의 쿼리가 변경되면 로더를 다시 시작합니다. 로더를 다시 시작해야 수정된 검색 필터를 사용하여
 새 쿼리를 수행할 수 있습니다.</p>
 
 <pre>
@@ -223,18 +223,18 @@
 
 <h3 id="callback">LoaderManager 콜백 사용하기</h3>
 
-<p>{@link android.app.LoaderManager.LoaderCallbacks}는 클라이언트가 
+<p>{@link android.app.LoaderManager.LoaderCallbacks}는 클라이언트가
 {@link android.app.LoaderManager}와 상호 작용할 수 있게 해주는 콜백 인터페이스입니다. </p>
-<p>로더, 특히 {@link android.content.CursorLoader}는 중단된 후에도 
-자신의 데이터를 유지할 것으로 기대됩니다. 이 때문에 애플리케이션이 
+<p>로더, 특히 {@link android.content.CursorLoader}는 중단된 후에도
+자신의 데이터를 유지할 것으로 기대됩니다. 이 때문에 애플리케이션이
 액티비티 또는 프래그먼트의 @link android.app.Activity#onStop
-onStop()} 및 {@link android.app.Activity#onStart onStart()}를 가로질러 데이터를 유지할 수 있고, 
-따라서 사용자가 애플리케이션에 되돌아오면 데이터가 다시 로딩되기를 기다리지 
-않아도 됩니다. 새 로더를 언제 생성해야 할지 알아보려면 {@link android.app.LoaderManager.LoaderCallbacks} 
-메서드를 사용합니다. 또한 로더의 데이터 사용을 중단할 때가 되면 
+onStop()} 및 {@link android.app.Activity#onStart onStart()}를 가로질러 데이터를 유지할 수 있고,
+따라서 사용자가 애플리케이션에 되돌아오면 데이터가 다시 로딩되기를 기다리지
+않아도 됩니다. 새 로더를 언제 생성해야 할지 알아보려면 {@link android.app.LoaderManager.LoaderCallbacks}
+메서드를 사용합니다. 또한 로더의 데이터 사용을 중단할 때가 되면
 이를 애플리케이션에 알리는 데에도 이것을 사용할 수 있습니다.</p>
 
-<p>{@link android.app.LoaderManager.LoaderCallbacks}에는 다음과 같은 메서드가 
+<p>{@link android.app.LoaderManager.LoaderCallbacks}에는 다음과 같은 메서드가
 포함됩니다.</p>
 <ul>
   <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} -
@@ -246,7 +246,7 @@
 </li></ul>
 <ul>
   <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
-- 이전에 생성된 로더가 휴식 중이라서 해당되는 데이터를 사용할 수 없을 경우 
+- 이전에 생성된 로더가 휴식 중이라서 해당되는 데이터를 사용할 수 없을 경우
 호출됩니다.
 </li>
 </ul>
@@ -255,32 +255,32 @@
 <h4 id ="onCreateLoader">onCreateLoader</h4>
 
 <p>로더에 액세스하려 시도하는 경우(예를 들어 {@link
-android.app.LoaderManager#initLoader initLoader()}를 통해), 로더는 해당 ID가 지정하는 로더가 존재하는지 
+android.app.LoaderManager#initLoader initLoader()}를 통해), 로더는 해당 ID가 지정하는 로더가 존재하는지
 여부를 확인합니다. 그런 로더가 없으면, {@link
 android.app.LoaderManager.LoaderCallbacks} 메서드 {@link
-android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 발생시킵니다. 여기에서 
+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.CursorLoader}를 생성합니다.
+{@link android.content.CursorLoader}를 자체 생성자 메서드를 사용하여 구축해야 합니다. 이것은
 {@link
 android.content.ContentProvider}로 쿼리를 수행하기 위해 필요한 모든 정보 집합을 필요로 합니다. 구체적으로 필요한 것은 다음과 같습니다.</p>
 <ul>
   <li><em>uri</em> — 검색할 콘텐츠의 URI입니다. </li>
-  <li><em>예측</em> — 반환할 열 목록입니다. 
+  <li><em>예측</em> — 반환할 열 목록입니다.
 <code>null</code>을 전달하면 모든 열을 반환하며, 이는 비효율적입니다. </li>
-  <li><em>선택</em> — 반환할 행을 선언하는 필터로, 
-SQL WHERE 절로 형식이 설정됩니다(WHERE 자체는 제외). 
+  <li><em>선택</em> — 반환할 행을 선언하는 필터로,
+SQL WHERE 절로 형식이 설정됩니다(WHERE 자체는 제외).
 <code>null</code>을 반환하면 주어진 URI에 대한 모든 행을 반환합니다. </li>
-  <li><em>selectionArgs</em> — 선택에 ?를 포함해도 됩니다. 이렇게 하면 
-이것이 <em>selectionArgs</em>에서 가져온 값으로 교체되며, 이때 선택에 표시되는 
+  <li><em>selectionArgs</em> — 선택에 ?를 포함해도 됩니다. 이렇게 하면
+이것이 <em>selectionArgs</em>에서 가져온 값으로 교체되며, 이때 선택에 표시되는
 순서를 따릅니다. 값은 문자열로 바인딩됩니다. </li>
-  <li><em>sortOrder</em> — SQL ORDER BY 절 형식으로 설정된 
-행의 순서 지정 방법입니다(ORDER BY 자체는 제외). <code>null</code>을 
+  <li><em>sortOrder</em> — SQL ORDER BY 절 형식으로 설정된
+행의 순서 지정 방법입니다(ORDER BY 자체는 제외). <code>null</code>을
 전달하면 기본 정렬 순서를 사용하는데, 이는 순서가 없습니다.</li>
 </ul>
 <p>예:</p>
@@ -312,19 +312,19 @@
 }</pre>
 <h4 id="onLoadFinished">onLoadFinished</h4>
 
-<p>이 메서드는 이전에 생성된 로더가 로딩을 완료하면 호출됩니다. 
-이 로더에 대해 제공된 마지막 데이터가 릴리스되기 전에 틀림없이 
-이 메서드가 호출됩니다.  이 시점에서 오래된 데이터의 
-사용 내용을 모두 제거해야 하지만(곧 릴리스될 것이므로), 데이터 릴리스를 직접 수행해서는 안 됩니다. 해당 데이터는 
+<p>이 메서드는 이전에 생성된 로더가 로딩을 완료하면 호출됩니다.
+이 로더에 대해 제공된 마지막 데이터가 릴리스되기 전에 틀림없이
+이 메서드가 호출됩니다.  이 시점에서 오래된 데이터의
+사용 내용을 모두 제거해야 하지만(곧 릴리스될 것이므로), 데이터 릴리스를 직접 수행해서는 안 됩니다. 해당 데이터는
 로더의 소유이며, 로더가 알아서 처리할 것이기 때문입니다.</p>
 
 
-<p>로더는 애플리케이션이 데이터를 더 이상 사용하지 않는다는 사실을 알게 되면 곧바로 해당 데이터를 
+<p>로더는 애플리케이션이 데이터를 더 이상 사용하지 않는다는 사실을 알게 되면 곧바로 해당 데이터를
 릴리스할 것입니다.  예를 들어 데이터가 {@link
 android.content.CursorLoader}의 커서인 경우, 거기에서 직접 {@link
-android.database.Cursor#close close()}를 호출하면 안 됩니다. 커서가 
+android.database.Cursor#close close()}를 호출하면 안 됩니다. 커서가
 {@link android.widget.CursorAdapter}에 배치되는 경우, {@link
-android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 메서드를 사용해야 합니다. 그래야 
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 메서드를 사용해야 합니다. 그래야
 오래된 {@link android.database.Cursor}가 종료되지 않습니다. 예:</p>
 
 <pre>
@@ -340,11 +340,11 @@
 
 <h4 id="onLoaderReset">onLoaderReset</h4>
 
-<p>이 메서드는 이전에 생성된 로더가 휴식 중이라서 해당되는 데이터를 사용할 수 없는 경우 
-호출됩니다. 이 콜백을 사용하면 데이터가 언제 릴리스될지 알아낼 수 있어 
+<p>이 메서드는 이전에 생성된 로더가 휴식 중이라서 해당되는 데이터를 사용할 수 없는 경우
+호출됩니다. 이 콜백을 사용하면 데이터가 언제 릴리스될지 알아낼 수 있어
 이에 대한 참조를 직접 제거할 수 있습니다.  </p>
-<p>이 구현은 
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}를 호출하며, 
+<p>이 구현은
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}를 호출하며,
 이때 값은 <code>null</code>을 씁니다.</p>
 
 <pre>
@@ -363,12 +363,12 @@
 <h2 id="example">예</h2>
 
 <p>일례를 제시하기 위해 아래에 {@link android.widget.ListView}를 표시하는 {@link
-android.app.Fragment}의 전체 구현을 나타내었습니다. 여기에는 
+android.app.Fragment}의 전체 구현을 나타내었습니다. 여기에는
 연락처 콘텐츠 제공자에 대한 쿼리 결과가 들어 있습니다. 이것은 {@link
 android.content.CursorLoader}를 사용하여 제공자에 대한 쿼리를 관리합니다.</p>
- 
-<p>이 예시에서 나타낸 바와 같이 애플리케이션이 사용자의 연락처에 액세스하려면 
-애플리케이션의 매니페스트에 
+
+<p>이 예시에서 나타낸 바와 같이 애플리케이션이 사용자의 연락처에 액세스하려면
+애플리케이션의 매니페스트에
 {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} 권한이 포함되어 있어야 합니다.</p>
 
 <pre>
@@ -479,16 +479,16 @@
 }</pre>
 <h3 id="more_examples">추가 예</h3>
 
-<p>로더를 사용하는 법을 보여주는 몇 가지 다른 예가 <strong>ApiDemos</strong>에 
+<p>로더를 사용하는 법을 보여주는 몇 가지 다른 예가 <strong>ApiDemos</strong>에
 소개되어 있습니다.</p>
 <ul>
   <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
-LoaderCursor</a> — 위에 표시된 코드 조각의 완전한 
+LoaderCursor</a> — 위에 표시된 코드 조각의 완전한
 버전입니다.</li>
-  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — 데이터가 변경될 때 콘텐츠 제공자가 
+  <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">샘플 
+<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
index 850d55c..cad4917 100644
--- a/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
@@ -28,10 +28,10 @@
 <p>애플리케이션 구성 요소가 시작되고 애플리케이션에 실행 중인 다른 구성 요소가 없으면
 Android 시스템은 하나의 실행 스레드로 애플리케이션의 Linux 프로세스를
 시작합니다. 기본적으로 같은 애플리케이션의 모든 구성 요소는 같은 프로세스와 스레드에서 실행됩니다
-("기본" 스레드라고 합니다). 애플리케이션 구성 요소가 시작되고 (애플리케이션의 다른 구성 요소가 존재해서) 
+("기본" 스레드라고 합니다). 애플리케이션 구성 요소가 시작되고 (애플리케이션의 다른 구성 요소가 존재해서)
 해당 애플리케이션의 프로세스가 이미 존재하면 해당 구성 요소는
-프로세스 내에서 시작되고 같은 실행 스레드를 사용합니다. 하지만 애플리케이션 내의 
-여러 가지 구성 요소가 각자 별도의 프로세스에서 실행되도록 할 수도 있고, 어느 프로세스에든 추가 스레드를 
+프로세스 내에서 시작되고 같은 실행 스레드를 사용합니다. 하지만 애플리케이션 내의
+여러 가지 구성 요소가 각자 별도의 프로세스에서 실행되도록 할 수도 있고, 어느 프로세스에든 추가 스레드를
 만들 수 있습니다.</p>
 
 <p>이 문서는 프로세스와 스레드가 Android 애플리케이션에서 작동하는 방식을 설명합니다.</p>
@@ -48,8 +48,8 @@
 &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>
@@ -58,35 +58,35 @@
 &lt;application&gt;}</a> 요소도 {@code android:process} 속성을 지원하여,
 모든 구성 요소에 적용되는 기본값을 설정합니다.</p>
 
-<p>Android는 어느 시점엔가 프로세스를 종료하기로 결정할 수도 있습니다. 즉 메모리가 부족하거나, 사용자에게 더욱 즉각적인 서비스를 제공하는 
-다른 프로세스가 이 프로세스의 중단을 필요로 하는 경우 등입니다. 그러면 중단된 
-프로세스에서 실행되고 있던 애플리케이션 구성 요소도 따라서 소멸됩니다.  그와 같은 구성 요소가 할 작업이 다시 생기면 
+<p>Android는 어느 시점엔가 프로세스를 종료하기로 결정할 수도 있습니다. 즉 메모리가 부족하거나, 사용자에게 더욱 즉각적인 서비스를 제공하는
+다른 프로세스가 이 프로세스의 중단을 필요로 하는 경우 등입니다. 그러면 중단된
+프로세스에서 실행되고 있던 애플리케이션 구성 요소도 따라서 소멸됩니다.  그와 같은 구성 요소가 할 작업이 다시 생기면
 그에 대한 프로세스도 다시 시작됩니다.</p>
 
-<p>어느 프로세스를 삭제할지 결정할 때, Android 시스템은 
-사용자에 대한 이들의 상대적 중요성을 가늠합니다.  예를 들어, 눈에 보이는 액티비티를 호스팅하는 프로세스와 비교하여 
-화면에 보이지 않는 액티비티를 호스팅하는 프로세스를 쉽게 종료할 수 있습니다. 프로세스 종료 결정은 
-해당 프로세스에서 실행되는 구성 요소의 상태에 따라 달라집니다. 종료할 
+<p>어느 프로세스를 삭제할지 결정할 때, Android 시스템은
+사용자에 대한 이들의 상대적 중요성을 가늠합니다.  예를 들어, 눈에 보이는 액티비티를 호스팅하는 프로세스와 비교하여
+화면에 보이지 않는 액티비티를 호스팅하는 프로세스를 쉽게 종료할 수 있습니다. 프로세스 종료 결정은
+해당 프로세스에서 실행되는 구성 요소의 상태에 따라 달라집니다. 종료할
 프로세스를 결정하는 데 사용하는 규칙은 아래에 설명되어 있습니다. </p>
 
 
 <h3 id="Lifecycle">프로세스 수명 주기</h3>
 
 <p>Android 시스템은 최대한 오래 애플리케이션 프로세스를 유지하려고 시도하지만,
-결국 오래된 프로세스를 제거하고 새 프로세스나 더 중요한 프로세스에 사용할 메모리를 확보해야 합니다.  유지할 
+결국 오래된 프로세스를 제거하고 새 프로세스나 더 중요한 프로세스에 사용할 메모리를 확보해야 합니다.  유지할
 프로세스와 종료할 프로세스를 결정하기 위해
-시스템은 프로세스에서 실행되는 구성 요소와 해당 구성 요소의 상태에 기초하여 각 프로세스에 
-"중요 계층"을 부여합니다.  중요도가 낮은 
+시스템은 프로세스에서 실행되는 구성 요소와 해당 구성 요소의 상태에 기초하여 각 프로세스에
+"중요 계층"을 부여합니다.  중요도가 낮은
 프로세스가 먼저 제거되고, 그 다음으로 중요도가 낮은 프로세스를 제거하는 식으로
 필요에 따라 시스템 리소스를 회복하는 것입니다.</p>
 
-<p>중요 계층에는 다섯 가지 단계가 있습니다. 다음 목록은 
-중요도 순서에 따른 프로세스 유형을 나타낸 것입니다(첫 번째 프로세스가 <em>가장 중요하고</em> 
+<p>중요 계층에는 다섯 가지 단계가 있습니다. 다음 목록은
+중요도 순서에 따른 프로세스 유형을 나타낸 것입니다(첫 번째 프로세스가 <em>가장 중요하고</em>
 <em>마지막으로 종료됩니다)</em>.</p>
 
 <ol>
   <li><b>전경 프로세스</b>
-    <p>사용자가 현재 진행하는 작업에 필요한 프로세스입니다.  다음 조건 중 
+    <p>사용자가 현재 진행하는 작업에 필요한 프로세스입니다.  다음 조건 중
 하나가 참일 경우 프로세스가 전경에 있는 것으로 간주합니다.</p>
 
       <ul>
@@ -108,19 +108,19 @@
 android.content.BroadcastReceiver#onReceive onReceive()} 메서드를 실행하는 {@link android.content.BroadcastReceiver}를 호스팅할 경우.</li>
     </ul>
 
-    <p>일반적으로, 주어진 시간에 존재하는 전경 프로세스는 몇 개밖에 되지 않습니다.  이들은 최후의 
-수단으로서만 종료됩니다. 즉, 메모리가 너무 부족해 계속 실행할 수 없는 경우를 말합니다.  일반적으로 그 시점이 되면 
-기기가 메모리 페이징 상태에 도달한 것이므로 전경 프로세스 몇 개를 중단해야만 
+    <p>일반적으로, 주어진 시간에 존재하는 전경 프로세스는 몇 개밖에 되지 않습니다.  이들은 최후의
+수단으로서만 종료됩니다. 즉, 메모리가 너무 부족해 계속 실행할 수 없는 경우를 말합니다.  일반적으로 그 시점이 되면
+기기가 메모리 페이징 상태에 도달한 것이므로 전경 프로세스 몇 개를 중단해야만
 사용자 인터페이스의 반응성을 유지할 수 있습니다.</p></li>
 
   <li><b>가시적 프로세스</b>
-    <p>전경 구성 요소는 없지만 
-사용자가 화면에서 보는 것에 영향을 미칠 수 있는 프로세스입니다. 다음 조건 중 하나가 참이면 
+    <p>전경 구성 요소는 없지만
+사용자가 화면에서 보는 것에 영향을 미칠 수 있는 프로세스입니다. 다음 조건 중 하나가 참이면
 가시적 프로세스로 간주합니다.</p>
 
       <ul>
         <li>전경에 있지는 않지만 사용자에게 보이는 {@link android.app.Activity}를 호스팅할 경우
-({@link android.app.Activity#onPause onPause()} 메서드가 호출되었을 경우). 
+({@link android.app.Activity#onPause onPause()} 메서드가 호출되었을 경우).
 예를 들어 이것은 전경 액티비티가 대화를 시작하여 이전 액티비티가 그 뒤에 보일 경우
  발생합니다.</li>
 
@@ -128,59 +128,59 @@
 </li>
       </ul>
 
-      <p>가시적인 프로세스는 매우 중요도가 높은 것으로 취급하고 모든 전경 프로세스를 실행하는 데 필요할 경우에만 
+      <p>가시적인 프로세스는 매우 중요도가 높은 것으로 취급하고 모든 전경 프로세스를 실행하는 데 필요할 경우에만
 종료됩니다. </p>
     </li>
 
   <li><b>서비스 프로세스</b>
     <p>{@link
-android.content.Context#startService startService()} 메서드로 시작되었지만 두 개의 상위 계층 분류에 
-들어가지 않는 서비스를 실행하는 프로세스입니다. 서비스 프로세스는 사용자가 보는 것과 직접 연결되어 있지는 않지만, 
-일반적으로 사용자가 신경 쓰는 작업을 하므로(배경에서 음악 재생 또는 네트워크에서 데이터 다운로드) 
-시스템은 모든 전경 및 가시적 프로세스와 함께 실행할 만큼 메모리가 충분하지 않을 경우에만 
+android.content.Context#startService startService()} 메서드로 시작되었지만 두 개의 상위 계층 분류에
+들어가지 않는 서비스를 실행하는 프로세스입니다. 서비스 프로세스는 사용자가 보는 것과 직접 연결되어 있지는 않지만,
+일반적으로 사용자가 신경 쓰는 작업을 하므로(배경에서 음악 재생 또는 네트워크에서 데이터 다운로드)
+시스템은 모든 전경 및 가시적 프로세스와 함께 실행할 만큼 메모리가 충분하지 않을 경우에만
 프로세스를 중단합니다. </p>
   </li>
 
   <li><b>배경 프로세스</b>
-    <p>현재 사용자에게 보이지 않는 액티비티를 보유한 프로세스입니다(액티비티의 
-{@link android.app.Activity#onStop onStop()} 메서드가 호출되었습니다). 이와 같은 프로세스는 
-사용자 환경에 직접적 영향을 미치지 않고, 시스템은 언제든 이 프로세스를 중단시켜 
+    <p>현재 사용자에게 보이지 않는 액티비티를 보유한 프로세스입니다(액티비티의
+{@link android.app.Activity#onStop onStop()} 메서드가 호출되었습니다). 이와 같은 프로세스는
+사용자 환경에 직접적 영향을 미치지 않고, 시스템은 언제든 이 프로세스를 중단시켜
 전경,
-가시적 또는 서비스 프로세스를 위한 메모리를 확보할 수 있습니다. 보통 한번에 실행 중인 배경 프로세스가 많은 편이므로 이들은 
-LRU(최저 사용 빈도) 목록에 보관하여 사용자가 가장 최근에 본 액티비티가 있는 
-프로세스가 가장 마지막에 중단되도록 합니다. 액티비티가 수명 주기 메서드를 올바르게 구현하고 
-자신의 현재 상태를 저장할 경우, 사용자가 액티비티로 다시 이동할 때 액티비티가 모든 가시적 상태를 
-복원하므로 프로세스를 중단시키더라도 사용자 환경에는 눈에 띄게 영향을 미치지 
+가시적 또는 서비스 프로세스를 위한 메모리를 확보할 수 있습니다. 보통 한번에 실행 중인 배경 프로세스가 많은 편이므로 이들은
+LRU(최저 사용 빈도) 목록에 보관하여 사용자가 가장 최근에 본 액티비티가 있는
+프로세스가 가장 마지막에 중단되도록 합니다. 액티비티가 수명 주기 메서드를 올바르게 구현하고
+자신의 현재 상태를 저장할 경우, 사용자가 액티비티로 다시 이동할 때 액티비티가 모든 가시적 상태를
+복원하므로 프로세스를 중단시키더라도 사용자 환경에는 눈에 띄게 영향을 미치지
 않습니다. 상태 저장과 복원에 관한 정보는 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
 문서를 참조하십시오.</p>
   </li>
 
   <li><b>빈 프로세스</b>
-    <p>활성 애플리케이션 구성 요소를 보유하지 않은 프로세스입니다.  이런 프로세스를 
-유지하는 유일한 이유는 다음에 내부 구성 요소를 실행할 때 시작 시간을 절약하기 위한 캐싱 
+    <p>활성 애플리케이션 구성 요소를 보유하지 않은 프로세스입니다.  이런 프로세스를
+유지하는 유일한 이유는 다음에 내부 구성 요소를 실행할 때 시작 시간을 절약하기 위한 캐싱
 때문입니다.  시스템은 프로세스 캐시와 기본 커널 캐시 사이에서 전반적인 시스템 리소스의 균형을 맞추기 위해
 이 프로세스를 중단시키는 경우가 많습니다.</p>
   </li>
 </ol>
 
 
-  <p>Android는 프로세스에서 현재 활성 상태인 구성 요소의 중요도에 따라 
-프로세스에 가장 높은 수준을 부여합니다.  예를 들어, 프로세스가 서비스와 가시적 액티비티를 호스팅할 경우, 
+  <p>Android는 프로세스에서 현재 활성 상태인 구성 요소의 중요도에 따라
+프로세스에 가장 높은 수준을 부여합니다.  예를 들어, 프로세스가 서비스와 가시적 액티비티를 호스팅할 경우,
 해당 프로세스는 서비스 프로세스가 아니라 가시적 프로세스 등급이 부여됩니다.</p>
 
   <p>또한, 프로세스의 등급은 다른 프로세스가 이에 의존할 경우 상승할 수 있습니다.
-즉, 다른 프로세스에 서비스를 제공하는 프로세스가 서비스 제공 대상 프로세스보다 
-등급이 낮은 경우는 있을 수 없습니다. 예를 들어 프로세스 A의 콘텐츠 제공자가 프로세스 B의 클라이언트에 서비스를 제공하거나 
-프로세스 A의 서비스가 프로세스 B의 구성 요소에 바인딩되어 있을 경우 프로세스 A는 항상 중요도가 
+즉, 다른 프로세스에 서비스를 제공하는 프로세스가 서비스 제공 대상 프로세스보다
+등급이 낮은 경우는 있을 수 없습니다. 예를 들어 프로세스 A의 콘텐츠 제공자가 프로세스 B의 클라이언트에 서비스를 제공하거나
+프로세스 A의 서비스가 프로세스 B의 구성 요소에 바인딩되어 있을 경우 프로세스 A는 항상 중요도가
 프로세스 B와 같거나 그보다 높습니다.</p>
 
-  <p>서비스를 실행하는 프로세스가 배경 액티비티가 포함된 프로세스보다 높으므로, 
+  <p>서비스를 실행하는 프로세스가 배경 액티비티가 포함된 프로세스보다 높으므로,
 장기 작업을 시작하는 액티비티는 작업자 스레드만 생성하기보다는 해당 작업에 대한 <a href="{@docRoot}guide/components/services.html">서비스</a>를 시작하는 것이 좋습니다.
-이는 특히 작업이 해당 액티비티보다 오래 지속될 경우 더욱 중요합니다. 
-예를 들어, 웹사이트에 사진을 업로드하는 액티비티가 업로드를 수행하는 서비스를 시작해야 
-사용자가 액티비티를 떠나더라도 배경에서 업로드를 지속할 수 있습니다. 
-서비스를 사용하면 액티비티에 어떤 일이 발생하든 해당 작업에 반드시 
-"서비스 프로세스" 우선 순위 이상이 부여됩니다. 이것이 브로드캐스트 수신기가 시간이 오래 걸리는 작업을 
+이는 특히 작업이 해당 액티비티보다 오래 지속될 경우 더욱 중요합니다.
+예를 들어, 웹사이트에 사진을 업로드하는 액티비티가 업로드를 수행하는 서비스를 시작해야
+사용자가 액티비티를 떠나더라도 배경에서 업로드를 지속할 수 있습니다.
+서비스를 사용하면 액티비티에 어떤 일이 발생하든 해당 작업에 반드시
+"서비스 프로세스" 우선 순위 이상이 부여됩니다. 이것이 브로드캐스트 수신기가 시간이 오래 걸리는 작업을
 스레드에 넣기보다는 서비스를 사용해야 하는 것과 같은 이유입니다.</p>
 
 
@@ -188,36 +188,36 @@
 
 <h2 id="Threads">스레드</h2>
 
-<p> 애플리케이션이 시작되면 시스템이 애플리케이션에 대한 실행의 스레드를 생성하며, 이를 
-"기본"이라고 합니다. 이 스레드는 드로어블 이벤트를 포함하여 적절한 사용자 인터페이스 위젯에 
+<p> 애플리케이션이 시작되면 시스템이 애플리케이션에 대한 실행의 스레드를 생성하며, 이를
+"기본"이라고 합니다. 이 스레드는 드로어블 이벤트를 포함하여 적절한 사용자 인터페이스 위젯에
 이벤트를 발송하는 역할을 맡기 때문에 중요합니다. 이것은 Android UI 도구 키트의 구성 요소({@link
 android.widget}과 {@link android.view} 패키지의 구성 요소)와 개발자의 애플리케이션이
-상호 작용하는 스레드이기도 합니다. 따라서 기본 스레드는 
+상호 작용하는 스레드이기도 합니다. 따라서 기본 스레드는
 UI 스레드라고 불릴 때도 있습니다.</p>
 
-<p>시스템은 구성 요소의 각 인스턴스에 대해 별도의 스레드를 생성하지 <em>않습니다</em>. 같은 
+<p>시스템은 구성 요소의 각 인스턴스에 대해 별도의 스레드를 생성하지 <em>않습니다</em>. 같은
 프로세스에서 실행되는 모든 구성 요소는 UI 스레드에서 시작되고, 각 구성 요소를 호출하는 시스템이
-해당 스레드에서 발송됩니다. 따라서 
-시스템 콜백에 응답하는 메서드(사용자 작업을 보고하는 {@link android.view.View#onKeyDown onKeyDown()} 또는 
+해당 스레드에서 발송됩니다. 따라서
+시스템 콜백에 응답하는 메서드(사용자 작업을 보고하는 {@link android.view.View#onKeyDown onKeyDown()} 또는
 수명 주기 콜백 메서드)는 항상 프로세스의 UI 스레드에서 실행됩니다.</p>
 
 <p>예를 들어, 사용자가 화면의 버튼을 터치하면, 앱 UI 스레드가 위젯에 터치 이벤트를 발송하고,
-위젯은 눌린 상태를 설정하고 이벤트 대기열에 
-무효화 요청을 게시합니다. UI 스레드가 이 요청을 대기열에서 해제하고 위젯에 스스로를 다시 
+위젯은 눌린 상태를 설정하고 이벤트 대기열에
+무효화 요청을 게시합니다. UI 스레드가 이 요청을 대기열에서 해제하고 위젯에 스스로를 다시
 그려야 한다고 알립니다.</p>
 
 <p>앱이 사용자 상호작용에 응답하여 집약적인 작업을 수행할 때는 이 단일 스레드 모델은
 애플리케이션을 제대로 구현하지 않으면 낮은 성능을 보일 수 있습니다. 특히,
-모든 것이 UI 스레드에서 발생하고 네트워크 액세스나 데이터 베이스 쿼리 등의 긴 작업을 수행하면 
-UI가 통째로 차단됩니다. 스레드가 차단되면 드로잉 이벤트를 포함하여 
-모든 이벤트가 발송되지 않습니다. 사용자가 보기에는 애플리케이션이 
+모든 것이 UI 스레드에서 발생하고 네트워크 액세스나 데이터 베이스 쿼리 등의 긴 작업을 수행하면
+UI가 통째로 차단됩니다. 스레드가 차단되면 드로잉 이벤트를 포함하여
+모든 이벤트가 발송되지 않습니다. 사용자가 보기에는 애플리케이션이
 중단된 것처럼 보입니다. 더 나쁜 경우, UI 스레드가 몇 초 이상 차단되어 있으면
-(현재 약 5초) 사용자에게 악명 높은 "<a href="http://developer.android.com/guide/practices/responsiveness.html">애플리케이션이 응답하지 
-않습니다</a>"(ANR) 대화가 표시됩니다. 그러면 사용자가 여러분의 애플리케이션을 종료 할 수도 있고, 불만족한 경우 앱을 
+(현재 약 5초) 사용자에게 악명 높은 "<a href="http://developer.android.com/guide/practices/responsiveness.html">애플리케이션이 응답하지
+않습니다</a>"(ANR) 대화가 표시됩니다. 그러면 사용자가 여러분의 애플리케이션을 종료 할 수도 있고, 불만족한 경우 앱을
 제거할 수도 있습니다.</p>
 
-<p>또한, Andoid UI 도구 키트는 스레드로부터 안전하지 <em>않습니다</em>. 따라서 UI를 
-작업자 스레드에서 조작해서는 안 됩니다. 사용자 인터페이스 조작 작업은 모두 UI 
+<p>또한, Andoid UI 도구 키트는 스레드로부터 안전하지 <em>않습니다</em>. 따라서 UI를
+작업자 스레드에서 조작해서는 안 됩니다. 사용자 인터페이스 조작 작업은 모두 UI
 스레드에서 해야만 합니다. 결론적으로, Android의 단일 스레드 모델에는 두 가지 단순한 규칙이 있습니다.</p>
 
 <ol>
@@ -227,12 +227,12 @@
 
 <h3 id="WorkerThreads">작업자 스레드</h3>
 
-<p>위에 설명한 단일 스레드 모델로 인해, 애플리케이션 UI의 반응성을 위해서는 
-UI 스레드를 차단하지 않는 것이 매우 중요합니다. 수행해야 할 작업이 있는데 
-이들이 즉각적인 조치를 요하지 않는 경우, 이런 작업은 반드시 별도의 스레드에서 수행해야 합니다("배경" 또는 
+<p>위에 설명한 단일 스레드 모델로 인해, 애플리케이션 UI의 반응성을 위해서는
+UI 스레드를 차단하지 않는 것이 매우 중요합니다. 수행해야 할 작업이 있는데
+이들이 즉각적인 조치를 요하지 않는 경우, 이런 작업은 반드시 별도의 스레드에서 수행해야 합니다("배경" 또는
 "작업자" 스레드).</p>
 
-<p>예를 들어, 아래는 별도의 스레드에서 이미지를 다운로드하고 이를 
+<p>예를 들어, 아래는 별도의 스레드에서 이미지를 다운로드하고 이를
 {@link android.widget.ImageView}에 표시하는 클릭 수신기에 대한 몇 가지 코드입니다.</p>
 
 <pre>
@@ -246,10 +246,10 @@
 }
 </pre>
 
-<p>처음에는 네트워크 작업을 처리하기 위한 새 스레드를 생성하므로 
-아무 문제 없이 작동하는 것처럼 보입니다. 하지만, 이것은 단일 스레드된 모델의 두 번째 규칙 즉, '<em>UI 스레드 외부에서 
+<p>처음에는 네트워크 작업을 처리하기 위한 새 스레드를 생성하므로
+아무 문제 없이 작동하는 것처럼 보입니다. 하지만, 이것은 단일 스레드된 모델의 두 번째 규칙 즉, '<em>UI 스레드 외부에서
 Android UI 도구 키트에 액세스하지 마세요.</em>'를 위반합니다. 이 샘플은 UI 스레드 대신 작업자 스레드에서 {@link
-android.widget.ImageView}를 수정합니다. 이렇게 되면 
+android.widget.ImageView}를 수정합니다. 이렇게 되면
 정의되지 않고 예기치 못한 동작이 발생하는 결과를 초래할 수 있고, 이는 추적하기 어려워 시간도 오래 걸립니다.</p>
 
 <p>이 문제를 해결하기 위해 Android는 다른 스레드에서 UI 스레드에 액세스하는 여러 가지 방식을
@@ -281,28 +281,28 @@
 }
 </pre>
 
-<p>이 구현은 이제 스레드로부터 안전합니다. 네트워크 작업은 별도의 스레드에서 수행된 반면 
+<p>이 구현은 이제 스레드로부터 안전합니다. 네트워크 작업은 별도의 스레드에서 수행된 반면
 {@link android.widget.ImageView}는 UI 스레드에서 조작되었기 때문입니다.</p>
 
-<p>그러나, 작업이 복잡해질수록 이런 종류의 코드가 더 복잡해질 수 있고 유지 관리하기 
-까다로워질 수 있습니다. 더 복잡한 상호 작용을 작업자 스레드로 처리하려면, 작업자 스레드에서 
-{@link android.os.Handler}를 사용하여 UI 스레드에서 전달 받은 메시지를 처리하는 방안을 
-고려해보십시오. 하지만 최선의 해결책은 {@link android.os.AsyncTask} 클래스를 확장하는 방법일 것입니다. 
+<p>그러나, 작업이 복잡해질수록 이런 종류의 코드가 더 복잡해질 수 있고 유지 관리하기
+까다로워질 수 있습니다. 더 복잡한 상호 작용을 작업자 스레드로 처리하려면, 작업자 스레드에서
+{@link android.os.Handler}를 사용하여 UI 스레드에서 전달 받은 메시지를 처리하는 방안을
+고려해보십시오. 하지만 최선의 해결책은 {@link android.os.AsyncTask} 클래스를 확장하는 방법일 것입니다.
 이것은 UI와 상호 작용해야 하는 작업자 스레드 작업의 실행을 단순화합니다.</p>
 
 
 <h4 id="AsyncTask">AsyncTask 사용</h4>
 
-<p>{@link android.os.AsyncTask}를 사용하면 사용자 인터페이스에서 비동기식 작업을 수행할 수 
-있게 해줍니다. 이것은 작업자 스레드에서 차단 작업을 수행하고 그런 다음 그 결과를 UI 스레드에 
+<p>{@link android.os.AsyncTask}를 사용하면 사용자 인터페이스에서 비동기식 작업을 수행할 수
+있게 해줍니다. 이것은 작업자 스레드에서 차단 작업을 수행하고 그런 다음 그 결과를 UI 스레드에
 게시하며, 개발자가 직접 스레드 및/또는 처리기를 처리할 필요가 없습니다.</p>
 
 <p>이를 사용하려면 우선 {@link android.os.AsyncTask}를 하위 클래스로 한 다음 {@link
-android.os.AsyncTask#doInBackground doInBackground()} 콜백 메서드를 구현해야 합니다. 이것은 여러 가지 
+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()}를 
+android.os.AsyncTask#doInBackground doInBackground()}로부터의 결과를 전달하며 UI 스레드에서 실행되므로,
+안전하게 UI를 업데이트할 수 있습니다. 그런 다음 UI 스레드에서 {@link android.os.AsyncTask#execute execute()}를
 호출하여 해당 작업을 실행하면 됩니다.</p>
 
 <p>예를 들어, 이런 방식으로 {@link android.os.AsyncTask}를 사용하여
@@ -319,7 +319,7 @@
     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) {
@@ -328,21 +328,21 @@
 }
 </pre>
 
-<p>이제 UI는 안전하고 코드는 더욱 단순해졌습니다. 작업을 작업자 스레드에서 수행되어야 하는 
+<p>이제 UI는 안전하고 코드는 더욱 단순해졌습니다. 작업을 작업자 스레드에서 수행되어야 하는
 부분과 UI 스레드에서 수행되어야 하는 부분으로 구분하기 때문입니다.</p>
 
-<p>이 클래스를 사용하는 법을 완전히 숙지하려면 {@link android.os.AsyncTask} 참조를 
+<p>이 클래스를 사용하는 법을 완전히 숙지하려면 {@link android.os.AsyncTask} 참조를
 읽어보시는 것이 좋습니다. 개괄적인 작동 방식은 아래에 간략히 소개해 놓았습니다.</p>
 
 <ul>
-<li>매개 변수의 유형, 진행률 값과 작업의 최종 값을 제네릭을 사용하여 
+<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()}가 반환한 값이 
+<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
@@ -350,27 +350,27 @@
 <li>모든 스레드에서 언제든 작업을 취소할 수 있습니다.</li>
 </ul>
 
-<p class="caution"><strong>주의:</strong> 작업자 스레드를 사용할 때 마주칠 수 있는 또 한 가지 문제는 
+<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>
 
-<p>이것은 주로 원격으로 호출할 수 있는 메서드에 대해 참입니다. 예를 들어 <a href="{@docRoot}guide/components/bound-services.html">바인딩된 서비스</a> 내의 메서드 등이 해당됩니다. 
-{@link android.os.IBinder}에서 구현된 메서드가 
-{@link android.os.IBinder IBinder}가 실행되는 프로세스에서 호출될 경우, 해당 메서드는 발신자의 스레드에서 실행됩니다. 
-그러나 호출이 다른 프로세스에서 발생하면, 해당 메서드는 시스템이 
+<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()} 메서드는 해당 서비스 
+IBinder}와 같은 프로세스에 유지하는 스레드 풀에서 선택된 스레드에서 실행됩니다(프로세스의 UI 스레드에서 실행되지 않습니다).  예를 들어, 어느 서비스의
+{@link android.app.Service#onBind onBind()} 메서드는 해당 서비스
 프로세스의 UI 스레드에서 호출되고, {@link android.app.Service#onBind
-onBind()}가 반환하는 객체에서 구현된 메서드는(예: RPC 메서드를 구현하는 하위 클래스) 해당 풀 안의 여러 스레드에서 
+onBind()}가 반환하는 객체에서 구현된 메서드는(예: RPC 메서드를 구현하는 하위 클래스) 해당 풀 안의 여러 스레드에서
 호출되게 됩니다. 서비스에 클라이언트가 하나 이상 있을 수 있으므로, 하나 이상의 풀이
 동시에 같은 {@link android.os.IBinder IBinder} 메서드에 참여할 수 있습니다. 그러므로 {@link android.os.IBinder
 IBinder} 메서드는 스레드로부터 안전하게 구현되어야 합니다.</p>
@@ -389,13 +389,13 @@
 
 <h2 id="IPC">프로세스 간 통신</h2>
 
-<p>Android는 원격 프로시저 호출(RPC)을 사용한 프로세스 간 통신(IPC) 메커니즘을 제공합니다. 
-여기서 메서드는 액티비티나 다른 애플리케이션 구성 요소에 호출되지만 
-원격으로 (또 다른 프로세스에서) 실행되고, 결과는 모두 발신자에게 되돌려 
-보냅니다. 메서드 호출과 메서드의 데이터는 운영 체제가 이해할 수 있는 수준으로 분해되고, 
-로컬 프로세스와 주소 공간에서 원격 프로세스와 주소 공간으로 전송된 다음 
-다시 결합되어 여기서 호출에 다시 응답합니다.  그런 다음 반환 값이 
-반대 방향으로 전송됩니다.  Android가 이와 같은 IPC 트랜잭션을 수행하는 데 필요한 
+<p>Android는 원격 프로시저 호출(RPC)을 사용한 프로세스 간 통신(IPC) 메커니즘을 제공합니다.
+여기서 메서드는 액티비티나 다른 애플리케이션 구성 요소에 호출되지만
+원격으로 (또 다른 프로세스에서) 실행되고, 결과는 모두 발신자에게 되돌려
+보냅니다. 메서드 호출과 메서드의 데이터는 운영 체제가 이해할 수 있는 수준으로 분해되고,
+로컬 프로세스와 주소 공간에서 원격 프로세스와 주소 공간으로 전송된 다음
+다시 결합되어 여기서 호출에 다시 응답합니다.  그런 다음 반환 값이
+반대 방향으로 전송됩니다.  Android가 이와 같은 IPC 트랜잭션을 수행하는 데 필요한
 모든 코드를 제공하므로, 개발자는 그저 RPC 프로그래밍 인터페이스를 정의하고 구현하는 데에만 집중하면 됩니다. </p>
 
 <p>IPC를 수행하려면 애플리케이션이 반드시 서비스에 바인딩되어야만 하며, 이때 {@link
diff --git a/docs/html-intl/intl/ko/guide/components/recents.jd b/docs/html-intl/intl/ko/guide/components/recents.jd
index cba3c45..28b3c68 100644
--- a/docs/html-intl/intl/ko/guide/components/recents.jd
+++ b/docs/html-intl/intl/ko/guide/components/recents.jd
@@ -38,50 +38,50 @@
 
 <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 문서 각각에 대한 작업이 있을 수 있습니다. 각 문서는 개요 화면에 하나의 
+액티비티</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 class="img-caption"><strong>그림 1.</strong> 세 개의 Google Drive 문서가 각기 별도의
 작업을 나타내는 모습을 표시한 개요 화면입니다.</p>
 
-<p>보통은 개요 화면에 작업과 액티비티가 어떻게 표현될지는 시스템이 
-정의하도록 두어야 합니다. 이 행동을 개발자가 수정할 필요도 없습니다. 
-하지만, 개요 화면에 액티비티가 언제, 어떻게 나타날지는 앱이 결정할 수 있습니다. 
-{@link android.app.ActivityManager.AppTask} 클래스를 사용하면 작업을 관리할 수 있게 해주고, 
-{@link android.content.Intent} 클래스의 액티비티 플래그를 사용하면 개요 화면에서 액티비티가 추가되거나 제거되는 시점을 
+<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} 클래스의 플래그를 사용하여 작업을 추가하면 
-개요 화면에서 문서가 열리거나 다시 열리는 시점과 방법을 보다 철저히 통제할 수 있습니다. 
+<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} 클래스의 
+<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} 
+ 메서드를 호출하고, 이것을 액티비티를 시작하는 인텐트에 전달하면 됩니다. 논리적인 중단을 삽입하여 시스템이 개요 화면에서 액티비티를
+새 작업으로 처리하도록 하려면, {@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} 플래그를 
+플래그가 {@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>새 문서를 생성하면서 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 설정하는 경우,
+시스템은 항상 대상 액티비티를 루트로 하여 새 작업을 만듭니다.
+이렇게 설정하면 같은 문서를 하나 이상의 작업에서 열 수 있습니다. 다음 코드는 기본 액티비티가 이 작업을 수행하는 방법을
 보여줍니다.</p>
 
 <p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -111,15 +111,15 @@
 </pre>
 
 <p class="note"><strong>참고:</strong> {@code FLAG_ACTIVITY_NEW_DOCUMENT}
- 플래그로 시작된 액티비티의 경우, 반드시 매니페스트에 {@code android:launchMode="standard"} 특성 값(기본)이 설정되어 
+ 플래그로 시작된 액티비티의 경우, 반드시 매니페스트에 {@code android:launchMode="standard"} 특성 값(기본)이 설정되어
 있어야 합니다.</p>
 
-<p>기본 액티비티가 새 액티비티를 시작하면 시스템은 기존의 작업을 검색하여 그 중 
-해당 액티비티에 대한 인텐트 구성 요소 이름과 인텐트 데이터와 일치하는 인텐트를 가진 작업을 찾습니다. 그러한 작업을 
+<p>기본 액티비티가 새 액티비티를 시작하면 시스템은 기존의 작업을 검색하여 그 중
+해당 액티비티에 대한 인텐트 구성 요소 이름과 인텐트 데이터와 일치하는 인텐트를 가진 작업을 찾습니다. 그러한 작업을
 찾을 수 없거나 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
- 플래그에 들어 있는 인텐트를 찾을 수 없는 경우, 해당 액티비티를 루트로 하여 새 작업이 생성됩니다. 원하는 항목을 찾으면, 시스템은 해당 작업을 전경으로 가지고 와 
-새 인텐트를 {@link android.app.Activity#onNewIntent onNewIntent()}에 전달합니다. 
-새 액티비티가 인텐트를 받아 개요 화면에서 새 문서를 생성하며, 이는 다음 예시에 나타낸 
+ 플래그에 들어 있는 인텐트를 찾을 수 없는 경우, 해당 액티비티를 루트로 하여 새 작업이 생성됩니다. 원하는 항목을 찾으면, 시스템은 해당 작업을 전경으로 가지고 와
+새 인텐트를 {@link android.app.Activity#onNewIntent onNewIntent()}에 전달합니다.
+새 액티비티가 인텐트를 받아 개요 화면에서 새 문서를 생성하며, 이는 다음 예시에 나타낸
 것과 같습니다.</p>
 
 <p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -149,64 +149,64 @@
 
 <h3 id="#attr-doclaunch">작업 추가에 액티비티 특성 사용</h3>
 
-<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#dlmode">
-{@code android:documentLaunchMode}</a>를 사용한다고 나타낼 수도 있습니다. 이 특성에는 네 가지 값이 있어 사용자가 애플리케이션으로 문서를 열면 
+{@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> 설정하는 것과 같습니다. 
+  <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>액티비티가 문서에 대해 새 작업을 생성하며, 이는 문서가 이미 열려 있는 경우라도 마찬가지입니다. 이 값을 
+  <dd>액티비티가 문서에 대해 새 작업을 생성하며, 이는 문서가 이미 열려 있는 경우라도 마찬가지입니다. 이 값을
 사용하는 것은 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
  및 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 둘 다 설정하는 것과 같습니다.</dd>
 
   <dt>"{@code none”}"</dt>
-  <dd>액티비티가 문서에 대해 새 작업을 생성하지 않습니다. 개요 화면은 액티비티를 기본 상태에서와 
-같이 다룹니다. 즉 앱에 대한 하나의 작업을 표시하며, 이때 사용자가 
+  <dd>액티비티가 문서에 대해 새 작업을 생성하지 않습니다. 개요 화면은 액티비티를 기본 상태에서와
+같이 다룹니다. 즉 앱에 대한 하나의 작업을 표시하며, 이때 사용자가
 마지막으로 호출한 작업이 무엇이든 관계 없이 그 작업에서부터 재개합니다.</dd>
 
   <dt>"{@code never}"</dt>
-  <dd>액티비티가 문서에 대해 새 작업을 생성하지 않습니다. 이 값을 설정하면 
+  <dd>액티비티가 문서에 대해 새 작업을 생성하지 않습니다. 이 값을 설정하면
 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
- 및 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그의 행동을 
-재정의합니다(이들 중 하나가 인텐트에서 설정되어 있는 경우). 개요 화면은 앱에 대한 하나의 작업을 표시하고, 
+ 및 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그의 행동을
+재정의합니다(이들 중 하나가 인텐트에서 설정되어 있는 경우). 개요 화면은 앱에 대한 하나의 작업을 표시하고,
 이것이 사용자가 마지막으로 호출한 액티비티가 무엇이든 그것부터 재개합니다.</dd>
 </dl>
 
-<p class="note"><strong>참고:</strong> {@code none} 및 {@code never}를 제외한 다른 값의 경우, 
-액티비티를 {@code launchMode="standard"}로 정의해야 합니다. 이 특성을 지정하지 않으면 
+<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} 클래스를 사용합니다. 이때 
+<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>개요 화면에서 작업을 완전히 제외하려면 언제든 
+<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>개요 화면에서 앱이 포함할 수 있는 작업의 최대 개수를 설정하려면 
+<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} 최대값은 
+</a>를 정수 값으로 설정합니다. 기본은 16개입니다. 작업의 최대 대수에 도달하면 가장 예전에 사용된 작업이 개요 화면에서
+제거됩니다. {@code android:maxRecents} 최대값은
 50입니다(메모리 용량이 적은 기기에서는 25). 1 미만의 값은 유효하지 않습니다.</p>
 
 <h3 id="#apptask-remove">작업 제거에 AppTask 클래스 사용</h3>
 
-<p>개요 화면에서 새 작업을 생성하는 액티비티에서는 작업을 언제 제거할 것인지와 
-그와 관련된 모든 액티비티를 언제 완료할 것인지 지정할 수 있습니다. 
+<p>개요 화면에서 새 작업을 생성하는 액티비티에서는 작업을 언제 제거할 것인지와
+그와 관련된 모든 액티비티를 언제 완료할 것인지 지정할 수 있습니다.
 {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를 호출하면 됩니다.</p>
 
 <p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
@@ -218,15 +218,15 @@
 }
 </pre>
 
-<p class="note"><strong>참고:</strong> 
-{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를 
-사용하면 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 태그 사용을 재정의합니다. 
+<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()} 메서드에 있는 
+<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">
@@ -241,11 +241,11 @@
 }
 </pre>
 
-<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#autoremrecents">
 {@code android:autoRemoveFromRecents}</a>를 {@code false}로 설정해도 됩니다. 기본 값은 문서 액티비티의 경우 {@code true}
-이고, 일반 액티비티의 경우 {@code false}입니다. 이 특성을 사용하면 이전에 논한 것과 같이 
+이고, 일반 액티비티의 경우 {@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
index fb95ea5..71c2b50 100644
--- a/docs/html-intl/intl/ko/guide/components/services.jd
+++ b/docs/html-intl/intl/ko/guide/components/services.jd
@@ -49,52 +49,52 @@
 </div>
 
 
-<p>{@link android.app.Service}는 배경에서 오래 실행되는 작업을 
-수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 또 다른 
-애플리케이션 구성 요소가 서비스를 시작할 수 있으며, 이는 사용자가 또 다른 
-애플리케이션으로 전환하더라도 배경에서 계속해서 실행됩니다. 이외에도, 구성 요소를 서비스에 바인딩하여 
-서비스와 상호 작용할 수 있으며, 심지어는 프로세스 간 통신(IPC)도 수행할 수 있습니다. 예를 들어 한 서비스는 
-네트워크 트랜잭션을 처리하고, 음악을 재생하고 파일 I/O를 수행하거나 콘텐츠 제공자와 상호 작용할 수 있으며 
+<p>{@link android.app.Service}는 배경에서 오래 실행되는 작업을
+수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 또 다른
+애플리케이션 구성 요소가 서비스를 시작할 수 있으며, 이는 사용자가 또 다른
+애플리케이션으로 전환하더라도 배경에서 계속해서 실행됩니다. 이외에도, 구성 요소를 서비스에 바인딩하여
+서비스와 상호 작용할 수 있으며, 심지어는 프로세스 간 통신(IPC)도 수행할 수 있습니다. 예를 들어 한 서비스는
+네트워크 트랜잭션을 처리하고, 음악을 재생하고 파일 I/O를 수행하거나 콘텐츠 제공자와 상호 작용할 수 있으며
 이 모든 것을 배경에서 수행할 수 있습니다.</p>
 
 <p>서비스는 본질적으로 두 가지 형식을 취합니다.</p>
 
 <dl>
   <dt>시작됨</dt>
-  <dd>서비스가 "시작된" 상태가 되려면 애플리케이션 구성 요소(예: 액티비티)가 
-{@link android.content.Context#startService startService()}를 호출하여 시작하면 됩니다. 서비스는 한 번 시작되고 나면 
-배경에서 무기한으로 실행될 수 있으며, 이는 해당 서비스를 시작한 구성 요소가 소멸되었더라도 무관합니다. 보통, 
+  <dd>서비스가 "시작된" 상태가 되려면 애플리케이션 구성 요소(예: 액티비티)가
+{@link android.content.Context#startService startService()}를 호출하여 시작하면 됩니다. 서비스는 한 번 시작되고 나면
+배경에서 무기한으로 실행될 수 있으며, 이는 해당 서비스를 시작한 구성 요소가 소멸되었더라도 무관합니다. 보통,
 시작된 서비스는 한 작업을 수행하고 결과를 발신자에게 반환하지 않습니다.
-예를 들어 네트워크에서 파일을 다운로드하거나 업로드할 수 있습니다. 작업을 완료하면, 해당 서비스는 
+예를 들어 네트워크에서 파일을 다운로드하거나 업로드할 수 있습니다. 작업을 완료하면, 해당 서비스는
 알아서 중단되는 것이 정상입니다.</dd>
   <dt>바인딩됨</dt>
   <dd>서비스가 "바인딩된" 상태가 되려면 애플리케이션 구성 요소가 {@link
-android.content.Context#bindService bindService()}를 사용하여 해당 서비스에 바인딩되면 됩니다. 바인딩된 서비스는 클라이언트-서버 
-인터페이스를 제공하여 구성 요소가 서비스와 상호 작용할 수 있도록 해주며, 결과를 가져올 수도 있고 심지어 
-이와 같은 작업을 여러 프로세스에 걸쳐 프로세스 간 통신(IPC)으로 수행할 수도 있습니다. 바인딩된 서비스는 또 다른 애플리케이션 구성 요소가 
-이에 바인딩되어 있는 경우에만 실행됩니다. 여러 개의 구성 요소가 서비스에 한꺼번에 바인딩될 수 있지만, 
+android.content.Context#bindService bindService()}를 사용하여 해당 서비스에 바인딩되면 됩니다. 바인딩된 서비스는 클라이언트-서버
+인터페이스를 제공하여 구성 요소가 서비스와 상호 작용할 수 있도록 해주며, 결과를 가져올 수도 있고 심지어
+이와 같은 작업을 여러 프로세스에 걸쳐 프로세스 간 통신(IPC)으로 수행할 수도 있습니다. 바인딩된 서비스는 또 다른 애플리케이션 구성 요소가
+이에 바인딩되어 있는 경우에만 실행됩니다. 여러 개의 구성 요소가 서비스에 한꺼번에 바인딩될 수 있지만,
 이 모든 것이 바인딩을 해제하면 해당 서비스는 소멸됩니다.</dd>
 </dl>
 
-<p>이 문서는 주로 이러한 두 가지 유형의 서비스를 따로따로 논하지만, 서비스는 
+<p>이 문서는 주로 이러한 두 가지 유형의 서비스를 따로따로 논하지만, 서비스는
 두 가지 방식 모두로 작동할 수 있습니다. 즉 서비스가 시작될 수도 있고(나아가 무기한으로 실행되고) 바인딩도 허용할 수 있다는 뜻입니다.
 이는 그저 두어 가지 콜백 메서드의 구현 여부에 달린 문제입니다. {@link
 android.app.Service#onStartCommand onStartCommand()}를 사용하면 구성 요소가 서비스를 시작할 수 있게 허용하고, {@link
 android.app.Service#onBind onBind()}를 사용하면 바인딩을 허용합니다.</p>
 
 <p>애플리케이션이 시작되었든, 바인딩되었든 아니면 양쪽 모두이든 모든 애플리케이션 구성 요소가
-해당 서비스를 사용할 수 있으며(별도의 애플리케이션에서라도), 이는 어느 구성 요소든 액티비티를 
-사용할 수 있는 것과 같습니다. 이를 {@link android.content.Intent}로 시작하면 됩니다. 그러나, 
-매니페스트에서 서비스를 비공개로 선언하고 다른 애플리케이션으로부터의 액세스를 차단할 수도 있습니다. 이것은 
-<a href="#Declaring">매니페스트에서 서비스 
+해당 서비스를 사용할 수 있으며(별도의 애플리케이션에서라도), 이는 어느 구성 요소든 액티비티를
+사용할 수 있는 것과 같습니다. 이를 {@link android.content.Intent}로 시작하면 됩니다. 그러나,
+매니페스트에서 서비스를 비공개로 선언하고 다른 애플리케이션으로부터의 액세스를 차단할 수도 있습니다. 이것은
+<a href="#Declaring">매니페스트에서 서비스
 선언하기</a>에 관한 섹션에서 더 자세히 이야기합니다.</p>
 
-<p class="caution"><strong>주의:</strong> 서비스는 자신의 호스팅 프로세스의 
-기본 스레드에서 실행됩니다. 서비스는 자신의 스레드를 직접 생성하지 <strong>않으며</strong>, 
-별도의 프로세스에서 실행되지도 <strong>않습니다</strong>(별도로 지정하는 경우는 예외). 이것은 즉, 
-서비스가 CPU 집약적인 작업을 수행할 예정이거나 차단적인 작업을 수행할 예정인 경우(예를 들어 MP3 
-재생 또는 네트워킹 등), 서비스 내에 새 스레드를 생성하여 해당 작업을 수행하도록 해야 한다는 뜻입니다. 별도의 스레드를 사용하면 
-'애플리케이션이 응답하지 않습니다(ANR)' 오류가 일어날 위험을 줄일 수 있으며 
+<p class="caution"><strong>주의:</strong> 서비스는 자신의 호스팅 프로세스의
+기본 스레드에서 실행됩니다. 서비스는 자신의 스레드를 직접 생성하지 <strong>않으며</strong>,
+별도의 프로세스에서 실행되지도 <strong>않습니다</strong>(별도로 지정하는 경우는 예외). 이것은 즉,
+서비스가 CPU 집약적인 작업을 수행할 예정이거나 차단적인 작업을 수행할 예정인 경우(예를 들어 MP3
+재생 또는 네트워킹 등), 서비스 내에 새 스레드를 생성하여 해당 작업을 수행하도록 해야 한다는 뜻입니다. 별도의 스레드를 사용하면
+'애플리케이션이 응답하지 않습니다(ANR)' 오류가 일어날 위험을 줄일 수 있으며
 애플리케이션의 기본 스레드는 액티비티와 사용자 상호 작용 전용으로 유지될 수 있습니다.</p>
 
 
@@ -103,89 +103,89 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <h3>서비스와 스레드 중 어느 것을 사용해야 할까요?</h3>
-  <p>서비스는 그저 배경에서 실행될 수 있는 구성 요소일 뿐입니다. 이는 사용자가 
-애플리케이션과 상호 작용하지 않아도 관계 없이 해당됩니다. 따라서, 서비스를 생성하는 것은 꼭 그것이 필요할 때만으로 국한되어야 
+  <p>서비스는 그저 배경에서 실행될 수 있는 구성 요소일 뿐입니다. 이는 사용자가
+애플리케이션과 상호 작용하지 않아도 관계 없이 해당됩니다. 따라서, 서비스를 생성하는 것은 꼭 그것이 필요할 때만으로 국한되어야
 합니다.</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">프로세스 및 
+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>서비스를 사용하는 경우 기본적으로 애플리케이션의 기본 스레드에서
+계속 실행되므로 서비스가 집약적이거나 차단적인 작업을 수행하는 경우 여전히 서비스 내에
 새 스레드를 생성해야 한다는 점을 명심하십시오.</p>
 </div>
 </div>
 
-<p>서비스를 생성하려면 {@link android.app.Service}의 하위 클래스를 생성해야 합니다(아니면 이의 
-기존 하위 클래스 중 하나). 구현에서는 서비스 수명 주기의 주요 측면을 처리하는 콜백 메서드를 
-몇 가지 재정의해야 하며 서비스에 바인딩할 구성 요소에 대한 메커니즘을 
+<p>서비스를 생성하려면 {@link android.app.Service}의 하위 클래스를 생성해야 합니다(아니면 이의
+기존 하위 클래스 중 하나). 구현에서는 서비스 수명 주기의 주요 측면을 처리하는 콜백 메서드를
+몇 가지 재정의해야 하며 서비스에 바인딩할 구성 요소에 대한 메커니즘을
 제공해야 합니다(해당되는 경우). 재정의해야 하는 가장 중요한 콜백 메서드는 다음과 같습니다.</p>
 
 <dl>
   <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
-    <dd>시스템이 이 메서드를 호출하는 것은 또 다른 구성 요소(예: 액티비티)가 서비스를 
+    <dd>시스템이 이 메서드를 호출하는 것은 또 다른 구성 요소(예: 액티비티)가 서비스를
 시작하도록 요청하는 경우입니다. 이때 {@link android.content.Context#startService
-startService()}를 호출하는 방법을 씁니다. 이 메서드가 실행되면 서비스가 시작되고 배경에서 무기한으로 실행될 수 
-있습니다. 이것을 구성하면 서비스의 작업이 완료되었을 때 해당 서비스를 중단하는 것은 
+startService()}를 호출하는 방법을 씁니다. 이 메서드가 실행되면 서비스가 시작되고 배경에서 무기한으로 실행될 수
+있습니다. 이것을 구성하면 서비스의 작업이 완료되었을 때 해당 서비스를 중단하는 것은
 개발자 본인의 책임입니다. 이때 {@link android.app.Service#stopSelf stopSelf()} 또는 {@link
-android.content.Context#stopService stopService()}를 호출하면 됩니다 (바인딩만 제공하고자 하는 경우, 이 메서드를 구현하지 
+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}를 반환하면 됩니다. 이 메서드는 항상 
+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>시스템이 이 메서드를 호출하는 것은 서비스가 처음 생성되어 일회성 설정
+절차를 수행하는 경우입니다({@link android.app.Service#onStartCommand onStartCommand()} 또는
+{@link android.app.Service#onBind onBind()}를 호출하기 전에). 서비스가 이미 실행 중인 경우, 이 메서드는 호출되지
 않습니다.</dd>
   <dt>{@link android.app.Service#onDestroy()}</dt>
-    <dd>시스템이 이 메서드를 호출하는 것은 해당 서비스를 더 이상 사용하지 않고 소멸시키는 경우입니다. 
-서비스에 이것을 구현해야 스레드, 등록된 각종 수신기(listener, receiver) 등 
+    <dd>시스템이 이 메서드를 호출하는 것은 해당 서비스를 더 이상 사용하지 않고 소멸시키는 경우입니다.
+서비스에 이것을 구현해야 스레드, 등록된 각종 수신기(listener, receiver) 등
 모든 리소스를 정리할 수 있습니다. 이것이 서비스가 수신하는 마지막 호출입니다.</dd>
 </dl>
 
 <p>한 구성 요소가 {@link
 android.content.Context#startService startService()}를 호출하여 서비스를 시작하면({@link
-android.app.Service#onStartCommand onStartCommand()}로의 호출을 초래함), 해당 서비스는 
-알아서 {@link android.app.Service#stopSelf()}로 스스로를 중단할 때까지 또는 
+android.app.Service#onStartCommand onStartCommand()}로의 호출을 초래함), 해당 서비스는
+알아서 {@link android.app.Service#stopSelf()}로 스스로를 중단할 때까지 또는
 또 다른 구성 요소가 {@link android.content.Context#stopService stopService()}를 호출하여 서비스를 중단시킬 때까지 실행 중인 상태로 유지됩니다.</p>
 
-<p>한 구성 요소가 
+<p>한 구성 요소가
 {@link android.content.Context#bindService bindService()}를 호출하여 서비스를 생성하는 경우(그리고 {@link
-android.app.Service#onStartCommand onStartCommand()}를 호출하지 <em>않은</em> 경우), 해당 서비스는 
-해당 구성 요소가 바인딩되어 있는 경우에만 실행됩니다. 서비스가 모든 클라이언트로부터 바인딩 해제되면 시스템이 이를 
+android.app.Service#onStartCommand onStartCommand()}를 호출하지 <em>않은</em> 경우), 해당 서비스는
+해당 구성 요소가 바인딩되어 있는 경우에만 실행됩니다. 서비스가 모든 클라이언트로부터 바인딩 해제되면 시스템이 이를
 소멸시킵니다.</p>
 
-<p>Android 시스템이 서비스를 강제 중단시키는 것은 메모리가 부족하여 사용자가 초점을 집중하고 있는 
-액티비티를 위해 시스템 리소스를 회복해야만 하는 경우로만 국한됩니다. 해당 서비스가 사용자의 주목을 
-끌고 있는 액티비티에 바인딩되어 있다면 중단될 가능성이 낮고, 서비스가 <a href="#Foreground">전경에서 실행</a>된다고 선언된 경우(나중에 자세히 논함), 거의 절대 중단되지 않습니다. 
-그렇지 않으면, 서비스가 시작되었고 오랫동안 실행되는 경우 
-시간이 지나면서 시스템이 배경 작업 목록에서의 이 서비스의 위치를 점점 낮추고 
-서비스는 중단되기 매우 쉬워집니다. 서비스가 시작되었다면 이를 시스템에 의한 재시작을 정상적으로 
-처리하도록 디자인해야 합니다. 시스템이 서비스를 중단시키는 경우, 리소스를 다시 사용할 수 있게 되면 
+<p>Android 시스템이 서비스를 강제 중단시키는 것은 메모리가 부족하여 사용자가 초점을 집중하고 있는
+액티비티를 위해 시스템 리소스를 회복해야만 하는 경우로만 국한됩니다. 해당 서비스가 사용자의 주목을
+끌고 있는 액티비티에 바인딩되어 있다면 중단될 가능성이 낮고, 서비스가 <a href="#Foreground">전경에서 실행</a>된다고 선언된 경우(나중에 자세히 논함), 거의 절대 중단되지 않습니다.
+그렇지 않으면, 서비스가 시작되었고 오랫동안 실행되는 경우
+시간이 지나면서 시스템이 배경 작업 목록에서의 이 서비스의 위치를 점점 낮추고
+서비스는 중단되기 매우 쉬워집니다. 서비스가 시작되었다면 이를 시스템에 의한 재시작을 정상적으로
+처리하도록 디자인해야 합니다. 시스템이 서비스를 중단시키는 경우, 리소스를 다시 사용할 수 있게 되면
 시스템이 가능한 한 빨리 이를 다시 시작합니다(다만 이것은 개발자가 {@link
-android.app.Service#onStartCommand onStartCommand()}에서 반환하는 값에도 좌우됩니다. 이 내용은 나중에 논합니다). 시스템이 서비스를 
+android.app.Service#onStartCommand onStartCommand()}에서 반환하는 값에도 좌우됩니다. 이 내용은 나중에 논합니다). 시스템이 서비스를
 소멸시킬 수 있는 경우에 대한 자세한 정보는 <a href="{@docRoot}guide/components/processes-and-threads.html">프로세스 및 스레딩</a>
 문서를 참조하십시오.</p>
 
-<p>다음 섹션에서는 각 유형의 서비스를 생성하는 방법과 다른 애플리케이션 구성 요소에서 
+<p>다음 섹션에서는 각 유형의 서비스를 생성하는 방법과 다른 애플리케이션 구성 요소에서
 이를 사용하는 방법을 배우게 됩니다.</p>
 
 
 
 <h3 id="Declaring">매니페스트에서 서비스 선언하기</h3>
 
-<p>액티비티(및 다른 구성 요소)와 마찬가지로, 서비스는 모두 애플리케이션의 매니페스트 
+<p>액티비티(및 다른 구성 요소)와 마찬가지로, 서비스는 모두 애플리케이션의 매니페스트
 파일에서 선언해야 합니다.</p>
 
-<p>서비스를 선언하려면 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 요소를 
+<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>
 
@@ -199,28 +199,28 @@
 &lt;/manifest&gt;
 </pre>
 
-<p>매니페스트에서 서비스를 선언하는 데 대한 자세한 정보는 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 
+<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> 요소에 포함시킬 수 있는 다른 속성도 있습니다. 
-이를 포함시켜 서비스를 시작하는 데 필요한 권한과 서비스가 실행되어야 하는 프로세스 등의 
+<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.app.Service}을 시작하거나 바인딩할 때 항상 명시적 인텐트를 사용하고</strong> 서비스에 대한 인텐트 필터는 선언하지 마십시오. 어느
+서비스를 시작할지 어느 정도 모호성을 허용하는 것이 중요한 경우, 서비스에 대해
 인텐트 필터를 제공하고 구성 요소 이름을 {@link
 android.content.Intent}에서 배제할 수 있지만, 그러면 해당 인텐트에 대한 패키지를 {@link
-android.content.Intent#setPackage setPackage()}로 설정하여 대상 서비스에 대해 충분한 명확화를 
+android.content.Intent#setPackage setPackage()}로 설정하여 대상 서비스에 대해 충분한 명확화를
 제공하도록 해야 합니다.</p>
 
-<p>이외에도 서비스를 본인의 앱에만 사용 가능하도록 보장할 수도 있습니다. 
+<p>이외에도 서비스를 본인의 앱에만 사용 가능하도록 보장할 수도 있습니다.
 <a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
- 속성을 포함시킨 뒤 이를 {@code "false"}로 설정하면 됩니다. 이렇게 하면 다른 앱이 여러분의 서비스를 시작하지 못하도록 효과적으로 방지해주며, 
+ 속성을 포함시킨 뒤 이를 {@code "false"}로 설정하면 됩니다. 이렇게 하면 다른 앱이 여러분의 서비스를 시작하지 못하도록 효과적으로 방지해주며,
 이는 명시적 인텐트를 사용하는 경우에도 문제 없이 적용됩니다.</p>
 
 
@@ -229,71 +229,71 @@
 <h2 id="CreatingStartedService">시작된 서비스 생성하기</h2>
 
 <p>시작된 서비스란 다른 구성 요소가 {@link
-android.content.Context#startService startService()}를 호출하여 시작하고, 그 결과 서비스의 
+android.content.Context#startService startService()}를 호출하여 시작하고, 그 결과 서비스의
 {@link android.app.Service#onStartCommand onStartCommand()} 메서드를 호출하는 결과를 초래한 것을 말합니다.</p>
 
-<p>서비스가 시작되면 이를 시작한 구성 요소와 독립된 자신만의 
-수명 주기를 가지며 해당 서비스는 배경에서 무기한으로 실행될 수 있습니다. 이는 해당 서비스를 
-시작한 구성 요소가 소멸되었더라도 무관합니다. 따라서, 서비스는 작업이 완료되면 
-{@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 알아서 중단되는 것이 정상이며 아니면 다른 구성 요소가 
+<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}를 
-전달하면 됩니다. 이것은 서비스를 나타내고 서비스가 사용할 모든 데이터를 포함합니다. 서비스는 이 
+android.content.Context#startService startService()}를 호출하고, {@link android.content.Intent}를
+전달하면 됩니다. 이것은 서비스를 나타내고 서비스가 사용할 모든 데이터를 포함합니다. 서비스는 이
 {@link android.content.Intent}를 {@link android.app.Service#onStartCommand
 onStartCommand()} 메서드에서 수신합니다.</p>
 
-<p>예를 들어 어느 액티비티가 온라인 데이터베이스에 데이터를 약간 저장해야 한다고 가정합니다. 액티비티가 
+<p>예를 들어 어느 액티비티가 온라인 데이터베이스에 데이터를 약간 저장해야 한다고 가정합니다. 액티비티가
 동반자 서비스를 시작하여 저장할 데이터를 이에 전달할 수 있습니다. 이때 인텐트를 {@link
 android.content.Context#startService startService()}에 전달하면 됩니다. 서비스는 이 인텐트를 {@link
-android.app.Service#onStartCommand onStartCommand()}에서 수신하고 인터넷에 연결한 다음 데이터베이스 
-트랜잭션을 수행합니다. 작업을 완료하면, 해당 서비스는 알아서 스스로 중단되고 
+android.app.Service#onStartCommand onStartCommand()}에서 수신하고 인터넷에 연결한 다음 데이터베이스
+트랜잭션을 수행합니다. 작업을 완료하면, 해당 서비스는 알아서 스스로 중단되고
 소멸됩니다.</p>
 
-<p class="caution"><strong>주의:</strong> 서비스는 기본적으로 자신이 선언된 애플리케이션의 같은 
-프로세스에서 실행되기도 하고 해당 애플리케이션의 기본 스레드에서 실행되기도 합니다. 따라서, 사용자가 
-같은 애플리케이션의 액티비티와 상호 작용하는 동안 서비스가 집약적이거나 차단적인 작업을 수행하는 경우, 
-해당 서비스 때문에 액티비티 성능이 느려지게 됩니다. 애플리케이션 성능에 영향을 미치는 것을 방지하려면, 
+<p class="caution"><strong>주의:</strong> 서비스는 기본적으로 자신이 선언된 애플리케이션의 같은
+프로세스에서 실행되기도 하고 해당 애플리케이션의 기본 스레드에서 실행되기도 합니다. 따라서, 사용자가
+같은 애플리케이션의 액티비티와 상호 작용하는 동안 서비스가 집약적이거나 차단적인 작업을 수행하는 경우,
+해당 서비스 때문에 액티비티 성능이 느려지게 됩니다. 애플리케이션 성능에 영향을 미치는 것을 방지하려면,
 서비스 내에서 새 스레드를 시작해야 합니다.</p>
 
 <p>기존에는 시작된 서비스를 생성하기 위해 확장할 수 있는 클래스가 두 개 있었습니다.</p>
 <dl>
   <dt>{@link android.app.Service}</dt>
-  <dd>이것이 모든 서비스의 기본 클래스입니다. 이 클래스를 확장하는 경우, 서비스의 모든 작업을 수행할 
-새 스레드를 만드는 것이 중요합니다. 서비스가 기본적으로 애플리케이션의 기본 스레드를 사용하기 
-때문인데, 이로 인해 애플리케이션이 실행 중인 모든 액티비티의 성능이 
+  <dd>이것이 모든 서비스의 기본 클래스입니다. 이 클래스를 확장하는 경우, 서비스의 모든 작업을 수행할
+새 스레드를 만드는 것이 중요합니다. 서비스가 기본적으로 애플리케이션의 기본 스레드를 사용하기
+때문인데, 이로 인해 애플리케이션이 실행 중인 모든 액티비티의 성능이
 느려질 수 있기 때문입니다.</dd>
   <dt>{@link android.app.IntentService}</dt>
-  <dd>이것은 {@link android.app.Service}의 하위 클래스로, 작업자 스레드를 
-사용하여 모든 시작 요청을 처리하되 한 번에 하나씩 처리합니다. 서비스가 여러 개의 요청을 
+  <dd>이것은 {@link android.app.Service}의 하위 클래스로, 작업자 스레드를
+사용하여 모든 시작 요청을 처리하되 한 번에 하나씩 처리합니다. 서비스가 여러 개의 요청을
 동시에 처리하지 않아도 되는 경우 이것이 최선의 옵션입니다. 해야 할 일은 {@link
-android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것뿐으로, 이것이 각 시작 요청에 대한 인텐트를 수신하여 
+android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것뿐으로, 이것이 각 시작 요청에 대한 인텐트를 수신하여
 개발자는 배경 작업을 수행할 수 있습니다.</dd>
 </dl>
 
-<p>다음 섹션에서는 이와 같은 클래스 중 하나를 사용하여 서비스를 구현하는 방법을 
+<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()}에 전달된 모든 인텐트를 실행하는 기본 작업자 스레드를 
+android.app.Service#onStartCommand onStartCommand()}에 전달된 모든 인텐트를 실행하는 기본 작업자 스레드를
 생성합니다.</li>
   <li>한 번에 인텐트를 하나씩 {@link
-android.app.IntentService#onHandleIntent onHandleIntent()} 구현에 전달하는 작업 대기열을 생성하므로 다중 스레딩에 대해 염려할 필요가 
+android.app.IntentService#onHandleIntent onHandleIntent()} 구현에 전달하는 작업 대기열을 생성하므로 다중 스레딩에 대해 염려할 필요가
 전혀 없습니다.</li>
-  <li>시작 요청이 모두 처리된 후 서비스를 중단하므로 개발자가 
+  <li>시작 요청이 모두 처리된 후 서비스를 중단하므로 개발자가
 {@link android.app.Service#stopSelf}를 호출할 필요가 전혀 없습니다.</li>
-  <li>{@link android.app.IntentService#onBind onBind()}의 기본 구현을 제공하여 null을 
+  <li>{@link android.app.IntentService#onBind onBind()}의 기본 구현을 제공하여 null을
 반환하도록 합니다.</li>
   <li>{@link android.app.IntentService#onStartCommand
 onStartCommand()}의 기본 구현을 제공하여 인텐트를 작업 대기열에 보내고, 다음으로 {@link
@@ -301,7 +301,7 @@
 </ul>
 
 <p>이 모든 것은 결론적으로 개발자가 직접 할 일은 클라이언트가 제공한 작업을 수행할 {@link
-android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것뿐이라는 사실로 
+android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것뿐이라는 사실로
 이어집니다. (다만, 서비스에 대해 작은 생성자를 제공해야 하기도 합니다.)</p>
 
 <p>다음은 {@link android.app.IntentService}의 구현을 예시로 나타낸 것입니다.</p>
@@ -345,10 +345,10 @@
 <p>다른 콜백 메서드도 재정의하기로 결정하는 경우-예를 들어 {@link
 android.app.IntentService#onCreate onCreate()}, {@link
 android.app.IntentService#onStartCommand onStartCommand()} 또는 {@link
-android.app.IntentService#onDestroy onDestroy()}-슈퍼 구현을 꼭 호출해야 합니다. 
+android.app.IntentService#onDestroy onDestroy()}-슈퍼 구현을 꼭 호출해야 합니다.
 그래야 {@link android.app.IntentService}가 작업자 스레드의 수명을 적절하게 처리할 수 있습니다.</p>
 
-<p>예를 들어 {@link android.app.IntentService#onStartCommand onStartCommand()}는 반드시 
+<p>예를 들어 {@link android.app.IntentService#onStartCommand onStartCommand()}는 반드시
 기본 구현을 반환해야 합니다(이로써 인텐트가 {@link
 android.app.IntentService#onHandleIntent onHandleIntent()}로 전달되는 것입니다).</p>
 
@@ -360,25 +360,25 @@
 }
 </pre>
 
-<p>{@link android.app.IntentService#onHandleIntent onHandleIntent()} 외에 슈퍼 클래스를 
+<p>{@link android.app.IntentService#onHandleIntent onHandleIntent()} 외에 슈퍼 클래스를
 호출하지 않아도 되는 유일한 메서드는 {@link android.app.IntentService#onBind
 onBind()}입니다(다만 이를 구현하는 것은 서비스가 바인딩을 허용할 때에만 필요합니다).</p>
 
-<p>다음 섹션에서는 기본 {@link android.app.Service} 
-클래스를 확장할 때 같은 종류의 서비스를 구현하는 방법을 배우게 됩니다. 이때에는 코드가 훨씬 많이 필요하지만, 
+<p>다음 섹션에서는 기본 {@link android.app.Service}
+클래스를 확장할 때 같은 종류의 서비스를 구현하는 방법을 배우게 됩니다. 이때에는 코드가 훨씬 많이 필요하지만,
 동시 시작 요청을 처리해야 하는 경우 이것이 적절할 수 있습니다.</p>
 
 
 <h3 id="ExtendingService">서비스 클래스 확장하기</h3>
 
-<p>이전 섹션에서 본 것과 같이 {@link android.app.IntentService}를 사용하면 
-시작된 서비스 구현이 매우 단순해집니다. 하지만 서비스가 다중 스레딩을 
-수행해야 하는 경우(작업 대기열을 통해 시작 요청을 처리하는 대신), 그때는 
+<p>이전 섹션에서 본 것과 같이 {@link android.app.IntentService}를 사용하면
+시작된 서비스 구현이 매우 단순해집니다. 하지만 서비스가 다중 스레딩을
+수행해야 하는 경우(작업 대기열을 통해 시작 요청을 처리하는 대신), 그때는
 {@link android.app.Service} 클래스를 확장하여 각 인텐트를 처리하게 할 수 있습니다.</p>
 
 <p>비교를 위해 다음 예시의 코드를 보겠습니다. 이는 {@link
 android.app.Service} 클래스의 구현으로, 위의 예시에서 {@link
-android.app.IntentService}를 사용하여 수행한 것과 똑같은 작업을 수행합니다. 바꿔 말하면 각 시작 요청에 대해 
+android.app.IntentService}를 사용하여 수행한 것과 똑같은 작업을 수행합니다. 바꿔 말하면 각 시작 요청에 대해
 작업자 스레드를 사용하여 작업을 수행하고 한 번에 요청을 하나씩만 처리한다는 뜻입니다.</p>
 
 <pre>
@@ -455,46 +455,46 @@
 <p>보시다시피 {@link android.app.IntentService}를 사용할 때보다 훨씬 손이 많이 갑니다.</p>
 
 <p>그러나, 각 호출을 {@link android.app.Service#onStartCommand
-onStartCommand()}로 직접 처리할 수 있기 때문에 여러 개의 요청을 동시에 수행할 수 있습니다. 이 예시는 그것을 
-보여주는 것은 아니지만, 그런 작업을 원하는 경우 각 요청에 대해 새 스레드를 
+onStartCommand()}로 직접 처리할 수 있기 때문에 여러 개의 요청을 동시에 수행할 수 있습니다. 이 예시는 그것을
+보여주는 것은 아니지만, 그런 작업을 원하는 경우 각 요청에 대해 새 스레드를
 하나씩 생성한 다음 곧바로 실행하면 됩니다(이전 요청이 끝날 때까지 기다리는 대신).</p>
 
-<p>{@link android.app.Service#onStartCommand onStartCommand()} 메서드가 반드시 
-정수를 반환해야 한다는 사실을 유의하십시오. 정수는 시스템이 서비스를 중단시킨 경우 시스템이 해당 서비스를 
+<p>{@link android.app.Service#onStartCommand onStartCommand()} 메서드가 반드시
+정수를 반환해야 한다는 사실을 유의하십시오. 정수는 시스템이 서비스를 중단시킨 경우 시스템이 해당 서비스를
 계속하는 방법에 대해 설명하는 값입니다(위에서 논한 바와 같이 {@link
-android.app.IntentService}의 기본 구현이 이것을 개발자 대신 처리해줍니다. 개발자가 이를 수정할 수도 있습니다). 
-{@link android.app.Service#onStartCommand onStartCommand()}로부터의 반환 값은 반드시 
+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> 다만 전달할 
-보류 인텐트가 있는 경우는 예외입니다. 이것은 서비스가 불필요하게 실행되는 일을 피할 수 있는 가장 안전한 옵션이며, 
+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()}를 
-호출합니다. 다만 서비스를 시작할 보류 인텐트가 있는 경우만은 예외이며, 이럴 때에는 
-그러한 인텐트를 전달합니다. 이것은 명령을 실행하지는 않지만 무기한으로 실행 중이며 작업을 기다리고 있는 
+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()}를 
-호출하십시오. 모든 보류 인텐트가 차례로 전달됩니다. 이것은 즉시 재개되어야 하는 작업을 
+android.app.Service#onStartCommand onStartCommand()}를
+호출하십시오. 모든 보류 인텐트가 차례로 전달됩니다. 이것은 즉시 재개되어야 하는 작업을
 능동적으로 수행 중인 서비스(예를 들어 파일 다운로드 등)에 적합합니다.</dd>
 </dl>
-<p>이러한 반환 값에 대한 자세한 내용은 각 상수에 대해 링크로 연결된 참조 문서를 
+<p>이러한 반환 값에 대한 자세한 내용은 각 상수에 대해 링크로 연결된 참조 문서를
 확인하십시오.</p>
 
 
 
 <h3 id="StartingAService">서비스 시작</h3>
 
-<p>액티비티나 다른 구성 요소에서 서비스를 시작하려면 
+<p>액티비티나 다른 구성 요소에서 서비스를 시작하려면
 {@link android.content.Intent}를(시작할 서비스를 나타냄) {@link
 android.content.Context#startService startService()}에 전달하면 됩니다. Android 시스템이 서비스의 {@link
 android.app.Service#onStartCommand onStartCommand()} 메서드를 호출하여 여기에 {@link
@@ -510,53 +510,53 @@
 startService(intent);
 </pre>
 
-<p>{@link android.content.Context#startService startService()} 메서드가 즉시 반환되며 
+<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} 내의 서비스에 전달할 수 있습니다. 그러면 서비스가 
+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()}로의 상응하는 여러 개의 호출이라는 결과를 낳습니다. 하지만, 서비스를 중단하려면 
+<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()}를 호출하여 스스로 중단시켜야 하고, 아니면 
+<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()}로 중단하기를 요청하고 나면 시스템이 서비스를 가능한 한 빨리 
+android.content.Context#stopService stopService()}로 중단하기를 요청하고 나면 시스템이 서비스를 가능한 한 빨리
 소멸시킵니다.</p>
 
 <p>그러나, 서비스가 {@link
-android.app.Service#onStartCommand onStartCommand()}로의 요청을 동시에 여러 개 처리하기를 바라는 경우라면 시작 요청 처리를 완료한 뒤에도 
-서비스를 중단하면 안 됩니다. 그 이후 새 시작 요청을 받았을 수 있기 
-때문입니다(첫 요청 종료 시에 중단하면 두 번째 요청을 종료시킵니다). 이 문제를 
-피하려면, {@link android.app.Service#stopSelf(int)}를 사용하여 서비스를 
+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>)를 전달하게 됩니다. 여기에 중단 요청이 
+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> 서비스가 작업을 완료한 다음 애플리케이션이 
-소속 서비스를 중단할 수 있어야 한다는 점이 중요합니다. 그래야 시스템 리소스 낭비를 피하고 배터리 전력 소모를 줄일 수 있습니다. 필요한 경우 
+<p class="caution"><strong>주의:</strong> 서비스가 작업을 완료한 다음 애플리케이션이
+소속 서비스를 중단할 수 있어야 한다는 점이 중요합니다. 그래야 시스템 리소스 낭비를 피하고 배터리 전력 소모를 줄일 수 있습니다. 필요한 경우
 다른 구성 요소도 서비스를 중단시킬 수 있습니다. {@link
-android.content.Context#stopService stopService()}를 호출하면 됩니다. 서비스에 대해 바인딩을 활성화하더라도, 
+android.content.Context#stopService stopService()}를 호출하면 됩니다. 서비스에 대해 바인딩을 활성화하더라도,
 서비스가 {@link
 android.app.Service#onStartCommand onStartCommand()}로의 호출을 한 번이라도 받았으면 항상 서비스를 직접 중단시켜야 합니다.</p>
 
@@ -571,32 +571,32 @@
 (또한 보통은 구성 요소가 {@link
 android.content.Context#startService startService()}를 호출하여 서비스를 <em>시작</em>하는 것을 허용하지 않습니다).</p>
 
-<p>액티비티와 애플리케이션의 다른 구성 요소에서 서비스와 상호 작용하기를 원하는 경우 
-바인딩된 서비스를 생성해야 합니다. 아니면 애플리케이션의 기능 몇 가지를 프로세스 간 통신(IPC)을 통해 
+<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()}를 통해 
+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}의 구현이어야 하며 이를 
+<p>바인딩된 서비스를 생성하려면 가장 먼저 해야 할 일은 클라이언트가 서비스와
+통신할 수 있는 방법을 나타내는 인터페이스를 정의하는 것입니다. 서비스와 클라이언트 사이에서 쓰이는 이 인터페이스는
+반드시 {@link android.os.IBinder}의 구현이어야 하며 이를
 서비스가 {@link android.app.Service#onBind
-onBind()} 콜백 메서드에서 반환해야 합니다. 클라이언트가 {@link android.os.IBinder}를 수신하면 해당 인터페이스를 통해 서비스와 
+onBind()} 콜백 메서드에서 반환해야 합니다. 클라이언트가 {@link android.os.IBinder}를 수신하면 해당 인터페이스를 통해 서비스와
 상호 작용을 시작할 수 있습니다.</p>
 
-<p>여러 클라이언트가 서비스에 한꺼번에 바인딩될 수 있습니다. 클라이언트가 서비스와의 상호 작용을 완료하면 이는 
-{@link android.content.Context#unbindService unbindService()}를 호출하여 바인딩을 해제합니다. 서비스에 
+<p>여러 클라이언트가 서비스에 한꺼번에 바인딩될 수 있습니다. 클라이언트가 서비스와의 상호 작용을 완료하면 이는
+{@link android.content.Context#unbindService unbindService()}를 호출하여 바인딩을 해제합니다. 서비스에
 바인딩된 클라이언트가 하나도 없으면 시스템이 해당 서비스를 소멸시킵니다.</p>
 
-<p>바인딩된 서비스를 구현하는 데에는 여러 가지 방법이 있으며 그러한 구현은 시작된 서비스보다 
-훨씬 복잡합니다. 따라서 바인딩된 서비스 논의는 
+<p>바인딩된 서비스를 구현하는 데에는 여러 가지 방법이 있으며 그러한 구현은 시작된 서비스보다
+훨씬 복잡합니다. 따라서 바인딩된 서비스 논의는
 <a href="{@docRoot}guide/components/bound-services.html">바인딩된 서비스</a>에 관한 별도의 문서에서 다룹니다.</p>
 
 
@@ -605,13 +605,13 @@
 
 <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>
 
 <p>자세한 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">알림 메시지</a> 또는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 알림</a>
@@ -621,19 +621,19 @@
 
 <h2 id="Foreground">전경에서 서비스 실행하기</h2>
 
-<p>전경 서비스는 사용자가 능동적으로 인식하고 있으므로 메모리 부족 시에도 
-시스템이 중단할 후보로 고려되지 않는 서비스를 말합니다. 전경 
-서비스는 상태 표시줄에 대한 알림을 제공해야 합니다. 이것은 
-"진행 중" 제목 아래에 배치되며, 이는 곧 해당 알림은 서비스가 중단되었거나 
+<p>전경 서비스는 사용자가 능동적으로 인식하고 있으므로 메모리 부족 시에도
+시스템이 중단할 후보로 고려되지 않는 서비스를 말합니다. 전경
+서비스는 상태 표시줄에 대한 알림을 제공해야 합니다. 이것은
+"진행 중" 제목 아래에 배치되며, 이는 곧 해당 알림은 서비스가 중단되었거나
 전경에서 제거되지 않은 이상 무시할 수 없다는 뜻입니다.</p>
 
-<p>예를 들어 서비스에서 음악을 재생하는 음악 플레이어는 전경에서 
-실행되도록 설정해야 합니다. 사용자가 이것의 작동을 분명히 인식하고 있기 
-때문입니다. 상태 표시줄에 있는 알림은 현재 노래를 나타내고 
+<p>예를 들어 서비스에서 음악을 재생하는 음악 플레이어는 전경에서
+실행되도록 설정해야 합니다. 사용자가 이것의 작동을 분명히 인식하고 있기
+때문입니다. 상태 표시줄에 있는 알림은 현재 노래를 나타내고
 사용자로 하여금 음악 플레이어와 상호 작용할 액티비티를 시작하게 해줄 수도 있습니다.</p>
 
 <p>서비스가 전경에서 실행되도록 요청하려면 {@link
-android.app.Service#startForeground startForeground()}를 호출하면 됩니다. 이 메서드는 두 개의 매개변수를 취합니다. 
+android.app.Service#startForeground startForeground()}를 호출하면 됩니다. 이 메서드는 두 개의 매개변수를 취합니다.
 그 중 하나는 해당 알림을 고유하게 식별하는 정수이고 다른 하나는 상태 표시줄에 해당되는 {@link
 android.app.Notification}입니다. 예:</p>
 
@@ -652,48 +652,48 @@
 
 
 <p>서비스를 전경에서 제거하려면 {@link
-android.app.Service#stopForeground stopForeground()}를 호출하면 됩니다. 이 메서드는 부울 값을 취하며, 이것이 
+android.app.Service#stopForeground stopForeground()}를 호출하면 됩니다. 이 메서드는 부울 값을 취하며, 이것이
 상태 표시줄 알림도 제거할지 여부를 나타냅니다. 이 메서드는 서비스를 중단시키지 <em>않습니다</em>.
- 그러나, 서비스가 전경에서 실행 중인 동안 서비스를 중단시키면 
+ 그러나, 서비스가 전경에서 실행 중인 동안 서비스를 중단시키면
 알림도 마찬가지로 제거됩니다.</p>
 
-<p>알림에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 
+<p>알림에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄
 알림 생성</a>을 참조하십시오.</p>
 
 
 
 <h2 id="Lifecycle">서비스 수명 주기 관리</h2>
 
-<p>서비스의 수명 주기는 액티비티의 수명 주기보다 훨씬 간단합니다. 하지만, 서비스를 생성하고 
-소멸시키는 방법에 특히 주의를 기울여야 한다는 면에서 중요도는 이쪽이 더 높습니다. 서비스는 사용자가 모르는 채로 
+<p>서비스의 수명 주기는 액티비티의 수명 주기보다 훨씬 간단합니다. 하지만, 서비스를 생성하고
+소멸시키는 방법에 특히 주의를 기울여야 한다는 면에서 중요도는 이쪽이 더 높습니다. 서비스는 사용자가 모르는 채로
 배경에서 실행될 수 있기 때문입니다.</p>
 
-<p>서비스 수명 주기&mdash;생성되었을 때부터 소멸될 때까지&mdash;는 두 가지 서로 다른 경로를 
+<p>서비스 수명 주기&mdash;생성되었을 때부터 소멸될 때까지&mdash;는 두 가지 서로 다른 경로를
 따를 수 있습니다.</p>
 
 <ul>
 <li>시작된 서비스
   <p>서비스는 또 다른 구성 요소가 {@link
-android.content.Context#startService startService()}를 호출하면 생성됩니다. 그러면 서비스가 무기한으로 실행될 수 있으며 
+android.content.Context#startService startService()}를 호출하면 생성됩니다. 그러면 서비스가 무기한으로 실행될 수 있으며
 스스로 알아서 중단되어야 합니다. 이때 {@link
-android.app.Service#stopSelf() stopSelf()}를 호출하는 방법을 씁니다. 또 다른 구성 요소도 서비스를 중단시킬 수 
+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()}를 호출하면 됩니다. 여러 클라이언트가 같은 서비스에 
-바인딩될 수 있으며, 이 모두가 바인딩을 해제하면 시스템이 해당 서비스를 소멸시킵니다 (서비스가 스스로를 중단시키지 
+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()}로 시작된 서비스에 바인딩할 수도 있다는 뜻입니다. 예를 
+<p>이와 같은 두 가지 경로는 완전히 별개의 것은 아닙니다. 다시 말해, 이미
+{@link android.content.Context#startService startService()}로 시작된 서비스에 바인딩할 수도 있다는 뜻입니다. 예를
 들어, 배경 음악 서비스를 시작하려면 {@link android.content.Context#startService
-startService()}를 호출하되 재생할 음악을 식별하는 {@link android.content.Intent}를 사용하면 됩니다. 나중에, 
-아마도 사용자가 플레이어에 좀 더 많은 통제권을 발휘하고자 하거나 
+startService()}를 호출하되 재생할 음악을 식별하는 {@link android.content.Intent}를 사용하면 됩니다. 나중에,
+아마도 사용자가 플레이어에 좀 더 많은 통제권을 발휘하고자 하거나
 현재 노래에 대한 정보를 얻고자 할 때, 액티비티가 서비스에 바인딩될 수 있습니다. {@link
 android.content.Context#bindService bindService()}를 사용하면 됩니다. 이런 경우에는 {@link
 android.content.Context#stopService stopService()} 또는 {@link android.app.Service#stopSelf
@@ -702,8 +702,8 @@
 
 <h3 id="LifecycleCallbacks">수명 주기 콜백 구현하기</h3>
 
-<p>액티비티와 마찬가지로 서비스에도 수명 주기 콜백 메서드가 있어 이를 구현하면 서비스의 
-상태 변경 내용을 모니터링할 수 있고 적절한 시기에 작업을 수행할 수 있습니다. 다음의 골격 
+<p>액티비티와 마찬가지로 서비스에도 수명 주기 콜백 메서드가 있어 이를 구현하면 서비스의
+상태 변경 내용을 모니터링할 수 있고 적절한 시기에 작업을 수행할 수 있습니다. 다음의 골격
 서비스는 각 수명 주기 메서드를 설명한 것입니다.</p>
 
 <pre>
@@ -743,13 +743,13 @@
 }
 </pre>
 
-<p class="note"><strong>참고:</strong> 액티비티 수명 주기 콜백 메서드와는 달리 이와 같은 콜백 메서드를 구현하는 데에는 
+<p class="note"><strong>참고:</strong> 액티비티 수명 주기 콜백 메서드와는 달리 이와 같은 콜백 메서드를 구현하는 데에는
 슈퍼클래스 구현을 호출하지 <em>않아도</em> 됩니다.</p>
 
 <img src="{@docRoot}images/service_lifecycle.png" alt="" />
-<p class="img-caption"><strong>그림 2.</strong> 서비스 수명 주기입니다. 왼쪽의 다이어그램은 
+<p class="img-caption"><strong>그림 2.</strong> 서비스 수명 주기입니다. 왼쪽의 다이어그램은
 서비스가 {@link android.content.Context#startService
-startService()}로 생성된 경우의 수명 주기를 나타내며 오른쪽의 다이어그램은 서비스가 
+startService()}로 생성된 경우의 수명 주기를 나타내며 오른쪽의 다이어그램은 서비스가
 {@link android.content.Context#bindService bindService()}로 생성된 경우의 수명 주기를 나타낸 것입니다.</p>
 
 <p>이와 같은 메서드를 구현함으로써, 서비스 수명 주기의 두 가지 중첩된 루프를 모니터링할 수 있습니다. </p>
@@ -757,20 +757,20 @@
 <ul>
 <li>서비스의 <strong>수명 주기 전체</strong>는 {@link
 android.app.Service#onCreate onCreate()}가 호출된 시점과 {@link
-android.app.Service#onDestroy}가 반환된 시점 사이에 일어납니다. 액티비티와 마찬가지로 서비스는 자신의 초기 설정을 
+android.app.Service#onDestroy}가 반환된 시점 사이에 일어납니다. 액티비티와 마찬가지로 서비스는 자신의 초기 설정을
 {@link android.app.Service#onCreate onCreate()}에서 수행하며 남은 리소스를 모두 {@link
-android.app.Service#onDestroy onDestroy()}에 릴리스합니다.  예를 들어 
+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()} 메서드는 모든 서비스에 대해 호출됩니다. 이는 서비스가 
+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()}로의 호출과 함께 시작됩니다. 
+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()} 중 하나에 전달된 것입니다.
@@ -781,25 +781,25 @@
 </li>
 </ul>
 
-<p class="note"><strong>참고:</strong> 시작된 서비스를 중단하려면 
+<p class="note"><strong>참고:</strong> 시작된 서비스를 중단하려면
 {@link android.app.Service#stopSelf stopSelf()} 또는 {@link
-android.content.Context#stopService stopService()}를 호출하면 되지만, 서비스에 대한 상응하는 콜백은 
-없습니다(즉 {@code onStop()} 콜백이 없습니다). 그러므로, 서비스가 클라이언트에 바인딩되어 있지 않은 한 
+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()}로 생성된 서비스를 
+<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()}로의 호출을 받을 수 있습니다(클라이언트가 
+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>에 관한 섹션에 
+콜백 메서드에 대한 자세한 정보가 <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">바인딩된 서비스의
+수명 주기 관리</a>에 관한 섹션에
 담겨 있습니다.</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
index 6b896f9..166cedd 100644
--- 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
@@ -37,23 +37,23 @@
 </div>
 
 
-<p>하나의 애플리케이션에는 보통 여러 개의 <a href="{@docRoot}guide/components/activities.html">액티비티</a>가 들어있습니다. 각 액티비티는 
-사용자가 수행할 수 있는 특정한 종류의 작업을 중심으로 디자인되어야 하며 다른 액티비티를 
+<p>하나의 애플리케이션에는 보통 여러 개의 <a href="{@docRoot}guide/components/activities.html">액티비티</a>가 들어있습니다. 각 액티비티는
+사용자가 수행할 수 있는 특정한 종류의 작업을 중심으로 디자인되어야 하며 다른 액티비티를
 시작할 수 있는 기능이 있습니다. 예를 들어 이메일 애플리케이션에는 새 메시지 목록을 표시하는 하나의 액티비티가 있을 수 있습니다.
 사용자가 메시지를 하나 선택하면, 새 액티비티가 열려 해당 메시지를 볼 수 있게 합니다.</p>
 
-<p>액티비티는 기기에서 다른 애플리케이션에 존재하는 액티비티를 시작할 수도 있습니다. 예를 들어 
-애플리케이션이 이메일 메시지를 보내고자 하는 경우, "전송" 작업을 수행할 인텐트를 
-정의하여 이메일 주소와 메시지 등의 몇 가지 데이터를 포함시키면 됩니다. 그러면 다른 애플리케이션에서 가져온 액티비티 중 
-이러한 종류의 인텐트를 처리한다고 스스로 선언한 것이 열립니다. 이 경우, 이 인텐트는 
-이메일을 전송하기 위한 것이므로 이메일 애플리케이션의 "작성" 액티비티가 시작됩니다(같은 인텐트를 
-지원하는 액티비티가 여러 개 있는 경우, 시스템은 사용자에게 어느 것을 사용할지 선택하도록 합니다). 이메일이 전송되면 
-액티비티가 재개되고 해당 이메일 액티비티가 애플리케이션의 일부였던 것처럼 보입니다. 액티비티는 
-서로 다른 애플리케이션에서 온 것일 수 있지만, Android는 두 액티비티를 
+<p>액티비티는 기기에서 다른 애플리케이션에 존재하는 액티비티를 시작할 수도 있습니다. 예를 들어
+애플리케이션이 이메일 메시지를 보내고자 하는 경우, "전송" 작업을 수행할 인텐트를
+정의하여 이메일 주소와 메시지 등의 몇 가지 데이터를 포함시키면 됩니다. 그러면 다른 애플리케이션에서 가져온 액티비티 중
+이러한 종류의 인텐트를 처리한다고 스스로 선언한 것이 열립니다. 이 경우, 이 인텐트는
+이메일을 전송하기 위한 것이므로 이메일 애플리케이션의 "작성" 액티비티가 시작됩니다(같은 인텐트를
+지원하는 액티비티가 여러 개 있는 경우, 시스템은 사용자에게 어느 것을 사용할지 선택하도록 합니다). 이메일이 전송되면
+액티비티가 재개되고 해당 이메일 액티비티가 애플리케이션의 일부였던 것처럼 보입니다. 액티비티는
+서로 다른 애플리케이션에서 온 것일 수 있지만, Android는 두 액티비티를
 모두 같은 <em>작업</em> 안에 유지하여 이처럼 막힘 없는 사용자 환경을 유지합니다.</p>
 
-<p>작업이란 액티비티 컬렉션을 일컫는 말로, 사용자가 특정 작업을 수행할 때 이것과 
-상호 작용합니다. 액티비티는 스택 안에 정렬되며(<em>백 스택</em>), 이때 
+<p>작업이란 액티비티 컬렉션을 일컫는 말로, 사용자가 특정 작업을 수행할 때 이것과
+상호 작용합니다. 액티비티는 스택 안에 정렬되며(<em>백 스택</em>), 이때
 순서는 각 액티비티가 열린 순서와 같습니다.</p>
 
 <!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
@@ -77,40 +77,40 @@
 </div>
 -->
 
-<p>기기 메인 스크린이 대다수 작업의 시작 지점입니다. 사용자가 
-애플리케이션 
-시작 관리자에 있는 아이콘(또는 메인 스크린의 바로 가기)을 터치하면 해당 애플리케이션의 작업이 전경으로 나옵니다. 해당 애플리케이션에 대한 
-작업이 존재하지 않으면(이 애플리케이션을 최근에 사용한 적이 없는 경우), 새 작업이 생성되고 
+<p>기기 메인 스크린이 대다수 작업의 시작 지점입니다. 사용자가
+애플리케이션
+시작 관리자에 있는 아이콘(또는 메인 스크린의 바로 가기)을 터치하면 해당 애플리케이션의 작업이 전경으로 나옵니다. 해당 애플리케이션에 대한
+작업이 존재하지 않으면(이 애플리케이션을 최근에 사용한 적이 없는 경우), 새 작업이 생성되고
 해당 애플리케이션의 "기본" 액티비티가 스택에 있는 루트 액티비티로 열립니다.</p>
 
-<p>현재 액티비티가 또 다른 액티비티를 시작하는 경우, 새 액티비티가 스택의 맨 위로 밀어올려지고 
-사용자의 초점이 이에 맞춰집니다. 이전 액티비티는 스택에 유지되지만, 중단됩니다. 액티비티가 중단되면 
-시스템은 이 액티비티의 사용자 인터페이스의 현재 상태를 보존합니다. 사용자가 
+<p>현재 액티비티가 또 다른 액티비티를 시작하는 경우, 새 액티비티가 스택의 맨 위로 밀어올려지고
+사용자의 초점이 이에 맞춰집니다. 이전 액티비티는 스택에 유지되지만, 중단됩니다. 액티비티가 중단되면
+시스템은 이 액티비티의 사용자 인터페이스의 현재 상태를 보존합니다. 사용자가
 <em>뒤로</em>
- 버튼을 누르면, 현재 액티비티가 스택의 맨 위에서 튀어나오고(해당 액티비티는 소멸됩니다) 
-이전 액티비티가 재개됩니다(이것의 UI 이전 상태가 복원됩니다). 스택에 있는 액티비티는 
-결코 다시 정렬되지 않습니다. 다만 스택에서 밀어올려지거나 튀어나올 뿐입니다. 즉, 현재 액티비티에 의해 
-시작되면 스택 위로 밀어올려지고, 사용자가 <em>뒤로</em> 버튼을 사용하여 액티비티를 떠나면 튀어나와 사라지는 것입니다. 따라서, 
-백 스택은 
-일종의 "후입선출" 객체 구조로서 작동한다고 할 수 있습니다. 그림 1은 
-이 행동을 시간 표시 막대와 함께 표시하여 여러 액티비티 사이의 진행률을 보여주며, 
+ 버튼을 누르면, 현재 액티비티가 스택의 맨 위에서 튀어나오고(해당 액티비티는 소멸됩니다)
+이전 액티비티가 재개됩니다(이것의 UI 이전 상태가 복원됩니다). 스택에 있는 액티비티는
+결코 다시 정렬되지 않습니다. 다만 스택에서 밀어올려지거나 튀어나올 뿐입니다. 즉, 현재 액티비티에 의해
+시작되면 스택 위로 밀어올려지고, 사용자가 <em>뒤로</em> 버튼을 사용하여 액티비티를 떠나면 튀어나와 사라지는 것입니다. 따라서,
+백 스택은
+일종의 "후입선출" 객체 구조로서 작동한다고 할 수 있습니다. 그림 1은
+이 행동을 시간 표시 막대와 함께 표시하여 여러 액티비티 사이의 진행률을 보여주며,
 각 시점에서 현재 백 스택의 모습을 나타낸 것입니다.</p>
 
 <img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> 작업에 있는 각각의 새 액티비티가 백 스택에 항목을 추가하는 
-방법을 나타낸 것입니다. 사용자가 <em>뒤로</em> 버튼을 누르면 현재 
-액티비티가 
+<p class="img-caption"><strong>그림 1.</strong> 작업에 있는 각각의 새 액티비티가 백 스택에 항목을 추가하는
+방법을 나타낸 것입니다. 사용자가 <em>뒤로</em> 버튼을 누르면 현재
+액티비티가
 소멸되고 이전 액티비티가 재개됩니다.</p>
 
 
-<p>사용자가 계속해서 <em>뒤로</em> 버튼을 누르면, 스택에 있는 각 액티비티가 하나씩 튀어나가 
-이전 것을 
-드러내고, 마침내는 사용자가 메인 스크린으로 되돌아가게 됩니다(아니면 작업이 시작되었을 때 
+<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가 전경에서 사용자 상호 작용을 수신하는 한편, 
+class="img-caption"><strong>그림 2.</strong> 두 개의 작업: 작업 B가 전경에서 사용자 상호 작용을 수신하는 한편,
 작업 A는 배경에서 재개되기를 기다립니다.</p>
 </div>
 <div class="figure" style="width:215px">
@@ -118,39 +118,39 @@
 class="img-caption"><strong>그림 3.</strong> 하나의 액티비티가 여러 번 인스턴트화됩니다.</p>
 </div>
 
-<p>작업이란 하나의 잘 짜여진 단위로 사용자가 새 작업을 시작할 때 "배경"으로 이동할 수도 있고 
-<em>홈</em> 버튼을 통해 메인 스크린으로 이동할 수도 있습니다. 작업의 모든 액티비티는 배경에 있는 동안은 
+<p>작업이란 하나의 잘 짜여진 단위로 사용자가 새 작업을 시작할 때 "배경"으로 이동할 수도 있고
+<em>홈</em> 버튼을 통해 메인 스크린으로 이동할 수도 있습니다. 작업의 모든 액티비티는 배경에 있는 동안은
 중단되지만
-, 해당 작업에 대한 백 스택은 그대로 변함 없이 유지됩니다. 이 작업은 또 다른 작업이 발생하는 동안 
-초점을 잃을 뿐입니다(그림 2 참조). 그런 다음 작업이 "전경"으로 되돌아와 사용자가 
-이전에 하던 일을 계속할 수 있습니다. 예를 들어 현재 작업(작업 A)의 스택에 세 개의 액티비티가 있다고 
+, 해당 작업에 대한 백 스택은 그대로 변함 없이 유지됩니다. 이 작업은 또 다른 작업이 발생하는 동안
+초점을 잃을 뿐입니다(그림 2 참조). 그런 다음 작업이 "전경"으로 되돌아와 사용자가
+이전에 하던 일을 계속할 수 있습니다. 예를 들어 현재 작업(작업 A)의 스택에 세 개의 액티비티가 있다고
 가정하면 그 중 둘은 현재 액티비티 아래에 있습니다. 사용자가 <em>홈</em>
- 버튼을 누른 다음 
-애플리케이션 시작 관리자로부터 새 애플리케이션을 시작합니다. 메인 스크린이 나타나면 작업 A는 
+ 버튼을 누른 다음
+애플리케이션 시작 관리자로부터 새 애플리케이션을 시작합니다. 메인 스크린이 나타나면 작업 A는
 배경으로 이동합니다. 새 애플리케이션이 시작되면 시스템은 해당 애플리케이션에 대한 작업을 시작하며
-(작업 B) 여기에는 나름의 액티비티 스택이 딸려 있습니다. 해당 애플리케이션과 
-상호 작용한 후, 사용자는 다시 홈으로 돌아와 원래 작업 A를 시작한 
+(작업 B) 여기에는 나름의 액티비티 스택이 딸려 있습니다. 해당 애플리케이션과
+상호 작용한 후, 사용자는 다시 홈으로 돌아와 원래 작업 A를 시작한
 애플리케이션을 선택합니다. 이제 작업 A가 전경으로 옵니다.
-이 스택에 있는 액티비티 세 개는 모두 멀쩡하고, 스택 맨 위에 있는 액티비티가 
-재개됩니다. 이 시점에서 
-사용자는 작업 B로 도로 전환할 수도 있습니다. 홈으로 이동하여 해당 작업을 
-시작한 애플리케이션 아이콘을 선택하면 됩니다(아니면 
-<a href="{@docRoot}guide/components/recents.html">개요 화면</a>에서 해당 앱의 작업을 선택해도 됩니다). 
+이 스택에 있는 액티비티 세 개는 모두 멀쩡하고, 스택 맨 위에 있는 액티비티가
+재개됩니다. 이 시점에서
+사용자는 작업 B로 도로 전환할 수도 있습니다. 홈으로 이동하여 해당 작업을
+시작한 애플리케이션 아이콘을 선택하면 됩니다(아니면
+<a href="{@docRoot}guide/components/recents.html">개요 화면</a>에서 해당 앱의 작업을 선택해도 됩니다).
 이것이 Android에서 멀티태스킹을 하는 작업의 예시입니다.</p>
 
-<p class="note"><strong>참고:</strong> 여러 개의 작업을 배경에 한꺼번에 대기시킬 수 있습니다. 
-하지만, 사용자가 수많은 배경 작업을 동시에 실행하면 시스템이 메모리를 복원하기 위해 
-배경 액티비티를 소멸시키기 시작할 수 있고, 그러면 액티비티 상태가 손실됩니다. 
+<p class="note"><strong>참고:</strong> 여러 개의 작업을 배경에 한꺼번에 대기시킬 수 있습니다.
+하지만, 사용자가 수많은 배경 작업을 동시에 실행하면 시스템이 메모리를 복원하기 위해
+배경 액티비티를 소멸시키기 시작할 수 있고, 그러면 액티비티 상태가 손실됩니다.
 다음의 <a href="#ActivityState">액티비티 상태</a>에 관한 섹션을 참조하십시오.</p>
 
-<p>백 스택에 있는 액티비티는 결코 다시 정렬되지 않으므로, 애플리케이션에서 
-사용자에게 하나 이상의 액티비티로부터 특정 액티비티를 시작하도록 허용하는 경우, 해당 액티비티의 새 인스턴스가 
-생성되어 스택 위로 밀려옵니다(해당 액티비티의 기존 인스턴스를 
-맨 위로 가져오는 대신). 따라서, 애플리케이션 안의 한 액티비티가 여러 번 
-인스턴트화될 수 있으며(서로 다른 작업으로부터도 가능), 이를 나타낸 것이 그림 3입니다. 이 때문에 사용자가 
+<p>백 스택에 있는 액티비티는 결코 다시 정렬되지 않으므로, 애플리케이션에서
+사용자에게 하나 이상의 액티비티로부터 특정 액티비티를 시작하도록 허용하는 경우, 해당 액티비티의 새 인스턴스가
+생성되어 스택 위로 밀려옵니다(해당 액티비티의 기존 인스턴스를
+맨 위로 가져오는 대신). 따라서, 애플리케이션 안의 한 액티비티가 여러 번
+인스턴트화될 수 있으며(서로 다른 작업으로부터도 가능), 이를 나타낸 것이 그림 3입니다. 이 때문에 사용자가
 <em>뒤로</em> 버튼을 사용하여 뒤로 이동하는 경우, 액티비티의 각 인스턴스가 열린 순서대로 드러납니다
-(각자 나름의 
-UI 상태를 가지고). 다만, 액티비티가 한 번 이상 인스턴트화되는 것을 원치 않으면 이 행동은 수정할 수 
+(각자 나름의
+UI 상태를 가지고). 다만, 액티비티가 한 번 이상 인스턴트화되는 것을 원치 않으면 이 행동은 수정할 수
 있습니다. 그 방법에 대해서는 <a href="#ManagingTasks">작업 관리하기</a>에 관한 이후 섹션에서 이야기합니다.</p>
 
 
@@ -159,16 +159,16 @@
 <ul>
   <li>액티비티 A가 액티비티 B를 시작하면 액티비티 A는 중단되지만, 시스템이 그 상태를
 (예: 스크롤 위치 및 양식에 입력된 텍스트 등) 보존합니다.
-사용자가 액티비티 B에 있는 동안 <em>뒤로</em> 버튼을 누르면 액티비티 A가 재개되며 상태도 
+사용자가 액티비티 B에 있는 동안 <em>뒤로</em> 버튼을 누르면 액티비티 A가 재개되며 상태도
 복원됩니다.</li>
-  <li>사용자가 <em>홈</em> 버튼을 눌러 작업을 떠나면 현재 액티비티가 
-중단되고 
-그 소속 작업이 배경으로 들어갑니다. 시스템은 작업에 속한 모든 액티비티의 상태를 보존합니다. 사용자가 
-나중에 작업을 시작한 시작 관리자 아이콘을 선택하여 해당 작업을 재개하면, 그 작업이 
+  <li>사용자가 <em>홈</em> 버튼을 눌러 작업을 떠나면 현재 액티비티가
+중단되고
+그 소속 작업이 배경으로 들어갑니다. 시스템은 작업에 속한 모든 액티비티의 상태를 보존합니다. 사용자가
+나중에 작업을 시작한 시작 관리자 아이콘을 선택하여 해당 작업을 재개하면, 그 작업이
 전경으로 나오고 스택 맨 위에서 액티비티를 재개합니다.</li>
-  <li>사용자가 <em>뒤로</em> 버튼을 누르면, 현재 액티비티가 스택에서 튀어나오고 
+  <li>사용자가 <em>뒤로</em> 버튼을 누르면, 현재 액티비티가 스택에서 튀어나오고
 소멸됩니다.
- 스택에 있던 이전 액티비티가 재개됩니다. 액티비티가 소멸되면, 시스템은 그 액티비티의 상태를 
+ 스택에 있던 이전 액티비티가 재개됩니다. 액티비티가 소멸되면, 시스템은 그 액티비티의 상태를
 보존하지 <em>않습니다.</em></li>
   <li>액티비티는 여러 번 인스턴트화할 수 있으며, 다른 작업에서도 이를 수행할 수 있습니다.</li>
 </ul>
@@ -182,20 +182,20 @@
 
 <h2 id="ActivityState">액티비티 상태 저장하기</h2>
 
-<p>위에서 논한 바와 같이, 시스템의 기본 행동은 액티비티가 중단되면 그 상태를 보존해두는 
-것입니다. 이렇게 하면, 사용자가 이전 액티비티로 도로 이동했을 때 그에 속한 사용자 인터페이스가 이전 상태 
+<p>위에서 논한 바와 같이, 시스템의 기본 행동은 액티비티가 중단되면 그 상태를 보존해두는
+것입니다. 이렇게 하면, 사용자가 이전 액티비티로 도로 이동했을 때 그에 속한 사용자 인터페이스가 이전 상태
 그대로 표시됩니다. 그러나 액티비티의 상태를 미리 보존할 수도 있으며 사전에 이렇게 <strong>해야 합니다.</strong>
-이때에는, 액티비티가 소멸되고 다시 만들어야 하는 경우를 대비해 
+이때에는, 액티비티가 소멸되고 다시 만들어야 하는 경우를 대비해
 콜백 메서드를 사용합니다.</p>
 
-<p>시스템이 액티비티 중 하나를 중단시키는 경우(예를 들어 새 액티비티가 시작되었을 때 또는 작업이 
-배경으로 이동하는 경우), 시스템은 시스템 메모리를 회복해야 하는 경우 액티비티를 
-완전히 소멸시켜버릴 수도 있습니다. 이런 상황이 벌어지면, 액티비티 상태에 대한 정보는 손실됩니다. 이런 일이 벌어지더라도, 
-시스템은 여전히 
-백 스택에 해당 액티비티의 자리가 있다는 것을 알고 있습니다. 다만 액티비티가 스택 맨 위로 올라오면 
-시스템이 이를 (재개하는 것이 아니라) 재생성해야만 합니다. 사용자의 작업 내용을 
-잃어버리는 불상사를 피하려면 그 내용을 미리 보존해두어야 합니다. 이때 액티비티의 
-{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 콜백 
+<p>시스템이 액티비티 중 하나를 중단시키는 경우(예를 들어 새 액티비티가 시작되었을 때 또는 작업이
+배경으로 이동하는 경우), 시스템은 시스템 메모리를 회복해야 하는 경우 액티비티를
+완전히 소멸시켜버릴 수도 있습니다. 이런 상황이 벌어지면, 액티비티 상태에 대한 정보는 손실됩니다. 이런 일이 벌어지더라도,
+시스템은 여전히
+백 스택에 해당 액티비티의 자리가 있다는 것을 알고 있습니다. 다만 액티비티가 스택 맨 위로 올라오면
+시스템이 이를 (재개하는 것이 아니라) 재생성해야만 합니다. 사용자의 작업 내용을
+잃어버리는 불상사를 피하려면 그 내용을 미리 보존해두어야 합니다. 이때 액티비티의
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 콜백
 메서드를 구현하는 방법을 씁니다.</p>
 
 <p>액티비티 상태를 저장하는 방법에 대한 자세한 정보는 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
@@ -205,19 +205,19 @@
 
 <h2 id="ManagingTasks">작업 관리하기</h2>
 
-<p>Android가 작업과 백 스택을 관리하는 방식은 위에 설명된 바와 같고&mdash;같은 작업 안에서 
-연이어 시작된 모든 작업을 한곳에 배치하되 "후입선출" 스택에 두는 것&mdash;이 방식은 
-대부분의 애플리케이션에 아주 효과적입니다. 여러분은 액티비티가 작업과 연관된 방식이나 
-백 스택에서의 존재 방식에 대해 염려하지 않아도 됩니다. 그러나, 정상적인 동작을 인터럽트하기로 결정할 수도 
-있습니다. 애플리케이션의 액티비티 하나가 시작되면 새 작업을 시작하려 
-할 수도 있습니다(현재 작업 내에 배치되는 것 대신에). 아니면, 액티비티를 시작하면 그것의 
-기존 인스턴스 하나를 앞으로 가져오고자 할 수도 있습니다(백 스택 맨 위에서 새 인스턴스를 
-생성하는 것 대신에). 또는 백 스택에서 사용자가 작업을 떠날 때의 루트 액티비티를 제외하고 
+<p>Android가 작업과 백 스택을 관리하는 방식은 위에 설명된 바와 같고&mdash;같은 작업 안에서
+연이어 시작된 모든 작업을 한곳에 배치하되 "후입선출" 스택에 두는 것&mdash;이 방식은
+대부분의 애플리케이션에 아주 효과적입니다. 여러분은 액티비티가 작업과 연관된 방식이나
+백 스택에서의 존재 방식에 대해 염려하지 않아도 됩니다. 그러나, 정상적인 동작을 인터럽트하기로 결정할 수도
+있습니다. 애플리케이션의 액티비티 하나가 시작되면 새 작업을 시작하려
+할 수도 있습니다(현재 작업 내에 배치되는 것 대신에). 아니면, 액티비티를 시작하면 그것의
+기존 인스턴스 하나를 앞으로 가져오고자 할 수도 있습니다(백 스택 맨 위에서 새 인스턴스를
+생성하는 것 대신에). 또는 백 스택에서 사용자가 작업을 떠날 때의 루트 액티비티를 제외하고
 모든 액티비티를 지우고자 할 수도 있습니다.</p>
 
-<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">
@@ -246,170 +246,170 @@
   <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
 </ul>
 
-<p>다음 섹션에서는 이와 같은 매니페스트 속성과 인텐트 플래그를 사용하여 
+<p>다음 섹션에서는 이와 같은 매니페스트 속성과 인텐트 플래그를 사용하여
 액티비티가 작업과 연관되는 방식을 정의하고 백 스택에서 액티비티가 동작하는 방식을 정의하는 방법을 배우게 됩니다.</p>
 
-<p>이외에도 별도로 작업과 액티비티를 표시하는 방법에 대한 고려 사항과 
-개요 화면에서의 관리 방법을 논합니다. 자세한 정보는 <a href="{@docRoot}guide/components/recents.html">개요 화면</a>을 
-참조하십시오. 보통은 개요 화면에 작업과 액티비티가 어떻게 표현될지는 
+<p>이외에도 별도로 작업과 액티비티를 표시하는 방법에 대한 고려 사항과
+개요 화면에서의 관리 방법을 논합니다. 자세한 정보는 <a href="{@docRoot}guide/components/recents.html">개요 화면</a>을
+참조하십시오. 보통은 개요 화면에 작업과 액티비티가 어떻게 표현될지는
 시스템이 정의하도록 두어야 합니다. 이 동작을 개발자가 수정할 필요도 없습니다.</p>
 
-<p class="caution"><strong>주의:</strong> 대부분의 애플리케이션은 액티비티와 작업에 대한 
-기본 동작을 인터럽트하지 않는 것이 정상입니다. 액티비티가 기본 동작을 수정하는 것이 필요하다는 
-판단이 서면, 시작 과정 중에 액티비티의 유용성을 테스트하십시오. 
+<p class="caution"><strong>주의:</strong> 대부분의 애플리케이션은 액티비티와 작업에 대한
+기본 동작을 인터럽트하지 않는 것이 정상입니다. 액티비티가 기본 동작을 수정하는 것이 필요하다는
+판단이 서면, 시작 과정 중에 액티비티의 유용성을 테스트하십시오.
 또한 다른 액티비티와 작업에서 <em>뒤로</em> 버튼을 써서 해당 액티비티로 돌아올 때에도 유용성을 테스트해야 합니다.
 사용자의 예상되는 동작과 충돌할 가능성이 있는 탐색 동작을 꼭 테스트하십시오.</p>
 
 
 <h3 id="TaskLaunchModes">시작 모드 정의하기</h3>
 
-<p>시작 모드를 사용하면 액티비티의 새 인스턴스가 현재 작업과 연관된 방식을 정의할 수 있게 
+<p>시작 모드를 사용하면 액티비티의 새 인스턴스가 현재 작업과 연관된 방식을 정의할 수 있게
 해줍니다. 여러 가지 시작 모드를 두 가지 방식으로 정의할 수 있습니다.</p>
 <ul class="nolist">
   <li><a href="#ManifestForTasks">매니페스트 파일 사용하기</a>
-    <p>매니페스트 파일에서 액티비티를 선언하는 경우, 액티비티가 시작될 때 여러 작업과 어떤 식으로 
+    <p>매니페스트 파일에서 액티비티를 선언하는 경우, 액티비티가 시작될 때 여러 작업과 어떤 식으로
 연관을 맺어야 하는지 지정할 수 있습니다.</li>
   <li><a href="#IntentFlagsForTasks">인텐트 플래그 사용하기</a>
-    <p>{@link android.app.Activity#startActivity startActivity()}를 호출하는 경우 
-{@link android.content.Intent}에 플래그를 포함시켜 새 액티비티가 현재 작업과 어떻게 연관되어야 할지(또는 
+    <p>{@link android.app.Activity#startActivity startActivity()}를 호출하는 경우
+{@link android.content.Intent}에 플래그를 포함시켜 새 액티비티가 현재 작업과 어떻게 연관되어야 할지(또는
 애초에 연관을 맺을지 아닐지) 선언하도록 할 수 있습니다.</p></li>
 </ul>
 
-<p>따라서, 액티비티 A가 액티비티 B를 시작하면 액티비티 B는 자신의 매니페스트에서 
-현재 작업과 연관을 맺는 데 적당한 방식(연관을 맺어야 한다면)을 정의할 수 있고 액티비티 A 또한 
-액티비티 B가 현재 작업과 연관을 맺는 방식을 요청할 수 있습니다. 두 액티비티가 모두 액티비티 B가 작업과 
-연관되는 방식을 정의하는 경우, 액티비티 A의 요청(인텐트에 정의된 바를 따름)을 액티비티 B의 
+<p>따라서, 액티비티 A가 액티비티 B를 시작하면 액티비티 B는 자신의 매니페스트에서
+현재 작업과 연관을 맺는 데 적당한 방식(연관을 맺어야 한다면)을 정의할 수 있고 액티비티 A 또한
+액티비티 B가 현재 작업과 연관을 맺는 방식을 요청할 수 있습니다. 두 액티비티가 모두 액티비티 B가 작업과
+연관되는 방식을 정의하는 경우, 액티비티 A의 요청(인텐트에 정의된 바를 따름)을 액티비티 B의
 요청(자신의 매니페스트에서 정의)보다 우위로 인식합니다.</p>
 
-<p class="note"><strong>참고:</strong> 매니페스트 파일에 사용할 수 있는 시작 모드 중에는 
-인텐트의 플래그로 사용할 수는 없는 것도 있으며, 이와 마찬 가지로 인텐트의 플래그로 사용할 수 있는 시작 모드 중에는 
+<p class="note"><strong>참고:</strong> 매니페스트 파일에 사용할 수 있는 시작 모드 중에는
+인텐트의 플래그로 사용할 수는 없는 것도 있으며, 이와 마찬 가지로 인텐트의 플래그로 사용할 수 있는 시작 모드 중에는
 매니페스트에서 정의할 수 없는 것도 있습니다.</p>
 
 
 <h4 id="ManifestForTasks">매니페스트 파일 사용하기</h4>
 
-<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#lmode">{@code
 launchMode}</a> 속성을 사용하면 됩니다.</p>
 
 <p><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
-launchMode}</a> 속성은 액티비티가 작업 안으로 들어가며 시작되는 방법에 대한 지침을 
-나타냅니다. 
+launchMode}</a> 속성은 액티비티가 작업 안으로 들어가며 시작되는 방법에 대한 지침을
+나타냅니다.
 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>
 속성에 할당할 수 있는 시작 모드는 네 가지가 있습니다.</p>
 
 <dl>
 <dt>{@code "standard"} (기본 모드)</dt>
-  <dd>기본입니다. 시스템이 액티비티가 시작된 작업에서 액티비티의 새 인스턴스를 만들고 
-인텐트의 경로를 이것으로 지정합니다. 액티비티는 여러 번 인스턴트화될 수 있고, 
+  <dd>기본입니다. 시스템이 액티비티가 시작된 작업에서 액티비티의 새 인스턴스를 만들고
+인텐트의 경로를 이것으로 지정합니다. 액티비티는 여러 번 인스턴트화될 수 있고,
 각 인스턴스는 서로 다른 작업에 속할 수 있으며 한 작업에 여러 개의 인스턴스가 있을 수 있습니다.</dd>
 <dt>{@code "singleTop"}</dt>
-  <dd>액티비티의 인스턴스가 이미 현재 작업의 맨 위에 존재하는 경우, 시스템은 인텐트의 경로를 
+  <dd>액티비티의 인스턴스가 이미 현재 작업의 맨 위에 존재하는 경우, 시스템은 인텐트의 경로를
 해당 인스턴스로 지정합니다. 이때 액티비티의 새 인스턴스를 만들기보다는 해당 인스턴스의 {@link
-android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법을 
-통합니다. 액티비티는 여러 번 인스턴트화될 수 있고, 각 인스턴스는 서로 다른 작업에 
-속할 수 있으며 한 작업에 여러 개의 인스턴스가 있을 수 있습니다(다만 백 스택의 맨 위에 있는 
+android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법을
+통합니다. 액티비티는 여러 번 인스턴트화될 수 있고, 각 인스턴스는 서로 다른 작업에
+속할 수 있으며 한 작업에 여러 개의 인스턴스가 있을 수 있습니다(다만 백 스택의 맨 위에 있는
 액티비티가 액티비티의 기존 인스턴스가 <em>아닌</em> 경우에만 이것이 적용됩니다).
-  <p>예를 들어 어느 작업의 백 스택이 루트 액티비티 A와 액티비티 B, C, 그리고 맨 위의 액티비티 D로 
+  <p>예를 들어 어느 작업의 백 스택이 루트 액티비티 A와 액티비티 B, C, 그리고 맨 위의 액티비티 D로
 구성되어 있다고 가정합니다(이 스택은 A-B-C-D 형태를 띠며 D가 맨 위에 있습니다). 유형 D의 액티비티에 대한 인텐트가 도착합니다.
-D에 기본 {@code "standard"} 시작 모드가 있는 경우, 클래스의 새 인스턴스가 시작되고 이 스택은 
-A-B-C-D-D가 됩니다. 하지만, D의 시작 모드가 {@code "singleTop"}인 경우, D의 
+D에 기본 {@code "standard"} 시작 모드가 있는 경우, 클래스의 새 인스턴스가 시작되고 이 스택은
+A-B-C-D-D가 됩니다. 하지만, D의 시작 모드가 {@code "singleTop"}인 경우, D의
 기존 인스턴스가 해당 인텐트를 {@link
-android.app.Activity#onNewIntent onNewIntent()}를 통해 받게 됩니다. 이것이 스택의 맨 위에 있기 때문입니다. 스택은 
-계속 A-B-C-D로 유지됩니다. 그러나 유형 B의 액티비티에 대한 인텐트가 도착하는 경우, 
+android.app.Activity#onNewIntent onNewIntent()}를 통해 받게 됩니다. 이것이 스택의 맨 위에 있기 때문입니다. 스택은
+계속 A-B-C-D로 유지됩니다. 그러나 유형 B의 액티비티에 대한 인텐트가 도착하는 경우,
 B의 새 인스턴스가 스택에 추가되며 이는 액티비티의 시작 모드가 {@code "singleTop"}이더라도 무관하게 적용됩니다.</p>
-  <p class="note"><strong>참고:</strong> 어느 액티비티의 새 인스턴스가 생성되면, 
-사용자가 <em>뒤로</em> 버튼을 눌러 이전 액티비티로 되돌아갈 수 있게 됩니다. 그러나 액티비티의 기존 
-인스턴스가 
+  <p class="note"><strong>참고:</strong> 어느 액티비티의 새 인스턴스가 생성되면,
+사용자가 <em>뒤로</em> 버튼을 눌러 이전 액티비티로 되돌아갈 수 있게 됩니다. 그러나 액티비티의 기존
+인스턴스가
 새 인텐트를 처리하는 경우, 사용자가 <em>뒤로</em> 버튼을 눌러도 새 인텐트가 {@link android.app.Activity#onNewIntent
-onNewIntent()}에 도착하기 전의 액티비티 
-상태로 
+onNewIntent()}에 도착하기 전의 액티비티
+상태로
 되돌아갈 수 없습니다.</p>
 </dd>
 
 <dt>{@code "singleTask"}</dt>
   <dd>시스템이 새 작업을 만들고 새 작업의 루트에 있는 액티비티를 인스턴트화합니다.
-하지만, 액티비티의 인스턴스가 이미 별개의 작업에 존재하는 경우, 시스템은 인텐트의 경로를 
+하지만, 액티비티의 인스턴스가 이미 별개의 작업에 존재하는 경우, 시스템은 인텐트의 경로를
 기존 인스턴스로 지정합니다. 이때 새 인스턴스를 만들기보다 해당 인스턴스의 {@link
-android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법을 통합니다. 한 번에 
+android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법을 통합니다. 한 번에
 액티비티 인스턴스 한 개씩만 존재할 수 있습니다.
-  <p class="note"><strong>참고:</strong> 액티비티가 새 작업에서 시작되더라도, 
+  <p class="note"><strong>참고:</strong> 액티비티가 새 작업에서 시작되더라도,
 <em>뒤로</em> 버튼을 누르면 여전히 사용자를 이전 액티비티로 돌려보냅니다.</p></dd>
 <dt>{@code "singleInstance"}.</dt>
-  <dd>{@code "singleTask"}와 같습니다. 다만 시스템이 인스턴스를 보유하고 있는 작업 안으로 
-다른 어떤 액티비티도 시작하지 않는다는 것은 예외입니다. 액티비티는 언제나 자신의 작업의 유일무이한 구성원입니다. 
+  <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>또 다른 예로 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} 시작 모드를 나타내는 액티비티를 시작한 다음 해당 
-액티비티의 인스턴스가 이미 배경 작업에 존재하는 경우, 그 작업 전체가 전경에 불려나옵니다. 이 시점에서 
-백 스택에는 이제 앞으로 가져온 작업에서 가져온 모든 액티비티가 포함되어 있으며, 이는 스택의 
+<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 class="img-caption"><strong>그림 4.</strong> 시작 모드가 "singleTask"인 액티비티가
+백 스택에 추가되는 방법을 표현한 것입니다. 이 액티비티가 이미 자신의 백 스택을 가지고 있는
+배경 작업의 일부인 경우, 해당 백 스택도 모두 전경으로
 불려나오며, 이는 현재 작업 위에 배치됩니다.</p>
 
-<p>매니페스트 파일에서 시작 모드를 사용하는 것에 대한 자세한 정보는 
+<p>매니페스트 파일에서 시작 모드를 사용하는 것에 대한 자세한 정보는
 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
-요소 문서를 참조하십시오. 여기에서 {@code launchMode} 속성과 허용된 값을 더 자세히 
+요소 문서를 참조하십시오. 여기에서 {@code launchMode} 속성과 허용된 값을 더 자세히
 논합니다.</p>
 
-<p class="note"><strong>참고:</strong> 액티비티에 대하여 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 속성으로 지정한 동작을 
-재정의하려면 액티비티를 시작한 인텐트에 포함된 플래그를 사용하면 됩니다. 이 내용은 
+<p class="note"><strong>참고:</strong> 액티비티에 대하여 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 속성으로 지정한 동작을
+재정의하려면 액티비티를 시작한 인텐트에 포함된 플래그를 사용하면 됩니다. 이 내용은
 다음 섹션에서 논합니다.</p>
 
 
 
 <h4 id="#IntentFlagsForTasks">인텐트 플래그 사용하기</h4>
 
-<p>액티비티를 시작할 때면, 액티비티가 자신의 작업과 연관되는 기본 방식을 수정할 수 있습니다. 
+<p>액티비티를 시작할 때면, 액티비티가 자신의 작업과 연관되는 기본 방식을 수정할 수 있습니다.
 {@link
-android.app.Activity#startActivity startActivity()}에 전달한 인텐트 안에 있는 플래그를 포함시키면 됩니다. 기본 동작을 수정하는 데 사용할 수 있는 
+android.app.Activity#startActivity startActivity()}에 전달한 인텐트 안에 있는 플래그를 포함시키면 됩니다. 기본 동작을 수정하는 데 사용할 수 있는
 플래그는 다음과 같습니다.</p>
 
 <p>
   <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
-    <dd>액티비티를 새 작업에서 시작합니다. 지금 시작하고 있는 액티비티에 대해 이미 실행 중인 작업이 있으면, 
-해당 작업의 마지막 상태를 복원하여 전경으로 불려나오고 액티비티는 새 인텐트를 
+    <dd>액티비티를 새 작업에서 시작합니다. 지금 시작하고 있는 액티비티에 대해 이미 실행 중인 작업이 있으면,
+해당 작업의 마지막 상태를 복원하여 전경으로 불려나오고 액티비티는 새 인텐트를
 {@link android.app.Activity#onNewIntent onNewIntent()}에서 수신합니다.
-    <p>이렇게 하면 {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 값에서와 같은 동작을 발생시키며, 
+    <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()}에 
+    <dd>시작되고 있는 액티비티가 현재 액티비티인 경우(백 스택 맨 위에 있는), 해당 액티비티의 새 인스턴스를 생성하는 대신 기존
+인스턴스가 {@link android.app.Activity#onNewIntent onNewIntent()}에
 대한 호출을 받습니다.
-    <p>이렇게 하면 {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 값에서와 같은 동작을 발생시키며, 
+    <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>시작되고 있는 액티비티가 이미 현재 작업에서 실행 중인 경우, 해당 액티비티의 
-새 인스턴스를 시작하는 대신 그 위에 있는 모든 다른 액티비티가 
-소멸되고 이 인텐트는 해당 액티비티(이제 맨 위로 올라옴)의 재개된 인스턴스로, 
+    <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>{@code FLAG_ACTIVITY_CLEAR_TOP}는
+{@code FLAG_ACTIVITY_NEW_TASK}와 함께 쓰이는 경우가 가장 보편적입니다.
+이들 플래그를 함께 사용하면 다른 작업에 있는 기존 액티비티의 위치를
 찾아 이를 인텐트에 응답할 수 있는 위치에 놓을 한 가지 방편이 됩니다. </p>
-    <p class="note"><strong>참고:</strong> 지정된 액티비티의 시작 모드가 
-{@code "standard"}인 경우, 
-이것 또한 스택에서 제거되고 그 자리에 새 인스턴스가 대신 생성되어 수신되는 인텐트를 
-처리하게 됩니다.  이는 시작 모드가 
+    <p class="note"><strong>참고:</strong> 지정된 액티비티의 시작 모드가
+{@code "standard"}인 경우,
+이것 또한 스택에서 제거되고 그 자리에 새 인스턴스가 대신 생성되어 수신되는 인텐트를
+처리하게 됩니다.  이는 시작 모드가
 {@code "standard"}인 경우, 새 인텐트에 대해서는 항상 새 인스턴스가 생성되기 때문입니다. </p>
 </dd>
 </dl>
@@ -420,65 +420,65 @@
 
 <h3 id="Affinities">유사성 처리하기</h3>
 
-<p><em>유사성</em>이란 액티비티가 어느 작업에 소속되기를 선호하는지를 나타내는 것입니다. 기본적으로, 
-같은 애플리케이션에서 나온 액티비티는 서로 유사성을 지니고 있습니다. 따라서, 기본적으로 
-같은 애플리케이션 안에 있는 모든 액티비티는 같은 작업 안에 있는 것을 선호합니다. 하지만 액티비티에 대한 기본 유사성은 개발자가 
-수정할 수 있습니다. 각기 다른 애플리케이션에서 정의된 
-액티비티가 하나의 유사성을 공유할 수도 있고, 같은 애플리케이션에서 정의된 여러 액티비티에 
+<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> 속성을 
+요소의 <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> 요소에서 선언한 기본 패키지 이름과 달리 고유해야 합니다. 왜냐하면 시스템이 이 이름을 사용하여 애플리케이션의 기본 작업 유사성을 
+</a> 요소에서 선언한 기본 패키지 이름과 달리 고유해야 합니다. 왜냐하면 시스템이 이 이름을 사용하여 애플리케이션의 기본 작업 유사성을
 식별하기 때문입니다.</p>
 
 <p>유사성이 역할을 갖는 것은 다음과 같은 두 가지 상황에서입니다.</p>
 <ul>
-  <li>액티비티를 시작한 인텐트에 
+  <li>액티비티를 시작한 인텐트에
 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
  플래그가 들어 있는 경우.
 
-<p>새로운 액티비티는 기본적으로 
-{@link android.app.Activity#startActivity startActivity()}를 호출한 액티비티의 작업 안으로 들어가며 시작됩니다. 이것은 발신자와 같은 
-백 스택 위로 밀어내집니다.  하지만 
-{@link android.app.Activity#startActivity startActivity()}에 
+<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()}에 전달하는 인텐트에 포함시킵니다. 
-이 플래그를 사용할 수 있는 외부 엔티티가 
-호출할 수 있는 액티비티를 가지고 있는 경우, 사용자가 시작된 작업에 돌아갈 수 있는 
-방법을 따로 가지고 있어야 합니다. 예를 들어 시작 관리자 아이콘을 이용한다든지 하는 방법입니다(작업의 루트 액티비티에 
+<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>예를 들어 선택한 몇몇 도시에서 기상 상태를 예보하는 어느 액티비티가 
-여행 애플리케이션의 일부로 정의되어 있다고 가정합니다.  이것은 같은 애플리케이션에 있는 
-다른 여러 액티비티와 같은 유사성을 가지며(기본 애플리케이션 유사성) 이 속성으로 상위 재지정을 허용하기도 합니다. 
-액티비티 중 하나가 일기 예보 액티비티를 시작하면, 이는 처음에는 액티비티와 같은 작업에 
-속합니다. 하지만 여행 애플리케이션의 작업이 전경으로 불려나오면 
+  <p>예를 들어 선택한 몇몇 도시에서 기상 상태를 예보하는 어느 액티비티가
+여행 애플리케이션의 일부로 정의되어 있다고 가정합니다.  이것은 같은 애플리케이션에 있는
+다른 여러 액티비티와 같은 유사성을 가지며(기본 애플리케이션 유사성) 이 속성으로 상위 재지정을 허용하기도 합니다.
+액티비티 중 하나가 일기 예보 액티비티를 시작하면, 이는 처음에는 액티비티와 같은 작업에
+속합니다. 하지만 여행 애플리케이션의 작업이 전경으로 불려나오면
 일기 예보 액티비티는 그 작업에 다시 할당되며 그 안에 표시됩니다.</p>
 </li>
 </ul>
 
-<p class="note"><strong>팁:</strong> {@code .apk} 파일에 사용자 쪽에서 보기에 하나 이상의 "애플리케이션"이 
+<p class="note"><strong>팁:</strong> {@code .apk} 파일에 사용자 쪽에서 보기에 하나 이상의 "애플리케이션"이
 들어있는 경우, <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
 속성을 사용하여 각 "애플리케이션"과 연관된 액티비티에 서로 다른 유사성을 할당하는 것이 좋습니다.</p>
 
@@ -486,9 +486,9 @@
 
 <h3 id="Clearing">백 스택 지우기</h3>
 
-<p>사용자가 작업을 오랜 시간 동안 떠나 있으면, 시스템이 루트 액티비티만 빼고 모든 액티비티를 
-해당 작업에서 지웁니다.  사용자가 다시 작업으로 돌아오면, 루트 액티비티만 복원됩니다. 
-시스템이 이런 식으로 동작하는 것은 오랜 시간이 지난 다음에는 사용자가 전에 하던 일을 중단하고 
+<p>사용자가 작업을 오랜 시간 동안 떠나 있으면, 시스템이 루트 액티비티만 빼고 모든 액티비티를
+해당 작업에서 지웁니다.  사용자가 다시 작업으로 돌아오면, 루트 액티비티만 복원됩니다.
+시스템이 이런 식으로 동작하는 것은 오랜 시간이 지난 다음에는 사용자가 전에 하던 일을 중단하고
 새로운 일을 시작하기 위해 작업에 돌아올 가능성이 크기 때문입니다. </p>
 
 <p>이 동작을 수정하는 데 사용할 수 있는 액티비티 속성이 몇 가지 있습니다. </p>
@@ -497,27 +497,27 @@
 <dt><code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
 </dt>
-<dd>이 속성이 작업의 루트 액티비티 안에서 {@code "true"}로 설정되어 있는 경우, 
-방금 설명한 기본 동작이 일어나지 않습니다. 
+<dd>이 속성이 작업의 루트 액티비티 안에서 {@code "true"}로 설정되어 있는 경우,
+방금 설명한 기본 동작이 일어나지 않습니다.
 작업은 오랜 시간이 지난 뒤에도 자신의 스택에 있는 모든 액티비티를 유지합니다.</dd>
 
 <dt><code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
-<dd>이 속성이 작업의 루트 액티비티 안에서 {@code "true"}로 설정되어 있는 경우, 
-사용자가 작업을 떠났다가 다시 돌아올 때마다 스택을 루트 액티비티까지 
-지웁니다.  바꿔 말하면, 이것은 
+<dd>이 속성이 작업의 루트 액티비티 안에서 {@code "true"}로 설정되어 있는 경우,
+사용자가 작업을 떠났다가 다시 돌아올 때마다 스택을 루트 액티비티까지
+지웁니다.  바꿔 말하면, 이것은
 <a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
-{@code alwaysRetainTaskState}</a>와 정반대입니다. 사용자는 항상 작업의 초기 상태로 돌아오게 되며, 
+{@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>이 속성은 <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>와 같지만,
+작업 전체가 아니라
+하나의 액티비티에서 작동합니다.  이것은 루트 액티비티를 포함한 모든 액티비티가 없어지게
+하기도 합니다.  이것을 {@code "true"}로 설정하면,
+액티비티는 현재 세션에 대해서만 작업의 일부로 유지됩니다.  사용자가 작업을 떠났다가
 다시 돌아오면 이 작업은 더 이상 존재하지 않습니다.</dd>
 </dl>
 
@@ -526,9 +526,9 @@
 
 <h3 id="Starting">작업 시작하기</h3>
 
-<p>액티비티를 작업의 진입 지점으로 설정하려면 여기에 작업에서 지정한 대로 
-{@code "android.intent.action.MAIN"}이 있는 인텐트 필터를 부여하고 
-{@code "android.intent.category.LAUNCHER"}를 
+<p>액티비티를 작업의 진입 지점으로 설정하려면 여기에 작업에서 지정한 대로
+{@code "android.intent.action.MAIN"}이 있는 인텐트 필터를 부여하고
+{@code "android.intent.category.LAUNCHER"}를
 지정된 카테고리로 설정하면 됩니다. 예:</p>
 
 <pre>
@@ -541,29 +541,29 @@
 &lt;/activity&gt;
 </pre>
 
-<p>이런 종류의 인텐트 필터를 사용하면 액티비티에 대한 아이콘과 레이블이 
-애플리케이션 시작 관리자에 표시되어 사용자에게 액티비티를 시작할 방법을 부여하며, 
+<p>이런 종류의 인텐트 필터를 사용하면 액티비티에 대한 아이콘과 레이블이
+애플리케이션 시작 관리자에 표시되어 사용자에게 액티비티를 시작할 방법을 부여하며,
 액티비티를 시작하고 나면 이것이 생성한 작업에 언제든 돌아올 수 있게 됩니다.
 </p>
 
-<p>이 두 번째 능력이 중요합니다. 사용자는 작업을 떠났다가 이 액티비티 시작 관리자를 사용하여 나중에 작업에 
+<p>이 두 번째 능력이 중요합니다. 사용자는 작업을 떠났다가 이 액티비티 시작 관리자를 사용하여 나중에 작업에
 돌아올 수 있어야 합니다. 이러한 이유로, 액티비티가 항상 작업을 시작하는 것으로 표시하는 <a href="#LaunchModes">시작
-모드</a> 두 가지, 즉 {@code "singleTask"}와 
-{@code "singleInstance"}는 액티비티에 
+모드</a> 두 가지, 즉 {@code "singleTask"}와
+{@code "singleInstance"}는 액티비티에
 {@link android.content.Intent#ACTION_MAIN}
- 및 {@link android.content.Intent#CATEGORY_LAUNCHER} 필터가 있을 때에만 사용해야 합니다. 예를 들어 필터가 누락되면 다음과 같은 일이 
-발생합니다. 어느 인텐트가 {@code "singleTask"} 액티비티를 시작하여 새 작업을 시작하고, 
+ 및 {@link android.content.Intent#CATEGORY_LAUNCHER} 필터가 있을 때에만 사용해야 합니다. 예를 들어 필터가 누락되면 다음과 같은 일이
+발생합니다. 어느 인텐트가 {@code "singleTask"} 액티비티를 시작하여 새 작업을 시작하고,
 사용자가 이 작업에서 일하며 어느 정도 시간을 보냅니다. 그런 다음 사용자가 <em>홈</em>
- 버튼을 누릅니다. 이제 이 작업은 배경으로 전송되었으며 눈에 보이지 않습니다. 이제 사용자가 작업으로 되돌아갈 
+ 버튼을 누릅니다. 이제 이 작업은 배경으로 전송되었으며 눈에 보이지 않습니다. 이제 사용자가 작업으로 되돌아갈
 방법이 없어졌습니다. 이는 애플리케이션 시작 관리자에 표시되지 않기 때문입니다.</p>
 
-<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>작업과 액티비티가 개요 화면에서 어떻게 표시되고 관리되는지에 대한 
+<p>작업과 액티비티가 개요 화면에서 어떻게 표시되고 관리되는지에 대한
 자세한 정보는 <a href="{@docRoot}guide/components/recents.html">
 개요 화면</a>에서 확인하실 수 있습니다.</p>
 
diff --git a/docs/html-intl/intl/ko/guide/index.jd b/docs/html-intl/intl/ko/guide/index.jd
index 73af3df..debd053 100644
--- a/docs/html-intl/intl/ko/guide/index.jd
+++ b/docs/html-intl/intl/ko/guide/index.jd
@@ -4,16 +4,16 @@
 
 
 <div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
-<p>앱의 작동 원리를 배워보고자 한다면, 우선 
+<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 언어 환경에서 실행되는 
-모바일 기기에서 사용할 혁신적인 앱과 게임을 구축할 수 있습니다. 왼쪽 탐색 영역에 목록으로 나열된 
+<p>Android는 풍성한 애플리케이션 프레임워크를 제공하여 Java 언어 환경에서 실행되는
+모바일 기기에서 사용할 혁신적인 앱과 게임을 구축할 수 있습니다. 왼쪽 탐색 영역에 목록으로 나열된
 여러 문서에서 Android의 다양한 API를 사용하여 앱을 구축하는 방법에 대한 상세한 정보를 제공합니다.</p>
 
-<p>Android 개발을 처음 시도하신다면, 다음과 같은 
+<p>Android 개발을 처음 시도하신다면, 다음과 같은
 Android 앱 프레임워크 기본 개념을 숙지하는 것이 중요합니다.</p>
 
 
@@ -23,14 +23,14 @@
 
 <h4>앱은 여러 개의 진입 지점을 제공합니다.</h4>
 
-<p>Android 앱은 여러 가지 고유한 구성 요소들의 조합으로 구축되며, 이러한 구성 요소는 개별적으로 
-호출할 수도 있습니다. 예를 들어 어떤 하나의 <em>액티비티</em>가 사용자 인터페이스를 위한 
-화면을 하나 제공하고, <em>서비스</em>가 배경에서 독립적으로 작업을 수행할 
+<p>Android 앱은 여러 가지 고유한 구성 요소들의 조합으로 구축되며, 이러한 구성 요소는 개별적으로
+호출할 수도 있습니다. 예를 들어 어떤 하나의 <em>액티비티</em>가 사용자 인터페이스를 위한
+화면을 하나 제공하고, <em>서비스</em>가 배경에서 독립적으로 작업을 수행할
 수 있습니다.</p>
 
-<p>한 구성 요소에서 또 다른 구성 요소를 시작하려면 <em>인텐트</em>를 사용하면 됩니다. 심지어 다른 앱에서도 
-구성 요소를 시작할 수 있습니다. 지도 앱에서 주소를 표시하는 액티비티를 시작하는 것이 좋은 예입니다. 이 모델은 
-하나의 앱에 대한 여러 개의 진입 지점을 제공하여 어느 앱이라도 다른 여러 앱이 호출할 수 있는 작업에 대해 
+<p>한 구성 요소에서 또 다른 구성 요소를 시작하려면 <em>인텐트</em>를 사용하면 됩니다. 심지어 다른 앱에서도
+구성 요소를 시작할 수 있습니다. 지도 앱에서 주소를 표시하는 액티비티를 시작하는 것이 좋은 예입니다. 이 모델은
+하나의 앱에 대한 여러 개의 진입 지점을 제공하여 어느 앱이라도 다른 여러 앱이 호출할 수 있는 작업에 대해
 사용자의 "기본" 앱 역할을 합니다.</p>
 
 
@@ -48,14 +48,14 @@
 
 <h4>앱은 여러 가지 기기에 맞게 변경됩니다.</h4>
 
-<p>Android는 적응형 앱 프레임워크를 제공하여 여러 가지 기기 구성에 맞게 
-고유한 리소스를 제공할 수 있습니다. 예를 들어, 여러 가지 화면 크기에 맞춰 각기 다른 XML 
-레이아웃 파일을 생성하면 시스템이 현재 기기의 화면 크기를 근거로 
+<p>Android는 적응형 앱 프레임워크를 제공하여 여러 가지 기기 구성에 맞게
+고유한 리소스를 제공할 수 있습니다. 예를 들어, 여러 가지 화면 크기에 맞춰 각기 다른 XML
+레이아웃 파일을 생성하면 시스템이 현재 기기의 화면 크기를 근거로
 어느 레이아웃을 적용할지 결정합니다.</p>
 
-<p>앱 기능이 특정한 하드웨어(예: 카메라)를 필요로 하는 경우 런타임에 
-기기 특징의 기능을 쿼리할 수 있습니다. 필요하다면 앱이 필요로 하는 기능을 선언할 수도 있습니다. 
-그러면 Google Play Store와 같은 앱 마켓에서 해당 기능을 지원하지 않는 기기에서 
+<p>앱 기능이 특정한 하드웨어(예: 카메라)를 필요로 하는 경우 런타임에
+기기 특징의 기능을 쿼리할 수 있습니다. 필요하다면 앱이 필요로 하는 기능을 선언할 수도 있습니다.
+그러면 Google Play Store와 같은 앱 마켓에서 해당 기능을 지원하지 않는 기기에서
 설치를 허용하지 않습니다.</p>
 
 
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
index c3550d0..2f397c7 100644
--- a/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
@@ -20,38 +20,38 @@
 </div>
 
 <p>
-  모든 애플리케이션에는 루트 라이브러리에 AndroidManifest.xml 파일(정확히 
-이 이름으로)이 있어야 합니다. <span itemprop="description">매니페스트 파일은 
-Android 시스템에 대한 여러분의 앱 관련 필수 정보를 나타냅니다. 
-즉 앱의 코드를 실행하기 전에 시스템이 반드시 필요로 하는 정보를 
+  모든 애플리케이션에는 루트 라이브러리에 AndroidManifest.xml 파일(정확히
+이 이름으로)이 있어야 합니다. <span itemprop="description">매니페스트 파일은
+Android 시스템에 대한 여러분의 앱 관련 필수 정보를 나타냅니다.
+즉 앱의 코드를 실행하기 전에 시스템이 반드시 필요로 하는 정보를
 말합니다.</span> 매니페스트가 하는 일에는 여러 가지가 있지만, 그 중에서 몇 가지만 소개하면 다음과 같습니다.
 </p>
 
 <ul>
-<li>애플리케이션에 대한 Java 패키지의 이름을 나타냅니다. 
+<li>애플리케이션에 대한 Java 패키지의 이름을 나타냅니다.
 패키지 이름이 애플리케이션에 대한 고유한 식별자 역할을 합니다.</li>
 
-<li>애플리케이션의 구성 요소를 설명합니다. 액티비티, 
-서비스, 브로드캐스트 수신기 및 콘텐츠 제공자 등 애플리케이션을 이루는 여러 항목을 
-말합니다.  이것은 각 구성 요소를 구현하는 클래스의 이름을 나타내고 
-각각의 기능을 게시합니다(예를 들어 처리할 수 있는 {@link android.content.Intent 
-Intent} 메시지 종류 등).  이러한 선언을 통해 Android 시스템이 여러 구성 요소가 
+<li>애플리케이션의 구성 요소를 설명합니다. 액티비티,
+서비스, 브로드캐스트 수신기 및 콘텐츠 제공자 등 애플리케이션을 이루는 여러 항목을
+말합니다.  이것은 각 구성 요소를 구현하는 클래스의 이름을 나타내고
+각각의 기능을 게시합니다(예를 들어 처리할 수 있는 {@link android.content.Intent
+Intent} 메시지 종류 등).  이러한 선언을 통해 Android 시스템이 여러 구성 요소가
 각각 무엇인지 알게 되고, 어떤 조건에서 시작해야 하는지 알 수 있습니다.</li>
 
-<li>어느 프로세스가 애플리케이션 구성 요소를 호스팅할 것인지 결정합니다.</li>  
+<li>어느 프로세스가 애플리케이션 구성 요소를 호스팅할 것인지 결정합니다.</li>
 
-<li>API의 보호된 부분에 액세스하여 다른 애플리케이션과 상호 작용하려면 
-애플리케이션에 어느 권한이 꼭 필요한지 선언합니다.</li>  
+<li>API의 보호된 부분에 액세스하여 다른 애플리케이션과 상호 작용하려면
+애플리케이션에 어느 권한이 꼭 필요한지 선언합니다.</li>
 
-<li>또한, 이 애플리케이션의 구성 요소와 상호 작용하려면 다른 애플리케이션이 
+<li>또한, 이 애플리케이션의 구성 요소와 상호 작용하려면 다른 애플리케이션이
 반드시 가지고 있어야 하는 권한도 선언합니다.</li>
 
-<li>이는 애플리케이션이 실행 중일 때 프로파일링과 기타 정보를 제공하는 
-{@link android.app.Instrumentation} 클래스를 목록으로 표시합니다.  이러한 선언이 매니페스트에 나타나는 것은 
-애플리케이션이 개발 중이고 테스트되는 단계에만 국한됩니다. 
+<li>이는 애플리케이션이 실행 중일 때 프로파일링과 기타 정보를 제공하는
+{@link android.app.Instrumentation} 클래스를 목록으로 표시합니다.  이러한 선언이 매니페스트에 나타나는 것은
+애플리케이션이 개발 중이고 테스트되는 단계에만 국한됩니다.
 이들은 애플리케이션이 게시되기 전에 제거됩니다.</li>
 
-<li>이는 애플리케이션이 필요로 하는 Android API의 최소 레벨을 
+<li>이는 애플리케이션이 필요로 하는 Android API의 최소 레벨을
 선언합니다.</li>
 
 <li>애플리케이션이 연결되어야 하는 라이브러리를 목록으로 표시합니다.</li>
@@ -61,12 +61,12 @@
 <h2 id="filestruct">매니페스트 파일의 구조</h2>
 
 <p>
-아래의 다이어그램은 매니페스트 파일의 일반적인 구조와 매니페스트 파일에 
-들어있을 수 있는 모든 요소를 표시한 것입니다.  각 요소와 각각의 속성을 모두 문서화한 
-전문은 별도의 파일에서 확인하실 수 있습니다.  어떤 요소에 대해서든 
-상세한 정보를 보려면 다이어그램에서 해당 요소 이름을 클릭하십시오. 
-이름은 다이어그램 뒤에 나오는 요소 목록(알파벳 순) 또는 
-요소 이름이 언급되는 기타 영역 어디서든 클릭할 수 있습니다. 
+아래의 다이어그램은 매니페스트 파일의 일반적인 구조와 매니페스트 파일에
+들어있을 수 있는 모든 요소를 표시한 것입니다.  각 요소와 각각의 속성을 모두 문서화한
+전문은 별도의 파일에서 확인하실 수 있습니다.  어떤 요소에 대해서든
+상세한 정보를 보려면 다이어그램에서 해당 요소 이름을 클릭하십시오.
+이름은 다이어그램 뒤에 나오는 요소 목록(알파벳 순) 또는
+요소 이름이 언급되는 기타 영역 어디서든 클릭할 수 있습니다.
 </p>
 
 <pre>
@@ -126,9 +126,9 @@
 </pre>
 
 <p>
-매니페스트 파일에 표시될 수 있는 모든 요소는 아래에 알파벳 순서로 
-목록으로 표시되어 있습니다.  합법적인 요소는 이들이 전부입니다. 개발자 나름대로 요소 또는 속성을 
-추가해서는 안 됩니다.  
+매니페스트 파일에 표시될 수 있는 모든 요소는 아래에 알파벳 순서로
+목록으로 표시되어 있습니다.  합법적인 요소는 이들이 전부입니다. 개발자 나름대로 요소 또는 속성을
+추가해서는 안 됩니다.
 </p>
 
 <p style="margin-left: 2em">
@@ -158,74 +158,74 @@
 </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> 요소뿐으로, 
-이들은 각기 따로 표시되어야 하며 한 번씩만 발생할 수 있습니다.  
-나머지는 대부분 여러 번 발생할 수 있거나 전혀 발생하지 않기도 합니다. 다만, 
-그 중 최소한 몇몇은 있어야 매니페스트가 무엇이든 의미 있는 작업을 
+<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-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>의 별칭이므로 
+요소는 예외입니다.  이것은
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>의 별칭이므로
 이를 반드시 따라야 합니다).
 </p></dd>
 
 <dt><b>속성</b></dt>
-<dd>공식적인 의미에서 모든 속성은 선택 항목입니다.  그러나, 요소가 목적을 달성하기 
-위해서 반드시 지정되어야 하는 것이 몇 가지 있습니다.  관련 문서를 
-지침으로 사용하십시오.  정말로 선택적인 속성의 경우, 기본 값을 언급하거나 
+<dd>공식적인 의미에서 모든 속성은 선택 항목입니다.  그러나, 요소가 목적을 달성하기
+위해서 반드시 지정되어야 하는 것이 몇 가지 있습니다.  관련 문서를
+지침으로 사용하십시오.  정말로 선택적인 속성의 경우, 기본 값을 언급하거나
 사양이 없으면 어떤 일이 벌어지는지 진술합니다.
 
-<p>루트 
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+<p>루트
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
 요소의 몇 가지 속성을 제외하고 모든 속성 이름은 {@code android:alwaysRetainTaskState} 접두사로 시작합니다.
-예를 들어, {@code android:}와 같습니다.  이 접두사는 범용이기 때문에 
-속성을 이름으로 참조하는 경우 관련 문서가 이를 생략하는 경우가 
+예를 들어, {@code android:}와 같습니다.  이 접두사는 범용이기 때문에
+속성을 이름으로 참조하는 경우 관련 문서가 이를 생략하는 경우가
 일반적입니다.</p></dd>
 
 <dt><b>클래스 이름 선언</b></dt>
-<dd>대다수의 요소가 Java 객체에 상응합니다. 여기에는 
+<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/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/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/receiver-element.html">&lt;receiver&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/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.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver} 및 {@link android.content.ContentProvider})는 거의 항상 이렇게 하게 되는데,
+이때 하위 클래스는 {@code name} 속성을 통해 선언됩니다.  이 이름에 반드시
+완전한 패키지 지정이 포함되어 있어야 합니다.
 예를 들어, {@link android.app.Service} 하위 클래스를 선언하려면 다음과 같이 할 수 있습니다.
 </p>
 
@@ -239,12 +239,12 @@
 &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> 
-속성에서 지정한 바와 같이).  다음 할당은 위의 것과 같습니다. 
+<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;
@@ -257,13 +257,13 @@
 &lt;/manifest&gt;</pre>
 
 <p>
-Android는 구성 요소를 시작할 때 이름이 명명된 하위 클래스의 인스턴스를 생성합니다.  
+Android는 구성 요소를 시작할 때 이름이 명명된 하위 클래스의 인스턴스를 생성합니다.
 하위 클래스가 지정되지 않은 경우, 기본 클래스의 인스턴스를 생성합니다.
 </p></dd>
 
 <dt><b>여러 개의 값</b></dt>
-<dd>하나 이상의 값을 지정할 수 있는 경우, 해당 요소는 
-한 요소 안에 여러 개의 값을 목록으로 표시하기보다 거의 항상 반복됩니다.  
+<dd>하나 이상의 값을 지정할 수 있는 경우, 해당 요소는
+한 요소 안에 여러 개의 값을 목록으로 표시하기보다 거의 항상 반복됩니다.
 예를 들어 한 인텐트 필터가 여러 개의 작업을 목록으로 표시할 수 있습니다.
 
 <pre>&lt;intent-filter . . . &gt;
@@ -274,9 +274,9 @@
 &lt;/intent-filter&gt;</pre></dd>
 
 <dt><b>리소스 값</b></dt>
-<dd>몇몇 속성에는 사용자에게 표시될 수 있는 값이 있습니다. 예를 들어 
-액티비티에 대한 레이블과 아이콘 등이 이에 해당됩니다.  이러한 속성의 값은 
-지역화해야 하며 따라서 리소스나 테마에서 설정됩니다.  리소스 
+<dd>몇몇 속성에는 사용자에게 표시될 수 있는 값이 있습니다. 예를 들어
+액티비티에 대한 레이블과 아이콘 등이 이에 해당됩니다.  이러한 속성의 값은
+지역화해야 하며 따라서 리소스나 테마에서 설정됩니다.  리소스
 값은 다음과 같은 형식으로 표현됩니다.</p>
 
 <p style="margin-left: 2em">{@code @[<i>패키지</i>:]<i>유형</i>:<i>이름</i>}</p>
@@ -284,7 +284,7 @@
 <p>
 여기에서 <i>패키지</i> 이름은 리소스가 애플리케이션과 같은 패키지에 있으면 생략할 수 있고,
  <i>유형</i> 은 "문자열" 또는 "그릴 수 있음" 같은 리소스 유형입니다. 그리고
- <i>이름</i> 은 특정 리소스를 식별하는 이름입니다.  
+ <i>이름</i> 은 특정 리소스를 식별하는 이름입니다.
 예:
 </p>
 
@@ -299,8 +299,8 @@
 </p></dd>
 
 <dt><b>문자열 값</b></dt>
-<dd>속성 값이 문자열인 경우, 이중 백슬래시('{@code \\}')를 사용하여 
-문자 이스케이프를 수행해야 합니다. 예를 들어 줄바꿈에는 {@code \\n}, 
+<dd>속성 값이 문자열인 경우, 이중 백슬래시('{@code \\}')를 사용하여
+문자 이스케이프를 수행해야 합니다. 예를 들어 줄바꿈에는 {@code \\n},
 유니코드 문자에는 '{@code \\uxxxx}'를 쓰십시오.</dd>
 </dl>
 
@@ -308,7 +308,7 @@
 <h2 id="filef">파일 기능</h2>
 
 <p>
-다음 섹션에서는 Android 기능을 매니페스트 파일에 반영하는 
+다음 섹션에서는 Android 기능을 매니페스트 파일에 반영하는
 몇 가지 방식을 설명합니다.
 </p>
 
@@ -316,37 +316,37 @@
 <h3 id="ifs">인텐트 필터</h3>
 
 <p>
-애플리케이션의 핵심 구성 요소(액티비티, 서비스 및 브로드캐스트 
-수신기)를 활성화하는 것은 <i>인텐트</i>입니다.  인텐트는 
+애플리케이션의 핵심 구성 요소(액티비티, 서비스 및 브로드캐스트
+수신기)를 활성화하는 것은 <i>인텐트</i>입니다.  인텐트는
 원하는 작업을 설명하는 정보 묶음입니다({@link android.content.Intent} 객체).
-여기에는 작업을 수행할 데이터, 작업을 수행할 구성 요소의 카테고리와 
-기타 관련 지침 등이 포함됩니다.  
-Android는 인텐트에 응답할 적절한 구성 요소를 찾아 필요한 경우 구성 요소의 
-새 인스턴스를 시작하고, 이것을 인텐트 객체에 
+여기에는 작업을 수행할 데이터, 작업을 수행할 구성 요소의 카테고리와
+기타 관련 지침 등이 포함됩니다.
+Android는 인텐트에 응답할 적절한 구성 요소를 찾아 필요한 경우 구성 요소의
+새 인스턴스를 시작하고, 이것을 인텐트 객체에
 전달합니다.
 </p>
 
 <p>
-구성 요소는 자신의 능력을 알립니다. 즉, 자신이 응답할 수 있는 
-인텐트 종류를 밝힙니다. 이때 사용하는 것이 <i>인텐트 필터</i>입니다.  Android 시스템은 
-구성 요소를 시작하기 전에 해당 구성 요소가 처리할 수 있는 인텐트에 대해 학습해야 하기 때문에, 
-인텐트 필터는 매니페스트 파일에 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
-요소로 지정됩니다.  구성 요소 하나에 필터는 얼마든지 있을 수 있으며, 각각 서로 다른 기능을 
+구성 요소는 자신의 능력을 알립니다. 즉, 자신이 응답할 수 있는
+인텐트 종류를 밝힙니다. 이때 사용하는 것이 <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 href="{@docRoot}guide/components/intents-filters.html">인텐트
 및 인텐트 필터</a>를 참조하십시오.
 </p>
 
@@ -354,42 +354,42 @@
 <h3 id="iconlabel">아이콘 및 레이블</h3>
 
 <p>
-대다수의 요소에 {@code icon}과 {@code label} 속성이 있으며 
-이것으로 사용자에게 표시될 수 있는 작은 아이콘과 텍스트 레이블을 나타냅니다.  몇몇 요소에는 
-{@code description} 속성도 있어 좀 더 긴 설명 텍스트를 나타낼 수 있고, 이것 또한 화면에 
-표시될 수 있습니다.  예를 들어 
+대다수의 요소에 {@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> 
-요소가 레이블을 설정하지만 액티비티와 그 인텐트 필터는 이를 설정하지 않는 경우, 
-애플리케이션 레이블을 액티비티와 인텐트 필터 양쪽 모두의 레이블인 것으로 
+어떤 경우에든, 요소에서 설정된 아이콘과 레이블이 해당 컨테이너의 모든 하위 요소에 대한 기본
+{@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}"가 설정된 필터는 
-액티비티를 애플리케이션을 초기화하는 주역으로 알립니다. 다시 말해, 
-애플리케이션 시작 관리자에 표시되어야 하는 것이 됩니다.  따라서 필터에서 설정된 아이콘과 레이블이 
+인텐트 필터에 대해 설정된 아이콘과 레이블은 구성 요소가 사용자에게
+표시될 때마다 구성 요소를 나타내는 데 사용되며, 이는 필터가 알린 기능을
+충족하는 것입니다.  예를 들어
+"{@code android.intent.action.MAIN}" 및
+"{@code android.intent.category.LAUNCHER}"가 설정된 필터는
+액티비티를 애플리케이션을 초기화하는 주역으로 알립니다. 다시 말해,
+애플리케이션 시작 관리자에 표시되어야 하는 것이 됩니다.  따라서 필터에서 설정된 아이콘과 레이블이
 시작 관리자에 표시되는 아이콘과 레이블입니다.
 </p>
 
@@ -397,14 +397,14 @@
 <h3 id="perms">권한</h3>
 
 <p>
-통상 <i>권한</i> 이란 기기에서 코드의 일부분 또는 데이터에 대한 액세스를 한정하는 
-제한입니다.   이런 한계를 부과하는 것은 중요한 데이터와 코드를 보호하여 
-이들이 남용되어서 사용자 환경을 왜곡하거나 손상시키지 않도록 하기 위해서입니다.  
+통상 <i>권한</i> 이란 기기에서 코드의 일부분 또는 데이터에 대한 액세스를 한정하는
+제한입니다.   이런 한계를 부과하는 것은 중요한 데이터와 코드를 보호하여
+이들이 남용되어서 사용자 환경을 왜곡하거나 손상시키지 않도록 하기 위해서입니다.
 </p>
 
 <p>
-각 권한은 고유한 레이블로 식별할 수 있습니다.  레이블을 보면 자신이 어떤 작업을 제한하는지 
-나타내는 경우가 잦습니다.  예를 들어 다음은 Android가 정의하는 몇 가지 권한을 나타낸 
+각 권한은 고유한 레이블로 식별할 수 있습니다.  레이블을 보면 자신이 어떤 작업을 제한하는지
+나타내는 경우가 잦습니다.  예를 들어 다음은 Android가 정의하는 몇 가지 권한을 나타낸
 것입니다.
 </p>
 
@@ -418,26 +418,26 @@
 </p>
 
 <p>
-애플리케이션에서 권한으로 보호하는 기능에 액세스해야 하는 경우, 
-해당 권한이 필요하다고 매니페스트의 
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
-요소로 선언해야 합니다.  그런 다음, 해당 애플리케이션이 기기에 설치되고 나면 
-설치 관리자가 요청한 권한을 허가할지 여부를 판별합니다. 
-이때 애플리케이션의 인증서를 서명한 권한을 확인하고 어떤 경우에는 사용자에게 
-묻기도 합니다.  
-권한이 허가되면 해당 애플리케이션은 보호된 기능을 사용할 수 
-있습니다.  허가되지 않으면, 그러한 기능에 액세스하려는 애플리케이션의 시도가 단순히 실패하고 사용자에게는 
-아무런 알림도 표시되지 않습니다. 
+애플리케이션에서 권한으로 보호하는 기능에 액세스해야 하는 경우,
+해당 권한이 필요하다고 매니페스트의
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+요소로 선언해야 합니다.  그런 다음, 해당 애플리케이션이 기기에 설치되고 나면
+설치 관리자가 요청한 권한을 허가할지 여부를 판별합니다.
+이때 애플리케이션의 인증서를 서명한 권한을 확인하고 어떤 경우에는 사용자에게
+묻기도 합니다.
+권한이 허가되면 해당 애플리케이션은 보호된 기능을 사용할 수
+있습니다.  허가되지 않으면, 그러한 기능에 액세스하려는 애플리케이션의 시도가 단순히 실패하고 사용자에게는
+아무런 알림도 표시되지 않습니다.
 </p>
 
 <p>
-애플리케이션은 권한을 사용하여 자신의 구성 요소를(액티비티, 서비스, 
-브로드캐스트 수신기 및 콘텐츠 제공자) 보호할 수도 있습니다.  Android가 정의한 
+애플리케이션은 권한을 사용하여 자신의 구성 요소를(액티비티, 서비스,
+브로드캐스트 수신기 및 콘텐츠 제공자) 보호할 수도 있습니다.  Android가 정의한
 권한이라면 어떤 것이든 사용할 수 있고(
-{@link android.Manifest.permission android.Manifest.permission}에 목록으로 나열), 
-아니면 다른 애플리케이션이 선언한 권한을 사용해도 됩니다.  아예 직접 자신만의 권한을 정의해도 됩니다.  새 권한을 선언할 때에는 
+{@link android.Manifest.permission android.Manifest.permission}에 목록으로 나열),
+아니면 다른 애플리케이션이 선언한 권한을 사용해도 됩니다.  아예 직접 자신만의 권한을 정의해도 됩니다.  새 권한을 선언할 때에는
 
-<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">&lt;permission&gt;</a></code>
 요소를 사용합니다.  예를 들어 액티비티를 보호하려면 다음과 같이 하면 됩니다.
 </p>
 
@@ -457,43 +457,43 @@
 </pre>
 
 <p>
-이 예시에서는 {@code DEBIT_ACCT} 권한이 
+이 예시에서는 {@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> 
-요소로 요청되었다는 점을 눈여겨 보십시오.  이것의 사용을 요청해야 애플리케이션의 다른 구성 요소가 보호된 
-액티비티를 시작할 수 있습니다. 이는 해당 보호를 애플리케이션 자신이 부과한 것이더라도 
-관계 없이 적용됩니다.  
+<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 permission} 속성이 다른 곳에서
 선언한 권한에 설정된 경우
-(예: {@code android.permission.CALL_EMERGENCY_NUMBERS}), 이것을 
+(예: {@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>로 요청해야 합니다. 
+<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-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-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> 
+<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>
 
@@ -501,17 +501,17 @@
 <h3 id="libs">라이브러리</h3>
 
 <p>
-모든 애플리케이션은 기본 Android 라이브러리에 연결되어 있습니다. 여기에는 
-애플리케이션 구축을 위한 기본적인 패키지(액티비티, 서비스, 
-인텐트, 보기, 버튼, 애플리케이션, ContentProvider 등 보편적인 클래스 포함)가 포함되어 
+모든 애플리케이션은 기본 Android 라이브러리에 연결되어 있습니다. 여기에는
+애플리케이션 구축을 위한 기본적인 패키지(액티비티, 서비스,
+인텐트, 보기, 버튼, 애플리케이션, ContentProvider 등 보편적인 클래스 포함)가 포함되어
 있습니다.
 </p>
 
 <p>
-그러나 패키지 가운데에는 자신만의 라이브러리에 속한 것도 있습니다.  애플리케이션이 
-사용하는 코드의 출처가 이러한 패키지 가운데 어느 한 가지에 해당되는 경우, 해당 패키지에 연결되도록 
-명시적으로 요청해야만 합니다.  매니페스트에는 별도의 
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> 
-요소가 들어 있어 각 라이브러리의 이름을 나타내야 합니다  (라이브러리 이름은 패키지에 대한 
+그러나 패키지 가운데에는 자신만의 라이브러리에 속한 것도 있습니다.  애플리케이션이
+사용하는 코드의 출처가 이러한 패키지 가운데 어느 한 가지에 해당되는 경우, 해당 패키지에 연결되도록
+명시적으로 요청해야만 합니다.  매니페스트에는 별도의
+<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
index 4d69b60..a2a20af 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@
       <li><a href="#intent-view">인텐트를 사용하여 캘린더 데이터 보기</a></li>
     </ol>
   </li>
-  
+
   <li><a href="#sync-adapter">동기화 어댑터</a></li>
 </ol>
 
@@ -56,47 +56,47 @@
 </div>
 </div>
 
-<p>캘린더 제공자는 사용자의 캘린더 이벤트를 저장하는 리포지토리입니다. 
-캘린더 제공자 API를 사용하면 캘린더, 이벤트, 참석자, 알림 등의 쿼리, 삽입, 업데이트 및 
+<p>캘린더 제공자는 사용자의 캘린더 이벤트를 저장하는 리포지토리입니다.
+캘린더 제공자 API를 사용하면 캘린더, 이벤트, 참석자, 알림 등의 쿼리, 삽입, 업데이트 및
 삭제 등의 작업을 수행할 수 있습니다.</p>
 
 
-<p>캘린더 제공자 API는 애플리케이션과 동기화 어댑터에서 사용할 수 있습니다. 
-어떤 유형의 프로그램이 호출을 하는 주체인지에 따라 규칙이 각기 다릅니다. 
-이 문서는 주로 캘린더 제공자 API를 애플리케이션으로 사용하는 것에 주안점을 두었습니다. 
-여러 동기화 어댑터가 서로 어떻게 다른지 논의한 내용은 
+<p>캘린더 제공자 API는 애플리케이션과 동기화 어댑터에서 사용할 수 있습니다.
+어떤 유형의 프로그램이 호출을 하는 주체인지에 따라 규칙이 각기 다릅니다.
+이 문서는 주로 캘린더 제공자 API를 애플리케이션으로 사용하는 것에 주안점을 두었습니다.
+여러 동기화 어댑터가 서로 어떻게 다른지 논의한 내용은
 <a href="#sync-adapter">동기화 어댑터</a>를 참조하십시오.</p>
 
 
-<p>캘린더 데이터를 읽거나 쓰려면 보통 애플리케이션의 매니페스트에 
-적절한 권한이 포함되어 있어야 합니다. 이는 <a href="#manifest">사용자 
+<p>캘린더 데이터를 읽거나 쓰려면 보통 애플리케이션의 매니페스트에
+적절한 권한이 포함되어 있어야 합니다. 이는 <a href="#manifest">사용자
 권한</a>에 설명되어 있습니다. 공통 작업을 쉽게 수행하기 위해 캘린더
 제공자는 <a href="#intents">캘린더
-인텐트</a>에 설명된 바와 같이 인텐트 집합을 제공합니다. 이와 같은 인텐트는 사용자를 캘린더 애플리케이션으로 이동시켜 
-이벤트 삽입, 보기 및 편집을 할 수 있게 해줍니다. 사용자는 캘린더 애플리케이션과 상호 작용한 다음 
-원래 애플리케이션으로 돌아옵니다. 따라서, 여러분의 애플리케이션이 이벤트를 보거나 
+인텐트</a>에 설명된 바와 같이 인텐트 집합을 제공합니다. 이와 같은 인텐트는 사용자를 캘린더 애플리케이션으로 이동시켜
+이벤트 삽입, 보기 및 편집을 할 수 있게 해줍니다. 사용자는 캘린더 애플리케이션과 상호 작용한 다음
+원래 애플리케이션으로 돌아옵니다. 따라서, 여러분의 애플리케이션이 이벤트를 보거나
 생성하기 위해 권한 허가를 요청할 필요도 없고 사용자 인터페이스를 제공할 필요도 없는 것입니다.</p>
 
 <h2 id="overview">기본 정보</h2>
 
-<p><a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a>는 데이터를 저장하여 애플리케이션에서 
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a>는 데이터를 저장하여 애플리케이션에서
 이에 액세스할 수 있도록 합니다. 일반적으로, Android 플랫폼에서 제공하는 콘텐츠 제공자(캘린더 제공자 포함)는
 관계 데이터베이스 모델에 기초하여 테이블 집합으로 데이터를 노출합니다. 이 모델에서 각 행은 레코드이고,
-각 열은 특정한 유형과 의미를 가진 데이터입니다. 애플리케이션과 동기화 어댑터는 
-캘린더 제공자 API를 통해 사용자의 캘린더 데이터를 보관하고 있는 데이터베이스 테이블에 
+각 열은 특정한 유형과 의미를 가진 데이터입니다. 애플리케이션과 동기화 어댑터는
+캘린더 제공자 API를 통해 사용자의 캘린더 데이터를 보관하고 있는 데이터베이스 테이블에
 읽기/쓰기 액세스 권한을 얻을 수 있습니다.</p>
 
 <p>모든 콘텐츠 제공자는 데이터 세트를 고유하게 식별하는 공개 URI(
-{@link android.net.Uri} 
+{@link android.net.Uri}
 개체로 래핑됨)를 노출합니다.  여러 데이터 세트(여러 테이블)를 제어하는 콘텐츠 제공자는
-각 데이터 세트에 별도의 URI를 노출합니다.  
-제공자에 대한 URI는 모두 문자열 "content://"로 시작합니다.  
-이것을 보면 데이터를 콘텐츠 제공자가 제어하고 있다는 것을 알아볼 수 있습니다. 
-캘린더 제공자가 각각의 클래스(테이블)에 대한 URI의 상수를 정의합니다. 
-이와 같은 URI는 <code><em>&lt;class&gt;</em>.CONTENT_URI</code> 형식을 취합니다. 
+각 데이터 세트에 별도의 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>그림 1은 캘린더 제공자 데이터 모델을 그림으로 나타낸 것입니다.
 이 그림에는 메인 테이블과이들을 서로 연결하는 필드가 표시되어 있습니다.</p>
 
 <img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
@@ -113,77 +113,77 @@
   </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.CalendarContract.AttendeesColumns#EVENT_ID}가 있어
 이벤트 테이블의 {@link android.provider.BaseColumns#_ID}를 참조합니다.</td>
 
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances}</td>
-    
-    <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}에서 지정되고, 
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}에서 지정되고,
 이는 주어진 캘린더를 소유한 동기화 어댑터가 설정합니다.
- 알림은 이벤트 몇 분 전에 지정되며 사용자에게 어떻게 경고할 것인지를 
+ 알림은 이벤트 몇 분 전에 지정되며 사용자에게 어떻게 경고할 것인지를
 결정하는 메서드를 가지고 있습니다.</td>
   </tr>
-  
+
 </table>
 
-<p>캘린더 제공자 API는 유연성과 강력함을 염두에 두고 만들어진 것입니다. 
-그와 동시에 우수한 최종 사용자 경험을 제공하고 캘린더와 그 데이터의 
+<p>캘린더 제공자 API는 유연성과 강력함을 염두에 두고 만들어진 것입니다.
+그와 동시에 우수한 최종 사용자 경험을 제공하고 캘린더와 그 데이터의
 무결성을 보호하는 것 또한 중요합니다. 이를 위해서
 API를 사용할 때 유념해야 할 사항은 다음과 같습니다.</p>
 
 <ul>
 
-<li><strong>캘린더 이벤트 삽입, 업데이트 및 보기.</strong> 캘린더 제공자로부터 직접 이벤트를 삽입, 변경하고 읽으려면 적절한 <a href="#manifest">권한</a>이 필요합니다. 그러나, 완전한 캘린더 애플리케이션 또는 동기화 어댑터를 구축하는 경우가 아니라면 이와 같은 권한을 요청할 필요가 없습니다. 대신 Android의 캘린더 애플리케이션이 지원하는 인텐트를 사용하여 해당 애플리케이션에 읽기 및 쓰기 작업을 분배하면 됩니다. 인텐트를 사용하면, 애플리케이션이 사용자를 캘린더 애플리케이션으로 보내 사전에 작성된 양식으로 원하는 작업을 
-수행하게 합니다. 작업이 끝나면 사용자는 애플리케이션으로 돌아옵니다. 
-캘린더를 통해 공통 작업을 수행하도록 애플리케이션을 설계함으로써 사용자에게 일관되고 강력한 
+<li><strong>캘린더 이벤트 삽입, 업데이트 및 보기.</strong> 캘린더 제공자로부터 직접 이벤트를 삽입, 변경하고 읽으려면 적절한 <a href="#manifest">권한</a>이 필요합니다. 그러나, 완전한 캘린더 애플리케이션 또는 동기화 어댑터를 구축하는 경우가 아니라면 이와 같은 권한을 요청할 필요가 없습니다. 대신 Android의 캘린더 애플리케이션이 지원하는 인텐트를 사용하여 해당 애플리케이션에 읽기 및 쓰기 작업을 분배하면 됩니다. 인텐트를 사용하면, 애플리케이션이 사용자를 캘린더 애플리케이션으로 보내 사전에 작성된 양식으로 원하는 작업을
+수행하게 합니다. 작업이 끝나면 사용자는 애플리케이션으로 돌아옵니다.
+캘린더를 통해 공통 작업을 수행하도록 애플리케이션을 설계함으로써 사용자에게 일관되고 강력한
 사용자 인터페이스를 제공하는 것입니다. 이것이 권장 방법입니다.
  자세한 정보는 <a href="#intents">캘린더
 인텐트</a>를 참조하십시오.</p>
 
 
-<li><strong>동기화 어댑터.</strong> 
-동기화 어댑터는 사용자의 기기에 있는 캘린더 데이터를 다른 서버 또는 데이터 소스와 동기화합니다. 
+<li><strong>동기화 어댑터.</strong>
+동기화 어댑터는 사용자의 기기에 있는 캘린더 데이터를 다른 서버 또는 데이터 소스와 동기화합니다.
 {@link android.provider.CalendarContract.Calendars}와
 {@link android.provider.CalendarContract.Events} 테이블에는
 동기화 어댑터가 사용하도록 예약된 열이 있습니다.
-제공자와 애플리케이션은 이를 수정해서는 안 됩니다. 사실, 동기화 어댑터로 액세스하지 않는 한 
-이 열이 표시되지 않습니다. 
+제공자와 애플리케이션은 이를 수정해서는 안 됩니다. 사실, 동기화 어댑터로 액세스하지 않는 한
+이 열이 표시되지 않습니다.
 동기화 어댑터에 대한 자세한 정보는 <a href="#sync-adapter">동기화 어댑터</a>를 참조하십시오.</li>
 
 </ul>
@@ -192,8 +192,8 @@
 <h2 id="manifest">사용자 권한</h2>
 
 <p>캘린더 데이터를 읽으려면 애플리케이션의 매니페스트 파일에 {@link
-android.Manifest.permission#READ_CALENDAR} 권한이 포함되어 있어야 합니다. 
-캘린더 데이터를 삭제, 삽입 또는 업데이트하려면{@link android.Manifest.permission#WRITE_CALENDAR} 
+android.Manifest.permission#READ_CALENDAR} 권한이 포함되어 있어야 합니다.
+캘린더 데이터를 삭제, 삽입 또는 업데이트하려면{@link android.Manifest.permission#WRITE_CALENDAR}
 권한이 포함되어 있어야 합니다.</p>
 
 <pre>
@@ -209,10 +209,10 @@
 
 <h2 id="calendar">캘린더 테이블</h2>
 
-<p>{@link android.provider.CalendarContract.Calendars} 
-테이블에는 각각의 캘린더에 대한 세부 정보가 들어 있습니다. 
-다음 캘린더 열은 애플리케이션과 <a href="#sync-adapter">동기화 어댑터</a> 모두 쓸 수 있는 것입니다. 
-지원되는 필드의 전체 목록은 
+<p>{@link android.provider.CalendarContract.Calendars}
+테이블에는 각각의 캘린더에 대한 세부 정보가 들어 있습니다.
+다음 캘린더 열은 애플리케이션과 <a href="#sync-adapter">동기화 어댑터</a> 모두 쓸 수 있는 것입니다.
+지원되는 필드의 전체 목록은
 {@link android.provider.CalendarContract.Calendars} 참조를 확인하십시오.</p>
 <table>
   <tr>
@@ -229,8 +229,8 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-    
-    <td>캘린더를 표시하기로 선택했는지를 나타내는 부울입니다. 
+
+    <td>캘린더를 표시하기로 선택했는지를 나타내는 부울입니다.
 값이 0이면 이 캘린더와 연관된 이벤트는 표시하면 안 된다는 뜻입니다.
   값이 1이면 이 캘린더와 연관된 이벤트를 표시해야 한다는 뜻입니다.
  이 값이 {@link
@@ -240,10 +240,10 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-    
-    <td>캘린더를 동기화하고 이 캘린더의 이벤트를 기기에 저장해야할지를 
-나타내는 부울입니다. 값이 0이면 이 캘린더를 동기화하거나 이에 속한 이벤트를 
-기기에 저장하면 안 된다는 뜻입니다.  값이 1이면 이 캘린더에 대한 이벤트를 동기화하고 이에 속한 
+
+    <td>캘린더를 동기화하고 이 캘린더의 이벤트를 기기에 저장해야할지를
+나타내는 부울입니다. 값이 0이면 이 캘린더를 동기화하거나 이에 속한 이벤트를
+기기에 저장하면 안 된다는 뜻입니다.  값이 1이면 이 캘린더에 대한 이벤트를 동기화하고 이에 속한
 이벤트를 기기에 저장하라는 뜻입니다.</td>
   </tr>
 </table>
@@ -253,8 +253,8 @@
 <p>다음은 특정한 사용자가 소유한 캘린더를 가져오는 법을 나타낸 예시입니다.
  이 예시에서는 단순하게 나타내기 위해 쿼리 작업을 사용자 인터페이스 스레드("주 스레드")에 표시했습니다.
  실제로는, 이 작업은 주 스레드 대신 비동기화 스레드에서 해야 합니다.
- 자세한 논의는 
-<a href="{@docRoot}guide/components/loaders.html">로더</a>를 참조하십시오. 데이터를 읽기만 하는 것이 아니라 변경도 하는 경우라면, 
+ 자세한 논의는
+<a href="{@docRoot}guide/components/loaders.html">로더</a>를 참조하십시오. 데이터를 읽기만 하는 것이 아니라 변경도 하는 경우라면,
 {@link android.content.AsyncQueryHandler}를 참조하십시오.
 </p>
 
@@ -268,90 +268,90 @@
     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}에 대해 쿼리하는 경우, 해당 선택에 
+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>은 계정이 
+도 포함시켜야 합니다. 이는 주어진 계정을 고유하다고 간주하는 것은 해당 계정의
+<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> </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>를 생략합니다. 
+"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 (" 
+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. 
+        "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
 cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
 
-<p>다음에 표시된 섹션에서는 커서를 사용하여 결과 집합을 단계별로 살펴봅니다. 
+<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}를 
+android.provider.BaseColumns#_ID}를
 URI에 추가된 ID로
 
 ({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}), 또는 첫 번째 선택 항목으로 제공하면 됩니다.
- 
-선택은 <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째 
+
+선택은 <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째
 <code>selectionArg</code>는 캘린더의 {@link
-android.provider.BaseColumns#_ID}여야 합니다. 
-또한 ID를 URI에 인코딩해서도 업데이트를 수행할 수 있습니다. 이 예시에서는 캘린더의 표시 이름을 
+android.provider.BaseColumns#_ID}여야 합니다.
+또한 ID를 URI에 인코딩해서도 업데이트를 수행할 수 있습니다. 이 예시에서는 캘린더의 표시 이름을
 
 ({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
 방식으로 변경하였습니다.</p>
@@ -368,26 +368,26 @@
 
 <h3 id="insert-calendar">캘린더 삽입</h2>
 
-<p>캘린더는 주로 동기화 어댑터가 관리하도록 설계되어 있습니다. 따라서 새 캘린더는 
-동기화 어댑터로서만 삽입해야 합니다. 대다수의 경우 애플리케이션은 캘린더에 
-표면적인 사항만 변경할 수 있게 되어 있습니다(예: 표시 이름 변경 등). 
-어떤 애플리케이션이 로컬 캘린더를 생성해야 하는 경우, 캘린더 삽입을 동기화 어댑터로 수행하면 됩니다. 
+<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} 
-테이블에는 각각의 이벤트에 대한 세부 정보가 들어 있습니다. 이벤트를 추가, 업데이트 또는 삭제하려면 애플리케이션의 
+<p>{@link android.provider.CalendarContract.Events}
+테이블에는 각각의 이벤트에 대한 세부 정보가 들어 있습니다. 이벤트를 추가, 업데이트 또는 삭제하려면 애플리케이션의
 <a href="#manifest">매니페스트 파일</a>에 {@link android.Manifest.permission#WRITE_CALENDAR}
 권한이 포함되어 있어야 합니다.</p>
 
-<p>다음 이벤트 열은 애플리케이션과 
+<p>다음 이벤트 열은 애플리케이션과
 동기화 어댑터 모두 쓸 수 있는 것입니다. 지원되는 필드의 전체 목록은 {@link
 android.provider.CalendarContract.Events} 참조를 확인하십시오.</p>
 
@@ -434,9 +434,9 @@
   </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;PT1H&quot;</code> 값을 보면 이벤트가 한 시간 지속될 것임을 알 수 있고,
 <code>&quot;P2W&quot;</code>는 2주의 지속 기간을 나타냅니다.
  </td>
 
@@ -444,39 +444,39 @@
   </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> 더 많은 예시를 확인하려면 
+
+    <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>이벤트의 반복 날짜입니다. 
+    <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>
@@ -494,7 +494,7 @@
 
 <h3 id="add-event">이벤트 추가</h3>
 
-<p>애플리케이션이 새 이벤트를 추가하는 경우, 
+<p>애플리케이션이 새 이벤트를 추가하는 경우,
 {@link android.content.Intent#ACTION_INSERT INSERT} 인텐트를 사용하는 것이 좋습니다. 이때 <a href="#intent-insert">인텐트를 사용하여 이벤트 삽입</a>에서 설명한 대로 따릅니다. 그러나, 필요한 경우 직접 이벤트를 삽입해도 됩니다.
  이 섹션에서는 이렇게 하는 방법을 설명합니다.
 </p>
@@ -508,39 +508,39 @@
 android.provider.CalendarContract.EventsColumns#DTSTART}를 포함해야 합니다.</li>
 
 <li>{@link
-android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}을 포함해야 합니다. 
+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} 인텐트를 통해서 이벤트를 삽입할 경우에는 적용되지 않습니다. 
+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;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,13 +561,13 @@
 
 // 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를 가져오는 가장 쉬운 방법입니다.
 다른 캘린더 작업을 수행하기 위해 이벤트 ID가 필요한 경우가 자주 있습니다. 예를 들어 이벤트에 참석자나 알림을 추가하는 데 필요합니다.
 </p>
 
@@ -577,15 +577,15 @@
 <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()}) 
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
 또는 첫 번째 선택 항목으로 제공하면 됩니다.
- 
-선택은 <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째 
-<code>selectionArg</code>는 이벤트의 <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>
 
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -608,11 +608,11 @@
 <p>이벤트를 삭제하려면 이벤트의 {@link
 android.provider.BaseColumns#_ID}를 URI에 추가된 ID로 써도 되고, 표준 선택을 사용해도 됩니다.
  추가된 ID를 사용하는 경우, 선택도 할 수 없습니다.
-삭제에는 두 가지 버전이 있습니다. 애플리케이션으로 삭제와 동기화 어댑터로의 삭제입니다. 
-애플리케이션 삭제의 경우 <em>삭제된</em> 열을 1로 설정합니다. 
-이것은 동기화 어댑터에 행이 삭제되었다고 알리는 플래그이며, 
-이 삭제를 서버에 알려야 한다는 것을 나타내기도 합니다. 
-동기화 어댑터 삭제의 경우, 이벤트를 연관된 데이터 일체와 함께 데이터베이스에서 제거합니다. 
+삭제에는 두 가지 버전이 있습니다. 애플리케이션으로 삭제와 동기화 어댑터로의 삭제입니다.
+애플리케이션 삭제의 경우 <em>삭제된</em> 열을 1로 설정합니다.
+이것은 동기화 어댑터에 행이 삭제되었다고 알리는 플래그이며,
+이 삭제를 서버에 알려야 한다는 것을 나타내기도 합니다.
+동기화 어댑터 삭제의 경우, 이벤트를 연관된 데이터 일체와 함께 데이터베이스에서 제거합니다.
 다음은 애플리케이션이 이벤트를 {@link android.provider.BaseColumns#_ID}를 통해 삭제하는 예입니다.</p>
 
 
@@ -625,22 +625,22 @@
 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);  
+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.CalendarContract.AttendeesColumns#EVENT_ID}는
  특정 이벤트의 {@link
-android.provider.BaseColumns#_ID}와 반드시 일치해야 합니다.</p> 
+android.provider.BaseColumns#_ID}와 반드시 일치해야 합니다.</p>
 
 <p>다음 표는 쓸 수 있는 필드를 목록으로 나열한 것입니다.
- 새 참석자를 삽입하는 경우 이 모두를 포함해야 하며, 
+ 새 참석자를 삽입하는 경우 이 모두를 포함해야 하며,
 단 <code>ATTENDEE_NAME</code>은 예외입니다.
 </p>
 
@@ -697,7 +697,7 @@
 
 <h3 id="add-attendees">참석자 추가</h3>
 
-<p>다음은 이벤트에 참석자 한 명을 추가하는 예입니다. 
+<p>다음은 이벤트에 참석자 한 명을 추가하는 예입니다.
 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
 가 필수인 점을 유념하십시오.</p>
 
@@ -717,8 +717,8 @@
 
 <h2 id="reminders">알림 테이블</h2>
 
-<p>{@link android.provider.CalendarContract.Reminders} 
-테이블의 각 행은 이벤트의 알림 하나를 나타냅니다. 
+<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>
@@ -728,7 +728,7 @@
  동기화 어댑터가 {@link
 android.provider.CalendarContract.Calendars} 테이블에서 지원하는 알림을 나타낸다는 점을 눈여겨 보십시오.
  자세한 내용은
-{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS} 
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
 를 참조하십시오.</p>
 
 
@@ -774,15 +774,15 @@
 <h2 id="instances">인스턴스 테이블</h2>
 
 <p>
-{@link android.provider.CalendarContract.Instances} 테이블에는 
+{@link android.provider.CalendarContract.Instances} 테이블에는
 이벤트 발생의 시작 및 종료 시간이 담겨 있습니다. 이 테이블의 각 행이 하나의 이벤트 발생을 나타냅니다.
  이 인스턴스 테이블은 쓸 수 없으며 이벤트 발생 쿼리 방법을 제공할 뿐입니다.
  </p>
 
-<p>다음 표에는 인스턴스에 대해 쿼리할 수 있는 몇 가지 필드를 목록으로 나열하였습니다. 
-표준 시간대가 
+<p>다음 표에는 인스턴스에 대해 쿼리할 수 있는 몇 가지 필드를 목록으로 나열하였습니다.
+표준 시간대가
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
- 및 
+ 및
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}에 의해 정의된다는 점을 눈여겨 보십시오.</p>
 
 
@@ -801,18 +801,18 @@
   </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>
@@ -820,16 +820,16 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>인스턴스의 율리우스력 시작 날짜를 캘린더의 시간대에 비례하여 나타낸 것입니다. 
+    <td>인스턴스의 율리우스력 시작 날짜를 캘린더의 시간대에 비례하여 나타낸 것입니다.
  </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-    
+
     <td>인스턴스의 시작 시간(분 단위)을 캘린더 시간대에 비례하여 자정부터 측정한 것입니다.
- 
+
 </td>
-    
+
   </tr>
 
 </table>
@@ -839,10 +839,10 @@
 <p>인스턴스 테이블을 쿼리하려면, 해당 쿼리에 대한 범위 시간을 URI에 지정해야 합니다.
  이 예시에서는 {@link android.provider.CalendarContract.Instances}
 가 {@link
-android.provider.CalendarContract.EventsColumns#TITLE} 필드에 액세스 권한을 얻으며, 이때 
-{@link android.provider.CalendarContract.EventsColumns} 인터페이스의 구현을 통합니다. 
+android.provider.CalendarContract.EventsColumns#TITLE} 필드에 액세스 권한을 얻으며, 이때
+{@link android.provider.CalendarContract.EventsColumns} 인터페이스의 구현을 통합니다.
 바꿔 말하면, {@link
-android.provider.CalendarContract.EventsColumns#TITLE}이 
+android.provider.CalendarContract.EventsColumns#TITLE}이
 데이터베이스 보기를 통해 반환되며 원시 {@link
 android.provider.CalendarContract.Instances} 테이블 쿼리를 통해서가 아니라는 뜻입니다.</p>
 
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -922,9 +922,9 @@
     <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>를 참조하십시오. 
+
+{@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>
@@ -935,11 +935,11 @@
 
      </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를 참조할 수 있습니다. 
+
+
+{@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>
 
@@ -952,12 +952,12 @@
   <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를 참조할 수 있습니다. 
+
+
+{@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>
 
@@ -972,11 +972,11 @@
     <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를 참조할 수 있습니다. 
+
+
+{@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>
@@ -996,7 +996,7 @@
     <td>이벤트의 이름입니다.</td>
   </tr>
   <tr>
-  
+
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
 CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
     <td>이벤트 시작 시간을 Epoch로부터 밀리초 단위로 나타낸 것입니다.</td>
@@ -1004,25 +1004,25 @@
   <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>이벤트가 종일 이벤트인지 나타내는 부울입니다. 값은 
+
+    <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>
@@ -1039,43 +1039,43 @@
     <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> 
+
+</table>
 <p>아래 섹션에서는 이와 같은 인텐트의 사용법을 설명합니다.</p>
 
 
 <h3 id="intent-insert">인텐트를 사용하여 이벤트 삽입</h3>
 
-<p>{@link android.content.Intent#ACTION_INSERT INSERT} 인텐트를 사용하면 
+<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일에 이벤트 일정을 예약하는 코드 조각으로, 
+
+<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
@@ -1083,10 +1083,10 @@
 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();
@@ -1108,7 +1108,7 @@
 <h3 id="intent-edit">인텐트를 사용하여 이벤트 편집</h3>
 
 <p><a href="#update-event">이벤트 업데이트</a>에서 설명한 바와 같이 이벤트를 직접 업데이트할 수 있습니다. 그러나 {@link
-android.content.Intent#ACTION_EDIT EDIT} 인텐트를 사용하면 
+android.content.Intent#ACTION_EDIT EDIT} 인텐트를 사용하면
 캘린더 애플리케이션에 이벤트 편집을 분배할 권한이 없는 애플리케이션을 허용합니다.
 사용자가 캘린더에서 이벤트 편집을 마치면 원래 애플리케이션으로 돌아오게 됩니다.
 </p> <p>다음은 지정된 이벤트에 새 제목을 설정하여 사용자에게 캘린더에서 이벤트를 편집할 수 있도록 해주는 인텐트의 예입니다.
@@ -1158,18 +1158,18 @@
 
 <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_NAME</code> 및
 <code>ACCOUNT_TYPE</code>에 한정됩니다.</li> </ul>
 
 <p>다음은 URI를 반환하여 동기화 어댑터와 사용하도록 할 때 쓸 수 있는 도우미 메서드입니다.</p>
@@ -1180,5 +1180,5 @@
         .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
  }
 </pre>
-<p>동기화 어댑터의 샘플 구현(캘린더에 구체적으로 관련된 것이 아님)은 
+<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
index 94d3295..ad60b6d 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
@@ -83,12 +83,12 @@
 </div>
 <p>
     콘텐츠 제공자는 기기의 사람에 대한 중앙 데이터 리포지토리를 관리하는 강력하고 유연한
-Android 구성 요소입니다. 콘텐츠 제공자는 기기의 연락처 애플리케이션에서 개발자에게 표시되는 
-데이터의 출처입니다. 여기의 데이터에는 개발자 자신의 애플리케이션에서 
-액세스하여 기기와 온라인 서비스 사이에서 데이터를 전송할 수도 있습니다. 제공자는 
-광범위한 데이터 소스를 수용하며 각 인물에 대해 가능한 한 많은 데이터를 관리하여야 하므로, 그 결과 조직이 무척 
-복잡합니다. 이 때문에 이 제공자의 API에는 
-광범위한 계약 클래스와 인터페이스 세트가 포함되어 있어 데이터 검색과 수정을 모두 한층 
+Android 구성 요소입니다. 콘텐츠 제공자는 기기의 연락처 애플리케이션에서 개발자에게 표시되는
+데이터의 출처입니다. 여기의 데이터에는 개발자 자신의 애플리케이션에서
+액세스하여 기기와 온라인 서비스 사이에서 데이터를 전송할 수도 있습니다. 제공자는
+광범위한 데이터 소스를 수용하며 각 인물에 대해 가능한 한 많은 데이터를 관리하여야 하므로, 그 결과 조직이 무척
+복잡합니다. 이 때문에 이 제공자의 API에는
+광범위한 계약 클래스와 인터페이스 세트가 포함되어 있어 데이터 검색과 수정을 모두 한층
 용이하게 해줍니다.
 </p>
 <p>
@@ -105,23 +105,23 @@
             제공자에서 데이터를 수정하는 방법.
         </li>
         <li>
-            동기화 어댑터를 작성하여 서버에서 가져온 데이터를 연락처 제공자와 
+            동기화 어댑터를 작성하여 서버에서 가져온 데이터를 연락처 제공자와
 동기화하는 방법.
         </li>
     </ul>
 <p>
-    이 가이드는 독자가 Android 콘텐츠 제공자의 기본 정보를 알고 있는 것으로 간주합니다. Android 콘텐츠 제공자에 
-관한 자세한 내용은 
+    이 가이드는 독자가 Android 콘텐츠 제공자의 기본 정보를 알고 있는 것으로 간주합니다. Android 콘텐츠 제공자에
+관한 자세한 내용은
 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
-콘텐츠 제공자 기본 정보</a> 가이드를 읽어보십시오. 
+콘텐츠 제공자 기본 정보</a> 가이드를 읽어보십시오.
 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">샘플 동기화 어댑터</a>
 샘플 앱은 동기화 어댑터를 사용하여 연락처 제공자와 Google Web Services가 호스팅하는 샘플 애플리케이션 사이에서
 데이터를 전송하는 동기화 어댑터의 사용 예시입니다.
 </p>
 <h2 id="InformationTypes">연락처 제공자 조직</h2>
 <p>
-    연락처 제공자는 Android 콘텐츠 제공자 구성 요소입니다. 이것은 한 사람에 대해 
-각기 세 가지 유형의 데이터를 관리합니다. 각 데이터는 그림 1에서 설명하는 바와 같이 제공자가 제공하는 
+    연락처 제공자는 Android 콘텐츠 제공자 구성 요소입니다. 이것은 한 사람에 대해
+각기 세 가지 유형의 데이터를 관리합니다. 각 데이터는 그림 1에서 설명하는 바와 같이 제공자가 제공하는
 각 테이블에 상응합니다.
 </p>
 <img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
@@ -129,7 +129,7 @@
   <strong>그림 1.</strong> 연락처 제공자 테이블 구조입니다.
 </p>
 <p>
-    이 세 개의 테이블은 보통 자신의 계약 클래스의 이름으로 불립니다. 이들 클래스는 
+    이 세 개의 테이블은 보통 자신의 계약 클래스의 이름으로 불립니다. 이들 클래스는
 테이블에서 사용하는 콘텐츠 URI, 열 이름 및 열 값의 상수를 정의합니다.
 </p>
 <dl>
@@ -153,29 +153,29 @@
     </dd>
 </dl>
 <p>
-    {@link android.provider.ContactsContract}의 계약 클래스가 대표하는 다른 테이블은 
-보조 테이블로, 연락처 제공자는 이들을 사용하여 작업을 관리하거나 기기의 연락처에 있는 
+    {@link android.provider.ContactsContract}의 계약 클래스가 대표하는 다른 테이블은
+보조 테이블로, 연락처 제공자는 이들을 사용하여 작업을 관리하거나 기기의 연락처에 있는
 특정 기능 또는 전화 통신 애플리케이션 등을 지원합니다.
 </p>
 <h2 id="RawContactBasics">원시 연락처</h2>
 <p>
-    원시 연락처는 단일 계정 유형과 계정 이름에서 가져오는 
-한 사람의 데이터를 나타냅니다. 연락처 제공자는 한 사람에 대해 하나 이상의 온라인 서비스를 데이터의 출처로 허용하므로, 
+    원시 연락처는 단일 계정 유형과 계정 이름에서 가져오는
+한 사람의 데이터를 나타냅니다. 연락처 제공자는 한 사람에 대해 하나 이상의 온라인 서비스를 데이터의 출처로 허용하므로,
 연락처 제공자에서는 같은 사람에 대해 여러 개의 원시 연락처를 허용합니다.
-    원시 연락처를 여러 개 사용하면 사용자가 같은 계정 유형의 하나 이상의 계정에서 가져온 
+    원시 연락처를 여러 개 사용하면 사용자가 같은 계정 유형의 하나 이상의 계정에서 가져온
 한 사람의 여러 데이터를 조합할 수 있습니다.
 </p>
 <p>
-    원시 연락처의 데이터 대부분은 
-{@link android.provider.ContactsContract.RawContacts} 테이블에 저장되지 않습니다. 대신, 
+    원시 연락처의 데이터 대부분은
+{@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}가 
+상위 {@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} 테이블의 중요한 열은 
+    {@link android.provider.ContactsContract.RawContacts} 테이블의 중요한 열은
 표 1에 나열되어 있습니다. 표 뒤에 이어지는 참고 사항을 꼭 읽어주십시오.
 </p>
 <p class="table-caption" id="table1">
@@ -193,13 +193,13 @@
         </td>
         <td>
             이 원시 연락처의 소스인 계정 유형에 대한 계정 이름입니다.
-            예를 들어, Google 계정의 계정 이름은 
-기기 소유자의 Gmail 주소 중 하나입니다. 자세한 정보는 
-{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}의 
+            예를 들어, Google 계정의 계정 이름은
+기기 소유자의 Gmail 주소 중 하나입니다. 자세한 정보는
+{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}의
 다음 항목을 참조하십시오.
         </td>
         <td>
-            이 이름의 형식은 각자의 계정 유형별로 다릅니다. 이것은 꼭 
+            이 이름의 형식은 각자의 계정 유형별로 다릅니다. 이것은 꼭
 이메일 주소여야 하는 것은 아닙니다.
         </td>
     </tr>
@@ -208,13 +208,13 @@
             {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
         </td>
         <td>
-            이 원시 연락처의 소스인 계정 유형입니다. 예를 들어, Google 계정의 
-계정 유형은 <code>com.google</code>입니다. 계정 유형을 정규화할 때에는 항상 
-본인이 소유하거나 제어하는 도메인의 도메인 식별자를 사용하십시오. 이렇게 하면 계정 유형이 고유한 것이도록 
+            이 원시 연락처의 소스인 계정 유형입니다. 예를 들어, Google 계정의
+계정 유형은 <code>com.google</code>입니다. 계정 유형을 정규화할 때에는 항상
+본인이 소유하거나 제어하는 도메인의 도메인 식별자를 사용하십시오. 이렇게 하면 계정 유형이 고유한 것이도록
 확실히 해둘 수 있습니다.
         </td>
         <td>
-            연락처 데이터를 제공하는 계정 유형은 대개 연락처 제공자와 동기화되는 동기화 어댑터와 
+            연락처 데이터를 제공하는 계정 유형은 대개 연락처 제공자와 동기화되는 동기화 어댑터와
 연관되어 있습니다.
     </tr>
     <tr>
@@ -225,44 +225,44 @@
             원시 연락처에 대한 "삭제됨" 플래그입니다.
         </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.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}로 등록해야 합니다. 이렇게 하려면, 
-사용자에게 계정 유형과 본인의 계정 이름을 계정 목록에 추가하라는 프롬프트를 표시하십시오. 이렇게 하지 않으면, 
+        <strong>주의:</strong> 원시 연락처에서 본인의 계정 데이터를 사용하려면 이를 우선
+{@link android.accounts.AccountManager}로 등록해야 합니다. 이렇게 하려면,
+사용자에게 계정 유형과 본인의 계정 이름을 계정 목록에 추가하라는 프롬프트를 표시하십시오. 이렇게 하지 않으면,
 연락처 제공자가 원시 연락처 행을 자동으로 삭제합니다.
         <p>
-            예를 들어, 앱에서 도메인 {@code com.example.dataservice}로 웹 베이스 서비스에 대한 연락처 데이터를 유지하고 
-서비스에 대한 사용자 계정이 
-{@code becky.sharp@dataservice.example.com}이라면, 사용자는 앱이 원시 연락처 행을 추가하기 전에 
+            예를 들어, 앱에서 도메인 {@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"이 있다고 
+    원시 연락처의 작동 원리를 이해하기 위해, 다음과 같이 기기에서 정의한 사용자 계정 세 가지를 보유한 사용자 "Emily Dickinson"이 있다고
 가정해 봅시다.
 </p>
 <ul>
@@ -275,11 +275,11 @@
 활성화했습니다.
 </p>
 <p>
-    Emily Dickinson이 브라우저 창을 열고, 
+    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)도 
+연락처를 열어서 "Thomas Higginson"을 추가한다고 가정하겠습니다. 이 사용자는 나중에 Gmail에
+<code>emilyd@gmail.com</code>으로 로그인하고 "Thomas Higginson"에게 이메일을 전송합니다.
+이렇게 하면 이 사람을 자동으로 연락처로 추가합니다. Emily는 Twitter에서 "colonel_tom"(Thomas Higginson의 Twitter ID)도
 팔로우합니다.
 </p>
 <p>
@@ -292,34 +292,34 @@
     </li>
     <li>
         <code>emilyd@gmail.com</code>과 연관된 "Thomas Higginson"의 두 번째 원시 연락처입니다.
-        사용자 계정 유형은 마찬가지로 Google입니다. 이름이 이전 이름과 똑같더라도 두 번째 원시 연락처가 
-더해집니다. 왜냐하면 이 사람은 아까와 다른 
+        사용자 계정 유형은 마찬가지로 Google입니다. 이름이 이전 이름과 똑같더라도 두 번째 원시 연락처가
+더해집니다. 왜냐하면 이 사람은 아까와 다른
 사용자 계정에 추가되었기 때문입니다.
     </li>
     <li>
-        "belle_of_amherst"와 연관된 "Thomas Higginson"의 세 번째 원시 연락처입니다. 사용자 
+        "belle_of_amherst"와 연관된 "Thomas Higginson"의 세 번째 원시 연락처입니다. 사용자
 계정 유형은 Twitter입니다.
     </li>
 </ol>
 <h2 id="DataBasics">데이터</h2>
 <p>
     이전에 언급한 바와 같이, 원시 연락처의 데이터는
-원시 연락처의 <code>_ID</code> 값과 연결된{@link android.provider.ContactsContract.Data} 행에 
-저장됩니다. 이렇게 하면 하나의 원시 연락처에 같은 유형의 데이터의 인스턴스가 여러 개 있을 수 있게 됩니다. 
-예를 들어 이메일 주소 또는 전화 번호 등이 이에 해당됩니다. 예를 들어, 
+원시 연락처의 <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} 테이블에는 설명이 포함된 이름이 있는 열이 몇 개 있고 
-일반적 이름이 포함된 열도 몇 개 있습니다. 설명이 포함된 이름 열의 콘텐츠는 행 안의 데이터 유형과 관계 없이 모두 의미가 같고, 
-일반적인 이름 열의 콘텐츠는 데이터 유형에 따라 
+    이 테이블 하나에 여러 가지 유형의 데이터가 저장된 점에 주의하십시오. 표시 이름,
+전화 번호, 이메일, 우편 주소, 사진 및 웹사이트 세부 정보 행은 모두
+{@link android.provider.ContactsContract.Data} 테이블에서 찾을 수 있습니다. 이런 데이터 관리를 돕기 위해
+{@link android.provider.ContactsContract.Data} 테이블에는 설명이 포함된 이름이 있는 열이 몇 개 있고
+일반적 이름이 포함된 열도 몇 개 있습니다. 설명이 포함된 이름 열의 콘텐츠는 행 안의 데이터 유형과 관계 없이 모두 의미가 같고,
+일반적인 이름 열의 콘텐츠는 데이터 유형에 따라
 서로 의미가 다릅니다.
 </p>
 <h3 id="DescriptiveColumns">설명이 포함된 열 이름</h3>
@@ -337,9 +337,9 @@
         {@link android.provider.ContactsContract.Data#MIMETYPE}
     </dt>
     <dd>
-        이 행에 저장되는 데이터 유형으로, 사용자 지정 MIME 유형으로 표현됩니다. 연락처 제공자는 
-{@link android.provider.ContactsContract.CommonDataKinds}의 하위 클래스에서 정의된 
-MIME 유형을 사용합니다. 이러한 MIME 유형은 오픈 소스이고, 
+        이 행에 저장되는 데이터 유형으로, 사용자 지정 MIME 유형으로 표현됩니다. 연락처 제공자는
+{@link android.provider.ContactsContract.CommonDataKinds}의 하위 클래스에서 정의된
+MIME 유형을 사용합니다. 이러한 MIME 유형은 오픈 소스이고,
 연락처 제공자와 함께 사용할 수 있는 모든 애플리케이션 또는 동기화 어댑터가 사용할 수 있습니다.
     </dd>
     <dt>
@@ -347,25 +347,25 @@
     </dt>
     <dd>
         이 유형의 데이터 행이 원시 연락처에서 한 번 이상 발생하는 경우,
-{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 열은 
-해당 유형의 기본 데이터가 들어있는 데이터 행을 플래그로 표시합니다. 예를 들어, 
-사용자가 연락처의 전화 번호를 길게 누르고 <strong>기본값으로 설정</strong>을 선택하면 
+{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 열은
+해당 유형의 기본 데이터가 들어있는 데이터 행을 플래그로 표시합니다. 예를 들어,
+사용자가 연락처의 전화 번호를 길게 누르고 <strong>기본값으로 설정</strong>을 선택하면
 그 번호가 들어있는 {@link android.provider.ContactsContract.Data} 행이
-{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 열을 
+{@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>까지는 
-동기화 어댑터 전용입니다. 일반 열 이름 상수는 해당 행에 들어있는 데이터 유형과 관계 없이 
+    15개의 일반 열 중에서 <code>DATA1</code>부터
+<code>DATA15</code>까지는 일반적으로 이용할 수 있고 이외에 추가로 마련된 네 개의 일반
+열, 즉 <code>SYNC1</code>부터 <code>SYNC4</code>까지는
+동기화 어댑터 전용입니다. 일반 열 이름 상수는 해당 행에 들어있는 데이터 유형과 관계 없이
 언제나 통합니다.
 </p>
 <p>
-    <code>DATA1</code> 열은 색인됩니다.  연락처 제공자는 제공자가 가장 자주 쿼리의 대상이 될 것으로 예상하는 
-데이터에 대해 항상 이 열을 사용합니다. 예컨대 
+    <code>DATA1</code> 열은 색인됩니다.  연락처 제공자는 제공자가 가장 자주 쿼리의 대상이 될 것으로 예상하는
+데이터에 대해 항상 이 열을 사용합니다. 예컨대
 이메일 행의 경우, 이 열에 실제 이메일 주소가 들어있습니다.
 </p>
 <p>
@@ -374,36 +374,36 @@
 </p>
 <h3 id="TypeSpecificNames">유형별 열 이름</h3>
 <p>
-    특정 유형의 행에 대한 열과의 작업을 돕기 위해, 연락처 제공자는 
- 유형별 열 이름 상수도 제공합니다. 이는 
-{@link android.provider.ContactsContract.CommonDataKinds}의 하위 클래스에서 정의합니다. 이 상수는 그저 같은 열 이름에 
-서로 다른 상수 이름을 부여할 뿐이며, 이렇게 하면 개발자가 특정 유형의 행에 있는 데이터에 
+    특정 유형의 행에 대한 열과의 작업을 돕기 위해, 연락처 제공자는
+ 유형별 열 이름 상수도 제공합니다. 이는
+{@link android.provider.ContactsContract.CommonDataKinds}의 하위 클래스에서 정의합니다. 이 상수는 그저 같은 열 이름에
+서로 다른 상수 이름을 부여할 뿐이며, 이렇게 하면 개발자가 특정 유형의 행에 있는 데이터에
 액세스하기 쉽습니다.
 </p>
 <p>
-    예를 들어, {@link android.provider.ContactsContract.CommonDataKinds.Email} 클래스는 
+    예를 들어, {@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.Data} 행에
 대한 유형별 열 이름 상수를 정의합니다. 이 클래스에는 이메일 주소 열에 대한
- 상수 {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}가 
-들어있습니다. 
-{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}의 실제 값은 
+ 상수 {@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 유형 
+    <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 유형을 사용하는 경우 
+    Email.CONTENT_ITEM_TYPE} 안에
+<code>DATA1</code> 열에 있는 이메일 주소 대신 사용자 이름이 들어있는 행은 추가하면 안 됩니다. 해당 행에 개발자 나름의 사용자 지정 MIME 유형을 사용하는 경우
 본인만의 유형별 열 이름을 자유자재로 정의하고 이러한 열을 마음대로 사용해도 됩니다.
 </p>
 <p>
-    그림 2는 
-{@link android.provider.ContactsContract.Data} 행에서 설명 열과 데이터 열이 나타나는 방식과 유형별 열 이름이 
+    그림 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" />
@@ -446,51 +446,51 @@
     <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>를 형성합니다. 이렇게 하면 사용자가 한 사람에 대해 수집한 
-모든 데이터를 표시하고 수정하기 쉽습니다. 연락처 제공자는 새 연락처 행의 생성을 관리하고 
-원시 연락처를 기존 연락처 행과 통합하기도 합니다. 애플리케이션과 
+    연락처 제공자는 모든 계정 유형과 계정 이름을 통틀어 원시 연락처 행을 조합하여
+하나의 <strong>연락처</strong>를 형성합니다. 이렇게 하면 사용자가 한 사람에 대해 수집한
+모든 데이터를 표시하고 수정하기 쉽습니다. 연락처 제공자는 새 연락처 행의 생성을 관리하고
+원시 연락처를 기존 연락처 행과 통합하기도 합니다. 애플리케이션과
 동기화 어댑터는 모두 연락처를 추가할 수 없으며, 연락처 행에 있는 열 중 몇몇은 읽기 전용입니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 연락처 제공자에 연락처를 추가하려고 
-{@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}를 사용하는 경우, 
-{@link java.lang.UnsupportedOperationException} 예외가 발생합니다. "읽기 전용"으로 표시된 열을 업데이트하려고 하면 
+    <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> 값이 
+{@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} 값을
+변경할 수도 있습니다. 이런 일이 발생한다 하더라도 콘텐츠 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>
@@ -502,17 +502,17 @@
 </p>
 <h2 id="Sources">동기화 어댑터의 데이터</h2>
 <p>
-    사용자가 연락처 데이터를 기기에 직접 입력하기도 하지만, 데이터는 웹 서비스에서 
-<strong>동기화 어댑터</strong>를 통해 연락처 제공자로 흘러들어가기도 합니다. 이것이 기기와 
-서비스 사이에서 데이터의 전송을 자동화하는 것입니다. 동기화 어댑터는 시스템의 제어를 받으며 
-배경에서 실행되고, {@link android.content.ContentResolver} 메서드를 
+    사용자가 연락처 데이터를 기기에 직접 입력하기도 하지만, 데이터는 웹 서비스에서
+<strong>동기화 어댑터</strong>를 통해 연락처 제공자로 흘러들어가기도 합니다. 이것이 기기와
+서비스 사이에서 데이터의 전송을 자동화하는 것입니다. 동기화 어댑터는 시스템의 제어를 받으며
+배경에서 실행되고, {@link android.content.ContentResolver} 메서드를
 호출하여 데이터를 관리합니다.
 </p>
 <p>
     Android에서 동기화 어댑터와 함께 작업하는 웹 서비스는 계정 유형으로 식별됩니다.
-    각 동기화 어댑터는 계정 유형 하나에 통하지만, 그 유형에 대한 여러 개의 계정이름을 
-지원할 수 있습니다. 계정 유형과 계정 이름은 
-<a href="#RawContactsExample">원시 연락처 데이터 소스</a> 섹션에 간단히 설명되어 있습니다. 다음 정의는 좀 더 자세한 내용을 제공하며, 
+    각 동기화 어댑터는 계정 유형 하나에 통하지만, 그 유형에 대한 여러 개의 계정이름을
+지원할 수 있습니다. 계정 유형과 계정 이름은
+<a href="#RawContactsExample">원시 연락처 데이터 소스</a> 섹션에 간단히 설명되어 있습니다. 다음 정의는 좀 더 자세한 내용을 제공하며,
 계정 유형과 이름이 동기화 어댑터와 서비스에 관련되는 방식을 설명합니다.
 </p>
 <dl>
@@ -520,34 +520,34 @@
         계정 유형
     </dt>
     <dd>
-        사용자가 데이터를 저장해둔 서비스를 식별합니다. 대부분의 경우, 사용자가 
-서비스로 인증해야 합니다. 예를 들어, Google 주소록은 계정 유형이고, 이는 
-코드 <code>google.com</code>으로 식별됩니다. 이 값은 
+        사용자가 데이터를 저장해둔 서비스를 식별합니다. 대부분의 경우, 사용자가
+서비스로 인증해야 합니다. 예를 들어, Google 주소록은 계정 유형이고, 이는
+코드 <code>google.com</code>으로 식별됩니다. 이 값은
 {@link android.accounts.AccountManager}가 사용하는 계정 유형에 상응합니다.
     </dd>
     <dt>
         계정 이름
     </dt>
     <dd>
-        하나의 계정 유형에 대한 특정 계정 또는 로그인을 식별합니다. Google 주소록 계정은 
+        하나의 계정 유형에 대한 특정 계정 또는 로그인을 식별합니다. Google 주소록 계정은
 Google 계정과 같고, 이는 계정 이름으로 이메일 주소를 사용합니다.
         다른 서비스는 한 단어로 된 사용자 이름이나 숫자 ID를 사용할 수 있습니다.
     </dd>
 </dl>
 <p>
-    계정 유형은 고유하지 않아도 됩니다. 한 사람의 사용자가 여러 개의 Google 주소록을 구성할 수 있고 
-그 데이터를 연락처 제공자에 다운로드할 수 있습니다. 이런 일은 사용자에게 
-개인용 계정 이름에 대한 개인용 연락처가 한 세트 있고, 업무용으로 또 한 세트가 있는 경우 일어납니다. 계정 이름은 보통 
-고유합니다. 이 둘은 함께 사용되어 연락처 제공자와 외부 서비스 사이의 특정 데이터 
+    계정 유형은 고유하지 않아도 됩니다. 한 사람의 사용자가 여러 개의 Google 주소록을 구성할 수 있고
+그 데이터를 연락처 제공자에 다운로드할 수 있습니다. 이런 일은 사용자에게
+개인용 계정 이름에 대한 개인용 연락처가 한 세트 있고, 업무용으로 또 한 세트가 있는 경우 일어납니다. 계정 이름은 보통
+고유합니다. 이 둘은 함께 사용되어 연락처 제공자와 외부 서비스 사이의 특정 데이터
 흐름을 식별합니다.
 </p>
 <p>
-    서비스의 데이터를 연락처 제공자에 전송하려면, 나름의 
-동기화 어댑터를 작성해야 합니다. 이 내용은 
+    서비스의 데이터를 연락처 제공자에 전송하려면, 나름의
+동기화 어댑터를 작성해야 합니다. 이 내용은
 <a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a> 섹션에 자세히 설명되어 있습니다.
 </p>
 <p>
-    그림 4는 연락처 제공자가 사람에 대한 데이터 흐름에 
+    그림 4는 연락처 제공자가 사람에 대한 데이터 흐름에
 어떻게 들어맞는지 나타낸 것입니다. "동기화 어댑터"라고 표시된 상자에서, 각 어댑터에는 계정 유형에 따라 레이블이 붙어 있습니다.
 </p>
 <img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
@@ -556,67 +556,67 @@
 </p>
 <h2 id="Permissions">필수 권한</h2>
 <p>
-    연락처 제공자에 액세스하고자 하는 애플리케이션은 다음 권한을 
+    연락처 제공자에 액세스하고자 하는 애플리케이션은 다음 권한을
 요청해야 합니다.
 </p>
 <dl>
     <dt>하나 이상의 테이블에 대한 읽기 액세스</dt>
     <dd>
-        {@link android.Manifest.permission#READ_CONTACTS}, 
-<code>AndroidManifest.xml</code>에서 
+        {@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> 요소와 함께 
+        &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>에서 
+        {@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> 요소와 함께 
+        &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.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} 권한이 
+{@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}권한을 사용하면 개발자가 기기 사용자의 
-개인 식별 데이터에 액세스할 수 있게 해줍니다. 애플리케이션 설명에서 
+    사용자의 프로필은 중요한 정보로 간주해야 한다는 점을 명심하십시오.
+{@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는 원시 연락처 또는 프로필에 대한 데이터를 검색하기 위한 
+{@link android.provider.ContactsContract.Profile#CONTENT_URI}로 설정하고
+선택 기준은 아무것도 제공하지 마십시오. 이 콘텐츠 URI는 원시 연락처 또는 프로필에 대한 데이터를 검색하기 위한
 기본 URI로도 쓸 수 있습니다. 예를 들어, 이 코드 조각은 프로필에 대한 데이터를 검색합니다.
 </p>
 <pre>
@@ -639,18 +639,18 @@
                 null);
 </pre>
 <p class="note">
-    <strong>참고:</strong> 여러 개의 연락처 행을 검색하고 그 중 하나가 
-사용자 프로필인지 판별하고자 하는 경우, 
-행의 {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} 열을 테스트합니다. 이 열은 
+    <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} 테이블 등의 여러 장소에 저장됩니다. 다음 표는 각 메타데이터 조각이 미치는 
+{@link android.provider.ContactsContract.Settings} 테이블 및
+{@link android.provider.ContactsContract.SyncState} 테이블 등의 여러 장소에 저장됩니다. 다음 표는 각 메타데이터 조각이 미치는
 영향을 나타낸 것입니다.
 </p>
 <p class="table-caption" id="table3">
@@ -667,14 +667,14 @@
         <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
         <td>"0" - 마지막 동기화 이후로 변경되지 않았습니다.</td>
         <td rowspan="2">
-            기기에서 변경되었고 서버로 다시 동기화되어야 하는 원시 데이터를 
-표시합니다. 이 값은 Android 애플리케이션이 행을 업데이트하면 연락처 제공자가 
+            기기에서 변경되었고 서버로 다시 동기화되어야 하는 원시 데이터를
+표시합니다. 이 값은 Android 애플리케이션이 행을 업데이트하면 연락처 제공자가
 자동으로 설정합니다.
             <p>
-                원시 연락처나 데이터 테이블을 수정하는 동기화 어댑터는 
-언제나 문자열 {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}를 
+                원시 연락처나 데이터 테이블을 수정하는 동기화 어댑터는
+언제나 문자열 {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}를
 자신이 사용하는 콘텐츠 URI에 추가해야 합니다. 이렇게 하면 제공자가 행을 변경(dirty)으로 표시하지 못하게 방지합니다.
-                그렇지 않으면, 동기화 어댑터 수정이 로컬 수정으로 나타나며 
+                그렇지 않으면, 동기화 어댑터 수정이 로컬 수정으로 나타나며
 서버가 수정의 근원이었다 하더라도 이 내용이 다시 서버로 전송됩니다.
             </p>
         </td>
@@ -687,7 +687,7 @@
         <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
         <td>이 행의 버전 번호입니다.</td>
         <td>
-            연락처 제공자는 행이나 관련 데이터가 변경될 때마다 이 값을 자동으로 
+            연락처 제공자는 행이나 관련 데이터가 변경될 때마다 이 값을 자동으로
 증가시킵니다.
         </td>
     </tr>
@@ -696,7 +696,7 @@
         <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
         <td>이 행의 버전 번호입니다.</td>
         <td>
-            연락처 제공자는 데이터 행이 변경될 때마다 이 값을 자동으로 
+            연락처 제공자는 데이터 행이 변경될 때마다 이 값을 자동으로
 증가시킵니다.
         </td>
     </tr>
@@ -704,33 +704,33 @@
         <td>{@link android.provider.ContactsContract.RawContacts}</td>
         <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
         <td>
-            이 원시 연락처를 자신이 생성된 계정에 대해 고유하게 식별하는 
+            이 원시 연락처를 자신이 생성된 계정에 대해 고유하게 식별하는
 문자열 값입니다.
         </td>
         <td>
-            동기화 어댑터가 새로운 원시 연락처를 생성하면, 이 열이 
-해당 원시 연락처에 대한 서버의 고유 ID로 설정되어야 합니다. Android 애플리케이션이 새로운 원시 연락처를 생성하면, 
-애플리케이션은 이 열을 빈 채로 두어야 합니다. 이것은 동기화 어댑터에 
-서버에 새 원시 데이터를 생성해야 한다고 신호하고, 
+            동기화 어댑터가 새로운 원시 연락처를 생성하면, 이 열이
+해당 원시 연락처에 대한 서버의 고유 ID로 설정되어야 합니다. Android 애플리케이션이 새로운 원시 연락처를 생성하면,
+애플리케이션은 이 열을 빈 채로 두어야 합니다. 이것은 동기화 어댑터에
+서버에 새 원시 데이터를 생성해야 한다고 신호하고,
 {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}에 대한 값을 가져오라고 알립니다.
             <p>
-                특히, 소스 ID는 각 계정 유형에 대해 <strong>고유</strong>해야 하고 
+                특히, 소스 ID는 각 계정 유형에 대해 <strong>고유</strong>해야 하고
 동기화 전체에서 안정적이어야 합니다.
             </p>
                 <ul>
                     <li>
-                        고유: 하나의 계정에 대한 각 원시 연락처에는 나름의 소스 ID가 있어야 합니다. 개발자가 
+                        고유: 하나의 계정에 대한 각 원시 연락처에는 나름의 소스 ID가 있어야 합니다. 개발자가
 이것을 강제 적용하지 않으면 연락처 애플리케이션에 문제를 유발하게 됩니다.
-                        같은 계정 <em>유형</em>에 대한 두 개의 원시 연락처는 소스 ID가 
-같을 수 있다는 점을 유의하십시오. 예를 들어, 
-{@code emily.dickinson@gmail.com} 계정에 대한 원시 연락처 "Thomas Higginson"은 
-{@code emilyd@gmail.com} 계정에 대한 
+                        같은 계정 <em>유형</em>에 대한 두 개의 원시 연락처는 소스 ID가
+같을 수 있다는 점을 유의하십시오. 예를 들어,
+{@code emily.dickinson@gmail.com} 계정에 대한 원시 연락처 "Thomas Higginson"은
+{@code emilyd@gmail.com} 계정에 대한
 원시 연락처 "Thomas Higginson"과 소스 ID가 같을 수 있습니다.
                     </li>
                     <li>
-                        안정적: 소스 ID는 원시 연락처에 대한 온라인 서비스의 데이터 중 영구적인 
-부분입니다. 예를 들어, 사용자가 앱 설정에서 연락처 저장소를 삭제하고 다시 동기화하면 
-복원된 원시 연락처의 소스 ID는 전과 같아야 
+                        안정적: 소스 ID는 원시 연락처에 대한 온라인 서비스의 데이터 중 영구적인
+부분입니다. 예를 들어, 사용자가 앱 설정에서 연락처 저장소를 삭제하고 다시 동기화하면
+복원된 원시 연락처의 소스 ID는 전과 같아야
 합니다. 개발자가 이것을 강제 적용하지 않으면 바로 가기가 더 이상
  작동하지 않습니다.
                     </li>
@@ -742,7 +742,7 @@
         <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
         <td>"0" - 이 그룹의 연락처는 Android 애플리케이션 UI에 표시되지 않아야 합니다.</td>
         <td>
-            이 열은 사용자가 특정 그룹에 연락처를 숨길 수 있게 해주는 서버와의 
+            이 열은 사용자가 특정 그룹에 연락처를 숨길 수 있게 해주는 서버와의
 호환성을 위한 것입니다.
         </td>
     </tr>
@@ -754,22 +754,22 @@
         <td rowspan="2">
             {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
         <td>
-            "0" - 이 계정과 계정 유형의 경우, 그룹에 속하지 않는 연락처는 Android 애플리케이션 UI에 
+            "0" - 이 계정과 계정 유형의 경우, 그룹에 속하지 않는 연락처는 Android 애플리케이션 UI에
 표시되지 않습니다.
         </td>
         <td rowspan="2">
-            기본적으로, 연락처에 그룹에 속한 원시 데이터가 하나도 없는 경우 이는 표시되지 않습니다(원시 연락처의 그룹 구성원은 
-{@link android.provider.ContactsContract.Data} 테이블에서 
-하나 이상의 {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 행으로 
+            기본적으로, 연락처에 그룹에 속한 원시 데이터가 하나도 없는 경우 이는 표시되지 않습니다(원시 연락처의 그룹 구성원은
+{@link android.provider.ContactsContract.Data} 테이블에서
+하나 이상의 {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 행으로
 표시됩니다).
-            계정 유형과 계정에 대한 {@link android.provider.ContactsContract.Settings} 테이블 행에서 
+            계정 유형과 계정에 대한 {@link android.provider.ContactsContract.Settings} 테이블 행에서
 이 플래그를 설정하면 그룹이 없는 연락처가 표시되도록 강제할 수 있습니다.
             이 플래그의 용도 중 하나는 그룹을 사용하지 않는 서버로부터 가져온 연락처를 표시하는 것입니다.
         </td>
     </tr>
     <tr>
         <td>
-            "1" - 이 계정과 계정 유형의 경우, 그룹에 속하지 않는 연락처가 애플리케이션 UI에 
+            "1" - 이 계정과 계정 유형의 경우, 그룹에 속하지 않는 연락처가 애플리케이션 UI에
 표시됩니다.
         </td>
 
@@ -781,14 +781,14 @@
             이 테이블을 사용하여 동기화 어댑터의 메타데이터를 저장합니다.
         </td>
         <td>
-            이 테이블을 사용하면 동기화 상태와 기타 동기화 관련 데이터를 기기에 영구적으로 
+            이 테이블을 사용하면 동기화 상태와 기타 동기화 관련 데이터를 기기에 영구적으로
 저장할 수 있습니다.
         </td>
     </tr>
 </table>
 <h2 id="Access">연락처 제공자 액세스</h2>
 <p>
-    이 섹션은 연락처 제공자에서 가져온 데이터에 액세스하는 법에 대한 지침을 제공하며, 
+    이 섹션은 연락처 제공자에서 가져온 데이터에 액세스하는 법에 대한 지침을 제공하며,
 요점은 다음과 같습니다.
 </p>
 <ul>
@@ -806,49 +806,49 @@
     </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> 구조를 
+    연락처 제공자 테이블은 계층을 사용하여 조직화되어 있으므로,
+행과 그 행에 연결된 모든 "하위" 행을 검색하는 것이 유용할 때가 많습니다. 예를 들어,
+어떤 개인의 모든 정보를 표시하려면
+하나의 {@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.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로 검색하지 않아도 된다는 뜻입니다. 또한, 연락처 제공자에는 엔티티에 대한 쿼리를 
-하나의 트랜잭션으로 처리하므로, 검색된 데이터가 내부적으로 일관성을 유지하도록 
+    엔티티는 쿼리를 단순화합니다. 엔티티를 사용하면 연락처나 원시 연락처에 대한 모든 연락처 데이터를
+한꺼번에 검색할 수 있습니다. 즉 우선 상위 테이블을 검색하여 ID를 가져오고, 그런 다음
+하위 테이블을 그 ID로 검색하지 않아도 된다는 뜻입니다. 또한, 연락처 제공자에는 엔티티에 대한 쿼리를
+하나의 트랜잭션으로 처리하므로, 검색된 데이터가 내부적으로 일관성을 유지하도록
 보장합니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 하나의 엔티티에 상위 및 하위 테이블의 모든 열이 들어있지는 않은 것이 
-보통입니다. 엔티티에 대한 열 이름 상수 목록에 없는 열 이름으로 작업하려 시도하면, 
+    <strong>참고:</strong> 하나의 엔티티에 상위 및 하위 테이블의 모든 열이 들어있지는 않은 것이
+보통입니다. 엔티티에 대한 열 이름 상수 목록에 없는 열 이름으로 작업하려 시도하면,
 {@link java.lang.Exception}이 발생합니다.
 </p>
 <p>
-    다음 조각은 하나의 연락처에 대해 모든 원시 연락처 행을 검색하는 방법을 나타낸 것입니다. 이 조각은 
-두 개의 액티비티, 즉 "기본"과 "세부"를 가진 더 큰 애플리케이션의 일부입니다. 기본 액티비티는 
-연락처 행 목록을 보여줍니다. 사용자가 하나를 선택하면, 이 액티비티가 해당 목록의 ID를 
-세부 액티비티에 전송합니다. 세부 액티비티는 {@link android.provider.ContactsContract.Contacts.Entity}를 사용하여 
-선택된 연락처와 연관된 모든 원시 연락처에서 
+    다음 조각은 하나의 연락처에 대해 모든 원시 연락처 행을 검색하는 방법을 나타낸 것입니다. 이 조각은
+두 개의 액티비티, 즉 "기본"과 "세부"를 가진 더 큰 애플리케이션의 일부입니다. 기본 액티비티는
+연락처 행 목록을 보여줍니다. 사용자가 하나를 선택하면, 이 액티비티가 해당 목록의 ID를
+세부 액티비티에 전송합니다. 세부 액티비티는 {@link android.provider.ContactsContract.Contacts.Entity}를 사용하여
+선택된 연락처와 연관된 모든 원시 연락처에서
 모든 데이터 행을 표시합니다.
 </p>
 <p>
@@ -921,71 +921,71 @@
 }
 </pre>
 <p>
-    로딩이 완료되면, {@link android.app.LoaderManager}가 
+    로딩이 완료되면, {@link android.app.LoaderManager}가
 {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
-onLoadFinished()}에 대한 콜백을 호출합니다. 이 메서드로 수신되는 인수 중 하나가 
-{@link android.database.Cursor}로, 여기에 쿼리 결과도 함께 들어옵니다. 개발자 본인의 앱에서는, 이 
+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.ContentProviderOperation} 객체의 {@link java.util.ArrayList}를 생성하고
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 호출하면 됩니다. 연락처 제공자는
 
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에서의 모든 작업을 
-하나의 트랜잭션으로 수행하기 때문에, 수정한 내용이 일관되지 않은 상태로 연락처 리포지토리를 
-떠날 일이 결코 없습니다. 일괄 수정을 사용하면 원시 연락처와 그 세부 데이터를 동시에 삽입하는 것도 
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에서의 모든 작업을
+하나의 트랜잭션으로 수행하기 때문에, 수정한 내용이 일관되지 않은 상태로 연락처 리포지토리를
+떠날 일이 결코 없습니다. 일괄 수정을 사용하면 원시 연락처와 그 세부 데이터를 동시에 삽입하는 것도
 쉽습니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> <em>하나의</em> 원시 연락처를 수정하려면 수정 작업을 앱에서 처리하는 것보다는 
-인텐트를 기기의 연락처 애플리케이션에 보내는 방안을 고려하십시오. 
-이렇게 하는 방법이 
+    <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}에서 다음 작업을 계속 진행하고 
+ 연락처 제공자가 양보 지점을 만나면
+다른 프로세스가 실행되도록 작업을 잠시 멈추고 현재 트랜잭션을 종료합니다. 제공자가 다시 시작되면, 이는
+{@link java.util.ArrayList}에서 다음 작업을 계속 진행하고
 새 트랜잭션을 시작합니다.
 </p>
 <p>
-    양보 지점을 사용하면 그 결과 
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}로의 호출 한 건당 하나 이상의 트랜잭션이 생기는 것은 사실입니다. 이 때문에, 
+    양보 지점을 사용하면 그 결과
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}로의 호출 한 건당 하나 이상의 트랜잭션이 생기는 것은 사실입니다. 이 때문에,
  양보 지점은 관련된 행 한 세트에서 마지막 작업에 설정해야 합니다.
-    예를 들어, 원시 연락처 행과 관련된 데이터 행을 추가하는 세트의 마지막 작업에 
-양보 지점을 설정하거나, 하나의 연락처와 관련된 행 한 세트의 
+    예를 들어, 원시 연락처 행과 관련된 데이터 행을 추가하는 세트의 마지막 작업에
+양보 지점을 설정하거나, 하나의 연락처와 관련된 행 한 세트의
 마지막 작업에 양보 지점을 설정해야 합니다.
 </p>
 <p>
-    양보 지점은 원자성 작업의 단위이기도 합니다. 두 개의 양보 지점 사이를 향한 액세스는 모두 
-한 가지 단위로서 성공 또는 실패합니다. 양보 지점을 설정하지 않는 경우, 가장 작은 
-원자성 작업은 작업 전체가 됩니다. 양보 지점을 사용하면, 작업이 
-시스템 성능을 저하하지 않도록 방지하는 동시에 작업의 하위 세트가 원자성 작업이도록 
+    양보 지점은 원자성 작업의 단위이기도 합니다. 두 개의 양보 지점 사이를 향한 액세스는 모두
+한 가지 단위로서 성공 또는 실패합니다. 양보 지점을 설정하지 않는 경우, 가장 작은
+원자성 작업은 작업 전체가 됩니다. 양보 지점을 사용하면, 작업이
+시스템 성능을 저하하지 않도록 방지하는 동시에 작업의 하위 세트가 원자성 작업이도록
 보장할 수 있습니다.
 </p>
 <h4>수정 역참조</h4>
 <p>
-    새로운 원시 연락처 행과 관련 데이터 행을 
-일련의 {@link android.content.ContentProviderOperation} 개체로 삽입할 때는, 
- 원시 연락처의 
+    새로운 원시 연락처 행과 관련 데이터 행을
+일련의 {@link android.content.ContentProviderOperation} 개체로 삽입할 때는,
+ 원시 연락처의
 {@code android.provider.BaseColumns#_ID} 값을
-{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 값으로 삽입하여 데이터 행과 원시 연락처 행을 연결해야 합니다. 그러나, 이 값은 
-데이터 행에 대하여 {@link android.content.ContentProviderOperation}을 
+{@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>
@@ -997,29 +997,29 @@
             <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> 값으로 
+값의 0 기반 색인입니다.
+일괄 작업이 적용되면 각 작업의 결과가
+결과의 중간 배열에 저장됩니다. <code>previousResult</code> 값은
+이러한 결과 중 하나의 색인이고, 이는 <code>key</code> 값으로
 검색 및 저장됩니다. 이것을 사용하면 새 원시 연락처 레코드를 삽입하고
-{@code android.provider.BaseColumns#_ID} 값을 다시 가져온 뒤, 
+{@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.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}을 발생시킵니다.
 
@@ -1027,15 +1027,15 @@
         </dd>
     </dl>
 <p>
-    다음 조각은 새로운 원시 연락처와 데이터를 일괄 삽입하는 방법을 나타낸 것입니다. 여기에는 
-양보 지점을 지정하고 역참조를 사용하는 코드가 포함되어 있습니다. 이 조각은 
-<code>createContacEntry()</code> 메서드의 확장 버전이며, 이는 
+    다음 조각은 새로운 원시 연락처와 데이터를 일괄 삽입하는 방법을 나타낸 것입니다. 여기에는
+양보 지점을 지정하고 역참조를 사용하는 코드가 포함되어 있습니다. 이 조각은
+<code>createContacEntry()</code> 메서드의 확장 버전이며, 이는
 <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
-    Contact Manager</a></code> 샘플 애플리케이션에 있는 <code>ContactAdder</code> 클래스의 
+    Contact Manager</a></code> 샘플 애플리케이션에 있는 <code>ContactAdder</code> 클래스의
 일부입니다.
 </p>
 <p>
-    첫 번째 조각은 UI에서 연락처 데이터를 검색합니다. 이 시점에서 사용자는 이미 
+    첫 번째 조각은 UI에서 연락처 데이터를 검색합니다. 이 시점에서 사용자는 이미
 새로운 원시 연락처를 추가할 계정을 선택하였습니다.
 </p>
 <pre>
@@ -1055,7 +1055,7 @@
             mContactEmailTypeSpinner.getSelectedItemPosition());
 </pre>
 <p>
-    다음 조각은 
+    다음 조각은
 {@link android.provider.ContactsContract.RawContacts} 테이블에 원시 연락처 행을 삽입하는 작업을 생성합니다.
 </p>
 <pre>
@@ -1086,18 +1086,18 @@
     그런 다음, 코드가 표시 이름, 전화 및 이메일 행에 대한 데이터 행을 생성합니다.
 </p>
 <p>
-    각 작업 빌더 개체는 
-{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}를 
+    각 작업 빌더 개체는
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}를
 사용하여
-{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}를 가져옵니다. 참조는 
-첫 번째 작업의 {@link android.content.ContentProviderResult} 객체를 다시 가리키고, 
+{@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} 객체는
 양보 지점을 설정하는 {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
 withYieldAllowed()}로 플래그 표시합니다.
 </p>
@@ -1172,8 +1172,8 @@
     ops.add(op.build());
 </pre>
 <p>
-    마지막 조각은 새로운 원시 연락처와 데이터 행을 삽입하는 
-{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에 대한 호출을 
+    마지막 조각은 새로운 원시 연락처와 데이터 행을 삽입하는
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에 대한 호출을
 나타낸 것입니다.
 </p>
 <pre>
@@ -1205,32 +1205,32 @@
 }
 </pre>
 <p>
-    일괄 작업을 사용하면 <strong>낙관적 동시성 제어</strong>도 구현할 수 있습니다. 
+    일괄 작업을 사용하면 <strong>낙관적 동시성 제어</strong>도 구현할 수 있습니다.
 이것은 기본 리포지토리를 잠그지 않고도 수정 트랜잭션을 적용할 수 있는 메서드입니다.
-    이 메서드를 사용하려면 트랜잭션을 적용하고 동시에 발생한 
-다른 수정 사항이 있는지 확인합니다. 부합하지 않는 수정이 발생한 것을 발견하면 
+    이 메서드를 사용하려면 트랜잭션을 적용하고 동시에 발생한
+다른 수정 사항이 있는지 확인합니다. 부합하지 않는 수정이 발생한 것을 발견하면
 트랜잭션을 롤백하고 다시 시도합니다.
 </p>
 <p>
-    낙관적 동시성 제어는 한 번에 한 명의 사용자만 존재하고 데이터 리포지토리에 대한 동시 액세스가 드문 모바일 기기에 
-유용합니다. 잠금을 사용하지 않으므로 
+    낙관적 동시성 제어는 한 번에 한 명의 사용자만 존재하고 데이터 리포지토리에 대한 동시 액세스가 드문 모바일 기기에
+유용합니다. 잠금을 사용하지 않으므로
 잠금을 설정하거나 다른 트랜잭션이 잠금을 해제하기를 기다리면서 시간을 낭비하지 않습니다.
 </p>
 <p>
-    하나의 
+    하나의
 {@link android.provider.ContactsContract.RawContacts} 행을 업데이트하면서 동시에 낙관적 동시성 제어를 사용하려면, 다음 단계를 따르십시오.
 </p>
 <ol>
     <li>
-        검색하는 다른 데이터와 함께 행 연락처의 {@link android.provider.ContactsContract.SyncColumns#VERSION}을 
+        검색하는 다른 데이터와 함께 행 연락처의 {@link android.provider.ContactsContract.SyncColumns#VERSION}을
 검색합니다.
     </li>
     <li>
-        제약을 강제 적용하는 데 적합한 
-{@link android.content.ContentProviderOperation.Builder} 객체를 하나 생성하되 
-{@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 메서드를 사용합니다. 콘텐츠 URI의 경우, 
+        제약을 강제 적용하는 데 적합한
+{@link android.content.ContentProviderOperation.Builder} 객체를 하나 생성하되
+{@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 메서드를 사용합니다. 콘텐츠 URI의 경우,
 {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
-        RawContacts.CONTENT_URI}를 사용하되 
+        RawContacts.CONTENT_URI}를 사용하되
 이에 추가된 원시 데이터의 {@code android.provider.BaseColumns#_ID}를 함께 씁니다.
     </li>
     <li>
@@ -1256,13 +1256,13 @@
 </ol>
 <p>
     행을 읽고 수정하려고 시도하는 사이에 다른 작업이 원시 연락처 행을 업데이트하면,
-"어설션" {@link android.content.ContentProviderOperation}은 
-실패하고 전체 일괄 작업이 취소됩니다. 그러면 일괄 작업을 다시 시도하거나 
+"어설션" {@link android.content.ContentProviderOperation}은
+실패하고 전체 일괄 작업이 취소됩니다. 그러면 일괄 작업을 다시 시도하거나
 다른 조치를 취하기로 선택할 수 있습니다.
 </p>
 <p>
-    다음 조각은 {@link android.content.CursorLoader}를 사용하여 단일 원시 연락처를 쿼리한 후 
-"어설션" {@link android.content.ContentProviderOperation}을 
+    다음 조각은 {@link android.content.CursorLoader}를 사용하여 단일 원시 연락처를 쿼리한 후
+"어설션" {@link android.content.ContentProviderOperation}을
 생성하는 방법을 나타낸 것입니다.
 </p>
 <pre>
@@ -1311,8 +1311,8 @@
 </pre>
 <h3 id="Intents">인텐트로 검색 및 수정</h3>
 <p>
-    기기 연락처 애플리케이션에 인텐트를 전송하면 연락처 제공자에 
-간접적으로 액세스할 수 있습니다. 인텐트는 기기의 연락처 애플리케이션 UI를 시작하고, 여기서 사용자는 
+    기기 연락처 애플리케이션에 인텐트를 전송하면 연락처 제공자에
+간접적으로 액세스할 수 있습니다. 인텐트는 기기의 연락처 애플리케이션 UI를 시작하고, 여기서 사용자는
 연락처 관련 작업을 할 수 있습니다. 사용자가 이런 액세스 유형을 가지고 할 수 있는 일은 다음과 같습니다.
     <ul>
         <li>목록에서 연락처를 선택하고 추가 작업을 위해 앱에 반환시킵니다.</li>
@@ -1321,20 +1321,20 @@
         <li>연락처 또는 연락처 데이터를 삭제합니다.</li>
     </ul>
 <p>
-    사용자가 데이터를 삽입하거나 업데이트하고 있다면, 먼저 데이터를 수집하고 
+    사용자가 데이터를 삽입하거나 업데이트하고 있다면, 먼저 데이터를 수집하고
 인텐트의 일부로 전송할 수 있습니다.
 </p>
 <p>
-    인텐트를 사용하여 기기의 연락처 애플리케이션을 통해 연락처 제공자에 액세스하는 경우 
-제공자에 액세스하기 위해 개발자 나름의 UI나 코드를 작성하지 않아도 됩니다. 제공자에 대한 읽기 또는 쓰기 권한도 요청하지 않아도 
-됩니다. 기기 연락처 애플리케이션은 
-연락처에 대한 읽기 권한을 위임할 수 있고, 다른 애플리케이션을 통해 수정하기 때문에 
+    인텐트를 사용하여 기기의 연락처 애플리케이션을 통해 연락처 제공자에 액세스하는 경우
+제공자에 액세스하기 위해 개발자 나름의 UI나 코드를 작성하지 않아도 됩니다. 제공자에 대한 읽기 또는 쓰기 권한도 요청하지 않아도
+됩니다. 기기 연락처 애플리케이션은
+연락처에 대한 읽기 권한을 위임할 수 있고, 다른 애플리케이션을 통해 수정하기 때문에
 쓰기 권한도 필요 없습니다.
 </p>
 <p>
-    제공자에 액세스하기 위해 인텐트를 전송하는 일반적인 과정은 
+    제공자에 액세스하기 위해 인텐트를 전송하는 일반적인 과정은
 "인텐트를 통한 데이터 액세스" 섹션의 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
-콘텐츠 제공자 기본 정보</a> 가이드에 상세히 설명되어 있습니다. 이용 가능한 작업에 대해 사용하는 동작, 
+콘텐츠 제공자 기본 정보</a> 가이드에 상세히 설명되어 있습니다. 이용 가능한 작업에 대해 사용하는 동작,
 MIME 유형 및 데이터 값은 표 4에 요약되어 있고,
 
 {@link android.content.Intent#putExtra(String, String) putExtra()}와 함께 사용할 수 있는 추가 값은
@@ -1358,20 +1358,20 @@
             다음 중 하나로 정해집니다.
             <ul>
                 <li>
-{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI}, 
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
 이는 연락처 목록을 표시합니다.
                 </li>
                 <li>
-{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI}, 
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
 이는 원시 연락처에 대한 전화 번호 목록을 표시합니다.
                 </li>
                 <li>
 {@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
-StructuredPostal.CONTENT_URI}, 
+StructuredPostal.CONTENT_URI},
 이는 원시 연락처에 대한 우편 주소 목록을 표시합니다.
                 </li>
                 <li>
-{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI}, 
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
 이는 원시 연락처에 대한 이메일 주소 목록을 표시합니다.
                 </li>
             </ul>
@@ -1380,15 +1380,15 @@
             사용하지 않음
         </td>
         <td>
-            개발자가 제공하는 콘텐츠 URI에 따라 원시 연락처 목록이나 원시 연락처에서 가져온 
+            개발자가 제공하는 콘텐츠 URI에 따라 원시 연락처 목록이나 원시 연락처에서 가져온
 데이터 목록을 표시합니다.
             <p>
-                
-{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 호출, 
-이는 선택한 행의 콘텐츠 URI를 반환합니다. URI의 형태는 
+
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 호출,
+이는 선택한 행의 콘텐츠 URI를 반환합니다. URI의 형태는
 테이블의 콘텐츠 URI에 행의 <code>LOOKUP_ID</code>를 추가한 것입니다.
-                기기의 연락처 앱은 액티비티 수명 동안 이 콘텐츠 URI에 
-읽기 및 쓰기 권한을 위임합니다. 자세한 내용은 
+                기기의 연락처 앱은 액티비티 수명 동안 이 콘텐츠 URI에
+읽기 및 쓰기 권한을 위임합니다. 자세한 내용은
 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
 콘텐츠 제공자 기본 정보</a> 가이드를 참조하십시오.
             </p>
@@ -1403,12 +1403,12 @@
 RawContacts.CONTENT_TYPE}, 일련의 원시 연락처에 대한 MIME 유형입니다.
         </td>
         <td>
-            기기의 연락처 애플리케이션의 <strong>연락처 추가</strong> 화면을 표시합니다. 개발자가 
-인텐트에 추가하는 추가 사항 값이 표시됩니다. 
+            기기의 연락처 애플리케이션의 <strong>연락처 추가</strong> 화면을 표시합니다. 개발자가
+인텐트에 추가하는 추가 사항 값이 표시됩니다.
 {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()}와 함께 전송되는 경우,
-새로 추가된 원시 연락처의 콘텐츠 URI는 
+새로 추가된 원시 연락처의 콘텐츠 URI는
 "데이터" 필드의 {@link android.content.Intent} 인수에 있는 액티비티의 {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
-콜백 메서드로 
+콜백 메서드로
 다시 전달됩니다. 값을 가져오려면, {@link android.content.Intent#getData()}를 호출합니다.
         </td>
     </tr>
@@ -1416,16 +1416,16 @@
         <td><strong>연락처 편집</strong></td>
         <td>{@link android.content.Intent#ACTION_EDIT}</td>
         <td>
-            연락처에 대한 
-{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}입니다. 편집자 액티비티를 사용하면 사용자가 이 연락처와 관련된 데이터를 어느 것이든 
+            연락처에 대한
+{@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>를 클릭하여 편집 내용을 저장하면, 
+            연락처 애플리케이션에 연락처 편집 화면을 표시합니다. 개발자가
+인텐트에 추가하는 추가 사항 값이 표시됩니다. 사용자가 <strong>완료</strong>를 클릭하여 편집 내용을 저장하면,
 액티비티가 전경으로 돌아옵니다.
         </td>
     </tr>
@@ -1439,31 +1439,31 @@
             {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
         </td>
          <td>
-            이 인텐트는 항상 연락처 앱의 선택기 화면을 표시합니다. 사용자는 
-편집할 연락처를 선택하거나 새 연락처를 추가할 수 있습니다. 사용자의 선택에 따라 
-편집 또는 추가 화면이 나타나고 개발자가 인텐트에 전달하는 추가 사항 데이터가 
-표시됩니다. 앱이 이메일이나 전화 번호 등의 연락처 데이터를 표시하는 경우, 
-이 인텐트를 사용하면 사용자가 기존 연락처에 데이터를 추가할 수 
+            이 인텐트는 항상 연락처 앱의 선택기 화면을 표시합니다. 사용자는
+편집할 연락처를 선택하거나 새 연락처를 추가할 수 있습니다. 사용자의 선택에 따라
+편집 또는 추가 화면이 나타나고 개발자가 인텐트에 전달하는 추가 사항 데이터가
+표시됩니다. 앱이 이메일이나 전화 번호 등의 연락처 데이터를 표시하는 경우,
+이 인텐트를 사용하면 사용자가 기존 연락처에 데이터를 추가할 수
 있습니다.
             <p class="note">
-                <strong>참고:</strong> 이 인텐트의 추가 사항에서는 이름 값을 전송하지 않아도 됩니다. 
-사용자가 항상 기존의 이름을 선택하거나 새 이름을 추가하기 때문입니다. 게다가, 
-개발자가 이름을 전송하고 사용자가 편집을 선택하면 연락처 앱은 개발자가 전송한 이름을 표시하면서 
-이전 값을 재정의하게 됩니다. 사용자가 
+                <strong>참고:</strong> 이 인텐트의 추가 사항에서는 이름 값을 전송하지 않아도 됩니다.
+사용자가 항상 기존의 이름을 선택하거나 새 이름을 추가하기 때문입니다. 게다가,
+개발자가 이름을 전송하고 사용자가 편집을 선택하면 연락처 앱은 개발자가 전송한 이름을 표시하면서
+이전 값을 재정의하게 됩니다. 사용자가
 이를 눈치채지 못하고 편집 내용을 저장하면 이전 값은 손실됩니다.
             </p>
          </td>
     </tr>
 </table>
 <p>
-    기기의 연락처 앱은 개발자가 인텐트로 원시 연락처 또는 그에 속한 모든 데이터를 삭제하도록 
-허용하지 않습니다. 대신, 원시 연락처를 삭제하려면 
-{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()} 
+    기기의 연락처 앱은 개발자가 인텐트로 원시 연락처 또는 그에 속한 모든 데이터를 삭제하도록
+허용하지 않습니다. 대신, 원시 연락처를 삭제하려면
+{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
 또는 {@link android.content.ContentProviderOperation#newDelete(Uri)
 ContentProviderOperation.newDelete()}를 사용합니다.
 </p>
 <p>
-    다음 조각은 새로운 원시 연락처와 
+    다음 조각은 새로운 원시 연락처와
 데이터를 삽입하는 인텐트를 구성, 전송하는 방법을 나타낸 것입니다.
 </p>
 <pre>
@@ -1560,65 +1560,65 @@
 </pre>
 <h3 id="DataIntegrity">데이터 무결성</h3>
 <p>
-    연락처 리포지토리에는 사용자 측에서 올바르고 최신일 것으로 기대하는 중요하고 민감한 데이터가 들어있으므로 
-연락처 제공자는 데이터 무결성에 대한 잘 정의된 규칙이 있습니다. 개발자 
-여러분에게는 연락처 데이터를 수정할 때 이와 같은 규칙을 준수할 의무가 있습니다. 아래에는 중요한 규칙을 
+    연락처 리포지토리에는 사용자 측에서 올바르고 최신일 것으로 기대하는 중요하고 민감한 데이터가 들어있으므로
+연락처 제공자는 데이터 무결성에 대한 잘 정의된 규칙이 있습니다. 개발자
+여러분에게는 연락처 데이터를 수정할 때 이와 같은 규칙을 준수할 의무가 있습니다. 아래에는 중요한 규칙을
 몇 가지 나열해 놓았습니다.
 </p>
 <dl>
     <dt>
-        {@link android.provider.ContactsContract.RawContacts} 행을 추가할 때마다 언제나 
+        {@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} 행이 있으면 
+        {@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.Data} 행을
 해당 상위 {@link android.provider.ContactsContract.RawContacts} 행에 연결합니다.
     </dt>
     <dd>
-        {@link android.provider.ContactsContract.RawContacts}에 연결되지 않은 {@link android.provider.ContactsContract.Data} 행은 
-기기 연락처 애플리케이션에 표시되지 않고, 
+        {@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} 값에 대해서는 항상 
+        권한, 콘텐츠 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}에서 
-정의된 열만 사용하도록 제한되어 있습니다. 다만 나름의 유형별 열 이름을 
-기본 열 이름에 매핑할 수는 있습니다. 기기의 연락처 애플리케이션에서는 
-개발자의 행에 대한 데이터가 표시는 되지만 편집이나 삭제는 할 수 없고, 사용자가 추가 데이터를 
-추가할 수도 없습니다. 사용자가 개발자의 사용자 지정 데이터 행을 수정하도록 허용하려면, 본인의 애플리케이션에 
+{@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> 파일을 
+    개발자의 사용자 지정 데이터를 표시하려면, <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>
@@ -1628,15 +1628,15 @@
 </p>
 <h2 id="SyncAdapters">연락처 제공자 동기화 어댑터</h2>
 <p>
-    연락처 제공자는 기기와 온라인 서비스 사이에서 연락처 데이터의 <strong>동기화</strong>를 
-처리한다는 구체적인 목적을 두고 디자인된 것입니다. 이것을 사용하면 사용자가 기존의 
+    연락처 제공자는 기기와 온라인 서비스 사이에서 연락처 데이터의 <strong>동기화</strong>를
+처리한다는 구체적인 목적을 두고 디자인된 것입니다. 이것을 사용하면 사용자가 기존의
 데이터를 새 기기에 다운로드할 수도 있고, 기존의 데이터를 새 계정에 업로드할 수도 있습니다.
-    동기화를 사용하면 사용자가 추가나 변경의 출처와 관계 없이 최신 데이터를 
-편리하게 사용할 수 있게 보장하기도 합니다. 동기화의 또 다른 장점은 
+    동기화를 사용하면 사용자가 추가나 변경의 출처와 관계 없이 최신 데이터를
+편리하게 사용할 수 있게 보장하기도 합니다. 동기화의 또 다른 장점은
 기기가 네트워크에 연결되어 있지 않더라도 연락처 데이터를 사용할 수 있다는 것입니다.
 </p>
 <p>
-    다양한 방식으로 동기화를 구현할 수 있지만, Android 시스템은 
+    다양한 방식으로 동기화를 구현할 수 있지만, Android 시스템은
 플러그인 동기화 프레임워크를 제공하여 다음과 같은 작업들을 자동화해줍니다.
     <ul>
 
@@ -1651,40 +1651,40 @@
     </li>
     </ul>
 <p>
-    이 프레임워크를 사용하려면 동기화 어댑터 플러그인은 개발자가 직접 제공해야 합니다. 동기화 어댑터는 
-서비스와 콘텐츠 제공자마다 각기 다르지만, 같은 서비스에 대해 여러 개의 계정 이름을 처리할 수 있습니다. 이 
+    이 프레임워크를 사용하려면 동기화 어댑터 플러그인은 개발자가 직접 제공해야 합니다. 동기화 어댑터는
+서비스와 콘텐츠 제공자마다 각기 다르지만, 같은 서비스에 대해 여러 개의 계정 이름을 처리할 수 있습니다. 이
 프레임워크 또한 같은 서비스와 제공자에 대해 여러 개의 동기화 어댑터를 허용합니다.
 </p>
 <h3 id="SyncClassesFiles">동기화 어댑터 클래스 및 파일</h3>
 <p>
-    동기화 어댑터를 
-{@link android.content.AbstractThreadedSyncAdapter}의 
-하위 클래스로 구현하고 이를Android 애플리케이션의 일부로 설치합니다. 시스템은 애플리케이션 매니페스트의 요소와 매니페스트가 가리키는 
-특수 XML 파일에서 동기화 어댑터에 관한 정보를 얻습니다. XML 파일은 
-온라인 서비스와 콘텐츠 제공자의 권한에 대한 계정 유형을 정의하고, 
-이들이 함께 어댑터를 고유하게 식별합니다. 동기화 어댑터가 활성화되려면 사용자가 
-동기화 어댑터의 계정 유형에 대해 계정을 추가하고 해당 동기화 어댑터와 동기화하는 콘텐츠 제공자의 동기화를 
-활성화해야 합니다.  이 시점에서, 시스템이 어댑터 관리를 시작하고, 
+    동기화 어댑터를
+{@link android.content.AbstractThreadedSyncAdapter}의
+하위 클래스로 구현하고 이를Android 애플리케이션의 일부로 설치합니다. 시스템은 애플리케이션 매니페스트의 요소와 매니페스트가 가리키는
+특수 XML 파일에서 동기화 어댑터에 관한 정보를 얻습니다. XML 파일은
+온라인 서비스와 콘텐츠 제공자의 권한에 대한 계정 유형을 정의하고,
+이들이 함께 어댑터를 고유하게 식별합니다. 동기화 어댑터가 활성화되려면 사용자가
+동기화 어댑터의 계정 유형에 대해 계정을 추가하고 해당 동기화 어댑터와 동기화하는 콘텐츠 제공자의 동기화를
+활성화해야 합니다.  이 시점에서, 시스템이 어댑터 관리를 시작하고,
 콘텐츠 제공자와 서버 사이에서 동기화가 필요할 때 이를 호출합니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 계정 유형을 동기화 어댑터 식별의 일부로 사용하면 
-시스템이 동일한 같은 조직에서 여러 서비스에 액세스하는 동기화 어댑터를 
-감지하고 그룹화할 수 있습니다. 예를 들어, Google 온라인 서비스의 동기화 어댑터는 계정 유형이 모두 
-<code>com.google</code>로 같습니다. 사용자가 기기에 Google 계정을 추가하면, 
-Google 서비스에 설치된 모든 동기화 어댑터가 함께 목록으로 표시됩니다. 목록에 게재된 각 동기화는 
+    <strong>참고:</strong> 계정 유형을 동기화 어댑터 식별의 일부로 사용하면
+시스템이 동일한 같은 조직에서 여러 서비스에 액세스하는 동기화 어댑터를
+감지하고 그룹화할 수 있습니다. 예를 들어, Google 온라인 서비스의 동기화 어댑터는 계정 유형이 모두
+<code>com.google</code>로 같습니다. 사용자가 기기에 Google 계정을 추가하면,
+Google 서비스에 설치된 모든 동기화 어댑터가 함께 목록으로 표시됩니다. 목록에 게재된 각 동기화는
 기기에서 각기 다른 콘텐츠 제공자와 동기화합니다.
 </p>
 <p>
-    대부분의 서비스에서는 사용자가 데이터에 액세스하기 전에 
-ID를 확인해야 하기 때문에 Android에서는 동기화 어댑터 프레임워크와 비슷하면서 종종 이와 함께 쓰이기도 하는 
-인증 프레임워크를 제공합니다. 인증 프레임워크는 
-{@link android.accounts.AbstractAccountAuthenticator}의 하위 클래스인 
-플러그인 인증자를 사용합니다. 인증자는 다음 절차에 따라 
+    대부분의 서비스에서는 사용자가 데이터에 액세스하기 전에
+ID를 확인해야 하기 때문에 Android에서는 동기화 어댑터 프레임워크와 비슷하면서 종종 이와 함께 쓰이기도 하는
+인증 프레임워크를 제공합니다. 인증 프레임워크는
+{@link android.accounts.AbstractAccountAuthenticator}의 하위 클래스인
+플러그인 인증자를 사용합니다. 인증자는 다음 절차에 따라
 사용자의 ID를 확인합니다.
     <ol>
         <li>
-            사용자 이름, 암호 또는 유사한 정보(사용자의 
+            사용자 이름, 암호 또는 유사한 정보(사용자의
 <strong>자격 증명</strong>)를 수집합니다.
         </li>
         <li>
@@ -1695,9 +1695,9 @@
         </li>
     </ol>
 <p>
-    서비스가 자격 증명을 수락하면 
-인증자가 자격 증명을 저장하여 나중에 사용할 수 있습니다. 플러그인 인증자 프레임워크로 인해, 
-{@link android.accounts.AccountManager}는 Oauth2 authToken과 같이 인증자가 지원하고 노출하기로 선택하는 모든 authToken에 액세스를 
+    서비스가 자격 증명을 수락하면
+인증자가 자격 증명을 저장하여 나중에 사용할 수 있습니다. 플러그인 인증자 프레임워크로 인해,
+{@link android.accounts.AccountManager}는 Oauth2 authToken과 같이 인증자가 지원하고 노출하기로 선택하는 모든 authToken에 액세스를
 제공합니다.
 </p>
 <p>
@@ -1706,18 +1706,18 @@
 </p>
 <h3 id="SyncAdapterImplementing">동기화 어댑터 구현</h3>
 <p>
-    연락처 제공자에 대한 동기화 어댑터를 구현하려면, 
+    연락처 제공자에 대한 동기화 어댑터를 구현하려면,
 다음이 들어있는 Android 애플리케이션을 생성하는 것으로 시작합니다.
 </p>
     <dl>
         <dt>
-            시스템의 요청에 응답하여 동기화 어댑터에 바인딩하는 {@link android.app.Service} 
+            시스템의 요청에 응답하여 동기화 어댑터에 바인딩하는 {@link android.app.Service}
 구성 요소.
         </dt>
         <dd>
-            시스템이 동기화를 실행하고자 하는 경우, 이는 
+            시스템이 동기화를 실행하고자 하는 경우, 이는
 서비스의 {@link android.app.Service#onBind(Intent) onBind()} 메서드를 호출하여
-동기화 어댑터의 {@link android.os.IBinder}를 가져옵니다. 이렇게 하면 시스템이 어댑터의 
+동기화 어댑터의 {@link android.os.IBinder}를 가져옵니다. 이렇게 하면 시스템이 어댑터의
 메서드에 대해 프로세스간 호출을 수행할 수 있습니다.
             <p>
                 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
@@ -1726,18 +1726,18 @@
             </p>
         </dd>
         <dt>
-            {@link android.content.AbstractThreadedSyncAdapter}의 
+            {@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> 샘플 앱에서 동기화 어댑터는 
+샘플 동기화 어댑터</a> 샘플 앱에서 동기화 어댑터는
 <code>com.example.android.samplesync.syncadapter.SyncAdapter</code> 클래스에서 정의됩니다.
             </p>
         </dd>
@@ -1745,23 +1745,23 @@
             {@link android.app.Application}의 하위 클래스.
         </dt>
         <dd>
-            이 클래스는 동기화 어댑터 단일 항목의 팩터리 역할을 합니다. 
-{@link android.app.Application#onCreate()} 메서드는 
-동기화 어댑터를 인스턴트화하고, 단일 항목을 동기화 어댑터 서비스의 
-{@link android.app.Service#onBind(Intent) onBind()} 메서드에 반환할 정적 "getter" 메서드를 제공하는 데 
+            이 클래스는 동기화 어댑터 단일 항목의 팩터리 역할을 합니다.
+{@link android.app.Application#onCreate()} 메서드는
+동기화 어댑터를 인스턴트화하고, 단일 항목을 동기화 어댑터 서비스의
+{@link android.app.Service#onBind(Intent) onBind()} 메서드에 반환할 정적 "getter" 메서드를 제공하는 데
 사용하십시오.
         </dd>
         <dt>
-            <strong>선택 항목:</strong> 사용자 인증에 대한 시스템으로부터의 요청에 응답하는 {@link android.app.Service} 
+            <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}를 가져옵니다. 이렇게 하면 시스템이 인증자의 
+            {@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">
@@ -1770,18 +1770,18 @@
             </p>
         </dd>
         <dt>
-            <strong>선택 항목:</strong> 인증에 대한 요청을 처리하는 
-{@link android.accounts.AbstractAccountAuthenticator}의 구체적인 
+            <strong>선택 항목:</strong> 인증에 대한 요청을 처리하는
+{@link android.accounts.AbstractAccountAuthenticator}의 구체적인
 하위 클래스.
         </dt>
         <dd>
-            이 클래스는 {@link android.accounts.AccountManager}가 
-서버로 사용자 자격 증명 인증을 호출하는 메서드를 제공합니다. 인증 절차의 세부 사항은 
-사용하는 서버 기술에 따라 매우 차이가 있습니다. 인증에 대한 
+            이 클래스는 {@link android.accounts.AccountManager}가
+서버로 사용자 자격 증명 인증을 호출하는 메서드를 제공합니다. 인증 절차의 세부 사항은
+사용하는 서버 기술에 따라 매우 차이가 있습니다. 인증에 대한
 자세한 정보는 각자의 서버 소프트웨어에 해당되는 관련 문서를 참조하십시오.
             <p>
                 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
-샘플 동기화 어댑터</a> 샘플 앱에서 인증자는 
+샘플 동기화 어댑터</a> 샘플 앱에서 인증자는
 <code>com.example.android.samplesync.authenticator.Authenticator</code> 클래스에서 정의됩니다.
             </p>
         </dd>
@@ -1789,31 +1789,31 @@
             동기화 어댑터와 서버의 인증자를 정의하는 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/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와 웹 서비스에 대한 계정 유형을 
+요소는
+XML 파일 <code>res/xml/syncadapter.xml</code>을 가리킵니다. 그런가 하면
+이 파일은 연락처 제공자와 동기화될 웹 서비스에 대한 URI와 웹 서비스에 대한 계정 유형을
 나타냅니다.
                 </li>
                 <li>
-                    <strong>선택 항목:</strong> 인증자의 
+                    <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 리소스를 
-나타냅니다. 이 요소에서 지정한 계정 유형은 반드시 
-동기화 어댑터에 대해 지정된 계정 유형과 
+요소는 XML 파일
+<code>res/xml/authenticator.xml</code>을 가리킵니다. 이 파일은 다시
+이 인증이 지원하는 계정 유형과, 인증 과정 중에 표시되는 UI 리소스를
+나타냅니다. 이 요소에서 지정한 계정 유형은 반드시
+동기화 어댑터에 대해 지정된 계정 유형과
 같아야 합니다.
                 </li>
             </ul>
@@ -1821,18 +1821,18 @@
     </dl>
 <h2 id="SocialStream">소셜 스트림 데이터</h2>
 <p>
-    {@code android.provider.ContactsContract.StreamItems}와 
-{@code android.provider.ContactsContract.StreamItemPhotos} 테이블은 
-소셜 네트워크에서 수신하는 데이터를 관리합니다. 개발자는 본인의 네트워크의 스트림 데이터를 이 테이블에 추가하는 
-동기화 어댑터를 작성할 수도 있고, 이 테이블에서 스트림 데이터를 읽어서 
-본인의 애플리케이션에 표시할 수도 있으며 두 가지를 모두 해도 됩니다. 이 기능을 사용하면 소셜 네트워킹 
+    {@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> 값과 연관됩니다. 원시 연락처의 계정 유형과 계정 이름도 
+    스트림 항목은 항상 원시 연락처와 연관됩니다.
+{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}는
+원시 연락처의 <code>_ID</code> 값과 연관됩니다. 원시 연락처의 계정 유형과 계정 이름도
 스트림 항목 행에 저장됩니다.
 </p>
 <p>
@@ -1843,36 +1843,36 @@
         {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
     </dt>
     <dd>
-        <strong>필수입니다.</strong> 이 스트림 항목과 연관된 원시 연락처에 대한 
+        <strong>필수입니다.</strong> 이 스트림 항목과 연관된 원시 연락처에 대한
 사용자 계정입니다. 스트림 항목을 삽입할 때 이 값을 설정하는 것을 잊지 마십시오.
     </dd>
     <dt>
         {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
     </dt>
     <dd>
-        <strong>필수입니다.</strong> 이 스트림 항목과 연관된 원시 연락처에 대한 
+        <strong>필수입니다.</strong> 이 스트림 항목과 연관된 원시 연락처에 대한
 사용자 계정 이름입니다. 스트림 항목을 삽입할 때 이 값을 설정하는 것을 잊지 마십시오.
     </dd>
     <dt>
         식별자 열
     </dt>
     <dd>
-        <strong>필수입니다.</strong> 스트림 항목을 삽입할 때 
+        <strong>필수입니다.</strong> 스트림 항목을 삽입할 때
 다음 식별자 열을 삽입해야 합니다.
         <ul>
             <li>
-                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: 이 
-스트림 항목과 연관된 연락처의 {@code android.provider.BaseColumns#_ID} 
+                {@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} 
+                {@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} 
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: 이
+스트림 항목과 연관된 원시 연락처의 {@code android.provider.BaseColumns#_ID}
 값입니다.
             </li>
         </ul>
@@ -1887,19 +1887,19 @@
         {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
     </dt>
     <dd>
-        스트림 항목의 텍스트로, 항목의 소스가 게시한 콘텐츠 또는 
-스트림 항목을 생성하는 작업의 설명 중 하나입니다. 이 열에는 
-{@link android.text.Html#fromHtml(String) fromHtml()}가 렌더링할 수 있는 모든 서식과 포함된 리소스 이미지가 
-들어있을 수 있습니다. 제공자는 긴 콘텐츠를 
+        스트림 항목의 텍스트로, 항목의 소스가 게시한 콘텐츠 또는
+스트림 항목을 생성하는 작업의 설명 중 하나입니다. 이 열에는
+{@link android.text.Html#fromHtml(String) fromHtml()}가 렌더링할 수 있는 모든 서식과 포함된 리소스 이미지가
+들어있을 수 있습니다. 제공자는 긴 콘텐츠를
 자르거나 생략할 수 있지만, 가능하면 태그를 손상시키는 것은 피하려 듭니다.
     </dd>
     <dt>
         {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
     </dt>
     <dd>
-        스트림 항목이 삽입되거나 업데이트된 시간이 들어있는 텍스트 문자열로, 형식은 
-epoch 이후 <em>밀리초</em> 형태를 취합니다. 이 열을 관리할 책임은 
-스트림 항목을 삽입 또는 업데이트하는 애플리케이션에 있으며, 이것은 연락처 제공자가 자동으로 
+        스트림 항목이 삽입되거나 업데이트된 시간이 들어있는 텍스트 문자열로, 형식은
+epoch 이후 <em>밀리초</em> 형태를 취합니다. 이 열을 관리할 책임은
+스트림 항목을 삽입 또는 업데이트하는 애플리케이션에 있으며, 이것은 연락처 제공자가 자동으로
 유지 관리하지 않습니다.
     </dd>
 </dl>
@@ -1911,18 +1911,18 @@
 리소스를 연결하십시오.
 </p>
 <p>
-    {@code android.provider.ContactsContract.StreamItems} 테이블에도 
+    {@code android.provider.ContactsContract.StreamItems} 테이블에도
 동기화 어댑터가 독점적으로 사용하는 {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1}에서
-{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4}까지의 열이 
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4}까지의 열이
 들어있습니다.
 </p>
 <h3 id="StreamPhotos">소셜 스트림 사진</h3>
 <p>
-   {@code android.provider.ContactsContract.StreamItemPhotos} 테이블은 스트림 항목과 연관된 
-사진을 저장합니다. 테이블의 
+   {@code android.provider.ContactsContract.StreamItemPhotos} 테이블은 스트림 항목과 연관된
+사진을 저장합니다. 테이블의
 {@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} 열은
-{@code android.provider.ContactsContract.StreamItems} 테이블의 {@code android.provider.BaseColumns#_ID} 열에 있는 값과 
-연결됩니다. 사진 참조는 
+{@code android.provider.ContactsContract.StreamItems} 테이블의 {@code android.provider.BaseColumns#_ID} 열에 있는 값과
+연결됩니다. 사진 참조는
 다음 열의 테이블에 저장됩니다.
 </p>
 <dl>
@@ -1931,21 +1931,21 @@
     </dt>
     <dd>
         사진의 바이너리 표현으로, 제공자가 저장하고 표시하기 위해 크기를 조정한 것입니다.
-        이 열은 사진을 저장하는 데 사용한 연락처 제공자의 이전 버전과 
-호환됩니다. 그러나 현재 버전에서는 
-이 열을 사진 저장에 사용하면 안 됩니다. 대신, 
-{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} 또는 
+        이 열은 사진을 저장하는 데 사용한 연락처 제공자의 이전 버전과
+호환됩니다. 그러나 현재 버전에서는
+이 열을 사진 저장에 사용하면 안 됩니다. 대신,
+{@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.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}에 추가하여
+하나의 사진 파일을 가리키는 콘텐츠 URI를 가져온 다음,
 {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
 openAssetFileDescriptor()}를 호출하여 사진 파일에 대한 핸들을 가져옵니다.
     </dd>
@@ -1965,91 +1965,91 @@
     <ul>
         <li>
             이 테이블에는 추가 액세스 권한이 필요합니다. 여기서 읽기 작업을 수행하려면 애플리케이션에
-{@code android.Manifest.permission#READ_SOCIAL_STREAM} 권한이 있어야 합니다. 여기서 수정 작업을 수행하려면 
+{@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.StreamItems} 테이블의 경우, 각 원시 연락처에 저장되는
+행 개수가 제한되어 있습니다. 이 한계에 도달하면,
 연락처 제공자가 새 스트림 항목 열에 필요한 공간을 만들어야 합니다.
-이때 가장 오래된 {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}가 
-있는 행부터 자동으로 삭제하는 방법을 씁니다. 이 한계를 
-가져오려면, 콘텐츠 URI 
-{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}에 쿼리를 발행합니다. 콘텐츠 
-URI를 뺀 나머지 모든 인수는 <code>null</code>로 설정한 채 두면 됩니다. 이 쿼리는 
-행이 하나 들어 있는 커서를 반환하며, 
+이때 가장 오래된 {@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}의 
+    {@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.StreamItems} 및
 {@code android.provider.ContactsContract.StreamItemPhotos} 테이블에 저장해 두어 나중에 사용할 수 있습니다.
         </li>
         <li>
-            정기 동기화 외에도 사용자가 볼 연락처를 선택하면 동기화 어댑터를 트리거하여 
-추가 데이터를 검색하게 할 수 있습니다. 이렇게 하면 동기화 어댑터가 
+            정기 동기화 외에도 사용자가 볼 연락처를 선택하면 동기화 어댑터를 트리거하여
+추가 데이터를 검색하게 할 수 있습니다. 이렇게 하면 동기화 어댑터가
 해당 연락처의 고해상도 사진과 가장 최근 스트림 항목을 검색할 수 있습니다.
         </li>
         <li>
-            기기 연락처 애플리케이션과 연락처 제공자에 알림을 등록하면, 
-연락처가 열람될 때 인텐트를 <em>수신</em>하고, 
-그 시점에 개발자의 서비스로부터 연락처의 상태를 업데이트할 수 있습니다. 이 방법을 사용하면 동기화 어댑터로 
+            기기 연락처 애플리케이션과 연락처 제공자에 알림을 등록하면,
+연락처가 열람될 때 인텐트를 <em>수신</em>하고,
+그 시점에 개발자의 서비스로부터 연락처의 상태를 업데이트할 수 있습니다. 이 방법을 사용하면 동기화 어댑터로
 완전 동기화를 수행하는 것보다 빠르고 대역폭도 적게 사용합니다.
         </li>
         <li>
-            사용자는 기기의 연락처 애플리케이션을 보면서 여러분의 소셜 네트워킹 서비스에 
-연락처를 추가할 수 있습니다. 이는 "연락처 초대" 기능으로 사용할 수 있습니다. 
-연락처 초대 기능은 기존 연락처를 네트워크에 추가하는 액티비티와 
-기기의 연락처 애플리케이션을 제공하는 XML 파일, 
+            사용자는 기기의 연락처 애플리케이션을 보면서 여러분의 소셜 네트워킹 서비스에
+연락처를 추가할 수 있습니다. 이는 "연락처 초대" 기능으로 사용할 수 있습니다.
+연락처 초대 기능은 기존 연락처를 네트워크에 추가하는 액티비티와
+기기의 연락처 애플리케이션을 제공하는 XML 파일,
 애플리케이션의 세부 정보가 포함된 연락처 제공자를 조합하여 활성화합니다.
         </li>
     </ul>
 <p>
-    연락처 제공자로 스트림 항목을 정기 동기화하는 방법은 
-다른 동기화와 같습니다. 동기화에 관한 자세한 내용은 
-<a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a> 섹션을 참조하십시오. 알림을 등록하고 연락처를 초대하는 방법은 
+    연락처 제공자로 스트림 항목을 정기 동기화하는 방법은
+다른 동기화와 같습니다. 동기화에 관한 자세한 내용은
+<a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a> 섹션을 참조하십시오. 알림을 등록하고 연락처를 초대하는 방법은
 다음 두 섹션에서 다룰 것입니다.
 </p>
 <h4>소셜 네트워킹 보기를 처리하기 위한 등록</h4>
 <p>
-    동기화 어댑터를 등록하여 사용자가 동기화 어댑터에서 관리하는 연락처를 볼 때 알림을 
+    동기화 어댑터를 등록하여 사용자가 동기화 어댑터에서 관리하는 연락처를 볼 때 알림을
 수신하는 방법:
 </p>
 <ol>
     <li>
-        프로젝트의 <code>res/xml/</code> 디렉터리에 <code>contacts.xml</code> 파일을 
+        프로젝트의 <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가 들어있습니다. 알림 서비스에서 동기화 어댑터에 바인딩한 다음 동기화 어댑터를 호출하여 
+<code>viewContactNotifyService="<em>serviceclass</em>"</code> 속성을 요소에 추가합니다.
+이 요소에서 <code><em>serviceclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 서비스의
+완전히 정규화된 클래스 이름입니다. 알림 서비스의 경우,
+{@link android.app.IntentService}를 확장하는 클래스를 사용하여 서비스가 인텐트를 수신하도록
+허용합니다. 수신되는 인텐트의 데이터에는
+사용자가 클릭한 원시 연락처의 콘텐츠 URI가 들어있습니다. 알림 서비스에서 동기화 어댑터에 바인딩한 다음 동기화 어댑터를 호출하여
 원시 연락처의 데이터를 업데이트할 수 있습니다.
     </li>
 </ol>
@@ -2058,31 +2058,31 @@
 </p>
 <ol>
     <li>
-        프로젝트의 <code>res/xml/</code> 디렉터리에 <code>contacts.xml</code> 파일을 
+        프로젝트의 <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>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 액티비티의 
+        사용자가 기기의 연락처 애플리케이션에서 스트림 항목을 클릭했을 때
+처리할 액티비티를 등록하려면,
+<code>viewStreamItemActivity="<em>activityclass</em>"</code> 속성을 요소에 추가합니다.
+이 요소에서 <code><em>activityclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 액티비티의
 완전히 정규화된 클래스 이름입니다.
     </li>
     <li>
-        사용자가 기기의 연락처 애플리케이션에서 스트림 사진을 클릭했을 때 
+        사용자가 기기의 연락처 애플리케이션에서 스트림 사진을 클릭했을 때
 처리할 액티비티를 등록하려면,
 <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> 속성을 요소에 추가합니다.
-이 요소에서 <code><em>activityclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 액티비티의 
+이 요소에서 <code><em>activityclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 액티비티의
 완전히 정규화된 클래스 이름입니다.
     </li>
 </ol>
 <p>
-    <code>&lt;ContactsAccountType&gt;</code> 요소는 
+    <code>&lt;ContactsAccountType&gt;</code> 요소는
 <a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; 요소</a> 섹션에 자세히 설명되어 있습니다.
 </p>
 <p>
@@ -2091,17 +2091,17 @@
 </p>
 <h4>소셜 네트워킹 서비스로 상호 작용</h4>
 <p>
-    사용자는 소셜 네트워킹 사이트에 연락처를 초대할 때 
-기기의 연락처 애플리케이션을 떠나지 않아도 됩니다. 대신, 개발자가 기기의 연락처 앱에 액티비티 중 하나로 연락처를 초대하는 인텐트를 
+    사용자는 소셜 네트워킹 사이트에 연락처를 초대할 때
+기기의 연락처 애플리케이션을 떠나지 않아도 됩니다. 대신, 개발자가 기기의 연락처 앱에 액티비티 중 하나로 연락처를 초대하는 인텐트를
 보내게 할 수 있습니다. 이렇게 설정하는 방법은 다음과 같습니다.
 </p>
 <ol>
     <li>
-        프로젝트의 <code>res/xml/</code> 디렉터리에 <code>contacts.xml</code> 파일을 
+        프로젝트의 <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>
@@ -2113,25 +2113,25 @@
                 <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
             </li>
         </ul>
-        <code><em>activityclass</em></code> 값은 인텐트를 수신해야 하는 액티비티의 
+        <code><em>activityclass</em></code> 값은 인텐트를 수신해야 하는 액티비티의
 완전히 정규화된 클래스 이름입니다. <code><em>invite_action_label</em></code>
-값은 기기의 연락처 애플리케이션에 있는 <strong>연결 추가</strong> 메뉴에 
+값은 기기의 연락처 애플리케이션에 있는 <strong>연결 추가</strong> 메뉴에
 표시되는 텍스트 문자열입니다.
     </li>
 </ol>
 <p class="note">
-    <strong>참고:</strong> <code>ContactsSource</code>는 
+    <strong>참고:</strong> <code>ContactsSource</code>는
 <code>ContactsAccountType</code>에 대하여 이제 사용하지 않는 태그 이름입니다.
 </p>
 <h3 id="ContactsFile">contacts.xml 참조</h3>
 <p>
-    <code>contacts.xml</code> 파일에는 XML 요소가 들어있어 개발자의 동기화 어댑터와 
-애플리케이션, 연락처 애플리케이션과 연락처 제공자 사이의 상호 작용을 제어합니다. 이런 
+    <code>contacts.xml</code> 파일에는 XML 요소가 들어있어 개발자의 동기화 어댑터와
+애플리케이션, 연락처 애플리케이션과 연락처 제공자 사이의 상호 작용을 제어합니다. 이런
 요소는 다음 섹션에 설명되어 있습니다.
 </p>
 <h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; 요소</h4>
 <p>
-    <code>&lt;ContactsAccountType&gt;</code>요 요소는 개발자의 애플리케이션과 
+    <code>&lt;ContactsAccountType&gt;</code>요 요소는 개발자의 애플리케이션과
 연락처 애플리케이션 사이의 상호 작용을 제어합니다. 이 요소에는 다음 구문이 있습니다.
 </p>
 <pre>
@@ -2161,12 +2161,12 @@
     <strong>설명:</strong>
 </p>
 <p>
-    사용자가 연락처 중 하나를 소셜 네트워크에 초대하고, 
-소셜 네트워킹 스트림이 업데이트되면 사용자에게 알리는 등의 작업을 허용하는 
+    사용자가 연락처 중 하나를 소셜 네트워크에 초대하고,
+소셜 네트워킹 스트림이 업데이트되면 사용자에게 알리는 등의 작업을 허용하는
 Android 구성 요소와 UI 레이블을 선언합니다.
 </p>
 <p>
-    속성 접두사 <code>android:</code>는 
+    속성 접두사 <code>android:</code>는
 <code>&lt;ContactsAccountType&gt;</code>의 속성에는 필요하지 않다는 점을 눈여겨보십시오.
 </p>
 <p>
@@ -2175,48 +2175,48 @@
 <dl>
     <dt>{@code inviteContactActivity}</dt>
     <dd>
-        사용자가 기기의 연락처 애플리케이션에서 
-<strong>연결 추가</strong>를 선택했을 때 활성화하고자 하는 
+        사용자가 기기의 연락처 애플리케이션에서
+<strong>연결 추가</strong>를 선택했을 때 활성화하고자 하는
 애플리케이션 액티비티의 완전히 정규화된 클래스 이름입니다.
     </dd>
     <dt>{@code inviteContactActionLabel}</dt>
     <dd>
-        <strong>연결 추가</strong> 메뉴의 
+        <strong>연결 추가</strong> 메뉴의
 {@code inviteContactActivity}에서 지정된 액티비티에 대해 표시되는 텍스트 문자열입니다.
-        예를 들어, 문자열 "제 네트워크를 팔로우하세요"를 사용할 수 있습니다. 이 레이블에 대한 문자열 리소스 
+        예를 들어, 문자열 "제 네트워크를 팔로우하세요"를 사용할 수 있습니다. 이 레이블에 대한 문자열 리소스
 식별자를 사용할 수 있습니다.
     </dd>
     <dt>{@code viewContactNotifyService}</dt>
     <dd>
-        사용자가 연락처를 볼 때 알림을 수신해야 하는 
-애플리케이션 서비스의 완전히 정규화된 클래스 이름입니다. 이 알림은 
-기기의 연락처 애플리케이션이 전송합니다. 이것을 사용하면 개발자의 애플리케이션이 데이터 집약적인 작업을 필요할 때까지 
-연기할 수 있습니다. 예를 들어, 개발자의 애플리케이션은 
-연락처의 고해상도 사진과 가장 최근 소셜 스트림 항목을 읽어서 표시함으로써 
-이 알림에 응답할 수 있습니다. 이 기능은 
-<a href="#SocialStreamInteraction">소셜 스트림 상호 작용</a>에 상세히 설명되어 있습니다. 알림 서비스의 예시를 
+        사용자가 연락처를 볼 때 알림을 수신해야 하는
+애플리케이션 서비스의 완전히 정규화된 클래스 이름입니다. 이 알림은
+기기의 연락처 애플리케이션이 전송합니다. 이것을 사용하면 개발자의 애플리케이션이 데이터 집약적인 작업을 필요할 때까지
+연기할 수 있습니다. 예를 들어, 개발자의 애플리케이션은
+연락처의 고해상도 사진과 가장 최근 소셜 스트림 항목을 읽어서 표시함으로써
+이 알림에 응답할 수 있습니다. 이 기능은
+<a href="#SocialStreamInteraction">소셜 스트림 상호 작용</a>에 상세히 설명되어 있습니다. 알림 서비스의 예시를
 보려면 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>
- 샘플 앱에 있는 <code>NotifierService.java</code> 파일을 
+ 샘플 앱에 있는 <code>NotifierService.java</code> 파일을
 확인합니다.
     </dd>
     <dt>{@code viewGroupActivity}</dt>
     <dd>
-        그룹 정보를 표시할 수 있는 애플리케이션 액티비티의 
-완전히 정규화된 클래스 이름입니다. 사용자가 기기의 연락처 애플리케이션에서 그룹 레이블을 클릭하면, 
+        그룹 정보를 표시할 수 있는 애플리케이션 액티비티의
+완전히 정규화된 클래스 이름입니다. 사용자가 기기의 연락처 애플리케이션에서 그룹 레이블을 클릭하면,
 이 액티비티의 UI가 표시됩니다.
     </dd>
     <dt>{@code viewGroupActionLabel}</dt>
     <dd>
-        사용자가 개발자의 애플리케이션에서 그룹을 살펴볼 수 있도록 해주는 UI 제어에 대해 
+        사용자가 개발자의 애플리케이션에서 그룹을 살펴볼 수 있도록 해주는 UI 제어에 대해
 연락처 애플리케이션이 표시하는 레이블입니다.
         <p>
-            예를 들어, 기기에 Google+ 애플리케이션을 설치하고 
-Google+를 연락처 애플리케이션과 동기화하면, Google+ 서클이 
-연락처 애플리케이션의 <strong>그룹</strong> 탭에 표시되는 것을 볼 수 있습니다. Google+ 서클을 
-클릭하면 해당 서클에서 "그룹"으로 표시된 사람들을 볼 수 있습니다. 이 표시의 맨 위에 
-Google+ 아이콘이 표시되며, 이것을 클릭하면 제어가 
-Google+ 앱으로 전환됩니다. 연락처 애플리케이션은 이 작업을 
-{@code viewGroupActivity}로 수행하며, Google+ 아이콘을 
+            예를 들어, 기기에 Google+ 애플리케이션을 설치하고
+Google+를 연락처 애플리케이션과 동기화하면, Google+ 서클이
+연락처 애플리케이션의 <strong>그룹</strong> 탭에 표시되는 것을 볼 수 있습니다. Google+ 서클을
+클릭하면 해당 서클에서 "그룹"으로 표시된 사람들을 볼 수 있습니다. 이 표시의 맨 위에
+Google+ 아이콘이 표시되며, 이것을 클릭하면 제어가
+Google+ 앱으로 전환됩니다. 연락처 애플리케이션은 이 작업을
+{@code viewGroupActivity}로 수행하며, Google+ 아이콘을
 {@code viewGroupActionLabel}의 값으로 사용합니다.
         </p>
         <p>
@@ -2225,19 +2225,19 @@
     </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에서 애플리케이션의 사용자 지정 데이터 행 표시를 
+    <code>&lt;ContactsDataKind&gt;</code> 요소는 연락처 애플리케이션 UI에서 애플리케이션의 사용자 지정 데이터 행 표시를
 제어합니다. 이 요소에는 다음 구문이 있습니다.
 </p>
 <pre>
@@ -2255,11 +2255,11 @@
     <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> 요소를 하나씩 추가합니다. 데이터를 
+    이 요소를 사용하여 연락처 애플리케이션이 사용자 지정 데이터 행의 콘텐츠를
+원시 연락처 세부 정보의 일부로 표시하게 합니다. <code>&lt;ContactsAccountType&gt;</code>의 각 <code>&lt;ContactsDataKind&gt;</code> 하위 요소는
+동기화 어댑터가 {@link android.provider.ContactsContract.Data}에 추가하는
+사용자 지정 데이터 행의 유형을 나타냅니다. 개발자가 사용하는 사용자 지정 MIME 유형 하나마다
+<code>&lt;ContactsDataKind&gt;</code> 요소를 하나씩 추가합니다. 데이터를
 표시하는 것을 원치 않는 사용자 지정 데이터 행이 있으면, 이 요소를 추가하지 않아도 됩니다.
 </p>
 <p>
@@ -2268,35 +2268,35 @@
 <dl>
     <dt>{@code android:mimeType}</dt>
     <dd>
-        {@link android.provider.ContactsContract.Data} 테이블에서 
-사용자 지정 데이터 행 유형 중 하나로 지정한 사용자 지정 MIME 유형입니다. 예를 들어, 
-<code>vnd.android.cursor.item/vnd.example.locationstatus</code> 값은 연락처의 마지막으로 알려진 위치를 기록하는 
+        {@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>
@@ -2305,52 +2305,52 @@
     </ul>
 <h3 id="Groups">연락처 그룹</h3>
 <p>
-    연락처 제공자는 관련된 연락처 컬렉션에 
-<strong>그룹</strong> 데이터로 레이블을 붙이기로 선택할 수 있습니다. 사용자 계정과 연관된 서버에서 
-그룹을 관리하고자 하는 경우, 계정의 계정 유형에 대한 동기화 어댑터가 
-연락처 제공자와 서버 사이에서 그룹 데이터를 전송해야 합니다. 사용자가 해당 서버에 새 연락처를 추가하고 
+    연락처 제공자는 관련된 연락처 컬렉션에
+<strong>그룹</strong> 데이터로 레이블을 붙이기로 선택할 수 있습니다. 사용자 계정과 연관된 서버에서
+그룹을 관리하고자 하는 경우, 계정의 계정 유형에 대한 동기화 어댑터가
+연락처 제공자와 서버 사이에서 그룹 데이터를 전송해야 합니다. 사용자가 해당 서버에 새 연락처를 추가하고
 이 연락처를 새 그룹에 넣으면, 동기화 어댑터가 해당 새 그룹을
-{@link android.provider.ContactsContract.Groups} 테이블에 추가해야 합니다. 원시 연락처가 속한 그룹(또는 여러 그룹)은 
-{@link android.provider.ContactsContract.Data} 테이블에 저장되며, 이때 
+{@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.Settings} 행을
+업데이트하십시오. 이 행에서
 {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
-Settings.UNGROUPED_VISIBLE} 열의 값을 1로 설정합니다. 이렇게 하면 연락처 제공자가 
+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} 열은 
+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.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.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} 테이블에 저장되며, 이 내용은 
+    한 사람의 소셜 스트림 데이터에도 사진이 포함되어 있을 수 있습니다. 이런 사진은
+{@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
index 953f92a..68ed568 100644
--- 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
@@ -119,11 +119,11 @@
 
     <!-- Intro paragraphs -->
 <p>
-    콘텐츠 제공자는 데이터의 중앙 리포지토리로의 액세스를 관리합니다. 
+    콘텐츠 제공자는 데이터의 중앙 리포지토리로의 액세스를 관리합니다.
 제공자는 Android 애플리케이션의 일부이며, 이는 종종 나름의 UI를 제공하여 데이터에 작용하도록 합니다.
- 그러나 콘텐츠 제공자는 기본적으로 다른 애플리케이션이 사용하도록 만들어진 것입니다. 
-이들은 제공자 클라이언트 개체를 사용하여 제공자에 액세스합니다. 
-제공자와 제공자 클라이언트가 결합되면 데이터에 하나의 일관적인 표준 인터페이스를 제공하여 
+ 그러나 콘텐츠 제공자는 기본적으로 다른 애플리케이션이 사용하도록 만들어진 것입니다.
+이들은 제공자 클라이언트 개체를 사용하여 제공자에 액세스합니다.
+제공자와 제공자 클라이언트가 결합되면 데이터에 하나의 일관적인 표준 인터페이스를 제공하여
 이것이 프로세스간 통신과 보안 데이터 액세스도 처리합니다.
 </p>
 <p>
@@ -139,14 +139,14 @@
     <!-- Basics -->
 <h2 id="Basics">개요</h2>
 <p>
-    콘텐츠 제공자는 외부 애플리케이션에 데이터를 표시하며, 이때 데이터는 
-관계형 데이터베이스에서 찾을 수 있는 테이블과 유사한 하나 이상의 테이블로서 표시됩니다. 
-한 행은 제공자가 수집하는 어떤 유형의 데이터 인스턴스를 나타내며, 
+    콘텐츠 제공자는 외부 애플리케이션에 데이터를 표시하며, 이때 데이터는
+관계형 데이터베이스에서 찾을 수 있는 테이블과 유사한 하나 이상의 테이블로서 표시됩니다.
+한 행은 제공자가 수집하는 어떤 유형의 데이터 인스턴스를 나타내며,
 행 안의 각 열은 인스턴스에 대해 수집된 개별적인 데이터를 나타냅니다.
 </p>
 <p>
-    예를 들어 Android 플랫폼 안에 내장된 여러 제공자 중에 사용자 사전이라는 것이 있습니다. 
-이것은 사용자가 보관하고 싶어하는 비표준 단어의 철자를 저장합니다. 표 1은 이 제공자의 테이블에서 
+    예를 들어 Android 플랫폼 안에 내장된 여러 제공자 중에 사용자 사전이라는 것이 있습니다.
+이것은 사용자가 보관하고 싶어하는 비표준 단어의 철자를 저장합니다. 표 1은 이 제공자의 테이블에서
 데이터가 어떤 형태를 띨 수 있는지를 나타낸 것입니다.
 </p>
 <p class="table-caption">
@@ -197,39 +197,39 @@
     </tr>
 </table>
 <p>
-    표 1에서, 각 행은 일반적인 사전에 나오지 않는 단어의 인스턴스를 
-나타냅니다. 각 열은 해당 단어에 대한 일부 데이터를 나타냅니다. 예를 들어 
+    표 1에서, 각 행은 일반적인 사전에 나오지 않는 단어의 인스턴스를
+나타냅니다. 각 열은 해당 단어에 대한 일부 데이터를 나타냅니다. 예를 들어
 단어가 처음 나온 로케일 등을 들 수 있습니다. 열 헤더는 제공자에 저장된
-열 이름입니다. 행의 로케일을 참조하려면 그 행의 <code>locale</code> 열을 참조합니다. 
+열 이름입니다. 행의 로케일을 참조하려면 그 행의 <code>locale</code> 열을 참조합니다.
 이 제공자의 경우, <code>_ID</code> 열은 제공자가 자동으로 유지하는 "기본 키" 열
 역할을 합니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 제공자에 기본 키가 꼭 있어야 하는 것은 아니고, 
-기본 키가 있는 경우 <code>_ID</code>를 열 이름으로 사용하지 않아도 됩니다. 그러나 제공자의 데이터를 
-{@link android.widget.ListView}에 바인딩하려면 
+    <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} 메서드는 
+    애플리케이션은 콘텐츠 제공자로부터의 데이터에
+{@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} 개체가
 자동으로 프로세스간 통신을 처리합니다.
-{@link android.content.ContentProvider} 또한 
+{@link android.content.ContentProvider} 또한
 콘텐츠 제공자의 데이터 리포지토리와 외부에 테이블로 표시되는 데이터 모습 사이에서 추상화 계층 역할을 합니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 제공자에 액세스하려면 보통은 애플리케이션이 
-제공자의 매니페스트 파일에 있는 특정 권한을 요청해야 합니다. 이것은 
+    <strong>참고:</strong> 제공자에 액세스하려면 보통은 애플리케이션이
+제공자의 매니페스트 파일에 있는 특정 권한을 요청해야 합니다. 이것은
 <a href="#Permissions">콘텐츠 제공자 권한</a> 섹션에 더 자세히 설명되어 있습니다.
 </p>
 <p>
@@ -237,7 +237,7 @@
 {@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>
@@ -292,26 +292,26 @@
         <td align="center"><code>sortOrder</code></td>
         <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
         <td>
-            <code>sortOrder</code>는 반환된 
+            <code>sortOrder</code>는 반환된
 {@link android.database.Cursor} 내에 행이 나타나는 순서를 지정합니다.
         </td>
     </tr>
 </table>
 <h3 id="ContentURIs">콘텐츠 URI</h3>
 <p>
-    <strong>콘텐츠 URI</strong>는 제공자에서 데이터를 식별하는 URI입니다. 
+    <strong>콘텐츠 URI</strong>는 제공자에서 데이터를 식별하는 URI입니다.
 콘텐츠 URI에는 전체 제공자의 상징적인 이름(제공자의 <strong>권한</strong>)과
-테이블을 가리키는 이름(<strong>경로</strong>)이 포함됩니다. 
+테이블을 가리키는 이름(<strong>경로</strong>)이 포함됩니다.
 제공자 내의 테이블에 액세스하기 위해 클라이언트 메서드를 호출하는 경우,
 그 테이블에 대한 콘텐츠 URI는 인수 중 하나입니다.
 </p>
 <p>
     앞선 몇 줄의 코드에서 상수
-{@link android.provider.UserDictionary.Words#CONTENT_URI}에 
+{@link android.provider.UserDictionary.Words#CONTENT_URI}에
 사용자 사전의 "단어" 테이블의 콘텐츠 URI가 들어있습니다. {@link android.content.ContentResolver}
  개체가 이 URI의 권한을 구문 분석한 다음, 이를 이용해 제공자를 "확인"합니다. 즉 이 권한을 알려진 제공자로 이루어진 시스템 테이블과 비교하는 것입니다.
- 
-그러면 {@link android.content.ContentResolver}가 쿼리 인수를 
+
+그러면 {@link android.content.ContentResolver}가 쿼리 인수를
 올바른 제공자에게 발송할 수 있습니다.
 </p>
 <p>
@@ -331,20 +331,20 @@
 이것을 콘텐츠 URI로 식별합니다.
 </p>
 <p>
-    대다수의 제공자에서는 URI의 맨 끝에 ID 값을 추가하면 
-테이블 내 하나의 행에 액세스할 수 있게 해줍니다. 예를 들어 <code>_ID</code>가 
+    대다수의 제공자에서는 URI의 맨 끝에 ID 값을 추가하면
+테이블 내 하나의 행에 액세스할 수 있게 해줍니다. 예를 들어 <code>_ID</code>가
 사용자 사전의 <code>4</code>인 행을 검색하려면, 이 콘텐츠 URI를 사용하면 됩니다.
 </p>
 <pre>
 Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
 </pre>
 <p>
-    일련의 행을 검색한 다음 그 중 하나를 업데이트하거나 삭제하고자 하는 경우 종종 ID 값을 
+    일련의 행을 검색한 다음 그 중 하나를 업데이트하거나 삭제하고자 하는 경우 종종 ID 값을
 이용하곤 합니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> {@link android.net.Uri}와 
-{@link android.net.Uri.Builder} 클래스에는 문자열에서 잘 구성된(Well-Formed) URI 개체를 구성하기 위한 편의 메서드가 들어 있습니다. 
+    <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를 추가합니다.
@@ -358,10 +358,10 @@
 방법을 설명합니다.
 </p>
 <p class="note">
-    명확히 나타내기 위해 이 섹션의 코드 조각은 
-{@link android.content.ContentResolver#query ContentResolver.query()}를 "UI 스레드"에서 호출합니다. 
+    명확히 나타내기 위해 이 섹션의 코드 조각은
+{@link android.content.ContentResolver#query ContentResolver.query()}를 "UI 스레드"에서 호출합니다.
 그러나 실제 코드의 경우 쿼리는 별도의 스레드에서 비동기식으로 수행해야 합니다. 이를 위한 한 가지 방식으로
-{@link android.content.CursorLoader} 
+{@link android.content.CursorLoader}
 클래스를 쓰는 것을 들 수 있습니다. 이 내용은 <a href="{@docRoot}guide/components/loaders.html">
 로더</a> 가이드에 더 자세히 설명되어 있습니다. 또한, 이 코드 줄은 조각일 뿐이며 애플리케이션을 전체적으로 표시한 것이 아닙니다.
 
@@ -380,32 +380,32 @@
 <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> 권한을 자신의 매니페스트 파일에 정의합니다. 따라서 해당 제공자에서 
+    사용자 사전 제공자는
+<code>android.permission.READ_USER_DICTIONARY</code> 권한을 자신의 매니페스트 파일에 정의합니다. 따라서 해당 제공자에서
 읽기 작업을 하고자 하는 애플리케이션은 반드시 이 권한을 요청해야 합니다.
 </p>
 <!-- Constructing the query -->
 <h3 id="Query">쿼리 구성</h3>
 <p>
-    제공자에서 데이터를 검색할 때 다음 단계는 쿼리를 구성하는 것입니다. 다음의 첫 번째 조각은 
+    제공자에서 데이터를 검색할 때 다음 단계는 쿼리를 구성하는 것입니다. 다음의 첫 번째 조각은
 사용자 사전 제공자에 액세스하는 데 필요한 몇 가지 변수를 정의한 것입니다.
 </p>
 <pre class="prettyprint">
@@ -426,9 +426,9 @@
 
 </pre>
 <p>
-    다음 조각은 사용자 사전 제공자를 예시로 사용하여 
+    다음 조각은 사용자 사전 제공자를 예시로 사용하여
 {@link android.content.ContentResolver#query ContentResolver.query()}를
- 사용하는 방법을 나타낸 것입니다. 제공자 클라이언트 쿼리는 SQL 쿼리와 비슷하며, 
+ 사용하는 방법을 나타낸 것입니다. 제공자 클라이언트 쿼리는 SQL 쿼리와 비슷하며,
 반환할 열 집합과 선택 기준 집합, 그리고 정렬 순서가 이 안에 들어 있습니다.
 </p>
 <p>
@@ -438,13 +438,13 @@
 <p>
     검색할 행을 나타내는 식은 선택 절과 선택 인수로 분할되어 있습니다.
  선택 절은 논리와 부울 식, 열 이름과 값
-(변수 <code>mSelectionClause</code>)을 조합한 것입니다. 
-값 대신 대체 가능한 매개변수 <code>?</code>를 지정하면, 
+(변수 <code>mSelectionClause</code>)을 조합한 것입니다.
+값 대신 대체 가능한 매개변수 <code>?</code>를 지정하면,
 쿼리 메서드가 그 값을 선택 인수 배열에서 검색합니다(변수 <code>mSelectionArgs</code>).
 </p>
 <p>
-    다음 조각의 경우, 사용자가 단어를 입력하지 않으면 선택 절이 
-<code>null</code>로 설정되고, 쿼리는 제공자 안의 모든 단어를 반환합니다. 
+    다음 조각의 경우, 사용자가 단어를 입력하지 않으면 선택 절이
+<code>null</code>로 설정되고, 쿼리는 제공자 안의 모든 단어를 반환합니다.
 사용자가 단어를 입력하면 선택 절은 <code>UserDictionary.Words.WORD + " = ?"</code>로 설정되며
 선택 인수의 첫 번째 요소가 사용자가 입력한 단어로 설정됩니다.
 </p>
@@ -514,7 +514,7 @@
 </p>
 <h4 id="Injection">악의적인 입력에 대한 보호</h4>
 <p>
-    콘텐츠 제공자가 관리하는 데이터가 SQL 데이터베이스에 있는 경우, 
+    콘텐츠 제공자가 관리하는 데이터가 SQL 데이터베이스에 있는 경우,
 원시 SQL 문에 외부의 신뢰할 수 없는 데이터를 포함시키면 SQL 삽입을 초래할 수 있습니다.
 </p>
 <p>
@@ -526,17 +526,17 @@
 </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> 
+    예를 들어 사용자가 <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>를 대체 가능한 매개변수로 사용하는 선택 절과, 
+    이 문제를 피하려면 <code>?</code>를 대체 가능한 매개변수로 사용하는 선택 절과,
 별도의 선택 인수 배열을 사용하면 됩니다. 이렇게 하면, 사용자 입력이 SQL 문의 일부로 해석되기보다 쿼리에 직접 바인딩됩니다.
 
-    이것은 SQL로 취급되지 않기 때문에 사용자 입력이 악의적인 SQL을 삽입할 수 없습니다. 
+    이것은 SQL로 취급되지 않기 때문에 사용자 입력이 악의적인 SQL을 삽입할 수 없습니다.
 사용자 입력을 포함하는 데 연결을 사용하는 대신 다음 선택 절을 사용합니다.
 </p>
 <pre>
@@ -558,35 +558,35 @@
 selectionArgs[0] = mUserInput;
 </pre>
 <p>
-    <code>?</code>를 대체 가능한 매개변수로 사용하는 선택 절과 
-선택 인수 배열을 사용하는 것이 선택을 지정하는 데 선호되는 방법입니다. 
+    <code>?</code>를 대체 가능한 매개변수로 사용하는 선택 절과
+선택 인수 배열을 사용하는 것이 선택을 지정하는 데 선호되는 방법입니다.
 이는 제공자가 SQL 데이터베이스 기반이 아닐 때에도 마찬가지입니다.
 </p>
 <!-- Displaying the results -->
 <h3 id="DisplayResults">쿼리 결과 표시</h3>
 <p>
-    {@link android.content.ContentResolver#query ContentResolver.query()} 
+    {@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} 메서드를 사용하면 행을 결과에서 반복할 수 있고,
 각 열의 데이터 유형을 결정하며 열에서 데이터를 꺼내거나 결과의 다른 속성을 검토할 수도 있습니다.
  일부 {@link android.database.Cursor} 구현은 제공자의 데이터가 변경될 경우,
-{@link android.database.Cursor}가 변경될 때 관찰자 개체 내의 메서드를 트리거하는 경우 
+{@link android.database.Cursor}가 변경될 때 관찰자 개체 내의 메서드를 트리거하는 경우
 또는 두 가지가 한 번에 발생할 경우 자동으로 개체를 업데이트합니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 제공자는 쿼리를 수행하는 개체의 성격을 근거로 
-열에 대한 액세스를 제한할 수 있습니다. 예를 들어 연락처 제공자는 동기화 어댑터로의 몇몇 열에 대한 액세스를 제한합니다. 
+    <strong>참고:</strong> 제공자는 쿼리를 수행하는 개체의 성격을 근거로
+열에 대한 액세스를 제한할 수 있습니다. 예를 들어 연락처 제공자는 동기화 어댑터로의 몇몇 열에 대한 액세스를 제한합니다.
 이렇게 해야 액티비티 또는 서비스에 열을 반환하지 않기 때문입니다.
 </p>
 <p>
-    선택 기준에 일치하는 행이 없으면, 제공자는 
-{@link android.database.Cursor} 개체를 반환합니다. 이 개체의 
+    선택 기준에 일치하는 행이 없으면, 제공자는
+{@link android.database.Cursor} 개체를 반환합니다. 이 개체의
 {@link android.database.Cursor#getCount Cursor.getCount()}는 0(빈 커서)입니다.
 </p>
 <p>
-    내부 오류가 발생하는 경우, 쿼리 결과는 특정 제공자에 따라 달라집니다. 
+    내부 오류가 발생하는 경우, 쿼리 결과는 특정 제공자에 따라 달라집니다.
 <code>null</code>을 반환하기로 선택할 수도 있고, {@link java.lang.Exception}을 발생시킬 수도 있습니다.
 </p>
 <p>
@@ -595,9 +595,9 @@
 연결하는 것입니다.
 </p>
 <p>
-    다음 조각은 이전 조각으로부터 코드를 계속 이어가는 것입니다. 
+    다음 조각은 이전 조각으로부터 코드를 계속 이어가는 것입니다.
 이는 해당 쿼리가 검색한 {@link android.database.Cursor}가 들어 있는
-{@link android.widget.SimpleCursorAdapter} 개체를 생성하며, 이 개체를 
+{@link android.widget.SimpleCursorAdapter} 개체를 생성하며, 이 개체를
 {@link android.widget.ListView}에 대한 어댑터로 설정합니다.
 </p>
 <pre class="prettyprint">
@@ -626,7 +626,7 @@
 <p class="note">
     <strong>참고:</strong> {@link android.database.Cursor}로 {@link android.widget.ListView}를 뒷받침하려면,
 커서에 <code>_ID</code>라는 열이 포함되어야 합니다.
-    이것 때문에 이전에 표시된 쿼리가 "단어" 테이블에 대하여 <code>_ID</code> 열을 
+    이것 때문에 이전에 표시된 쿼리가 "단어" 테이블에 대하여 <code>_ID</code> 열을
 검색하며, {@link android.widget.ListView}가 이를 표시하지 않더라도 무관합니다.
     이 제한은 대부분의 제공자에 각 테이블에 대한 <code>_ID</code> 열이 있는 이유를 설명해주기도 합니다.
 
@@ -635,7 +635,7 @@
         <!-- Getting data from query results -->
 <h3 id="GettingResults">쿼리 결과에서 데이터 가져오기</h3>
 <p>
-    쿼리 결과를 단순히 표시만 하는 것보다 이를 다른 작업에 사용할 수 있습니다. 
+    쿼리 결과를 단순히 표시만 하는 것보다 이를 다른 작업에 사용할 수 있습니다.
 예를 들어, 사용자 사전에서 철자를 검색한 다음 이것을 다른 제공자 내에서 찾아볼 수 있습니다.
  이렇게 하려면, {@link android.database.Cursor}에서 행을 계속 반복하면 됩니다.
 </p>
@@ -672,10 +672,10 @@
 }
 </pre>
 <p>
-    {@link android.database.Cursor} 구현에는 
-여러 개의 "가져오기" 메서드가 들어 있어 개체로부터 여러 가지 유형의 데이터를 검색합니다. 예를 들어 이전 조각에서는 
-{@link android.database.Cursor#getString getString()}을 사용합니다. 
-여기에는 해당 열의 데이터 유형을 나타내는 값을 반환하는 
+    {@link android.database.Cursor} 구현에는
+여러 개의 "가져오기" 메서드가 들어 있어 개체로부터 여러 가지 유형의 데이터를 검색합니다. 예를 들어 이전 조각에서는
+{@link android.database.Cursor#getString getString()}을 사용합니다.
+여기에는 해당 열의 데이터 유형을 나타내는 값을 반환하는
 {@link android.database.Cursor#getType getType()} 메서드도 있습니다.
 </p>
 
@@ -683,33 +683,33 @@
     <!-- 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 패키지 관리자가 애플리케이션을 설치하는 경우, 
+으로 그러한 권한을 요청합니다. Android 패키지 관리자가 애플리케이션을 설치하는 경우,
 사용자는 애플리케이션이 요청하는 권한을 모두 승인해야 합니다. 사용자가 이를 모두 승인하면
 패키지 관리자가 설치를 계속하지만, 사용자가 이를 승인하지 않으면 패키지 관리자는 설치를 중단합니다.
 
 </p>
 <p>
-    
+
 다음 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
  요소는 사용자 사전 제공자에 읽기 액세스 권한을 요청하는 것입니다.
 </p>
@@ -717,7 +717,7 @@
     &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
 </pre>
 <p>
-    제공자 액세스 권한이 미치는 영향은 
+    제공자 액세스 권한이 미치는 영향은
 <a href="{@docRoot}guide/topics/security/security.html">보안 및 권한</a> 가이드에 좀 더 자세히 설명되어 있습니다.
 </p>
 
@@ -725,15 +725,15 @@
 <!-- Inserting, Updating, and Deleting Data -->
 <h2 id="Modifications">데이터 삽입, 업데이트 및 삭제</h2>
 <p>
-    제공자로부터 데이터를 검색하는 것과 같은 방식으로, 데이터를 수정할 때에도 제공자 클라이언트와 제공자의 
+    제공자로부터 데이터를 검색하는 것과 같은 방식으로, 데이터를 수정할 때에도 제공자 클라이언트와 제공자의
 {@link android.content.ContentProvider} 사이의 상호작용을 사용합니다.
-    {@link android.content.ContentResolver}의 메서드를 호출하면서 
-{@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를 반환합니다.
     이 조각은 사용자 사전 제공자에 새 단어를 삽입하는 방법을 나타낸 것입니다.
@@ -763,8 +763,8 @@
 </pre>
 <p>
     새로운 행에 대한 데이터는 단일 행 커서와 형태가 유사한 단일 {@link android.content.ContentValues} 개체로
-이동합니다. 이 개체 내의 열은 모두 같은 데이터 유형을 가지지 않아도 됩니다. 
-또한 아예 값을 지정하고 싶지 않은 경우라면 열을 <code>null</code>로 설정할 수 있습니다. 
+이동합니다. 이 개체 내의 열은 모두 같은 데이터 유형을 가지지 않아도 됩니다.
+또한 아예 값을 지정하고 싶지 않은 경우라면 열을 <code>null</code>로 설정할 수 있습니다.
 이때 {@link android.content.ContentValues#putNull ContentValues.putNull()}을 사용하면 됩니다.
 </p>
 <p>
@@ -790,11 +790,11 @@
 </p>
 <h3 id="Updating">데이터 업데이트</h3>
 <p>
-    행을 업데이트하려면 업데이트된 값과 함께 {@link android.content.ContentValues} 개체를 사용합니다. 
+    행을 업데이트하려면 업데이트된 값과 함께 {@link android.content.ContentValues} 개체를 사용합니다.
 이때 값은 삽입할 때와 똑같고, 선택 기준은 쿼리할 때와 같습니다.
     사용하는 클라이언트 메서드는
-{@link android.content.ContentResolver#update ContentResolver.update()}입니다. 
-값을 추가하는 것은 업데이트 중인 열에 대한 {@link android.content.ContentValues} 개체에만 하면 됩니다. 
+{@link android.content.ContentResolver#update ContentResolver.update()}입니다.
+값을 추가하는 것은 업데이트 중인 열에 대한 {@link android.content.ContentValues} 개체에만 하면 됩니다.
 열의 콘텐츠를 삭제하려면, 값을 <code>null</code>로 설정하십시오.
 </p>
 <p>
@@ -827,13 +827,13 @@
 );
 </pre>
 <p>
-    
+
 {@link android.content.ContentResolver#update ContentResolver.update()}를 호출하는 경우에는 사용자 입력도 삭제해야 합니다. 이 내용에 관해 자세히 알아보려면
 <a href="#Injection">악의적인 입력에 대한 보호</a> 섹션을 읽어 보십시오.
 </p>
 <h3 id="Deleting">데이터 삭제</h3>
 <p>
-    행을 삭제하는 것은 행 데이터를 검색하는 것과 비슷합니다. 즉, 삭제하고자 하는 행에 대한 선택 기준을 지정하면 
+    행을 삭제하는 것은 행 데이터를 검색하는 것과 비슷합니다. 즉, 삭제하고자 하는 행에 대한 선택 기준을 지정하면
 클라이언트 메서드가 삭제된 행 수를 반환하는 식입니다.
     다음 조각은 앱 ID가 "user"와 일치하는 행을 삭제합니다. 메서드가 삭제된 행 수를 반환합니다.
 
@@ -857,14 +857,14 @@
 );
 </pre>
 <p>
-    {@link android.content.ContentResolver#delete ContentResolver.delete()}를 
+    {@link android.content.ContentResolver#delete ContentResolver.delete()}를
 호출하는 경우에는 사용자 입력도 삭제해야 합니다. 이 내용에 관해 자세히 알아보려면
 <a href="#Injection">악의적인 입력에 대한 보호</a> 섹션을 읽어 보십시오.
 </p>
 <!-- Provider Data Types -->
 <h2 id="DataTypes">제공자 데이터 유형</h2>
 <p>
-    콘텐츠 제공자는 아주 다양한 데이터 유형을 제공할 수 있습니다. 
+    콘텐츠 제공자는 아주 다양한 데이터 유형을 제공할 수 있습니다.
 사용자 사전 제공자는 텍스트만 제공하지만, 제공자는 다음과 같은 형식도 제공할 수 있습니다.
 </p>
     <ul>
@@ -883,29 +883,29 @@
     </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 유형을 근거로 처리 유형을 선택할 수도 있습니다. 
+    제공자는 스스로 정의하는 각 콘텐츠 URI의 MIME 데이터 유형 정보도 유지관리합니다.
+MIME 유형 정보를 사용하면 애플리케이션이 제공자가 제공하는 데이터를 처리할 수 있을지 알아낼 수도 있고,
+MIME 유형을 근거로 처리 유형을 선택할 수도 있습니다.
 MIME 유형이 필요한 시점은 주로 복잡한 데이터 구조 또는 파일이 들어 있는 제공자를 다룰 때입니다.
  예를 들어 연락처 제공자 내의 {@link android.provider.ContactsContract.Data}
  테이블은 MIME 유형을 사용하여 각 행에 저장된 연락처 데이터의 유형에 레이블을 붙입니다.
- 콘텐츠 URI에 상응하는 MIME 유형을 가져오려면 
+ 콘텐츠 URI에 상응하는 MIME 유형을 가져오려면
 {@link android.content.ContentResolver#getType ContentResolver.getType()}을 호출하십시오.
 </p>
 <p>
-    <a href="#MIMETypeReference">MIME 유형 참조</a> 섹션에서 표준 및 사용자 지정 MIME 유형의 
+    <a href="#MIMETypeReference">MIME 유형 참조</a> 섹션에서 표준 및 사용자 지정 MIME 유형의
 두 가지를 모두 설명하고 있습니다.
 </p>
 
@@ -922,13 +922,13 @@
 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}로 이를 적용할 수 있습니다.
     </li>
     <li>
-        비동기식 쿼리: 쿼리는 별도의 스레드에서 수행해야 합니다. 이 작업을 수행하는 한 가지 방법으로 
-{@link android.content.CursorLoader} 개체를 사용하는 것이 있습니다. 이 사용 방법은 
+        비동기식 쿼리: 쿼리는 별도의 스레드에서 수행해야 합니다. 이 작업을 수행하는 한 가지 방법으로
+{@link android.content.CursorLoader} 개체를 사용하는 것이 있습니다. 이 사용 방법은
 <a href="{@docRoot}guide/components/loaders.html">로더</a> 가이드에 있는 예시에서 설명합니다.
 
     </li>
     <li>
-        <a href="#Intents">인텐트를 통한 데이터 액세스</a>: 
+        <a href="#Intents">인텐트를 통한 데이터 액세스</a>:
 인텐트를 제공자에 직접 보낼 수는 없지만, 인텐트를 제공자의 애플리케이션에 보낼 수는 있습니다.
 보통은 이것이 제공자의 데이터를 수정하기에 가장 좋습니다.
     </li>
@@ -938,23 +938,23 @@
 </p>
 <h3 id="Batch">일괄 액세스</h3>
 <p>
-    제공자에 일괄 액세스를 하면 많은 수의 행을 삽입할 때, 같은 메서드 호출 내에서 여러 개의 테이블에 여러 행을 삽입할 때 
+    제공자에 일괄 액세스를 하면 많은 수의 행을 삽입할 때, 같은 메서드 호출 내에서 여러 개의 테이블에 여러 행을 삽입할 때
 또는 전반적으로, 프로세스 경계를 가로질러 일련의 작업을 수행하는 경우(원자성 작업) 유용합니다.
 
 </p>
 <p>
     "일괄 모드"로 제공자에 액세스하려면
-{@link android.content.ContentProviderOperation} 개체의 배열을 생성한 다음 이를 콘텐츠 제공자에게 
+{@link android.content.ContentProviderOperation} 개체의 배열을 생성한 다음 이를 콘텐츠 제공자에게
 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}로
- 발송하면 됩니다. 
+ 발송하면 됩니다.
 이 메서드에는 특정한 콘텐츠 URI보다는 콘텐츠 제공자의 <em>권한</em>을 전달합니다.
-이렇게 하면 배열 내의 각 {@link android.content.ContentProviderOperation} 개체가 
+이렇게 하면 배열 내의 각 {@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>
 소스 파일의 일괄 액세스 예시가 포함되어 있습니다.
@@ -963,31 +963,31 @@
 <div class="sidebox">
 <h2>도우미 앱을 사용한 데이터 표시</h2>
 <p>
-    애플리케이션에 액세스 권한이 <em>있더라도</em> 
-다른 애플리케이션에 데이터를 표시할 인텐트를 사용하고자 할 수 있습니다. 예를 들어 캘린더 애플리케이션은 
+    애플리케이션에 액세스 권한이 <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} 인텐트를 
+ 예를 들어 연락처 제공자에서 연락처를 검색한 다음, 해당 연락처의 이미지에 대한 콘텐츠 URI가 들어 있는
+{@link android.content.Intent#ACTION_VIEW} 인텐트를
 이미지 뷰어로 보낼 수 있습니다.
 </p>
 </div>
 </div>
 <h3 id="Intents">인텐트를 통한 데이터 액세스</h3>
 <p>
-    인텐트는 콘텐츠 제공자에 간접 액세스를 제공할 수 있습니다. 애플리케이션에 액세스 권한이 없는데도 
-사용자에게 제공자 내의 데이터에 액세스 권한을 허가하려면, 권한을 가지고 있는 애플리케이션에서 결과 인텐트를 다시 가져오거나 
+    인텐트는 콘텐츠 제공자에 간접 액세스를 제공할 수 있습니다. 애플리케이션에 액세스 권한이 없는데도
+사용자에게 제공자 내의 데이터에 액세스 권한을 허가하려면, 권한을 가지고 있는 애플리케이션에서 결과 인텐트를 다시 가져오거나
 권한이 있는 애플리케이션을 활성화한 다음 사용자에게 그 애플리케이션에서 작업하도록 하면 됩니다.
 
 </p>
 <h4>임시 권한으로 액세스 얻기</h4>
 <p>
-    적절한 액세스 권한이 없더라도 콘텐츠 제공자 내의 데이터에 액세스할 수는 있습니다. 
+    적절한 액세스 권한이 없더라도 콘텐츠 제공자 내의 데이터에 액세스할 수는 있습니다.
 권한을 가지고 있는 애플리케이션에 인텐트를 보내 "URI" 권한이 들어 있는 결과 인텐트를 돌려받으면 됩니다.
 
     이들 권한은 특정 콘텐츠 URI에 대한 권한으로, 이를 수신하는 액티비티가 완료될 때까지 유지됩니다.
@@ -1005,27 +1005,27 @@
     </li>
 </ul>
 <p class="note">
-    <strong>참고:</strong> 이와 같은 플래그는 콘텐츠 URI에 권한이 들어 있는 제공자에 일반적인 읽기 또는 쓰기 액세스 
+    <strong>참고:</strong> 이와 같은 플래그는 콘텐츠 URI에 권한이 들어 있는 제공자에 일반적인 읽기 또는 쓰기 액세스
 권한을 부여하지는 않습니다. 이 액세스는 URI 자체에만 해당됩니다.
 </p>
 <p>
-    제공자는 자신의 매니페스트 내의 콘텐츠 URI에 대한 URI 권한을 정의합니다. 이때 
+    제공자는 자신의 매니페스트 내의 콘텐츠 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}를 요청하면 
+연락처 제공자 내의 연락처에 대한 데이터를 검색할 수 있습니다.
+이 작업을 하면 좋은 예로, 연락처에 기재된 사람의 생일에 전자 축하 카드를 보내주는 애플리케이션을 들 수 있습니다.
+{@link android.Manifest.permission#READ_CONTACTS}를 요청하면
 사용자의 연락처 전체와 해당 정보 일체에 대한 액세스를 부여하므로, 그 대신 애플리케이션에서 어느 연락처를 사용할지 사용자가 직접 제어하도록 해주는 편이 낫습니다.
  이렇게 하려면, 다음 절차를 사용합니다.
 </p>
@@ -1043,13 +1043,13 @@
     </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()}를 호출하여 
+를 호출하여 애플리케이션에 돌려줄 인텐트를 설정합니다.
+이 인텐트에 사용자가 선택한 연락처의 콘텐츠 URI와 "추가" 플래그
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}이 들어 있습니다.
+이러한 플래그가 URI에 앱으로의 권한을 허가하여 콘텐츠 URI가 가리킨 연락처에 대한 데이터를 읽을 수 있도록 합니다.
+그런 다음 선택 액티비티는 {@link android.app.Activity#finish()}를 호출하여
 애플리케이션에 제어를 반환합니다.
     </li>
     <li>
@@ -1067,7 +1067,7 @@
 </ol>
 <h4>다른 애플리케이션 사용</h4>
 <p>
-    개발자에게 액세스 권한이 없는 데이터를 사용자가 수정할 수 있도록 허용하는 간단한 방법은 
+    개발자에게 액세스 권한이 없는 데이터를 사용자가 수정할 수 있도록 허용하는 간단한 방법은
 해당 권한을 가지고 있는 애플리케이션을 활성화한 다음 사용자에게 그곳에서 작업하도록 해주는 것입니다.
 </p>
 <p>
@@ -1082,18 +1082,18 @@
 <h2 id="ContractClasses">계약 클래스</h2>
 <p>
     계약 클래스는 애플리케이션이 콘텐츠 URI, 열 이름, 인텐트 작업 및 콘텐츠 제공자의 다른 기능과
-작업할 수 있게 도와주는 상수를 정의합니다. 계약 클래스는 제공자와 함께 자동으로 포함되지 않습니다. 
+작업할 수 있게 도와주는 상수를 정의합니다. 계약 클래스는 제공자와 함께 자동으로 포함되지 않습니다.
 해당 제공자의 개발자가 이를 정의한 다음 다른 개발자가 사용할 수 있도록 해야 합니다.
- Android 플랫폼 내에 포함된 제공자는 대부분 패키지 
+ Android 플랫폼 내에 포함된 제공자는 대부분 패키지
 {@link android.provider} 안에 상응하는 계약 클래스를 가지고 있습니다.
 </p>
 <p>
     예를 들어, 사용자 사전 제공자에는 콘텐츠 URI와 열 이름 상수가 들어 있는
-{@link android.provider.UserDictionary} 계약 클래스가 있습니다. 
+{@link android.provider.UserDictionary} 계약 클래스가 있습니다.
 "단어" 테이블에 대한 콘텐츠 URI는 상수
 {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}에 정의됩니다.
-    {@link android.provider.UserDictionary.Words} 클래스에도 
-열 이름 상수가 들어 있으며, 이는 이 가이드의 예시 조각에서 사용됩니다. 
+    {@link android.provider.UserDictionary.Words} 클래스에도
+열 이름 상수가 들어 있으며, 이는 이 가이드의 예시 조각에서 사용됩니다.
 예를 들어 쿼리 프로젝션은 다음과 같이 정의될 수 있습니다.
 </p>
 <pre>
@@ -1106,7 +1106,7 @@
 </pre>
 <p>
     또 다른 계약 클래스는 연락처 제공자의 {@link android.provider.ContactsContract}입니다.
-    이 클래스에 대한 참조 문서에는 예시 코드 조각이 포함되어 있습니다. 
+    이 클래스에 대한 참조 문서에는 예시 코드 조각이 포함되어 있습니다.
 이것의 하위 클래스 중 하나인 {@link android.provider.ContactsContract.Intents.Insert}는
  인텐트와 인텐트 데이터의 상수가 들어 있는 계약 클래스입니다.
 </p>
@@ -1129,7 +1129,7 @@
 해당 URI를 사용하는 쿼리가 HTML 태그가 들어 있는 텍스트를 반환할 것이라는 뜻입니다.
 </p>
 <p>
-    사용자 지정 MIME 유형 문자열은 "공급업체별" MIME 유형이라고도 불리며 
+    사용자 지정 MIME 유형 문자열은 "공급업체별" MIME 유형이라고도 불리며
 이쪽의 <em>유형</em>과 <em>하위 유형</em> 값이 더 복잡합니다. <em>유형</em> 값은 경우에 따라 항상 다음과 같습니다.
 </p>
 <pre>
@@ -1184,13 +1184,13 @@
 vnd.android.cursor.<strong>item</strong>/vnd.example.line2
 </pre>
 <p>
-    대부분의 콘텐츠 제공자는 자신이 사용하는 MIME 유형에 대한 계약 클래스 상수를 정의합니다. 
+    대부분의 콘텐츠 제공자는 자신이 사용하는 MIME 유형에 대한 계약 클래스 상수를 정의합니다.
 예를 들어, 연락처 제공자 계약 클래스 {@link android.provider.ContactsContract.RawContacts}는
 단일 연락처 행의 MIME 유행에 대한
  상수 {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}을
 정의합니다.
 </p>
 <p>
-    한 행에 대한 콘텐츠 URI는 
+    한 행에 대한 콘텐츠 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
index 6757194..af7b584 100644
--- 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
@@ -95,16 +95,16 @@
 
 
 <p>
-    콘텐츠 제공자는 데이터의 중앙 리포지토리로의 액세스를 관리합니다. Android 애플리케이션에서는 
+    콘텐츠 제공자는 데이터의 중앙 리포지토리로의 액세스를 관리합니다. Android 애플리케이션에서는
 제공자를 하나 이상의 클래스로, 매니페스트 파일에 있는 요소와 함께 구현합니다.
- 클래스 중 하나가 하위 클래스 
-{@link android.content.ContentProvider}를 구현하며, 
-이것이 제공자와 다른 애플리케이션 사이의 인터페이스입니다. 콘텐츠 제공자는 다른 애플리케이션에 데이터를 사용할 수 있게 해주도록 만들어져 있지만, 
-물론 애플리케이션 내에 사용자로 하여금 제공자가 관리하는 데이터를 쿼리하고 수정할 수 있게 허용하는 
+ 클래스 중 하나가 하위 클래스
+{@link android.content.ContentProvider}를 구현하며,
+이것이 제공자와 다른 애플리케이션 사이의 인터페이스입니다. 콘텐츠 제공자는 다른 애플리케이션에 데이터를 사용할 수 있게 해주도록 만들어져 있지만,
+물론 애플리케이션 내에 사용자로 하여금 제공자가 관리하는 데이터를 쿼리하고 수정할 수 있게 허용하는
 액티비티가 있을 수도 있습니다.
 </p>
 <p>
-    이 주제의 나머지 부분은 콘텐츠 제공자를 구축하기 위한 기본 단계 목록과 
+    이 주제의 나머지 부분은 콘텐츠 제공자를 구축하기 위한 기본 단계 목록과
 사용할 API 목록으로 이루어져 있습니다.
 </p>
 
@@ -124,12 +124,12 @@
             <li>검색 프레임워크를 사용한 사용자 지정 검색 제안을 제공하고자 하는 경우</li>
         </ul>
     <p>
-        용도가 본인의 애플리케이션 안에서로 완전히 한정되어 있는 경우에는 
+        용도가 본인의 애플리케이션 안에서로 완전히 한정되어 있는 경우에는
 제공자가 SQLite 데이터베이스를 사용하도록 하지 <em>않아도</em> 됩니다.
     </p>
     </li>
     <li>
-        아직 읽지 않았다면, 지금 바로 
+        아직 읽지 않았다면, 지금 바로
 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
 콘텐츠 제공자 기본 정보</a>를 읽고 제공자에 대해 자세히 알아보십시오.
     </li>
@@ -146,8 +146,8 @@
             </dt>
             <dd>
                 일반적으로 사진, 오디오 또는 동영상과 같은
-파일에 들어가는 데이터입니다. 이런 파일을 애플리케이션의 비공개 
-공간에 저장합니다. 제공자는 다른 애플리케이션으로부터 온 파일 요청에 응답하여 
+파일에 들어가는 데이터입니다. 이런 파일을 애플리케이션의 비공개
+공간에 저장합니다. 제공자는 다른 애플리케이션으로부터 온 파일 요청에 응답하여
 해당 파일로의 핸들을 제공할 수 있습니다.
             </dd>
             <dt>
@@ -155,9 +155,9 @@
             </dt>
             <dd>
                 일반적으로 데이터베이스, 배열 또는 유사 구조에 들어가는 데이터입니다.
-                이 데이터를 행과 열로 이루어진 테이블과 호환되는 형식으로 저장합니다. 
-행은 사람이나 인벤토리의 항목과 같은 엔티티를 나타냅니다. 
-열은 해당 엔티티에 대한 몇 가지 데이터, 예를 들어 사람 이름이나 항목 가격 등을 나타냅니다. 
+                이 데이터를 행과 열로 이루어진 테이블과 호환되는 형식으로 저장합니다.
+행은 사람이나 인벤토리의 항목과 같은 엔티티를 나타냅니다.
+열은 해당 엔티티에 대한 몇 가지 데이터, 예를 들어 사람 이름이나 항목 가격 등을 나타냅니다.
 이 유형의 데이터를 저장하는 보편적인 방법은 SQLite 데이터베이스 안에 저장하는 것이지만,
 모든 유형의 영구적인 저장소를 사용해도 됩니다. Android 시스템에서 사용할 수 있는 저장소 유형에 대해 자세히 알아보려면,
 <a href="#DataStorage">
@@ -172,11 +172,11 @@
 <a href="#ContentProvider">ContentProvider 클래스 구현</a> 섹션을 참조하십시오.
     </li>
     <li>
-        제공자의 권한 문자열, 그 콘텐츠 URI 및 열 이름을 정의합니다. 
+        제공자의 권한 문자열, 그 콘텐츠 URI 및 열 이름을 정의합니다.
 제공자 애플리케이션이 인텐트를 처리하게 하려면, 인텐트 작업과 추가 데이터 및
-플래그도 정의합니다. 데이터에 액세스하기를 원하는 애플리케이션에 요구할 권한도 
-정의합니다. 이 모든 값은 별도의 계약 클래스에서 상수로 정의하는 것을 고려해보는 
-것이 좋습니다. 이 클래스를 나중에 다른 개발자에게 노출할 수 있습니다. 
+플래그도 정의합니다. 데이터에 액세스하기를 원하는 애플리케이션에 요구할 권한도
+정의합니다. 이 모든 값은 별도의 계약 클래스에서 상수로 정의하는 것을 고려해보는
+것이 좋습니다. 이 클래스를 나중에 다른 개발자에게 노출할 수 있습니다.
 콘텐츠 URI에 관한 자세한 정보는
 <a href="#ContentURI">콘텐츠 URI 설계</a> 섹션을 참조하십시오.
         인텐트에 관한 자세한 정보는
@@ -193,8 +193,8 @@
 <!-- Designing Data Storage -->
 <h2 id="DataStorage">데이터 저장소 설계</h2>
 <p>
-    콘텐츠 제공자는 구조화된 형식으로 저장된 데이터로의 인터페이스입니다. 
-인터페이스를 생성하기 전에 우선 데이터 저장 방식부터 결정해야 합니다. 
+    콘텐츠 제공자는 구조화된 형식으로 저장된 데이터로의 인터페이스입니다.
+인터페이스를 생성하기 전에 우선 데이터 저장 방식부터 결정해야 합니다.
 데이터는 원하는 형식 아무 것으로나 저장할 수 있으며 그런 다음에 필요에 따라 해당 데이터를 읽고 쓸 인터페이스를 설계합니다.
 </p>
 <p>
@@ -203,26 +203,26 @@
 <ul>
     <li>
         Android 시스템에는 Android 자체 제공자가 테이블 지향적 데이터를
-저장하는 데 사용하는 SQLite 데이터베이스 API가 포함됩니다. 
+저장하는 데 사용하는 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> 주제를 읽어 보십시오. 
-음악이나 동영상 등 미디어 관련 데이터를 제공하는 제공자를 설계하는 경우, 
+<a href="{@docRoot}guide/topics/data/data-storage.html">데이터 저장소</a> 주제를 읽어 보십시오.
+음악이나 동영상 등 미디어 관련 데이터를 제공하는 제공자를 설계하는 경우,
 제공자가 테이블 데이터와 파일을 조합 할 수 있습니다.
     </li>
     <li>
-        네트워크 기반 데이터를 다루는 경우, {@link java.net} 및 
-{@link android.net} 내의 클래스를 사용하십시오. 네트워크 기반 데이터를 
+        네트워크 기반 데이터를 다루는 경우, {@link java.net} 및
+{@link android.net} 내의 클래스를 사용하십시오. 네트워크 기반 데이터를
 데이터베이스와 같은 로컬 데이터 스토어와 동기화한 다음, 해당 데이터를 테이블이나 파일로 제공할 수도 있습니다.
         <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
 샘플 동기화 어댑터</a> 샘플 애플리케이션이 이런 유형의 동기화를 보여줍니다.
@@ -237,7 +237,7 @@
 <ul>
     <li>
         테이블 데이터는 언제나 제공자가 유지관리하는 "기본 키" 열을
-각 행의 고유한 숫자 값으로 보유하고 있어야 합니다. 이 값을 사용하여 해당 행을 다른 테이블의 
+각 행의 고유한 숫자 값으로 보유하고 있어야 합니다. 이 값을 사용하여 해당 행을 다른 테이블의
 관련 행에 연결시킬 수 있습니다(이를 "외래 키"로 사용). 이 열에는 어느 이름이든 사용할 수 있지만
 {@link android.provider.BaseColumns#_ID BaseColumns._ID}를 사용하는 것이 가장 좋습니다.
 왜냐하면 제공자 쿼리 결과를
@@ -246,8 +246,8 @@
     </li>
     <li>
         비트맵 이미지나 파일 지향적 데이터의 매우 큰 조각을 제공하려면
-테이블 안에 직접 저장하기보다는 파일에 데이터를 저장한 뒤 
-간접적으로 제공합니다. 이렇게 하는 경우, 제공자의 사용자들에게 데이터에 액세스하려면 
+테이블 안에 직접 저장하기보다는 파일에 데이터를 저장한 뒤
+간접적으로 제공합니다. 이렇게 하는 경우, 제공자의 사용자들에게 데이터에 액세스하려면
 {@link android.content.ContentResolver} 파일 메서드를 사용해야 한다고 알려야 합니다.
     </li>
     <li>
@@ -256,12 +256,12 @@
 <a href="http://code.google.com/p/protobuf">프로토콜 버퍼</a> 또는
 <a href="http://www.json.org">JSON 구조</a>를 저장할 수 있습니다.
         <p>
-            BLOB를 사용하여 <em>스키마에 종속되지 않은</em> 테이블을 구현할 수도 있습니다. 
+            BLOB를 사용하여 <em>스키마에 종속되지 않은</em> 테이블을 구현할 수도 있습니다.
 이 유형의 테이블에서는, 기본 키 열, MIME 유형 열 및 하나 이상의 일반적인 열을 BLOB로 정의합니다.
- 
-BLOB 열에 있는 데이터의 의미는 MIME 유형 열에 있는 값으로 나타냅니다. 
-이렇게 하면 같은 테이블에 여러 가지 행 유형을 저장할 수 있습니다. 연락처 제공자의 "데이터" 테이블 
-{@link android.provider.ContactsContract.Data}가 
+
+BLOB 열에 있는 데이터의 의미는 MIME 유형 열에 있는 값으로 나타냅니다.
+이렇게 하면 같은 테이블에 여러 가지 행 유형을 저장할 수 있습니다. 연락처 제공자의 "데이터" 테이블
+{@link android.provider.ContactsContract.Data}가
 스키마에 종속되지 않은 테이블의 한 가지 예입니다.
         </p>
     </li>
@@ -269,11 +269,11 @@
 <!-- Designing Content URIs -->
 <h2 id="ContentURI">콘텐츠 URI 설계</h2>
 <p>
-    <strong>콘텐츠 URI</strong>는 제공자에서 데이터를 식별하는 URI입니다. 
+    <strong>콘텐츠 URI</strong>는 제공자에서 데이터를 식별하는 URI입니다.
 콘텐츠 URI에는 전체 제공자의 상징적인 이름(제공자의 <strong>권한</strong>)과
-테이블 또는 파일을 가리키는 이름(<strong>경로</strong>)이 포함됩니다. 
-선택 항목 ID 부분은 테이블 내의 개별적인 행을 가리킵니다. 
-{@link android.content.ContentProvider}의 모든 데이터 액세스 메서드는 
+테이블 또는 파일을 가리키는 이름(<strong>경로</strong>)이 포함됩니다.
+선택 항목 ID 부분은 테이블 내의 개별적인 행을 가리킵니다.
+{@link android.content.ContentProvider}의 모든 데이터 액세스 메서드는
 콘텐츠 URI를 인수로 가집니다. 이를 통해 액세스할 테이블, 행 또는 파일을 결정할 수 있습니다.
 </p>
 <p>
@@ -283,9 +283,9 @@
 </p>
 <h3>권한 설계</h3>
 <p>
-    제공자에는 보통 하나의 권한이 있으며, 이것이 Android 내부 이름 역할을 합니다. 
+    제공자에는 보통 하나의 권한이 있으며, 이것이 Android 내부 이름 역할을 합니다.
 다른 제공자와의 충돌을 피하려면, 제공자 권한의 기반으로 인터넷 도메인 소유권(역방향)을
-사용해야 합니다. 이 권장 사항은 Android 패키지 이름에도 적용되므로, 
+사용해야 합니다. 이 권장 사항은 Android 패키지 이름에도 적용되므로,
 제공자 권한을 제공자가 들어 있는 패키지의 이름 확장자로 정의해도 됩니다.
  예를 들어, Android 패키지 이름이
 <code>com.example.&lt;appname&gt;</code>라면, 제공자에게
@@ -293,40 +293,40 @@
 </p>
 <h3>경로 구조 설계</h3>
 <p>
-    개발자는 보통 권한으로부터 콘텐츠 URI를 생성할 때 개별적인 테이블을 가리키는 
+    개발자는 보통 권한으로부터 콘텐츠 URI를 생성할 때 개별적인 테이블을 가리키는
 경로를 추가하는 방식을 사용합니다. 예를 들어, <em>table1</em>과
 <em>table2</em>라는 테이블이 있다면, 이전 예시의 권한을 조합하여
-콘텐츠 URI<code>com.example.&lt;appname&gt;.provider/table1</code>와 
+콘텐츠 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> 열에 일치시켜야 하며, 
+    규칙에 의하면, 제공자는 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.widget.CursorAdapter}의 정의에 따르면
 {@link android.database.Cursor} 안의 열 중 하나는 <code>_ID</code>여야 합니다.
 </p>
 <p>
-    그러면 사용자가 데이터를 살펴보거나 수정하기 위하여 
+    그러면 사용자가 데이터를 살펴보거나 수정하기 위하여
 UI에서 표시된 여러 행 중 하나를 선택합니다. 앱은 {@link android.widget.ListView}를 지원하는 {@link android.database.Cursor}에서 해당하는 열을 가져오고,
 해당 열에 대한 <code>_ID</code> 값을 가져와서
-콘텐츠 URI에 추가하고, 제공자에 액세스 요청을 전송합니다. 그런 다음 제공자는 
+콘텐츠 URI에 추가하고, 제공자에 액세스 요청을 전송합니다. 그런 다음 제공자는
 사용자가 선택한 바로 그 행에 대해 쿼리 또는 수정 작업을 수행할 수 있습니다.
 </p>
 <h3>콘텐츠 URI 패턴</h3>
 <p>
-    수신되는 콘텐츠 URI에 대해 어떤 조치를 취할지 선택하는 데 도움이 되도록 하기 위해 제공자 API에 
-편의 클래스 {@link android.content.UriMatcher}가 
-포함되어 있습니다. 이는 콘텐츠 URI "패턴"을 정수값으로 매핑합니다. 이 정수값은 특정 패턴에 일치하는 
+    수신되는 콘텐츠 URI에 대해 어떤 조치를 취할지 선택하는 데 도움이 되도록 하기 위해 제공자 API에
+편의 클래스 {@link android.content.UriMatcher}가
+포함되어 있습니다. 이는 콘텐츠 URI "패턴"을 정수값으로 매핑합니다. 이 정수값은 특정 패턴에 일치하는
 콘텐츠 URI 또는 여러 URI에 대해 원하는 작업을 선택하는 데 <code>switch</code> 문에서 사용할 수 있습니다.
 </p>
 <p>
@@ -341,8 +341,8 @@
         </li>
     </ul>
 <p>
-    콘텐츠 URI 처리의 설계와 코딩에 대한 예시로서 임의의 제공자를 들어 보겠습니다. 
-이 제공자에는 권한 <code>com.example.app.provider</code>가 있고 
+    콘텐츠 URI 처리의 설계와 코딩에 대한 예시로서 임의의 제공자를 들어 보겠습니다.
+이 제공자에는 권한 <code>com.example.app.provider</code>가 있고
 이 권한이 테이블을 가리키는 다음 콘텐츠 URI를 인식합니다.
 </p>
 <ul>
@@ -350,11 +350,11 @@
         <code>content://com.example.app.provider/table1</code>: <code>table1</code>이라는 테이블입니다.
     </li>
     <li>
-        <code>content://com.example.app.provider/table2/dataset1</code>: 
+        <code>content://com.example.app.provider/table2/dataset1</code>:
 <code>dataset1</code>이라는 테이블입니다.
     </li>
     <li>
-        <code>content://com.example.app.provider/table2/dataset2</code>: 
+        <code>content://com.example.app.provider/table2/dataset2</code>:
 <code>dataset2</code>라는 테이블입니다.
     </li>
     <li>
@@ -363,7 +363,7 @@
 </ul>
 <p>
     제공자는 추가된 행 ID가 있으면 이런 콘텐츠 URI도 인식합니다.
-예를 들어, <code>table3</code>에서 <code>1</code>이 식별한 행에 대한 
+예를 들어, <code>table3</code>에서 <code>1</code>이 식별한 행에 대한
 <code>content://com.example.app.provider/table3/1</code>이 이에 해당됩니다.
 </p>
 <p>
@@ -385,7 +385,7 @@
 <code>table3</code>에 대한 콘텐츠 URI와 일치하지 않습니다.
     </dd>
     <dt>
-        <code>content://com.example.app.provider/table3/#</code>: 
+        <code>content://com.example.app.provider/table3/#</code>:
 <code>table3</code>의 단일 행에 대한 콘텐츠 URI와 일치합니다. 예를 들어,
 <code>6</code>이 식별한 행에 대한 <code>content://com.example.app.provider/table3/6</code>이 이에 해당됩니다.
 
@@ -393,8 +393,8 @@
 </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 패턴 <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>
@@ -468,7 +468,7 @@
     }
 </pre>
 <p>
-    또 다른 클래스, {@link android.content.ContentUris}가 
+    또 다른 클래스, {@link android.content.ContentUris}가
 콘텐츠 URI의 <code>id</code> 부분을 다루기 위한 편의 메서드를 제공합니다. 클래스 {@link android.net.Uri}와
 {@link android.net.Uri.Builder}에는
 기존 {@link android.net.Uri} 개체를 구문 분석하고 새로운 개체를 구축하기 위한 편의 메서드가 포함되어 있습니다.
@@ -478,15 +478,15 @@
 <h2 id="ContentProvider">ContentProvider 클래스 구현</h2>
 <p>
     {@link android.content.ContentProvider} 인스턴스는
-다른 애플리케이션으로부터의 요청을 처리하여 구조화된 데이터 세트로의 액세스를 관리합니다. 
-모든 형태의 액세서가 궁극적으로 {@link android.content.ContentResolver}를 호출하며, 
+다른 애플리케이션으로부터의 요청을 처리하여 구조화된 데이터 세트로의 액세스를 관리합니다.
+모든 형태의 액세서가 궁극적으로 {@link android.content.ContentResolver}를 호출하며,
 그러면 이것이 액세스 권한을 얻기 위해 구체적인 {@link android.content.ContentProvider} 메서드를 호출합니다.
 </p>
 <h3 id="RequiredAccess">필수 메서드</h3>
 <p>
-    추상 클래스 {@link android.content.ContentProvider}는 
-개발자가 나름의 구체적인 하위 클래스의 일부분으로 구현해야만 하는 여섯 가지 추상 메서드를 정의합니다. 이와 같은 메서드는 모두 
-({@link android.content.ContentProvider#onCreate() onCreate()}는 예외) 
+    추상 클래스 {@link android.content.ContentProvider}는
+개발자가 나름의 구체적인 하위 클래스의 일부분으로 구현해야만 하는 여섯 가지 추상 메서드를 정의합니다. 이와 같은 메서드는 모두
+({@link android.content.ContentProvider#onCreate() onCreate()}는 예외)
 콘텐츠 제공자에 액세스하려 시도 중인 클라이언트 애플리케이션이 호출합니다.
 </p>
 <dl>
@@ -503,8 +503,8 @@
         {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
     </dt>
     <dd>
-        제공자에 새로운 행을 삽입합니다. 인수를 사용하여 대상 테이블을 선택하고 
-사용할 열 값을 가져옵니다. 
+        제공자에 새로운 행을 삽입합니다. 인수를 사용하여 대상 테이블을 선택하고
+사용할 열 값을 가져옵니다.
 새로 삽입된 행에 대한 콘텐츠 URI를 반환합니다.
     </dd>
     <dt>
@@ -512,7 +512,7 @@
 update()}
     </dt>
     <dd>
-        제공자 내의 기존 행을 업데이트합니다. 인수를 사용하여 
+        제공자 내의 기존 행을 업데이트합니다. 인수를 사용하여
 업데이트할 테이블과 행을 선택하고 업데이트한 열 값을 가져옵니다. 업데이트한 행 개수를 반환합니다.
     </dd>
     <dt>
@@ -526,20 +526,20 @@
         {@link android.content.ContentProvider#getType(Uri) getType()}
     </dt>
     <dd>
-        콘텐츠 URI에 상응하는 MIME 유형을 반환합니다. 이 메서드는 
+        콘텐츠 URI에 상응하는 MIME 유형을 반환합니다. 이 메서드는
 <a href="#MIMETypes">콘텐츠 제공자 MIME 유형</a> 섹션에 더 자세하게 설명되어 있습니다.
     </dd>
     <dt>
         {@link android.content.ContentProvider#onCreate() onCreate()}
     </dt>
     <dd>
-        제공자를 초기화합니다. Android 시스템은 제공자를 생성한 직후 
-이 메서드를 호출합니다. 
+        제공자를 초기화합니다. Android 시스템은 제공자를 생성한 직후
+이 메서드를 호출합니다.
 {@link android.content.ContentResolver} 개체가 제공자에 액세스하려고 시도할 때까지는 제공자가 생성된 것이 아니라는 점을 유의하십시오.
     </dd>
 </dl>
 <p>
-    이와 같은 메서드에는 동일하게 이름 붙여진 
+    이와 같은 메서드에는 동일하게 이름 붙여진
 {@link android.content.ContentResolver} 메서드와 같은 서명이 있다는 것을 눈여겨 보십시오.
 </p>
 <p>
@@ -548,8 +548,8 @@
 <ul>
     <li>
         이런 메서드는 모두({@link android.content.ContentProvider#onCreate() onCreate()}는 예외)
- 한꺼번에 여러 스레드가 호출할 수 있으므로, 스레드로부터 안전해야 합니다. 
-다중 스레드에 대한 자세한 내용은 
+ 한꺼번에 여러 스레드가 호출할 수 있으므로, 스레드로부터 안전해야 합니다.
+다중 스레드에 대한 자세한 내용은
 <a href="{@docRoot}guide/components/processes-and-threads.html">
 프로세스 및 스레드</a> 주제를 참조하십시오.
     </li>
@@ -560,16 +560,16 @@
 섹션에서 더욱 자세히 논의합니다.
     </li>
     <li>
-        이와 같은 메서드는 반드시 구현해야 하는 것이지만, 
-예상되는 데이터 유형을 반환하는 것 외에 달리 코드가 해야 할 일은 없습니다. 
+        이와 같은 메서드는 반드시 구현해야 하는 것이지만,
+예상되는 데이터 유형을 반환하는 것 외에 달리 코드가 해야 할 일은 없습니다.
 예를 들어 몇몇 테이블에 다른 애플리케이션이 데이터를 삽입하지 못하도록 방지하려고 합니다. 이렇게 하려면,
-{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}로의 
+{@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 데이터베이스를 데이터 저장소로 사용하는 경우,
@@ -587,7 +587,7 @@
 </p>
 <p>
     Android 시스템이 프로세스 경계를 가로질러 {@link java.lang.Exception}을
- 통신으로 전달할 수 있어야 한다는 점을 유의하십시오. Android가 이 작업을 할 수 있는 경우는 
+ 통신으로 전달할 수 있어야 한다는 점을 유의하십시오. Android가 이 작업을 할 수 있는 경우는
 쿼리 오류 처리에 유용할 수 있는 다음과 같은 예외에 해당될 때입니다.
 </p>
 <ul>
@@ -608,16 +608,16 @@
 
 </p>
 <p>
-    이 메서드가 새 행에 대한 콘텐츠 URI를 반환하는 것이 정상입니다. 이것을 구성하려면 새 행의 
-<code>_ID</code>(또는 다른 기본 키) 값을 테이블의 콘텐츠 URI에 추가하며, 이때 
+    이 메서드가 새 행에 대한 콘텐츠 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>
@@ -633,20 +633,20 @@
 <h3 id="OnCreate">onCreate() 메서드 구현</h3>
 <p>
     Android 시스템은 제공자를 시작할 때 {@link android.content.ContentProvider#onCreate()
-onCreate()}를 호출합니다. 이 메서드에서는 빠르게 실행되는 초기화만 수행해야 하며, 
+onCreate()}를 호출합니다. 이 메서드에서는 빠르게 실행되는 초기화만 수행해야 하며,
 데이터베이스 생성과 데이터 로딩은 제공자가 실제로 데이터에 대한 요청을 받을 때까지 미뤄두어야 합니다.
- 
+
 {@link android.content.ContentProvider#onCreate() onCreate()}에서 긴 작업을 수행하면
 제공자의 시동 속도가 느려집니다. 이 때문에 제공자에서 다른 애플리케이션으로 전달되는 응답도 따라서 느려집니다.
 
 </p>
 <p>
     예를 들어, SQLite 데이터베이스를 사용하는 경우
-{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}에서 
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}에서
 새로운 {@link android.database.sqlite.SQLiteOpenHelper} 개체를 생성하고,
 그런 다음 데이터베이스를 처음 열 때 SQL 테이블을 생성할 수 있습니다. 이를 용이하게 하기 위해
 {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
-getWritableDatabase()}를 처음 호출하면 이것이 자동으로 
+getWritableDatabase()}를 처음 호출하면 이것이 자동으로
 {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
 SQLiteOpenHelper.onCreate()} 메서드를 호출합니다.
 </p>
@@ -776,7 +776,7 @@
 </p>
 <p>
     텍스트, HTML 또는 JPEG와 같은 보편적인 유형의 데이터라면
-{@link android.content.ContentProvider#getType(Uri) getType()}이 
+{@link android.content.ContentProvider#getType(Uri) getType()}이
 해당 데이터에 대한 표준 MIME 유형을 반환하는 것이 정상입니다. 이러한 표준 유형의 전체 목록은
 <a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME 미디어 유형</a>
 웹사이트에서 확인할 수 있습니다.
@@ -807,17 +807,17 @@
             개발자가 <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와 연관된 테이블을 식별하는 
+합니다. <code>&lt;name&gt;</code>으로 좋은 예는 회사 이름이나
+애플리케이션의 Android 패키지 이름을 들 수 있습니다.
+<code>&lt;type&gt;</code>으로 좋은 예는 URI와 연관된 테이블을 식별하는
 문자열을 들 수 있습니다.
         </p>
 
     </li>
 </ul>
 <p>
-    예를 들어 어떤 제공자의 권한이 
-<code>com.example.app.provider</code>이고, 이것이 
+    예를 들어 어떤 제공자의 권한이
+<code>com.example.app.provider</code>이고, 이것이
 <code>table1</code>이라는 테이블을 노출하는 경우, <code>table1</code>의 여러 행에 대한 MIME 유형은 다음과 같습니다.
 </p>
 <pre>
@@ -833,8 +833,8 @@
 <p>
     제공자가 파일을 제공하는 경우,
 {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}를 구현합니다.
-    이 메서드는 제공자가 주어진 콘텐츠 URI에 대해 반환할 수 있는 파일에 대한 MIME 유형의 {@link java.lang.String} 배열을 반환합니다. 
-제공하는 MIME 유형을 MIME 유형 필터 인수 기준으로 필터링해야 
+    이 메서드는 제공자가 주어진 콘텐츠 URI에 대해 반환할 수 있는 파일에 대한 MIME 유형의 {@link java.lang.String} 배열을 반환합니다.
+제공하는 MIME 유형을 MIME 유형 필터 인수 기준으로 필터링해야
 클라이언트가 처리하고자 하는 MIME 유형만 반환할 수 있습니다.
 </p>
 <p>
@@ -850,16 +850,16 @@
 { &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
 </pre>
 <p>
-    앱이 <code>.jpg</code> 파일에만 관심이 있는 경우에는 
+    앱이 <code>.jpg</code> 파일에만 관심이 있는 경우에는
 필터 문자열 <code>*\/jpeg</code>으로 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
-    ContentResolver.getStreamTypes()}를 호출할 수 있습니다. 그러면 
+    ContentResolver.getStreamTypes()}를 호출할 수 있습니다. 그러면
     {@link android.content.ContentProvider#getStreamTypes(Uri, String)
     ContentProvider.getStreamTypes()}가 다음과 같이 반환하는 것이 정상입니다.
 <pre>
 {&quot;image/jpeg&quot;}
 </pre>
 <p>
-    제공자가 필터 문자열에서 요청한 MIME 유형 중 제공하는 것이 없는 경우, 
+    제공자가 필터 문자열에서 요청한 MIME 유형 중 제공하는 것이 없는 경우,
 {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}가
  <code>null</code>을 반환하는 것이 정상입니다.
 </p>
@@ -868,76 +868,76 @@
 <!--  Implementing a Contract Class -->
 <h2 id="ContractClass">계약 클래스 구현</h2>
 <p>
-    계약 클래스는 <code>public final</code> 클래스로, 이 안에 URI, 열 이름, MIME 유형의 
-상수 정의 및 제공자에 관련된 다른 메타 데이터가 들어 있습니다. 
+    계약 클래스는 <code>public final</code> 클래스로, 이 안에 URI, 열 이름, MIME 유형의
+상수 정의 및 제공자에 관련된 다른 메타 데이터가 들어 있습니다.
 이 클래스는 URI, 열 이름 등의 실제 값에 변경된 내용이 있더라도
- 제공자에 올바르게 액세스할 수 있도록 보장하여 제공자와 
+ 제공자에 올바르게 액세스할 수 있도록 보장하여 제공자와
 다른 애플리케이션 사이의 계약을 확립합니다.
 </p>
 <p>
-    계약 클래스가 개발자에게 유용한 이유는 또 있습니다. 이 클래스는 보통 자신의 상수 이름으로 
-니모닉 이름을 가지기 때문에 개발자가 열 이름 또는 URI에 잘못된 값을 사용할 가능성이 덜합니다. 
-이것도 클래스의 일종이기 때문에 Javadoc 문서를 포함할 수 있습니다. 
+    계약 클래스가 개발자에게 유용한 이유는 또 있습니다. 이 클래스는 보통 자신의 상수 이름으로
+니모닉 이름을 가지기 때문에 개발자가 열 이름 또는 URI에 잘못된 값을 사용할 가능성이 덜합니다.
+이것도 클래스의 일종이기 때문에 Javadoc 문서를 포함할 수 있습니다.
 Eclipse와 같은 통합 개발 환경은 계약 클래스의 상수 이름을 자동 완성하고
 해당 상수에 대한 Javadoc을 표시할 수 있습니다.
 </p>
 <p>
-    개발자가 애플리케이션에서 계약 클래스의 클래스 파일에 액세스할 수는 없지만 
+    개발자가 애플리케이션에서 계약 클래스의 클래스 파일에 액세스할 수는 없지만
 여러분이 제공하는 <code>.jar</code> 파일에서 이를 애플리케이션 안으로 정적으로 컴파일링할 수 있습니다.
 </p>
 <p>
-    {@link android.provider.ContactsContract} 클래스와 
+    {@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> 주제에서도 
+    <a href="{@docRoot}guide/topics/data/data-storage.html">데이터 저장소</a> 주제에서도
 다양한 유형의 저장소에 적용되는 보안 및 권한을 설명하고 있습니다.
     간략히 말해 요점은 다음과 같습니다.
 </p>
 <ul>
     <li>
-        기본적으로, 기기의 내부 저장소에 저장된 데이터 파일은 
+        기본적으로, 기기의 내부 저장소에 저장된 데이터 파일은
 본인의 애플리케이션과 제공자 전용입니다.
     </li>
     <li>
-        본인이 생성한 {@link android.database.sqlite.SQLiteDatabase} 데이터베이스는 
+        본인이 생성한 {@link android.database.sqlite.SQLiteDatabase} 데이터베이스는
 본인의 애플리케이션과 제공자만의 비공개 데이터입니다.
     </li>
     <li>
         기본적으로 외부 저장소에 저장하는 데이터 파일은 <em>공개</em>이고
-<em>누구나 읽을 수 있습니다</em>. 외부 저장소에 있는 파일로의 액세스를 제공하는 데 콘텐츠 제공자를 쓸 수는 
+<em>누구나 읽을 수 있습니다</em>. 외부 저장소에 있는 파일로의 액세스를 제공하는 데 콘텐츠 제공자를 쓸 수는
 없습니다. 다른 애플리케이션이 다른 API 호출을 사용하여 해당 파일을 읽고 쓸 수 있기 때문입니다.
     </li>
     <li>
         기기의 내부 저장소에 있는 파일 또는 SQLite 데이터베이스를 열거나 생성하기 위한 메서드 호출은
-다른 모든 애플리케이션에 읽기 및 쓰기 액세스 권한을 허가할 가능성이 있습니다. 
+다른 모든 애플리케이션에 읽기 및 쓰기 액세스 권한을 허가할 가능성이 있습니다.
 내부 파일이나 데이터베이스를 제공자의 리포지토리로 사용하고
-"누구나 읽을 수 있는" 또는 "누구나 쓸 수 있는" 액세스를 부여하면 
-매니페스트에서 제공자에 대해 설정한 권한이 데이터를 보호하지 못합니다. 
+"누구나 읽을 수 있는" 또는 "누구나 쓸 수 있는" 액세스를 부여하면
+매니페스트에서 제공자에 대해 설정한 권한이 데이터를 보호하지 못합니다.
 내부 저장소 안에 있는 파일과 데이터베이스에 대한기본 액세스는 "비공개"이며, 제공자의 리포지토리가 이것을 변경하면 안 됩니다.
     </li>
 </ul>
 <p>
-    데이터로의 액세스를 제어하기 위해 콘텐츠 제공자 권한을 쓰고자 하는 경우, 
-데이터를 내부 파일, SQLite 데이터베이스 또는 "클라우드"(예: 원격 서버) 안의 
+    데이터로의 액세스를 제어하기 위해 콘텐츠 제공자 권한을 쓰고자 하는 경우,
+데이터를 내부 파일, 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> 요소로 정의합니다. 
+    &lt;permission&gt;</a></code> 요소로 정의합니다.
 제공자에 고유한 권한을 설정하려면
 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
     android:name</a></code> 속성에 Java 스타일 범위를 사용합니다. 예를 들어 읽기 권한의 이름을
@@ -945,7 +945,7 @@
 
 </p>
 <p>
-    다음 목록은 제공자 권한의 범위를 설명한 것입니다. 
+    다음 목록은 제공자 권한의 범위를 설명한 것입니다.
 제공자 전체에 적용되는 권한부터 시작하여 점차 세분화된 권한이 됩니다.
     보다 세부화된 권한이 범위가 큰 것보다 우선합니다.
 </p>
@@ -954,9 +954,9 @@
         단일 읽기-쓰기 제공자 수준 권한
     </dt>
     <dd>
-        제공자 전체로의 읽기와 쓰기 액세스 양쪽 모두를 제어하는 하나의 권한으로, 
+        제공자 전체로의 읽기와 쓰기 액세스 양쪽 모두를 제어하는 하나의 권한으로,
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
-        &lt;provider&gt;</a></code> 요소의 
+        &lt;provider&gt;</a></code> 요소의
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
         android:permission</a></code> 속성으로 지정됩니다.
     </dd>
@@ -978,14 +978,14 @@
         경로 수준 권한
     </dt>
     <dd>
-        제공자의 콘텐츠 URI에 대한 읽기, 쓰기 또는 읽기/쓰기 권한입니다. 제어하고자 하는 각 URI를 직접 지정하되, 
-이때 
+        제공자의 콘텐츠 URI에 대한 읽기, 쓰기 또는 읽기/쓰기 권한입니다. 제어하고자 하는 각 URI를 직접 지정하되,
+이때
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
-        &lt;provider&gt;</a></code> 요소의 
+        &lt;provider&gt;</a></code> 요소의
 <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
-        &lt;path-permission&gt;</a></code> 하위 요소를 사용합니다. 지정하는 콘텐츠 URI마다 
-읽기/쓰기 권한, 읽기 권한 또는 쓰기 권한을 하나씩 지정하거나 셋 모두를 지정할 수 있습니다. 
-읽기 및 쓰기 권한이 읽기/쓰기 권한보다 우선합니다. 
+        &lt;path-permission&gt;</a></code> 하위 요소를 사용합니다. 지정하는 콘텐츠 URI마다
+읽기/쓰기 권한, 읽기 권한 또는 쓰기 권한을 하나씩 지정하거나 셋 모두를 지정할 수 있습니다.
+읽기 및 쓰기 권한이 읽기/쓰기 권한보다 우선합니다.
 또한, 경로 수준 권한이 제공자 수준 권한보다 우선합니다.
     </dd>
     <dt>
@@ -993,18 +993,18 @@
     </dt>
     <dd>
         애플리케이션에 임시 액세스를 허용하는 권한 수준입니다.
-해당 애플리케이션에 일반적으로 요구되는 권한이 없더라도 무관합니다. 
+해당 애플리케이션에 일반적으로 요구되는 권한이 없더라도 무관합니다.
 임시 액세스 기능은 매니페스트에서 요청해야 하는
-권한과 애플리케이션 개수를 줄여줍니다. 임시 권한을 사용하는 경우, 
-제공자에 대하여 "영구" 권한을 필요로하는 애플리케이션은 
+권한과 애플리케이션 개수를 줄여줍니다. 임시 권한을 사용하는 경우,
+제공자에 대하여 "영구" 권한을 필요로하는 애플리케이션은
 모든 데이터에 지속적으로 액세스하는 것들뿐입니다.
         <p>
-            이메일 제공자와 앱을 구현할 때 필요한 권한을 예로 들어 보겠습니다. 
-외부 이미지 뷰어 애플리케이션으로 하여금 제공자에서 보낸 사진 첨부 파일을 
-표시하도록 허용하고자 한다고 가정합니다. 권한을 요구하지 않고 이미지 뷰어에 필수 액세스를 부여하려면, 
-사진에 대한 콘텐츠 URI에 해단되는 임시 권한을 설정하십시오. 
+            이메일 제공자와 앱을 구현할 때 필요한 권한을 예로 들어 보겠습니다.
+외부 이미지 뷰어 애플리케이션으로 하여금 제공자에서 보낸 사진 첨부 파일을
+표시하도록 허용하고자 한다고 가정합니다. 권한을 요구하지 않고 이미지 뷰어에 필수 액세스를 부여하려면,
+사진에 대한 콘텐츠 URI에 해단되는 임시 권한을 설정하십시오.
 사용자가 사진을 표시하기를 원할 때 앱이 사진의 콘텐츠 URI와 권한 플래그를 포함하는 인텐트를
-이미지 뷰어에 보내도록 이메일 앱을 설계합니다. 그러면 해당 이미지 뷰어가 
+이미지 뷰어에 보내도록 이메일 앱을 설계합니다. 그러면 해당 이미지 뷰어가
 이메일 제공자에 사진 검색을 쿼리할 수 있으며, 이 뷰어에 제공자에 대한 정상적인 읽기 권한이 없더라도 무방합니다.
 
         </p>
@@ -1017,29 +1017,29 @@
 <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> 요소에 추가하면 됩니다. 임시 권한을 사용하는 경우, 
+            &lt;provider&gt;</a></code> 요소에 추가하면 됩니다. 임시 권한을 사용하는 경우,
 제공자에서 콘텐츠 URI에 대한 지원을 제거할 때마다 {@link android.content.Context#revokeUriPermission(Uri, int)
-            Context.revokeUriPermission()}을 호출해야 합니다. 
+            Context.revokeUriPermission()}을 호출해야 합니다.
 그러면 콘텐츠 URI가 임시 권한과 연관됩니다.
         </p>
         <p>
             속성의 값에 따라 제공자에 액세스 가능한 정도가 결정됩니다.
-            속성이 <code>true</code>로 설정되어 있는 경우라면 
-시스템이 제공자 전체에 임시 권한을 허용하며, 제공자 수준 또는 
+            속성이 <code>true</code>로 설정되어 있는 경우라면
+시스템이 제공자 전체에 임시 권한을 허용하며, 제공자 수준 또는
 경로 수준 권한에서 요구하는 다른 모든 권한을 재정의합니다.
         </p>
         <p>
-            이 플래그가 <code>false</code>로 설정되면, 반드시 
+            이 플래그가 <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> 요소에 추가해야 합니다. 각 하위 요소는 임시 권한을 허용한 
+            &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#FLAG_GRANT_WRITE_URI_PERMISSION} 플래그, 또는 둘 모두가 들어 있어야 합니다. 이들은
 {@link android.content.Intent#setFlags(int) setFlags()} 메서드로 설정됩니다.
         </p>
         <p>
@@ -1087,7 +1087,7 @@
         권한
     </dt>
     <dd>
-        제공자의 데이터에 액세스하기 위해 다른 애플리케이션이 
+        제공자의 데이터에 액세스하기 위해 다른 애플리케이션이
 반드시 가지고 있어야 하는 권한을 나타내는 속성입니다.
         <ul>
             <li>
@@ -1108,7 +1108,7 @@
             </li>
         </ul>
         <p>
-            각종 권한과 그에 상응하는 속성은 
+            각종 권한과 그에 상응하는 속성은
 
 <a href="#Permissions">콘텐츠 제공자 권한 구현</a> 섹션에 자세히 설명되어 있습니다.
         </p>
@@ -1117,7 +1117,7 @@
         시작 및 제어 속성
     </dt>
     <dd>
-        이와 같은 속성은 Android 시스템이 제공자를 시작하는 방법과 시점, 
+        이와 같은 속성은 Android 시스템이 제공자를 시작하는 방법과 시점,
 제공자의 프로세스 특징과 기타 런타임 설정 등을 결정합니다.
         <ul>
             <li>
@@ -1130,12 +1130,12 @@
             </li>
             <li>
                 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
-                android:initOrder</a></code>: 같은 프로세스 내의 다른 제공자와 비교하여 
+                android:initOrder</a></code>: 같은 프로세스 내의 다른 제공자와 비교하여
 이 제공자가 시작되어야 하는 순서입니다.
             </li>
             <li>
                 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
-                android:multiProcess</a></code>: 클라이언트를 호출하는 것과 
+                android:multiProcess</a></code>: 클라이언트를 호출하는 것과
 같은 프로세스에서 시스템이 제공자를 시작할 수 있게 해주는 플래그입니다.
             </li>
             <li>
@@ -1145,7 +1145,7 @@
             </li>
             <li>
                 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
-                android:syncable</a></code>: 제공자의 데이터가 
+                android:syncable</a></code>: 제공자의 데이터가
 서버에 있는 데이터와 동기화될 예정임을 나타내는 플래그입니다.
             </li>
         </ul>
@@ -1165,7 +1165,7 @@
             <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>
@@ -1187,28 +1187,28 @@
 <h2 id="Intents">인텐트 및 데이터 액세스</h2>
 <p>
     애플리케이션이 콘텐츠 제공자에 간접적으로 액세스하려면 {@link android.content.Intent}를 사용하면 됩니다.
-    이 애플리케이션은 {@link android.content.ContentResolver} 또는 
-{@link android.content.ContentProvider}의 메서드 중 어느 하나도 호출하지 않습니다. 
-대신, 액티비티를 시작하는 인텐트를 전송합니다. 이 인텐트는 제공자가 소유한 애플리케이션의 일부인 경우가 많습니다. 
-대상 액티비티가 데이터를 자체 UI에서 검색하고 표시하는 역할을 맡습니다. 
+    이 애플리케이션은 {@link android.content.ContentResolver} 또는
+{@link android.content.ContentProvider}의 메서드 중 어느 하나도 호출하지 않습니다.
+대신, 액티비티를 시작하는 인텐트를 전송합니다. 이 인텐트는 제공자가 소유한 애플리케이션의 일부인 경우가 많습니다.
+대상 액티비티가 데이터를 자체 UI에서 검색하고 표시하는 역할을 맡습니다.
 인텐트의 동작에 따라 대상 액티비티가 사용자에게 프롬프트를 표시하여 제공자의 데이터를 수정하도록 할 수도 있습니다.
     인텐트에는 대상 액티비티가 UI에 표시하는 "추가" 데이터가 들어 있을 수도 있습니다.
-그러면 사용자에게 이 데이터를 변경할 수 있는 옵션이 주어지고, 그런 다음 이를 사용하여 
+그러면 사용자에게 이 데이터를 변경할 수 있는 옵션이 주어지고, 그런 다음 이를 사용하여
 제공자 내의 데이터를 수정할 수 있습니다.
 </p>
 <p>
 
 </p>
 <p>
-    데이터 무결성을 보장하는 데 유용한 것을 원하면 인텐트 액세스를 사용하는 것이 좋습니다. 
-엄격하게 정의된 비즈니스 논리에 따라 데이터가 삽입, 업데이트되고 삭제되는 것이 제공자를 크게 좌우할 수도 있습니다. 
-이런 경우에 해당되면, 다른 애플리케이션에 데이터를 직접 수정하도록 허용하면 데이터가 잘못되는 
+    데이터 무결성을 보장하는 데 유용한 것을 원하면 인텐트 액세스를 사용하는 것이 좋습니다.
+엄격하게 정의된 비즈니스 논리에 따라 데이터가 삽입, 업데이트되고 삭제되는 것이 제공자를 크게 좌우할 수도 있습니다.
+이런 경우에 해당되면, 다른 애플리케이션에 데이터를 직접 수정하도록 허용하면 데이터가 잘못되는
 결과를 초래할 수 있습니다. 개발자들에게 인텐트 액세스 사용을 허용하려면, 그 내용을 철저히 기록해두어야 합니다.
-    개발자들에게 자기 애플리케이션의 UI를 사용한 인텐트 액세스가 
+    개발자들에게 자기 애플리케이션의 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
index ce98840..8671f7b7 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
@@ -47,31 +47,31 @@
 </div>
 </div>
 <p>
-    콘텐츠 제공자는 구조화된 데이터 세트로의 액세스를 관리합니다. 
-데이터를 캡슐화하여 데이터 보안을 정의하는 데 필요한 메커니즘을 제공하기도 합니다. 
+    콘텐츠 제공자는 구조화된 데이터 세트로의 액세스를 관리합니다.
+데이터를 캡슐화하여 데이터 보안을 정의하는 데 필요한 메커니즘을 제공하기도 합니다.
 콘텐츠 제공자는 한 프로세스의 데이터에 다른 프로세스에서 실행 중인 코드를 연결하는 표준 인터페이스입니다.
 </p>
 <p>
-    콘텐츠 제공자 내의 데이터에 액세스하고자 하는 경우, 
+    콘텐츠 제공자 내의 데이터에 액세스하고자 하는 경우,
 애플리케이션의 {@link android.content.Context}에 있는
 {@link android.content.ContentResolver} 개체를 사용하여 클라이언트로서 제공자와 통신을 주고받으면 됩니다.
-    {@link android.content.ContentResolver} 개체가 제공자 개체와 통신하며, 이 개체는 
-{@link android.content.ContentProvider}를 구현하는 클래스의 인스턴스입니다. 
+    {@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> 패키지에 대한 참조 문서에서 확인할 수 있습니다. 이와 같은 제공자는 몇 가지 제약이 있지만, 
+    </code> 패키지에 대한 참조 문서에서 확인할 수 있습니다. 이와 같은 제공자는 몇 가지 제약이 있지만,
 어느 Android 애플리케이션에나 액세스할 수 있습니다.
 </p><p>
     다음 주제에서는 콘텐츠 제공자에 대해 좀 더 자세히 설명합니다.
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
index e356e22..665a72a 100644
--- a/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
@@ -75,96 +75,96 @@
 </div>
 
 
-<p>Android 4.4(API 레벨 19)에서는 저장소 액세스 프레임워크(SAF)를 처음 도입하게 되었습니다. SAF는 
-사용자가 선호하는 문서 저장소 제공자 전체를 걸쳐 문서, 이미지 및 각종 다른 파일을 
-탐색하고 여는 작업을 간편하게 만들어줍니다. 표준형의, 사용하기 쉬운 UI로 
+<p>Android 4.4(API 레벨 19)에서는 저장소 액세스 프레임워크(SAF)를 처음 도입하게 되었습니다. SAF는
+사용자가 선호하는 문서 저장소 제공자 전체를 걸쳐 문서, 이미지 및 각종 다른 파일을
+탐색하고 여는 작업을 간편하게 만들어줍니다. 표준형의, 사용하기 쉬운 UI로
 사용자가 각종 앱과 제공자에 걸쳐 일관된 방식으로 파일을 탐색하고 최근 내용에 액세스할 수 있게 해줍니다.</p>
 
-<p>클라우드 또는 로컬 저장소 서비스가 이 에코시스템에 참가하려면 자신의 서비스를 캡슐화하는 
-{@link android.provider.DocumentsProvider}를 구현하면 됩니다. 
-제공자의 문서에 액세스해야 하는 클라이언트 앱의 경우 단 몇 줄의 코드만으로 
+<p>클라우드 또는 로컬 저장소 서비스가 이 에코시스템에 참가하려면 자신의 서비스를 캡슐화하는
+{@link android.provider.DocumentsProvider}를 구현하면 됩니다.
+제공자의 문서에 액세스해야 하는 클라이언트 앱의 경우 단 몇 줄의 코드만으로
 SAF와 통합할 수 있습니다.</p>
 
 <p>SAF에는 다음과 같은 항목이 포함됩니다.</p>
 
 <ul>
 <li><strong>문서 제공자</strong>&mdash;일종의 콘텐츠 제공자로
-저장소 서비스(예: Google Drive 등)로 하여금 자신이 관리하는 파일을 드러내도록 허용합니다. 문서 제공자는 
-{@link android.provider.DocumentsProvider} 클래스의 하위 클래스로 구현됩니다. 
-문서 제공자 스키마는 기존의 파일 계층을 근거로 하지만, 
-문서 제공자가 데이터를 저장하는 물리적인 방법은 개발자가 선택하기 나름입니다. 
-Android 플랫폼에는 내장된 문서 제공자가 여러 개 있습니다. 
+저장소 서비스(예: 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} 인텐트를 호출하고, 
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} 인텐트를 호출하고,
 문서 제공자가 반환하는 파일을 수신합니다.</li>
 
-<li><strong>선택기</strong>&mdash;일종의 시스템 UI로 사용자가 클라이언트 앱의 
+<li><strong>선택기</strong>&mdash;일종의 시스템 UI로 사용자가 클라이언트 앱의
 검색 기준을 만족하는 모든 문서 제공자에서 문서에 액세스할 수 있도록 해줍니다.</li>
 </ul>
 
 <p>SAF가 제공하는 기능을 몇 가지 예로 들면 다음과 같습니다.</p>
 <ul>
 <li>사용자들로 하여금 하나의 앱만이 아니라 모든 문서 제공자에서 콘텐츠를 탐색할 수 있게 해줍니다.</li>
-<li>여러분의 앱이 문서 제공자가 소유한 문서에 대한 장기적, 영구적 액세스 권한을 가질 수 있도록 
-해줍니다. 이 액세스 권한을 통해 사용자가 제공자에 있는 파일을 추가, 편집, 
+<li>여러분의 앱이 문서 제공자가 소유한 문서에 대한 장기적, 영구적 액세스 권한을 가질 수 있도록
+해줍니다. 이 액세스 권한을 통해 사용자가 제공자에 있는 파일을 추가, 편집,
 저장 및 삭제할 수 있습니다.</li>
-<li>여러 개의 사용자 계정을 지원하며 USB 저장소 제공자와 같은 임시 루트도 지원합니다. 
+<li>여러 개의 사용자 계정을 지원하며 USB 저장소 제공자와 같은 임시 루트도 지원합니다.
 이는 드라이브가 연결되어 있을 때만 나타납니다. </li>
 </ul>
 
 <h2 id ="overview">개요</h2>
 
-<p>SAF는 {@link android.provider.DocumentsProvider} 클래스의 
-하위 클래스인 콘텐츠 제공자를 중심으로 둘러싸고 있습니다. 데이터는 <em>문서 제공자</em> 내에서 일반적인 파일 계층으로 
+<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 class="img-caption"><strong>그림 1.</strong> 문서 제공자 데이터 모델입니다. 루트 하나가 하나의 문서를 가리키며,
 이는 다시 트리 전체의 팬아웃을 시작합니다.</p>
 
 <p>다음 내용을 참고하십시오.</p>
 <ul>
 
-<li>각 문서 제공자는 하나 이상의 "루트"를 보고합니다. 
+<li>각 문서 제공자는 하나 이상의 "루트"를 보고합니다.
 이는 문서 트리 속을 탐색할 시작 지점입니다.
-각 루트에는 고유한 {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID}가 있으며, 
-이는 해당 루트 아래의 콘텐츠를 나타내는 문서(디렉터리)를 
+각 루트에는 고유한 {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID}가 있으며,
+이는 해당 루트 아래의 콘텐츠를 나타내는 문서(디렉터리)를
 가리킵니다.
-루트는 설계상 동적으로 만들어져 있어 여러 개의 계정, 임시 USB 저장소 기기 
+루트는 설계상 동적으로 만들어져 있어 여러 개의 계정, 임시 USB 저장소 기기
 또는 사용자 로그인/로그아웃 등과 같은 경우를 지원하도록 되어 있습니다.</li>
 
-<li>각 루트 아래에 문서가 하나씩 있습니다. 해당 문서는 1부터 <em>N</em>까지의 문서를 가리키는데, 
+<li>각 루트 아래에 문서가 하나씩 있습니다. 해당 문서는 1부터 <em>N</em>까지의 문서를 가리키는데,
 이는 각각 1부터 <em>N</em>의 문서를 가리킬 수 있습니다. </li>
 
-<li>각 저장소의 백엔드가 
-개별적인 파일과 디렉터리를 고유한 
-{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}로 
-참조하여 드러냅니다.문서 ID는 고유해야 하며 한 번 발행되고 나면 변경되지 않습니다. 
+<li>각 저장소의 백엔드가
+개별적인 파일과 디렉터리를 고유한
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}로
+참조하여 드러냅니다.문서 ID는 고유해야 하며 한 번 발행되고 나면 변경되지 않습니다.
 이들은 기기 재부팅을 통괄하여 영구적인 URI 허가에 사용되기 때문입니다.</li>
 
 
-<li>문서는 열 수 있는 파일이거나(특정 MIME 유형으로), 
+<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>각 문서는 서로 다른 기능을 가지고 있을 수 있습니다. 이는
+{@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>위에서 언급한 바와 같이, 문서 제공자 데이터 모델은 일반적인
+파일 계층을 기반으로 합니다. 그러나, 데이터를 물리적으로 저장하는 방식은 마음대로 선택할 수 있습니다. 다만
+{@link android.provider.DocumentsProvider} API를 통해 액세스할 수 있기만 하면 됩니다.
 예를 들어, 데이터를 저장하기 위해 태그 기반 클라우드 저장소를 사용해도 됩니다.</p>
 
-<p>그림 2는 사진 앱이 SAF를 사용하여 저장된 데이터에 액세스할 수 있는 방법을 
+<p>그림 2는 사진 앱이 SAF를 사용하여 저장된 데이터에 액세스할 수 있는 방법을
 예시로 나타낸 것입니다.</p>
 <p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
 
@@ -174,31 +174,31 @@
 <ul>
 
 <li>SAF에서는 제공자와 클라이언트가 직접 상호 작용하지 않습니다.
- 클라이언트가 파일과 상호 작용하기 위한 권한을 요청합니다(다시 말해, 
+ 클라이언트가 파일과 상호 작용하기 위한 권한을 요청합니다(다시 말해,
 파일을 읽고, 편집하고 생성 또는 삭제할 권한을 말합니다).</li>
 
-<li>상호 작용은 애플리케이션(이 예시에서는 주어진 사진 앱)이 인텐트 
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 또는 {@link android.content.Intent#ACTION_CREATE_DOCUMENT}를 실행시키면 시작합니다. 이 인텐트에는 
-기준을 한층 더 정밀하게 하기 위한 필터가 포함될 수 있습니다. 예를 들어, "열 수 있는 파일 중에서 
+<li>상호 작용은 애플리케이션(이 예시에서는 주어진 사진 앱)이 인텐트
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 또는 {@link android.content.Intent#ACTION_CREATE_DOCUMENT}를 실행시키면 시작합니다. 이 인텐트에는
+기준을 한층 더 정밀하게 하기 위한 필터가 포함될 수 있습니다. 예를 들어, "열 수 있는 파일 중에서
 '이미지' MIME 유형을 가진 파일을 모두 주세요"라고 할 수 있습니다.</li>
 
-<li>인텐트가 실행되면 시스템 선택기가 각각의 등록된 제공자로 이동하여 사용자에게 
+<li>인텐트가 실행되면 시스템 선택기가 각각의 등록된 제공자로 이동하여 사용자에게
 일치하는 콘텐츠 루트를 보여줍니다.</li>
 
-<li>선택기는 사용자에게 문서에 액세스하는 데 쓰는 표준 인터페이스를 부여합니다. 이는 
-기본 문서 제공자 사이에 큰 차이가 있더라도 무관합니다. 예를 들어, 그림 2는 
+<li>선택기는 사용자에게 문서에 액세스하는 데 쓰는 표준 인터페이스를 부여합니다. 이는
+기본 문서 제공자 사이에 큰 차이가 있더라도 무관합니다. 예를 들어, 그림 2는
 Google Drive 제공자, USB 제공자와 클라우드 제공자를 나타낸 것입니다.</li>
 </ul>
 
-<p>그림 3은 이미지를 검색 중인 사용자가 Google Drive 계정을 선택한 
+<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>사용자가 Google Drive를 선택하면 이미지가 그림 4에 나타난 것처럼
+표시됩니다. 그때부터 사용자는 제공자와 클라이언트 앱이 지원하는 방식이라면 어떤 식으로든
 이들 이미지와 상호 작용할 수 있게 됩니다.
 
 <p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
@@ -207,45 +207,45 @@
 
 <h2 id="client">클라이언트 앱 작성</h2>
 
-<p>Android 4.3 이하에서는 앱이 또 다른 앱에서 파일을 검색할 수 있도록 하려면 
+<p>Android 4.3 이하에서는 앱이 또 다른 앱에서 파일을 검색할 수 있도록 하려면
  {@link android.content.Intent#ACTION_PICK}
- 또는 {@link android.content.Intent#ACTION_GET_CONTENT}와 같은 인텐트를 호출해야만 했습니다. 그런 다음 
-파일을 선택할 앱을 하나 선택하고, 선택한 앱이 사용자 인터페이스를 제공하여야 사용자가 
+ 또는 {@link android.content.Intent#ACTION_GET_CONTENT}와 같은 인텐트를 호출해야만 했습니다. 그런 다음
+파일을 선택할 앱을 하나 선택하고, 선택한 앱이 사용자 인터페이스를 제공하여야 사용자가
 이용 가능한 파일 중에서 탐색하고 선택할 수 있었습니다. </p>
 
-<p>Android 4.4 이상에는 
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 인텐트를 사용할 수 있다는 추가 옵션이 있습니다. 
-이는 시스템이 제어하는 선택기를 표시하여 사용자가 다른 앱에서 이용할 수 있게 만든 파일을 
-모두 탐색할 수 있게 해줍니다. 이 하나의 UI로부터 
+<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>{@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>앱이 단순히 데이터를 읽고/가져오기만을 바란다면
+{@link android.content.Intent#ACTION_GET_CONTENT}를 사용하십시오.
 이 방식을 사용하면 앱은 이미지 파일과 같은 데이터 사본을 가져오게 됩니다.</li>
 
-<li>앱이 문서 제공자가 보유한 문서에 장기적, 영구적 액세스 권한을 가지기를 바라는 경우 
+<li>앱이 문서 제공자가 보유한 문서에 장기적, 영구적 액세스 권한을 가지기를 바라는 경우
 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}를 사용하십시오.
- 일례로 사용자들에게 문서 제공자에 저장된 이미지를 편집할 수 있게 해주는 
+ 일례로 사용자들에게 문서 제공자에 저장된 이미지를 편집할 수 있게 해주는
 사진 편집 앱을 들 수 있겠습니다. </li>
 
 </ul>
 
 
-<p>이 섹션에서는 
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 및 
+<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}를 
-사용하여 이미지 파일이 들어 있는 문서 제공자를 
+다음 조각에서는 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}를
+사용하여 이미지 파일이 들어 있는 문서 제공자를
 검색합니다.</p>
 
 <pre>private static final int READ_REQUEST_CODE = 42;
@@ -277,7 +277,7 @@
 <li>앱이 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
  인텐트를 실행시키면 이는 일치하는 문서 제공자를 모두 표시하는 선택기를 시작합니다.</li>
 
-<li>{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 
+<li>{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를
 인텐트에 추가하면 결과를 필터링하여 이미지 파일 등 열 수 있는 문서만 표시합니다.</li>
 
 <li>{@code intent.setType("image/*")} 문으로 한층 더 필터링을 수행하여
@@ -286,10 +286,10 @@
 
 <h3 id="results">결과 처리</h3>
 
-<p>사용자가 선택기에서 문서를 선택하면 
-{@link android.app.Activity#onActivityResult onActivityResult()}가 호출됩니다. 
+<p>사용자가 선택기에서 문서를 선택하면
+{@link android.app.Activity#onActivityResult onActivityResult()}가 호출됩니다.
 선택한 문서를 가리키는 URI는 {@code resultData}
-매개변수 안에 들어있습니다. 이 URI를 {@link android.content.Intent#getData getData()}를 사용하여 추출합니다. 
+매개변수 안에 들어있습니다. 이 URI를 {@link android.content.Intent#getData getData()}를 사용하여 추출합니다.
 일단 이것을 가지게 되면 이를 사용하여 사용자가 원하는 문서를 검색하면 됩니다. 예:
 </p>
 
@@ -318,7 +318,7 @@
 
 <h3 id="metadata">문서 메타데이터 살펴보기</h3>
 
-<p>문서의 URI를 얻은 다음에는 그 문서의 메타데이터에 액세스할 수 있습니다. 이 
+<p>문서의 URI를 얻은 다음에는 그 문서의 메타데이터에 액세스할 수 있습니다. 이
 조각은 해당 URI가 나타내는 문서의 메타데이터를 가져와 다음과 같이 기록합니다.</p>
 
 <pre>public void dumpImageMetaData(Uri uri) {
@@ -365,7 +365,7 @@
 
 <h3 id="open-client">문서 열기</h3>
 
-<p>문서의 URI를 얻은 다음에는 문서를 열 수도 있고 원하는 대로 무엇이든 
+<p>문서의 URI를 얻은 다음에는 문서를 열 수도 있고 원하는 대로 무엇이든
 할 수 있습니다.</p>
 
 <h4>비트맵</h4>
@@ -382,14 +382,14 @@
 }
 </pre>
 
-<p>이 작업을 UI 스레드에서 해서는 안 된다는 점을 유의하십시오. 이것은 배경에서 하되, 
-{@link android.os.AsyncTask}를 사용합니다. 비트맵을 열고 나면 이를 
+<p>이 작업을 UI 스레드에서 해서는 안 된다는 점을 유의하십시오. 이것은 배경에서 하되,
+{@link android.os.AsyncTask}를 사용합니다. 비트맵을 열고 나면 이를
 {@link android.widget.ImageView}로 표시할 수 있습니다.
 </p>
 
 <h4>InputStream 가져오기</h4>
 
-<p>다음은 URI에서 {@link java.io.InputStream}을 가져오는 방법을 예시로 나타낸 것입니다. 이 조각에서 
+<p>다음은 URI에서 {@link java.io.InputStream}을 가져오는 방법을 예시로 나타낸 것입니다. 이 조각에서
 파일의 줄이 문자열로 읽히고 있습니다.</p>
 
 <pre>private String readTextFromUri(Uri uri) throws IOException {
@@ -409,9 +409,9 @@
 
 <h3 id="create">새 문서 생성하기</h3>
 
-<p>개발자의 앱은 문서 제공자에서 새 문서를 생성할 수 있습니다. 이때 
+<p>개발자의 앱은 문서 제공자에서 새 문서를 생성할 수 있습니다. 이때
 {@link android.content.Intent#ACTION_CREATE_DOCUMENT}
- 인텐트를 사용하면 됩니다. 파일을 생성하려면 인텐트에 MIME 유형과 파일 이름을 부여하고, 
+ 인텐트를 사용하면 됩니다. 파일을 생성하려면 인텐트에 MIME 유형과 파일 이름을 부여하고,
 고유한 요청 코드로 이를 시작하면 됩니다. 나머지는 여러분 대신 알아서 해드립니다.</p>
 
 
@@ -440,15 +440,15 @@
 }
 </pre>
 
-<p>새 문서를 생성하고 나면 
-{@link android.app.Activity#onActivityResult onActivityResult()}에서 URI를 가져와 거기에 계속해서 
+<p>새 문서를 생성하고 나면
+{@link android.app.Activity#onActivityResult onActivityResult()}에서 URI를 가져와 거기에 계속해서
 쓸 수 있습니다.</p>
 
 <h3 id="delete">문서 삭제하기</h3>
 
-<p>어느 문서에 대한 URI가 있고 해당 문서의 
+<p>어느 문서에 대한 URI가 있고 해당 문서의
 {@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
-에 
+에
 {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE}가 들어 있는 경우,
 해당 문서를 삭제할 수 있습니다. 예:</p>
 
@@ -459,9 +459,9 @@
 <h3 id="edit">문서 편집하기</h3>
 
 <p>준비된 텍스트 문서를 편집하는 데 SAF를 사용할 수 있습니다.
-이 조각은 
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 인텐트를 실행하며 
-{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 사용해 
+이 조각은
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 인텐트를 실행하며
+{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 사용해
 열 수 있는 문서만 표시하도록 합니다. 이것을 한층 더 필터링하여 텍스트 파일만 표시하게 하려면 다음과 같이 합니다.</p>
 
 <pre>
@@ -486,10 +486,10 @@
 </pre>
 
 <p>다음으로, {@link android.app.Activity#onActivityResult onActivityResult()}
-(<a href="#results">결과 처리</a> 참조)에서 코드를 호출하여 편집 작업을 수행하도록 하면 됩니다. 
+(<a href="#results">결과 처리</a> 참조)에서 코드를 호출하여 편집 작업을 수행하도록 하면 됩니다.
 다음 조각은 {@link android.content.ContentResolver}에서 {@link java.io.FileOutputStream}
-을 가져온 것입니다. 이것은 기본적으로 "쓰기" 모드를 사용합니다. 
-필요한 최소 수량의 액세스만을 요청하는 것이 가장 좋으니 쓰기만 필요하다면 
+을 가져온 것입니다. 이것은 기본적으로 "쓰기" 모드를 사용합니다.
+필요한 최소 수량의 액세스만을 요청하는 것이 가장 좋으니 쓰기만 필요하다면
 읽기/쓰기를 요청하지 마십시오.</p>
 
 <pre>private void alterDocument(Uri uri) {
@@ -512,16 +512,16 @@
 
 <h3 id="permissions">권한 유지</h3>
 
-<p>앱이 읽기 또는 쓰기 작업에 대한 파일을 열면 시스템이 앱에 해당 파일에 대한 URI 권한 허가를 
+<p>앱이 읽기 또는 쓰기 작업에 대한 파일을 열면 시스템이 앱에 해당 파일에 대한 URI 권한 허가를
 부여합니다. 이것은 사용자의 장치를 다시 시작할 때까지 유지됩니다.
-하지만 만일 앱이 이미지 편집 앱이고, 사용자가 여러분의 앱에서 바로 편집한 5개의 이미지에 
-액세스할 수 있도록 하고자 한다고 가정해봅시다. 사용자의 기기가 재시작되면 
-여러분이 사용자에게 시스템 선택기를 다시 보내 해당 파일을 검색하도록 해야 할 텐데, 
+하지만 만일 앱이 이미지 편집 앱이고, 사용자가 여러분의 앱에서 바로 편집한 5개의 이미지에
+액세스할 수 있도록 하고자 한다고 가정해봅시다. 사용자의 기기가 재시작되면
+여러분이 사용자에게 시스템 선택기를 다시 보내 해당 파일을 검색하도록 해야 할 텐데,
 이것은 물론 이상적인 것과는 거리가 멉니다.</p>
 
 <p>이런 일이 일어나지 않도록 방지하기 위해 시스템이 앱에 부여한 권한을 유지할 수 있습니다.
-여러분의 앱은 시스템이 제공하는 유지 가능한 URI 권한 허가를 
-효율적으로 "받아들입니다". 이렇게 하면 사용자가 여러분의 앱을 통해 파일에 지속적인 액세스 권한을 가질 수 있으며, 
+여러분의 앱은 시스템이 제공하는 유지 가능한 URI 권한 허가를
+효율적으로 "받아들입니다". 이렇게 하면 사용자가 여러분의 앱을 통해 파일에 지속적인 액세스 권한을 가질 수 있으며,
 이는 기기가 다시 시작되더라도 관계 없습니다.</p>
 
 
@@ -531,65 +531,65 @@
 // Check for the freshest data.
 getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
 
-<p>마지막 한 단계가 남았습니다. 여러분의 앱이 액세스한 가장 최근의 URI를 
-저장해두었을 수 있지만, 이는 더 이상 유효하지 않을 수 있습니다. 또 다른 앱이 문서를 
-삭제하거나 수정했을 수 있기 때문입니다. 따라서, 항상 
-{@code getContentResolver().takePersistableUriPermission()}을 
+<p>마지막 한 단계가 남았습니다. 여러분의 앱이 액세스한 가장 최근의 URI를
+저장해두었을 수 있지만, 이는 더 이상 유효하지 않을 수 있습니다. 또 다른 앱이 문서를
+삭제하거나 수정했을 수 있기 때문입니다. 따라서, 항상
+{@code getContentResolver().takePersistableUriPermission()}을
 호출하여 최신 데이터를 확인해야 합니다.</p>
 
 <h2 id="custom">사용자 지정 문서 제공자 작성하기</h2>
 
 <p>
-파일용 저장소 서비스를 제공하는 앱을 개발 중인 경우(예를 들어 
-클라우드 저장 서비스 등), SAF를 통해 파일을 사용할 수 있도록 하려면 사용자 지정 문서 제공자를 
+파일용 저장소 서비스를 제공하는 앱을 개발 중인 경우(예를 들어
+클라우드 저장 서비스 등), SAF를 통해 파일을 사용할 수 있도록 하려면 사용자 지정 문서 제공자를
 작성하면 됩니다.  이 섹션에서는 이렇게 하는 방법을 설명합니다.
 </p>
 
 
 <h3 id="manifest">매니페스트</h3>
 
-<p>사용자 지정 문서 제공자를 구현하려면 애플리케이션의 매니페스트에 다음과 같은 항목을 
+<p>사용자 지정 문서 제공자를 구현하려면 애플리케이션의 매니페스트에 다음과 같은 항목을
 추가하십시오.</p>
 <ul>
 
 <li>API 레벨 19 이상의 대상.</li>
 
-<li>사용자 지정 저장소 제공자를 선언하는 <code>&lt;provider&gt;</code> 
+<li>사용자 지정 저장소 제공자를 선언하는 <code>&lt;provider&gt;</code>
 요소. </li>
 
-<li>제공자의 이름은 그 클래스 이름이며 여기에 패키지 이름도 포함됩니다. 
+<li>제공자의 이름은 그 클래스 이름이며 여기에 패키지 이름도 포함됩니다.
 예: <code>com.example.android.storageprovider.MyCloudProvider</code></li>
 
-<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>로 설정. 이렇게 설정하면 시스템이 여러분의 제공자 안에 있는 콘텐츠에 액세스하도록 다른 앱에 
-권한을 허가할 수 있게 해줍니다. 특정 문서에 대한 권한 부여를 유지하는 방법에 대한 논의는 
+<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"} 등입니다. 이 속성을 
+<li>{@code android:enabled} 속성을 리소스 파일에서 정의한 부울 값으로
+설정합니다. 이 속성의 목적은 Android 4.3 이하에서 실행되는 기기에서 제공자를 비활성화하는 데 있습니다.
+예를 들어 {@code android:enabled="@bool/atLeastKitKat"} 등입니다. 이 속성을
 매니페스트에 추가하는 것 이외에도 다음과 같은 작업을 해야 합니다.
 <ul>
-<li>{@code res/values/} 아래의 {@code bool.xml} 리소스 파일에 
+<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} 리소스 파일에 
+<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} 동작을 포함한 인텐트 필터가 있어야 
+{@code android.content.action.DOCUMENTS_PROVIDER} 동작을 포함한 인텐트 필터가 있어야
 시스템이 제공자를 검색할 때 여러분의 제공자가 선택기에 나타날 수 있습니다.</li>
 
 </ul>
@@ -619,31 +619,31 @@
 <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_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에 
+ 인텐트 필터를 비활성화해야 합니다.
+문서 제공자와 {@link android.content.Intent#ACTION_GET_CONTENT}는 상호 배타적인 것으로
+간주해야 합니다. 둘을 모두 동시에 지원하는 경우, 앱이 시스템 선택기 UI에
 두 번 나타나 저장된 데이터에 액세스할 두 가지 서로 다른 방법을 제안하게 됩니다.
  이렇게 되면 사용자에게 혼동을 주게 되겠죠.</p>
 
-<p>다음은 Android 버전 4.4 이상에서 실행되는 기기용 
-{@link android.content.Intent#ACTION_GET_CONTENT} 인텐트 필터를 
+<p>다음은 Android 버전 4.4 이상에서 실행되는 기기용
+{@link android.content.Intent#ACTION_GET_CONTENT} 인텐트 필터를
 비활성화하는 데 권장되는 방법입니다.</p>
 
 <ol>
-<li>{@code res/values/} 아래의 {@code bool.xml} 리소스 파일에 
+<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} 리소스 파일에 
+<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} 
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">액티비티
+별칭</a>을 추가하여 버전 4.4(API 레벨 19) 이상을 대상으로 한 {@link android.content.Intent#ACTION_GET_CONTENT}
 인텐트 필터를 비활성화합니다. 예:
 
 <pre>
@@ -666,13 +666,13 @@
 </ol>
 <h3 id="contract">계약</h3>
 
-<p>사용자 지정 제공자를 작성할 때면 일반적으로 수반되는 작업 중 하나가 
-계약 클래스를 구현하는 것입니다. 이는 
+<p>사용자 지정 제공자를 작성할 때면 일반적으로 수반되는 작업 중 하나가
+계약 클래스를 구현하는 것입니다. 이는
 <a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
-콘텐츠 제공자</a> 개발자 가이드에서 설명한 것과 같습니다. 계약 클래스는 {@code public final} 클래스로, 
-이 안에 URI에 대한 상수 정의, 열 이름, MIME 유형 및 제공자에 관련된 
-다른 메타 데이터가 들어 있습니다. SAF가 
-이와 같은 계약 클래스를 대신 제공해주므로 직접 쓰지 않아도 
+콘텐츠 제공자</a> 개발자 가이드에서 설명한 것과 같습니다. 계약 클래스는 {@code public final} 클래스로,
+이 안에 URI에 대한 상수 정의, 열 이름, MIME 유형 및 제공자에 관련된
+다른 메타 데이터가 들어 있습니다. SAF가
+이와 같은 계약 클래스를 대신 제공해주므로 직접 쓰지 않아도
 됩니다.</p>
 
 <ul>
@@ -680,7 +680,7 @@
    <li>{@link android.provider.DocumentsContract.Root}</li>
 </ul>
 
-<p>예를 들어 다음은 여러분의 문서 제공자가 문서 또는 루트에 대해 쿼리된 경우 
+<p>예를 들어 다음은 여러분의 문서 제공자가 문서 또는 루트에 대해 쿼리된 경우
 커서로 반환할 수 있는 열을 나타낸 것입니다.</p>
 
 <pre>private static final String[] DEFAULT_ROOT_PROJECTION =
@@ -696,7 +696,7 @@
 
 <h3 id="subclass">하위 클래스 DocumentsProvider</h3>
 
-<p>사용자 지정 문서 제공자를 작성하기 위한 다음 단계는 
+<p>사용자 지정 문서 제공자를 작성하기 위한 다음 단계는
 추상 클래스 {@link android.provider.DocumentsProvider}를 하위 클래스로 만드는 것입니다. 최소한 다음과 같은 메서드를 구현해야 합니다.
 </p>
 
@@ -710,22 +710,22 @@
 <li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
 </ul>
 
-<p>꼭 구현해야만 하는 메서드는 이들뿐이지만, 개발자 여러분이 구현하고자 하는 메서드는 이보다 
-훨씬 많을 수도 있습니다. 자세한 내용은{@link android.provider.DocumentsProvider} 
+<p>꼭 구현해야만 하는 메서드는 이들뿐이지만, 개발자 여러분이 구현하고자 하는 메서드는 이보다
+훨씬 많을 수도 있습니다. 자세한 내용은{@link android.provider.DocumentsProvider}
 를 참조하십시오.</p>
 
 <h4 id="queryRoots">QueryRoots 구현</h4>
 
 <p>{@link android.provider.DocumentsProvider#queryRoots
-queryRoots()} 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며, 
-이는 문서 제공자의 모든 루트 디렉터리를 가리켜야 합니다. 이때 
+queryRoots()} 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며,
+이는 문서 제공자의 모든 루트 디렉터리를 가리켜야 합니다. 이때
 {@link android.provider.DocumentsContract.Root}에서 정의한 열을 사용합니다.</p>
 
-<p>다음 조각에서 {@code projection} 매개변수는 
+<p>다음 조각에서 {@code projection} 매개변수는
 발신자가 돌려받고자 하는 특정 필드를 나타냅니다. 이 조각은 새 커서를 생성하며
-그에 하나의 행을 추가합니다. 하나의 루트, 
-다운로드 또는 이미지와 같은 최상위 레벨 디렉터리가 해당됩니다.  대부분의 제공자에는 루트가 하나뿐입니다. 하나 이상이 있을 수도 있습니다. 
-예를 들어 사용자 계정이 여러 개인 경우가 있습니다. 그런 경우에는 커서에 두 번째 행을 
+그에 하나의 행을 추가합니다. 하나의 루트,
+다운로드 또는 이미지와 같은 최상위 레벨 디렉터리가 해당됩니다.  대부분의 제공자에는 루트가 하나뿐입니다. 하나 이상이 있을 수도 있습니다.
+예를 들어 사용자 계정이 여러 개인 경우가 있습니다. 그런 경우에는 커서에 두 번째 행을
 추가하면 됩니다.</p>
 
 <pre>
@@ -778,13 +778,13 @@
 
 <p>
 {@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
- 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며, 
-이는 지정된 디렉터리 내의 모든 파일을 가리켜야 합니다. 이때 
+ 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며,
+이는 지정된 디렉터리 내의 모든 파일을 가리켜야 합니다. 이때
 {@link android.provider.DocumentsContract.Document}에서 정의한 열을 사용합니다.</p>
 
-<p>이 메서드는 선택기 UI에서 애플리케이션 루트를 선택하는 경우 호출됩니다. 
-이는 해당 루트 아래 디렉터리의 하위 문서를 가져옵니다.  이것은 루트에서뿐만 아니라 파일 계층의 어느 레벨에서나 
-호출할 수 있습니다. 이 조각은 요청한 열로 새 커서를 만든 다음, 
+<p>이 메서드는 선택기 UI에서 애플리케이션 루트를 선택하는 경우 호출됩니다.
+이는 해당 루트 아래 디렉터리의 하위 문서를 가져옵니다.  이것은 루트에서뿐만 아니라 파일 계층의 어느 레벨에서나
+호출할 수 있습니다. 이 조각은 요청한 열로 새 커서를 만든 다음,
 상위 디렉터리에 있는 모든 직속 하위에 대한 정보를 커서에 추가합니다.
 하위는 이미지, 또 다른 디렉터리가 될 수도 있고
 어느 파일이라도 될 수 있습니다.</p>
@@ -808,13 +808,13 @@
 
 <p>
 {@link android.provider.DocumentsProvider#queryDocument queryDocument()}
- 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며, 
+ 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며,
 이는 지정된 파일을 가리켜야 합니다. 이때 {@link android.provider.DocumentsContract.Document}에서 정의한 열을 사용합니다.
 </p>
 
 <p>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
- 메서드는 
-{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}에서 
+ 메서드는
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}에서
 전달된 것과 같은 정보를 반환하지만, 특정한 파일에만 해당됩니다.</p>
 
 
@@ -832,12 +832,12 @@
 
 <h4 id="openDocument">OpenDocument 구현</h4>
 
-<p>지정된 파일을 나타내는 
+<p>지정된 파일을 나타내는
 {@link android.os.ParcelFileDescriptor}를 반환하려면 {@link android.provider.DocumentsProvider#openDocument
 openDocument()}를 구현해야 합니다. 다른 앱들이 반환된 {@link android.os.ParcelFileDescriptor}를
- 사용하여 데이터를 스트리밍할 수 있습니다. 시스템은 사용자가 파일을 선택하고 
-클라이언트 앱이 이에 대한 액세스를 요청하면서 
-{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}를 사용할 때 이 메서드를 호출합니다. 
+ 사용하여 데이터를 스트리밍할 수 있습니다. 시스템은 사용자가 파일을 선택하고
+클라이언트 앱이 이에 대한 액세스를 요청하면서
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}를 사용할 때 이 메서드를 호출합니다.
 예를 들면 다음과 같습니다.</p>
 
 <pre>&#64;Override
@@ -885,8 +885,8 @@
 <h3 id="security">보안</h3>
 
 <p>여러분의 문서 제공자가 암호로 보호된 클라우드 저장소 서비스이고
-여러분은 사용자가 파일을 공유하기 전에 우선 로그인부터 하도록 확실히 해두고 싶다고 가정합니다. 
-사용자가 로그인되지 않은 경우 앱은 어떻게 해야 합니까?  해법은 
+여러분은 사용자가 파일을 공유하기 전에 우선 로그인부터 하도록 확실히 해두고 싶다고 가정합니다.
+사용자가 로그인되지 않은 경우 앱은 어떻게 해야 합니까?  해법은
 {@link android.provider.DocumentsProvider#queryRoots
 queryRoots()} 구현에서 루트를 반환하지 않는 것입니다. 다시 말해, 텅 빈 루트 커서를 반환하는 것입니다.</p>
 
@@ -901,11 +901,11 @@
 </pre>
 
 <p>또 다른 단계는 {@code getContentResolver().notifyChange()}를 호출하는 것입니다.
-{@link android.provider.DocumentsContract}를 기억하십니까?  이것을 사용하는 이유는 
-바로 이 URI를 만들기 위해서입니다. 다음 조각은 사용자의 로그인 상태가 변경될 때마다 
-시스템이 문서 제공자의 루트를 쿼리하도록 지시하고 있습니다. 사용자가 로그인되어 있지 않은 상태에서 
-{@link android.provider.DocumentsProvider#queryRoots queryRoots()}를 호출하면 
-위에서 나타낸 것과 같이 빈 커서를 반환합니다. 이렇게 하면 사용자가 제공자에 로그인되었을 때만 
+{@link android.provider.DocumentsContract}를 기억하십니까?  이것을 사용하는 이유는
+바로 이 URI를 만들기 위해서입니다. 다음 조각은 사용자의 로그인 상태가 변경될 때마다
+시스템이 문서 제공자의 루트를 쿼리하도록 지시하고 있습니다. 사용자가 로그인되어 있지 않은 상태에서
+{@link android.provider.DocumentsProvider#queryRoots queryRoots()}를 호출하면
+위에서 나타낸 것과 같이 빈 커서를 반환합니다. 이렇게 하면 사용자가 제공자에 로그인되었을 때만
 제공자의 문서를 사용할 수 있도록 보장할 수 있습니다.</p>
 
 <pre>private void onLoginButtonClick() {
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
index be9dd6b..f323280 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
@@ -7,7 +7,7 @@
 <div id="qv">
   <h2>간략히 보기</h2>
   <ul>
-    <li>리소스는 {@code R.java}의 정수를 사용하는 코드, 예를 들어 
+    <li>리소스는 {@code R.java}의 정수를 사용하는 코드, 예를 들어
 {@code R.drawable.myimage}에서 참조할 수 있습니다.</li>
     <li>리소스는 특수 XML 구문을 사용하는 리소스, 예를 들어 {@code
 &#64;drawable/myimage}에서 참조할 수 있습니다.</li>
@@ -42,25 +42,25 @@
 
 
 
-<p>일단 어떤 리소스를 애플리케이션에 제공한 다음에는(<a href="providing-resources.html">리소스 제공</a>에서 논의), 
-해당 리소스의 리소스 ID를 참조함으로써 이를 적용할 수 있습니다. 모든 리소스 ID는 
+<p>일단 어떤 리소스를 애플리케이션에 제공한 다음에는(<a href="providing-resources.html">리소스 제공</a>에서 논의),
+해당 리소스의 리소스 ID를 참조함으로써 이를 적용할 수 있습니다. 모든 리소스 ID는
 {@code aapt} 도구가 자동으로 생성하는 프로젝트의 {@code R} 클래스에서 정의됩니다.</p>
 
 <p>애플리케이션이 컴파일링되면, {@code aapt}가 {@code R} 클래스를 생성하며, 이 클래스 안에 {@code
-res/} 디렉터리에 있는 모든 리소스의 
-리소스 ID가 들어있습니다. 각 리소스 유형에는 {@code R} 하위 클래스가 있고(예: 모든 드로어블 리소스에 대한 
+res/} 디렉터리에 있는 모든 리소스의
+리소스 ID가 들어있습니다. 각 리소스 유형에는 {@code R} 하위 클래스가 있고(예: 모든 드로어블 리소스에 대한
 {@code R.drawable}), 해당 유형의 각 리소스에는 정적
-정수가 있습니다(예: {@code R.drawable.icon}). 이 정수가 
+정수가 있습니다(예: {@code R.drawable.icon}). 이 정수가
 리소스를 검색하는 데 사용할 수 있는 리소스 ID입니다.</p>
 
-<p>{@code R} 클래스가 리소스 ID가 지정되는 곳이기는 하지만, 리소스 ID를 찾기 위해 
+<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>: 
-리소스가 단순 값(예: 문자열 등)일 경우, 
+  <li><em>리소스 이름</em>:
+리소스가 단순 값(예: 문자열 등)일 경우,
 확장자를 제외한 파일 이름이나 XML {@code android:name} 속성 값 중 하나입니다.</li>
 </ul>
 
@@ -69,14 +69,14 @@
   <li><strong>코드 내부에서:</strong> {@code R}
 클래스의 하위 클래스에서 정적 정수를 사용합니다. 예:
     <pre class="classic no-pretty-print">R.string.hello</pre>
-    <p>{@code string}은 리소스 유형이고 {@code hello}는 리소스 이름입니다. 리소스 ID를 이 형식으로 제공하면 리소스에 액세스할 수 있는 
-Android API가 많습니다. 
+    <p>{@code string}은 리소스 유형이고 {@code hello}는 리소스 이름입니다. 리소스 ID를 이 형식으로 제공하면 리소스에 액세스할 수 있는
+Android API가 많습니다.
 <a href="#ResourcesFromCode">코드 내 리소스 액세스</a>를 참조하십시오.</p>
   </li>
-  <li><strong>XML 내부에서:</strong> {@code R} 클래스에서 정의된 
+  <li><strong>XML 내부에서:</strong> {@code R} 클래스에서 정의된
 리소스 ID에 상응하기도 하는 특수 XML 구문을 사용합니다. 예:
     <pre class="classic no-pretty-print">&#64;string/hello</pre>
-    <p>{@code string}은 리소스 유형이고 {@code hello}는 리소스 이름입니다. 이 
+    <p>{@code string}은 리소스 유형이고 {@code hello}는 리소스 이름입니다. 이
 구문은 리소스로 값을 제공할 것으로 예상되는 어느 곳에서나 XML 리소스 형태로 사용할 수 있습니다. <a href="#ResourcesFromXml">XML에서 리소스 액세스</a>를 참조하십시오.</p>
   </li>
 </ul>
@@ -94,20 +94,20 @@
 </pre>
 
 <p>{@link
-android.content.res.Resources}에서 메서드를 사용하는 개별 리소스를 검색할 수도 있으며, 이는 
+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를 사용하는 것뿐이기 때문입니다. 그 대신 리소스를 
+<p>흔한 일은 아니지만, 원본 파일과 디렉터리에 액세스해야 하는 경우가 있습니다. 이 경우에는
+{@code res/}에 파일을 저장하더라도 소용이 없습니다.
+{@code res/}에서 리소스를 읽는 방법은 리소스 ID를 사용하는 것뿐이기 때문입니다. 그 대신 리소스를
 {@code assets/} 디렉터리에 저장하면 됩니다.</p>
 <p>{@code assets/} 디렉터리에 저장된 파일은 리소스
-ID가 부여되지 <em>않으므로</em>, 이와 같은 리소스는 {@code R} 클래스나 XML 리소스에서 참조할 수 없습니다. 그 대신 
-일반 파일 시스템처럼 {@code assets/} 디렉터리에 파일을 쿼리하고 
+ID가 부여되지 <em>않으므로</em>, 이와 같은 리소스는 {@code R} 클래스나 XML 리소스에서 참조할 수 없습니다. 그 대신
+일반 파일 시스템처럼 {@code assets/} 디렉터리에 파일을 쿼리하고
 {@link android.content.res.AssetManager}를 사용하여 원시 데이터를 읽을 수 있습니다.</p>
 <p>하지만 필요한 것이 원시 데이터(동영상 또는 오디오 파일 등)를 읽는 능력뿐인 경우라면,
 파일을 {@code res/raw/} 디렉터리에 저장한 다음 일련의 바이트 스트림을 {@link
@@ -184,10 +184,10 @@
 <h2 id="ResourcesFromXml">XML에서 리소스 액세스</h2>
 
 <p>기존 리소스에 대한 참조를 사용하여
-일부 XML 속성과 요소의 값을 정의할 수 있습니다. 이 작업은 레이아웃 파일을 생성할 때 위젯에 문자열과 이미지를 제공하기 위해 
+일부 XML 속성과 요소의 값을 정의할 수 있습니다. 이 작업은 레이아웃 파일을 생성할 때 위젯에 문자열과 이미지를 제공하기 위해
 자주 하게 됩니다.</p>
 
-<p>예를 들어, 레이아웃에 {@link android.widget.Button}을 추가하면 
+<p>예를 들어, 레이아웃에 {@link android.widget.Button}을 추가하면
 해당 버튼 텍스트에 <a href="string-resource.html">문자열 리소스</a>를 사용해야 합니다.</p>
 
 <pre>
@@ -209,7 +209,7 @@
 <ul>
   <li>{@code &lt;package_name&gt;}은(는) 리소스가 위치한 패키지의 이름입니다(
 같은 패키지의 리소스를 참조할 경우에는 필요하지 않습니다).</li>
-  <li>{@code &lt;resource_type&gt;}은(는) 해당 리소스 유형의 
+  <li>{@code &lt;resource_type&gt;}은(는) 해당 리소스 유형의
 {@code R} 하위 클래스입니다.</li>
   <li>{@code &lt;resource_name&gt;}은(는) 확장자가 없는 리소스 파일 이름이거나
 XML 요소의 {@code android:name} 속성 값입니다(단순
@@ -234,7 +234,7 @@
 &lt;/resources>
 </pre>
 
-<p>텍스트 색상과 
+<p>텍스트 색상과
 텍스트 문자열을 설정하는 데 이와 같은 리소스를 다음의 레이아웃 파일에서 사용할 수 있습니다.</p>
 
 <pre>
@@ -247,7 +247,7 @@
 </pre>
 
 <p>이 경우, 리소스를 자체 패키지에서 가져왔으므로 리소스 참조에 패키지 이름을
-지정하지 않아도 됩니다. 
+지정하지 않아도 됩니다.
 시스템 리소스를 참조하려면 패키지 이름을 포함해야 합니다. 예:</p>
 
 <pre>
@@ -260,13 +260,13 @@
 </pre>
 
 <p class="note"><strong>참고:</strong> 항상 문자열 리소스를 사용해야
-사용자의 애플리케이션이 다른 언어에 맞게 지역화될 수 있습니다. 
+사용자의 애플리케이션이 다른 언어에 맞게 지역화될 수 있습니다.
 대체
 리소스(예: 지역화된 문자열) 생성에 관한 자세한 정보는 <a href="providing-resources.html#AlternativeResources">대체
 리소스 제공</a>을 참조하십시오. 다른 언어로 애플리케이션을 지역화하기 위한 전체 지침은
 <a href="localization.html">지역화</a>를 참조하십시오.</p>
 
-<p>XML의 리소스를 사용하여 별명을 생성할 수도 있습니다. 예를 들어, 드로어블 리소스이면서 
+<p>XML의 리소스를 사용하여 별명을 생성할 수도 있습니다. 예를 들어, 드로어블 리소스이면서
 또 다른 드로어블 리소스의 별명인 것을 생성할 수 있습니다.</p>
 
 <pre>
@@ -275,7 +275,7 @@
     android:src="@drawable/other_drawable" />
 </pre>
 
-<p>이것은 일견 중복되는 것처럼 들리지만, 대체 리소스를 사용할 때 매우 유용하게 쓰일 수 있습니다. 
+<p>이것은 일견 중복되는 것처럼 들리지만, 대체 리소스를 사용할 때 매우 유용하게 쓰일 수 있습니다.
 <a href="providing-resources.html#AliasResources">별명 리소스 생성</a>에 관해 자세히 알아보십시오.</p>
 
 
@@ -283,20 +283,20 @@
 <h3 id="ReferencesToThemeAttributes">스타일 속성 참조</h3>
 
 <p>스타일 속성 리소스는 현재 적용된 테마의 속성 값을
-참조할 수 있게 해줍니다. 스타일 속성을 참조하면 
-하드 코드로 작성된 값을 제공하는 것 대신에 UI 요소의 외관을 사용자 지정하여 
-현재 테마에서 제공한 표준 변형에 맞춰 스타일링할 수 있습니다. 스타일 속성을 참조하는 것은 
+참조할 수 있게 해줍니다. 스타일 속성을 참조하면
+하드 코드로 작성된 값을 제공하는 것 대신에 UI 요소의 외관을 사용자 지정하여
+현재 테마에서 제공한 표준 변형에 맞춰 스타일링할 수 있습니다. 스타일 속성을 참조하는 것은
 기본적으로 "이 속성이 정의한 스타일을 현재 테마로 사용하라"는 말과 같습니다.</p>
 
-<p>스타일 속성을 참조하는 경우, 이름 구문은 보통 
-리소스와 거의 똑같습니다. 다만 앳 기호({@code @})를 사용하는 대신 물음표({@code ?})를 사용하며, 
+<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>예컨대 다음은 텍스트 색상을 시스템 테마의 "기본" 텍스트 색상에
 일치하도록 설정하기 위해 속성을 참조하는 방법을 나타낸 것입니다.</p>
 
 <pre>
@@ -307,7 +307,7 @@
     android:text=&quot;&#64;string/hello_world&quot; /&gt;
 </pre>
 
-<p>여기서 {@code android:textColor} 속성이 주어진 스타일 속성의 이름을 현재 테마대로 
+<p>여기서 {@code android:textColor} 속성이 주어진 스타일 속성의 이름을 현재 테마대로
 지정합니다. Android는 이제 {@code android:textColorSecondary}
 스타일 속성에 적용된 값을 이 위젯의 {@code android:textColor}에 대한 값으로 사용합니다. 시스템
 리소스 도구는 속성 리소스가 이 컨텍스트에서 예상된다는 것을 알기 때문에
@@ -319,9 +319,9 @@
 
 <h2 id="PlatformResources">플랫폼 리소스 액세스</h2>
 
-<p>Android에는 스타일, 테마 및 레이아웃 등 여러 가지 표준 리소스가 포함되어 있습니다. 
-이와 같은 리소스에 액세스하려면 
-<code>android</code> 패키지 이름으로 리소스 참조를 한정합니다. 예를 들어 Android는 
+<p>Android에는 스타일, 테마 및 레이아웃 등 여러 가지 표준 리소스가 포함되어 있습니다.
+이와 같은 리소스에 액세스하려면
+<code>android</code> 패키지 이름으로 리소스 참조를 한정합니다. 예를 들어 Android는
 {@link android.widget.ListAdapter}의 목록 항목으로 사용할 수 있는 레이아웃 리소스를 제공합니다.</p>
 
 <pre>
@@ -330,8 +330,8 @@
 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}의 항목에 대해 플랫폼이 정의한 레이아웃 리소스입니다. 목록 항목에 대해 나름의 레이아웃을 
-만드는 대신 이것을 사용해도 됩니다. 자세한 내용은 
+<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
index e98a677..7faab59 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
@@ -19,13 +19,13 @@
 </div>
 
 
-<p>이미지나 문자열 같은 리소스는 항상 애플리케이션 코드에서 
-외부화하여 독립적으로 유지해야 합니다. 리소스를 외부화하면 
+<p>이미지나 문자열 같은 리소스는 항상 애플리케이션 코드에서
+외부화하여 독립적으로 유지해야 합니다. 리소스를 외부화하면
 다양한 언어나 화면 크기와 같은 특정 기기 구성을 지원하는
 대체 리소스를 제공할 수 있습니다. 이러한 기능은 Android 구동 장치를
-다양한 구성에서 이용하게 되면서 점점 더 중요해지고 있습니다. 여러 가지 구성에 
-호환성을 제공하려면 프로젝트의 
-{@code res/} 디렉터리 안에 리소스를 정리해야 합니다. 이때 여러 가지 하위 디렉터리를 사용하여 리소스를 유형과 구성 
+다양한 구성에서 이용하게 되면서 점점 더 중요해지고 있습니다. 여러 가지 구성에
+호환성을 제공하려면 프로젝트의
+{@code res/} 디렉터리 안에 리소스를 정리해야 합니다. 이때 여러 가지 하위 디렉터리를 사용하여 리소스를 유형과 구성
 기준으로 그룹화하면 좋습니다.</p>
 
 <div class="figure" style="width:429px">
@@ -38,7 +38,7 @@
 <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> 서로 다른 두 개의 기기로, 각각 다른 화면 크기에 맞게 제공된 서로 다른 
+<strong>그림 2.</strong> 서로 다른 두 개의 기기로, 각각 다른 화면 크기에 맞게 제공된 서로 다른
 레이아웃을 사용하고 있습니다.</p>
 </div>
 
@@ -46,42 +46,42 @@
 <em>대체</em> 리소스를 지정할 수 있습니다.</p>
 <ul>
   <li>기본 리소스는 기기 구성에 관계없이 항상 사용하거나
-기존 구성에 일치하는 대체 리소스가 없을 때 
+기존 구성에 일치하는 대체 리소스가 없을 때
 사용합니다.</li>
-  <li>대체 리소스는 특정 구성에서 사용하기 위해 개발자가 특별히 디자인한 것을 
-말합니다. 리소스 그룹을 특정 구성용으로 지정하려면, 
+  <li>대체 리소스는 특정 구성에서 사용하기 위해 개발자가 특별히 디자인한 것을
+말합니다. 리소스 그룹을 특정 구성용으로 지정하려면,
 디렉터리 이름에 적절한 구성 한정자를 추가하십시오.</li>
 </ul>
 
-<p>예를 들어 기본 UI 레이아웃은 
-{@code res/layout/} 디렉터리에 저장되어 있더라도 화면이 가로 방향일 때 사용할 
+<p>예를 들어 기본 UI 레이아웃은
+{@code res/layout/} 디렉터리에 저장되어 있더라도 화면이 가로 방향일 때 사용할
 다른 레이아웃을 지정할 수도 있습니다. 이를 {@code res/layout-land/}
 디렉터리에 저장하면 됩니다. Android는
 기기의 현재 구성을 리소스 디렉터리 이름과 일치시켜서 적절한 리소스를 적용합니다.</p>
 
-<p>그림 1은 이용 가능한 대체 리소스가 없을 경우 시스템이 서로 다른 두 개의 기기에 
-같은 레이아웃을 적용하는 방법을 보여줍니다. 그림 2는 
+<p>그림 1은 이용 가능한 대체 리소스가 없을 경우 시스템이 서로 다른 두 개의 기기에
+같은 레이아웃을 적용하는 방법을 보여줍니다. 그림 2는
 같은 애플리케이션에 큰 화면용 레이아웃 리소스를 추가한 모습을 나타낸 것입니다.</p>
 
-<p>다음 문서는 대체 리소스를 체계화하고, 
+<p>다음 문서는 대체 리소스를 체계화하고,
 대체 리소스를 지정하고, 애플리케이션에 액세스 하는 등의 방법에 관한 완전한 지침을 제공합니다.</p>
 
 <dl>
   <dt><strong><a href="providing-resources.html">리소스 제공</a></strong></dt>
-  <dd>앱에 포함할 수 있는 여러 가지 종류의 리소스와, 이러한 리소스를 저장하는 장소, 특정 기기 구성에 대한 
+  <dd>앱에 포함할 수 있는 여러 가지 종류의 리소스와, 이러한 리소스를 저장하는 장소, 특정 기기 구성에 대한
 대체 리소스를 생성하는 방법입니다.</dd>
   <dt><strong><a href="accessing-resources.html">리소스 액세스</a></strong></dt>
-  <dd>제공한 리소스를 사용하는 방법입니다. 이를 애플리케이션 코드에서 참조하거나 
+  <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>대체 리소스를 사용하여 애플리케이션을 지역화하는 방법에 대한 상세한 가이드입니다. 이것은 대체
+리소스를 사용하는 한 가지 방법에 불과하지만, 더 많은 사용자에게 도달하려면 매우 중요한
 방법입니다.</dd>
   <dt><strong><a href="available-resources.html">리소스 유형</a></strong></dt>
-  <dd>개발자가 제공할 수 있는 다양한 리소스 유형의 참조로, 각각의 XML 요소, 
-속성과 구문을 설명하는 것입니다. 예를 들어, 이 참조는 애플리케이션 메뉴와 드로어블 리소스, 
+  <dd>개발자가 제공할 수 있는 다양한 리소스 유형의 참조로, 각각의 XML 요소,
+속성과 구문을 설명하는 것입니다. 예를 들어, 이 참조는 애플리케이션 메뉴와 드로어블 리소스,
 애니메이션에 대한 리소스를 생성하는 법을 보여줍니다.</dd>
 </dl>
 
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
index 681cbb3..bc631f2 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
@@ -9,7 +9,7 @@
   <ul>
     <li>{@code res/}의 여러 가지 하위 디렉터리에 속한 여러 가지 유형의 리소스</li>
     <li>구성별 리소스 파일을 제공하는 대체 리소스</li>
-    <li>항상 기본 리소스를 포함해야 앱이 특정 기기 구성에 
+    <li>항상 기본 리소스를 포함해야 앱이 특정 기기 구성에
 좌우되지 않습니다.</li>
   </ul>
   <h2>이 문서의 내용</h2>
@@ -29,23 +29,23 @@
   <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">다중 
+    <li><a href="{@docRoot}guide/practices/screens_support.html">다중
 화면 지원</a></li>
   </ol>
 </div>
 </div>
 
-<p>이미지나 문자열과 같은 애플리케이션 리소스는 항상 코드에서 외부화해야 합니다. 
-그래야 이들을 독립적으로 유지관리할 수 있습니다. 특정 기기 구성에 대한 대체 리소스도 
-제공해야 합니다. 이것은 특별하게 명명한 리소스 디렉터리에 그룹화하는 방법을 씁니다. Android는 
-런타임에 현재 구성을 근거로 적절한 리소스를 사용합니다. 예를 들어 
-여러 가지 화면 크기에 따라 여러 가지 UI 레이아웃을 제공하거나 언어 설정에 따라 
+<p>이미지나 문자열과 같은 애플리케이션 리소스는 항상 코드에서 외부화해야 합니다.
+그래야 이들을 독립적으로 유지관리할 수 있습니다. 특정 기기 구성에 대한 대체 리소스도
+제공해야 합니다. 이것은 특별하게 명명한 리소스 디렉터리에 그룹화하는 방법을 씁니다. Android는
+런타임에 현재 구성을 근거로 적절한 리소스를 사용합니다. 예를 들어
+여러 가지 화면 크기에 따라 여러 가지 UI 레이아웃을 제공하거나 언어 설정에 따라
 각기 다른 문자열을 제공하고자 할 수 있습니다.</p>
 
 <p>애플리케이션 리소스를 외부화하면
 프로젝트 {@code R} 클래스에서 발생하는 리소스 ID로 액세스할 수 있습니다. 애플리케이션에서
 리소스를 사용하는 방법은 <a href="accessing-resources.html">리소스
-액세스</a>에서 설명합니다. 이 문서에서는 Android 프로젝트에서 리소스를 그룹화하는 방법과 특정 기기 구성에 대한 
+액세스</a>에서 설명합니다. 이 문서에서는 Android 프로젝트에서 리소스를 그룹화하는 방법과 특정 기기 구성에 대한
 대체 리소스를 제공하는 법을 보여드립니다.</p>
 
 
@@ -75,10 +75,10 @@
 ) 포함하는 것을 볼 수 있습니다. 리소스 디렉터리 이름은
 중요하며 표1에 설명되어 있습니다.</p>
 
-<p class="note"><strong>참고:</strong> Mipmap 폴더를 사용하는 자세한 방법은 
+<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>. 프로젝트 
+<p class="table-caption" id="table1"><strong>표 1</strong>. 프로젝트
 {@code res/} 디렉터리 내부에서 지원하는 리소스 디렉터리입니다.</p>
 
 <table>
@@ -89,13 +89,13 @@
 
   <tr>
     <td><code>animator/</code></td>
-    <td><a href="{@docRoot}guide/topics/graphics/prop-animation.html">속성 
+    <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 
+    <td><a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">tween
 애니메이션</a>을 정의하는 XML 파일입니다 (속성 애니메이션도 이 디렉터리에 저장할 수 있지만
 두 가지 유형을 구분하기 위해 속성 애니메이션에는 {@code animator/} 디렉터리가 기본 설정됩니다
 ).</td>
@@ -126,8 +126,8 @@
 
   <tr>
     <td><code>mipmap/</code></td>
-    <td>각기 다른 시작 관리자 아이콘 밀도에 대한 드로어블 파일입니다. 
-{@code mipmap/} 폴더로 시작 관리자 아이콘을 관리하는 자세한 방법은 
+    <td>각기 다른 시작 관리자 아이콘 밀도에 대한 드로어블 파일입니다.
+{@code mipmap/} 폴더로 시작 관리자 아이콘을 관리하는 자세한 방법은
 <a href="{@docRoot}tools/project/index.html#mipmap">프로젝트 관리 개요</a>를 참조하십시오.</td>
   </tr>
 
@@ -139,32 +139,32 @@
 
   <tr>
     <td><code>menu/</code></td>
-    <td>옵션 메뉴, 컨텍스트 메뉴 또는 하위 
+    <td>옵션 메뉴, 컨텍스트 메뉴 또는 하위
 메뉴 등과 같은 애플리케이션 메뉴를 정의하는 XML입니다. <a href="menu-resource.html">메뉴 리소스</a>를 참조하십시오.</td>
   </tr>
 
   <tr>
     <td><code>raw/</code></td>
-    <td><p>원시 형태로 저장하기 위한 임의의 파일입니다. 원시 
+    <td><p>원시 형태로 저장하기 위한 임의의 파일입니다. 원시
 {@link java.io.InputStream}으로 이런 리소스를 열려면 리소스 ID, {@code R.raw.<em>filename</em>}으로 {@link android.content.res.Resources#openRawResource(int)
 Resources.openRawResource()}를 호출합니다.</p>
-      <p>그러나 원본 파일 이름과 파일 계층에 액세스해야 하는 경우, 
+      <p>그러나 원본 파일 이름과 파일 계층에 액세스해야 하는 경우,
 ({@code res/raw/}가 아니라) {@code
-assets/} 디렉터리에 몇몇 리소스를 저장해두는 것을 고려해 볼 수 있습니다. {@code assets/}에 있는 파일에는 
+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 파일 이름을 근거로 
+      <p>다른 {@code res/} 하위 디렉터리에 있는 XML 리소스 파일은 XML 파일 이름을 근거로
 하나의 리소스를 정의하는 반면, {@code values/} 디렉터리에 있는 파일은 여러 개의 리소스를 설명합니다.
-이 디렉터리 안에 있는 파일의 경우, {@code &lt;resources&gt;} 요소의 각 하위 요소가 리소스를 하나씩 
-정의합니다. 예를 들어 {@code &lt;string&gt;} 요소는 
+이 디렉터리 안에 있는 파일의 경우, {@code &lt;resources&gt;} 요소의 각 하위 요소가 리소스를 하나씩
+정의합니다. 예를 들어 {@code &lt;string&gt;} 요소는
 {@code R.string} 리소스를 생성하고 {@code &lt;color&gt;} 요소는 {@code R.color}
  리소스를 생성합니다.</p>
       <p>각 리소스가 자체 XML 요소로 정의되므로, 원하는 대로 파일을 정의하고 하나의 파일에 여러 가지 리소스 유형을
-배정할 수 있습니다. 하지만 명확히 하려면 여러 가지 파일에 
+배정할 수 있습니다. 하지만 명확히 하려면 여러 가지 파일에
 각기 고유한 리소스를 배치하는 것이 좋을 수도 있습니다. 예를 들어, 다음은 이 디렉터리에서 생성할 수 있는 리소스를 위한
 파일 이름 명명법입니다.</p>
       <ul>
@@ -176,7 +176,7 @@
         <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="style-resource.html">스타일 리소스</a> 및
 <a href="more-resources.html">자세한 리소스 유형</a>을 참조하십시오.</p>
     </td>
   </tr>
@@ -184,21 +184,21 @@
   <tr>
     <td><code>xml/</code></td>
     <td>런타임에 읽을 수 있는 임의의 XML 파일로, 이때 {@link
-android.content.res.Resources#getXml(int) Resources.getXML()}을 호출하는 방법을 씁니다. 다양한 XML 구성 파일을 여기에 저장해야 합니다. 예를 들어 
+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> 리소스 파일을 
+<p class="caution"><strong>주의:</strong> 리소스 파일을
 {@code res/} 디렉터리에 직접 저장하면 절대로 안 됩니다. 컴파일러 오류를 초래하게 됩니다.</p>
 
 <p>특정 유형의 리소스에 관한 자세한 정보는 <a href="available-resources.html">리소스 유형</a> 문서를 참조하십시오.</p>
 
 <p>표1에 정의된 하위 디렉터리에 저장하는 리소스는 "기본"
-리소스입니다. 다시 말해, 이러한 리소스가 애플리케이션의 기본 디자인과 콘텐츠를 정의한다는 뜻입니다. 
+리소스입니다. 다시 말해, 이러한 리소스가 애플리케이션의 기본 디자인과 콘텐츠를 정의한다는 뜻입니다.
 그러나, 여러 가지 유형의 Android 구동 기기는 각기 다른 유형의 리소스를 호출할 수도 있습니다.
-예를 들어 어느 기기의 화면이 보통보다 큰 편이라면, 추가적인 화면 공간의 이점을 활용할 수 있는 
+예를 들어 어느 기기의 화면이 보통보다 큰 편이라면, 추가적인 화면 공간의 이점을 활용할 수 있는
 다른 레이아웃 리소스를 제공해야 합니다. 또는, 기기에 다른 언어 설정이 있을 경우
 해당 텍스트를 사용자 인터페이스에 번역하는 다른 문자열 리소스를
 제공해야 합니다. 여러 가지 기기 구성에 여러 가지 리소스를 제공하려면,
@@ -215,10 +215,10 @@
 <strong>그림 1.</strong> 서로 다른 두 개의 기기로, 서로 다른 레이아웃 리소스를 사용합니다.</p>
 </div>
 
-<p>거의 모든 애플리케이션이 특정 기기 구성을 지원하는 
-대체 리소스를 제공해야 합니다. 예를 들어 여러 가지 화면 밀도에 맞는 대체 드로어블 리소스를 
-포함시켜야 하며 여러 가지 언어에 맞게 대체 문자열 리소스도 포함시켜야 합니다. Android는 런타임에 
-현재 기기 구성을 감지하고 애플리케이션에 대해 적절한 리소스를 
+<p>거의 모든 애플리케이션이 특정 기기 구성을 지원하는
+대체 리소스를 제공해야 합니다. 예를 들어 여러 가지 화면 밀도에 맞는 대체 드로어블 리소스를
+포함시켜야 하며 여러 가지 언어에 맞게 대체 문자열 리소스도 포함시켜야 합니다. Android는 런타임에
+현재 기기 구성을 감지하고 애플리케이션에 대해 적절한 리소스를
 로드합니다.</p>
 
 <p>리소스 세트에 대하여 구성별로 적절한 대체를 지정하려면 다음과 같이 합니다.</p>
@@ -231,13 +231,13 @@
       <li><em>{@code &lt;qualifier&gt;}</em>는 리소스를 사용할 개별 구성을 지정하는
 이름입니다(표2에 정의).</li>
     </ul>
-    <p>하나 이상의 <em>{@code &lt;qualifier&gt;}</em>를 추가할 수 있습니다. 각기 대시로 
+    <p>하나 이상의 <em>{@code &lt;qualifier&gt;}</em>를 추가할 수 있습니다. 각기 대시로
 구분합니다.</p>
     <p class="caution"><strong>주의:</strong> 여러 한정자를 추가할 때는
-표2에 나열된 것과 같은 순서로 배치해야 합니다. 한정자의 순서가 잘못 지정되면 
+표2에 나열된 것과 같은 순서로 배치해야 합니다. 한정자의 순서가 잘못 지정되면
 해당 리소스가 무시됩니다.</p>
   </li>
-  <li>해당되는 각 대체 리소스를 이 새 디렉터리에 저장하십시오. 이 리소스 파일은 기본 리소스 파일과 
+  <li>해당되는 각 대체 리소스를 이 새 디렉터리에 저장하십시오. 이 리소스 파일은 기본 리소스 파일과
 똑같은 이름을 지정해야 합니다.</li>
 </ol>
 
@@ -254,21 +254,21 @@
 </pre>
 
 <p>{@code hdpi} 한정자는 해당 디렉터리의 리소스가
-고화질 화면 기기용이라는 것을 나타냅니다. 각 드로어블 디렉터리의 이미지는 특정 화면 화질에 맞추어 
+고화질 화면 기기용이라는 것을 나타냅니다. 각 드로어블 디렉터리의 이미지는 특정 화면 화질에 맞추어
 크기가 지정되었으나 파일 이름은
 똑같습니다. 이렇게 하면 {@code icon.png} 또는 {@code
-background.png} 이미지를 참조하는 데 사용하는 리소스 ID는 항상 같지만 Android가 각 리소스 중에서 현재 기기에 가장 잘 일치하는 
-버전을 선택하게 됩니다. 이때 리소스 디렉터리 이름의 한정자를 기기 구성 정보와 
+background.png} 이미지를 참조하는 데 사용하는 리소스 ID는 항상 같지만 Android가 각 리소스 중에서 현재 기기에 가장 잘 일치하는
+버전을 선택하게 됩니다. 이때 리소스 디렉터리 이름의 한정자를 기기 구성 정보와
 비교하는 방법을 씁니다.</p>
 
-<p>Android는 여러 가지 구성 한정자를 지원하며 한 디렉터리 이름에 
-여러 개의 한정자를 추가할 수 있습니다. 각 한정자를 대시로 구분하면 됩니다. 표 2는 
-유효한 구성 한정자를 우선 순위대로 나열한 것입니다. 리소스 디렉터리에 여러 개의 
-한정자를 사용하는 경우, 해당 한정자를 디렉터리 이름에 추가할 때 이 표에 나열된 것과 같은 
+<p>Android는 여러 가지 구성 한정자를 지원하며 한 디렉터리 이름에
+여러 개의 한정자를 추가할 수 있습니다. 각 한정자를 대시로 구분하면 됩니다. 표 2는
+유효한 구성 한정자를 우선 순위대로 나열한 것입니다. 리소스 디렉터리에 여러 개의
+한정자를 사용하는 경우, 해당 한정자를 디렉터리 이름에 추가할 때 이 표에 나열된 것과 같은
 순서로 추가해야 합니다.</p>
 
 
-<p class="table-caption" id="table2"><strong>표 2.</strong> 구성 한정자 
+<p class="table-caption" id="table2"><strong>표 2.</strong> 구성 한정자
 이름입니다.</p>
 <table>
     <tr>
@@ -285,7 +285,7 @@
         등.
       </td>
       <td>
-        <p>이동통신 국가 코드(MCC)에 선택적으로 이동통신 네트워크 코드(MNC)가 이어지는 형태로, 
+        <p>이동통신 국가 코드(MCC)에 선택적으로 이동통신 네트워크 코드(MNC)가 이어지는 형태로,
 기기의 SIM 카드에서 가져옵니다. 예를 들어, <code>mcc310</code>은 모든 이동통신사를 포함한 미국이고,
 <code>mcc310-mnc004</code>는 Verizon을 사용하는 미국, <code>mcc208-mnc00</code>은 Orange를 사용하는
 프랑스입니다.</p>
@@ -293,11 +293,11 @@
 SIM 카드에서 가져옵니다.</p>
         <p>MCC만 단독으로 사용할 수도 있습니다(예를 들어, 애플리케이션에 국가별 합법적 리소스를
  포함하는 경우). 언어에 기초해서만 지정해야 할 경우,
-<em>언어 및 지역</em> 한정자를 대신 사용합니다(아래에 설명). MCC와 
+<em>언어 및 지역</em> 한정자를 대신 사용합니다(아래에 설명). MCC와
 MNC 한정자를 사용할 경우, 조심해서 사용하고 예상한 대로 작동하는지 테스트해야 합니다.</p>
         <p>또한, 구성 필드 {@link
 android.content.res.Configuration#mcc}와 {@link
-android.content.res.Configuration#mnc}를 참조하십시오. 이 구성 필드는 각각 이동통신 국가 코드와 
+android.content.res.Configuration#mnc}를 참조하십시오. 이 구성 필드는 각각 이동통신 국가 코드와
 이동통신 네트워크 코드를 나타냅니다.</p>
       </td>
     </tr>
@@ -312,19 +312,19 @@
         등.
       </td>
       <td><p>언어는 두 글자의 <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
-639-1</a> 언어 코드로 정의되고, 
+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} 접두사는 
+        코드는 대소문자를 구별하지 <em>않습니다</em>. {@code r} 접두사는
 지역 부분을 구별하기 위해 사용합니다.
         지역만 지정할 수는 없습니다.</p>
-        <p>사용자가 시스템 설정에서 언어를 변경할 경우 
+        <p>사용자가 시스템 설정에서 언어를 변경할 경우
 애플리케이션 수명 중에 변경될 수 있습니다. 런타임에서 애플리케이션에 어떤 영향을 미치는지 자세히 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 참조하십시오.
 </p>
         <p>다른 여러 언어에 맞게 애플리케이션을 지역화하기 위한 전체 지침은
 <a href="localization.html">지역화</a>를 참조하십시오.</p>
-        <p>또한, 현재 로케일을 나타내는 {@link android.content.res.Configuration#locale} 구성 필드도 
+        <p>또한, 현재 로케일을 나타내는 {@link android.content.res.Configuration#locale} 구성 필드도
 참조하십시오.</p>
       </td>
     </tr>
@@ -368,22 +368,22 @@
         등.
       </td>
       <td>
-        <p>화면의 기본 크기로, 사용 가능한 화면 영역의 가장 짧은 치수가 
-나타냅니다. 구체적으로 기기의 smallestWidth는 해당 화면의 이용 가능한 높이와 너비의 
-가장 짧은 치수를 말합니다(이것을 화면에 대한 "가능한 한 가장 좁은 너비"로 생각해도 됩니다). 이 한정자를 사용하면 
-화면의 현재 방향에 관계 없이 
+        <p>화면의 기본 크기로, 사용 가능한 화면 영역의 가장 짧은 치수가
+나타냅니다. 구체적으로 기기의 smallestWidth는 해당 화면의 이용 가능한 높이와 너비의
+가장 짧은 치수를 말합니다(이것을 화면에 대한 "가능한 한 가장 좁은 너비"로 생각해도 됩니다). 이 한정자를 사용하면
+화면의 현재 방향에 관계 없이
 애플리케이션이 해당 UI에서 이용 가능한 너비 중 최소 {@code &lt;N&gt;}dps를 확보하도록 할 수 있습니다.</p>
-        <p>예를 들어, 레이아웃에 언제나 
+        <p>예를 들어, 레이아웃에 언제나
 600dp 이상의 화면 최소 치수가 필요하다면, 이 한정자를 사용하여 레이아웃 리소스, {@code
-res/layout-sw600dp/}를 만들 수 있습니다. 시스템이 이러한 리소스를 사용하는 것은 사용 가능한 화면의 최소 치수가 적어도 600dp가 
-되는 경우뿐이며, 이때 600dp라는 크기가 사용자 쪽에서 보기에 높이이든 너비이든 
+res/layout-sw600dp/}를 만들 수 있습니다. 시스템이 이러한 리소스를 사용하는 것은 사용 가능한 화면의 최소 치수가 적어도 600dp가
+되는 경우뿐이며, 이때 600dp라는 크기가 사용자 쪽에서 보기에 높이이든 너비이든
 관계 없습니다. 이 smallestWidth는 기기의 고정된 화면 크기 특성입니다. <strong>
 기기의 smallestWidth는 화면 방향이 변경되어도 바뀌지 않습니다</strong>.</p>
         <p>기기의 smallestWidth는 화면 장식과 시스템 UI를 감안합니다. 예를 들어,
 화면 상에서 최소 너비의 축 주변 공간을 차지하는 영구 UI 요소가 있다면,
-시스템은 smallestWidth를 실제 화면 크기보다 작게 선언합니다. 
-이것은 개발자의 UI가 사용할 수 없는 화면 픽셀이기 때문입니다. 따라서 개발자가 사용하는 값은 
-<em>레이아웃에서 요구하는</em> 실제 최소 치수여야 합니다(일반적으로 이 값은 화면의 현재 방향과 관계없이 
+시스템은 smallestWidth를 실제 화면 크기보다 작게 선언합니다.
+이것은 개발자의 UI가 사용할 수 없는 화면 픽셀이기 때문입니다. 따라서 개발자가 사용하는 값은
+<em>레이아웃에서 요구하는</em> 실제 최소 치수여야 합니다(일반적으로 이 값은 화면의 현재 방향과 관계없이
 레이아웃이 지원하는 "최소 너비"가 됩니다.).</p>
         <p>다음의 몇몇 값은 보편적인 화면 크기에 대하여 사용할 수 있습니다.</p>
         <ul>
@@ -398,16 +398,16 @@
           <li>600x1024mdpi (7인치 태블릿) 등의 화면에는 600을 사용합니다.</li>
           <li>720x1280mdpi (10인치 태블릿) 등의 화면에는 720을 사용합니다.</li>
         </ul>
-        <p>애플리케이션이 
-smallestWidth 한정자의 여러 값이 포함된 여러 리소스 디렉터리를 제공하면, 시스템은 
+        <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> 속성과 
+android:requiresSmallestWidthDp}</a> 속성과
 기기의 smallestWidth 값을 보유한 {@link
-android.content.res.Configuration#smallestScreenWidthDp} 
+android.content.res.Configuration#smallestScreenWidthDp}
 구성 필드도 참조하십시오.</p>
-        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는 
+        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는
 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
 지원</a> 개발자 가이드를 참조하십시오.</p>
       </td>
@@ -421,21 +421,21 @@
         등.
       </td>
       <td>
-        <p>리소스를 사용해야 하는 {@code dp} 단위에서 최소 이용 가능한 화면 너비를 지정합니다. 
-이는 <code>&lt;N&gt;</code> 값이 정의합니다.  이 구성 
-값은 현재 실제 너비에 맞추기 위해 화면 방향이 가로와 세로 사이를 오가며 바뀔 때 
+        <p>리소스를 사용해야 하는 {@code dp} 단위에서 최소 이용 가능한 화면 너비를 지정합니다.
+이는 <code>&lt;N&gt;</code> 값이 정의합니다.  이 구성
+값은 현재 실제 너비에 맞추기 위해 화면 방향이 가로와 세로 사이를 오가며 바뀔 때
 변경됩니다.</p>
         <p>애플리케이션이 이 구성에 대해 서로 다른 값이 포함된 여러 개의 리소스 디렉터리를 제공하면,
-시스템은 기기의 현재 화면 너비에 가장 가까운(그러나 이를 초과하지 않는) 
-값을 사용합니다.  이 값은 
-화면 장식을 감안한 것이므로, 기기의 왼쪽이나 오른쪽 가장자리에 
-영구 UI 요소가 있을 경우, 기기는 
+시스템은 기기의 현재 화면 너비에 가장 가까운(그러나 이를 초과하지 않는)
+값을 사용합니다.  이 값은
+화면 장식을 감안한 것이므로, 기기의 왼쪽이나 오른쪽 가장자리에
+영구 UI 요소가 있을 경우, 기기는
 이러한 UI 요소를 감안하여 애플리케이션의 이용 가능한 공간을 줄여서
  실제 화면 크기보다 작은 너비 값을 사용합니다.</p>
         <p><em>API 레벨 13에서 추가되었습니다.</em></p>
         <p>현재 화면 너비를 보유한 {@link android.content.res.Configuration#screenWidthDp}
  구성 필드도 참조하십시오.</p>
-        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는 
+        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는
 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
 지원</a> 개발자 가이드를 참조하십시오.</p>
       </td>
@@ -449,25 +449,25 @@
         등.
       </td>
       <td>
-        <p>리소스가 사용되어야 하는 최소한의 사용 가능한 화면 높이를 "dp" 단위로 나타냅니다. 
-이는 <code>&lt;N&gt;</code> 값이 정의합니다.  이 구성 
-값은 현재 실제 높이에 맞추기 위해 화면 방향이 가로와 세로 사이를 오가며 바뀔 때 
+        <p>리소스가 사용되어야 하는 최소한의 사용 가능한 화면 높이를 "dp" 단위로 나타냅니다.
+이는 <code>&lt;N&gt;</code> 값이 정의합니다.  이 구성
+값은 현재 실제 높이에 맞추기 위해 화면 방향이 가로와 세로 사이를 오가며 바뀔 때
 변경됩니다.</p>
         <p>애플리케이션이 이 구성에 대해 서로 다른 값이 포함된 여러 개의 리소스 디렉터리를 제공하면,
-시스템은 기기의 현재 화면 높이에 가장 가까운(그러나 이를 초과하지 않는) 
-값을 사용합니다.  이 값은 
-화면 장식을 감안한 것이므로, 기기의 상단이나 하단 가장자리에 
-영구 UI 요소가 있을 경우, 기기는 
+시스템은 기기의 현재 화면 높이에 가장 가까운(그러나 이를 초과하지 않는)
+값을 사용합니다.  이 값은
+화면 장식을 감안한 것이므로, 기기의 상단이나 하단 가장자리에
+영구 UI 요소가 있을 경우, 기기는
 이러한 UI 요소를 감안하여 애플리케이션의 이용 가능한 공간을 줄여서
- 실제 화면 크기보다 작은 높이 값을 사용합니다.  
-상태 표시줄에 고정되지 않은 화면 장식(예를 들어 
-전화 상태 표시줄은 전체 화면에서 숨길 수 있음)은 여기에서 감안하지 <em>않았고</em>, 
-제목 표시줄이나 작업 모음 등의 창 장식도 감안되지 않았으므로, 애플리케이션 입장에서는 자신이 지정한 것보다 어느 정도 작은 공간을 
+ 실제 화면 크기보다 작은 높이 값을 사용합니다.
+상태 표시줄에 고정되지 않은 화면 장식(예를 들어
+전화 상태 표시줄은 전체 화면에서 숨길 수 있음)은 여기에서 감안하지 <em>않았고</em>,
+제목 표시줄이나 작업 모음 등의 창 장식도 감안되지 않았으므로, 애플리케이션 입장에서는 자신이 지정한 것보다 어느 정도 작은 공간을
 받아들일 대비를 해야 합니다.
         <p><em>API 레벨 13에서 추가되었습니다.</em></p>
         <p>현재 화면 너비를 보유한 {@link android.content.res.Configuration#screenHeightDp}
  구성 필드도 참조하십시오.</p>
-        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는 
+        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는
 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
 지원</a> 개발자 가이드를 참조하십시오.</p>
       </td>
@@ -482,39 +482,39 @@
       </td>
       <td>
         <ul class="nolist">
-        <li>{@code small}: 저밀도 QVGA 화면과 비슷한 
+        <li>{@code small}: 저밀도 QVGA 화면과 비슷한
 크기의 화면입니다. 작은 화면의 최소 레이아웃 크기는
-약 320x426 dp단위입니다.  이 화면의 예시로는 QVGA 저밀도 및 VGA 고밀도가 
+약 320x426 dp단위입니다.  이 화면의 예시로는 QVGA 저밀도 및 VGA 고밀도가
 있습니다.</li>
-        <li>{@code normal}: 중밀도 HVGA 화면과 
+        <li>{@code normal}: 중밀도 HVGA 화면과
 비슷한 크기의 화면입니다. 정상 화면의
- 최소 레이아웃 크기는 약 320x470 dp 단위입니다.  이 화면의 예로는 
+ 최소 레이아웃 크기는 약 320x470 dp 단위입니다.  이 화면의 예로는
 WQVGA 저밀도, HVGA 중밀도, WVGA 고밀도 등이 있습니다.
 </li>
-        <li>{@code large}: 중밀도 VGA 화면과 
+        <li>{@code large}: 중밀도 VGA 화면과
 비슷한 크기의 화면입니다.
         큰 화면의 최소 레이아웃 크기는 약 480x640 dp 단위입니다.
         이 화면의 예시로는 VGA 및 WVGA 중밀도 화면이 있습니다.</li>
-        <li>{@code xlarge}: 일반적인 중밀도 HVGA 화면보다 상당히 큰 화면을 
+        <li>{@code xlarge}: 일반적인 중밀도 HVGA 화면보다 상당히 큰 화면을
 말합니다. 초대형 화면의
- 최소 레이아웃 크기는 약 720x960 dp 단위입니다.  대부분의 경우, 초대형 화면 기기는 
-주머니에 넣어 다니기에 너무 큽니다. 따라서 태블릿 스타일의 기기일 가능성이 
+ 최소 레이아웃 크기는 약 720x960 dp 단위입니다.  대부분의 경우, 초대형 화면 기기는
+주머니에 넣어 다니기에 너무 큽니다. 따라서 태블릿 스타일의 기기일 가능성이
 높습니다. <em>API 레벨 9에서 추가되었습니다.</em></li>
         </ul>
-        <p class="note"><strong>참고:</strong> 크기 한정자를 사용하더라도 해당 리소스가 그 크기의 화면 
-<em>전용</em>이라는 뜻은 아닙니다. 현재 기기 구성과 더욱 잘 맞는 한정자가 포함된 대체 리소스를 
-제공하지 않으면, 
+        <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">다중 화면 
+
+        <p>자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
 지원</a>을 참조하십시오.</p>
-        <p>{@link android.content.res.Configuration#screenLayout} 구성 필드도 참조하십시오. 
-이것은 화면이 소형, 일반 크기 또는 
+        <p>{@link android.content.res.Configuration#screenLayout} 구성 필드도 참조하십시오.
+이것은 화면이 소형, 일반 크기 또는
 대형인지를 나타냅니다.</p>
       </td>
     </tr>
@@ -530,9 +530,9 @@
           <li>{@code notlong}: QVGA, HVGA 및 VGA 등의 길지 않은 화면</li>
         </ul>
         <p><em>API 레벨 4에서 추가되었습니다.</em></p>
-        <p>이것은 순전히 화면 비율에만 기초합니다("긴" 화면이 더 넓습니다). 이는 
+        <p>이것은 순전히 화면 비율에만 기초합니다("긴" 화면이 더 넓습니다). 이는
 화면 방향과 관계가 없습니다.</p>
-        <p>{@link android.content.res.Configuration#screenLayout}도 참조하십시오. 
+        <p>{@link android.content.res.Configuration#screenLayout}도 참조하십시오.
 이것은 화면이 긴 화면인지 여부를 나타냅니다.</p>
       </td>
     </tr>
@@ -549,10 +549,10 @@
           <li>{@code land}: 기기가 가로 방향(수평)입니다.</li>
           <!-- Square mode is currently not used. -->
         </ul>
-        <p>이것은 사용자가 화면을 돌리는 경우 애플리케이션 수명 중에 
-변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 
+        <p>이것은 사용자가 화면을 돌리는 경우 애플리케이션 수명 중에
+변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면
 <a href="runtime-changes.html">런타임 변경 처리</a>를 참조하십시오.</p>
-        <p>{@link android.content.res.Configuration#orientation} 구성 필드도 참조하십시오. 
+        <p>{@link android.content.res.Configuration#orientation} 구성 필드도 참조하십시오.
 이는 현재 기기 방향을 나타냅니다.</p>
       </td>
     </tr>
@@ -569,21 +569,21 @@
         <ul class="nolist">
           <li>{@code car}: 기기가 차량용 도크에서 표시되고 있습니다.</li>
           <li>{@code desk}: 기기가 데스크용 도크에서 표시되고 있습니다.</li>
-          <li>{@code television}: 기기가 텔레비전에서 표시되고 있으며, 
-UI가 큰 화면에 있고 사용자가 여기에서 멀리 떨어져 있는 
-"텐 풋(ten foot)" 환경을 제공하고 있습니다. 이는 주로 DPAD 또는 
+          <li>{@code television}: 기기가 텔레비전에서 표시되고 있으며,
+UI가 큰 화면에 있고 사용자가 여기에서 멀리 떨어져 있는
+"텐 풋(ten foot)" 환경을 제공하고 있습니다. 이는 주로 DPAD 또는
 기타 비-포인터 상호 작용 주변을 가리킵니다.</li>
-          <li>{@code appliance}: 기기가 가전 제품 역할을 하고 있으며, 디스플레이 
+          <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">도킹 상태 및 유형 
+        <p>기기가 도크에 삽입되거나 제거될 때 앱이 응답하는 방식에 관한 정보는
+<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">도킹 상태 및 유형
 판별과 모니터링</a>을 읽어보십시오.</p>
-        <p>이것은 사용자가 기기를 도크에 놓는 경우 애플리케이션 수명 중에 
+        <p>이것은 사용자가 기기를 도크에 놓는 경우 애플리케이션 수명 중에
 변경될 수 있습니다. 이러한 모드 중 몇 가지는 {@link
-android.app.UiModeManager}를 사용하여 활성화 또는 비활성화할 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+android.app.UiModeManager}를 사용하여 활성화 또는 비활성화할 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
 참조하십시오.</p>
       </td>
     </tr>
@@ -599,9 +599,9 @@
           <li>{@code notnight}: 주간</li>
         </ul>
         <p><em>API 레벨 8에서 추가되었습니다.</em></p>
-        <p>이것은 야간 모드가 자동 모드인 상태(기본)에서 애플리케이션의 수명 중에 
-변경될 수 있습니다. 이 경우 모드는 하루 중 시간대를 기반으로 변경됩니다.  이 모드는 
-{@link android.app.UiModeManager}를 사용하여 활성화 또는 비활성화할 수 있습니다. 이것이 런타임 중 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+        <p>이것은 야간 모드가 자동 모드인 상태(기본)에서 애플리케이션의 수명 중에
+변경될 수 있습니다. 이 경우 모드는 하루 중 시간대를 기반으로 변경됩니다.  이 모드는
+{@link android.app.UiModeManager}를 사용하여 활성화 또는 비활성화할 수 있습니다. 이것이 런타임 중 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
 참조하십시오.</p>
       </td>
     </tr>
@@ -623,33 +623,33 @@
           <li>{@code mdpi}: 중밀도(일반적인 HVGA에서) 화면, 약
 160dpi.</li>
           <li>{@code hdpi}: 고밀도 화면, 약 240dpi.</li>
-          <li>{@code xhdpi}: 초고밀도 화면, 약 320dpi. <em>API 레벨 8에서 
+          <li>{@code xhdpi}: 초고밀도 화면, 약 320dpi. <em>API 레벨 8에서
 추가되었습니다.</em></li>
-          <li>{@code xxhdpi}: 슈퍼 초고밀도 화면, 약 480dpi. <em>API 레벨 16에서 
+          <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에서 
+          <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>{@code nodpi}: 이것은 기기 밀도에 일치하도록 크기를 조정하고자 하지 않는 비트맵 리소스에
 사용할 수 있습니다.</li>
-          <li>{@code tvdpi}: Mdpi와 hdpi 사이 어딘가에 해당되는 화면, 약 213dpi. 이것은 
-"기본" 밀도 그룹으로 간주되지 않습니다. 이는 대체로 텔레비전용으로 만들어진 것이며 
-대부분의 앱에는 필요하지 않는 것이 정상입니다. mdpi 및 hdpi만 제공하면 대부분의 앱에는 충분하고 
+          <li>{@code tvdpi}: Mdpi와 hdpi 사이 어딘가에 해당되는 화면, 약 213dpi. 이것은
+"기본" 밀도 그룹으로 간주되지 않습니다. 이는 대체로 텔레비전용으로 만들어진 것이며
+대부분의 앱에는 필요하지 않는 것이 정상입니다. mdpi 및 hdpi만 제공하면 대부분의 앱에는 충분하고
 시스템이 필요에 따라 크기를 조정해줍니다. 이 한정자는 API 레벨 13과 함께 도입되었습니다.</li>
         </ul>
-        <p>여섯 가지 기본 밀도간에 3:4:6:8:12:16 비율 척도가 있습니다(tvdpi 밀도는 
+        <p>여섯 가지 기본 밀도간에 3:4:6:8:12:16 비율 척도가 있습니다(tvdpi 밀도는
 무시). 그러므로 ldpi의 9x9 비트맵은 mdpi에서 12x12이고, hdpi에서 18x18, xhdpi에서 24x24 등, 이런 식으로 적용됩니다.
 </p>
-        <p>이미지 리소스가 텔레비전이나 특정 기기에서 제대로 보이지 않는다고 결정하고 
+        <p>이미지 리소스가 텔레비전이나 특정 기기에서 제대로 보이지 않는다고 결정하고
 tvdpi 리소스를 사용하려 할 경우, 배율은 1.33*mdpi입니다. 예를 들어,
 mdpi 화면의 100px x 100px 이미지는 tvdpi에서 133px x 133px가 되어야 합니다.</p>
-        <p class="note"><strong>참고:</strong> 밀도 한정자를 사용하더라도 해당 리소스가 그 밀도의 화면 
-<em>전용</em>이라는 뜻은 아닙니다. 현재 기기 구성과 더욱 잘 맞는 한정자가 포함된 대체 리소스를 
-제공하지 않으면, 
+        <p class="note"><strong>참고:</strong> 밀도 한정자를 사용하더라도 해당 리소스가 그 밀도의 화면
+<em>전용</em>이라는 뜻은 아닙니다. 현재 기기 구성과 더욱 잘 맞는 한정자가 포함된 대체 리소스를
+제공하지 않으면,
 시스템이 <a href="#BestMatch">가장 잘 일치하는</a> 리소스를 사용합니다.</p>
-        <p>다양한 화질을 처리하는 방법과 
-Android가 현재 화질에 맞춰 비트맵을 축소하는 방법에 관한 자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+        <p>다양한 화질을 처리하는 방법과
+Android가 현재 화질에 맞춰 비트맵을 축소하는 방법에 관한 자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
 지원</a>을 참조하십시오.</p>
        </td>
     </tr>
@@ -662,10 +662,10 @@
       <td>
         <ul class="nolist">
           <li>{@code notouch}: 기기에 터치 스크린이 없습니다.</li>
-          <li>{@code finger}: 기기에 터치 스크린이 있으며 이를 
+          <li>{@code finger}: 기기에 터치 스크린이 있으며 이를
 사용자의 손가락을 사용한 방향 지시 상호 작용을 통해 쓰도록 되어 있습니다.</li>
         </ul>
-        <p>{@link android.content.res.Configuration#touchscreen} 구성 필드도 참조하십시오. 
+        <p>{@link android.content.res.Configuration#touchscreen} 구성 필드도 참조하십시오.
 이는 기기에서 사용되는 터치 스크린의 유형을 나타냅니다.</p>
       </td>
     </tr>
@@ -678,25 +678,25 @@
       </td>
       <td>
         <ul class="nolist">
-          <li>{@code keysexposed}: 기기에서 키보드를 사용할 수 있습니다. 키보드에 
-소프트웨어 키보드가 활성화되어 있으면(이럴 가능성이 큽니다), 하드웨어 키보드가 사용자에게 노출되어 있지 
-<em>않거나</em> 기기에 하드웨어 키보드가 없더라도 이 리소스를 사용할 수 있습니다. 소프트웨어 
-키보드가 제공되어 있지 않거나 비활성화되어 있는 경우 이것은 하드웨어 키보드가 노출되어 있을 때에만 
+          <li>{@code keysexposed}: 기기에서 키보드를 사용할 수 있습니다. 키보드에
+소프트웨어 키보드가 활성화되어 있으면(이럴 가능성이 큽니다), 하드웨어 키보드가 사용자에게 노출되어 있지
+<em>않거나</em> 기기에 하드웨어 키보드가 없더라도 이 리소스를 사용할 수 있습니다. 소프트웨어
+키보드가 제공되어 있지 않거나 비활성화되어 있는 경우 이것은 하드웨어 키보드가 노출되어 있을 때에만
 사용할 수 있습니다.</li>
-          <li>{@code keyshidden}: 기기에서 하드웨어 키보드를 사용할 수 있지만 
+          <li>{@code keyshidden}: 기기에서 하드웨어 키보드를 사용할 수 있지만
 숨겨져 있고 <em>이에 더하여</em> 기기에 소프트웨어 키보드가 활성화되어 있지 <em>않습니다</em>.</li>
-          <li>{@code keyssoft}: 기기에 활성화된 소프트웨어 키보드가 있습니다(표시 여부는 
+          <li>{@code keyssoft}: 기기에 활성화된 소프트웨어 키보드가 있습니다(표시 여부는
 무관).</li>
         </ul>
         <p><code>keysexposed</code> 리소스를 제공하지만 <code>keyssoft</code>
-리소스는 제공하지 않는다면, 시스템은 소프트웨어 키보드가 활성화되어 있는 동안은 키보드가 보이는지 여부와 관계없이 <code>keysexposed</code> 
+리소스는 제공하지 않는다면, 시스템은 소프트웨어 키보드가 활성화되어 있는 동안은 키보드가 보이는지 여부와 관계없이 <code>keysexposed</code>
 리소스를 사용합니다.</p>
-        <p>이것은 사용자가 하드웨어 키보드를 여는 경우 애플리케이션 수명 중에 
-변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+        <p>이것은 사용자가 하드웨어 키보드를 여는 경우 애플리케이션 수명 중에
+변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
 참조하십시오.</p>
         <p>또한, 구성 필드 {@link
 android.content.res.Configuration#hardKeyboardHidden}과 {@link
-android.content.res.Configuration#keyboardHidden}을 참조하십시오. 이 필드는 각각 하드웨어 키보드의 가시성과 
+android.content.res.Configuration#keyboardHidden}을 참조하십시오. 이 필드는 각각 하드웨어 키보드의 가시성과
 모든 종류의 키보드(소프트웨어 포함)의 가시성을 나타냅니다.</p>
       </td>
     </tr>
@@ -710,13 +710,13 @@
       <td>
         <ul class="nolist">
           <li>{@code nokeys}: 기기에 텍스트 입력을 위한 하드웨어 키가 없습니다.</li>
-          <li>{@code qwerty}: 기기에 하드웨어 쿼티 키보드가 있습니다(이것이 
+          <li>{@code qwerty}: 기기에 하드웨어 쿼티 키보드가 있습니다(이것이
 사용자
 에게 표시되는지 여부는 무관).</li>
-          <li>{@code 12key}: 기기에 하드웨어 12-키 키보드가 있습니다(이것이 사용자에게 표시되는지 여부는 
+          <li>{@code 12key}: 기기에 하드웨어 12-키 키보드가 있습니다(이것이 사용자에게 표시되는지 여부는
 무관).</li>
         </ul>
-        <p>{@link android.content.res.Configuration#keyboard} 구성 필드도 참조하십시오. 
+        <p>{@link android.content.res.Configuration#keyboard} 구성 필드도 참조하십시오.
 이는 기본 텍스트 입력 메서드를 사용할 수 있는지 여부를 나타냅니다.</p>
       </td>
     </tr>
@@ -729,13 +729,13 @@
       <td>
         <ul class="nolist">
           <li>{@code navexposed}: 사용자가 탐색 키를 사용할 수 있습니다.</li>
-          <li>{@code navhidden}: 탐색 키를 사용할 수 없습니다(예: 닫힌 뚜껑 뒤에 있는 
+          <li>{@code navhidden}: 탐색 키를 사용할 수 없습니다(예: 닫힌 뚜껑 뒤에 있는
 경우).</li>
         </ul>
-        <p>이것은 사용자가 탐색 키를 드러내는 경우 애플리케이션 수명 중에 
-변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+        <p>이것은 사용자가 탐색 키를 드러내는 경우 애플리케이션 수명 중에
+변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를
 참조하십시오.</p>
-        <p>{@link android.content.res.Configuration#navigationHidden} 구성 
+        <p>{@link android.content.res.Configuration#navigationHidden} 구성
 필드도 참조하십시오. 이는 탐색 키가 숨겨져 있는지 여부를 나타냅니다.</p>
       </td>
     </tr>
@@ -749,13 +749,13 @@
       </td>
       <td>
         <ul class="nolist">
-          <li>{@code nonav}: 기기에 터치 스크린을 제외하고 다른 탐색 기능이 
+          <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>{@link android.content.res.Configuration#navigation} 구성 필드도 참조하십시오.
 이는 사용 가능한 탐색 메서드의 유형을 나타냅니다.</p>
       </td>
     </tr>
@@ -792,11 +792,11 @@
 
 
 <p class="note"><strong>참고:</strong> 일부 구성 한정자는 Android
-1.0 이후부터 추가되었으므로 모든 Android 버전이 모든 한정자를 지원하는 것은 아닙니다. 새로운 한정자를 사용하면 암시적으로 
-플랫폼 버전 한정자도 추가하므로 구형 기기가 이를 무시하게 됩니다. 예를 들어 
-<code>w600dp</code> 한정자를 사용하면 자동적으로 <code>v13</code> 한정자를 포함합니다. 
-사용 가능한 너비 한정자가 API 레벨 13부터 새로 도입되었기 때문입니다. 문제를 애초에 피하려면, 항상 
-기본 리소스를 한 세트 포함하세요(<em>한정자 없는</em> 리소스 한 세트). 자세한 정보는 
+1.0 이후부터 추가되었으므로 모든 Android 버전이 모든 한정자를 지원하는 것은 아닙니다. 새로운 한정자를 사용하면 암시적으로
+플랫폼 버전 한정자도 추가하므로 구형 기기가 이를 무시하게 됩니다. 예를 들어
+<code>w600dp</code> 한정자를 사용하면 자동적으로 <code>v13</code> 한정자를 포함합니다.
+사용 가능한 너비 한정자가 API 레벨 13부터 새로 도입되었기 때문입니다. 문제를 애초에 피하려면, 항상
+기본 리소스를 한 세트 포함하세요(<em>한정자 없는</em> 리소스 한 세트). 자세한 정보는
 <a href="#Compatibility">리소스와 연관된 최선의 기기 호환성 제공
 </a>을 참조하십시오.</p>
 
@@ -808,7 +808,7 @@
 
 <ul>
     <li>한 가지 리소스 세트에 여러 개의 한정자를 사용할 수 있으며, 이를 대시로 구분하면 됩니다. 예를 들어,
-<code>drawable-en-rUS-land</code>는 수평 방향의 
+<code>drawable-en-rUS-land</code>는 수평 방향의
 US-English 기기에 적용합니다.</li>
     <li>한정자는 <a href="#table2">표2</a>에 나열된 순서를 따라야 합니다. 예:
 
@@ -817,25 +817,25 @@
         <li>맞는 배열: <code>drawable-port-hdpi/</code></li>
       </ul>
     </li>
-    <li>대체 리소스 디렉터리는 중첩될 수 없습니다. 예를 들어, 
+    <li>대체 리소스 디렉터리는 중첩될 수 없습니다. 예를 들어,
 <code>res/drawable/drawable-en/</code>는 있을 수 없습니다.</li>
-    <li>값은 대소문자를 구분하지 않습니다.  리소스 컴파일러가 처리 전에 디렉터리 이름을 
-소문자로 바꿔 대소문자를 구분하지 않는 
+    <li>값은 대소문자를 구분하지 않습니다.  리소스 컴파일러가 처리 전에 디렉터리 이름을
+소문자로 바꿔 대소문자를 구분하지 않는
 파일 시스템에서 문제를 일으키지 않도록 방지합니다. 이름에 대문자가 있는 것은 오로지 가독성을 향상하기 위해서입니다.</li>
-    <li>각 한정자 유형마다 한 개의 값만 지원됩니다. 예를 들어, 스페인과 프랑스에 
-같은 드로어블 파일을 사용하고자 하는 경우 디렉터리 이름이 
-<code>drawable-rES-rFR/</code>이면 <em>안 됩니다.</em> 대신 
+    <li>각 한정자 유형마다 한 개의 값만 지원됩니다. 예를 들어, 스페인과 프랑스에
+같은 드로어블 파일을 사용하고자 하는 경우 디렉터리 이름이
+<code>drawable-rES-rFR/</code>이면 <em>안 됩니다.</em> 대신
 <code>drawable-rES/</code>와 <code>drawable-rFR/</code> 같이 적절한 파일이 포함된 두 개의 리소스 디렉터리가 필요합니다.
-그러나 두 위치에서 같은 파일을 실제로 복제할 필요는 없습니다. 대신 
+그러나 두 위치에서 같은 파일을 실제로 복제할 필요는 없습니다. 대신
 리소스에 별명을 만들면 됩니다. 아래의 <a href="#AliasResources">별명 리소스
 생성</a>을 참조하십시오.</li>
 </ul>
 
-<p>이런 한정자로 이름을 지은 디렉터리에 대체 리소스를 저장하고 나면 
+<p>이런 한정자로 이름을 지은 디렉터리에 대체 리소스를 저장하고 나면
 Android가 현재 기기 구성에 기초하여 애플리케이션에 자동으로 리소스를 적용합니다.
  리소스가 요청될 때마다 Android가 요청한 리소스 파일이 들어있는
-대체 리소스 디렉터리를 확인하고, 그런 다음 <a href="#BestMatch">가장 잘 일치하는 
-리소스를 찾습니다</a>(아래에서 논함). 특정 기기 구성에 일치하는 대체 리소스가 없는 경우, 
+대체 리소스 디렉터리를 확인하고, 그런 다음 <a href="#BestMatch">가장 잘 일치하는
+리소스를 찾습니다</a>(아래에서 논함). 특정 기기 구성에 일치하는 대체 리소스가 없는 경우,
 Android는 상응하는 기본 리소스(구성 한정자를 포함하지 않는
 특정 리소스 유형에 대한 리소스 세트
 )를 사용합니다.</p>
@@ -844,31 +844,31 @@
 
 <h3 id="AliasResources">별명 리소스 생성</h3>
 
-<p>어떤 리소스를 하나 이상의 기기 구성에서 사용하고자 하는 경우(그렇지만 
-이를 기본 리소스를 제공하는 것은 원치 않는 경우), 같은 리소스를 하나 이상의 대체 리소스 디렉터리에 
-넣지 않아도 됩니다. 대신, 기본 리소스 디렉터리에 저장된 리소스에 대해 별명 역할을 하는 
-대체 
+<p>어떤 리소스를 하나 이상의 기기 구성에서 사용하고자 하는 경우(그렇지만
+이를 기본 리소스를 제공하는 것은 원치 않는 경우), 같은 리소스를 하나 이상의 대체 리소스 디렉터리에
+넣지 않아도 됩니다. 대신, 기본 리소스 디렉터리에 저장된 리소스에 대해 별명 역할을 하는
+대체
 리소스를 만들면 됩니다(경우에 따라).</p>
 
-<p class="note"><strong>참고:</strong> 모든 리소스가 다른 리소스에 대한 
-별명을 생성할 수 있는 메커니즘을 제공하는 것은 아닙니다. 특히, {@code xml/} 디렉터리의 애니메이션, 메뉴, 원시 및 기타 지정되지 않은 
+<p class="note"><strong>참고:</strong> 모든 리소스가 다른 리소스에 대한
+별명을 생성할 수 있는 메커니즘을 제공하는 것은 아닙니다. 특히, {@code xml/} 디렉터리의 애니메이션, 메뉴, 원시 및 기타 지정되지 않은
 리소스는 이 기능을 제공하지 않습니다.</p>
 
-<p>예를 들어, 애플리케이션 아이콘 {@code icon.png}이 있고 서로 다른 로케일에서 이 아이콘의 고유 버전이 
-필요한 경우가 있습니다. 그러나 두 로케일, English-Canadian과 French-Canadian은 같은 버전을 
-사용해야 합니다. 같은 이미지를 English-Canadian과 French-Canadian 양쪽 
-모두에 대한 리소스 디렉터리에 복사해야 한다고 생각할 수 있지만, 실은 
+<p>예를 들어, 애플리케이션 아이콘 {@code icon.png}이 있고 서로 다른 로케일에서 이 아이콘의 고유 버전이
+필요한 경우가 있습니다. 그러나 두 로케일, English-Canadian과 French-Canadian은 같은 버전을
+사용해야 합니다. 같은 이미지를 English-Canadian과 French-Canadian 양쪽
+모두에 대한 리소스 디렉터리에 복사해야 한다고 생각할 수 있지만, 실은
 그렇지 않습니다. 대신, 두 로케일에서 사용하는 이미지를 {@code icon_ca.png}(
-{@code icon.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;} 요소를 사용하면 됩니다. 이렇게 하면 
+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>기존 드로어블에 별명을 생성하려면 {@code &lt;bitmap&gt;} 요소를 사용합니다.
 예를 들면 다음과 같습니다.</p>
 
 <pre>
@@ -896,13 +896,13 @@
 </pre>
 
 <p>파일을 {@code main.xml}로 저장하면, {@code R.layout.main}으로 참조할 수 있지만 실제로는 {@code R.layout.main_ltr}
- 리소스의 별명인 리소스로 
+ 리소스의 별명인 리소스로
 컴파일링됩니다.</p>
 
 
 <h4>문자열 및 기타 단순 값</h4>
 
-<p>기존 문자열에 별명을 생성하려면 원하는 문자열의 리소스 ID를 
+<p>기존 문자열에 별명을 생성하려면 원하는 문자열의 리소스 ID를
 새 문자열의 값으로 사용하면 됩니다. 예:</p>
 
 <pre>
@@ -915,7 +915,7 @@
 
 <p>이제 {@code R.string.hi} 리소스는 {@code R.string.hello}의 별명입니다.</p>
 
-<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">기타 단순 값도</a> 같은 방식으로 
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">기타 단순 값도</a> 같은 방식으로
 동작합니다. 예를 들면 색상은 다음과 같습니다.</p>
 
 <pre>
@@ -931,50 +931,50 @@
 
 <h2 id="Compatibility">리소스와 연관된 최선의 기기 호환성 제공</h2>
 
-<p>애플리케이션이 여러 기기 구성을 지원하게 하려면, 
+<p>애플리케이션이 여러 기기 구성을 지원하게 하려면,
 언제나 애플리케이션이 사용하는 각 유형의 리소스에 기본 리소스를 제공하는 것이 매우 중요합니다.</p>
 
 <p>예를 들어 애플리케이션이 여러 언어를 지원할 경우, 항상 <em>언어 및 지역 한정자</em> <a href="#LocaleQualifier">없이</a> {@code
-values/} 디렉터리(여기에 문자열 저장)를 포함시켜야 합니다. 그렇게 하지 않고 언어와 지역 한정자가 있는 디렉터리에 
-모든 문자열을 넣으면, 문자열이 지원하지 않는 언어로 설정된 기기에서 애플리케이션을 
-실행하면 작동이 중단됩니다. 그러나 기본 
-{@code values/} 리소스를 제공하는 한은 애플리케이션이 제대로 실행됩니다(사용자가 이해하지 못하는 
+values/} 디렉터리(여기에 문자열 저장)를 포함시켜야 합니다. 그렇게 하지 않고 언어와 지역 한정자가 있는 디렉터리에
+모든 문자열을 넣으면, 문자열이 지원하지 않는 언어로 설정된 기기에서 애플리케이션을
+실행하면 작동이 중단됩니다. 그러나 기본
+{@code values/} 리소스를 제공하는 한은 애플리케이션이 제대로 실행됩니다(사용자가 이해하지 못하는
 언어로라도 작동합니다. 작동 중단보다 낫습니다.)</p>
 
-<p>마찬가지로 화면 방향에 기초하여 여러 가지 레이아웃 리소스를 제공하는 경우 
+<p>마찬가지로 화면 방향에 기초하여 여러 가지 레이아웃 리소스를 제공하는 경우
 하나의 방향을 기본값으로 선택해야 합니다. 예를 들어 가로 방향에는 {@code
-layout-land/}로, 세로 방향에는 {@code layout-port/}로 레이아웃 리소스를 제공하는 대신 하나를 기본으로 남겨두십시오. 
+layout-land/}로, 세로 방향에는 {@code layout-port/}로 레이아웃 리소스를 제공하는 대신 하나를 기본으로 남겨두십시오.
 가로 방향에 {@code layout/}, 세로 방향에 {@code layout-port/}와 같은 식으로 하면 됩니다.</p>
 
-<p>애플리케이션이 예상치 못한 구성에서 실행될 수 있을 뿐만 아니라 
-Android의 새 버전에서 이전 버전에서는 지원하지 않는 구성 한정자를 추가할 수도 있으므로, 
-기본 리소스를 제공하는 것이 중요합니다. 새 리소스 한정자를 사용하지만, 
+<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}를 기본 리소스로 제공하는 것이 좋습니다. 그래야 해당 한정자를 배제하고 
+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>
 
-<p>이 규칙에는 한 가지 예외가 있습니다. 애플리케이션의 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 이 4 이상이면 
-<a href="#DensityQualifier">화면 밀도</a> 한정자로 대체 드로어블 리소스를 제공할 때 기본 드로어블 
-리소스가 <em>없어도 됩니다</em>. 기본 
-드로어블 리소스가 없더라도 Android가 대체 화면 화질 중에서 가장 잘 맞는 리소스를 찾고 
-필요에 따라 비트맵을 축소합니다. 그러나 모든 유형의 기기에서 최상의 경험을 제공하려면, 
+<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>개발자가 자신이 대체를 제공하는 리소스를 요청하면 Android가 런타임에 어느 대체 리소스를
+사용할지 현대 기기 구성에 따라 여러 가지로 선택합니다. Android가
+대체 리소스를 선택하는 방법을 보여주기 위해 다음 드로어블 디렉터리에 각각 같은 이미지의
 서로 다른 버전이 들어있다고 가정하겠습니다.</p>
 
 <pre class="classic no-pretty-print">
@@ -997,16 +997,16 @@
 기본 텍스트 입력 메서드 = <code>12key</code>
 </p>
 
-<p>Android는 기기 구성을 이용 가능한 대체 리소스와 비교하여, 
+<p>Android는 기기 구성을 이용 가능한 대체 리소스와 비교하여,
 {@code drawable-en-port}에서 드로어블을 선택합니다.</p>
 
-<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 class="img-caption"><strong>그림 2.</strong> Android가 가장 잘 일치하는 리소스를 찾는 방법을 나타낸
 흐름도입니다.</p>
 </div>
 
@@ -1024,23 +1024,23 @@
 drawable-port-ldpi/
 drawable-port-notouch-12key/
 </pre>
-<p class="note"><strong>예외:</strong> 화면 픽셀 밀도 한정자 하나만은 충돌을 이유로 제거되지 
-않습니다. 기기의 화면 밀도가 hdpi라도, 
+<p class="note"><strong>예외:</strong> 화면 픽셀 밀도 한정자 하나만은 충돌을 이유로 제거되지
+않습니다. 기기의 화면 밀도가 hdpi라도,
 현 시점에서는 모든 화면 밀도가 일치로 간주되므로 <code>drawable-port-ldpi/</code>를 제거하지 않습니다.
- 자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+ 자세한 정보는 <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>없는 경우, 2단계로 돌아가 다음 한정자를 살펴보십시오 (이 예시의 경우
 언어 한정자에 도달할 때까지 답은 "없습니다"입니다).</li>
       <li>있는 경우, 4단계로 계속 진행합니다.</li>
     </ul>
   </li>
 
-  <li>이 한정자를 포함하지 않는 디렉터리를 제거합니다. 이 예시에서는 시스템이 
+  <li>이 한정자를 포함하지 않는 디렉터리를 제거합니다. 이 예시에서는 시스템이
 언어 한정자를 포함하지 않는 디렉터리를 모두 제거합니다.</li>
 <pre class="classic no-pretty-print">
 <strike>drawable/</strike>
@@ -1050,15 +1050,15 @@
 <strike>drawable-port-ldpi/</strike>
 <strike>drawable-port-notouch-12key/</strike>
 </pre>
-<p class="note"><strong>예외:</strong> 문제의 한정자가 화면 픽셀 밀도라면, 
-Android는 기기 화면 밀도와 가장 가깝게 일치하는 옵션을 선택합니다. 
+<p class="note"><strong>예외:</strong> 문제의 한정자가 화면 픽셀 밀도라면,
+Android는 기기 화면 밀도와 가장 가깝게 일치하는 옵션을 선택합니다.
 일반적으로, Android는 작은 원본 이미지를 확대하는 것보다
-큰 원본 이미지를 축소하는 것을 선호합니다. <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+큰 원본 이미지를 축소하는 것을 선호합니다. <a href="{@docRoot}guide/practices/screens_support.html">다중 화면
 지원</a>을 참조하십시오.</p>
   </li>
 
-  <li>뒤로 돌아가 디렉터리가 한 개만 남을 때까지 2, 3 및 4단계를 반복합니다. 이 예시에서, 일치하는 것이 있는 다음 한정자는 
-화면 방향입니다. 
+  <li>뒤로 돌아가 디렉터리가 한 개만 남을 때까지 2, 3 및 4단계를 반복합니다. 이 예시에서, 일치하는 것이 있는 다음 한정자는
+화면 방향입니다.
 그러므로 화면 방향을 지정하지 않는 리소스가 제거됩니다.
 <pre class="classic no-pretty-print">
 <strike>drawable-en/</strike>
@@ -1069,26 +1069,26 @@
   </li>
 </ol>
 
-<p>이 절차는 요청된 각 리소스에 대해 실행하지만, 시스템이 몇 가지 측면을 추가로 
-최적화합니다. 그러한 최적화 가운데에는 일단 기기 구성을 알게 되고 나면 절대 일치할 가능성이 없는 
-대체 리소스를 시스템이 제거할 수 있다는 점도 있습니다. 예를 들어, 구성 언어가 
-영어("en")이고 영어 이외의 다른 언어 한정자로 설정된 리소스 디렉터리는 
+<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단계에서 
+<p class="note"><strong>참고:</strong> 한정자의 <em>우선 순위</em>(<a href="#table2">표 2</a> 참조)가 기기와 정확하게 일치하는
+한정자 수보다 더 중요합니다. 예를 들어 위의 4단계에서
 목록의 마지막 선택에 기기와 정확히 일치하는 한정자가 세 개 포함되어 있지만(방향, 터치 스크린
-유형 및 입력 메서드), <code>drawable-en</code>에는 일치하는 매개변수가 
-하나뿐입니다(언어). 다만, 언어가 이러한 다른 한정자보다 우선 순위가 높기 때문에 
+유형 및 입력 메서드), <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
index a5e7f5b..720601fb 100644
--- a/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
@@ -22,41 +22,41 @@
 </div>
 
 <p>몇몇 기기 구성은 런타임 중에 변경될 수 있습니다
-(예: 화면 방향, 키보드 가용성 및 언어 등). 그러한 변경이 일어나는 경우, 
-Android는 실행 중인 
+(예: 화면 방향, 키보드 가용성 및 언어 등). 그러한 변경이 일어나는 경우,
+Android는 실행 중인
 {@link android.app.Activity}를 다시 시작합니다({@link android.app.Activity#onDestroy()} 호출, 뒤이어 {@link
-android.app.Activity#onCreate(Bundle) onCreate()} 호출). 이런 동작은 여러분이 제공한 
+android.app.Activity#onCreate(Bundle) onCreate()} 호출). 이런 동작은 여러분이 제공한
 대체 리소스로 애플리케이션을 자동으로 다시 로딩함으로써 새로운 기기 구성에 애플리케이션이 적응하는 것을 돕도록
 설계되었습니다(예: 다양한 화면 방향과 크기에 대한 다양한 레이아웃).</p>
 
-<p>다시 시작을 적절히 처리하려면 액티비티가 정상적인 
+<p>다시 시작을 적절히 처리하려면 액티비티가 정상적인
 <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티
-수명 주기</a>를 통해 이전 상태를 복원하는 것이 중요합니다. 여기에서 Android는 
-{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}를 호출한 다음에 액티비티를 소멸시켜 
-애플리케이션 상태에 대한 데이터를 저장할 수 있습니다. 그러면 
+수명 주기</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>애플리케이션이 애플리케이션 상태를 그대로 유지한 채 스스로 다시 시작할 수 있는지 시험해 보려면, 
-구성 변경을 일으켜보아야 합니다(예를 들어 화면 방향 변경 등). 이는 애플리케이션에서 여러 가지 작업을 수행하는 
-동안 해봅니다. 애플리케이션이 언제든 사용자 데이터나 상태를 손실하지 않고 
-다시 시작할 수 있어야 합니다. 그래야 구성 변경과 같은 이벤트를 처리할 수 있기 때문입니다. 그렇지 않으면 
-사용자가 걸려오는 전화를 받은 다음 한참 후에 애플리케이션으로 돌아오면 애플리케이션 프로세스가 이미 
+<p>애플리케이션이 애플리케이션 상태를 그대로 유지한 채 스스로 다시 시작할 수 있는지 시험해 보려면,
+구성 변경을 일으켜보아야 합니다(예를 들어 화면 방향 변경 등). 이는 애플리케이션에서 여러 가지 작업을 수행하는
+동안 해봅니다. 애플리케이션이 언제든 사용자 데이터나 상태를 손실하지 않고
+다시 시작할 수 있어야 합니다. 그래야 구성 변경과 같은 이벤트를 처리할 수 있기 때문입니다. 그렇지 않으면
+사용자가 걸려오는 전화를 받은 다음 한참 후에 애플리케이션으로 돌아오면 애플리케이션 프로세스가 이미
 소멸되어 있을 수 있습니다. 액티비티 상태를 복원하는 방법을 배우려면, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티 수명 주기</a>에 관해 읽어보십시오.</p>
 
-<p>하지만, 애플리케이션을 다시 시작하고 상당량의 데이터를 복원하면 비용도 많이 들고 
-불량한 사용자 환경이 만들어지는 상황에 직면할 수도 있습니다. 그러한 상황이라면, 
+<p>하지만, 애플리케이션을 다시 시작하고 상당량의 데이터를 복원하면 비용도 많이 들고
+불량한 사용자 환경이 만들어지는 상황에 직면할 수도 있습니다. 그러한 상황이라면,
 두 가지 다른 옵션이 있습니다.</p>
 
 <ol type="a">
   <li><a href="#RetainingAnObject">구성 변경 중에 객체 보존하기</a>
-  <p>구성이 변경되는 중에 액티비티가 다시 시작될 수 있게 허용하되, 액티비티의 새 인스턴스에 상태 
+  <p>구성이 변경되는 중에 액티비티가 다시 시작될 수 있게 허용하되, 액티비티의 새 인스턴스에 상태
 저장 객체를 넣습니다.</p>
 
   </li>
   <li><a href="#HandlingTheChange">구성 변경 직접 처리하기</a>
-  <p>특정 구성 변경 중에 시스템이 액티비티를 다시 시작하도록 하지 못하게 방지하되, 
-구성이 실제로 변경되면 콜백을 수신하도록 하여 필요에 따라 액티비티를 수동으로 업데이트할 수 
+  <p>특정 구성 변경 중에 시스템이 액티비티를 다시 시작하도록 하지 못하게 방지하되,
+구성이 실제로 변경되면 콜백을 수신하도록 하여 필요에 따라 액티비티를 수동으로 업데이트할 수
 있도록 합니다.</p>
   </li>
 </ol>
@@ -64,30 +64,30 @@
 
 <h2 id="RetainingAnObject">구성 변경 중에 객체 보존하기</h2>
 
-<p>액티비티를 다시 시작하려면 많은 수의 데이터 세트를 복구해야 하는 경우, 네트워크 연결을 
-다시 설정하거나 다른 집약적 작업을 수행한 다음 완전히 다시 시작하십시오. 
-구성 변경 때문에 사용자 환경이 느려질 수 있습니다. 또한, 액티비티 상태를 완전히 복원하려면 
+<p>액티비티를 다시 시작하려면 많은 수의 데이터 세트를 복구해야 하는 경우, 네트워크 연결을
+다시 설정하거나 다른 집약적 작업을 수행한 다음 완전히 다시 시작하십시오.
+구성 변경 때문에 사용자 환경이 느려질 수 있습니다. 또한, 액티비티 상태를 완전히 복원하려면
 {@link android.os.Bundle}을 사용할 수도 있습니다. 이것은 시스템이 개발자 대신 {@link
-android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 콜백으로 저장해두는 것입니다. 이것은 대형 객체(예: 비트맵)를 담도록 
-디자인된 것이 아니며 이 안의 데이터는 반드시 직렬화했다가 다시 역직렬화해야 합니다. 이렇게 하면 
-메모리를 아주 많이 소모할 수 있으며 구성 변경이 느려질 수 있습니다. 이와 같은 상황에서는 
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 콜백으로 저장해두는 것입니다. 이것은 대형 객체(예: 비트맵)를 담도록
+디자인된 것이 아니며 이 안의 데이터는 반드시 직렬화했다가 다시 역직렬화해야 합니다. 이렇게 하면
+메모리를 아주 많이 소모할 수 있으며 구성 변경이 느려질 수 있습니다. 이와 같은 상황에서는
 액티비티를 다시 초기화해야 한다는 부담을 해결하기 위해 액티비티가 구성 변경으로 인해 다시 시작되었을 때 {@link
-android.app.Fragment}를 보존하면 됩니다. 이 프래그먼트에는 
+android.app.Fragment}를 보존하면 됩니다. 이 프래그먼트에는
 보존하고자 하는 상태 저장 객체에 대한 참조를 담을 수 있습니다.</p>
 
-<p>Android 시스템이 구성 변경으로 인하여 액티비티를 종료시킬 때, 액티비티에서 보존하기로 표시해둔 
-프래그먼트는 소멸되지 않습니다. 그러한 프래그먼트를 액티비티에 추가하면 
+<p>Android 시스템이 구성 변경으로 인하여 액티비티를 종료시킬 때, 액티비티에서 보존하기로 표시해둔
+프래그먼트는 소멸되지 않습니다. 그러한 프래그먼트를 액티비티에 추가하면
 상태 저장 객체를 보존할 수 있습니다.</p>
 
 <p>런타임 구성 변경 중에 상태 저장 객체를 프래그먼트에 보존해두는 방법은 다음과 같습니다.</p>
 
 <ol>
-  <li>{@link android.app.Fragment} 클래스를 확장하고 상태 저장 
+  <li>{@link android.app.Fragment} 클래스를 확장하고 상태 저장
 객체에 참조를 선언합니다.</li>
   <li>프래그먼트가 생성되면 {@link android.app.Fragment#setRetainInstance(boolean)}를 호출합니다.
       </li>
   <li>해당 프래그먼트를 액티비티에 추가합니다.</li>
-  <li>{@link android.app.FragmentManager}를 사용하여 액티비티가 다시 시작될 때 프래그먼트를 
+  <li>{@link android.app.FragmentManager}를 사용하여 액티비티가 다시 시작될 때 프래그먼트를
 검색합니다.</li>
 </ol>
 
@@ -117,16 +117,16 @@
 }
 </pre>
 
-<p class="caution"><strong>주의:</strong> 어느 객체든 저장할 수 있지만, 
+<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}와 연관된 기타 모든 객체가 이에 해당됩니다. 이런 것을 전달하면, 
-원래 액티비티 인스턴스의 모든 보기와 리소스를 몽땅 누출시킵니다. (리소스 누출이란 
-애플리케이션이 리소스에 대한 보유권을 유지하고 있어 가비지 수집의 대상이 될 수 없고, 따라서 엄청난 양의 메모리가 
+ 또는 {@link android.content.Context}와 연관된 기타 모든 객체가 이에 해당됩니다. 이런 것을 전달하면,
+원래 액티비티 인스턴스의 모든 보기와 리소스를 몽땅 누출시킵니다. (리소스 누출이란
+애플리케이션이 리소스에 대한 보유권을 유지하고 있어 가비지 수집의 대상이 될 수 없고, 따라서 엄청난 양의 메모리가
 손실된다는 뜻입니다.)</p>
 
-<p>그런 다음 {@link android.app.FragmentManager}를 사용하여 프래그먼트를 액티비티에 추가합니다. 
-프래그먼트에서 데이터 객체를 가져오려면 런타임 구성 변경 중에 액티비티가 다시 시작될 때 
+<p>그런 다음 {@link android.app.FragmentManager}를 사용하여 프래그먼트를 액티비티에 추가합니다.
+프래그먼트에서 데이터 객체를 가져오려면 런타임 구성 변경 중에 액티비티가 다시 시작될 때
 가져오면 됩니다. 예를 들어, 액티비티를 다음과 같이 정의합니다.</p>
 
 <pre>
@@ -165,10 +165,10 @@
 }
 </pre>
 
-<p>이 예시에서 {@link android.app.Activity#onCreate(Bundle) onCreate()}는 프래그먼트를 추가하거나 
-이에 대한 참조를 복원합니다. {@link android.app.Activity#onCreate(Bundle) onCreate()} 또한 
-프래그먼트 인스턴스 안에 상태 저장 객체를 저장합니다. 
-{@link android.app.Activity#onDestroy() onDestroy()}는 보존된 
+<p>이 예시에서 {@link android.app.Activity#onCreate(Bundle) onCreate()}는 프래그먼트를 추가하거나
+이에 대한 참조를 복원합니다. {@link android.app.Activity#onCreate(Bundle) onCreate()} 또한
+프래그먼트 인스턴스 안에 상태 저장 객체를 저장합니다.
+{@link android.app.Activity#onDestroy() onDestroy()}는 보존된
 프래그먼트 인스턴스 내부의 상태 저장 객체를 업데이트합니다.</p>
 
 
@@ -177,26 +177,26 @@
 
 <h2 id="HandlingTheChange">구성 변경 직접 처리하기</h2>
 
-<p>애플리케이션이 특정 구성 변경 중에 리소스를 업데이트하지 않아도 되고 
-그와 <em>동시에</em> 성능 한계가 있어 액티비티 다시 시작을 피해야 하는 경우, 
-액티비티가 구성 변경을 알아서 처리한다고 선언하면 됩니다. 
+<p>애플리케이션이 특정 구성 변경 중에 리소스를 업데이트하지 않아도 되고
+그와 <em>동시에</em> 성능 한계가 있어 액티비티 다시 시작을 피해야 하는 경우,
+액티비티가 구성 변경을 알아서 처리한다고 선언하면 됩니다.
 이렇게 하면 시스템이 액티비티를 다시 시작하지 않도록 방지할 수 있습니다.</p>
 
-<p class="note"><strong>참고:</strong> 구성 변경을 직접 처리하면 대체 리소스를 사용하는 것이 
-훨씬 더 까다로워질 수 있습니다. 시스템이 개발자 대신 자동으로 이를 적용해주지 않기 
-때문입니다. 이 기법은 구성 변경으로 인한 재시작을 반드시 피해야만 하는 경우 최후의 수단으로서만 
+<p class="note"><strong>참고:</strong> 구성 변경을 직접 처리하면 대체 리소스를 사용하는 것이
+훨씬 더 까다로워질 수 있습니다. 시스템이 개발자 대신 자동으로 이를 적용해주지 않기
+때문입니다. 이 기법은 구성 변경으로 인한 재시작을 반드시 피해야만 하는 경우 최후의 수단으로서만
 고려해야 하며 대부분의 애플리케이션에는 권장하지 않습니다.</p>
 
-<p>액티비티가 구성 변경을 직접 처리한다고 선언하려면, 매니페스트 파일의 적절한 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소를 편집하여 
+<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> 속성을 포함하도록 
+android:configChanges}</a> 속성을 포함하도록
 합니다. 가능한 값은 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
-android:configChanges}</a> 속성에 대한 관련 문서에 목록으로 나열되어 있습니다(가장 보편적으로 사용되는 값은 화면 방향이 변경될 때 다시 시작을 방지하는 {@code "orientation"}과 
+android:configChanges}</a> 속성에 대한 관련 문서에 목록으로 나열되어 있습니다(가장 보편적으로 사용되는 값은 화면 방향이 변경될 때 다시 시작을 방지하는 {@code "orientation"}과
 키보드 가용성이 변경될 때 다시 시작을 방지하는 {@code "keyboardHidden"}
-입니다).  이 속성에는 여러 개의 구성 값을 선언할 수 있습니다. 각각을 
+입니다).  이 속성에는 여러 개의 구성 값을 선언할 수 있습니다. 각각을
 파이프 {@code |} 문자로 구분하면 됩니다.</p>
 
-<p>예를 들어 다음 매니페스트 코드는 화면 방향 변경과 키보드 가용성 변경을 둘 다 
+<p>예를 들어 다음 매니페스트 코드는 화면 방향 변경과 키보드 가용성 변경을 둘 다
 처리하는 액티비티를 선언하는 것입니다.</p>
 
 <pre>
@@ -205,29 +205,29 @@
           android:label="@string/app_name">
 </pre>
 
-<p>이제 이러한 구성 중 하나가 변경되어도 {@code MyActivity}는 다시 시작하지 않습니다. 
+<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} 객체가 
-업데이트되어 새 구성에 기반한 리소스를 반환하며, 따라서 시스템이 액티비티를 다시 시작하지 않아도 
+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>. 따라서, 
+<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:configChanges="orientation|screenSize"}를 선언해야 합니다. 하지만, 애플리케이션이 API 레벨 12 이하를
+대상으로 하는 경우라면 애플리케이션이 언제든 이 구성 변경을 알아서 처리합니다(이 구성 변경은
 액티비티를 다시 시작하지 않습니다. 이는 Android 3.2 이상 기기에서 실행되는 경우에도 마찬가지입니다).</p>
 
 <p>예를 들어, 다음 {@link
-android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 구현은 
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 구현은
 현재 기기의 방향을 확인합니다.</p>
 
 <pre>
@@ -244,36 +244,36 @@
 }
 </pre>
 
-<p>{@link android.content.res.Configuration} 객체는 변경된 것만이 아니라 현재 
-구성 전체를 나타냅니다. 대부분의 경우에는 구성이 정확히 어떻게 
-변경되었는지에는 관심이 없고 처리 중인 구성에 대체 리소스를 제공하는 모든 리소스를 그저 
+<p>{@link android.content.res.Configuration} 객체는 변경된 것만이 아니라 현재
+구성 전체를 나타냅니다. 대부분의 경우에는 구성이 정확히 어떻게
+변경되었는지에는 관심이 없고 처리 중인 구성에 대체 리소스를 제공하는 모든 리소스를 그저
 재할당하기만 하면 됩니다. 예를 들어 이제 {@link
 android.content.res.Resources} 객체가 업데이트되었으니 {@link android.widget.ImageView#setImageResource(int)
-setImageResource()}가 있는 모든 
-{@link android.widget.ImageView}와 
+setImageResource()}가 있는 모든
+{@link android.widget.ImageView}와
 새 구성에 대한 적절한 리소스를 재설정할 수 있습니다(<a href="providing-resources.html#AlternateResources">리소스 제공</a>에 설명된 바와 같음).</p>
 
 <p>{@link
-android.content.res.Configuration} 필드에서 가져온 값이 
-{@link android.content.res.Configuration} 클래스에서 가져온 특정 상수와 일치하는 정수라는 점을 눈여겨 보십시오. 각 필드에 
+android.content.res.Configuration} 필드에서 가져온 값이
+{@link android.content.res.Configuration} 클래스에서 가져온 특정 상수와 일치하는 정수라는 점을 눈여겨 보십시오. 각 필드에
 어느 상수를 써야 하는지에 대한 관련 문서는 {@link
 android.content.res.Configuration} 참조에 있는 적절한 필드를 참조하십시오.</p>
 
-<p class="note"><strong>명심할 점:</strong> 액티비티가 직접 구성 변경을 처리한다고 선언하는 경우, 
-대체를 제공하는 모든 요소에 대해 본인이 직접 책임을 지게 됩니다. 액티비티가 직접 
-방향 변경을 처리하고 가로 및 세로 방향 사이에서 바뀌어야 하는 이미지가 있는 경우, 
+<p class="note"><strong>명심할 점:</strong> 액티비티가 직접 구성 변경을 처리한다고 선언하는 경우,
+대체를 제공하는 모든 요소에 대해 본인이 직접 책임을 지게 됩니다. 액티비티가 직접
+방향 변경을 처리하고 가로 및 세로 방향 사이에서 바뀌어야 하는 이미지가 있는 경우,
 각 리소스를 각 요소에 재할당해야 하며 이를 {@link
 android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 중에 수행해야 합니다.</p>
 
-<p>이러한 구성 변경을 기반으로 애플리케이션을 업데이트하지 않아도 되는 경우, 
+<p>이러한 구성 변경을 기반으로 애플리케이션을 업데이트하지 않아도 되는 경우,
 대신 {@link
-android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}를 구현하지 <em>않으면</em> 됩니다. 이런 
-경우, 구성 변경 전에 쓰였던 리소스가 모두 그대로 사용되고 액티비티의 다시 시작만 
-피한 것이 됩니다. 그러나, 애플리케이션은 
-언제든 종료되고 이전 상태를 그대로 유지한 채 다시 시작될 수 있어야 합니다 정상적인 액티비티 
-수명 주기 중에 상태 유지에서의 탈출 방안으로 이 기법을 고려해서는 안 됩니다. 이는 애플리케이션이 
-다시 시작되지 않도록 방지할 수 없는, 다른 구성 변경도 여럿 있어서일뿐만 아니라, 사용자가 
-애플리케이션을 떠났을 경우 해당 사용자가 다시 돌아오기 전에 소멸되는 것과 같은 이벤트를 처리해야 하기 때문이라는 
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}를 구현하지 <em>않으면</em> 됩니다. 이런
+경우, 구성 변경 전에 쓰였던 리소스가 모두 그대로 사용되고 액티비티의 다시 시작만
+피한 것이 됩니다. 그러나, 애플리케이션은
+언제든 종료되고 이전 상태를 그대로 유지한 채 다시 시작될 수 있어야 합니다 정상적인 액티비티
+수명 주기 중에 상태 유지에서의 탈출 방안으로 이 기법을 고려해서는 안 됩니다. 이는 애플리케이션이
+다시 시작되지 않도록 방지할 수 없는, 다른 구성 변경도 여럿 있어서일뿐만 아니라, 사용자가
+애플리케이션을 떠났을 경우 해당 사용자가 다시 돌아오기 전에 소멸되는 것과 같은 이벤트를 처리해야 하기 때문이라는
 이유도 있습니다.</p>
 
 <p>액티비티 내에서 처리할 수 있는 구성 변경이 무엇인지에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/controls.jd b/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
index bf87398..9561ba05 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
@@ -7,11 +7,11 @@
   <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
 </div>
 
-<p>입력 제어는 앱의 사용자 인터페이스에 있는 대화형 구성 요소입니다. 
+<p>입력 제어는 앱의 사용자 인터페이스에 있는 대화형 구성 요소입니다.
 Android는 버튼, 텍스트 필드, 찾기 막대, 확인란, 확대 버튼, 전환 버튼 등과 같이
 UI에서 사용할 수 있도록 매우 다양한 제어를 제공합니다.</p>
 
-<p>UI에 입력 제어를 추가하려면 단순히 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML 레이아웃</a>에 XML 요소를 하나 추가하기만 하면 됩니다. 
+<p>UI에 입력 제어를 추가하려면 단순히 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML 레이아웃</a>에 XML 요소를 하나 추가하기만 하면 됩니다.
 다음은 텍스트 필드와 버튼이 있는 레이아웃을 예시로 나타낸 것입니다.</p>
 
 <pre style="clear:right">
@@ -33,16 +33,16 @@
 &lt;/LinearLayout>
 </pre>
 
-<p>각 입력 제어는 특정한 입력 이벤트를 지원하므로, 사용자가 텍스트를 입력할 때 또는 버튼을 터치할 때 
+<p>각 입력 제어는 특정한 입력 이벤트를 지원하므로, 사용자가 텍스트를 입력할 때 또는 버튼을 터치할 때
 이벤트를 처리할 수 있게 해줍니다.</p>
 
 
 <h2 id="CommonControls">보편적인 제어</h2>
-<p>다음은 앱에서 사용할 수 있는 몇 가지 보편적인 제어를 목록으로 나열한 것입니다. 링크를 따라가면 각 제어에 대해 
+<p>다음은 앱에서 사용할 수 있는 몇 가지 보편적인 제어를 목록으로 나열한 것입니다. 링크를 따라가면 각 제어에 대해
 좀 더 자세히 알아볼 수 있습니다.</p>
 
 <p class="note"><strong>참고:</strong> Android는 여기에 나열된 것보다 몇 가지 더 많은 제어를 제공합니다.
- 더 많은 내용을 알아보려면 {@link android.widget} 패키지를 탐색해보십시오. 
+ 더 많은 내용을 알아보려면 {@link android.widget} 패키지를 탐색해보십시오.
 앱에 특정한 종류의 입력 제어가 필요한 경우, 나름의 <a href="{@docRoot}guide/topics/ui/custom-components.html">사용자 지정 구성 요소</a>를 직접 구축해도 됩니다.</p>
 
 <table>
@@ -69,7 +69,7 @@
     <tr>
         <td><a href="controls/radiobutton.html">무선 버튼</a></td>
         <td>확인란과 비슷하지만, 예외가 있다면 그룹 내에서 하나만 선택할 수 있다는 점입니다.</td>
-	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 7883236..97f9083 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
@@ -34,14 +34,14 @@
 
   <h2>참고 항목</h2>
   <ol>
-    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">간단한 사용자 
+    <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가 위젯과 레이아웃 등과 같이 
+<li><strong>UI 요소를 XML로 선언</strong>. Android가 위젯과 레이아웃 등과 같이
 보기 클래스와 하위 클래스에 상응하는 간단한 XML 어휘를 제공합니다.</li>
 <li><strong>런타임에 레이아웃 요소를 인스턴트화</strong>. 애플리케이션이
  프로그래밍 방법으로 보기 및 ViewGroup객체를 만들 수 있습니다(그리고 그 속성을 조작하기도 합니다). </li>
@@ -55,26 +55,26 @@
   <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>또한,
+<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} 및 
+<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> 속성이 있으며 이는 
+<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>를 참조하십시오. 여러 가지 레이아웃을 구축하는 데 대한 튜토리얼 모음도 있습니다.
 <a href="{@docRoot}resources/tutorials/views/index.html">Hello 보기</a> 튜토리얼 가이드를 참조하십시오.</p>
 
 <h2 id="write">XML 쓰기</h2>
@@ -100,20 +100,20 @@
 &lt;/LinearLayout>
 </pre>
 
-<p>레이아웃을 XML로 선언하고 나면 그 파일을 Android 프로젝트의 <code>res/layout/</code> 디렉터리 내에 
+<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()} 콜백 
+<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>{@link android.app.Activity#setContentView(int) setContentView()}</code>를 호출한 다음, 이를
 <code>R.layout.<em>layout_file_name</em></code> 형태로 레이아웃 리소스의 참조에 전달합니다.
- 예를 들어, XML 레이아웃이 <code>main_layout.xml</code>로 저장된 경우, 이것을 액티비티에 대해 로딩하려면 
+ 예를 들어, XML 레이아웃이 <code>main_layout.xml</code>로 저장된 경우, 이것을 액티비티에 대해 로딩하려면
 다음과 같이 하면 됩니다.</p>
 <pre>
 public void onCreate(Bundle savedInstanceState) {
@@ -122,8 +122,8 @@
 }
 </pre>
 
-<p>액티비티 내의 <code>onCreate()</code> 콜백 메서드는 액티비티가 시작될 때 
-Android 프레임워크가 호출합니다(수명 주기에 대한 논의는 
+<p>액티비티 내의 <code>onCreate()</code> 콜백 메서드는 액티비티가 시작될 때
+Android 프레임워크가 호출합니다(수명 주기에 대한 논의는
 <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티</a>
  문서에서 확인하십시오).</p>
 
@@ -134,24 +134,24 @@
 몇몇 속성은 보기 객체에만 특화되어 있지만(예를 들어, TextView는 <code>textSize</code>
 속성을 지원), 이와 같은 속성은 이 클래스를 확장할 수 있는 모든 보기 객체가 상속하기도 합니다.
 모든 보기 객체에 공통으로 쓰이는 것도 몇 가지 있습니다. 왜냐하면 이들은 루트 보기 클래스에서 상속된 것이기 때문입니다(예:
-<code>id</code> 속성). 그리고 나머지 속성은 "레이아웃 매개변수"로 간주됩니다. 
-이들은 보기 객체의 특정한 레이아웃 방향을 설명하는 것으로, 이는 해당 객체의 상위 VeiwGroup 객체에서 
+<code>id</code> 속성). 그리고 나머지 속성은 "레이아웃 매개변수"로 간주됩니다.
+이들은 보기 객체의 특정한 레이아웃 방향을 설명하는 것으로, 이는 해당 객체의 상위 VeiwGroup 객체에서
 정의된 바에 따릅니다.</p>
 
 <h3 id="id">ID</h3>
 
 <p>모든 보기 객체에는 연관된 정수 ID가 있을 수 있습니다. 이는 트리 내에서 해당 보기를 고유하게 식별하기 위한 것입니다.
-애플리케이션이 컴파일링되면 이 ID가 정수로 참조되지만, ID는 
-일반적으로 레이아웃 XML 파일에 문자열로 할당되며, <code>id</code> 속성으로 쓰입니다. 
+애플리케이션이 컴파일링되면 이 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를 참조할 때에는 더하기 기호는 필요하지 않지만 
+<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>
@@ -174,54 +174,54 @@
 </pre>
   </li>
 </ol>
-<p>{@link android.widget.RelativeLayout}을 생성할 때에는 보기 객체의 ID를 정의하는 것이 중요합니다. 
-관계 레이아웃에서는 형제 보기가 또 다른 형제 보기와 관련된 자신의 레이아웃을 정의할 수 있으며, 
+<p>{@link android.widget.RelativeLayout}을 생성할 때에는 보기 객체의 ID를 정의하는 것이 중요합니다.
+관계 레이아웃에서는 형제 보기가 또 다른 형제 보기와 관련된 자신의 레이아웃을 정의할 수 있으며,
 이를 고유한 ID로 참조하게 됩니다.</p>
-<p>ID는 트리 전체를 통틀어 고유할 필요는 없지만, 트리에서 검색하고 있는 부분 내에서는 
-고유해야 합니다(이것이 트리 전체인 경우가 잦으므로, 가급적이면 완전히 
+<p>ID는 트리 전체를 통틀어 고유할 필요는 없지만, 트리에서 검색하고 있는 부분 내에서는
+고유해야 합니다(이것이 트리 전체인 경우가 잦으므로, 가급적이면 완전히
 고유한 것을 쓰는 것이 가장 좋습니다).</p>
 
 
 <h3 id="layout-params">레이아웃 매개변수</h3>
 
-<p><code>layout_<em>something</em></code>이라는 XML 레이아웃 속성이 
+<p><code>layout_<em>something</em></code>이라는 XML 레이아웃 속성이
 보기가 상주하는 ViewGroup에 대해 적절한 보기의 레이아웃 매개변수를 정의합니다.</p>
 
 <p>모든 ViewGroup 클래스가 중첩된 클래스를 하나씩 구현하며 이것이 {@link
-android.view.ViewGroup.LayoutParams}를 확장합니다. 이 하위 클래스에는 
-각 하위 보기의 크기와 위치를 보기 그룹에 적절한 방식으로 정의하는 
-속성 유형이 들어 있습니다. 그림 1에서 볼 수 있듯이, 상위 보기 그룹이 
+android.view.ViewGroup.LayoutParams}를 확장합니다. 이 하위 클래스에는
+각 하위 보기의 크기와 위치를 보기 그룹에 적절한 방식으로 정의하는
+속성 유형이 들어 있습니다. 그림 1에서 볼 수 있듯이, 상위 보기 그룹이
 각 하위 보기의 레이아웃 매개변수를 정의합니다(하위 보기 그룹 포함).</p>
 
 <img src="{@docRoot}images/layoutparams.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> 각 보기와 연관된 레이아웃 매개변수가 
+<p class="img-caption"><strong>그림 1.</strong> 각 보기와 연관된 레이아웃 매개변수가
 있는 보기 계층을 시각화한 것입니다.</p>
 
-<p>모든 LayoutParams 하위 클래스에는 설정 값에 대한 각기 자신만의 구문이 있다는 점을 
-눈여겨 보십시오. 각 하위 요소는 자신의 상위에 적합한 LayoutParams를 정의해야 합니다. 
+<p>모든 LayoutParams 하위 클래스에는 설정 값에 대한 각기 자신만의 구문이 있다는 점을
+눈여겨 보십시오. 각 하위 요소는 자신의 상위에 적합한 LayoutParams를 정의해야 합니다.
 다만 이것은 자신의 하위에 대해 각기 다른 LayoutParams도 정의할 수 있습니다. </p>
 
-<p>모든 보기 그룹에는 너비와 높이가 포함되며(<code>layout_width</code> 및 
-<code>layout_height</code>), 각 보기는 이들을 반드시 정의해야 합니다. 선택 사항으로 
+<p>모든 보기 그룹에는 너비와 높이가 포함되며(<code>layout_width</code> 및
+<code>layout_height</code>), 각 보기는 이들을 반드시 정의해야 합니다. 선택 사항으로
 여백과 테두리도 포함하는 LayoutParams도 많습니다. <p>
 
-<p>너비와 높이는 정확한 치수로 지정할 수 있습니다. 다만 이것은 자주 하지 
-않는 것이 좋습니다. 그보다는 다음과 같은 상수 중 하나를 사용하여 너비 또는 높이를 설정하는 경우가 
+<p>너비와 높이는 정확한 치수로 지정할 수 있습니다. 다만 이것은 자주 하지
+않는 것이 좋습니다. 그보다는 다음과 같은 상수 중 하나를 사용하여 너비 또는 높이를 설정하는 경우가
 더 많습니다. </p>
 
 <ul>
-  <li><var>wrap_content</var> 보기에 콘텐츠에 필요한 치수대로 알아서 
+  <li><var>wrap_content</var> 보기에 콘텐츠에 필요한 치수대로 알아서
 크기를 조정하라고 합니다.</li>
   <li><var>match_parent</var> (다른 이름은 <var>fill_parent</var> 로, API 레벨 8 이전에 해당)
 보기에 상위 보기 그룹이 허용하는 한 최대한으로 커지라고 합니다.</li>
 </ul>
 
-<p>일반적으로 픽셀과 같이 절대적인 단위를 사용하여 레이아웃 너비와 높이를 지정하는 것은 
-권장하지 않습니다. 그 대신, 밀도 독립적인 픽셀 단위와 같이 상대적인 측정치를 
+<p>일반적으로 픽셀과 같이 절대적인 단위를 사용하여 레이아웃 너비와 높이를 지정하는 것은
+권장하지 않습니다. 그 대신, 밀도 독립적인 픽셀 단위와 같이 상대적인 측정치를
 사용하는 것(<var>dp</var>), <var>wrap_content</var>, 또는
-<var>match_parent</var>등이 더 낫습니다. 이렇게 하면 
+<var>match_parent</var>등이 더 낫습니다. 이렇게 하면
 애플리케이션이 다양한 기기 화면 크기에 걸쳐서도 적절하게 표시되도록 보장하는 데 도움이 되기 때문입니다.
-허용된 측정 유형은 
+허용된 측정 유형은
 <a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">
 사용 가능한 리소스</a>에 정의되어 있습니다.</p>
 
@@ -229,23 +229,23 @@
 <h2 id="Position">레이아웃 위치</h2>
    <p>
    보기의 모양은 직사각형입니다. 보기에는 위치가 있으며, 이는
- 한 쌍의 <em>왼쪽</em> 및 <em>상단</em> 좌표, 그리고 두 개의 치수가 너비와 높이를 나타내는 
+ 한 쌍의 <em>왼쪽</em> 및 <em>상단</em> 좌표, 그리고 두 개의 치수가 너비와 높이를 나타내는
 형식으로 표현됩니다. 위치와 치수의 단위는 픽셀입니다.
 
    </p>
 
    <p>
-   보기의 위치를 검색할 수 있습니다. 
-{@link android.view.View#getLeft()} 및 {@link android.view.View#getTop()} 메서드를 호출하면 됩니다. 전자는 보기를 
-나타내는 직사각형의 왼쪽, 즉 X 좌표를 반환합니다. 후자는 보기를 
-나타내는 직사각형의 상단, 즉 Y 좌표를 반환합니다. 이들 메서드는 둘 다 
-보기의 위치를 해당 보기의 상위와 관련지어 반환합니다. 예를 들어, 
-<code>getLeft()</code>가 20을 반환하는 경우 이는 해당 보기가 그 보기의 바로 상위의 왼쪽 가장자리에서 
+   보기의 위치를 검색할 수 있습니다.
+{@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()}를
@@ -255,46 +255,46 @@
 
 <h2 id="SizePaddingMargins">크기, 안쪽 여백 및 여백</h2>
    <p>
-   보기의 크기는 너비와 높이로 표현됩니다. 사실 하나의 보기는 
+   보기의 크기는 너비와 높이로 표현됩니다. 사실 하나의 보기는
 두 쌍의 너비 및 높이 값을 소유합니다.
    </p>
 
    <p>
-   첫 번째 쌍을 <em>측정된 너비</em> 및 
-<em>측정된 높이</em>라고 합니다. 이들 치수는 보기가 
-상위 내에서 얼마나 커지고자 하는지를 정의합니다. 측정된 
+   첫 번째 쌍을 <em>측정된 너비</em> 및
+<em>측정된 높이</em>라고 합니다. 이들 치수는 보기가
+상위 내에서 얼마나 커지고자 하는지를 정의합니다. 측정된
 치수를 가져오려면 {@link android.view.View#getMeasuredWidth()}
  및 {@link android.view.View#getMeasuredHeight()}를 호출하면 됩니다.
    </p>
 
    <p>
-   두 번째 쌍은 단순히 <em>너비</em> 및 <em>높이</em>라고 일컬으며, 
-때로는 <em>그리기 너비</em> 및 <em>그리기 높이</em>로 부를 때도 있습니다. 이러한 
-치수는 그리기 시간 및 레이아웃 후에 보기가 화면에 표시되는 실제 크기를 
-정의합니다. 이들 값은 측정된 너비 및 높이와 달라도 되지만 
-꼭 달라야 하는 것은 아닙니다. 너비와 높이를 가져오려면 
+   두 번째 쌍은 단순히 <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()}, 
+   안쪽 여백은 정해진 픽셀 수를 사용하여 보기의 콘텐츠를 오프셋하는 데 쓰일 수도
+있습니다. 예를 들어 왼쪽 안쪽 여백을 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} 및
 {@link android.view.ViewGroup.MarginLayoutParams}를 참조하십시오.
    </p>
 
-   <p>치수에 대한 자세한 정보는 
+   <p>치수에 대한 자세한 정보는
 <a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">치수 값</a>을 참조하십시오.
    </p>
 
@@ -320,13 +320,13 @@
 
 <h2 id="CommonLayouts">보편적인 레이아웃</h2>
 
-<p>{@link android.view.ViewGroup} 클래스의 각 하위 클래스는 각기 고유한 방식으로 자신 안에 
-중첩한 보기를 표시합니다. 아래는 Android 플랫폼에서 기본 제공되는, 보다 보편적인 레이아웃 유형을 
+<p>{@link android.view.ViewGroup} 클래스의 각 하위 클래스는 각기 고유한 방식으로 자신 안에
+중첩한 보기를 표시합니다. 아래는 Android 플랫폼에서 기본 제공되는, 보다 보편적인 레이아웃 유형을
 몇 가지 나타낸 것입니다.</p>
 
-<p class="note"><strong>참고:</strong> 하나 이상의 레이아웃을 또 다른 레이아웃에 중첩하여 
-UI 디자인을 이룰 수도 있지만, 레이아웃 계층을 가능한 한 얕게 유지하도록 
-애써야 합니다. 중첩된 레이아웃이 적을수록 레이아웃이 더욱 빠르게 그려집니다(가로로 넓은 보기 계층이 
+<p class="note"><strong>참고:</strong> 하나 이상의 레이아웃을 또 다른 레이아웃에 중첩하여
+UI 디자인을 이룰 수도 있지만, 레이아웃 계층을 가능한 한 얕게 유지하도록
+애써야 합니다. 중첩된 레이아웃이 적을수록 레이아웃이 더욱 빠르게 그려집니다(가로로 넓은 보기 계층이
 깊은 보기 계층보다 낫습니다).</p>
 
 <!--
@@ -345,14 +345,14 @@
 <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>여러 하위를 하나의 가로 방향 또는 세로 방향 행으로 정리하는 레이아웃. 이것은
 창의 길이가 화면 길이를 웃도는 경우 스크롤 막대를 만듭니다.</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가 
+  <p>여러 하위 객체의 위치를 서로 관련지어 나타내거나(하위 A가
 하위 B의 왼쪽), 상위와 관련지어 나타낼 수 있도록 해줍니다(상위의 맨 위에 맞춰 정렬).</p>
 </div>
 
@@ -367,12 +367,12 @@
 
 <h2 id="AdapterViews" style="clear:left">어댑터로 레이아웃 구축하기</h2>
 
-<p>레이아웃의 콘텐츠가 동적이거나 미리 정의되지 않은 경우, 
-{@link android.widget.AdapterView}의 하위 클래스가 되는 레이아웃을 사용하여 런타임에 보기로 레이아웃을 채울 수 있습니다. 
-{@link android.widget.AdapterView} 클래스의 하위 클래스는 {@link android.widget.Adapter}를 
+<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>
@@ -393,13 +393,13 @@
 
 <h3 id="FillingTheLayout" style="clear:left">데이터로 어댑터 보기 채우기</h3>
 
-<p>{@link android.widget.ListView} 또는 
-{@link android.widget.GridView}와 같은 {@link android.widget.AdapterView}를 채우려면 {@link android.widget.AdapterView} 인스턴스를 
+<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>Android는 {@link android.widget.Adapter}의 하위 클래스를 여러 개 제공합니다.
+이는 여러 가지 종류의 데이터를 검색하고 {@link android.widget.AdapterView}에 대한 보기를 구축하는 데 유용합니다.
 가장 보편적인 어댑터 두 가지를 예로 들면 다음과 같습니다.</p>
 
 <dl>
@@ -409,7 +409,7 @@
 java.lang.Object#toString()}를 호출하고 그 콘텐츠를 {@link
 android.widget.TextView}에 배치함으로써 각 배열 항목에 대한 보기를 생성합니다.
       <p>예를 들어, {@link
-android.widget.ListView}로 문자열 배열을 표시하고자 하는 경우, 생성자를 사용하여 
+android.widget.ListView}로 문자열 배열을 표시하고자 하는 경우, 생성자를 사용하여
 새로운 {@link android.widget.ArrayAdapter}를 초기화해서 각 문자열과 문자열 배열에 대한 레이아웃을 지정하면 됩니다.</p>
 <pre>
 ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
@@ -421,7 +421,7 @@
   <li>배열에 있는 각 문자열에 대한 {@link android.widget.TextView}가 들어있는 레이아웃</li>
   <li>문자열 배열</li>
 </ul>
-<p>그런 다음 {@link android.widget.ListView}에서 
+<p>그런 다음 {@link android.widget.ListView}에서
 {@link android.widget.ListView#setAdapter setAdapter()}를 호출하기만 하면 됩니다.</p>
 <pre>
 ListView listView = (ListView) findViewById(R.id.listview);
@@ -430,7 +430,7 @@
 
       <p>각 항목의 외관을 사용자 지정하려면 배열의 객체에 대한 {@link
 java.lang.Object#toString()} 메서드를 재정의하면 됩니다. 아니면, 각 항목에 대하여
-{@link android.widget.TextView}가 아닌 다른 보기를 생성하고자 하는 경우(예를 들어 각 배열 항목에 
+{@link android.widget.TextView}가 아닌 다른 보기를 생성하고자 하는 경우(예를 들어 각 배열 항목에
 {@link android.widget.ImageView}를 원하는 경우), {@link
 android.widget.ArrayAdapter} 클래스를 확장하고 {@link android.widget.ArrayAdapter#getView
 getView()}를 재정의하여 각 항목에 대해 원하는 유형의 보기를 반환하도록 할 수 있습니다.</p>
@@ -438,21 +438,21 @@
 </dd>
 
   <dt>{@link android.widget.SimpleCursorAdapter}</dt>
-    <dd>이 어댑터는 데이터 출처가 {@link android.database.Cursor}일 때 사용하십시오. 
-{@link android.widget.SimpleCursorAdapter}를 사용하는 경우, 
+    <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}의 어느 열을 원하는지 지정하는 문자열 배열을 만들 수 있고, 각 열이 배치되어야 하는 
+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}를 인스턴트화하는 경우, 각 결과에 대해 사용할 레이아웃과 
+<p>{@link android.widget.SimpleCursorAdapter}를 인스턴트화하는 경우, 각 결과에 대해 사용할 레이아웃과
 결과가 들어있는 {@link android.database.Cursor}, 그리고 다음의 두 배열을 전달합니다.</p>
 <pre>
 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
@@ -460,21 +460,21 @@
 ListView listView = getListView();
 listView.setAdapter(adapter);
 </pre>
-<p>그러면 {@link android.widget.SimpleCursorAdapter}가 
+<p>그러면 {@link android.widget.SimpleCursorAdapter}가
 {@link android.database.Cursor}에 있는 각 행에 대한 보기를 하나씩 생성합니다. 이때 상응하는 {@code toViews} 보기 안에 각 {@code
 fromColumns} 항목을 삽입함으로써 제공된 레이아웃을 사용합니다.</p>.</dd>
 </dl>
 
 
-<p>애플리케이션의 수명이 진행되는 동안에 어댑터가 읽는 기본 데이터를 변경하는 경우, 
-{@link android.widget.ArrayAdapter#notifyDataSetChanged()}를 호출해야 합니다. 
+<p>애플리케이션의 수명이 진행되는 동안에 어댑터가 읽는 기본 데이터를 변경하는 경우,
+{@link android.widget.ArrayAdapter#notifyDataSetChanged()}를 호출해야 합니다.
 이렇게 하면 첨부된 보기에 데이터가 변경되었으며 스스로 새로 고쳐야 한다는 사실을 알려줍니다.</p>
 
 
 
 <h3 id="HandlingUserSelections">클릭 이벤트 처리</h3>
 
-<p>{@link android.widget.AdapterView}에 있는 각 항목에서의 클릭 이벤트에 응답하려면 
+<p>{@link android.widget.AdapterView}에 있는 각 항목에서의 클릭 이벤트에 응답하려면
 {@link android.widget.AdapterView.OnItemClickListener} 인터페이스를 구현하면 됩니다. 예:</p>
 
 <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
index 23e92c9..7fad584 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -41,24 +41,24 @@
   </div>
 </div>
 
-<p>대화는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 
-프롬프트를 보내는 작은 창입니다. 대화는 화면을 가득 채우지 않으며 보통 사용자가 
+<p>대화는 사용자에게 결정을 내리거나 추가 정보를 입력하라는
+프롬프트를 보내는 작은 창입니다. 대화는 화면을 가득 채우지 않으며 보통 사용자가
 다음으로 계속 진행하기 전에 조치를 취해야 하는 모달 이벤트에 쓰입니다.</p>
 
 <div class="note design">
 <p><strong>대화 디자인</strong></p>
-  <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} 클래스가 대화의 기본 클래스이지만, 
+<p>{@link android.app.Dialog} 클래스가 대화의 기본 클래스이지만,
 {@link android.app.Dialog}를 직접 인스턴트화하는 것은 삼가야 합니다.
 대신 다음 하위 클래스 중 하나를 사용하십시오.</p>
 <dl>
   <dt>{@link android.app.AlertDialog}</dt>
-  <dd>제목 하나, 최대 세 개의 버튼, 선택 가능한 품목 목록 또는 
+  <dd>제목 하나, 최대 세 개의 버튼, 선택 가능한 품목 목록 또는
 사용자 지정 레이아웃을 표시할 수 있는 대화입니다.</dd>
   <dt>{@link android.app.DatePickerDialog} 또는 {@link android.app.TimePickerDialog}</dt>
   <dd>미리 정의된 UI가 있는 대화로 사용자로 하여금 날짜 또는 시간을 선택할 수 있게 해줍니다.</dd>
@@ -66,55 +66,55 @@
 
 <div class="sidebox">
 <h2>ProgressDialog 피하기</h2>
-<p>Android에는 
-{@link android.app.ProgressDialog}라고 하는 또 다른 대화 클래스가 있습니다. 이것은 진행률 표시줄이 있는 대화를 표시하는 것입니다. 그러나, 
-로딩이나 확정되지 않은 진행률을 나타내야 하는 경우 이 대신 <a href="{@docRoot}design/building-blocks/progress.html">진행률 및 
-액티비티</a>에 대한 디자인 지침을 따르고, 
+<p>Android에는
+{@link android.app.ProgressDialog}라고 하는 또 다른 대화 클래스가 있습니다. 이것은 진행률 표시줄이 있는 대화를 표시하는 것입니다. 그러나,
+로딩이나 확정되지 않은 진행률을 나타내야 하는 경우 이 대신 <a href="{@docRoot}design/building-blocks/progress.html">진행률 및
+액티비티</a>에 대한 디자인 지침을 따르고,
 레이아웃의 {@link android.widget.ProgressBar}를 사용해야 합니다.</p>
 </div>
 
-<p>이러한 클래스가 대화의 스타일과 구조를 정의하지만, 대화의 컨테이너로는 
+<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> 버튼을 누르거나 화면을 돌릴 때 등 
+<p>대화를 관리하기 위해 {@link android.support.v4.app.DialogFragment}를 사용하면
+사용자가 <em>뒤로</em> 버튼을 누르거나 화면을 돌릴 때 등
 수명 주기 이벤트를 올바르게 처리하도록 보장할 수 있습니다. {@link
-android.support.v4.app.DialogFragment} 클래스를 사용하면 대화의 UI를 더 큰 UI에 
+android.support.v4.app.DialogFragment} 클래스를 사용하면 대화의 UI를 더 큰 UI에
 포함시킬 수 있는 구성 요소로 다시 사용할 수 있게 해주기도 합니다. 이것은 기존의 {@link
-android.support.v4.app.Fragment}와 똑같습니다(대화 UI를 크고 작은 화면에서 서로 다르게 
+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} 클래스는 원래 
+{@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도 다양하게 사용할 수 있습니다. 앱의 최소 버전이 
+android.support.v4.app.DialogFragment} 클래스를 사용하는 법을 설명합니다. 이 라이브러리를 앱에 추가하면 Android 1.6 이상을 실행하는 기기에서
+{@link android.support.v4.app.DialogFragment}를 비롯하여
+다른 API도 다양하게 사용할 수 있습니다. 앱의 최소 버전이
 API 레벨 11 이상인 경우, {@link
-android.app.DialogFragment}의 프레임워크 버전을 사용해도 되지만, 이 문서에 있는 링크는 
-지원 라이브러리 API를 대상으로 한 것이라는 점을 유의하십시오. 지원 라이브러리를 사용할 때에는 
+android.app.DialogFragment}의 프레임워크 버전을 사용해도 되지만, 이 문서에 있는 링크는
+지원 라이브러리 API를 대상으로 한 것이라는 점을 유의하십시오. 지원 라이브러리를 사용할 때에는
 <code>android.support.v4.app.DialogFragment</code>
  클래스를 가져와야 합니다. <code>android.app.DialogFragment</code>가 <em>아닙니다</em>.</p>
 
 
 <h2 id="DialogFragment">대화 프래그먼트 생성</h2>
 
-<p>대단히 다양한 대화 디자인을 만들 수 있습니다. 사용자 지정 레이아웃은 물론 
+<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}로, 이는 
+<p>예를 들어 다음은 {@link android.app.AlertDialog}로, 이는
 {@link android.support.v4.app.DialogFragment} 내에서 관리되는 것입니다.</p>
 
 <pre>
@@ -147,14 +147,14 @@
 </div>
 
 <p>이 클래스의 인스턴스를 생성하고 해당 객체에서 {@link
-android.support.v4.app.DialogFragment#show show()}를 호출하면 대화는 
+android.support.v4.app.DialogFragment#show show()}를 호출하면 대화는
 그림 1에 표시된 것처럼 나타납니다.</p>
 
 <p>다음 섹션에서는 {@link android.app.AlertDialog.Builder}
 API를 사용하여 대화를 생성하는 것에 대해 좀 더 자세히 설명합니다.</p>
 
-<p>대화가 얼마나 복잡한지에 따라 
-{@link android.support.v4.app.DialogFragment}에서 여러 가지 다른 콜백 메서드를 구현할 수 있습니다. 그중에는 기본적인 
+<p>대화가 얼마나 복잡한지에 따라
+{@link android.support.v4.app.DialogFragment}에서 여러 가지 다른 콜백 메서드를 구현할 수 있습니다. 그중에는 기본적인
 <a href="{@docRoot}guide/components/fragments.html#Lifecycle">조각 수명 주기 메서드</a>도 포함됩니다.
 
 
@@ -164,8 +164,8 @@
 <h2 id="AlertDialog">경고 대화 구축</h2>
 
 
-<p>{@link android.app.AlertDialog} 클래스를 사용하면 
-여러 가지 대화 디자인을 구축할 수 있으며, 필요한 대화 클래스는 이것뿐인 경우도 많습니다. 
+<p>{@link android.app.AlertDialog} 클래스를 사용하면
+여러 가지 대화 디자인을 구축할 수 있으며, 필요한 대화 클래스는 이것뿐인 경우도 많습니다.
 그림 2에 표시된 것과 같이 경고 대화에는 세 가지 영역이 있습니다.</p>
 
 <div class="figure" style="width:311px;margin-top:0">
@@ -175,8 +175,8 @@
 
 <ol>
 <li><b>제목</b>
-  <p>이것은 선택 항목이며 콘텐츠 영역에 상세한 메시지, 목록 또는 
-사용자 지정 레이아웃이 채워져 있는 경우에만 사용해야 합니다. 단순한 메시지 또는 
+  <p>이것은 선택 항목이며 콘텐츠 영역에 상세한 메시지, 목록 또는
+사용자 지정 레이아웃이 채워져 있는 경우에만 사용해야 합니다. 단순한 메시지 또는
 질문(그림 1의 대화처럼)을 진술해야 하는 경우, 제목은 없어도 됩니다.</li>
 <li><b>콘텐츠 영역</b>
   <p>이것은 메시지, 목록 또는 다른 사용자 지정 레이아웃을 표시할 수 있습니다.</p></li>
@@ -202,7 +202,7 @@
 AlertDialog dialog = builder.create();
 </pre>
 
-<p>다음 주제는 
+<p>다음 주제는
 {@link android.app.AlertDialog.Builder} 클래스를 사용하여 다양한 대화 속성을 정의하는 방법을 나타낸 것입니다.</p>
 
 
@@ -210,8 +210,8 @@
 
 <h3 id="AddingButtons">버튼 추가</h3>
 
-<p>그림 2에 표시된 것과 같은 작업 버튼을 추가하려면 
-{@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} 및 
+<p>그림 2에 표시된 것과 같은 작업 버튼을 추가하려면
+{@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} 및
 {@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} 메서드를 호출하면 됩니다.</p>
 
 <pre style="clear:right">
@@ -235,8 +235,8 @@
 </pre>
 
 <p><code>set...Button()</code> 메서드에는 버튼의 제목이 필요하고(
-<a href="{@docRoot}guide/topics/resources/string-resource.html">문자열 리소스</a>가 제공), 사용자가 버튼을 눌렀을 때 수행할 작업을 정의하는 
-{@link android.content.DialogInterface.OnClickListener}가 
+<a href="{@docRoot}guide/topics/resources/string-resource.html">문자열 리소스</a>가 제공), 사용자가 버튼을 눌렀을 때 수행할 작업을 정의하는
+{@link android.content.DialogInterface.OnClickListener}가
 필요합니다.</p>
 
 <p>추가할 수 있는 작업 버튼은 다음과 같은 세 가지가 있습니다.</p>
@@ -246,9 +246,9 @@
   <dt>부정적</dt>
   <dd>이것은 작업을 취소하는 데 사용해야 합니다.</dd>
   <dt>중립적</dt>
-  <dd>이것은 사용자가 작업을 계속하고 싶지 않을 수 있지만 
+  <dd>이것은 사용자가 작업을 계속하고 싶지 않을 수 있지만
 취소하고자 한다고 볼 수 없을 때 사용해야 합니다. 이것은 긍정적 버튼과 부정적 버튼 사이에 나타납니다.
- 이런 작업을 예로 들면 "나중에 알림" 등이 있습니다.</dd> 
+ 이런 작업을 예로 들면 "나중에 알림" 등이 있습니다.</dd>
 </dl>
 
 <p>{@link
@@ -271,7 +271,7 @@
 <li>영구적인 다중 선택 목록(확인란)</li>
 </ul>
 
-<p>그림 3에 표시된 것과 같은 단일 선택 목록을 생성하려면 
+<p>그림 3에 표시된 것과 같은 단일 선택 목록을 생성하려면
 {@link android.app.AlertDialog.Builder#setItems setItems()} 메서드를 사용하면 됩니다.</p>
 
 <pre style="clear:right">
@@ -289,23 +289,23 @@
 }
 </pre>
 
-<p>목록은 대화의 콘텐츠 영역에 나타나므로, 
-대화는 메시지와 목록을 둘 다 표시할 수 없습니다. 대화에는 
-{@link android.app.AlertDialog.Builder#setTitle setTitle()}로 제목을 설정해야 합니다. 
+<p>목록은 대화의 콘텐츠 영역에 나타나므로,
+대화는 메시지와 목록을 둘 다 표시할 수 없습니다. 대화에는
+{@link android.app.AlertDialog.Builder#setTitle setTitle()}로 제목을 설정해야 합니다.
 목록에 대한 항목을 지정하려면 {@link
 android.app.AlertDialog.Builder#setItems setItems()}를 호출하여 배열을 하나 전달합니다.
 아니면 {@link
-android.app.AlertDialog.Builder#setAdapter setAdapter()}를 사용하여 목록을 지정해도 됩니다. 이렇게 하면 동적인 데이터가 있는 목록(예: 데이터베이스에서 가져온 것)을 
+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">어댑터로 레이아웃 
+<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 class="note"><strong>참고:</strong> 기본적으로 목록 항목을 터치하면 대화를 무시하게 됩니다.
 다만 다음과 같은 영구적인 선택 목록 중 하나를 사용하는 경우는 예외입니다.</p>
 
 <div class="figure" style="width:290px;margin:-30px 0 0 40px">
@@ -317,15 +317,15 @@
 
 <h4 id="Checkboxes">영구적 다중 선택 또는 단일 선택 목록 추가</h4>
 
-<p>다중 선택 항목 목록을 추가하거나(확인란) 
-단일 선택 목록을 추가하려면(무선 버튼), 각각 
+<p>다중 선택 항목 목록을 추가하거나(확인란)
+단일 선택 목록을 추가하려면(무선 버튼), 각각
 {@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 또는 
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 또는
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} 메서드를 사용합니다.</p>
 
-<p>예를 들어 다음은 그림 4에 표시된 것과 같이 다중 선택 목록을 생성하는 방법입니다. 
-이것은 선택한 항목을 
+<p>예를 들어 다음은 그림 4에 표시된 것과 같이 다중 선택 목록을 생성하는 방법입니다.
+이것은 선택한 항목을
 {@link java.util.ArrayList}에 저장합니다.</p>
 
 <pre style="clear:right">
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -371,11 +371,11 @@
 }
 </pre>
 
-<p>일반적인 목록과 무선 버튼이 있는 목록 양쪽 모두 "단일 선택" 작업을 
+<p>일반적인 목록과 무선 버튼이 있는 목록 양쪽 모두 "단일 선택" 작업을
 제공하지만, 사용자의 선택을 유지하고자 하는 경우 {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
-setSingleChoiceItems()}를 사용해야 합니다. 
-다시 말해, 대화를 나중에 다시 여는 경우 사용자의 현재 선택이 무엇인지 나타내야 하며, 
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
+setSingleChoiceItems()}를 사용해야 합니다.
+다시 말해, 대화를 나중에 다시 여는 경우 사용자의 현재 선택이 무엇인지 나타내야 하며,
 그러면 무선 버튼으로 목록을 생성할 수 있습니다.</p>
 
 
@@ -389,12 +389,12 @@
 <p class="img-caption"><strong>그림 5.</strong> 사용자 지정 대화 레이아웃입니다.</p>
 </div>
 
-<p>대화에서 사용자 지정 레이아웃을 원하는 경우, 레이아웃을 생성한 다음 이를 
+<p>대화에서 사용자 지정 레이아웃을 원하는 경우, 레이아웃을 생성한 다음 이를
 {@link android.app.AlertDialog}에 추가하면 됩니다. 이때 {@link
 android.app.AlertDialog.Builder#setView setView()} on your {@link
 android.app.AlertDialog.Builder} 객체를 호출하는 방법을 씁니다.</p>
 
-<p>기본적으로 사용자 지정 레이아웃이 대화창을 가득 채우지만, 여전히 
+<p>기본적으로 사용자 지정 레이아웃이 대화창을 가득 채우지만, 여전히
 {@link android.app.AlertDialog.Builder} 메서드를 사용하여 버튼과 제목을 추가할 수 있습니다.</p>
 
 <p>예를 들어 다음은 그림 5에 표시된 대화에 대한 레이아웃 파일입니다.</p>
@@ -437,14 +437,14 @@
 </pre>
 
 <p class="note"><strong>팁:</strong> 기본적으로 {@link android.widget.EditText}
- 요소를 설정하여 {@code "textPassword"} 입력 유형을 사용하고자 하는 경우, 글꼴 패밀리가 고정 폭으로 설정되어 있으므로 
-글꼴 패밀리를 {@code "sans-serif"}로 변경해야 합니다. 그래야 양쪽 텍스트 필드가 모두 일치하는 글꼴 스타일을 
+ 요소를 설정하여 {@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()}를 호출합니다. 
+<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>
@@ -470,16 +470,16 @@
                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}를 대신 표시해도 됩니다. 이는 
+<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> 매니페스트 요소에 있는 
+&lt;activity&gt;}</a> 매니페스트 요소에 있는
 {@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}로
  설정하면 됩니다.</p>
 
@@ -493,19 +493,19 @@
 
 <h2 id="PassingEvents">이벤트를 대화의 호스트에 다시 전달</h2>
 
-<p>사용자가 대화의 작업 버튼 중 하나를 터치하거나 목록에서 항목을 하나 선택하면, 
-{@link android.support.v4.app.DialogFragment}가 
+<p>사용자가 대화의 작업 버튼 중 하나를 터치하거나 목록에서 항목을 하나 선택하면,
+{@link android.support.v4.app.DialogFragment}가
 필요한 작업을 알아서 수행할 수도 있지만 대부분의 경우 이벤트를 대화를 연 액티비티 또는 프래그먼트에 직접 전달하고자 할 수 있습니다.
- 이렇게 하려면 각 클릭 이벤트의 유형별로 메서드가 있는 인터페이스를 정의합니다. 
- 그런 다음 해당 인터페이스를 대화로부터 작업 이벤트를 수신할 
+ 이렇게 하려면 각 클릭 이벤트의 유형별로 메서드가 있는 인터페이스를 정의합니다.
+ 그런 다음 해당 인터페이스를 대화로부터 작업 이벤트를 수신할
 호스트 구성 요소에 구현하면 됩니다.</p>
 
-<p>예를 들어 다음은 인터페이스를 정의하는 {@link android.support.v4.app.DialogFragment}입니다. 
+<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. */
@@ -513,10 +513,10 @@
         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) {
@@ -535,15 +535,15 @@
 }
 </pre>
 
-<p>대화를 호스팅하는 액티비티는 대화의 인스턴스를 만듭니다. 
-이때 대화 프래그먼트의 생성자를 사용하며, 
+<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();
@@ -568,8 +568,8 @@
 </pre>
 
 <p>액티비티가 {@code NoticeDialogListener}를 구현하기 때문에&mdash;위에 표시된 {@link android.support.v4.app.Fragment#onAttach onAttach()}
- 콜백 메서드가 강제 적용&mdash;해당 대화 프래그먼트는 
-인터페이스 콜백 메서드를 사용하여 액티비티에 대한 클릭 이벤트를 
+ 콜백 메서드가 강제 적용&mdash;해당 대화 프래그먼트는
+인터페이스 콜백 메서드를 사용하여 액티비티에 대한 클릭 이벤트를
 전달할 수 있습니다.</p>
 
 <pre>
@@ -604,11 +604,11 @@
 
 <p>대화를 표시하고자 하는 경우, {@link
 android.support.v4.app.DialogFragment}의 인스턴스를 생성한 다음 {@link android.support.v4.app.DialogFragment#show
-show()}를 호출하여 {@link android.support.v4.app.FragmentManager}와 대화 프래그먼트에 대한 
+show()}를 호출하여 {@link android.support.v4.app.FragmentManager}와 대화 프래그먼트에 대한
 태그 이름을 전달합니다.</p>
 
-<p>{@link android.support.v4.app.FragmentManager}를 가져오려면 
-{@link android.support.v4.app.FragmentActivity}에서 
+<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>
@@ -620,7 +620,7 @@
 }
 </pre>
 
-<p>두 번째 인수 {@code "missiles"}는 시스템이 
+<p>두 번째 인수 {@code "missiles"}는 시스템이
 필요에 따라 프래그먼트의 상태를 저장하고 복원하는 데 사용하는 고유한 태그 이름입니다. 이 태그를 사용하면 {@link android.support.v4.app.FragmentManager#findFragmentByTag
 findFragmentByTag()}를 호출하여 해당 프래그먼트를 파악할 수도 있습니다.
 </p>
@@ -630,20 +630,20 @@
 
 <h2 id="FullscreenDialog">대화를 전체 화면으로 또는 포함된 프래그먼트로 표시</h2>
 
-<p>UI 디자인에서, 몇몇 상황 하에서는 UI의 한 조각을 대화로 나타내지만 
-다른 상황에서는 전체 화면이나 포함된 프래그먼트로 나타내고자 하는 경우가 있을 수 
+<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.app.Dialog} 객체를 사용하면 안 됩니다.
+{@link android.support.v4.app.DialogFragment}를 포함 가능한 상태로 만들려면,
+레이아웃 안에 있는 대화의 UI를 정의해야 합니다. 그런 다음 레이아웃을
 {@link android.support.v4.app.DialogFragment#onCreateView
 onCreateView()} 콜백에 로딩합니다.</p>
 
-<p>다음은 대화 또는 포함 가능한 프래그먼트 중 어느 쪽으로든 표시될 수 있는 
+<p>다음은 대화 또는 포함 가능한 프래그먼트 중 어느 쪽으로든 표시될 수 있는
 {@link android.support.v4.app.DialogFragment} 예시입니다(<code>purchase_items.xml</code>이라는 레이아웃 사용).</p>
 
 <pre>
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
@@ -695,14 +695,14 @@
 }
 </pre>
 
-<p>프래그먼트 트랜잭션을 수행하는 것에 대한 자세한 내용은 
+<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> 값으로 선언하는 것입니다. 
+여러 가지 화면 크기에 대한 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">대체 리소스</a> 값으로 선언하는 것입니다.
 예를 들어 다음은 여러 가지 화면 크기에 대한 두 가지 버전의 부울 리소스입니다.</p>
 
 <p class="code-caption">res/values/bools.xml</p>
@@ -721,7 +721,7 @@
 &lt;/resources>
 </pre>
 
-<p>그러면 액티비티의 
+<p>그러면 액티비티의
 {@link android.app.Activity#onCreate onCreate()} 메서드 중에 {@code mIsLargeLayout} 값을 초기화할 수 있습니다.</p>
 
 <pre>
@@ -740,14 +740,14 @@
 
 <h3 id="ActivityAsDialog">액티비티를 큰 화면에 대화로 표시</h3>
 
-<p>작은 화면의 경우 대화를 전체 화면 UI로 표시하는 대신, 큰 화면에 있을 때에는 
+<p>작은 화면의 경우 대화를 전체 화면 UI로 표시하는 대신, 큰 화면에 있을 때에는
 {@link android.app.Activity}를 대화로 표시함으로써 같은 결과를 얻을 수 있습니다.
- 어느 방식을 사용할 것인지는 앱 디자인에 따라 달라지지만, 
-액티비티를 대화로 표시하면 앱이 이미 작은 화면용으로 디자인된 상태에서 
-태블릿에서의 환경을 개선하기 위해 일시적인 액티비티를 대화로 표시하는 경우 
+ 어느 방식을 사용할 것인지는 앱 디자인에 따라 달라지지만,
+액티비티를 대화로 표시하면 앱이 이미 작은 화면용으로 디자인된 상태에서
+태블릿에서의 환경을 개선하기 위해 일시적인 액티비티를 대화로 표시하는 경우
 유용할 때가 많습니다.</p>
 
-<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>
@@ -762,11 +762,11 @@
 
 <h2 id="DismissingADialog">대화 무시</h2>
 
-<p>사용자가 
+<p>사용자가
 {@link android.app.AlertDialog.Builder}로 생성한 작업 버튼 중 하나라도 터치하면 시스템이 대화를 대신 무시합니다.</p>
 
-<p>시스템은 사용자가 대화 목록에서 항목을 터치하는 경우에도 대화를 무시합니다. 
-다만 목록이 무선 버튼이나 확인란을 사용하는 경우에는 예외입니다. 
+<p>시스템은 사용자가 대화 목록에서 항목을 터치하는 경우에도 대화를 무시합니다.
+다만 목록이 무선 버튼이나 확인란을 사용하는 경우에는 예외입니다.
 그렇지 않으면 대화를 수동으로 무시할 수도 있습니다. {@link
 android.support.v4.app.DialogFragment}에서 {@link android.support.v4.app.DialogFragment#dismiss()}를 호출하면 됩니다.</p>
 
@@ -775,24 +775,24 @@
 android.support.v4.app.DialogFragment}에서 @link
 android.support.v4.app.DialogFragment#onDismiss onDismiss()}를 구현하면 됩니다.</p>
 
-<p>또한 대화를 <em>취소</em>할 수도 있습니다. 이것은 사용자가 작업을 완료하지 않고 대화를 
-분명히 떠났다는 것을 나타내는 특수 이벤트입니다. 이것은 사용자가 
-<em>뒤로</em> 버튼을 누르거나 대화 영역 바깥의 화면을 터치하거나, 
+<p>또한 대화를 <em>취소</em>할 수도 있습니다. 이것은 사용자가 작업을 완료하지 않고 대화를
+분명히 떠났다는 것을 나타내는 특수 이벤트입니다. 이것은 사용자가
+<em>뒤로</em> 버튼을 누르거나 대화 영역 바깥의 화면을 터치하거나,
 개발자가 {@link
 android.app.Dialog}에서 명시적으로 {@link android.app.Dialog#cancel()}을 호출한 경우 발생합니다(예: 대화의 "취소" 버튼에 대한 응답으로).</p>
 
 <p>위의 예시에 나타난 바와 같이 취소 이벤트에 응답하려면 {@link
-android.support.v4.app.DialogFragment} 클래스에서 
+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()}를 호출합니다. 
+<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()}를 
+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
index c115c2a..924445d 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
@@ -72,7 +72,7 @@
 <dl>
   <dt><strong>옵션 메뉴 및 작업 모음</strong></dt>
     <dd><a href="#options-menu">옵션 메뉴</a>는 액티비티에 대한 기본 메뉴 항목 컬렉션
-입니다. 
+입니다.
 이곳에 "검색", "이메일 작성" 및 "설정"과 같이 앱에 전체적인 영향을 미치는 작업을 배치해야 합니다.
   <p>Android 2.3 이하를 대상으로 개발하는 경우 사용자는
 <em>메뉴</em> 버튼을 눌러서 옵션 메뉴 패널을 표시할 수 있습니다.</p>
@@ -83,9 +83,9 @@
 사용하기 시작해야 합니다.</p>
   <p><a href="#options-menu">옵션 메뉴 만들기</a> 섹션을 참조하십시오.</p>
     </dd>
-    
+
   <dt><strong>컨텍스트 메뉴 및 상황별 작업 모드</strong></dt>
-  
+
    <dd>컨텍스트 메뉴는 사용자가 요소를 길게 클릭하면 나타나는 <a href="#FloatingContextMenu">부동 메뉴</a>
 입니다. 이것은 선택한 콘텐츠나 컨텍스트 프레임에
 영향을 주는 작업을 제공합니다.
@@ -94,7 +94,7 @@
 여러 항목을 선택할 수 있습니다.</p>
   <p><a href="#context-menu">상황별 메뉴 만들기</a>에 관한 섹션을 참조하십시오.</p>
 </dd>
-    
+
   <dt><strong>팝업 메뉴</strong></dt>
     <dd>팝업 메뉴는 메뉴를 호출하는 보기에 고정된 수직 목록에서 항목 목록을
 표시합니다. 이것은 정 콘텐츠와 관련이 되는 작업의 오버플로를 제공하거나
@@ -112,7 +112,7 @@
 
 <p>모든 메뉴 유형에 대하여, Android는 표준 XML 형식으로 메뉴 항목을 정의합니다.
 액티비티 코드에서 메뉴를 구축하는 대신
-XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>에서 메뉴와 모든 항목을 정의해야 합니다. 그러면 
+XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>에서 메뉴와 모든 항목을 정의해야 합니다. 그러면
 액티비티나 프래그먼트에서 메뉴 리소스를 팽창시킬 수 있습니다({@link android.view.Menu} 개체로 로딩하면 됩니다).
 </p>
 
@@ -128,17 +128,17 @@
 디렉터리에서 XML 파일을 생성하고 다음 요소로 메뉴를 구축합니다.</p>
 <dl>
   <dt><code>&lt;menu></code></dt>
-    <dd>메뉴 항목의 컨테이너인 {@link android.view.Menu}를 정의합니다. 
+    <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}을 생성합니다. 
+    <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>
 
@@ -207,7 +207,7 @@
 
 <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 class="img-caption"><strong>그림 1.</strong> Android 2.3에서 실행되는
 브라우저의 옵션 메뉴입니다.</p>
 </div>
 
@@ -220,21 +220,21 @@
 <ul>
   <li><strong>Android 2.3.x(API 레벨 10)
 이하</strong>에서 애플리케이션을 개발했을 경우,
-그림 1과 같이 사용자가 <em>메뉴</em> 버튼을 누르면 화면 아래에 옵션 메뉴의 콘텐츠가 나타납니다. 이것이 열렸을 때 가장 먼저 보이는 부분은 
+그림 1과 같이 사용자가 <em>메뉴</em> 버튼을 누르면 화면 아래에 옵션 메뉴의 콘텐츠가 나타납니다. 이것이 열렸을 때 가장 먼저 보이는 부분은
 아이콘
-메뉴이고, 이는 최대 여섯 개의 메뉴 항목을 보유합니다. 메뉴에 여섯 개를 넘는 항목이 포함되어 있는 경우, Android는 
-여섯 번째 항목과 나머지 항목을 더보기 메뉴에 배치합니다. 이것은 사용자가 
+메뉴이고, 이는 최대 여섯 개의 메뉴 항목을 보유합니다. 메뉴에 여섯 개를 넘는 항목이 포함되어 있는 경우, Android는
+여섯 번째 항목과 나머지 항목을 더보기 메뉴에 배치합니다. 이것은 사용자가
 <em>더보기</em>를 선택하면 열 수 있습니다.</li>
 
   <li><strong>Android 3.0(API 레벨 11)
 이상</strong>에서 애플리케이션을 개발했을 경우, 옵션 메뉴의 항목은 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>에서 이용할 수 있습니다. 기본적으로 시스템은 모든 항목을 작업 더보기에 배치합니다.
 사용자는 작업 모음 오른쪽에 있는
-작업 더보기 아이콘으로 이를 표시할 수 있습니다(또는 이용할 수 있을 경우 기기 <em>메뉴</em> 버튼을 누르면 됩니다). 
+작업 더보기 아이콘으로 이를 표시할 수 있습니다(또는 이용할 수 있을 경우 기기 <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> 
+<p class="note"><strong>참고:</strong> Andoid 3.0 이상을 대상으로 개발하지 <em>않더라도</em>
 개발자 나름의 작업 모음 레이아웃을 구축하여 비슷한 효과를 낼 수 있습니다. 예를 들어,
 작업 모음이 포함된 Android 이전 버전을 지원하는 방법은 <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">작업 모음 호환성</a>
 샘플을 참조하십시오.</p>
@@ -247,13 +247,13 @@
 
 <p>{@link android.app.Activity}
 하위 클래스나 {@link android.app.Fragment} 하위 클래스에서 옵션 메뉴용 항목을 선언할 수 있습니다. 액티비티와 프래그먼트가 모두
-옵션 메뉴용 항목을 선언할 경우, 이들은 UI에서 조합됩니다. 액티비티의 항목이 먼저 나타나고, 
-뒤이어 각 프래그먼트의 항목이 나타나며 이때 순서는 각 프래그먼트가 액티비티에 추가된 순서를 
+옵션 메뉴용 항목을 선언할 경우, 이들은 UI에서 조합됩니다. 액티비티의 항목이 먼저 나타나고,
+뒤이어 각 프래그먼트의 항목이 나타나며 이때 순서는 각 프래그먼트가 액티비티에 추가된 순서를
 따릅니다. 필요한 경우 이동해야 하는 각 {@code &lt;item&gt;}에서{@code android:orderInCategory} 속성이 포함된
 메뉴 항목을 다시 정렬할 수 있습니다.</p>
 
 <p>액티비티에 대한 옵션 메뉴를 지정하려면 {@link
-android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를 재정의합니다(프래그먼트는 
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를 재정의합니다(프래그먼트는
 자신만의 {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} 콜백을 제공합니다). 이 메서드에서
 (<a href="#xml">XML에서 정의된</a>) 메뉴 리소스를 콜백에서 제공된 {@link
 android.view.Menu}로 팽창할 수 있습니다. 예:</p>
@@ -283,7 +283,7 @@
 
 <p>사용자가 옵션 메뉴에서 항목을 선택하면(작업 모음의 작업 항목 포함),
 시스템이 액티비티의 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
-onOptionsItemSelected()} 메서드를 호출합니다. 이 메서드가 선택한 {@link android.view.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와
@@ -317,7 +317,7 @@
 {@code true}를 반환하거나 모든 프래그먼트가 호출될 때까지 (각 프래그먼트가 추가된 순서대로) 각 프래그먼트에 대해 해당 메서드를 호출합니다.</p>
 
 <p class="note"><strong>팁:</strong> Android 3.0에는
-{@code android:onClick} 속성을 사용하여 XML에 있는 메뉴 항목에 대한 온-클릭 동작을 정의하는 기능이 추가됩니다. 
+{@code android:onClick} 속성을 사용하여 XML에 있는 메뉴 항목에 대한 온-클릭 동작을 정의하는 기능이 추가됩니다.
 속성 값은 메뉴를 사용하여 액티비티가 정의한 메서드의 이름이어야 합니다. 메서드는
 공개여야 하며 하나의 {@link android.view.MenuItem} 매개변수를 수락해야 합니다. 시스템이 이 메서드를 호출하면
 메서드가 선택한 메뉴 항목을 전달합니다. 자세한 정보와 예시는 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a> 문서를 참조하십시오.</p>
@@ -326,14 +326,14 @@
 
 {@link android.app.Activity#onCreateOptionsMenu(Menu)
 onCreateOptionsMenu()}와 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
-onOptionsItemSelected()} 메서드를 제외하고 아무것도 구현하지 않는 액티비티를 만드는 것을 고려해보십시오. 그런 다음 이 클래스를 같은 옵션 메뉴를 공유해야 하는 각 액티비티에 대해 
+onOptionsItemSelected()} 메서드를 제외하고 아무것도 구현하지 않는 액티비티를 만드는 것을 고려해보십시오. 그런 다음 이 클래스를 같은 옵션 메뉴를 공유해야 하는 각 액티비티에 대해
 확장하면 됩니다. 이렇게 하면 메뉴 작업을 처리하는 코드 세트 하나를 관리할 수 있고,
 각 하위 클래스가 메뉴 동작을 상속합니다.
 이런 하위 액티비티 중 하나에 메뉴 항목을 추가하려면,
 해당 액티비티에서 {@link android.app.Activity#onCreateOptionsMenu(Menu)
 onCreateOptionsMenu()}를 재정의하십시오. {@code super.onCreateOptionsMenu(menu)}를 호출하여
 원래 메뉴 항목을 생성하고, {@link
-android.view.Menu#add(int,int,int,int) menu.add()}이 포함된 새로운 메뉴 항목을 추가합니다. 각각의 메뉴 항목에 대한 슈퍼클래스의 동작을 
+android.view.Menu#add(int,int,int,int) menu.add()}이 포함된 새로운 메뉴 항목을 추가합니다. 각각의 메뉴 항목에 대한 슈퍼클래스의 동작을
 재정의할 수도 있습니다.</p>
 
 
@@ -363,10 +363,10 @@
 {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()}를 호출하여
 시스템이 {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}를 호출하도록 요청해야 합니다.</p>
 
-<p class="note"><strong>참고:</strong> 
-현재 초점이 맞춰져 있는 {@link android.view.View}를 기반으로 한 
-옵션 메뉴의 항목을 절대로 변경해서는 안 됩니다. 터치 모드에서는(사용자가 트랙볼이나 d-패드를 사용하지 않는 경우), 
-보기가 초점을 취할 수 없으므로 옵션 메뉴에 있는 항목을 수정할 
+<p class="note"><strong>참고:</strong>
+현재 초점이 맞춰져 있는 {@link android.view.View}를 기반으로 한
+옵션 메뉴의 항목을 절대로 변경해서는 안 됩니다. 터치 모드에서는(사용자가 트랙볼이나 d-패드를 사용하지 않는 경우),
+보기가 초점을 취할 수 없으므로 옵션 메뉴에 있는 항목을 수정할
 근거로 초점을 사용해서는 결코 안 됩니다. {@link
 android.view.View}의 컨텍스트에 민감한 메뉴를 제공하고자 하는 경우, <a href="#context-menu">컨텍스트 메뉴</a>를 사용하십시오.</p>
 
@@ -390,18 +390,18 @@
 <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 이하의 버전을 지원할 경우 해당 기기에서는 
+ 앱이 3.0 이하의 버전을 지원할 경우 해당 기기에서는
 부동 컨텍스트 메뉴로 돌아가야 합니다.</p>
 
 
@@ -409,8 +409,8 @@
 
 <p>부동 컨텍스트 메뉴를 제공하려면 다음과 같이 합니다.</p>
 <ol>
-  <li>컨텍스트 메뉴가 연관되어야 하는 {@link android.view.View}를 등록합니다. 그러려면 
-{@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()}를 호출하고 여기에 
+  <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}를 사용하고
 각 항목이 같은 컨텍스트 메뉴를 제공하게 하고 싶을 경우,
@@ -419,7 +419,7 @@
 </li>
 
   <li>{@link android.app.Activity}나 {@link android.app.Fragment}에서 {@link
-android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 메서드를 
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 메서드를
 구현합니다.
   <p>등록된 보기가 롱-클릭 이벤트를 수신하면, 시스템이 {@link
 android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
@@ -437,9 +437,9 @@
 
 <p>{@link android.view.MenuInflater}를 사용하면 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>에서 컨텍스트 메뉴를 팽창하게 해줍니다. 콜백 메서드
 매개변수에는 사용자가 선택한 {@link android.view.View}와
-선택한 항목에 대한 추가 정보를 제공하는 {@link android.view.ContextMenu.ContextMenuInfo} 객체가 
-포함됩니다. 액티비티에 여러 개의 보기가 있고 이들이 각각 서로 다른 컨텍스트 메뉴를 제공하는 경우, 
-이와 같은 매개변수를 사용하여 팽창할 컨텍스트 메뉴가 무엇인지 
+선택한 항목에 대한 추가 정보를 제공하는 {@link android.view.ContextMenu.ContextMenuInfo} 객체가
+포함됩니다. 액티비티에 여러 개의 보기가 있고 이들이 각각 서로 다른 컨텍스트 메뉴를 제공하는 경우,
+이와 같은 매개변수를 사용하여 팽창할 컨텍스트 메뉴가 무엇인지
 판별할 수 있습니다.</p>
 </li>
 
@@ -470,8 +470,8 @@
 XML에서 메뉴 정의</a> 섹션에 나타난 바와 같이 {@code
 android:id} 속성을 사용하여 XML의 각 메뉴 항목에 이를 할당해야 합니다.</p>
 
-<p>메뉴 항목을 성공적으로 처리하면 {@code true}를 반환합니다. 메뉴 항목을 처리하지 않는 경우, 
-해당 메뉴 항목을 슈퍼클래스 구현에 전달해야 합니다. 액티비티에 프래그먼트가 포함되어 있는 경우 
+<p>메뉴 항목을 성공적으로 처리하면 {@code true}를 반환합니다. 메뉴 항목을 처리하지 않는 경우,
+해당 메뉴 항목을 슈퍼클래스 구현에 전달해야 합니다. 액티비티에 프래그먼트가 포함되어 있는 경우
 해당 액티비티가 첫 번째로 이 콜백을 수신합니다. 처리되지 않을 때 슈퍼클래스를 호출하면 시스템이
 이벤트를 각 프래그먼트의 각 콜백 메서드에 전달합니다.
 {@code true} 또는 {@code false}가 반환될 때까지 (각 프래그먼트가 추가된 순서대로) 한 번에 하나씩 전달됩니다 (
@@ -484,7 +484,7 @@
 <h3 id="CAB">상황별 동작 모드 사용</h3>
 
 <p>상황별 작업 모드는 사용자 상호 작용을 컨텍스트 작업 수행에 집중시키는 {@link android.view.ActionMode}의
-시스템 구현입니다. 사용자가 항목을 선택하여 
+시스템 구현입니다. 사용자가 항목을 선택하여
 이 모드를 활성화하면, <em>상황별 작업 모음</em>이 화면 위에 나타나서
 사용자가 현재 선택된 항목에서 수행할 수 있는 작업을 표시합니다. 이 모드가
 활성화되면 사용자는 여러 항목을 선택하고(개발자가 이를 허용하는 경우), 항목을 선택 해제하고, 액티비티 내에서
@@ -492,15 +492,15 @@
 
 작업 모음 왼쪽의 <em>완료</em> 작업을 누르면 작업 모드가 비활성화되고 상황별 작업 모음이 사라집니다.</p>
 
-<p class="note"><strong>참고:</strong> 상황별 작업 모음이 
-반드시 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>과 연관되어 있는 것은 아닙니다. 이들은 서로 
-독립적으로 작동합니다. 이는 겉으로 보기에는 상황별 작업 모음이 작업 모음의 위치를 능가하는 것으로 
+<p class="note"><strong>참고:</strong> 상황별 작업 모음이
+반드시 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>과 연관되어 있는 것은 아닙니다. 이들은 서로
+독립적으로 작동합니다. 이는 겉으로 보기에는 상황별 작업 모음이 작업 모음의 위치를 능가하는 것으로
 보이더라도 적용됩니다.</p>
 
-<p>Android 3.0 (API level 11) 이상을 대상으로 개발하는 경우, 
+<p>Android 3.0 (API level 11) 이상을 대상으로 개발하는 경우,
 일반적으로 상황별 작업 모드를 사용하여 <a href="#FloatingContextMenu">부동 컨텍스트 메뉴</a>가 아닌 상황별 작업을 표시합니다.</p>
 
-<p>상황별 작업을 제공하는 보기의 경우, 일반적으로 두 이벤트 중 하나(또는 두 가지 모두)에서 상황별 작업 모드를 
+<p>상황별 작업을 제공하는 보기의 경우, 일반적으로 두 이벤트 중 하나(또는 두 가지 모두)에서 상황별 작업 모드를
 호출해야 합니다.</p>
 <ul>
   <li>사용자가 보기에서 롱-클릭을 수행합니다.</li>
@@ -521,11 +521,11 @@
 
 <h4 id="CABforViews">각각의 보기에 대한 상황별 작업 모드의 활성화</h4>
 
-<p>사용자가 특정 보기를 선택했을 때만 상황별 작업 모드를 호출하고자 하는 경우 
+<p>사용자가 특정 보기를 선택했을 때만 상황별 작업 모드를 호출하고자 하는 경우
 다음과 같이 해야 합니다.</p>
 <ol>
-  <li>{@link android.view.ActionMode.Callback} 인터페이스를 구현합니다. 콜백 메서드에서 
-상황별 작업 모음의 작업을 지정하고, 작업 항목에 대한 클릭 이벤트에 응답하고, 작업 모드에 대한 
+  <li>{@link android.view.ActionMode.Callback} 인터페이스를 구현합니다. 콜백 메서드에서
+상황별 작업 모음의 작업을 지정하고, 작업 항목에 대한 클릭 이벤트에 응답하고, 작업 모드에 대한
 다른 수명 주기 이벤트를 처리합니다.</li>
   <li>모음을 표시하고자 하는 경우{@link android.app.Activity#startActionMode startActionMode()}를 호출합니다
 (사용자가 보기를 롱-클릭하는 경우).</li>
@@ -579,11 +579,11 @@
 android.view.ActionMode} 객체를 전달합니다. {@link
 android.view.ActionMode} API를 사용하여
 {@link android.view.ActionMode#setTitle setTitle()}과 {@link
-android.view.ActionMode#setSubtitle setSubtitle()}이 포함된 제목과 하위 제목을 수정하는 등과 같이 CAB를 다양하게 변경합니다(몇 개의 
+android.view.ActionMode#setSubtitle setSubtitle()}이 포함된 제목과 하위 제목을 수정하는 등과 같이 CAB를 다양하게 변경합니다(몇 개의
 항목이 선택되었는지 나타낼 때 유용합니다).</p>
 
 <p>또한, 위 샘플은 작업 모드가 소멸될 때 {@code mActionMode} 변수를 null로
-설정한다는 점도 유의하십시오. 다음 단계에서는 액티비티나 프래그먼트의 구성원 변수를 초기화하고 저장하는 방법을 
+설정한다는 점도 유의하십시오. 다음 단계에서는 액티비티나 프래그먼트의 구성원 변수를 초기화하고 저장하는 방법을
 볼 수 있습니다.</p>
 </li>
 
@@ -608,10 +608,10 @@
 </pre>
 
 <p>{@link android.app.Activity#startActionMode startActionMode()}를 호출하면 시스템이
-생성된 {@link android.view.ActionMode}를 반환합니다. 이것을 구성원 변수에 저장하면 
+생성된 {@link android.view.ActionMode}를 반환합니다. 이것을 구성원 변수에 저장하면
 다른 이벤트에 대한 응답으로 상황별 작업 모음을 변경할 수 있습니다. 위 샘플에서
 {@link android.view.ActionMode}를 사용하여 {@link android.view.ActionMode} 인스턴스가 이미 활성화되었을 경우
-작업 모드를 시작하기 전에 구성원이 null인지 여부를 점검하여 
+작업 모드를 시작하기 전에 구성원이 null인지 여부를 점검하여
 해당 인스턴스가 재생성되지 않게 합니다.</p>
 </li>
 </ol>
@@ -621,13 +621,13 @@
 <h4 id="CABforListView">ListView 또는 GridView에서 일괄 상황별 작업 활성화</h4>
 
 <p>{@link android.widget.ListView} 또는 {@link
-android.widget.GridView}(또는 {@link android.widget.AbsListView}의 또 다른 확장)에 항목 컬렉션이 있고 
+android.widget.GridView}(또는 {@link android.widget.AbsListView}의 또 다른 확장)에 항목 컬렉션이 있고
 사용자가 일괄 작업을 수행하도록 허용하려면 다음과 같이 해야 합니다.</p>
 
 <ul>
-  <li>{@link android.widget.AbsListView.MultiChoiceModeListener} 인터페이스를 구현하고 이를 
+  <li>{@link android.widget.AbsListView.MultiChoiceModeListener} 인터페이스를 구현하고 이를
 {@link android.widget.AbsListView#setMultiChoiceModeListener
-setMultiChoiceModeListener()}가 있는 보기 그룹에 대해 설정합니다. 수신기 콜백 메서드에서 상황별 작업 모음에 대한 
+setMultiChoiceModeListener()}가 있는 보기 그룹에 대해 설정합니다. 수신기 콜백 메서드에서 상황별 작업 모음에 대한
 작업을 지정하고, 작업 항목에 대한 클릭 이벤트에 대응하고,
 {@link android.view.ActionMode.Callback} 인터페이스에서 상속한 다른 콜백을 처리할 수 있습니다.</li>
 
@@ -690,10 +690,10 @@
 메서드를 호출하고 지정된 작업으로 상황별 작업 모음을 표시합니다. 상황별 작업 모음이 표시되는 동안
 사용자가 추가 항목을 선택할 수 있습니다.</p>
 
-<p>상황별 작업이 공통 작업 항목을 제공하는 몇몇 경우, 
-확인란이나 그와 비슷한 UI요소를 추가하여 사용자가 항목을 선택할 수 있도록 해주는 것이 좋습니다. 
-사용자가 롱-클릭 동작을 발견하지 못할 수도 있기 때문입니다. 사용자가 확인란을 선택하면 
-{@link android.widget.AbsListView#setItemChecked setItemChecked()}로 
+<p>상황별 작업이 공통 작업 항목을 제공하는 몇몇 경우,
+확인란이나 그와 비슷한 UI요소를 추가하여 사용자가 항목을 선택할 수 있도록 해주는 것이 좋습니다.
+사용자가 롱-클릭 동작을 발견하지 못할 수도 있기 때문입니다. 사용자가 확인란을 선택하면
+{@link android.widget.AbsListView#setItemChecked setItemChecked()}로
 확인된 상태에 각 목록 항목을 설정하여 상황별 작업 모드를 호출할 수 있습니다.</p>
 
 
@@ -703,19 +703,19 @@
 
 <div class="figure" style="width:220px">
 <img src="{@docRoot}images/ui/popupmenu.png" alt="" />
-<p><strong>그림 4.</strong> Gmail 앱의 팝업 메뉴는 오른쪽 위에 있는 더보기 
+<p><strong>그림 4.</strong> Gmail 앱의 팝업 메뉴는 오른쪽 위에 있는 더보기
 버튼에 고정되어 있습니다.</p>
 </div>
 
 <p>{@link android.widget.PopupMenu}는 {@link android.view.View}에 고정된 모달 메뉴입니다.
 이것은 앵커 보기 아래에 공간이 있으면 아래에, 없으면 보기 위에 나타납니다. 이것은 다음과 같은 상황에 유용합니다.</p>
 <ul>
-  <li>특정 콘텐츠와 <em>관련된</em> 작업에 대한 더보기 스타일 메뉴를 제공합니다(예: 
+  <li>특정 콘텐츠와 <em>관련된</em> 작업에 대한 더보기 스타일 메뉴를 제공합니다(예:
 그림 4의 Gmail 이메일 헤더 등).
-    <p class="note"><strong>참고:</strong> 이것은 컨텍스트 메뉴와는 다릅니다. 컨텍스트 메뉴는 
+    <p class="note"><strong>참고:</strong> 이것은 컨텍스트 메뉴와는 다릅니다. 컨텍스트 메뉴는
 일반적으로 선택된 콘텐츠에 <em>영향을 미치는</em> 작업입니다. 선택된
 콘텐츠에 영향을 미치는 작업의 경우, <a href="#CAB">상황별 작업 모드</a> 또는 <a href="#FloatingContextMenu">부동 컨텍스트 메뉴</a>를 사용하십시오.</p></li>
-  <li>명령문의 두 번째 부분을 제공합니다(예: "추가"라고 표시된 버튼으로, 
+  <li>명령문의 두 번째 부분을 제공합니다(예: "추가"라고 표시된 버튼으로,
 각기 다른 "추가" 옵션이 있는 팝업 메뉴를 발생시킵니다).</li>
   <li>영구적인 선택이 포함되지 않은 {@link android.widget.Spinner}와 유사한 드롭다운을 제공합니다.
 </li>
@@ -727,23 +727,23 @@
 
 <p><a href="#xml">XML로 메뉴를 정의</a>하는 경우, 팝업 메뉴를 표시하는 방법은 다음과 같습니다.</p>
 <ol>
-  <li>자신의 생성자로 {@link android.widget.PopupMenu}를 인스턴트화합니다. 생성자는 
-현재 애플리케이션 {@link android.content.Context} 및 {@link android.view.View}를 
+  <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 이상에서는 이 대신 
+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>예를 들어, 다음은 팝업 메뉴를 표시하는 {@link android.R.attr#onClick android:onClick} 속성이
 있는 버튼입니다.</p>
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -763,7 +763,7 @@
 <p>API 레벨 14 이상의 경우, {@link
 android.widget.PopupMenu#inflate PopupMenu.inflate()}로 메뉴를 팽창하는 두 개의 줄을 결합시킬 수 있습니다.</p>
 
-<p>사용자가 항목을 선택하거나 메뉴 영역 바깥쪽을 터치하면 이 메뉴는 
+<p>사용자가 항목을 선택하거나 메뉴 영역 바깥쪽을 터치하면 이 메뉴는
 무시됩니다. {@link
 android.widget.PopupMenu.OnDismissListener}를 사용하여 무시 이벤트를 수신 대기할 수 있습니다.</p>
 
@@ -807,7 +807,7 @@
 
 <h2 id="groups">메뉴 그룹 만들기</h2>
 
-<p>메뉴 그룹은 특정한 특성을 공유하는 메뉴 항목의 컬렉션입니다. 그룹으로 다음과 같은 작업을 
+<p>메뉴 그룹은 특정한 특성을 공유하는 메뉴 항목의 컬렉션입니다. 그룹으로 다음과 같은 작업을
 할 수 있습니다.</p>
 <ul>
   <li>{@link android.view.Menu#setGroupVisible(int,boolean)
@@ -840,11 +840,11 @@
 &lt;/menu&gt;
 </pre>
 
-<p>그룹에 있는 항목은 첫 항목과 같은 레벨에서 표시됩니다. 메뉴 안에 있는 세 가지 항목은 모두 
-형제입니다. 그러나 이 그룹에 있는 항목 두 개의 특성을 개발자가 수정할 수 있습니다. 
-그룹 ID를 참조하고 위에 나령된 메서드를 사용하면 됩니다. 시스템 또한 
+<p>그룹에 있는 항목은 첫 항목과 같은 레벨에서 표시됩니다. 메뉴 안에 있는 세 가지 항목은 모두
+형제입니다. 그러나 이 그룹에 있는 항목 두 개의 특성을 개발자가 수정할 수 있습니다.
+그룹 ID를 참조하고 위에 나령된 메서드를 사용하면 됩니다. 시스템 또한
 그룹화된 항목은 절대 분리하지 않습니다. 예를 들어, 각 항목에 대해 {@code
-android:showAsAction="ifRoom"}을 선언하면, 두 가지 모두 작업 모음에 나타나거나 
+android:showAsAction="ifRoom"}을 선언하면, 두 가지 모두 작업 모음에 나타나거나
 작업 더보기에 나타납니다.</p>
 
 
@@ -852,23 +852,23 @@
 
 <div class="figure" style="width:200px">
   <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
-  <p class="img-caption"><strong>그림 5.</strong> 확인 가능한 
+  <p class="img-caption"><strong>그림 5.</strong> 확인 가능한
 항목이 있는 하위 메뉴의 스크린샷입니다.</p>
 </div>
 
-<p>메뉴는 옵션을 켜고 끄거나, 독립적 옵션에 대한 확인란으로 사용하거나, 
-상호 배타적인 옵션의 그룹에 대한 무선 버튼으로 사용하기 위한 인터페이스로 
+<p>메뉴는 옵션을 켜고 끄거나, 독립적 옵션에 대한 확인란으로 사용하거나,
+상호 배타적인 옵션의 그룹에 대한 무선 버튼으로 사용하기 위한 인터페이스로
 유용합니다. 그림 5는 무선 버튼이 있으며 확인 가능한 항목이 포함된 하위 메뉴를
 표시합니다.</p>
 
-<p class="note"><strong>참고:</strong> (옵션 메뉴의) 아이콘 메뉴의 메뉴 항목은 
-확인란이나 무선 버튼을 표시할 수 없습니다. 확인 가능한 아이콘 메뉴에서 항목을 만들기로 선택하는 경우, 
-상태가 변경될 때마다 아이콘 및/또는 텍스트를 교체하여 
+<p class="note"><strong>참고:</strong> (옵션 메뉴의) 아이콘 메뉴의 메뉴 항목은
+확인란이나 무선 버튼을 표시할 수 없습니다. 확인 가능한 아이콘 메뉴에서 항목을 만들기로 선택하는 경우,
+상태가 변경될 때마다 아이콘 및/또는 텍스트를 교체하여
 확인된 상태를 수동으로 나타내야 합니다.</p>
 
 <p>{@code &lt;item&gt;} 요소의 {@code
 android:checkable} 속성을 사용하여 개별 메뉴 항목에 대한 확인 가능한 동작을 정의하거나
-{@code &lt;group&gt;} 요소에서 {@code android:checkableBehavior} 속성으로 전체 그룹에 대한 확인 가능한 동작을 사용할 수 있습니다. 
+{@code &lt;group&gt;} 요소에서 {@code android:checkableBehavior} 속성으로 전체 그룹에 대한 확인 가능한 동작을 사용할 수 있습니다.
 예를 들어, 이 메뉴 그룹의 모든 항목은 무선 버튼으로 확인할 수 있습니다.</p>
 
 <pre>
@@ -893,15 +893,15 @@
     <dd>확인할 수 있는 항목이 없습니다.</dd>
 </dl>
 
-<p>{@code &lt;item&gt;} 요소의 {@code android:checked} 속성을 이용하여 항목에 기본 확인된 상태를 적용하고 
+<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.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). 바로 여기에서
+확인란의 상태를 설정해야 합니다. 확인란이나 무선 버튼은 자신의 상태를 자동으로
+변경하지 않기 때문입니다.
+{@link android.view.MenuItem#isChecked()}로 항목의 현재 상태를 (사용자가 이를 선택하기 전 상태 그대로) 쿼리하고 그런 다음
 {@link android.view.MenuItem#setChecked(boolean) setChecked()}로 확인된 상태를 설정할 수 있습니다. 예:</p>
 
 <pre>
@@ -926,7 +926,7 @@
 보이게 합니다.</p>
 
 <p class="note"><strong>참고:</strong>
-확인 가능한 메뉴 항목은 세션별 기준으로만 사용하도록 만들어져 있으며 애플리케이션이 소멸된 후에는 
+확인 가능한 메뉴 항목은 세션별 기준으로만 사용하도록 만들어져 있으며 애플리케이션이 소멸된 후에는
 저장되지 않습니다. 사용자에 대해 저장하고자 하는 애플리케이션 설정이 있으면,
 <a href="{@docRoot}guide/topics/data/data-storage.html#pref">공유 기본 설정</a>으로 해당 데이터를 저장해야 합니다.</p>
 
@@ -935,16 +935,16 @@
 <h2 id="intents">인텐트에 기반한 메뉴 항목 추가</h2>
 
 <p>{@link android.content.Intent}를 이용하여
-액티비티를 시작하는 메뉴 항목을 원할 수도 있습니다(액티비티가 본인의 애플리케이션 안에 있는 것이든 또 다른 애플리케이션에 있는 것이든 무관합니다). 사용하고자 하는 인텐트를 알고 
+액티비티를 시작하는 메뉴 항목을 원할 수도 있습니다(액티비티가 본인의 애플리케이션 안에 있는 것이든 또 다른 애플리케이션에 있는 것이든 무관합니다). 사용하고자 하는 인텐트를 알고
 인텐트를 시작해야 하는 특정 메뉴 항목이 있을 경우,
-항목에 대해 선택된 적절한 콜백 메서드에서 {@link android.app.Activity#startActivity(Intent) startActivity()}가 
+항목에 대해 선택된 적절한 콜백 메서드에서 {@link android.app.Activity#startActivity(Intent) startActivity()}가
 포함된 인텐트를 실행합니다(예: {@link
 android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} 콜백).</p>
 
-<p>그러나 사용자 기기에 
+<p>그러나 사용자 기기에
 해당 인텐트를 처리하는 애플리케이션이 있는지 모르는 경우, 이를 호출하는 메뉴 항목을 추가하면
 해당 인텐트가 액티비티에 대해 확인되지 못해서 메뉴 항목이 기능하지 못할 수도 있습니다.
- 이것을 해결하기 위해 Android는 개발자가 동적으로 자신의 메뉴에 메뉴 항목을 추가할 수 있도록 허용합니다. 
+ 이것을 해결하기 위해 Android는 개발자가 동적으로 자신의 메뉴에 메뉴 항목을 추가할 수 있도록 허용합니다.
 이는 Android가 기기에서 개발자의 인텐트를 처리하는 액티비티를 찾을 경우에 해당됩니다.</p>
 
 <p>인텐트를 수락하는 이용 가능한 액티비티에 기반하여 메뉴 항목을 추가하려면 다음과 같이 합니다.</p>
@@ -954,15 +954,15 @@
 {@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가 인텐트를 수행하는 애플리케이션을 검색하고 
+Menu.addIntentOptions()}을 호출합니다. 그러면 Android가 인텐트를 수행하는 애플리케이션을 검색하고
 이들을 개발자의 메뉴에 추가합니다.</li>
 </ol>
 
-<p>인텐트를 만족하는 애플리케이션이 설치되어 있지 않으면, 
+<p>인텐트를 만족하는 애플리케이션이 설치되어 있지 않으면,
 메뉴 항목이 추가되지 않습니다.</p>
 
 <p class="note"><strong>참고:</strong>
-{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 를 사용하여 화면에서 현재 선택된 
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 를 사용하여 화면에서 현재 선택된
 요소를 처리합니다. 그러므로 이것은 {@link
 android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
 onCreateContextMenu()}에서 메뉴를 생성할 때만 사용해야 합니다.</p>
@@ -995,7 +995,7 @@
 
 <p>정의된 인텐트와 일치하는 인텐트 필터를 제공하는 것으로 발견된 각 액티비티에
 인텐트 필터의 <code>android:label</code>를
-메뉴 항목 제목으로, 애플리케이션 아이콘을 메뉴 항목 아이콘으로 사용하여 메뉴 항목을 추가합니다. 
+메뉴 항목 제목으로, 애플리케이션 아이콘을 메뉴 항목 아이콘으로 사용하여 메뉴 항목을 추가합니다.
 {@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
 addIntentOptions()} 메서드는 추가된 메뉴 항목 개수를 반환합니다.</p>
 
@@ -1007,10 +1007,10 @@
 
 <h3 id="AllowingToAdd">다른 메뉴에 액티비티 추가 허용</h3>
 
-<p>본인의 액티비티의 서비스를 다른 애플리케이션에 제공하여 다른 
+<p>본인의 액티비티의 서비스를 다른 애플리케이션에 제공하여 다른
 애플리케이션의 메뉴에 본인의 애플리케이션이 추가되도록 할 수도 있습니다(위에서 설명한 것과 역할이 반대입니다).</p>
 
-<p>다른 애플리케이션 메뉴에 추가되려면, 인텐트 필터는 평소와 같이 
+<p>다른 애플리케이션 메뉴에 추가되려면, 인텐트 필터는 평소와 같이
 정의해야 하지만, 인텐트 필터 카테고리에 {@link android.content.Intent#CATEGORY_ALTERNATIVE}
 및/또는{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 값을
 반드시 포함해야 합니다. 예:</p>
@@ -1023,9 +1023,9 @@
 &lt;/intent-filter>
 </pre>
 
-<p>인텐트 필터 작성에 관한 자세한 내용은 
+<p>인텐트 필터 작성에 관한 자세한 내용은
 <a href="/guide/components/intents-filters.html">인텐트와 인텐트 필터</a> 문서를 참조하십시오.</p>
 
-<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
index db55424..4d87df7 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
@@ -81,8 +81,8 @@
     <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} 클래스를 
+<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>
@@ -111,15 +111,15 @@
 </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>
@@ -132,8 +132,8 @@
 <h3 id="Actions">알림 작업</h3>
 <p>
     선택 항목이기는 하지만 알림에 작업을 하나 이상 추가해야 합니다.
-    작업은 사용자가 알림에서 
-애플리케이션의 {@link android.app.Activity}로 바로 갈 수 있게 하고, 여기에서 사용자는 하나 이상의 이벤트를 보거나 
+    작업은 사용자가 알림에서
+애플리케이션의 {@link android.app.Activity}로 바로 갈 수 있게 하고, 여기에서 사용자는 하나 이상의 이벤트를 보거나
 더 많은 작업을 할 수 있습니다.
 </p>
 <p>
@@ -141,15 +141,15 @@
 일반적으로 작업은
 애플리케이션의 {@link android.app.Activity}를 엽니다. 또한, 알람 다시 알림이나 텍스트 메시지에 즉시 답장 등과 같은 추가 작업을 수행하는
 알림 버튼을 추가할 수 있습니다.
-이 기능은 Android 4.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.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}를 시작하려면,
@@ -158,20 +158,20 @@
 </p>
 <p>
     사용자가 알림을 클릭했을 때 {@link android.app.Activity}를 시작하는 동작이 가장 보편적인 작업
-시나리오입니다. 또한, 사용자가 알림을 무시했을 때 {@link android.app.Activity}를 
-시작할 수도 있습니다. Android 4.1 이후부터는 
+시나리오입니다. 또한, 사용자가 알림을 무시했을 때 {@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} 우선 순위 상수 중 하나에 전달합니다. 
+android.support.v4.app.NotificationCompat} 우선 순위 상수 중 하나에 전달합니다.
 우선 순위 수준은 {@link
 android.support.v4.app.NotificationCompat#PRIORITY_MIN}(-2)에서 {@link
 android.support.v4.app.NotificationCompat#PRIORITY_MAX}(2)까지 다섯 개가 있습니다. 별도의 설정이 없을 경우,
@@ -185,10 +185,10 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <h3 id="SimpleNotification">단순 알림 만들기</h3>
 <p>
-    다음 조각은 사용자가 알림을 클릭하면 알리는 
+    다음 조각은 사용자가 알림을 클릭하면 알리는
 액티비티를 지정하는 단순한 알림을 나타냅니다. 이 코드는
-{@link android.support.v4.app.TaskStackBuilder} 객체를 생성하고 이를 사용하여 
-해당 작업의 {@link android.app.PendingIntent}를 생성합니다. 이 패턴은 
+{@link android.support.v4.app.TaskStackBuilder} 객체를 생성하고 이를 사용하여
+해당 작업의 {@link android.app.PendingIntent}를 생성합니다. 이 패턴은
 <a href="#NotificationResponse">
 액티비티를 시작할 때 탐색 보존</a> 섹션에서 자세히 설명합니다.
 </p>
@@ -225,13 +225,13 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <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 이전 플랫폼에서 사용할 수 없다는 것을 명심하십시오.
 Android 4.1 이하 플랫폼에서 알림을 처리하는 방법은
 <a href="#Compatibility">처리 호환성</a> 섹션을 참조하십시오.
 </p>
@@ -264,7 +264,7 @@
 <h3 id="Compatibility">처리 호환성</h3>
 
 <p>
-    
+
 알림 기능을 설정하는 메서드가
 지원 라이브러리 클래스 {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}에 있더라도 모든 알림 기능을 특정 버전에서 사용할 수 있는 것은 아닙니다.
     예를 들어, 확장 알림에 따라 달라지는 작업 버튼은 Android
@@ -294,13 +294,13 @@
         사용자가 알림을 클릭하면 알림을 시작시키는 방식으로 모든 사용자에게 {@link android.app.Activity}에서 알림 기능을
 사용할 수 있게 합니다. 이를 위해,
 
-{@link android.app.Activity}를 위한 {@link android.app.PendingIntent}를 생성합니다. 
+{@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}에서 개발자가 추가한 모든 기능을 
+{@link android.app.Activity}에서 개발자가 추가한 모든 기능을
 사용할 수 있어야 합니다.
     </li>
 </ol>
@@ -310,18 +310,18 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <h2 id="Managing">알림 관리</h2>
 <p>
-    같은 유형의 이벤트에서 알림을 여러 번 발행해야 할 경우, 
+    같은 유형의 이벤트에서 알림을 여러 번 발행해야 할 경우,
 완전히 새로운 알림을 만드는 것은 삼가야 합니다. 대신, 일부 값을 변경하거나 추가하거나, 두 가지 조치를 모두 취하여
 이전 알림을 업데이트하는 것이 좋습니다.
 </p>
 <p>
     예를 들어, Gmail은 읽지 않은 메시지 개수를 올리고 각 이메일의 요약을 알림에 추가하여
-새 이메일 도착을 알립니다. 이것을 일명 
-알림을 "쌓는다"고 하며, 이는 
+새 이메일 도착을 알립니다. 이것을 일명
+알림을 "쌓는다"고 하며, 이는
 <a href="{@docRoot}design/patterns/notifications.html">알림</a> 디자인 가이드에 자세히 설명되어 있습니다.
 </p>
 <p class="note">
-    <strong>참고:</strong> 이 Gmail 기능에는 "받은편지함" 확장 레이아웃이 필요한데, 
+    <strong>참고:</strong> 이 Gmail 기능에는 "받은편지함" 확장 레이아웃이 필요한데,
 이것은 Android 4.1부터 이용할 수 있는 확장 알림 기능의 일부입니다.
 </p>
 <p>
@@ -331,16 +331,16 @@
 <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.support.v4.app.NotificationCompat.Builder} 객체를 업데이트하거나 생성하고,
+{@link android.app.Notification} 객체를 구축하고,
+이전에 사용한 것과 같은 ID로 {@link android.app.Notification}을 발행합니다. 이전 알림이
 여전히 표시되는 경우, 시스템은
-{@link android.app.Notification} 객체의 콘텐츠에서 알림을 업데이트합니다. 이전 알림을 무시할 경우, 
+{@link android.app.Notification} 객체의 콘텐츠에서 알림을 업데이트합니다. 이전 알림을 무시할 경우,
 대신 새로운 알림이 생성됩니다.
 </p>
 <p>
-    다음 코드 조각은 발생한 이벤트 개수를 반영하여 
+    다음 코드 조각은 발생한 이벤트 개수를 반영하여
 업데이트된 알림을 나타낸 것입니다. 이것은 알림을 쌓아 요약을 표시합니다.
 </p>
 <pre>
@@ -385,7 +385,7 @@
 이 메서드도 현재 진행 중인 알림을 삭제합니다.
     </li>
     <li>
-        {@link android.app.NotificationManager#cancelAll() cancelAll()}을 호출합니다. 
+        {@link android.app.NotificationManager#cancelAll() cancelAll()}을 호출합니다.
 이것은 이전에 발행한 알림을 모두 제거합니다.
     </li>
 </ul>
@@ -393,9 +393,9 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <h2 id="NotificationResponse">액티비티를 시작할 때 탐색 보존</h2>
 <p>
-    알림에서 {@link android.app.Activity}를 시작할 때는 사용자의 예상 탐색 경험을 
-보존해야 합니다. <i>'뒤로'를 클릭하면</i> 사용자를 애플리케이션의 정상 작업 흐름을 거쳐 메인 스크린으로 보내고, 
- <i>'최근'을 클릭하면</i> 
+    알림에서 {@link android.app.Activity}를 시작할 때는 사용자의 예상 탐색 경험을
+보존해야 합니다. <i>'뒤로'를 클릭하면</i> 사용자를 애플리케이션의 정상 작업 흐름을 거쳐 메인 스크린으로 보내고,
+ <i>'최근'을 클릭하면</i>
 {@link android.app.Activity}를 별개의 작업으로 표시합니다. 탐색 경험을 보존하려면
 새 작업에서 {@link android.app.Activity}를 시작해야 합니다. 새로운 작업을 부여하기 위한
 {@link android.app.PendingIntent} 설정 방법은 시작하는
@@ -406,19 +406,19 @@
         정규 액티비티
     </dt>
     <dd>
-        애플리케이션의 정상적 작업 흐름의 일부인 {@link android.app.Activity}를 
+        애플리케이션의 정상적 작업 흐름의 일부인 {@link android.app.Activity}를
 시작합니다. 이 상황에서 {@link android.app.PendingIntent}를 설정하여
 새 작업을 시작하고 애플리케이션의
 정상적인 <i>'뒤로' </i>동작을 재현하는 백 스택으로 {@link android.app.PendingIntent}를 제공합니다.
         <p>
-            Gmail 앱에서 보낸 알림이 이것을 잘 보여줍니다. 하나의 이메일 메시지에 대한 
-알림을 클릭하면 메시지 자체를 보게 됩니다. <b>뒤로</b>를 터치하면 
+            Gmail 앱에서 보낸 알림이 이것을 잘 보여줍니다. 하나의 이메일 메시지에 대한
+알림을 클릭하면 메시지 자체를 보게 됩니다. <b>뒤로</b>를 터치하면
 알림에서 들어간 것이 아니라 메인 스크린에서
 Gmail에 들어간 것처럼 Gmail을 통해 메인 스크린으로 돌아갑니다.
         </p>
         <p>
-            이것은 알림을 터치하기만 하면 어느 애플리케이션에 있든 관계 없이 발생하는 
-일입니다. 예를 들어, Gmail에서 메시지를 작성하다가 
+            이것은 알림을 터치하기만 하면 어느 애플리케이션에 있든 관계 없이 발생하는
+일입니다. 예를 들어, Gmail에서 메시지를 작성하다가
 한 이메일에 대한 알림을 클릭하면 해당 이메일로 바로 이동합니다. <i>뒤로</i>
 를 터치하면
 작성 중인 메시지가 아니라 받은편지함과 메인 스크린으로 돌아갑니다.
@@ -429,18 +429,18 @@
     </dt>
     <dd>
         {@link android.app.Activity}가 알림에서 시작될 경우 사용자에게는 이것만 보입니다.
-        {@link android.app.Activity}는 알림 자체에서 표시하기 어려운 정보를 제공하므로 
-어떤 면에서는 알림을 확장하는 셈입니다. 이 상황에서는, 
-{@link android.app.PendingIntent}를 설정하고 새로운 작업에서 시작합니다. 
-시작된 {@link android.app.Activity}는 
-애플리케이션 액티비티 흐름의 일부가 아니므로 백 스택을 생성하지 않아도 됩니다. <i>뒤로</i>를 클릭하면 사용자는 여전히 
+        {@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>
@@ -448,7 +448,7 @@
         매니페스트에서 애플리케이션의 {@link android.app.Activity} 계층을 정의합니다.
         <ol style="list-style-type: lower-alpha;">
             <li>
-                Android 4.0.3 이전에 대한 지원을 추가합니다. 이렇게 하려면 
+                Android 4.0.3 이전에 대한 지원을 추가합니다. 이렇게 하려면
 
 <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
 요소를
@@ -506,39 +506,39 @@
 TaskStackBuilder.create()}를 호출하여 스택 빌더를 생성합니다.
             </li>
             <li>
-                
+
 {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}을 호출하여 스택 빌더를 백 스택에 추가합니다.
                 매니페스트에서 정의한 계층의 각 {@link android.app.Activity}의 경우,
 백 스택에
-{@link android.app.Activity}를 시작하는 {@link android.content.Intent} 객체가 포함됩니다. 이 메서드는 새로운 작업에서 
+{@link android.app.Activity}를 시작하는 {@link android.content.Intent} 객체가 포함됩니다. 이 메서드는 새로운 작업에서
 스택을 시작하는 플래그도 추가합니다.
                 <p class="note">
-                    <strong>참고:</strong> 
+                    <strong>참고:</strong>
 {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}에 대한 인수가
-시작된 {@link android.app.Activity}의 참조이기는 하지만, 이 메서드 호출은 
+시작된 {@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.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.app.PendingIntent}를 가져옵니다. 이때
 {@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>
@@ -569,21 +569,21 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <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.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}에 대한 
+        매니페스트에서 다음 속성을 {@link android.app.Activity}에 대한
 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
 요소에 추가합니다.
         <dl>
@@ -597,10 +597,10 @@
 <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}가 
-애플리케이션의 기본 작업으로 들어가지 않게 보장합니다. 애플리케이션의 기본 유사성을 
+                이것은 개발자가 코드에서 설정하는
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} 플래그와 더불어
+이 {@link android.app.Activity}가
+애플리케이션의 기본 작업으로 들어가지 않게 보장합니다. 애플리케이션의 기본 유사성을
 가지고 있는 기존 작업은 모두 영향을 받지 않습니다.
             </dd>
             <dt>
@@ -629,23 +629,23 @@
         알림을 구축 및 발행합니다.
         <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.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}를 {@link android.content.Intent}로부터
 생성합니다. 이때 {@link android.app.PendingIntent#getActivity getActivity()}를 호출하면 됩니다.
-                그러면 이 {@link android.app.PendingIntent}를 
+                그러면 이 {@link android.app.PendingIntent}를
 {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
 setContentIntent()}에 대한 인수로 사용할 수 있습니다.
             </li>
@@ -687,24 +687,24 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <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()}를 호출하십시오. 이전 
-버전의 경우, 개발자 나름의 사용자 지정 알림 레이아웃을 생성해야 하며 여기에 
+    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>
 <!-- ------------------------------------------------------------------------------------------ -->
@@ -712,15 +712,15 @@
 <p>
     확정적인 진행률 표시줄을 표시하려면
 {@link android.support.v4.app.NotificationCompat.Builder#setProgress
-setProgress(max, progress, false)}를 호출하여 표시줄을 알림에 추가하고, 그 다음에 알림을 발행합니다. 작업이 진행되는 동안 
-<code>progress</code>를 증가시키고 알림을 업데이트합니다. 작업이 끝날 무렵 
-<code>progress</code>가 <code>max</code>와 같아야 합니다. 
+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
@@ -773,15 +773,15 @@
 <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>
@@ -806,19 +806,19 @@
 
 <h2 id="metadata">알림 메타데이터</h2>
 
-<p>알림은 
+<p>알림은
 다음 {@link android.support.v4.app.NotificationCompat.Builder} 메서드로 할당된 메타데이터에 따라 정렬할 수 있습니다.</p>
 
 <ul>
-    <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}는 
+    <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>{@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>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}을
+사용하면 알림에 사람 목록을 추가할 수 있게 해줍니다. 개발자의 앱은 이 신호를 사용하여
+시스템에 지정된 사람들로부터 받은 알림을 함께 그룹화해야 한다고 알리거나, 이런 사람들로부터 받은 알림을
 더욱 중요한 것으로 순위를 높일 수 있습니다.</li>
 </ul>
 
@@ -832,10 +832,10 @@
 <h2 id="Heads-up">헤드업 알림</h2>
 
 <p>Android 5.0(API 레벨 21)에서는 알림을 작은 부동 창에 나타낼 수 있습니다
-(다른 말로 <em>헤드업 알림</em>이라고 부릅니다). 이것은 기기가 활성 상태일 때(즉, 
-기기가 잠금 해제 상태이며 화면에 켜져 있는 경우) 해당됩니다. 이와 같은 알림은 
-외견상 일반적인 알림의 소형 형태와 비슷해 보이지만, 
-해드업 알림에서는 작업 버튼도 표시한다는 점이 다릅니다. 사용자는 현재 앱을 떠나지 않고도 
+(다른 말로 <em>헤드업 알림</em>이라고 부릅니다). 이것은 기기가 활성 상태일 때(즉,
+기기가 잠금 해제 상태이며 화면에 켜져 있는 경우) 해당됩니다. 이와 같은 알림은
+외견상 일반적인 알림의 소형 형태와 비슷해 보이지만,
+해드업 알림에서는 작업 버튼도 표시한다는 점이 다릅니다. 사용자는 현재 앱을 떠나지 않고도
 헤드업 알림에 조치를 취하거나 이를 무시할 수 있습니다.</p>
 
 <p>헤드업 알림을 트리거할 수 있는 조건의 예시를 몇 가지 소개하면 다음과 같습니다.</p>
@@ -843,55 +843,55 @@
 <ul>
   <li>사용자 액티비티가 전체 화면 모드이거나(앱이
 {@link android.app.Notification#fullScreenIntent}를 사용할 경우)</li>
-  <li>알림의 우선 순위가 높고 
+  <li>알림의 우선 순위가 높고
 벨소리나 진동을 사용할 경우</li>
 </ul>
 
 <h2 id="lockscreenNotification">잠금 화면 알림</h2>
 
-<p>Android 5.0 (API 레벨 21) 릴리스부터 알림이 잠금 화면에도 
-나타날 수 있게 되었습니다. 앱은 이 기능을 사용하면 미디어 재생 제어와 다른 보편적인 작업을 
-제공할 수 있습니다. 사용자는 설정을 통해 잠금 화면에 알림 표시 여부를 선택할 수 있고, 
+<p>Android 5.0 (API 레벨 21) 릴리스부터 알림이 잠금 화면에도
+나타날 수 있게 되었습니다. 앱은 이 기능을 사용하면 미디어 재생 제어와 다른 보편적인 작업을
+제공할 수 있습니다. 사용자는 설정을 통해 잠금 화면에 알림 표시 여부를 선택할 수 있고,
 개발자는 앱의 알림이 잠금 화면에 표시될지 여부를 지정할 수 있습니다.</p>
 
 <h3 id="visibility">가시성 설정</h3>
 
-<p>보안 잠금 화면에 알림이 얼마나 상세하게 표시될 것인지 그 수준을 앱이 제어할 수 
-있습니다. {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}를 호출하고 
+<p>보안 잠금 화면에 알림이 얼마나 상세하게 표시될 것인지 그 수준을 앱이 제어할 수
+있습니다. {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}를 호출하고
 다음 값 중 하나를 지정합니다.</p>
 
 <ul>
-    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}은 
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}은
 알림의 전체 콘텐츠를 표시합니다.</li>
-    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}은 
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}은
 이 알림의 어떤 부분도 화면에 표시하지 않습니다.</li>
-    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}은 
+    <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}를 사용합니다. 비공개 알림 객체를 
-생성하는 경우, 대체 알림을 이에 첨부할 때 
+알림 콘텐츠의 대체 버전을 제공할 수도 있습니다. 이렇게 하면 특정 세부 사항만 숨깁니다. 예를 들어,
+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} 템플릿을 
+<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 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}으로 설정합니다. 그런 다음 다음 샘플 코드에서 설명한 바와 같이 작업을 추가하고 
+<p>Android 5.0의 잠금 화면에서 미디어 재생 제어를 표시하려면,
+위에 설명한 바와 같이 가시성을 {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}으로 설정합니다. 그런 다음 다음 샘플 코드에서 설명한 바와 같이 작업을 추가하고
 {@link android.app.Notification.MediaStyle} 템플릿을 설정합니다.
 </p>
 
@@ -914,7 +914,7 @@
     .build();
 </pre>
 
-<p class="note"><strong>참고:</strong> {@link android.media.RemoteControlClient}를 
+<p class="note"><strong>참고:</strong> {@link android.media.RemoteControlClient}를
 사용하지 않게 된 것은 미디어 제어에 이외에도 더 많은 영향을 미칩니다. 미디어 세션을 관리하고 재생을 제어하기 위한 새 API에 관한 자세한 정보는
 <a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">미디어 재생 제어</a>를
  참조하십시오.</p>
@@ -923,57 +923,57 @@
 <!-- ------------------------------------------------------------------------------------------ -->
 <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} 객체를 인스턴트화하는 것부터 시작합니다. 그런 다음, 
+    사용자 지정 레이아웃을 정의하려면
+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.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}과 같은 메서드를 호출하는 대신
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출합니다. 사용자 지정 알림에서
 콘텐츠 세부 정보를 설정하려면
 {@link android.widget.RemoteViews}의 메서드를 사용하여 보기의 하위 요소에 대한 값을 설정합니다.
 </p>
 <ol>
     <li>
-        알림에 대한 XML 레이아웃은 별도의 파일에 생성하십시오. 파일 이름은 원하는 대로 
+        알림에 대한 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} 메서드를 사용하여 알림의 아이콘과 텍스트를
+정의합니다. 이 {@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} 클래스에도 개발자가 손쉽게 사용할 수 있는 여러 가지 메서드가 포함되어 있습니다. 이를 이용해
+{@link android.widget.Chronometer} 또는 {@link android.widget.ProgressBar}를
 알림의 레이아웃에 추가하면 됩니다. 알림의 사용자 지정 레이아웃 생성에 관한 자세한 정보는
 {@link android.widget.RemoteViews} 참조 문서를 참조하십시오.
 </p>
 <p class="caution">
-    <strong>주의:</strong> 사용자 지정 레이아웃을 사용하는 경우, 
-사용자 지정 레이아웃이 다양한 기기 방향과 해상도에서 작동하는지 각별히 주의를 기울여 확인하십시오. 이 조언은 
-모든 보기 레이아웃에 공통적으로 적용되지만, 특히 알림에 중요한 의미를 지닙니다. 
-알림 창에서는 공간이 굉장히 제한되어 있기 때문입니다. 사용자 지정 레이아웃을 너무 복잡하게 만들지 마시고, 
+    <strong>주의:</strong> 사용자 지정 레이아웃을 사용하는 경우,
+사용자 지정 레이아웃이 다양한 기기 방향과 해상도에서 작동하는지 각별히 주의를 기울여 확인하십시오. 이 조언은
+모든 보기 레이아웃에 공통적으로 적용되지만, 특히 알림에 중요한 의미를 지닙니다.
+알림 창에서는 공간이 굉장히 제한되어 있기 때문입니다. 사용자 지정 레이아웃을 너무 복잡하게 만들지 마시고,
 여러 가지 구성에서 테스트하는 것을 잊지 마십시오.
 </p>
 <!-- ------------------------------------------------------------------------------------------ -->
 <h4>사용자 지정 알림 텍스트에 스타일 리소스 사용</h4>
 <p>
-    사용자 지정 알림의 텍스트에는 항상 스타일 리소스를 사용하십시오. 알림의 배경 색상은 기기와 버전별로 다를 수 있습니다. 
-스타일 리소스를 사용하면 이러한 차이를 
-감안하는 데 도움이 됩니다. Android 2.3부터 시스템은 
-표준 알림 레이아웃 텍스트의 스타일을 정의했습니다. Android 2.3 이상을 대상으로 하는 
+    사용자 지정 알림의 텍스트에는 항상 스타일 리소스를 사용하십시오. 알림의 배경 색상은 기기와 버전별로 다를 수 있습니다.
+스타일 리소스를 사용하면 이러한 차이를
+감안하는 데 도움이 됩니다. 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
index eb288f1..72e5692 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
@@ -3,9 +3,9 @@
 
 
 <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}) 객체를 
+{@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
@@ -16,30 +16,30 @@
 <h2 id="Layout">사용자 인터페이스 레이아웃</h2>
 
 <p>앱의 각 구성 요소에 대한 사용자 인터페이스는 그림 1에서 나타난 바와 같이 {@link
-android.view.View}와 {@link android.view.ViewGroup} 객체의 계층으로 정의됩니다. 각 보기 그룹은 
-하위 보기를 체계화하는 투명한 컨테이너이고, 
-하위 보기는 UI의 일부분을 그리는 제어나 다른 위젯일 수 있습니다. 
-이 계층 트리는 개발자에게 필요한 만큼 단순하거나 복잡하게 
+android.view.View}와 {@link android.view.ViewGroup} 객체의 계층으로 정의됩니다. 각 보기 그룹은
+하위 보기를 체계화하는 투명한 컨테이너이고,
+하위 보기는 UI의 일부분을 그리는 제어나 다른 위젯일 수 있습니다.
+이 계층 트리는 개발자에게 필요한 만큼 단순하거나 복잡하게
 만들 수 있습니다(다만 단순한 것이 성능에는 가장 좋습니다).</p>
 
 <img src="{@docRoot}images/viewgroup.png" alt="" />
-<p class="img-caption"><strong>그림 1.</strong> 보기 계층을 나타낸 것으로, 이것이 
+<p class="img-caption"><strong>그림 1.</strong> 보기 계층을 나타낸 것으로, 이것이
 UI 레이아웃을 정의합니다.</p>
 
-<p>레이아웃을 선언하려면 코드의 {@link android.view.View} 객체를 인스턴트화하고 트리를 구축하기 시작하면 되지만, 
-레이아웃을 정의하는 가장 쉽고 효과적인 방법은 XML 파일을 사용하는 것입니다. 
+<p>레이아웃을 선언하려면 코드의 {@link android.view.View} 객체를 인스턴트화하고 트리를 구축하기 시작하면 되지만,
+레이아웃을 정의하는 가장 쉽고 효과적인 방법은 XML 파일을 사용하는 것입니다.
 XML은 HTML과 유사한, 인간이 읽을 수 있는 레이아웃 구조를 제공합니다.</p>
 
-<p>보기의 XML 요소 이름은 해당 요소가 나타내는 각각의 Android 클래스를 따릅니다. 말하자면 
+<p>보기의 XML 요소 이름은 해당 요소가 나타내는 각각의 Android 클래스를 따릅니다. 말하자면
 <code>&lt;TextView&gt;</code> 요소가 UI에서 {@link android.widget.TextView} 위젯을 생성하고,
-<code>&lt;LinearLayout&gt;</code> 요소는 {@link android.widget.LinearLayout} 보기 
+<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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -53,19 +53,19 @@
 &lt;/LinearLayout>
 </pre>
 
-<p>앱에 레이아웃 리소스를 로드하면 Android가 레이아웃의 각 노드를 초기화하여 
-추가 동작을 정의하거나, 객체 상태를 쿼리 또는 레이아웃을 수정하는 데 쓸 수 있는 런타임 객체로 
+<p>앱에 레이아웃 리소스를 로드하면 Android가 레이아웃의 각 노드를 초기화하여
+추가 동작을 정의하거나, 객체 상태를 쿼리 또는 레이아웃을 수정하는 데 쓸 수 있는 런타임 객체로
 초기화합니다.</p>
 
-<p>UI 레이아웃 생성에 대한 완전한 가이드는 <a href="declaring-layout.html">XML 
+<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 구성 요소에는 각각 
+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
index 36204e0..01b62ed 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
@@ -65,13 +65,13 @@
 
 
 
-<p>애플리케이션에는 종종 설정이 포함되어 있어 사용자가 앱 기능과 행동을 수정할 수 있게 해줍니다. 예를 들어 
-몇몇 앱은 사용자에게 알림을 활성화할지 여부를 지정하거나 애플리케이션이 
+<p>애플리케이션에는 종종 설정이 포함되어 있어 사용자가 앱 기능과 행동을 수정할 수 있게 해줍니다. 예를 들어
+몇몇 앱은 사용자에게 알림을 활성화할지 여부를 지정하거나 애플리케이션이
 클라우드와 데이터를 동기화할 빈도를 지정할 수 있게 해줍니다.</p>
 
-<p>자신의 앱에 설정을 제공하고자 하는 경우, Android의 
-{@link android.preference.Preference} API를 사용하여 다른 Android 앱(시스템 설정 포함)의 사용자 환경과 
-일관성을 유지하는 인터페이스를 구축할 수 있게 해야 합니다. 이 문서에서는 
+<p>자신의 앱에 설정을 제공하고자 하는 경우, Android의
+{@link android.preference.Preference} API를 사용하여 다른 Android 앱(시스템 설정 포함)의 사용자 환경과
+일관성을 유지하는 인터페이스를 구축할 수 있게 해야 합니다. 이 문서에서는
 {@link android.preference.Preference} API를 사용하여 앱 설정을 구축하는 방법을 설명합니다.</p>
 
 <div class="note design">
@@ -81,8 +81,8 @@
 
 
 <img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
-<p class="img-caption"><strong>그림 1.</strong> Android 메시지 앱의 설정에서 가져온 
-스크린샷입니다. {@link android.preference.Preference}가 정의한 항목을 선택하면 
+<p class="img-caption"><strong>그림 1.</strong> Android 메시지 앱의 설정에서 가져온
+스크린샷입니다. {@link android.preference.Preference}가 정의한 항목을 선택하면
 인터페이스가 열려 설정을 변경할 수 있게 됩니다.</p>
 
 
@@ -90,24 +90,24 @@
 
 <h2 id="Overview">개요</h2>
 
-<p>사용자 인터페이스를 구축할 때에는 {@link android.view.View} 객체를 사용하지만, 설정은 그 대신 
-{@link android.preference.Preference} 클래스의 다양한 하위 클래스를 사용하여 구축합니다. 
+<p>사용자 인터페이스를 구축할 때에는 {@link android.view.View} 객체를 사용하지만, 설정은 그 대신
+{@link android.preference.Preference} 클래스의 다양한 하위 클래스를 사용하여 구축합니다.
 이와 같은 하위 클래스는 XML 파일에서 선언합니다.</p>
 
-<p>{@link android.preference.Preference} 객체는 하나의 설정을 이루는 기본 
-단위입니다. 각각의 {@link android.preference.Preference}는 목록의 항목으로 
+<p>{@link android.preference.Preference} 객체는 하나의 설정을 이루는 기본
+단위입니다. 각각의 {@link android.preference.Preference}는 목록의 항목으로
 나타나며 사용자가 설정을 수정하기에 적절한 UI를 제공합니다. 예를 들어 {@link
 android.preference.CheckBoxPreference}는 확인란을 표시하는 목록 항목을 만들고, {@link
 android.preference.ListPreference}는 선택 목록이 있는 대화를 여는 항목을 만듭니다.</p>
 
-<p>각각의 {@link android.preference.Preference}를 추가할 때마다 상응하는 키-값 쌍이 있어 
+<p>각각의 {@link android.preference.Preference}를 추가할 때마다 상응하는 키-값 쌍이 있어
 시스템이 이를 사용하여 해당 설정을 앱의 설정에 대한 기본 {@link android.content.SharedPreferences}
-파일에 저장합니다. 사용자가 설정을 변경하면 시스템이 
-{@link android.content.SharedPreferences} 파일에 있는 상응하는 값을 개발자 대신 업데이트합니다. 개발자가 직접 
-연관된 {@link android.content.SharedPreferences} 파일과 상호 작용을 해야 하는 경우는 
+파일에 저장합니다. 사용자가 설정을 변경하면 시스템이
+{@link android.content.SharedPreferences} 파일에 있는 상응하는 값을 개발자 대신 업데이트합니다. 개발자가 직접
+연관된 {@link android.content.SharedPreferences} 파일과 상호 작용을 해야 하는 경우는
 사용자의 설정을 기반으로 앱의 동작을 결정하기 위해 값을 읽어야 할 때뿐입니다.</p>
 
-<p>각 설정에 대하여 {@link android.content.SharedPreferences}에 저장된 값은 다음과 같은 
+<p>각 설정에 대하여 {@link android.content.SharedPreferences}에 저장된 값은 다음과 같은
 데이터 유형 중 한 가지를 취할 수 있습니다.</p>
 
 <ul>
@@ -119,31 +119,31 @@
   <li>String {@link java.util.Set}</li>
 </ul>
 
-<p>앱의 설정 UI는 
-{@link android.view.View} 객체 대신 
-{@link android.preference.Preference} 객체를 사용하여 구축되기 때문에, 목록 설정을 표시하려면 특수 {@link android.app.Activity} 또는 
+<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 이하)을 지원하는 경우, 액티비티를 구축할 때 
+  <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>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">기본 설정 
+android.preference.PreferenceFragment}의 인스턴스를 설정하는 방법은 <a href="#Activity">기본 설정 액티비티 만들기</a>와 <a href="#Fragment">기본 설정
 프래그먼트 사용하기</a>에 관련된 섹션에서 논합니다.</p>
 
 
 <h3 id="SettingTypes">기본 설정</h3>
 
 <p>앱에 대한 설정은 모두 {@link
-android.preference.Preference} 클래스의 특정 하위 클래스로 표현됩니다. 각 하위 클래스에 핵심 속성이 한 세트씩 포함되어 있어 
-설정의 제목과 기본 값 등과 같은 것을 지정할 수 있게 해줍니다. 각 하위 클래스는 또한 자신만의 
-특수 속성과 사용자 인터페이스도 제공합니다. 예를 들어, 그림 1에서는 메시지 앱의 설정에서 
+android.preference.Preference} 클래스의 특정 하위 클래스로 표현됩니다. 각 하위 클래스에 핵심 속성이 한 세트씩 포함되어 있어
+설정의 제목과 기본 값 등과 같은 것을 지정할 수 있게 해줍니다. 각 하위 클래스는 또한 자신만의
+특수 속성과 사용자 인터페이스도 제공합니다. 예를 들어, 그림 1에서는 메시지 앱의 설정에서
 가져온 스크린샷을 나타낸 것입니다. 설정 화면에 있는 각 목록 항목은 각기 서로 다른 {@link
 android.preference.Preference} 객체로 지원됩니다.</p>
 
@@ -151,11 +151,11 @@
 
 <dl>
   <dt>{@link android.preference.CheckBoxPreference}</dt>
-  <dd>활성화되었거나 비활성화된 설정에 대한 확인란이 있는 항목을 표시합니다. 저장된 값은 
+  <dd>활성화되었거나 비활성화된 설정에 대한 확인란이 있는 항목을 표시합니다. 저장된 값은
 부울입니다(확인란이 선택된 경우 <code>true</code>).</dd>
 
   <dt>{@link android.preference.ListPreference}</dt>
-  <dd>무선 버튼 목록이 있는 대화를 엽니다. 저장된 값은 
+  <dd>무선 버튼 목록이 있는 대화를 엽니다. 저장된 값은
 지원되는 값 유형(위에 목록으로 나열) 중 어느 것이라도 될 수 있습니다.</dd>
 
   <dt>{@link android.preference.EditTextPreference}</dt>
@@ -166,36 +166,36 @@
 <p>다른 모든 하위 클래스와 이에 상응하는 속성의 목록을 보려면 {@link android.preference.Preference}
  클래스를 참조하십시오.</p>
 
-<p>물론 기본 제공 클래스만으로는 필요한 것을 모두 충족할 수 없고 앱에 무언가 좀 더 특수한 것이 
+<p>물론 기본 제공 클래스만으로는 필요한 것을 모두 충족할 수 없고 앱에 무언가 좀 더 특수한 것이
 필요할 수도 있습니다. 예를 들어 플랫폼은 현재 숫자나 날짜를 선택할 수 있는 {@link
-android.preference.Preference} 클래스를 제공하지 않습니다. 따라서 개발자 나름대로 
+android.preference.Preference} 클래스를 제공하지 않습니다. 따라서 개발자 나름대로
 {@link android.preference.Preference} 하위 클래스를 정의해야 할 수도 있습니다. 이 작업을 수행하는 데 유용한 내용인 <a href="#Custom">사용자 지정 기본 설정 구축하기</a>에 관한 섹션을 참조하십시오.</p>
 
 
 
 <h2 id="DefiningPrefs">XML로 기본 설정 정의하기</h2>
 
-<p>새로운 {@link android.preference.Preference} 객체를 런타임에 인스턴트화하는 것도 가능하지만, 
+<p>새로운 {@link android.preference.Preference} 객체를 런타임에 인스턴트화하는 것도 가능하지만,
 설정 목록을 정의할 때에는 {@link android.preference.Preference}
-객체의 계층과 함께 XML을 사용해야 합니다. 설정 컬렉션을 정의하는 데 XM 파일을 사용하는 것이 선호되는 이유는 이 파일이 
-읽기 쉬운 구조를 제공하여 업데이트가 단순하기 때문입니다. 또한, 앱의 설정은 보통 
+객체의 계층과 함께 XML을 사용해야 합니다. 설정 컬렉션을 정의하는 데 XM 파일을 사용하는 것이 선호되는 이유는 이 파일이
+읽기 쉬운 구조를 제공하여 업데이트가 단순하기 때문입니다. 또한, 앱의 설정은 보통
 미리 정의되어 있습니다. 다만 개발자도 여전히 런타임에 설정 컬렉션을 수정할 수 있습니다.</p>
 
-<p>각 {@link android.preference.Preference} 하위 클래스는 클래스 이름에 일치하는 XML 요소로 
+<p>각 {@link android.preference.Preference} 하위 클래스는 클래스 이름에 일치하는 XML 요소로
 선언하면 됩니다. 예를 들면 {@code &lt;CheckBoxPreference&gt;}가 이에 해당됩니다.</p>
 
-<p>이 XML 파일은 반드시 {@code res/xml/} 디렉터리에 저장해야 합니다. 파일의 이름은 무엇이든 원하는 대로 지정할 수 있지만, 
-일반적으로는 {@code preferences.xml}이라고 명명합니다. 파일은 하나만 필요한 것이 보통입니다. 
-왜냐하면 계층에 있는 분기(자신만의 설정 목록을 엶)는 
+<p>이 XML 파일은 반드시 {@code res/xml/} 디렉터리에 저장해야 합니다. 파일의 이름은 무엇이든 원하는 대로 지정할 수 있지만,
+일반적으로는 {@code preferences.xml}이라고 명명합니다. 파일은 하나만 필요한 것이 보통입니다.
+왜냐하면 계층에 있는 분기(자신만의 설정 목록을 엶)는
 {@link android.preference.PreferenceScreen}의 중첩된 인스턴스를 사용하여 선언되기 때문입니다.</p>
 
-<p class="note"><strong>참고:</strong> 설정에 다중 창 레이아웃을 만들고자 하는 경우, 
+<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;} 요소 내에 추가하는 각 하위는 설정 목록에서 
+android.preference.Preference}를 추가하는 것입니다.
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 요소 내에 추가하는 각 하위는 설정 목록에서
 각기 항목 하나씩으로 나타납니다.</p>
 
 <p>예:</p>
@@ -224,11 +224,11 @@
 
 <dl>
   <dt>{@code android:key}</dt>
-  <dd>이 속성은 데이터 값을 유지하는 기본 설정에 필수입니다. 이것은 고유키(문자)를 
+  <dd>이 속성은 데이터 값을 유지하는 기본 설정에 필수입니다. 이것은 고유키(문자)를
 나타내며, 시스템이 이것을 사용하여 이 설정의 값을 {@link
-android.content.SharedPreferences}에 저장합니다. 
-  <p>이 속성이 <em>필요하지 않은</em> 인스턴스는 기본 설정이 
-{@link android.preference.PreferenceCategory} 또는 {@link android.preference.PreferenceScreen}인 경우, 또는 
+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>
@@ -236,7 +236,7 @@
   <dd>이것은 설정에 대하여 사용자가 볼 수 있는 이름을 제공합니다.</dd>
   <dt>{@code android:defaultValue}</dt>
   <dd>이것은 시스템이 {@link
-android.content.SharedPreferences} 파일에 설정해야 하는 초기 값을 나타냅니다. 모든 설정에 기본 값을 제공해야 
+android.content.SharedPreferences} 파일에 설정해야 하는 초기 값을 나타냅니다. 모든 설정에 기본 값을 제공해야
 합니다.</dd>
 </dl>
 
@@ -248,21 +248,21 @@
   <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> 제목은 
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 요소가 지정합니다. <br/><b>2.</b> 제목은
 {@code android:title} 속성으로 지정합니다.</p>
 </div>
 
 
-<p>설정 목록이 약 10개 항목을 초과하면 제목을 추가하여 
-설정 그룹을 정의하거나, 해당 그룹을 별도의 
+<p>설정 목록이 약 10개 항목을 초과하면 제목을 추가하여
+설정 그룹을 정의하거나, 해당 그룹을 별도의
 화면에 표시하는 것이 좋을 수도 있습니다. 이러한 옵션은 다음 섹션에 설명되어 있습니다.</p>
 
 
 <h3 id="Groups">설정 그룹 만들기</h3>
 
-<p>10개 이상의 설정 목록을 제시하는 경우, 사용자가 
-이들을 둘러보고 이해하며 처리하는 데 어려움을 겪을 수 있습니다. 이 문제를 해결하려면 
-설정의 일부 또는 모두를 그룹으로 나누어 사실상 하나의 긴 목록을 여러 개의 더 짧은 목록으로 
+<p>10개 이상의 설정 목록을 제시하는 경우, 사용자가
+이들을 둘러보고 이해하며 처리하는 데 어려움을 겪을 수 있습니다. 이 문제를 해결하려면
+설정의 일부 또는 모두를 그룹으로 나누어 사실상 하나의 긴 목록을 여러 개의 더 짧은 목록으로
 바꿔주면 됩니다. 관련된 설정 그룹 하나를 나타낼 때에는 다음과 같은 두 가지 방식 중 하나를 택하면 됩니다.</p>
 
 <ul>
@@ -270,14 +270,14 @@
   <li><a href="#Subscreens">보조 화면 사용하기</a></li>
 </ul>
 
-<p>이와 같은 그룹화 기법 중 하나 또는 둘 모두를 사용하여 앱의 설정을 조직화할 수 있습니다. 어느 것을 
-사용할지, 설정을 어떻게 나눌지 결정할 때에는 Android 
+<p>이와 같은 그룹화 기법 중 하나 또는 둘 모두를 사용하여 앱의 설정을 조직화할 수 있습니다. 어느 것을
+사용할지, 설정을 어떻게 나눌지 결정할 때에는 Android
 디자인의 <a href="{@docRoot}design/patterns/settings.html">설정</a> 가이드에 있는 지침을 따라야 합니다.</p>
 
 
 <h4 id="Titles">제목 사용하기</h4>
 
-<p>여러 개의 설정 그룹 사이에 구분선과 제목을 제공하고자 하는 경우(그림 2에 표시된 것과 같이), 
+<p>여러 개의 설정 그룹 사이에 구분선과 제목을 제공하고자 하는 경우(그림 2에 표시된 것과 같이),
 각 {@link android.preference.Preference} 객체 그룹을 {@link
 android.preference.PreferenceCategory} 내부에 배치합니다.</p>
 
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -311,13 +311,13 @@
 
 <h4 id="Subscreens">보조 화면 사용하기</h4>
 
-<p>설정 그룹 여러 개를 보조 화면에 배치하고자 하는 경우(그림 3에 표시된 것과 같이), 해당 
+<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;} 요소가 
+&lt;PreferenceScreen&gt;} 요소가
 항목을 만들며, 이 항목이 선택되면 별도의 목록이 열려 중첩된 설정을 표시합니다.</p>
 
 <p>예:</p>
@@ -352,7 +352,7 @@
 
 <h3 id="Intents">인텐트 사용하기</h3>
 
-<p>어떤 경우에는 기본 설정 항목을 사용하여 설정 화면 대신 여러 가지 액티비티를 
+<p>어떤 경우에는 기본 설정 항목을 사용하여 설정 화면 대신 여러 가지 액티비티를
 열고자 할 수도 있습니다. 예를 들어 웹 브라우저를 열어 웹 페이지를 보는 것이 이에 해당됩니다. 사용자가 기본 설정 항목을 선택할 때 {@link
 android.content.Intent}를 호출하도록 하려면, {@code &lt;intent&gt;}
 요소를 상응하는 {@code &lt;Preference&gt;} 요소의 하위로 추가하면 됩니다.</p>
@@ -392,18 +392,18 @@
 <p>설정을 액티비티에서 표시하려면 {@link
 android.preference.PreferenceActivity} 클래스를 확장하면 됩니다. 이것은 일반적인 {@link
 android.app.Activity} 클래스 확장의 일종입니다. 이는 {@link
-android.preference.Preference} 객체의 계층에 기반한 설정 목록을 표시합니다. {@link android.preference.PreferenceActivity}는 
+android.preference.Preference} 객체의 계층에 기반한 설정 목록을 표시합니다. {@link android.preference.PreferenceActivity}는
 사용자가 변경 작업을 하면 각 {@link
 android.preference.Preference}와 연관된 설정을 유지합니다.</p>
 
-<p class="note"><strong>참고:</strong> Android 3.0 이상에 맞춰 애플리케이션을 개발하는 경우, 
-대신 {@link android.preference.PreferenceFragment}를 사용해야 합니다. 다음 섹션의 
+<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 파일에서 선언한 기본 설정을 액티비티에 추가합니다. 예를 들어 다음은 기능적인 
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여
+XML 파일에서 선언한 기본 설정을 액티비티에 추가합니다. 예를 들어 다음은 기능적인
 {@link android.preference.PreferenceActivity}에 필요한 가장 최소한의 코드를 나타낸 것입니다.</p>
 
 <pre>
@@ -416,11 +416,11 @@
 }
 </pre>
 
-<p>사실 이 코드만으로 몇몇 앱에는 충분합니다. 사용자가 기본 설정을 수정하자마자 
-시스템이 해당 변경을 기본 {@link android.content.SharedPreferences} 파일에 저장하여, 
-사용자의 설정을 확인해야 할 때 다른 애플리케이션 구성 요소가 이를 읽을 수 있도록 하기 때문입니다. 하지만 
+<p>사실 이 코드만으로 몇몇 앱에는 충분합니다. 사용자가 기본 설정을 수정하자마자
+시스템이 해당 변경을 기본 {@link android.content.SharedPreferences} 파일에 저장하여,
+사용자의 설정을 확인해야 할 때 다른 애플리케이션 구성 요소가 이를 읽을 수 있도록 하기 때문입니다. 하지만
 대다수의 앱은 기본 설정에 일어나는 변경을 수신 대기하기 위해 약간의 코드가 더 필요합니다.
-{@link android.content.SharedPreferences} 파일에 일어나는 변경을 수신 대기하는 데 관한 
+{@link android.content.SharedPreferences} 파일에 일어나는 변경을 수신 대기하는 데 관한
 자세한 정보는 <a href="#ReadingPrefs">기본 설정 읽기</a>에 관한 섹션을 참조하십시오.</p>
 
 
@@ -430,17 +430,17 @@
 
 <p>Android 3.0(API 레벨 11) 이상에 맞춰 개발하는 경우, {@link
 android.preference.PreferenceFragment}를 사용하여 {@link android.preference.Preference}
-객체 목록을 표시해야 합니다. {@link android.preference.PreferenceFragment}는 모든 액티비티에 추가할 수 있습니다. 즉, 
+객체 목록을 표시해야 합니다. {@link android.preference.PreferenceFragment}는 모든 액티비티에 추가할 수 있습니다. 즉,
 {@link android.preference.PreferenceActivity}를 사용하지 않아도 됩니다.</p>
 
-<p><a href="{@docRoot}guide/components/fragments.html">프래그먼트</a>는 액티비티만 
-사용하는 것에 비해 애플리케이션에 보다 유연한 아키텍처를 제공하며, 이는 구축하는 
+<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#onCreate onCreate()} 메서드를 정의하여 기본 설정 파일을
 {@link android.preference.PreferenceFragment#addPreferencesFromResource
 addPreferencesFromResource()}로 로딩하도록 하기만 하면 됩니다. 예:</p>
 
@@ -457,7 +457,7 @@
 }
 </pre>
 
-<p>그런 다음 이 프래그먼트를 {@link android.app.Activity}에 추가하기만 하면 되고, 이는 다른 모든 
+<p>그런 다음 이 프래그먼트를 {@link android.app.Activity}에 추가하기만 하면 되고, 이는 다른 모든
 {@link android.app.Fragment}에서와 마찬가지입니다. 예:</p>
 
 <pre>
@@ -474,24 +474,24 @@
 }
 </pre>
 
-<p class="note"><strong>참고:</strong> {@link android.preference.PreferenceFragment}에는 자신만의 
+<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()}를 호출하면 됩니다. 하지만,
+{@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>여러분이 만드는 기본 설정은 애플리케이션에 중요한 동작을 정의하는 경우가 많을 것입니다. 따라서
+연관된 {@link android.content.SharedPreferences} 파일을
+각 {@link android.preference.Preference}에 대한 기본 값으로 초기화하여 사용자가 애플리케이션을 처음 열 때
 적용하는 것이 중요합니다.</p>
 
 <p>가장 먼저 해야 할 일은 XML 파일 내의 각 {@link
 android.preference.Preference}
-객체에 대해 기본 값을 지정하는 것입니다. 이때 {@code android:defaultValue} 속성을 사용합니다. 이 값은 상응하는 
+객체에 대해 기본 값을 지정하는 것입니다. 이때 {@code android:defaultValue} 속성을 사용합니다. 이 값은 상응하는
 {@link android.preference.Preference} 객체에 대해 적절한 어느 데이터 유형이라도 될 수 있습니다. 예:
 </p>
 
@@ -507,8 +507,8 @@
     ... />
 </pre>
 
-<p>그런 다음, 애플리케이션의 기본 액티비티에 있는 {@link android.app.Activity#onCreate onCreate()} 
-메서드로부터&mdash;또한 사용자가 애플리케이션에 처음으로 들어올 통로가 될 수 있는 
+<p>그런 다음, 애플리케이션의 기본 액티비티에 있는 {@link android.app.Activity#onCreate onCreate()}
+메서드로부터&mdash;또한 사용자가 애플리케이션에 처음으로 들어올 통로가 될 수 있는
 다른 모든 액티비티도 포함&mdash;{@link android.preference.PreferenceManager#setDefaultValues
 setDefaultValues()}를 호출합니다.</p>
 
@@ -516,9 +516,9 @@
 PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
 </pre>
 
-<p>이것을 {@link android.app.Activity#onCreate onCreate()} 중에 호출하면 
-애플리케이션이 기본 설정으로 적절히 초기화되도록 보장할 수 있습니다. 이것은 애플리케이션이 
-몇 가지 동작을 결정하기 위해 읽어야 할 수도 있습니다(예를 들어 셀룰러 네트워크에서 데이터를 
+<p>이것을 {@link android.app.Activity#onCreate onCreate()} 중에 호출하면
+애플리케이션이 기본 설정으로 적절히 초기화되도록 보장할 수 있습니다. 이것은 애플리케이션이
+몇 가지 동작을 결정하기 위해 읽어야 할 수도 있습니다(예를 들어 셀룰러 네트워크에서 데이터를
 다운로드할지 여부 등).</p>
 
 <p>이 메서드는 다음과 같은 세 개의 인수를 취합니다.</p>
@@ -526,73 +526,73 @@
   <li>애플리케이션 {@link android.content.Context}.</li>
   <li>기본 값을 설정하고자 하는 기본 설정 XML 파일에 대한 리소스 ID입니다.</li>
   <li>기본 값을 한 번 이상 설정해야 하는지 여부를 나타내는 부울 값입니다.
-<p><code>false</code>인 경우, 시스템은 이 메서드가 전에 한 번도 호출된 적이 없을 경우에만 
+<p><code>false</code>인 경우, 시스템은 이 메서드가 전에 한 번도 호출된 적이 없을 경우에만
 기본 값을 설정합니다(아니면 기본 값을 공유한 기본 설정 파일에 있는 {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
 가 안전합니다).</p></li>
 </ul>
 
-<p>세 번째 인수를 <code>false</code>로 설정해 두는 한 이 메서드를 액티비티가 시작될 때마다 
-안전하게 호출할 수 있으며, 그렇게 해도 사용자의 저장된 기본 설정을 기본값으로 초기화하여 
-재정의하지 않습니다. 하지만 이를 <code>true</code>로 설정하면, 이전의 모든 값을 
+<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에 있는 
-새로운 "헤더" 기능을 사용해야 합니다. 이것이 중첩된 
+<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 파일이 하나씩 있어야 한다는 
+android.preference.PreferenceFragment} 인스턴스로 구분합니다. 다시 말해, 설정 그룹마다 별도의 XML 파일이 하나씩 있어야 한다는
 뜻입니다.</li>
-  <li>각 설정 그룹을 목록으로 나열하는 XML 헤더 파일을 생성하고 어느 프래그먼트에 
+  <li>각 설정 그룹을 목록으로 나열하는 XML 헤더 파일을 생성하고 어느 프래그먼트에
 상응하는 설정 목록이 들어있는지 선언합니다.</li>
   <li>{@link android.preference.PreferenceActivity} 클래스를 확장하여 설정을 호스팅하도록 합니다.</li>
   <li>{@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백을 구현하여 헤더 파일을 
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백을 구현하여 헤더 파일을
 나타냅니다.</li>
 </ol>
 
-<p>이 디자인을 사용하는 데 있어 커다란 이점은 {@link android.preference.PreferenceActivity}가 
+<p>이 디자인을 사용하는 데 있어 커다란 이점은 {@link android.preference.PreferenceActivity}가
 (앱이) 대형 화면에서 실행될 때 그림 4에서 나타낸 것과 같이 창 두 개짜리 레이아웃을 자동으로 표시한다는 것입니다.</p>
 
-<p>애플리케이션이 Android 3.0 이전 버전을 지원한다 하더라도 애플리케이션이 
-{@link android.preference.PreferenceFragment}를 사용하여 
-신형 기기에서 창 두 개짜리 표시를 지원하도록 하면서도 구형 기기에서는 일반적인 다중 화면 계층을 
-여전히 지원하도록 할 수도 있습니다(<a href="#BackCompatHeaders">기본 설정 헤더로 
+<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 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 class="img-caption"><strong>그림 5.</strong> 설정 헤더가 있는 핸드셋 기기입니다. 항목을 선택하면
+연관된 {@link android.preference.PreferenceFragment}가 헤더를
 대체합니다.</p>
 
 
 <h3 id="CreateHeaders" style="clear:left">헤더 파일 만들기</h3>
 
-<p>헤더 목록에 있는 각 설정 그룹은 루트 {@code &lt;preference-headers&gt;} 
+<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 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -607,12 +607,12 @@
 
 <p>{@code &lt;extras&gt;} 요소를 사용하면 키-값 쌍을 {@link
 android.os.Bundle} 내의 프래그먼트에 전달할 수 있게 해줍니다. 이 프래그먼트가 인수를 검색하려면 {@link
-android.app.Fragment#getArguments()}를 호출하면 됩니다. 인수를 프래그먼트에 전달하는 데에는 여러 가지 이유가 있을 수 있지만, 
+android.app.Fragment#getArguments()}를 호출하면 됩니다. 인수를 프래그먼트에 전달하는 데에는 여러 가지 이유가 있을 수 있지만,
 한 가지 중요한 이유를 예로 들면 각 그룹에 대해 {@link
-android.preference.PreferenceFragment}의 같은 하위 클래스를 재사용하고, 이 인수를 사용하여 해당 프래그먼트가 로딩해야 하는 
+android.preference.PreferenceFragment}의 같은 하위 클래스를 재사용하고, 이 인수를 사용하여 해당 프래그먼트가 로딩해야 하는
 기본 설정 XML 파일이 무엇인지 나타낼 수 있다는 점입니다.</p>
 
-<p>예를 들어 다음은 여러 가지 설정 그룹에 재사용할 수 있는 프래그먼트입니다. 이것은 
+<p>예를 들어 다음은 여러 가지 설정 그룹에 재사용할 수 있는 프래그먼트입니다. 이것은
 각 헤더가 {@code "settings"} 키로 {@code &lt;extra&gt;} 인수를 정의하는 경우를 나타낸 것입니다.</p>
 
 <pre>
@@ -636,7 +636,7 @@
 <h3 id="DisplayHeaders">헤더 표시하기</h3>
 
 <p>기본 설정 헤더를 표시하려면 {@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백 메서드를 구현하고 
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백 메서드를 구현하고
 {@link android.preference.PreferenceActivity#loadHeadersFromResource
 loadHeadersFromResource()}를 호출해야 합니다. 예:</p>
 
@@ -654,56 +654,56 @@
 
 <p class="note"><strong>참고:</strong> 기본 설정 헤더를 사용하는 경우, {@link
 android.preference.PreferenceActivity}의 하위 클래스가 {@link
-android.preference.PreferenceActivity#onCreate onCreate()} 메서드를 구현하지 않아도 됩니다. 액티비티에 대한 필수 작업은 
+android.preference.PreferenceActivity#onCreate onCreate()} 메서드를 구현하지 않아도 됩니다. 액티비티에 대한 필수 작업은
 헤더를 로딩하는 것뿐이기 때문입니다.</p>
 
 
 <h3 id="BackCompatHeaders">기본 설정 헤더로 이전 버전 지원하기</h3>
 
-<p>애플리케이션이 Android 3.0 이전 버전을 지원하는 경우에도 여전히 헤더를 사용하여 
-Android 3.0 이상에서 창 두 개짜리 레이아웃을 제공하도록 할 수 있습니다. 개발자가 해야 할 일은 추가로 기본 설정 XML 파일을 
+<p>애플리케이션이 Android 3.0 이전 버전을 지원하는 경우에도 여전히 헤더를 사용하여
+Android 3.0 이상에서 창 두 개짜리 레이아웃을 제공하도록 할 수 있습니다. 개발자가 해야 할 일은 추가로 기본 설정 XML 파일을
 생성하는 것뿐입니다. 이 파일은 마치 헤더 항목처럼 동작하는 기본적인 {@link android.preference.Preference
-&lt;Preference&gt;} 요소를 사용합니다(이것을 이전 Android 버전이 사용하도록 
+&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 파일이 무엇인지를 
+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> 
+<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 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &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 이전 버전에 같은 헤더를 제공하는 기본 설정 
+<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 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -711,13 +711,13 @@
 &lt;/PreferenceScreen>
 </pre>
 
-<p>{@code &lt;preference-headers&gt;}에 대한 지원이 Android 3.0에서 추가되었기 때문에 시스템이 
+<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.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()}를 호출하여 
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여
 레거시 헤더 파일을 로딩해야 합니다. 예:</p>
 
 <pre>
@@ -739,8 +739,8 @@
 }
 </pre>
 
-<p>이제 남은 할 일이라고는 {@link android.content.Intent}를 처리하는 것뿐입니다. 이것은 
-액티비티로 전달되어 어느 기본 설정 파일을 로딩해야 하는지 식별하는 데 쓰입니다. 그럼 이제 인텐트의 작업을 검색하여 기본 설정 XML의 
+<p>이제 남은 할 일이라고는 {@link android.content.Intent}를 처리하는 것뿐입니다. 이것은
+액티비티로 전달되어 어느 기본 설정 파일을 로딩해야 하는지 식별하는 데 쓰입니다. 그럼 이제 인텐트의 작업을 검색하여 기본 설정 XML의
 {@code &lt;intent&gt;} 태그에서 사용한 알려진 작업 문자열에 비교해보겠습니다.</p>
 
 <pre>
@@ -765,8 +765,8 @@
 </pre>
 
 <p>{@link
-android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 연이어 호출하면 
-모든 기본 설정을 하나의 목록에 쌓게 된다는 점을 유의하십시오. 따라서 이것은 'Else-if' 문이 있는 조건을 변경하여 딱 한 번만 
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 연이어 호출하면
+모든 기본 설정을 하나의 목록에 쌓게 된다는 점을 유의하십시오. 따라서 이것은 'Else-if' 문이 있는 조건을 변경하여 딱 한 번만
 호출하도록 주의해야 합니다.</p>
 
 
@@ -775,15 +775,15 @@
 
 <h2 id="ReadingPrefs">기본 설정 읽기</h2>
 
-<p>기본적으로 앱의 기본 설정은 모두 
+<p>기본적으로 앱의 기본 설정은 모두
 애플리케이션 내의 어디서든 정적 메서드 {@link
 android.preference.PreferenceManager#getDefaultSharedPreferences
 PreferenceManager.getDefaultSharedPreferences()}를 호출하면 액세스할 수 있는 파일에 저장됩니다. 이것은 {@link
 android.content.SharedPreferences} 객체를 반환하며, 여기에 {@link
-android.preference.PreferenceActivity}에서 사용한 {@link android.preference.Preference} 객체와 
+android.preference.PreferenceActivity}에서 사용한 {@link android.preference.Preference} 객체와
 연관된 모든 키-값 쌍이 들어있습니다.</p>
 
-<p>예를 들어 다음은 기본 설정 값 중 하나를 애플리케이션 내의 다른 모든 액티비티에서 읽는 방법을 
+<p>예를 들어 다음은 기본 설정 값 중 하나를 애플리케이션 내의 다른 모든 액티비티에서 읽는 방법을
 나타낸 것입니다.</p>
 
 <pre>
@@ -795,17 +795,17 @@
 
 <h3 id="Listening">기본 설정 변경 수신 대기</h3>
 
-<p>사용자가 기본 설정 중 하나를 변경하자마자 이에 대해 알림을 받는 것이 좋은 데에는 몇 가지 
-이유가 있습니다. 기본 설정 중 어느 하나에라도 변경이 발생했을 때 콜백을 받으려면, 
+<p>사용자가 기본 설정 중 하나를 변경하자마자 이에 대해 알림을 받는 것이 좋은 데에는 몇 가지
+이유가 있습니다. 기본 설정 중 어느 하나에라도 변경이 발생했을 때 콜백을 받으려면,
 {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
-SharedPreference.OnSharedPreferenceChangeListener} 인터페이스를 구현하고 
+SharedPreference.OnSharedPreferenceChangeListener} 인터페이스를 구현하고
 {@link android.content.SharedPreferences} 객체에 대한 수신기를 등록합니다. 이때 {@link
 android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
 registerOnSharedPreferenceChangeListener()}를 호출하면 됩니다.</p>
 
 <p>이 인터페이스에는 콜백 메서드가 {@link
 android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
-onSharedPreferenceChanged()} 하나뿐이며, 인터페이스를 액티비티의 일부분으로 구현하는 것이 
+onSharedPreferenceChanged()} 하나뿐이며, 인터페이스를 액티비티의 일부분으로 구현하는 것이
 가장 쉬운 방법일 공산이 큽니다. 예:</p>
 
 <pre>
@@ -825,19 +825,19 @@
 }
 </pre>
 
-<p>이 예시에서 메서드는 변경된 설정이 알려진 기본 설정 키에 대한 것인지 여부를 확인합니다. 이것은 
-{@link android.preference.PreferenceActivity#findPreference findPreference()}를 호출하여 
-변경된 {@link android.preference.Preference} 객체를 가져오는데, 이렇게 해야 항목의 요약을 수정하여 
+<p>이 예시에서 메서드는 변경된 설정이 알려진 기본 설정 키에 대한 것인지 여부를 확인합니다. 이것은
+{@link android.preference.PreferenceActivity#findPreference findPreference()}를 호출하여
+변경된 {@link android.preference.Preference} 객체를 가져오는데, 이렇게 해야 항목의 요약을 수정하여
 사용자의 선택에 대한 설명이 되도록 할 수 있습니다. 다시 말해, 설정이 {@link
 android.preference.ListPreference} 또는 다른 다중 선택 설정인 경우, 설정이 변경되어 현재 상태를 표시하도록 하면 {@link
-android.preference.Preference#setSummary setSummary()}를 호출해야 한다는 뜻입니다(예를 들어 
+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 class="note"><strong>참고:</strong> Android 디자인 문서의 <a href="{@docRoot}design/patterns/settings.html">설정</a> 관련 내용에서 설명한 바와 같이, 사용자가 기본 설정을 변경할 때마다
+{@link android.preference.ListPreference}의 요약을 업데이트하는 것을 권장합니다. 이렇게 하여 현재 설정을
 나타내는 것입니다.</p>
 
-<p>액티비티에서 적절한 수명 주기 관리를 수행하려면 
+<p>액티비티에서 적절한 수명 주기 관리를 수행하려면
 {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener}를 등록하고 등록 해제하는 작업은 각각 {@link
 android.app.Activity#onResume} 및 {@link android.app.Activity#onPause} 콜백 중에 수행하는 것을 권장합니다.</p>
 
@@ -859,14 +859,14 @@
 
 <p class="caution"><strong>주의:</strong> {@link
 android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
-registerOnSharedPreferenceChangeListener()}를 호출하면 
-현재의 경우, 기본 설정 관리자가 수신기에 대한 강력한 참조를 저장하지 않습니다. 반드시 수신기에 대한 강력한 
-참조를 저장해야 합니다. 그렇지 않으면 가비지 수집의 대상이 될 가능성이 높습니다. 권장 사항으로는 
-수신기를 객체의 인스턴스 데이터 안에 보관하는 것을 추천합니다. 이 객체는 
+registerOnSharedPreferenceChangeListener()}를 호출하면
+현재의 경우, 기본 설정 관리자가 수신기에 대한 강력한 참조를 저장하지 않습니다. 반드시 수신기에 대한 강력한
+참조를 저장해야 합니다. 그렇지 않으면 가비지 수집의 대상이 될 가능성이 높습니다. 권장 사항으로는
+수신기를 객체의 인스턴스 데이터 안에 보관하는 것을 추천합니다. 이 객체는
 수신기를 필요로 하는 기간만큼 오래 존재할 것이 확실해야 합니다.</p>
 
-<p>예를 들어 다음 코드에서 발신자는 수신기에 대한 참조를 
-보관하지 않습니다. 그 결과 해당 수신기가 가비지 수집의 대상이 되며 
+<p>예를 들어 다음 코드에서 발신자는 수신기에 대한 참조를
+보관하지 않습니다. 그 결과 해당 수신기가 가비지 수집의 대상이 되며
 향후 언젠가 알 수 없는 시점에 고장을 일으키게 될 것입니다.</p>
 
 <pre>
@@ -879,7 +879,7 @@
 });
 </pre>
 
-<p>대신, 수신기에 대한 참조를 수신기가 필요한 기간만큼 오래 존재할 것이 확실한 객체의 
+<p>대신, 수신기에 대한 참조를 수신기가 필요한 기간만큼 오래 존재할 것이 확실한 객체의
 인스턴스 데이터 필드에 저장하십시오.</p>
 
 <pre>
@@ -895,19 +895,19 @@
 <h2 id="NetworkUsage">네트워크 사용량 관리하기</h2>
 
 
-<p>Android 4.0부터 시스템의 설정 애플리케이션을 사용하면 사용자가 
-애플리케이션이 전경과 배경에 있는 동안 각각 얼마나 많은 네트워크 데이터를 사용하는지 알아볼 수 있게 되었습니다. 그런 다음 
-사용자는 각각의 앱에 대해 배경 데이터 사용을 비활성화할 수 있습니다. 사용자가 여러분의 앱이 배경에서 
-데이터에 액세스하는 기능을 비활성화하는 사태를 피하려면 데이터 연결을 효율적으로 사용하고 
+<p>Android 4.0부터 시스템의 설정 애플리케이션을 사용하면 사용자가
+애플리케이션이 전경과 배경에 있는 동안 각각 얼마나 많은 네트워크 데이터를 사용하는지 알아볼 수 있게 되었습니다. 그런 다음
+사용자는 각각의 앱에 대해 배경 데이터 사용을 비활성화할 수 있습니다. 사용자가 여러분의 앱이 배경에서
+데이터에 액세스하는 기능을 비활성화하는 사태를 피하려면 데이터 연결을 효율적으로 사용하고
 사용자가 애플리케이션 설정을 통하여 앱의 데이터 사용량을 미세 조정할 수 있도록 허용해야 합니다.<p>
 
-<p>예를 들어 사용자에게 앱의 데이터 동기화 빈도를 제어하도록 허용할 수 있습니다. 앱이 Wi-Fi에 있을 때에만 
-업로드/다운로드를 수행하도록 할지 여부, 앱이 로밍 중에 데이터를 사용하도록 할지 여부 등을 이렇게 조절합니다. 사용자가 
-이러한 제어 기능을 사용할 수 있게 되면 시스템 설정에서 설정한 한도에 가까워지고 
-있을 때 앱의 데이터 액세스를 비활성화할 가능성이 낮아집니다. 그 대신 앱이 사용하는 데이터 양을 
+<p>예를 들어 사용자에게 앱의 데이터 동기화 빈도를 제어하도록 허용할 수 있습니다. 앱이 Wi-Fi에 있을 때에만
+업로드/다운로드를 수행하도록 할지 여부, 앱이 로밍 중에 데이터를 사용하도록 할지 여부 등을 이렇게 조절합니다. 사용자가
+이러한 제어 기능을 사용할 수 있게 되면 시스템 설정에서 설정한 한도에 가까워지고
+있을 때 앱의 데이터 액세스를 비활성화할 가능성이 낮아집니다. 그 대신 앱이 사용하는 데이터 양을
 정밀하게 제어할 수 있기 때문입니다.</p>
 
-<p>일단 필요한 기본 설정을 {@link android.preference.PreferenceActivity}에 
+<p>일단 필요한 기본 설정을 {@link android.preference.PreferenceActivity}에
 추가하여 앱의 데이터 습관을 제어하도록 했으면, 다음으로 매니페스트 파일에 있는 {@link
 android.content.Intent#ACTION_MANAGE_NETWORK_USAGE}에 대한 인텐트 필터를 추가해야 합니다. 예:</p>
 
@@ -920,10 +920,10 @@
 &lt;/activity>
 </pre>
 
-<p>이 인텐트 필터는 이것이 애플리케이션의 데이터 사용량을 제어하는 액티비티라는 
-사실을 시스템에 나타내는 역할을 합니다. 따라서, 사용자가 시스템의 설정 앱에서 여러분의 앱이 
-얼마나 많은 데이터를 사용하는지 알아볼 때면 <em>애플리케이션 설정 보기</em> 버튼을 사용할 수 있어 
-{@link android.preference.PreferenceActivity}를 시작하게 됩니다. 그러면 사용자는 
+<p>이 인텐트 필터는 이것이 애플리케이션의 데이터 사용량을 제어하는 액티비티라는
+사실을 시스템에 나타내는 역할을 합니다. 따라서, 사용자가 시스템의 설정 앱에서 여러분의 앱이
+얼마나 많은 데이터를 사용하는지 알아볼 때면 <em>애플리케이션 설정 보기</em> 버튼을 사용할 수 있어
+{@link android.preference.PreferenceActivity}를 시작하게 됩니다. 그러면 사용자는
 앱이 사용할 데이터 양을 미세하게 조정할 수 있습니다.</p>
 
 
@@ -934,22 +934,22 @@
 
 <h2 id="Custom">사용자 지정 기본 설정 구축하기</h2>
 
-<p>Android 프레임워크에는 다양한 {@link android.preference.Preference} 하위 클래스가 포함되어 있어 
-여러 가지 설정 유형에 맞게 UI를 구축할 수 있습니다. 
-하지만, 기본 제공 솔루션이 없는 설정이 필요하게 되는 경우도 있습니다. 예를 들어 숫자 선택기 또는 
-날짜 선택기 등이 이에 해당됩니다. 그러한 경우에는 사용자 지정 기본 설정을 만들어야 합니다. 이때 
+<p>Android 프레임워크에는 다양한 {@link android.preference.Preference} 하위 클래스가 포함되어 있어
+여러 가지 설정 유형에 맞게 UI를 구축할 수 있습니다.
+하지만, 기본 제공 솔루션이 없는 설정이 필요하게 되는 경우도 있습니다. 예를 들어 숫자 선택기 또는
+날짜 선택기 등이 이에 해당됩니다. 그러한 경우에는 사용자 지정 기본 설정을 만들어야 합니다. 이때
 {@link android.preference.Preference} 클래스 또는 다른 하위 클래스 중 하나를 확장하는 방법을 씁니다.</p>
 
-<p>{@link android.preference.Preference} 클래스를 확장하는 경우, 다음과 같이 
+<p>{@link android.preference.Preference} 클래스를 확장하는 경우, 다음과 같이
 몇 가지 중요한 해야 할 일이 있습니다.</p>
 
 <ul>
   <li>사용자가 설정을 선택하면 나타나는 사용자 인터페이스를 지정합니다.</li>
   <li>필요에 따라 설정의 값을 저장합니다.</li>
-  <li>{@link android.preference.Preference}가 보이게 되면 
+  <li>{@link android.preference.Preference}가 보이게 되면
 이를 현재(또는 기본) 값으로 초기화합니다.</li>
   <li>시스템이 요청하는 경우 기본 값을 제공합니다.</li>
-  <li>{@link android.preference.Preference}가 나름의 UI(예: 대화)를 제공하는 경우, 상태를 
+  <li>{@link android.preference.Preference}가 나름의 UI(예: 대화)를 제공하는 경우, 상태를
 저장하고 복원하여 수명 주기 변경을 처리할 수 있도록 합니다(예: 사용자가 화면을 돌리는 경우).</li>
 </ul>
 
@@ -959,27 +959,27 @@
 
 <h3 id="CustomSelected">사용자 인터페이스 지정하기</h3>
 
-  <p>{@link android.preference.Preference} 클래스를 직접 확장하는 경우, 
-{@link android.preference.Preference#onClick()}을 구현하여 사용자가 
-항목을 선택할 때 일어날 동작을 정의해야 합니다. 그러나, 대부분의 사용자 지정 설정은 {@link android.preference.DialogPreference}를 확장하여 
+  <p>{@link android.preference.Preference} 클래스를 직접 확장하는 경우,
+{@link android.preference.Preference#onClick()}을 구현하여 사용자가
+항목을 선택할 때 일어날 동작을 정의해야 합니다. 그러나, 대부분의 사용자 지정 설정은 {@link android.preference.DialogPreference}를 확장하여
 대화를 표시하도록 합니다. 이렇게 하면 절차가 단순해집니다. {@link
 android.preference.DialogPreference}를 확장하는 경우에는 클래스 생성자 중에 반드시 {@link
-android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}를 호출하여 
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}를 호출하여
 대화에 대한 레이아웃을 지정해야 합니다.</p>
 
   <p>예를 들어 다음은 레이아웃을 선언하는 사용자 지정 {@link
-android.preference.DialogPreference}와 기본 
+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);
     }
     ...
@@ -992,21 +992,21 @@
 
 <p>설정에 대한 값은 언제든 저장할 수 있습니다. {@link
 android.preference.Preference} 클래스의 {@code persist*()} 메서드 중 하나를 호출하기만 하면 됩니다. 예를 들어 설정의 값이 정수인 경우 {@link
-android.preference.Preference#persistInt persistInt()}를, 부울을 저장하려면 
+android.preference.Preference#persistInt persistInt()}를, 부울을 저장하려면
 {@link android.preference.Preference#persistBoolean persistBoolean()}을 호출하십시오.</p>
 
-<p class="note"><strong>참고:</strong> 각각의 {@link android.preference.Preference}는 데이터 유형 하나씩만 
-저장할 수 있으므로, 사용자 지정 
+<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}를 확장하면 값을 유지하는 것은 대화가 긍정적인 결과로 인해 
+android.preference.DialogPreference}를 확장하면 값을 유지하는 것은 대화가 긍정적인 결과로 인해
 닫히는 경우만으로 국한해야 합니다(사용자가 "확인(OK)" 버튼을 선택하는 경우).</p>
 
 <p>{@link android.preference.DialogPreference}가 닫히면 시스템이 {@link
-android.preference.DialogPreference#onDialogClosed onDialogClosed()} 메서드를 호출합니다. 이 메서드에는 
-부울 인수가 포함되어 있어 사용자의 결과가 "긍정적"인지 아닌지를 나타냅니다. 이 값이 
+android.preference.DialogPreference#onDialogClosed onDialogClosed()} 메서드를 호출합니다. 이 메서드에는
+부울 인수가 포함되어 있어 사용자의 결과가 "긍정적"인지 아닌지를 나타냅니다. 이 값이
 <code>true</code>인 경우, 사용자가 긍정적 버튼을 선택한 것이고 새 값을 저장해야 합니다. 예:
 </p>
 
@@ -1020,29 +1020,29 @@
 }
 </pre>
 
-<p>이 예시에서 <code>mNewValue</code>는 설정의 현재 값을 보유한 클래스 
-구성원입니다. {@link android.preference.Preference#persistInt persistInt()}를 호출하면 
-{@link android.content.SharedPreferences} 파일에 대한 값을 저장합니다(이 
+<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>시스템이 {@link android.preference.Preference}를 화면에 추가하는 경우, 이는
+{@link android.preference.Preference#onSetInitialValue onSetInitialValue()}를 호출하여
+설정에 유지된 값이 있는지 없는지를 알립니다. 유지된 값이 없는 경우, 이 호출은 기본 값을
 제공합니다.</p>
 
-<p>{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} 메서드는 
-부울 값 <code>restorePersistedValue</code>를 전달하여 해당 설정에 대해 이미 어떤 값이 유지되었는지 
-아닌지를 나타냅니다. 만일 이것이 <code>true</code>라면, 유지된 값을 검색하되 
+<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에 이전에 저장된 값을 반영하여 이를 적절하게 업데이트할 수 
+android.preference.Preference#getPersistedInt getPersistedInt()}를 사용합니다. 보통은
+유지된 값을 검색하여, UI에 이전에 저장된 값을 반영하여 이를 적절하게 업데이트할 수
 있도록 하는 것이 좋습니다.</p>
 
-<p><code>restorePersistedValue</code>가 <code>false</code>인 경우, 
+<p><code>restorePersistedValue</code>가 <code>false</code>인 경우,
 두 번째 인수로 전달된 기본 값을 사용해야 합니다.</p>
 
 <pre>
@@ -1059,22 +1059,22 @@
 }
 </pre>
 
-<p>각 {@code getPersisted*()} 메서드는 기본 값을 나타내는 인수를 취하여 
-사실은 유지된 값이 전혀 없거나 키 자체가 존재하지 않는 경우 사용하도록 합니다. 위의 
+<p>각 {@code getPersisted*()} 메서드는 기본 값을 나타내는 인수를 취하여
+사실은 유지된 값이 전혀 없거나 키 자체가 존재하지 않는 경우 사용하도록 합니다. 위의
 예시에서는 혹시 {@link
 android.preference.Preference#getPersistedInt getPersistedInt()}가 유지된 값을 반환할 수 없는 경우에 사용하도록 기본 값을 나타내는 데 로컬 상수를 사용하였습니다.</p>
 
-<p class="caution"><strong>주의:</strong> {@code getPersisted*()} 메서드에서는 
-<code>defaultValue</code>를 기본 값으로 사용하면 <strong>안 됩니다</strong>. 이것의 값은 
+<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} 속성으로), 시스템은 
+({@code android:defaultValue} 속성으로), 시스템은
 값을 검색하기 위해 객체를 인스턴트화할 때 {@link android.preference.Preference#onGetDefaultValue
-onGetDefaultValue()}를 호출합니다. 이 메서드를 구현해야 
+onGetDefaultValue()}를 호출합니다. 이 메서드를 구현해야
 시스템이 {@link
 android.content.SharedPreferences}에 있는 기본 값을 저장할 수 있습니다. 예:</p>
 
@@ -1085,9 +1085,9 @@
 }
 </pre>
 
-<p>이 메서드 인수가 여러분에게 필요한 모든 것을 제공합니다. 즉 속성 배열과 
-{@code android:defaultValue}의 위치로, 이는 반드시 검색해야 합니다. 이 메서드를 
-반드시 구현하여 속성에서 기본 값을 추출해야만 하는 이유는 값이 정의되지 않은 경우, 속성에 대한 
+<p>이 메서드 인수가 여러분에게 필요한 모든 것을 제공합니다. 즉 속성 배열과
+{@code android:defaultValue}의 위치로, 이는 반드시 검색해야 합니다. 이 메서드를
+반드시 구현하여 속성에서 기본 값을 추출해야만 하는 이유는 값이 정의되지 않은 경우, 속성에 대한
 로컬 기본 값을 꼭 지정해야 하기 때문입니다.</p>
 
 
@@ -1095,25 +1095,25 @@
 <h3 id="CustomSaveState">기본 설정의 상태 저장 및 복원하기</h3>
 
 <p>레이아웃에서의 {@link android.view.View}와 마찬가지로 {@link android.preference.Preference}
-하위 클래스가 액티비티 또는 프래그먼트가 재시작했을 때 
-그 상태를 저장하고 복원하는 역할을 맡습니다(예를 들어 사용자가 화면을 돌리는 경우 등). 
-{@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 프레임워크는 
+<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} 클래스를 확장해야 합니다. 아주 약간의 메서드를 재정의하고 
+<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>대부분의 앱에서는 다음과 같은 구현을 복사한 다음,
+{@code value}를 처리하는 줄만 변경하면 됩니다. 이는 {@link android.preference.Preference} 하위 클래스가 정수보다는 데이터
 유형을 저장하는 경우 해당됩니다.</p>
 
 <pre>
@@ -1154,11 +1154,11 @@
 }
 </pre>
 
-<p>위의 {@link android.preference.Preference.BaseSavedState} 구현을 앱에 
-추가하고 나면(주로 {@link android.preference.Preference} 하위 클래스의 하위 클래스로), 이제 
+<p>위의 {@link android.preference.Preference.BaseSavedState} 구현을 앱에
+추가하고 나면(주로 {@link android.preference.Preference} 하위 클래스의 하위 클래스로), 이제
 {@link android.preference.Preference#onSaveInstanceState
 onSaveInstanceState()} 및 {@link
-android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 메서드를 구현해야 합니다. 이것은 
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 메서드를 구현해야 합니다. 이것은
 {@link android.preference.Preference} 하위 클래스를 위한 것입니다.</p>
 
 <p>예:</p>
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index b059bd2..427051c 100644
--- a/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
@@ -16,67 +16,67 @@
 </div>
 </div>
 
-<p>Android에는 사용자와 애플리케이션의 상호 작용으로부터 이벤트를 가로채는 방법이 여러 가지 있습니다. 
-사용자 인터페이스 내의 이벤트가 관련된 경우, 이러한 방식은 이벤트를 사용자가 상호 작용하는 
+<p>Android에는 사용자와 애플리케이션의 상호 작용으로부터 이벤트를 가로채는 방법이 여러 가지 있습니다.
+사용자 인터페이스 내의 이벤트가 관련된 경우, 이러한 방식은 이벤트를 사용자가 상호 작용하는
 특정 보기 객체로부터 캡처하는 것입니다. 이에 필요한 수단은 보기 클래스가 제공합니다.</p>
 
-<p>레이아웃을 작성하는 데 사용하게 되는 여러 가지 보기 클래스 안을 보면 UI 이벤트에 유용해 보이는 공개 콜백 
-메서드가 여러 개 있는 것이 눈에 띕니다. 이러한 메서드는 해당 객체에서 각각의 작업이 발생할 때 Android 프레임워크가 
-호출하는 것입니다. 예를 들어 보기(예: 버튼)를 하나 터치하면 
-해당 객체에서 <code>onTouchEvent()</code> 메서드가 호출됩니다. 그러나 이것을 가로채려면 클래스를 확장하고 
-메서드를 재정의해야 합니다. 다만 그런 이벤트를 처리하기 위해 모든 보기 객체를 
-다 확장하는 것은 타당성이 없습니다. 이 때문에 보기 클래스에 
-일련의 중첩된 인터페이스가 있고 거기에 훨씬 쉽게 정의할 수 있는 콜백에 있습니다. 이와 같은 
+<p>레이아웃을 작성하는 데 사용하게 되는 여러 가지 보기 클래스 안을 보면 UI 이벤트에 유용해 보이는 공개 콜백
+메서드가 여러 개 있는 것이 눈에 띕니다. 이러한 메서드는 해당 객체에서 각각의 작업이 발생할 때 Android 프레임워크가
+호출하는 것입니다. 예를 들어 보기(예: 버튼)를 하나 터치하면
+해당 객체에서 <code>onTouchEvent()</code> 메서드가 호출됩니다. 그러나 이것을 가로채려면 클래스를 확장하고
+메서드를 재정의해야 합니다. 다만 그런 이벤트를 처리하기 위해 모든 보기 객체를
+다 확장하는 것은 타당성이 없습니다. 이 때문에 보기 클래스에
+일련의 중첩된 인터페이스가 있고 거기에 훨씬 쉽게 정의할 수 있는 콜백에 있습니다. 이와 같은
 인터페이스를 일명 <a href="#EventListeners">이벤트 수신기</a>라고 하는데, 이것이 UI와 사용자 상호 작용을 캡처하는 데 아주 적합합니다.</p>
 
-<p>사용자 상호 작용을 수신 대기하는 데에는 이벤트 수신기를 사용하는 것이 좀 더 보편적이지만, 사용자 지정 
-구성 요소를 구축하기 위해 보기 클래스를 확장하고자 하는 상황이 올 수도 있습니다. 
+<p>사용자 상호 작용을 수신 대기하는 데에는 이벤트 수신기를 사용하는 것이 좀 더 보편적이지만, 사용자 지정
+구성 요소를 구축하기 위해 보기 클래스를 확장하고자 하는 상황이 올 수도 있습니다.
 어쩌면 {@link android.widget.Button}
-클래스를 확장하여 무언가 더 복잡한 것을 만들고자 할 수도 있습니다. 이런 경우, 클래스에 대한 기본 이벤트 행동을 클래스 
+클래스를 확장하여 무언가 더 복잡한 것을 만들고자 할 수도 있습니다. 이런 경우, 클래스에 대한 기본 이벤트 행동을 클래스
 <a href="#EventHandlers">이벤트 처리기</a>를 사용하여 정의할 수 있습니다.</p>
 
 
 <h2 id="EventListeners">이벤트 수신기</h2>
 
-<p>이벤트 수신기란 {@link android.view.View} 클래스 내에 있는 일종의 인터페이스로, 이 안에 하나의 
-콜백 메서드가 들어있습니다. 이러한 메서드는 수신기가 등록된 보기가 UI 안의 항목과 사용자의 상호 작용으로 인하여 트리거되었을 때 
+<p>이벤트 수신기란 {@link android.view.View} 클래스 내에 있는 일종의 인터페이스로, 이 안에 하나의
+콜백 메서드가 들어있습니다. 이러한 메서드는 수신기가 등록된 보기가 UI 안의 항목과 사용자의 상호 작용으로 인하여 트리거되었을 때
 Android 프레임워크가 호출하는 것입니다.</p>
 
 <p>이벤트 수신기 인터페이스에 포함된 콜백 메서드는 다음과 같습니다.</p>
 
 <dl>
   <dt><code>onClick()</code></dt>
-    <dd>{@link android.view.View.OnClickListener}에서 온 것입니다. 
+    <dd>{@link android.view.View.OnClickListener}에서 온 것입니다.
 이것이 호출되는 것은 사용자가 항목을 터치하거나
-(터치 모드에 있을 때), 탐색 키 또는 트랙볼을 사용하여 해당 항목에 초점을 맞추고 있으면서 
+(터치 모드에 있을 때), 탐색 키 또는 트랙볼을 사용하여 해당 항목에 초점을 맞추고 있으면서
 적절한 "엔터" 키를 누르거나 트랙볼을 꾹 누를 때입니다.</dd>
   <dt><code>onLongClick()</code></dt>
-    <dd>{@link android.view.View.OnLongClickListener}에서 온 것입니다. 
-이것이 호출되는 것은 사용자가 항목을 길게 누르거나(터치 모드에 있을 때), 
-탐색 키 또는 트랙볼을 사용하여 해당 항목에 초점을 맞추고 있으면서 
+    <dd>{@link android.view.View.OnLongClickListener}에서 온 것입니다.
+이것이 호출되는 것은 사용자가 항목을 길게 누르거나(터치 모드에 있을 때),
+탐색 키 또는 트랙볼을 사용하여 해당 항목에 초점을 맞추고 있으면서
 적절한 "엔터" 키를 누르거나 트랙볼을 꾹 누를 때입니다(일 초간).</dd>
   <dt><code>onFocusChange()</code></dt>
-    <dd>{@link android.view.View.OnFocusChangeListener}에서 온 것입니다. 
+    <dd>{@link android.view.View.OnFocusChangeListener}에서 온 것입니다.
 이것이 호출되는 것은 사용자가 탐색 키 또는 트랙볼을 사용하여 항목 쪽으로 이동하거나 항목에서 멀어질 때입니다.</dd>
   <dt><code>onKey()</code></dt>
-    <dd>{@link android.view.View.OnKeyListener}에서 온 것입니다. 
+    <dd>{@link android.view.View.OnKeyListener}에서 온 것입니다.
 이것이 호출되는 것은 사용자가 항목에 초점을 맞추고 있으면서 기기에 있는 하드웨어 키를 누르거나 키에서 손을 떼는 경우입니다.</dd>
   <dt><code>onTouch()</code></dt>
-    <dd>{@link android.view.View.OnTouchListener}에서 온 것입니다. 
-이것이 호출되는 것은 사용자가 터치 이벤트로서의 자격을 만족하는 작업을 수행하는 경우로, 여기에 
+    <dd>{@link android.view.View.OnTouchListener}에서 온 것입니다.
+이것이 호출되는 것은 사용자가 터치 이벤트로서의 자격을 만족하는 작업을 수행하는 경우로, 여기에
 누르기, 손 떼기와 화면에서 이루어지는 모든 움직임 동작(항목의 경계 내에서)이 포함됩니다.</dd>
   <dt><code>onCreateContextMenu()</code></dt>
-    <dd>{@link android.view.View.OnCreateContextMenuListener}에서 온 것입니다. 
-이것을 호출하는 것은 컨텍스트 메뉴가 구축되는 중일 때입니다(정체된 "롱 클릭"의 결과로). 
+    <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>를 
+<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>
@@ -117,57 +117,57 @@
 }
 </pre>
 
-<p>위의 예시에서 <code>onClick()</code> 콜백에는 
-반환 값이 없지만 다른 이벤트 수신기 메서드 중에는 부울 값을 반환해야만 하는 것도 있다는 점을 유의하십시오. 그 이유는 이벤트에 따라 
+<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> - 
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
 이것은 부울 값을 반환하여 이벤트를 완전히 사용하였으며 더 이상 이를 담지 않아도 되는지 여부를 나타냅니다.
-    다시 말해, <em>참</em>을 반환하면 이벤트를 처리했으며 여기에서 중단해야 한다는 것을 의미하며 
-<em>거짓</em>을 반환하면 이벤트가 아직 미처리 상태이며/거나 이 이벤트를 다른 
+다시 말해, <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><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
+이것은 부울 값을 반환하여 수신기가 이 이벤트를 사용하는지 아닌지를 나타냅니다. 여기서 중요한 점은
+이 이벤트에는 서로 연달아 발생하는 여러 개의 작업이 있을 수 있다는 것입니다. 그러므로 '아래로' 작업 이벤트를 수신했을 때 <em>거짓</em>을 반환하면,
+해당 이벤트를 사용하지 않았으며 이 이벤트로부터 이어지는 이후의 작업에
+흥미가 없음을 나타내는 것이 됩니다. 따라서 이 이벤트 내의 다른 모든 작업에 대해
 호출되지 않습니다(예: 손가락 동작 또는 최종적인 '위로' 작업 이벤트 등).</li>
 </ul>
 
-<p>하드웨어 키 이벤트는 항상 현재 초점의 중심에 있는 보기로 전달된다는 점을 명심하십시오. 이들은 보기 계층의 맨 위에서 시작하여 
-아래 방향으로 발송되어 적절한 목적지에 도달할 때까지 계속합니다. 보기(또는 보기의 하위)에 
+<p>하드웨어 키 이벤트는 항상 현재 초점의 중심에 있는 보기로 전달된다는 점을 명심하십시오. 이들은 보기 계층의 맨 위에서 시작하여
+아래 방향으로 발송되어 적절한 목적지에 도달할 때까지 계속합니다. 보기(또는 보기의 하위)에
 현재 초점이 맞춰져 있으면, 이벤트가 <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
-dispatchKeyEvent()}</code> 메서드를 통과하여 이동하는 것을 확인할 수 있습니다. 보기를 통해 키 이벤트를 캡처하는 대신, 액티비티 내부의 모든 이벤트를 <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>및 
+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>또한, 애플리케이션에 대한 텍스트 입력의 경우 대다수의 기기에는 소프트웨어 입력 메서드만 있다는 사실을
+명심하십시오. 그러한 메서드는 반드시 키 기반이 아니어도 됩니다. 음성 입력, 손글씨 등을 사용하는 것도 있습니다. 입력
+메서드가 키보드 같은 인터페이스를 표시하더라도 일반적으로
+<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>을 반환하면 이벤트가 
-다른 이벤트 수신기로 전파되는 것을 중지시킬 뿐만 아니라 보기에 있는 
+<p class="note"><strong>참고:</strong> Androids는 우선 이벤트 처리기부터 호출하고, 그 다음에 클래스 정의로부터 가져온
+적절한 기본 처리기를 두 번째로 호출합니다. 따라서, 이와 같은 이벤트 수신기에서 <em>참</em>을 반환하면 이벤트가
+다른 이벤트 수신기로 전파되는 것을 중지시킬 뿐만 아니라 보기에 있는
 기본 이벤트 처리기로의 콜백도 차단하게 됩니다. 따라서 <em>참</em>을 반환하는 경우 해당 이벤트를 종료하고 싶은 것인지 확신해야 합니다.</p>
 
 
 <h2 id="EventHandlers">이벤트 처리기</h2>
 
-<p>보기에서 사용자 지정 구성 요소를 구축하는 경우, 기본 이벤트 처리기로 사용될 콜백 메서드를 
+<p>보기에서 사용자 지정 구성 요소를 구축하는 경우, 기본 이벤트 처리기로 사용될 콜백 메서드를
 여러 개 정의할 수 있게 됩니다.
 <a href="{@docRoot}guide/topics/ui/custom-components.html">사용자 지정
-구성 요소</a>에 대한 문서를 보면 이벤트 처리에 사용되는 몇 가지 보편적인 콜백을 확인할 수 있습니다. 
+구성 요소</a>에 대한 문서를 보면 이벤트 처리에 사용되는 몇 가지 보편적인 콜백을 확인할 수 있습니다.
 다음은 그 몇 가지 예입니다.</p>
 <ul>
   <li><code>{@link  android.view.View#onKeyDown}</code> - 새로운 키 이벤트가 발생하면 호출합니다.</li>
@@ -176,68 +176,68 @@
   <li><code>{@link  android.view.View#onTouchEvent}</code> - 터치 스크린 동작 이벤트가 발생하면 호출합니다.</li>
   <li><code>{@link  android.view.View#onFocusChanged}</code> - 보기가 초점을 취하거나 이를 잃으면 호출합니다.</li>
 </ul>
-<p>개발자 여러분이 알아두어야 하는 다른 메서드가 몇 가지 더 있습니다. 이들은 보기 클래스의 일부분이 아니지만, 
-이벤트를 처리할 수 있는 방식에 직접적으로 영향을 미칠 수 있는 것들입니다. 그러니, 레이아웃 안에서 좀 더 복잡한 이벤트를 관리하는 경우, 
+<p>개발자 여러분이 알아두어야 하는 다른 메서드가 몇 가지 더 있습니다. 이들은 보기 클래스의 일부분이 아니지만,
+이벤트를 처리할 수 있는 방식에 직접적으로 영향을 미칠 수 있는 것들입니다. 그러니, 레이아웃 안에서 좀 더 복잡한 이벤트를 관리하는 경우,
 이와 같은 다른 메서드도 고려하십시오.</p>
 <ul>
   <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
-    Activity.dispatchTouchEvent(MotionEvent)}</code> - 이것을 사용하면 {@link 
+    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 
+    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}가 참인 보기에만 초점을 맞출 수 있습니다. 예를 들어 텍스트 편집 위젯이 이에 해당됩니다. 
-버튼처럼 터치할 수 있는 다른 보기의 경우 터치해도 주의를 끌 수 없으며 이를 누르면 그저 
+터치 기능이 있는 기기의 경우, 사용자가 화면을 터치하면 기기가 터치 모드에
+진입하게 됩니다.  이 시점부터는
+{@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>로 초점을 취하는 것을 허용하는지 여부를 쿼리할 수 있습니다. 
+<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 속성을 
+<p>초점 이동은 주어진 방향에서 가장 가까운 이웃을 찾아내는 알고리즘을 기반으로
+합니다. 드문 일이지만 기본 알고리즘이 개발자가 의도한 행동과 일치하지 않는
+경우도 있습니다. 이러한 상황이라면, 레이아웃 파일에서 다음과 같은 XML 속성을
 사용하여 명시적 재정의를 제공하면 됩니다.
 <var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>, 및
-<var>nextFocusUp</var>입니다. 이와 같은 속성 중 한 가지를 초점이 <em>떠나고</em> 있는 보기에 
-추가합니다. 속성의 값을 초점을 
+<var>nextFocusUp</var>입니다. 이와 같은 속성 중 한 가지를 초점이 <em>떠나고</em> 있는 보기에
+추가합니다. 속성의 값을 초점을
 <em>맞춰야 할</em> 보기의 ID가 되도록 정의합니다. 예:</p>
 <pre>
 &lt;LinearLayout
@@ -252,18 +252,18 @@
 &lt;/LinearLayout>
 </pre>
 
-<p>보통은 이런 수직 레이아웃에서 첫 버튼부터 위로 이동하면 아무 데도 갈 수 없고, 
-두 번째 버튼에서 아래로 이동해도 마찬가지입니다. 이제 맨 위 버튼이 맨 아래 버튼을 다음과 같이 
-정의했습니다. <var>nextFocusUp</var> (반대쪽도 마찬가지) 따라서 이동 초점은 위에서 아래로 갔다가 
+<p>보통은 이런 수직 레이아웃에서 첫 버튼부터 위로 이동하면 아무 데도 갈 수 없고,
+두 번째 버튼에서 아래로 이동해도 마찬가지입니다. 이제 맨 위 버튼이 맨 아래 버튼을 다음과 같이
+정의했습니다. <var>nextFocusUp</var> (반대쪽도 마찬가지) 따라서 이동 초점은 위에서 아래로 갔다가
 아래에서 위로 순환하게 됩니다.</p>
 
-<p>보기를 UI에서 초점을 맞출 수 있는 것으로 선언하고자 하는 경우(일반적으로는 그렇지 않음), 
-보기에 레이아웃 선언에서 <code>android:focusable</code> XML 속성을 추가합니다. 
-이 값을 <var>참</var>으로 설정합니다. 터치 모드에 있을 때에도 보기를 초점을 맞출 수 있는 것으로 
+<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>를 사용하면 됩니다. 
+<p>초점 이벤트를 수신 대기하려면(어떤 보기에 초점이 맞춰지거나 이를 잃는 경우 알림을 받으려면),
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>를 사용하면 됩니다.
 이는 위의 <a href="#EventListeners">이벤트 수신기</a> 섹션에서 이야기한 바와 같습니다.</p>
 
 
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/ko/preview/api-overview.jd b/docs/html-intl/intl/ko/preview/api-overview.jd
index fdae406..5cffdfb 100644
--- a/docs/html-intl/intl/ko/preview/api-overview.jd
+++ b/docs/html-intl/intl/ko/preview/api-overview.jd
@@ -311,7 +311,7 @@
 <h2 id="vulkan">Vulkan API</h2>
 
 <p>
-  Android N은 새로운 3D 렌더링 API인 <a href="http://www.khronos.org/vulkan" class="external-link">Vulkan™</a>을 플랫폼에 통합합니다. 
+  Android N은 새로운 3D 렌더링 API인 <a href="http://www.khronos.org/vulkan" class="external-link">Vulkan™</a>을 플랫폼에 통합합니다.
 <a href="https://www.khronos.org/opengles/" class="external-link">OpenGL™
  ES</a>와 마찬가지로, Vulkan은 Khronos Group에 의해 관리되는 3D 그래픽 및 렌더링을 위한
  공개 표준입니다.
@@ -502,7 +502,7 @@
 이모티콘에 대한 시각적 표시를 제공해야 하며, 사용자가 선호하는 피부 색조를 선택하도록
 허용해야 합니다. 어떤 시스템 이모티콘에 피부 색조
 한정자가 있는지 확인하려면 {@link android.graphics.Paint#hasGlyph(String)}
-메서드를 사용하세요. 
+메서드를 사용하세요.
 <a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">
 유니코드 설명서</a>를 읽어보면 어떤 이모티콘에서 피부 색조가 사용되는지 확인할 수 있습니다.
   </li>
@@ -857,7 +857,7 @@
 앱 개발자는 N Developer Preview에 있는 이
 새 API를 Nexus 6P 기기에서만 시험해 볼 수 있습니다. 이 기능을 사용하려면
 지속적인 성능 모드에서 실행하려는 기간에 대해
-지속적인 성능 기간 플래그를 설정하세요. 
+지속적인 성능 기간 플래그를 설정하세요.
 {@code Window.setSustainedPerformanceMode()} 메서드를 사용하여 이 플래그를 설정하세요. 해당 기간이 포커스 안에 없을 때는
 이 모드가 자동으로 비활성화됩니다.
 </p>
diff --git a/docs/html-intl/intl/ko/preview/behavior-changes.jd b/docs/html-intl/intl/ko/preview/behavior-changes.jd
index 709ccfc..5d325e1 100644
--- a/docs/html-intl/intl/ko/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/ko/preview/behavior-changes.jd
@@ -167,7 +167,7 @@
  Android N 기기를 올바로 대상으로 삼을 수 있도록 이들 인텐트에 대한 종속성을 최대한 빨리 제거해야 합니다.
   Android 프레임워크는 이러한 암시적 브로드캐스트의
  필요성을 줄이기 위한 여러 가지 해결책을 제공합니다. 예를 들어, {@link
- android.app.job.JobScheduler} API는 지정된 조건(예: 
+ android.app.job.JobScheduler} API는 지정된 조건(예:
 고정 요금제 네트워크에 연결)이 충족될 경우 네트워크 운영을 예약할 수 있는
 강력한 메커니즘을 제공합니다. 심지어 {@link
  android.app.job.JobScheduler}를 사용하여 콘텐츠 공급자의 변경 사항에 대응할 수도 있습니다.
@@ -224,7 +224,7 @@
 대상으로 하는 앱은 {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}에 액세스할 때 {@link java.lang.SecurityException}을
 트리거합니다.
 
-    
+
 {@link
  android.app.DownloadManager.Request#setDestinationInExternalFilesDir
  DownloadManager.Request.setDestinationInExternalFilesDir()} 또는
@@ -562,7 +562,7 @@
 </li>
 
 <li>
-{@code Debug.startMethodTracing()} 계열에 속하는 메서드는, 
+{@code Debug.startMethodTracing()} 계열에 속하는 메서드는,
 SD 카드의 최상위 레벨에 저장하는 것이 아니라, 이제 공유 저장소의
 패키지별 디렉터리에 출력을 기본적으로
 저장합니다.  즉, 앱은 이들 API를 사용하기 위해 {@code WRITE_EXTERNAL_STORAGE} 권한을 요청할 필요가 더 이상 없습니다.
diff --git a/docs/html-intl/intl/ko/preview/download-ota.jd b/docs/html-intl/intl/ko/preview/download-ota.jd
index 886b8a8..ee08846 100644
--- a/docs/html-intl/intl/ko/preview/download-ota.jd
+++ b/docs/html-intl/intl/ko/preview/download-ota.jd
@@ -202,65 +202,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
-      MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
-      SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
-      MD5: e8b12f7721c53af9a450f7058928a5fc<br>
-      SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
-      MD5: 3fac09fef759dde26e57cb80b20b6477<br>
-      SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
-      MD5: 58312c4a5971818ef5c77a3f446003da<br>
-      SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
-      MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
-      SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
-      MD5: 1461622ad53ea842b2722fa7b49b8172<br>
-      SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
-      MD5: c60117f3640cc6db12386fd632289c7d<br>
-      SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
-    <td>General Mobile 4G(Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
-      MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
-      SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/ko/preview/download.jd b/docs/html-intl/intl/ko/preview/download.jd
index 802420b..45d5bd8 100644
--- a/docs/html-intl/intl/ko/preview/download.jd
+++ b/docs/html-intl/intl/ko/preview/download.jd
@@ -300,72 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
-      MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
-      SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
-      MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
-      SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
-      MD5: e93de7949433339856124c3729c15ebb<br>
-      SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
-      MD5: 565be87ebb2d5937e2abe1a42645864b<br>
-      SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
-      MD5: a8464e15c6683fe2afa378a63e205fda<br>
-      SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
-      MD5: c0dbb7db671f61b2785da5001cedefcb<br>
-      SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
-      MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
-      SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
-    <td>General Mobile 4G(Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
-      MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
-      SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> (D6603 및 D6653)</td>
-    <td>다운로드: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      자세한 내용은 <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Xperia Z3용 Android N Developer Preview 체험</a>을 참조하세요.
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/ko/preview/features/direct-boot.jd b/docs/html-intl/intl/ko/preview/features/direct-boot.jd
index 981c3e0..2674481 100644
--- a/docs/html-intl/intl/ko/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ko/preview/features/direct-boot.jd
@@ -18,7 +18,7 @@
 </div>
 </div>
 
-<p>기기에 전원이 들어와 있지만 <i>사용자가 기기의 잠금을 해제하지</i> 않았을 경우 Android N은 안전한 
+<p>기기에 전원이 들어와 있지만 <i>사용자가 기기의 잠금을 해제하지</i> 않았을 경우 Android N은 안전한
 직접 부팅
  모드에서 실행됩니다. 이를 지원하기 위해 시스템에서 다음과 같은 두 가지 데이터 저장소 위치를 제공합니다.</p>
 
@@ -125,7 +125,7 @@
 <h2 id="migrating">기존 데이터 마이그레이션</h2>
 
 <p>직접 부팅 모드를 사용하도록 사용자가 자신의 기기를 업데이트하는 경우,
-여러분이 기존 데이터를 기기 암호화 저장소로 마이그레이션해야 할 수도 있습니다. 
+여러분이 기존 데이터를 기기 암호화 저장소로 마이그레이션해야 할 수도 있습니다.
 <code>Context.moveSharedPreferencesFrom()</code>과
 <code>Context.moveDatabaseFrom()</code>을 사용하여 자격 증명 암호화 저장소와 기기 암호화 저장소 간에
 기본 설정과 데이터베이스 데이터를 마이그레이션합니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
index f626bff..921873d 100644
--- a/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
+++ b/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
@@ -50,7 +50,7 @@
 
 <p>
   Android N은
-<code>com.ibm.icu</code>가 아니라 <code>android.icu</code> 패키지를 통해 ICU4J API의 하위 세트를 노출합니다. 
+<code>com.ibm.icu</code>가 아니라 <code>android.icu</code> 패키지를 통해 ICU4J API의 하위 세트를 노출합니다.
 Android 프레임워크는 여러 가지 이유로
 ICU4J API를 노출하지 않을 수 있습니다. 예컨대 Android N은
 일부 사용 중단된 API나 ICU 팀에서 안정적이라고 선언하지 않은 API를
diff --git a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
index f353cc6..fa557bc 100644
--- a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
@@ -81,7 +81,7 @@
 전송하는 역할을 담당합니다.</p>
 
 <p>시스템이 <code>RecordingSession.onTune()</code>을 호출하면
-채널 URI에 전달되고, URI가 지정하는 채널에 맞춰 조정됩니다. 
+채널 URI에 전달되고, URI가 지정하는 채널에 맞춰 조정됩니다.
 <code>notifyTuned()</code>를 호출해서 앱이 원하는 채널에 맞춰졌음을 시스템에 알리거나
 앱이 적절한 채널에 맞출 수 없으면
 <code>notifyError()</code>를 호출합니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/setup-sdk.jd b/docs/html-intl/intl/ko/preview/setup-sdk.jd
index 03727a3..c2a0380 100644
--- a/docs/html-intl/intl/ko/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/ko/preview/setup-sdk.jd
@@ -92,7 +92,7 @@
     <a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
     <td width="100%">
       MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7 
+      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
     </td>
   </tr>
 <table>
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd
index e66e8d1..4fd4af2 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/index.jd
@@ -35,11 +35,11 @@
 </div>
 
 <p>사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의
-{@link android.app.Activity} 인스턴스는 
+{@link android.app.Activity} 인스턴스는
 수명 주기 안에서 서로 다른 상태 간에 전환됩니다. 예를 들어
 액티비티가 처음 시작되는 경우, 시스템의 전면에 표시되어 사용자의
 포커스를 받습니다. 이 과정에서 Android 시스템은 사용자 인터페이스 및 다른 구성요소에 설정된
-액티비티에 대해 일련의 수명 주기 메서드를 호출합니다. 사용자가 다른 액티비티를 시작하거나 다른 앱으로 전환하는 
+액티비티에 대해 일련의 수명 주기 메서드를 호출합니다. 사용자가 다른 액티비티를 시작하거나 다른 앱으로 전환하는
 작업을 수행하면, 백그라운드(액티비티가 더
 이상 보이지 않지만 인스턴스와 해당 상태는 그대로 유지되는 상태)로 전환되면서 시스템은 액티비티에 대해 또 다른
 수명 주기 메서드 세트를 호출합니다.</p>
@@ -55,7 +55,7 @@
 사용자가 원하는 작업을 하고, 액티비티가 필요로 하지 않을 때 시스템 리소스 소비를 방지하는 방법에 대해서도 설명합니다.</p>
 
 <h2>과정</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">액티비티 시작하기</a></b></dt>
   <dd>액티비티 수명 주기의 기본사항, 사용자가 앱을 시작하는 방법, 그리고 기본 액티비티 생성 작업을 수행하는
@@ -68,5 +68,5 @@
   <dt><b><a href="recreating.html">액티비티 재생성하기</a></b></dt>
   <dd>액티비티가 소멸되면 어떤 동작이 발생하는지, 그리고 필요 시 액티비티
 상태를 재구축하는 방법에 대해 설명합니다.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd
index b0497cd..98e2afd 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>이 과정에서 다루는 내용</h2>
     <ol>
       <li><a href="#Pause">액티비티 일지정지하기</a></li>
       <li><a href="#Resume">액티비티 재개하기</a></li>
     </ol>
-    
+
     <h2>필독 항목</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">액티비티</a>
@@ -31,7 +31,7 @@
   </div>
 </div>
 
-<p>일반적인 앱 사용 중에 가끔 다른 
+<p>일반적인 앱 사용 중에 가끔 다른
 비주얼 구성요소로 인해 전면의 액티비티가 <em>일시정지</em>되는 경우가 있습니다.  예를 들어, 대화 상자 스타일과 같은 반투명
 액티비티가 열리면, 그 이전 액티비티는 일시정지됩니다. 액티비티가
 부분적으로 보이지만 현재 포커스 내에 있지 않는 한 일시정지된 상태로 유지됩니다.</p>
@@ -59,7 +59,7 @@
 
 
 <h2 id="Pause">액티비티 일지정지하기</h2>
-      
+
 <p>시스템이 액티비티에 대해 {@link android.app.Activity#onPause()}를 호출하면, 이는
 엄밀해 말해 액티비티가 여전히 부분적으로 보일 수 있음을 의미하지만,
 대개의 경우 사용자가 액티비티를 떠나 곧 정지 상태로 전환될 것임을 나타냅니다.  일반적으로 다음 작업을 수행할 때
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd
index 79fb92b..2408cac 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>이 과정에서 다루는 내용</h2>
     <ol>
       <li><a href="#SaveState">액티비티 상태 저장하기</a></li>
       <li><a href="#RestoreState">액티비티 상태 복원하기</a></li>
     </ol>
-    
+
     <h2>필독 항목</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">다양한
@@ -105,7 +105,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -138,7 +138,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -157,12 +157,12 @@
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 구현하도록 선택할 수 있습니다. 시스템은 복원할 저장
 상태가 있을 경우에만 {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 호출합니다. 따라서 {@link android.os.Bundle}이 null인지 확인할 필요가 없습니다.</p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd
index ef13487..68b4562 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>이 과정에서 다루는 내용</h2>
 <ol>
   <li><a href="#lifecycle-states">수명 주기 콜백 이해하기</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">새로운 인스턴스 생성하기</a></li>
   <li><a href="#Destroy">액티비티 소멸하기</a></li>
 </ol>
-    
+
     <h2>필독 항목</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">액티비티</a></li>
@@ -83,7 +83,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -138,7 +138,7 @@
 
 
 
-<h2 id="launching-activity">앱 시작 관리자 액티비티 지정하기</h2> 
+<h2 id="launching-activity">앱 시작 관리자 액티비티 지정하기</h2>
 
 <p>사용자가 홈 화면에서 앱 아이콘을 선택하면, 시스템이 앱에서 "시작 관리자"(또는 "메인") 액티비티로 선언한 {@link android.app.Activity}에 대한 {@link
 android.app.Activity#onCreate onCreate()} 메서드를
@@ -151,7 +151,7 @@
 <p>앱의 메인 액티비티는 {@link
 android.content.Intent#ACTION_MAIN MAIN} 작업 및{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 카테고리를 포함하는 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a>와 함께
-매니페스트 파일에 선언되어야 합니다. 예를 들면 다음과 같습니다.</p> 
+매니페스트 파일에 선언되어야 합니다. 예를 들면 다음과 같습니다.</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd
index 79e713a..2800095 100644
--- a/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/ko/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>이 과정에서 다루는 내용</h2>
     <ol>
       <li><a href="#Stop">액티비티 정지하기</a></li>
       <li><a href="#Start">액티비티 시작/재시작하기</a></li>
     </ol>
-    
+
     <h2>필독 항목</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">액티비티</a>
@@ -152,13 +152,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd b/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd
index e7ca166..70f8961 100644
--- a/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/ko/training/basics/data-storage/databases.jd
@@ -118,15 +118,15 @@
 액세스할 수 없기 때문에 저장된 데이터는 안전하게 유지됩니다.</p>
 
 <p>유용한 API 집합이 {@link
-android.database.sqlite.SQLiteOpenHelper} 클래스에서 제공됩니다. 
+android.database.sqlite.SQLiteOpenHelper} 클래스에서 제공됩니다.
 데이터베이스에 대한 참조를 가져오기 위해 이 클래스를 사용하는 경우, 시스템은
-필요한 경우에 한해서만 데이터베이스 생성 및 업데이트와 같이 
+필요한 경우에 한해서만 데이터베이스 생성 및 업데이트와 같이
 장시간 실행될 수 있는 작업을
-수행하며, <em>앱이 시작되는 동안에는 이러한 작업을 수행하지 않습니다</em>. 
-{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} 또는 
+수행하며, <em>앱이 시작되는 동안에는 이러한 작업을 수행하지 않습니다</em>.
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} 또는
 {@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}를 호출하기만 하면 됩니다.</p>
 
-<p class="note"><strong>참고:</strong> 이러한 작업은 장시간 실행될 수도 있기 때문에 
+<p class="note"><strong>참고:</strong> 이러한 작업은 장시간 실행될 수도 있기 때문에
 {@link android.os.AsyncTask} 또는 {@link android.app.IntentService}와 같이 백그라운드 스레드에서 {@link
 android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} 또는 {@link
 android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}를
diff --git a/docs/html-intl/intl/ko/training/basics/data-storage/files.jd b/docs/html-intl/intl/ko/training/basics/data-storage/files.jd
index 71652b5..0b717a8 100644
--- a/docs/html-intl/intl/ko/training/basics/data-storage/files.jd
+++ b/docs/html-intl/intl/ko/training/basics/data-storage/files.jd
@@ -183,7 +183,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -250,7 +250,7 @@
 앱을 제거하면 같이 삭제됩니다. 이러한 파일은
 엄밀히 말해 외부 저장소에 저장된 파일이기 때문에 사용자 및 다른 앱의 액세스가 가능하긴 하지만, 앱 외부에서
 사용자에게 값을 실제로 제공하지는 않습니다. 사용자가 앱을 제거하면 앱의 외부 개인 디렉터리 내 모든 파일을 시스템에서
-삭제합니다. 
+삭제합니다.
   <p>예를 들어 앱에서 다운로드한 추가 리소스 또는 임시 미디어 파일이 이에 해당합니다.</p>
   </dd>
 </dl>
@@ -265,7 +265,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -287,7 +287,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -357,7 +357,7 @@
 myFile.delete();
 </pre>
 
-<p>파일이 내부 저장소에 저장되어 있는 경우, {@link android.content.Context}에 위치를 요청하고 {@link android.content.Context#deleteFile deleteFile()}을 호출하여 파일을 
+<p>파일이 내부 저장소에 저장되어 있는 경우, {@link android.content.Context}에 위치를 요청하고 {@link android.content.Context#deleteFile deleteFile()}을 호출하여 파일을
 삭제할 수도 있습니다.</p>
 
 <pre>
@@ -366,7 +366,7 @@
 
 <div class="note">
 <p><strong>참고:</strong> 사용자가 앱을 제거하면 Android 시스템이
-다음 항목을 삭제합니다.</p> 
+다음 항목을 삭제합니다.</p>
 <ul>
 <li>내부 저장소에 저장한 모든 파일</li>
 <li>{@link
diff --git a/docs/html-intl/intl/ko/training/material/animations.jd b/docs/html-intl/intl/ko/training/material/animations.jd
index e8c6267..79710c1 100644
--- a/docs/html-intl/intl/ko/training/material/animations.jd
+++ b/docs/html-intl/intl/ko/training/material/animations.jd
@@ -47,7 +47,7 @@
 
 <ul>
 <li>제한된 물결의 경우, <code>?android:attr/selectableItemBackground</code></li>
-<li>뷰를 넘어 확장되는 물결의 경우, <code>?android:attr/selectableItemBackgroundBorderless</code> 
+<li>뷰를 넘어 확장되는 물결의 경우, <code>?android:attr/selectableItemBackgroundBorderless</code>
  이 경우 물결이 null이 아닌 배경을 가진 뷰의 가장 가까운 상위 요소 위에 그려지고 해당 상위 요소까지로 제한됩니다.
 </li>
 </ul>
@@ -139,7 +139,7 @@
   </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 class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>그림 1</strong> -
     공유 요소를 이용한 전환.</p>
     <em>영화를 재생하려면 기기 화면을 클릭하세요.</em>
   </div>
@@ -263,7 +263,7 @@
  그렇지 않으면 호출하는 액티비티가 나가기 전환을 시작하지만, 배율 또는 페이드와 같은 창 전환이 나타납니다.
 </p>
 
-<p>들어가기 전환을 최대한 빨리 시작하려면 호출되는 액티비티에서 
+<p>들어가기 전환을 최대한 빨리 시작하려면 호출되는 액티비티에서
 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
  메서드를 사용하세요. 그러면 더욱 인상적인 들어가기 전환이 가능합니다.</p>
 
@@ -317,7 +317,7 @@
 });
 </pre>
 
-<p>코드에서 생성하는 공유된 동적 뷰의 경우, 
+<p>코드에서 생성하는 공유된 동적 뷰의 경우,
 {@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여 두 액티비티의 공통 요소 이름을 지정합니다.
 </p>
 
@@ -414,7 +414,7 @@
 &lt;/selector>
 </pre>
 
-<p>사용자지정 뷰 상태 애니메이션을 뷰에 첨부하려면 이 예와 같이 XML 리소스 파일의 
+<p>사용자지정 뷰 상태 애니메이션을 뷰에 첨부하려면 이 예와 같이 XML 리소스 파일의
 <code>selector</code> 요소를 사용하여 애니메이터를 정의한 후에 <code>android:stateListAnimator</code> 특성을 통해 뷰에 할당합니다.
  코드에서 뷰에 상태 목록 애니메이터를 할당하려면 {@link android.animation.AnimatorInflater#loadStateListAnimator
 AnimationInflater.loadStateListAnimator()} 메서드를 사용하고,
diff --git a/docs/html-intl/intl/ko/training/material/lists-cards.jd b/docs/html-intl/intl/ko/training/material/lists-cards.jd
index 28fdf22..b8d6e79 100644
--- a/docs/html-intl/intl/ko/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/ko/training/material/lists-cards.jd
@@ -204,7 +204,7 @@
 확장하고 카드 내의 정보를 플랫폼에서 일관된 모습으로 표시할 수 있도록 합니다. {@link
 android.support.v7.widget.CardView} 위젯은 그림자와 둥근 모서리를 가질 수 있습니다.</p>
 
-<p>그림자가 있는 카드를 생성하려면 <code>card_view:cardElevation</code> 특성을 사용합니다. 
+<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>를 참조하세요.
 
 
diff --git a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
index e04d0c5..9d1a679 100644
--- a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
@@ -121,7 +121,7 @@
 <p>뷰를 클리핑하면 뷰의 모양을 손쉽게 바꿀 수 있습니다. 다른 디자인 요소와의 일관성을 위해, 또는 사용자 입력에 응답하여 뷰의 모양을 바꾸기 위해 뷰를 클리핑할 수 있습니다. {@link android.view.View#setClipToOutline
 View.setClipToOutline()} 메서드나 <code>android:clipToOutline</code> 특성을 사용하여 뷰를 해당 윤곽선 영역까지 클리핑할 수 있습니다.
 
- 
+
 {@link android.graphics.Outline#canClip Outline.canClip()} 메서드에서 결정된 대로 사각형, 원형 및 둥근 사각형의 윤곽선만 클리핑을 지원합니다.
 </p>
 
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd
index 2eacccf..058cf85 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@
 next.link=docking-monitoring.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>강의 목표</h2>
@@ -24,9 +24,9 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 <p>백그라운드 업데이트가 배터리 수명에 미치는 영향을 줄이기 위하여 백그라운드 업데이트 빈도수를 변경하는 경우, 현재 배터리 수준과 충전 상태부터 확인하는 것이 좋습니다.</p>
 
 <p>애플리케이션 업데이트 수행이 배터리 수명에 미치는 영향은 배터리 수준 및 기기의 충전 상태에 따라 다릅니다. 기기를 AC 충전기로 충전하는 동안 업데이트 수행이 미치는 영향은 무시해도 좋습니다. 따라서 기기가 범용 충전기에 연결되어 있을 때는 대부분 새로고침 빈도를 최대화할 수 있습니다. 반대로 기기가 충전 중이 아니라면, 업데이트 빈도를 줄이는 것이 배터리 수명 연장에 도움이 됩니다.</p>
@@ -34,8 +34,8 @@
 <p>마찬가지로 배터리가 거의 방전된 경우, 업데이트 빈도를 줄이거나 중단할 수 있습니다.</p>
 
 
-<h2 id="DetermineChargeState">현재 충전 상태 확인</h2> 
- 
+<h2 id="DetermineChargeState">현재 충전 상태 확인</h2>
+
 <p>먼저 현재 충전 상태를 확인하는 것부터 시작합니다. {@link android.os.BatteryManager}는 배터리 충전 상태 등 충전 정보를 스티키 {@link android.content.Intent}를 통해 브로드캐스트합니다.</p>
 
 <p>스티키 인텐트이므로 {@link android.content.BroadcastReceiver}를 등록할 필요가 없으며 아래 코드 상의 리시버와 같이 간단히 {@code registerReceiver}을(를) 호출하여 {@code null}에 제출하면 현재 배터리 상태가 담긴 인텐트가 반환됩니다. 여기에 실제 {@link android.content.BroadcastReceiver} 개체 사용할 수 있으나, 이후 섹션에서 업데이트를 다루게 되므로 그럴 필요는 없습니다.</p>
@@ -58,7 +58,7 @@
 <p>일반적으로 기기가 AC 충전기에 연결된 경우 백그라운드 업데이트 빈도를 최대화합니다. USB를 통해 충전하는 경우 업데이트 빈도를 낮춥니다. 배터리가 방전 중이라면 빈도를 더 많이 낮추도록 합니다.</p>
 
 
-<h2 id="MonitorChargeState">충전 상태 변경사항 모니터링</h2> 
+<h2 id="MonitorChargeState">충전 상태 변경사항 모니터링</h2>
 
 <p>충전 상태는 수시로 변하므로 충전 상태의 변경사항을 확인하고 이에 따라 업데이트 주기를 변경하는 것이 중요합니다.</p>
 
@@ -75,11 +75,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 == BATTERY_PLUGGED_USB;
         boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@
 }</pre>
 
 
-<h2 id="CurrentLevel">현재 배터리 수준 확인</h2> 
+<h2 id="CurrentLevel">현재 배터리 수준 확인</h2>
 
 <p>현재 배터리 수준을 확인하는 것이 유용한 경우도 있습니다. 배터리 충전이 수준 이하인 경우 백그라운드 업데이트 빈도를 줄일 수 있습니다.</p>
 
@@ -99,7 +99,7 @@
 float batteryPct = level / (float)scale;</pre>
 
 
-<h2 id="MonitorLevel">배터리 수준 중요 변경사항 모니터링</h2> 
+<h2 id="MonitorLevel">배터리 수준 중요 변경사항 모니터링</h2>
 
 <p>배터리 상태를 지속적으로 확인하는 것은 쉽지 않지만, 꼭 그럴 필요도 없습니다.</p>
 
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
index 5666b98..377f85f 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>강의 목표</h2>
@@ -27,7 +27,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>반복 알람과 백그라운드 서비스는 일반적으로 인터넷 리소스 및 캐시 데이터로부터 애플리케이션의 업데이트를 예약하거나 긴 시간이 필요한 다운로드를 실행하는 데 사용됩니다. 하지만 인터넷에 연결되어 있지 않거나 연결이 매우 느려 다운로드를 완료하지 못한다면 업데이트 예약을 해도 소용이 없겠죠?</p>
@@ -35,18 +35,18 @@
 <p>인터넷에 연결되었는지, 어떤 연결 방식인지를 확인하기 위하여 {@link android.net.ConnectivityManager}를 사용할 수 있습니다.</p>
 
 
-<h2 id="DetermineConnection">인터넷에 연결되어 있는지 확인</h2> 
- 
+<h2 id="DetermineConnection">인터넷에 연결되어 있는지 확인</h2>
+
 <p>인터넷에 연결되어 있지 않는 경우 인터넷 리소스를 기반으로 한 업데이트 예약을 할 필요가 없습니다. 다음은 활성 네트워크를 쿼리하고 인터넷이 연결되어 있는지 확인하기 위한 {@link android.net.ConnectivityManager} 사용법을 보여줍니다.</p>
 
 <pre>ConnectivityManager cm =
         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
 
 
-<h2 id="DetermineType">인터넷 연결 유형 확인</h2> 
+<h2 id="DetermineType">인터넷 연결 유형 확인</h2>
 
 <p>현재 사용할 수 있는 인터넷 연결 유형을 확인할 수도 있습니다.</p>
 
@@ -59,7 +59,7 @@
 <p>업데이트를 비활성화한 경우, 인터넷 연결이 재개되면 업데이트를 다시 시작하기 위해 연결 변경사항을 알고 있는 것이 중요합니다.</p>
 
 
-<h2 id="MonitorChanges">연결 변경사항 모니터링</h2> 
+<h2 id="MonitorChanges">연결 변경사항 모니터링</h2>
 
 <p>연결 정보가 변경될 때마다 {@link android.net.ConnectivityManager}는 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}({@code "android.net.conn.CONNECTIVITY_CHANGE"}) 액션을 브로드캐스트합니다. 변경사항을 수신하거나 적절히 백그라운드 업데이트를 다시 시작 또는 일시 중지하기 위해 매니페스트에서 브로드캐스트 리시버를 등록할 수 있습니다.</p>
 
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd
index 0cd61a0..f3cf36d 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>강의 목표</h2>
@@ -26,7 +26,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Android 기기는 여러 종류의 도크로 도킹될 수 있습니다. 여기에는 카폰 또는 홈 도크와 디지털 및 아날로그 도크가 포함됩니다. 많은 도크가 도킹된 기기에 전기를 공급하므로 일반적으로 충전 상태와 도크 상태는 밀접한 관련이 있습니다.</p>
@@ -36,8 +36,8 @@
 <p>도크 상태는 스티키 {@link android.content.Intent}로 브로드캐스트되어 기기가 도킹되었는지 여부와 도킹되었다면 어떤 종류의 도크인지 알아낼 수 있습니다. </p>
 
 
-<h2 id="CurrentDockState">현재 도킹 상태 확인</h2> 
- 
+<h2 id="CurrentDockState">현재 도킹 상태 확인</h2>
+
 <p>도크 상태의 세부사항은 {@link android.content.Intent#ACTION_DOCK_EVENT} 액션의 스티키 브로드캐스트 내에 추가로 포함됩니다. 스티키 브로드캐스트이므로 {@link android.content.BroadcastReceiver}를 등록할 필요가 없습니다. 다음 스니펫에 표시된 브로드캐스트 수신기와 같이 간단히 {@link android.content.Context#registerReceiver registerReceiver()}를 호출하여 {@code null}에 제출할 수 있습니다. </p>
 
 <pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@
 boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
 
 
-<h2 id="DockType">현재 도크 유형 확인</h2> 
+<h2 id="DockType">현재 도크 유형 확인</h2>
 
-<p>4가지 유형의 도크가 있습니다. 
+<p>4가지 유형의 도크가 있습니다.
 <ul><li>카폰</li>
 <li>데스크</li>
 <li>저가형(아날로그) 데스크</li>
@@ -60,12 +60,12 @@
 <p>마지막 두 가지 옵션은 API 수준 11의 Android에만 제공되어 있으므로, 디지털 또는 아날로그에 상관하지 않고 관심 있는 세 가지 도크 유형에 대해 확인하는 것이 좋습니다.</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">도크 상태 또는 유형 변경사항 모니터링</h2> 
+<h2 id="MonitorDockState">도크 상태 또는 유형 변경사항 모니터링</h2>
 
 <p>도킹 상태가 바뀌면 {@link android.content.Intent#ACTION_DOCK_EVENT} 액션이 브로드캐스트됩니다. 기기의 도크 상태 변경사항을 모니터링하려면 아래에 표시된 대로 애플리케이션 매니페스트에서 브로드캐스트 리시버를 등록하세요.</p>
 
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd
index f96e2e1..030701f 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
-<h2>요구사항과 선행조건</h2> 
+<h2>요구사항과 선행조건</h2>
 <ul>
   <li>Android 2.0(API 수준 5) 또는 이상</li>
   <li> <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a> 사용 경험</li>
@@ -21,19 +21,19 @@
   <li><a href="{@docRoot}guide/components/services.html">서비스</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>좋은 앱은 호스트 기기의 배터리 수명에 미치는 영향이 미미해야 합니다. 강의를 통해 호스트 기기의 상태에 따라 기능과 동작을 수정하는 것을 모니터링하는 앱을 구축할 수 있게 됩니다.</p>
 
 <p>연결이 끊겼을 때 백그라운드 서비스 업데이트를 사용 중지하거나, 배터리 수준이 낮을 때 업데이트 빈도를 줄이는 조치를 취하여, 사용자 환경을 손상시키지 않고 배터리 수명에 미치는 영향을 최소화할 수 있습니다.</p>
 
-<h2>강의</h2> 
- 
+<h2>강의</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="battery-monitoring.html">배터리 수준 및 충전 상태 모니터링</a></b></dt>
   <dd>충전 상태에서 현재 배터리 수준 및 변경사항을 확인 및 모니터링하여 앱의 업데이트 빈도를 변경하는 법을 알아보세요.</dd>
@@ -46,4 +46,4 @@
 
   <dt><b><a href="manifest-receivers.html">온디맨드로 브로드캐스트 수신기 조작</a></b></dt>
   <dd>매니페스트 내에 선언했던 브로드캐스트 리시버는 현재 기기 상태에서 필요 없는 것을 사용 중지하도록 런타임 때 전환될 수 있습니다. 기기가 특정 상태에 도달할 때까지 상태 변화 리시버 및 지연 액션을 전환 및 단계적으로 연결하여 효율성을 향상하는 법을 알아보세요.</dd>
-</dl> 
\ No newline at end of file
+</dl>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd
index c5c311b..0eefe08 100644
--- a/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/ko/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>강의 목표</h2>
@@ -23,7 +23,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>기기 상태 변경을 모니터링하는 가장 간단한 방법은 모니터링하는 각 상태에 대해 {@link android.content.BroadcastReceiver}를 만들어 각각을 애플리케이션 매니페스트에 등록하는 것입니다. 그러면 각 리시버 내에서 현재 기기 상태를 기반으로 반복 알람의 일정을 간단히 변경할 수 있습니다.</p>
@@ -31,10 +31,10 @@
 <p>이 방법의 부작용은 리시버 중 하나라도 실행되면 매번 앱이 기기의 절전 모드를 해제시킨다는 것입니다.</p>
 
 <p>더 나은 방법은 런타임 때 브로드캐스트 리시버를 사용 중지 또는 사용하도록 설정하는 것입니다. 이렇게 하면 매니페스트에 선언한 리시버를 필요할 때만 시스템 이벤트에 의해 실행되는 수동적인 알람으로 사용할 수 있습니다.</p>
- 
 
-<h2 id="ToggleReceivers">효율성 향상을 위한 상태 변화 수신기의 전환 및 단계적 연결 </h2> 
- 
+
+<h2 id="ToggleReceivers">효율성 향상을 위한 상태 변화 수신기의 전환 및 단계적 연결 </h2>
+
 <p>{@link android.content.pm.PackageManager}를 사용하여 아래에서 표시된 대로 모든 사용 또는 사용 중지하기 원하는 브로드캐스트 리시버를 포함하여 매니페스트 내에 정의된 모든 요소의 사용 가능 상태를 전환할 수 있습니다.</p>
 
 <pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd b/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd
index cb7b66c..a8d2fc1 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
+<div id="tb-wrapper">
+<div id="tb">
+
 <h2>강의 목표</h2>
 
 <ol>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 및 휴대전화 지원</a></li>
 </ul>
- 
+
 <h2>다운로드 </h2>
- 
+
 <div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>현재 애플리케이션이 표시하는 레이아웃에 따라 UI 플로가 달라질 수 있습니다. 예를 들어 애플리케이션이 이중 창 모드로 되어 있는 경우에는 왼쪽 창에 있는 항목을 클릭하면 오른쪽 창에 콘텐츠가 표시되고, 단일 창 모드로 되어 있는 경우에는 콘텐츠가 해당 창에 표시됩니다(다른 액티비티에서).</p>
 
@@ -56,7 +56,7 @@
         setContentView(R.layout.main_layout);
 
         View articleView = findViewById(R.id.article);
-        mIsDualPane = articleView != null &amp;&amp; 
+        mIsDualPane = articleView != null &amp;&amp;
                         articleView.getVisibility() == View.VISIBLE;
     }
 }
@@ -116,7 +116,7 @@
     else {
         /* use list navigation (spinner) */
         actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
-        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+        SpinnerAdapter adap = new ArrayAdapter<String>(this,
                 R.layout.headline_item, CATEGORIES);
         actionBar.setListNavigationCallbacks(adap, handler);
     }
@@ -168,7 +168,7 @@
 public class HeadlinesFragment extends ListFragment {
     ...
     &#64;Override
-    public void onItemClick(AdapterView&lt;?&gt; parent, 
+    public void onItemClick(AdapterView&lt;?&gt; parent,
                             View view, int position, long id) {
         if (null != mHeadlineSelectedListener) {
             mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/ko/training/multiscreen/index.jd b/docs/html-intl/intl/ko/training/multiscreen/index.jd
index dd152ae..0a30f92 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
-<h2>요구사항과 선행조건</h2> 
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>요구사항과 선행조건</h2>
 
 <ul>
   <li>Android 1.6 이상(샘플 앱의 경우  2.1 이상)</li>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/screens_support.html">다양한 화면 지원</a></li>
 </ul>
- 
-<h2>다운로드 </h2> 
- 
-<div class="download-box"> 
+
+<h2>다운로드 </h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
- 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
 <p>Android는 소형 휴대전화에서부터 대형 TV에 이르기까지 다양한 화면 크기의 수많은 기기 유형을 지원합니다. 따라서 애플리케이션이 모든 화면 크기와 호환되어 최대한 많은 사용자가 사용할 수 있도록 디자인하는 것이 중요합니다.</p>
 
 <p>하지만 다양한 기기 유형과 호환되는 것만으로는 충분하지 않습니다. 각 화면 크기에 따라 사용자 상호작용에 유리한 점과 불리한 점이 다릅니다. 따라서 사용자에게 만족을 주고 깊은 인상을 심어주려면 애플리케이션이 단지 여러 화면을 <em>지원</em>하는 데 그치지 않고 화면 구성별로 사용자 환경을 <em>최적화</em>해야 합니다.</p>
@@ -48,17 +48,17 @@
 
 <p class="note"><strong>참고:</strong> 이 강의 및 강의와 관련된 샘플은 <a
 href="{@docRoot}tools/support-library/index.html">호환성 라이브러리</a>를 사용하며 이는 Android 3.0 이하 버전에서 <PH>{@link android.app.Fragment}</PH> API를 사용하기 위해서입니다. 이 강의에서 API를 모두 사용하려면 라이브러리를 다운로드하여 애플리케이션에 추가해야 합니다.</p>
- 
 
-<h2>강의</h2> 
- 
-<dl> 
-  <dt><b><a href="screensizes.html">다양한 화면 크기 지원</a></b></dt> 
-    <dd>이 강의에서는 여러 다양한 화면 크기에 조정되는 레이아웃을 디자인하는 방법(유연한 보기 크기, <PH>{@link android.widget.RelativeLayout}</PH>, 화면 크기 및 방향 한정자, 별칭 필터 및 나인-패치 비트맵 사용하기)을 안내합니다.</dd> 
- 
-  <dt><b><a href="screendensities.html">다양한 화면 밀도 지원</a></b></dt> 
-    <dd>이 강의에서는 다양한 픽셀 밀도를 가진 화면을 지원하는 방법(밀도 독립형 픽셀(density-independent pixel) 사용하기 및 밀도별로 적합한 비트맵 제공하기)을 설명합니다.</dd> 
- 
-  <dt><b><a href="adaptui.html">조정형 UI 플로우 구현</a></b></dt> 
-    <dd>이 강의에서는 여러 화면 크기/밀도 조합에 조정되도록 UI 플로우를 구현하는 방법(활성 레이아웃의 런타임 감지, 현재 레이아웃에 따른 대응, 화면 구성 변경 처리)을 설명합니다.</dd> 
-</dl> 
+
+<h2>강의</h2>
+
+<dl>
+  <dt><b><a href="screensizes.html">다양한 화면 크기 지원</a></b></dt>
+    <dd>이 강의에서는 여러 다양한 화면 크기에 조정되는 레이아웃을 디자인하는 방법(유연한 보기 크기, <PH>{@link android.widget.RelativeLayout}</PH>, 화면 크기 및 방향 한정자, 별칭 필터 및 나인-패치 비트맵 사용하기)을 안내합니다.</dd>
+
+  <dt><b><a href="screendensities.html">다양한 화면 밀도 지원</a></b></dt>
+    <dd>이 강의에서는 다양한 픽셀 밀도를 가진 화면을 지원하는 방법(밀도 독립형 픽셀(density-independent pixel) 사용하기 및 밀도별로 적합한 비트맵 제공하기)을 설명합니다.</dd>
+
+  <dt><b><a href="adaptui.html">조정형 UI 플로우 구현</a></b></dt>
+    <dd>이 강의에서는 여러 화면 크기/밀도 조합에 조정되도록 UI 플로우를 구현하는 방법(활성 레이아웃의 런타임 감지, 현재 레이아웃에 따른 대응, 화면 구성 변경 처리)을 설명합니다.</dd>
+</dl>
diff --git a/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd b/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd
index 5d6e2f3..dfaa44f 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>강의 목표</h2>
 <ol>
@@ -29,15 +29,15 @@
 </ul>
 
 <h2>다운로드 </h2>
- 
-<div class="download-box"> 
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>이 강의에서는 다양한 리소스를 제공하고 해상도 독립형(resolution-independent) 측정 단위를 사용함으로써 다양한 화면 밀도를 지원하는 방법을 설명합니다.</p>
 
@@ -48,8 +48,8 @@
 <p>예를 들어 두 개의 보기 사이에 여백을 지정할 때 <code>px</code>가 아닌 <code>dp</code>를 사용합니다.</p>
 
 <pre>
-&lt;Button android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+&lt;Button android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:text="&#64;string/clickme"
     android:layout_marginTop="20dp" /&gt;
 </pre>
@@ -57,8 +57,8 @@
 <p>텍스트 크기를 지정할 때에는 항상 <code>sp</code>를 사용합니다.</p>
 
 <pre>
-&lt;TextView android:layout_width="match_parent" 
-    android:layout_height="wrap_content" 
+&lt;TextView android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:textSize="20sp" /&gt;
 </pre>
 
diff --git a/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd b/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd
index f2e77a6..984923d 100644
--- a/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/ko/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>강의 목표</h2>
 <ol>
@@ -30,26 +30,26 @@
   <li><a href="{@docRoot}guide/practices/screens_support.html">다양한 화면 지원</a></li>
 </ul>
 
-<h2>다운로드 </h2> 
- 
-<div class="download-box"> 
+<h2>다운로드 </h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 앱 다운로드</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
 
 <p>이 강의에서는 다양한 화면 크기를 지원하는 방법을 설명합니다.</p>
-<ul> 
-  <li>화면에 맞게 레이아웃 크기 조정</li> 
-  <li>화면 구성에 따라 적합한 UI 레이아웃 제공</li> 
+<ul>
+  <li>화면에 맞게 레이아웃 크기 조정</li>
+  <li>화면 구성에 따라 적합한 UI 레이아웃 제공</li>
   <li>올바른 화면에 올바른 레이아웃 적용</li>
-  <li>정확하게 확대되는 비트맵 제공</li> 
-</ul> 
+  <li>정확하게 확대되는 비트맵 제공</li>
+</ul>
 
 
-<h2 id="TaskUseWrapMatchPar">'wrap_content' 및 'match_parent' 사용</h2> 
+<h2 id="TaskUseWrapMatchPar">'wrap_content' 및 'match_parent' 사용</h2>
 
 <p>레이아웃이 다양한 화면 크기에 따라 유연하게 조정되도록 하려면 일부 뷰 구성요소의 너비와 높이에 <code>"wrap_content"</code> 및 <code>"match_parent"</code>를 사용해야 합니다. <code>"wrap_content"</code>를 사용하면 뷰의 너비와 높이가 해당 뷰 내에 콘텐츠가 들어가는데 필요한 최소 크기로 설정되는 반면, <code>"match_parent"</code>(API 수준 8 이전에는 <code>"fill_parent"</code>라고도 함)를 사용하면 구성요소가 확장되어 부모뷰의 크기와 일치하게 됩니다.</p>
 
@@ -65,7 +65,7 @@
 <p class="img-caption"><strong>그림 1.</strong> 세로 모드(왼쪽) 및 가로 모드(오른쪽)에서의 뉴스 리더 샘플 앱</p>
 
 
-<h2 id="TaskUseRelativeLayout">RelativeLayout 사용</h2> 
+<h2 id="TaskUseRelativeLayout">RelativeLayout 사용</h2>
 
 <p>비교적 복잡한 레이아웃을 만들려면 <PH>{@link android.widget.LinearLayout}의 중첩 인스턴스와</PH> <code>"wrap_content"</code> 및 <code>"match_parent"</code> 크기의 조합을 사용합니다. 하지만 <PH>{@link android.widget.LinearLayout}</PH> 을 사용하면 자식뷰의 여백 관계를 정확하게 제어할 수 없으며 <PH>{@link android.widget.LinearLayout}</PH> 단순히 나란하게 표시됩니다. 자식뷰를 일직선이 아닌 다양한 방향으로 표시해야 하는 경우 구성요소 사이의 여백 관계를 중심으로 레이아웃을 지정할 수 있는 <PH>{@link android.widget.RelativeLayout}</PH>을 사용하는 것이 더 좋은 방법일 수 있습니다. 예를 들어 화면 왼쪽에 하나의 자식뷰를, 오른쪽에 다른 자식뷰를 정렬할 수 있습니다.</p>
 
@@ -115,8 +115,8 @@
 
 <p>구성요소의 크기가 변하더라도 여백 관계가  <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
 
- 
-<h2 id="TaskUseSizeQuali">크기 한정자 사용</h2> 
+
+<h2 id="TaskUseSizeQuali">크기 한정자 사용</h2>
 
 <p>이전 섹션에서 다룬 유연한 레이아웃이나 상대적 레이아웃으로는 한계가 있습니다. 이러한 레이아웃이 구성요소 내부 및 주위의 여백을 확장하여 다양한 화면에 맞게 조정되긴 하지만 화면 크기별로 최적의 사용자 환경을 제공하지는 못할 수 있습니다. 따라서 애플리케이션은 유연한 레이아웃을 구현할 뿐 아니라 다양한 화면 구성을 타겟팅할 수 있도록 다양한 대체 레이아웃을 제공해야 합니다. 그 방법은 런타임이 현재 기기의 구성에 따라 적합한 리소스(예: 화면 크기별로 다른 레이아웃 디자인)를 자동으로 선택하도록 해 주는 <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">구성 한정자</a>를 사용하는 것입니다.</p>
 
@@ -158,7 +158,7 @@
 <p>하지만 Android 3.2 이전 기기는 <code>sw600dp</code>를 크기 한정자로 인식하지 않기 때문에 최소 너비 한정자가 제대로 작동하지 않으며 따라서 <code>large</code> 한정자도 계속 사용해야 합니다. 따라서 <code>res/layout-large/main.xml</code>라는 이름의 파일이 있어야 하며 이 파일은 <code>res/layout-sw600dp/main.xml</code>과 동일한 파일입니다. 다음 섹션에서는 이런 식으로 레이아웃 파일이 중복되지 않게 하는 기술을 살펴보겠습니다.</p>
 
 
-<h2 id="TaskUseAliasFilters">레이아웃 별칭 사용</h2> 
+<h2 id="TaskUseAliasFilters">레이아웃 별칭 사용</h2>
 
 <p>최소 너비 한정자는 Android 3.2 이상 버전에서만 사용할 수 있습니다. 따라서 이전 버전과 호환되도록 하려면 추상화 크기 빈(소형, 보통, 대형 및 초대형)을 계속 사용해야 합니다. 예를 들어 휴대전화에서는 단일 창 UI가 표시되고 7인치 태블릿, TV 및 기타 대형 기기에서는 다중 창 UI가 표시되도록 UI를 디자인하려면 다음 파일을 제공해야 합니다.</p>
 
@@ -202,7 +202,7 @@
 <PH>{@code large}</PH>,3.2 이후 버전은 <code>sw600dp</code>와 일치).</p>
 
 
-<h2 id="TaskUseOriQuali">방향 한정자 사용</h2> 
+<h2 id="TaskUseOriQuali">방향 한정자 사용</h2>
 
 <p>일부 레이아웃은 가로 및 세로 방향 모두에서 잘 작동하지만 대부분의 레이아웃은 조정을 통해 많은 이점을 누릴 수 있습니다. 다음은 뉴스 리더 샘플 앱에서 화면 크기와 방향별로 레이아웃이 어떻게 작동하는지 보여줍니다.</p>
 
diff --git a/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd b/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd
index 23904b3..5408793 100644
--- a/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/pt-br/about/versions/android-5.0.jd
@@ -426,7 +426,7 @@
 <p>Quando o sistema detectar uma rede adequada, ele se conectará à rede e chamará a chamada de retorno {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. É possível usar o objeto {@link android.net.Network} da chamada de retorno a fim de receber mais informações sobre a rede ou direcionar o tráfego para que a rede selecionada seja usada.</p>
 
 <h3 id="BluetoothBroadcasting">Bluetooth Low Energy</h3>
-<p>O Android 4.3 apresentou o suporte de plataforma para o <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>(<em>Bluetooth LE</em>) na função central. No Android 5.0, um dispositivo Android agora pode agir como um <em>dispositivo periférico</em> de Bluetooth LE. Os apps podem usar esse recurso para fazer com que sua presença seja percebida pelos dispositivos vizinhos. É possível, por exemplo, criar apps que permitem que um dispositivo funcione como um pedômetro ou um monitor de integridade de dados e envie seus dados para outro dispositivo Bluetooth LE.</p> 
+<p>O Android 4.3 apresentou o suporte de plataforma para o <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">Bluetooth Low Energy</a>(<em>Bluetooth LE</em>) na função central. No Android 5.0, um dispositivo Android agora pode agir como um <em>dispositivo periférico</em> de Bluetooth LE. Os apps podem usar esse recurso para fazer com que sua presença seja percebida pelos dispositivos vizinhos. É possível, por exemplo, criar apps que permitem que um dispositivo funcione como um pedômetro ou um monitor de integridade de dados e envie seus dados para outro dispositivo Bluetooth LE.</p>
 <p>As novas APIs de {@link android.bluetooth.le} permitem que seus apps divulguem anúncios, verifiquem respostas e formem conexões com dispositivos Bluetooth LE vizinhos. Para usar os novos recursos de publicidade e varredura, adicione a permissão {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} no manifesto. Quando os usuários atualizam ou fazem o download do seu app a partir da Play Store, eles são solicitados a conceder a seguinte permissão para seu app: "Informações da conexão Bluetooth: permite que o app controle o Bluetooth, incluindo a divulgação para dispositivos Bluetooth vizinhos ou a busca de informações sobre esses dispositivos."</p>
 
 <p>Para começar a publicidade de Bluetooth LE para que outros dispositivos possam descobrir seu app, chame {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} e passe uma implementação da classe {@link android.bluetooth.le.AdvertiseCallback}. O objeto de chamada de retorno recebe um relatório do sucesso ou da falha da operação de publicidade.</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 82e28cc..81b3524 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
@@ -8,7 +8,7 @@
 tipos de dispositivo.</p>
 
 <p>
-Considere estes princípios ao aplicar 
+Considere estes princípios ao aplicar
 sua criatividade e sua mentalidade de projeto. Desvie-se de forma objetiva.
 </p>
 
@@ -18,7 +18,7 @@
   <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 
+<p>Uma bela superfície, uma animação cuidadosamente posicionada ou um efeito sonoro no momento certo
  contribui para a boa experiência. Efeitos sutis contribuem para uma sensação de facilidade e de que algo
 poderoso está à mão.</p>
 
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 5368d2d..e2f0b47 100644
--- a/docs/html-intl/intl/pt-br/design/material/index.jd
+++ b/docs/html-intl/intl/pt-br/design/material/index.jd
@@ -39,10 +39,10 @@
 
 
 
-<p itemprop="description">O Material Design é um guia abrangente para design visual, de movimento e de 
+<p itemprop="description">O Material Design é um guia abrangente para design visual, de movimento e de
 interação para diversas plataformas e dispositivos. O Android agora é compatível com
-aplicativos do Material Design. Para usar o Material Design nos aplicativos Android, siga as orientações definidas 
-nas <a href="http://www.google.com/design/spec">especificações do Material Design</a> e use os novos 
+aplicativos do Material Design. Para usar o Material Design nos aplicativos Android, siga as orientações definidas
+nas <a href="http://www.google.com/design/spec">especificações do Material Design</a> e use os novos
 componentes e funcionalidades disponíveis no Android 5.0 (API de nível 21) e em posteriores.</p>
 
 <p>O Android fornece os seguintes elementos para criar aplicativos do Material Design:</p>
@@ -59,7 +59,7 @@
 
 <h3>Tema do Material</h3>
 
-<p>O tema do Material fornece um novo estilo para o seu aplicativo, widgets de sistema que permitem 
+<p>O tema do Material fornece um novo estilo para o seu aplicativo, widgets de sistema que permitem
 definir a paleta de cores e as animações padrão para feedback de toque e transições de atividades.</p>
 
 <!-- two columns -->
@@ -79,13 +79,13 @@
 <br style="clear:left"/>
 </div>
 
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/theme.html">Como usar o tema 
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/theme.html">Como usar o tema
 do Material</a>.</p>
 
 
 <h3>Listas e cartões</h3>
 
-<p>O Android fornece dois novos widgets para exibir cartões e listas com estilos e animações do 
+<p>O Android fornece dois novos widgets para exibir cartões e listas com estilos e animações do
 Material Design:</p>
 
 <!-- two columns -->
@@ -97,19 +97,19 @@
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
-  <p>O novo widget <code>CardView</code> permite exibir informações importantes dentro de 
+  <p>O novo widget <code>CardView</code> permite exibir informações importantes dentro de
   cartões que têm aparência consistente.</p>
 </div>
 <br style="clear:left"/>
 </div>
 
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/lists-cards.html">Como criar 
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/lists-cards.html">Como criar
 listas e cartões</a>.</p>
 
 
 <h3>Sombras de vistas</h3>
 
-<p>Além das propriedades X e Y, vistas no Android agora têm uma propriedade 
+<p>Além das propriedades X e Y, vistas no Android agora têm uma propriedade
 Z. Essa nova propriedade representa a elevação de uma vista, que determina:</p>
 
 <ul>
@@ -130,7 +130,7 @@
   </div>
 </div>
 
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/shadows-clipping.html">Como 
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/shadows-clipping.html">Como
 definir sombras e recortar visualizações</a>.</p>
 
 
@@ -165,7 +165,7 @@
 <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 
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/animations.html">Como definir
 animações personalizadas</a>.</p>
 
 
@@ -182,5 +182,5 @@
 imagem de mapa de bits.</li>
 </ul>
 
-<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/drawables.html">Como trabalhar 
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/drawables.html">Como trabalhar
 com desenháveis</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd b/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
index 775af0c..bd4ec30 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
@@ -57,7 +57,7 @@
   <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 
+<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>
 
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 8ed12f7..89eab9a 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
@@ -66,7 +66,7 @@
 <li>Mudar características de exibição (como mudar o zoom)</li>
 </ul>
 <h4>Navegação entre telas de mesmo nível</h4>
-<p>Quando o aplicativo suporta navegação de uma lista de itens para uma vista de detalhes de um desses itens, 
+<p>Quando o aplicativo suporta navegação de uma lista de itens para uma vista de detalhes de um desses itens,
 frequentemente é desejável dar suporte à navegação de direção daquele item para outro anterior ou
 posterior a ele na lista. Por exemplo, no Gmail, é fácil deslizar para a esquerda ou para a direita em uma
 conversa para visualizar uma mais nova ou mais antiga na mesma Caixa de entrada. Assim como ao mudar a vista dentro de uma tela, tal
@@ -82,9 +82,9 @@
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
 
-<p>Você tem a capacidade de deixar o comportamento de Para Cima ainda mais inteligente com base em seu conhecimento da 
+<p>Você tem a capacidade de deixar o comportamento de Para Cima ainda mais inteligente com base em seu conhecimento da
 vista de detalhe. Estendendo o exemplo da Play Store acima, imagine que o usuário navegou do último
-Livro visualizado para os detalhes da adaptação do Filme. Nesse caso, Para Cima pode retornar a um contêiner 
+Livro visualizado para os detalhes da adaptação do Filme. Nesse caso, Para Cima pode retornar a um contêiner
 (filmes) pelo qual o usuário não navegou anteriormente.</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
@@ -116,7 +116,7 @@
 
 <h4>Notificações indiretas</h4>
 
-<p>Quando o aplicativo precisa apresentar simultaneamente informações sobre vários eventos, ele pode usar 
+<p>Quando o aplicativo precisa apresentar simultaneamente informações sobre vários eventos, ele pode usar
 uma única notificação que direcione o usuário a uma tela intersticial. Essa tela resume esses
 eventos e fornece caminhos para que o usuário mergulhe profundamente no aplicativo. Notificações desse estilo são
 chamadas de <em>notificações indiretas</em>.</p>
@@ -128,7 +128,7 @@
 navegando dentro do aplicativo em vez de voltar à tela intersticial.</p>
 
 <p>Por exemplo, suponha que um usuário no Gmail receba uma notificação indireta do Agenda. Tocar nessa
-notificação abrirá a tela intersticial, que exibirá lembretes para vários 
+notificação abrirá a tela intersticial, que exibirá lembretes para vários
 eventos. Tocar em Voltar na tela intersticial retornará o usuário ao Gmail. Tocar em um determinado evento
 levará o usuário da tela intersticial ao aplicativo completo do Agenda para exibir detalhes do
 evento. Dos detalhes do evento, Para Cima e Voltar navegam para a vista de nível superior do Agenda.</p>
@@ -169,7 +169,7 @@
 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 
+ú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 a assistência de outro
@@ -188,7 +188,7 @@
 
 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
 
-<p>Quando o usuário seleciona o compartilhamento via Gmail, a atividade de composição do Gmail é adicionada como uma continuação da 
+<p>Quando o usuário seleciona o compartilhamento via Gmail, a atividade de composição do Gmail é adicionada como uma continuação da
 Tarefa A &mdash; nenhuma tarefa nova é criada. Se o Gmail tivesse a própria tarefa em execução em segundo plano, ela não
 seria afetada.</p>
 
@@ -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 tela 
+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/design/patterns/notifications.jd b/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
index efea610..5560e85 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/notifications.jd
@@ -43,12 +43,12 @@
 funcionais:</p>
 
 <ul>
-  <li>As notificações passaram por mudanças visuais consistentes com o novo 
+  <li>As notificações passaram por mudanças visuais consistentes com o novo
 tema do Material Design.</li>
   <li> As notificações agora estão disponíveis na tela de bloqueio do dispositivo, enquanto que
 o conteúdo sensível ainda pode
 ficar oculto atrás dela.</li>
-  <li>Notificações de alta prioridade recebidas enquanto o dispositivo está em uso agora usam um novo formato, chamado de 
+  <li>Notificações de alta prioridade recebidas enquanto o dispositivo está em uso agora usam um novo formato, chamado de
 notificações heads-up.</li>
   <li>Notificações sincronizadas na nuvem: descartar uma notificação em um dos
 dispositivos Android a descarta
@@ -62,7 +62,7 @@
 
 <h2 id="Anatomy">Anatomia de uma notificação</h2>
 
-<p>Esta seção aborda as partes básicas de uma notificação e como elas 
+<p>Esta seção aborda as partes básicas de uma notificação e como elas
 podem aparecer em diferentes tipos de dispositivos.</p>
 
 <h3 id="BaseLayout">Layout básico</h3>
@@ -83,7 +83,7 @@
 para versões anteriores da plataforma têm a mesma aparência e o mesmo funcionamento no Android
 5.0, com apenas mudanças menores de estilo que o sistema
 entrega a você. Para obter mais informações sobre notificações em versões
-anteriores do Android, consulte 
+anteriores do Android, consulte
 <a href="./notifications_k.html">Notificações no Android 4.4 ou em anteriores</a>.</p></p>
 
 
@@ -92,7 +92,7 @@
 
 <div style="clear:both;margin-top:20px">
       <p class="img-caption">
-      Layout básico de uma notificação em dispositivo portátil (à esquerda) e a mesma notificação em Wear (à direita), 
+      Layout básico de uma notificação em dispositivo portátil (à esquerda) e a mesma notificação em Wear (à direita),
 com uma foto do usuário e um ícone de notificação
     </p>
   </div>
@@ -110,8 +110,8 @@
 compacto e expandido.
  Para notificações de um evento, o Android fornece três modelos de layout
 expandido (texto, caixa de entrada e
- imagem) para usar em seu aplicativo. As imagens a seguir mostram como 
-se parecem notificações de um evento em 
+ imagem) para usar em seu aplicativo. As imagens a seguir mostram como
+se parecem notificações de um evento em
  dispositivos portáteis (à esquerda) e usados junto ao corpo (à direita).</p>
 
 <img style="margin-top:30px"
@@ -168,7 +168,7 @@
 e um nome de ação.
  Adicionar ações a um layout básico simples torna a notificação expansível,
 mesmo se a
-notificação não tiver um layout expandido. Como as ações são exibidas apenas para notificações 
+notificação não tiver um layout expandido. Como as ações são exibidas apenas para notificações
 expandidas
  e que ficam de outra forma ocultas, certifique-se de que qualquer ação que um
 usuário possa invocar de dentro de uma
@@ -207,7 +207,7 @@
 <h3 id="MakeItPersonal">Torne-a pessoal</h3>
 
 <p>Para notificações de itens enviados por outra pessoa (como uma mensagem ou
-atualização de status), inclua a imagem da pessoa usando 
+atualização de status), inclua a imagem da pessoa usando
 {@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Anexe também informações sobre
 a pessoa nos metadados da notificação (consulte {@link android.app.Notification#EXTRA_PEOPLE}).</p>
 
@@ -235,8 +235,8 @@
 <em>Navegação para o seu aplicativo pelos widgets de página inicial e notificações</em> no padrão de projeto de <a href="{@docRoot}design/patterns/navigation.html#into-your-app">Navegação</a>.
 </p>
 
-<h3 id="correctly_set_and_manage_notification_priority">Definição e gerenciamento 
-corretos da prioridade das 
+<h3 id="correctly_set_and_manage_notification_priority">Definição e gerenciamento
+corretos da prioridade das
 notificações</h3>
 
 <p>O Android tem suporte para um sinalizador de prioridade para notificações. Esse sinalizador permite
@@ -311,11 +311,11 @@
 </table>
 
 
-<h4 id="how_to_choose_an_appropriate_priority"><strong>Como escolher uma prioridade 
+<h4 id="how_to_choose_an_appropriate_priority"><strong>Como escolher uma prioridade
 adequada
 </strong></h4>
 
-<p><code>DEFAULT</code>, <code>HIGH</code> e <code>MAX</code> são níveis de prioridade de interrupção e arriscam 
+<p><code>DEFAULT</code>, <code>HIGH</code> e <code>MAX</code> são níveis de prioridade de interrupção e arriscam
 interromper a atividade
 do usuário. Para evitar irritar os usuários de seu aplicativo, reserve níveis de prioridade de interrupção para
 notificações que:</p>
@@ -359,7 +359,7 @@
 href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
 </td>
     <td>
-<p>Chamada recebida (voz ou vídeo) ou solicitação similar de 
+<p>Chamada recebida (voz ou vídeo) ou solicitação similar de
 comunicação síncrona</p>
 </td>
  </tr>
@@ -508,7 +508,7 @@
 
 <p style="clear:left; padding-top:30px; padding-bottom:20px">Você pode fornecer
 mais detalhes sobre as notificações individuais que compõem um
-resumo usando o layout resumido expandido. Essa abordagem permite que os usuários 
+resumo usando o layout resumido expandido. Essa abordagem permite que os usuários
 entendam melhor quais
 notificações estão pendentes e decidam se estão interessados o suficiente para lê-las
 em detalhes dentro
@@ -525,13 +525,13 @@
 
 <p>Os usuários devem sempre controlar as notificações. Permita que o usuário
 desative as notificações
-de seu aplicativo ou altere as propriedades de alerta, como som de alerta e 
+de seu aplicativo ou altere as propriedades de alerta, como som de alerta e
 se a vibração será usada,
 adicionando um item de configuração da notificação nas configurações do aplicativo.</p>
 
 <h3 id="use_distinct_icons">Use ícones distintos</h3>
 <p>Ao olhar para a área de notificação, o usuário deverá ser capaz de discernir
-que tipos de 
+que tipos de
 notificações estão atualmente pendentes.</p>
 
 <div class="figure">
@@ -545,7 +545,7 @@
 
     <p><strong>O que fazer</strong></p>
     <p>Use o <a href="/design/style/iconography.html#notification">estilo de ícone de notificação</a> apropriado
- para ícones pequenos e o 
+ para ícones pequenos e o
     <a href="/design/style/iconography.html#action-bar">estilo de ícone de barra
 de ação</a> da luminosidade do Material para os ícones
     de ação.</p>
@@ -564,7 +564,7 @@
 </div>
 <p style="clear:both"><strong>O que não fazer</strong></p>
 
-<p>Use cores para distinguir o seu aplicativo dos outros. Ícones de notificação devem 
+<p>Use cores para distinguir o seu aplicativo dos outros. Ícones de notificação devem
 somente ser uma imagem com fundo branco sobre transparente.</p>
 
 
@@ -599,7 +599,7 @@
 
 <p>Para criar um aplicativo que as pessoas gostem de usar, é importante
 reconhecer que a atenção e o foco
-do usuário são recursos que devem ser protegidos. Apesar de o sistema de 
+do usuário são recursos que devem ser protegidos. Apesar de o sistema de
 notificação do Android ter
 sido projetado para minimizar o impacto das notificações na atenção do usuário,
 ainda é
@@ -617,7 +617,7 @@
    Exemplos de notificação que depende de tempo
   </p>
 
-<p>Apesar de aplicativos bem comportados geralmente se manifestarem apenas quando ocorre interação com eles, alguns 
+<p>Apesar de aplicativos bem comportados geralmente se manifestarem apenas quando ocorre interação com eles, alguns
 casos justificam que o aplicativo interrompa o usuário com uma notificação não solicitada.</p>
 
 <p>Use notificações principalmente para <strong>eventos que dependam de tempo</strong>, especialmente
@@ -625,11 +625,11 @@
 exemplo, um bate-papo recebido
 é uma forma síncrona em tempo real de comunicação: outro usuário
 espera ativamente a resposta. Eventos de calendário são outro exemplo bom de quando usar uma
-notificação e atrair a 
+notificação e atrair a
 atenção do usuário, pois o evento é iminente e eventos de calendário frequentemente
 envolvem outras pessoas.</p>
 
-<h3 style="clear:both" id="when_not_to_display_a_notification">Quando não exibir 
+<h3 style="clear:both" id="when_not_to_display_a_notification">Quando não exibir
 uma notificação</h3>
 
 <div class="figure" style="margin-top:60px">
@@ -646,8 +646,8 @@
 que fluem por uma rede social geralmente não justificam uma interrupção
 em tempo real. Para os usuários que se importam
 com elas, deixe que decidam recebê-las.</li>
-  <li> Não crie uma notificação se as informações novas relevantes estiverem 
-atualmente na tela. Em vez disso, 
+  <li> Não crie uma notificação se as informações novas relevantes estiverem
+atualmente na tela. Em vez disso,
 use a IU do próprio aplicativo para notificar o usuário das novas informações
 diretamente no contexto.
   Por exemplo, um aplicativo de bate-papo não deve criar notificações de sistema enquanto o
@@ -655,12 +655,12 @@
   <li> Não interrompa o usuário para realizar operações técnicas de baixo nível, como salvar
 ou sincronizar informações, nem atualize um aplicativo se o aplicativo ou o sistema puder resolver
 o problema sem envolver o usuário.</li>
-  <li> Não interrompa o usuário para informar um erro se o aplicativo 
-puder se recuperar dele por conta própria, sem que o usuário 
+  <li> Não interrompa o usuário para informar um erro se o aplicativo
+puder se recuperar dele por conta própria, sem que o usuário
 tome qualquer ação.</li>
   <li> Não crie notificações que não tenham conteúdo real de notificação e
 que meramente anunciem o seu
-aplicativo. Uma notificação deve fornecer informações úteis, oportunas e novas e 
+aplicativo. Uma notificação deve fornecer informações úteis, oportunas e novas e
 não deve ser usada
 meramente para executar um aplicativo.</li>
   <li> Não crie notificações supérfluas apenas para colocar sua marca na frente
@@ -673,7 +673,7 @@
 tela inicial.</li>
 </ul>
 
-<h2 style="clear:left" id="interacting_with_notifications">Interação com 
+<h2 style="clear:left" id="interacting_with_notifications">Interação com
 notificações</h2>
 
 <p>Notificações são indicadas por ícones na barra de status e podem ser acessadas
@@ -692,7 +692,7 @@
   </p>
 </div>
 <p>Notificações contínuas mantêm os usuários informados sobre um processo em andamento em
-segundo plano. 
+segundo plano.
 Por exemplo, reprodutores de música anunciam a faixa em reprodução no
 sistema de notificação e
 continuam a fazer isso até que o usuário interrompa a reprodução. Notificações contínuas também podem
@@ -701,7 +701,7 @@
 manualmente uma notificação contínua da gaveta de notificações.</p>
 
 <h3 id="ongoing_notifications">Reprodução de mídia</h3>
-<p>No Android 5.0, a tela de bloqueio não mostra controles de transporte por causa da classe 
+<p>No Android 5.0, a tela de bloqueio não mostra controles de transporte por causa da classe
 {@link android.media.RemoteControlClient} obsoleta. Mas ela <em>mostra</em> notificações, portanto, a notificação de reprodução
 de cada aplicativo agora é a forma
 principal para que os usuários controlem a reprodução em um estado bloqueado. Esse comportamento dá aos aplicativos mais
@@ -724,12 +724,12 @@
 
 <p>Notificações são notícias e, portanto, são essencialmente exibidas
 em ordem cronológica inversa, com
-consideração especial para a 
+consideração especial para a
 <a href="#correctly_set_and_manage_notification_priority">prioridade</a> da notificação declarada no aplicativo.</p>
 
 <p>Notificações são uma parte importante da tela de bloqueio e são exibidas proeminentemente
 sempre
-que a tela do dispositivo é exibida. O espaço na tela de bloqueio é restrito, portanto, 
+que a tela do dispositivo é exibida. O espaço na tela de bloqueio é restrito, portanto,
 é mais importante
 do que nunca identificar as notificações mais urgentes ou relevantes. Por esse
 motivo, o Android tem um
@@ -762,14 +762,14 @@
 
 <h3>Na tela de bloqueio</h3>
 
-<p>Como as notificações são visíveis na tela de bloqueio, a privacidade do usuário é uma consideração 
+<p>Como as notificações são visíveis na tela de bloqueio, a privacidade do usuário é uma consideração
 especialmente
- importante. Notificações frequentemente contêm informações sensíveis e 
+ importante. Notificações frequentemente contêm informações sensíveis e
 não devem necessariamente estar visíveis
 para qualquer pessoa que ligar a tela do dispositivo.</p>
 
 <ul>
-  <li> Para dispositivos que têm uma tela de bloqueio segura (PIN, padrão ou senha), a interface tem 
+  <li> Para dispositivos que têm uma tela de bloqueio segura (PIN, padrão ou senha), a interface tem
 partes públicas e privadas. A interface pública pode ser exibida em uma tela de bloqueio segura e,
 portanto, vista por qualquer pessoa. A interface privada é o mundo atrás da tela de bloqueio e
 só é revelada depois que o usuário faz login no dispositivo.</li>
@@ -828,7 +828,7 @@
 celular ao relógio
 e vice-versa. Os desenvolvedores também podem controlar quais ações são transmitidas. Se o
 seu aplicativo inclui
-ações que não podem ser executadas com um toque, oculte essas ações 
+ações que não podem ser executadas com um toque, oculte essas ações
 na sua notificação do Wear
 ou considere colocá-las em um aplicativo do Wear, permitindo que o usuário
 termine a ação
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
index aa02494..032950e 100644
--- a/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
@@ -334,7 +334,7 @@
 </div>
 </div>
 
-<p>Caso precise que o serviço comunique-se com processos remotos, é possível usar 
+<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>
 
@@ -348,7 +348,7 @@
   <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 
+(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
@@ -538,7 +538,7 @@
   </li>
 </ol>
 
-<p>Por exemplo, o fragmento a seguir conecta o cliente ao serviço criado acima 
+<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>
@@ -637,7 +637,7 @@
 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 
+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
diff --git a/docs/html-intl/intl/pt-br/guide/components/fragments.jd b/docs/html-intl/intl/pt-br/guide/components/fragments.jd
index 7b1acf9e..74f3dfe 100644
--- a/docs/html-intl/intl/pt-br/guide/components/fragments.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -361,8 +361,8 @@
 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 
+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>
 
 
@@ -378,7 +378,7 @@
   <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> 
+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
@@ -600,7 +600,7 @@
 
 <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 
+<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
@@ -785,7 +785,7 @@
 
 <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
@@ -798,7 +798,7 @@
 
 {@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,
diff --git a/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd b/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
index 47b9845..2fb8553 100644
--- a/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
@@ -379,7 +379,7 @@
 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> 
+deve-se declarar esses requisitos no arquivo de manifesto da seguinte forma:</p>
 
 <pre>
 &lt;manifest ... >
@@ -393,7 +393,7 @@
 <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 
+<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>
diff --git a/docs/html-intl/intl/pt-br/guide/components/index.jd b/docs/html-intl/intl/pt-br/guide/components/index.jd
index 02fcaa6..5131ead 100644
--- a/docs/html-intl/intl/pt-br/guide/components/index.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/index.jd
@@ -1,7 +1,7 @@
 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.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
 
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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
@@ -32,11 +32,11 @@
 
   <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 
+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>
 
diff --git a/docs/html-intl/intl/pt-br/guide/components/loaders.jd b/docs/html-intl/intl/pt-br/guide/components/loaders.jd
index f3c4209..c69cbbfd 100644
--- a/docs/html-intl/intl/pt-br/guide/components/loaders.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>Classes principais</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>Exemplos relacionados</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@
 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
@@ -68,7 +68,7 @@
 {@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 
+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 />
@@ -129,7 +129,7 @@
 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> 
+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
@@ -140,7 +140,7 @@
 <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> 
+android.app.LoaderManager} por atividade ou fragmento.</p>
 
 <p>Geralmente,
 inicializa-se um {@link android.content.Loader} dentro do método {@link
@@ -157,13 +157,13 @@
 <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> 
+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> 
+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>
@@ -193,7 +193,7 @@
 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>). 
+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>
@@ -245,7 +245,7 @@
 — chamado quando um carregador anteriormente criado termina o seu carregamento.
 </li></ul>
 <ul>
-  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}  
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
     — chamado quando um carregador anteriormente criado é reiniciado,
 tornando os dados indisponíveis.
 </li>
@@ -343,7 +343,7 @@
 <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 
+<p>Esta implementação chama
 {@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
 com um valor de <code>null</code>:</p>
 
@@ -366,7 +366,7 @@
 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>
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
index c8e636d..9bd335d 100644
--- 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
@@ -120,7 +120,7 @@
 
       <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). 
+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>
 
@@ -319,7 +319,7 @@
     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) {
diff --git a/docs/html-intl/intl/pt-br/guide/components/recents.jd b/docs/html-intl/intl/pt-br/guide/components/recents.jd
index 467f620..9f75885 100644
--- a/docs/html-intl/intl/pt-br/guide/components/recents.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/recents.jd
@@ -41,7 +41,7 @@
 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 
+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>
 
@@ -158,8 +158,8 @@
 <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 
+  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>
@@ -169,7 +169,7 @@
 
   <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 
+  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>
@@ -205,7 +205,7 @@
 
 <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 
+<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>
 
diff --git a/docs/html-intl/intl/pt-br/guide/components/services.jd b/docs/html-intl/intl/pt-br/guide/components/services.jd
index 123d90a..564ac80 100644
--- a/docs/html-intl/intl/pt-br/guide/components/services.jd
+++ b/docs/html-intl/intl/pt-br/guide/components/services.jd
@@ -185,7 +185,7 @@
 <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> 
+<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>
 
@@ -494,7 +494,7 @@
 
 <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 
+<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
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
index d309c67..8e485b0 100644
--- 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
@@ -77,7 +77,7 @@
 </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 
+<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
@@ -85,7 +85,7 @@
 
 <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 
+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
@@ -103,7 +103,7 @@
 destruída e a atividade anterior reinicia.</p>
 
 
-<p>Se o usuário continua pressionando <em>Voltar</em>, cada atividade na pilha é retirada para 
+<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>
@@ -295,7 +295,7 @@
 
 <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 
+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>
 
@@ -334,7 +334,7 @@
 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 
+  <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
@@ -505,7 +505,7 @@
 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 
+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>
@@ -557,13 +557,13 @@
 <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 
+<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 
+ 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 
+<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>
 
diff --git a/docs/html-intl/intl/pt-br/guide/index.jd b/docs/html-intl/intl/pt-br/guide/index.jd
index ab39647..74151cc 100644
--- a/docs/html-intl/intl/pt-br/guide/index.jd
+++ b/docs/html-intl/intl/pt-br/guide/index.jd
@@ -29,7 +29,7 @@
 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 
+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>
 
@@ -53,7 +53,7 @@
 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 
+<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>
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
index e337796..639b6db 100644
--- 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
@@ -34,14 +34,14 @@
 <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 
+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>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>  
+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>
@@ -66,7 +66,7 @@
 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. 
+ou em qualquer outra menção ao nome do elemento.
 </p>
 
 <pre>
@@ -128,7 +128,7 @@
 <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.  
+adicionar elementos ou atributos próprios.
 </p>
 
 <p style="margin-left: 2em">
@@ -158,7 +158,7 @@
 </p>
 
 
-    
+
 
 <h2 id="filec">Convenções de arquivos</h2>
 
@@ -172,25 +172,25 @@
 <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.  
+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.  
+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/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 
+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> 
+é 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>
 
@@ -200,32 +200,32 @@
 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 
+<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; 
+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>).  
+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}), 
+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.  
+toda a designação do pacote.
 Por exemplo: uma subclasse {@link android.app.Service} pode ser declarada assim:
 </p>
 
@@ -240,11 +240,11 @@
 
 <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: 
+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;
@@ -257,13 +257,13 @@
 &lt;/manifest&gt;</pre>
 
 <p>
-Ao iniciar um componente, o Android cria uma instância da subclasse nomeada.  
+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.  
+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;
@@ -276,22 +276,22 @@
 <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 
+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.  
+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 ?}' 
+Os valores de um tema são expressos de forma semelhante, mas, com um '{@code ?}'
 em vez de '{@code @}':
 </p>
 
@@ -299,8 +299,8 @@
 </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 
+<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>
 
@@ -320,7 +320,7 @@
 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.  
+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.
@@ -330,7 +330,7 @@
 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 
+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.
@@ -345,8 +345,8 @@
 
 <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 
+consulte o documento
+<a href="{@docRoot}guide/components/intents-filters.html">Intenções
 e filtros de intenções</a> em separado.
 </p>
 
@@ -355,41 +355,41 @@
 
 <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 
+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 
+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> 
+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 
+<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 
+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 
+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 
+que deve ser exibida no inicializador do aplicativo.  O ícone e a etiqueta
 definidos no filtro são, portanto, as exibidas no inicializador.
 </p>
 
@@ -397,14 +397,14 @@
 <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.  
+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 
+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>
 
@@ -418,25 +418,25 @@
 </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. 
+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 
+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>
@@ -458,41 +458,41 @@
 
 <p>
 Observe que, nesse exemplo, a permissão {@code DEBIT_ACCT}, além de declarada
-com o elemento 
+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 
+, 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.  
+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 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 
+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>. 
+  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 
+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 
+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; 
+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 
+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>
@@ -501,17 +501,17 @@
 <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 
+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 
+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 
+ 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
index ce72b7d..42a517b 100644
--- 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
@@ -42,7 +42,7 @@
       <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>
 
@@ -113,26 +113,26 @@
   </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. 
+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
@@ -141,7 +141,7 @@
   </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
@@ -149,7 +149,7 @@
   </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
@@ -159,7 +159,7 @@
 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,
@@ -211,7 +211,7 @@
 
 <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>. 
+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>
@@ -229,7 +229,7 @@
   </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
@@ -240,7 +240,7 @@
   </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
@@ -253,7 +253,7 @@
 <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 
+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>
@@ -268,13 +268,13 @@
     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
@@ -289,7 +289,7 @@
 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> 
+sincronizadas.</p> </div> </div>
 
 
 <p> Na próxima parte do exemplo, você construirá a consulta. A seleção
@@ -308,38 +308,38 @@
 <pre>// Run query
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;   
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+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. 
+        "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
@@ -350,7 +350,7 @@
 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. 
+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
@@ -377,14 +377,14 @@
 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 
+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} 
+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
@@ -434,7 +434,7 @@
   </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
@@ -444,39 +444,39 @@
   </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} 
+    <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>
@@ -514,11 +514,11 @@
 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
@@ -528,7 +528,7 @@
 é 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
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -581,7 +581,7 @@
 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. 
+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
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -608,7 +608,7 @@
 <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. 
+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
@@ -625,7 +625,7 @@
 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);  
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
 </pre>
 
 <h2 id="attendees">Tabela de participantes</h2>
@@ -634,10 +634,10 @@
 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. 
+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> 
+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
@@ -773,7 +773,7 @@
 
 <h2 id="instances">Tabela de instâncias</h2>
 
-<p>A tabela 
+<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
@@ -782,7 +782,7 @@
 <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 
+e
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
 
 
@@ -801,18 +801,18 @@
   </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. 
-    
+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>
@@ -820,16 +820,16 @@
   </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>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. 
+ao fuso horário do Agenda.
 </td>
-    
+
   </tr>
 
 </table>
@@ -840,7 +840,7 @@
 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}. 
+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
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -923,8 +923,8 @@
     {@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>. 
+{@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>
@@ -935,11 +935,11 @@
 
      </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}. 
+{@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>
 
@@ -952,12 +952,12 @@
   <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}. 
+{@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>
 
@@ -972,11 +972,11 @@
     <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}. 
+{@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>
@@ -996,7 +996,7 @@
     <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>
@@ -1004,25 +1004,25 @@
   <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>As seções a seguir descrevem como usar estas intenções.</p>
 
 
@@ -1059,14 +1059,14 @@
 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
@@ -1075,7 +1075,7 @@
 <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
@@ -1083,10 +1083,10 @@
 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();
@@ -1158,12 +1158,12 @@
 
 <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á
@@ -1180,5 +1180,5 @@
         .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 
+<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
index 0d42d2d..f3b7c58 100644
--- 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
@@ -113,14 +113,14 @@
     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>. 
+    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 
+    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>
@@ -199,7 +199,7 @@
             {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}.
         </td>
         <td>
-            O formato desse nome é específico deste tipo de conta. 
+            O formato desse nome é específico deste tipo de conta.
             Não se trata necessariamente de um endereço de e-mail.
         </td>
     </tr>
@@ -239,7 +239,7 @@
 <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 
+        {@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}.
@@ -275,7 +275,7 @@
     Configurações da <em>conta</em>.
 </p>
 <p>
-    Suponhamos que Emily Dickinson abra uma janela do navegador, acesse o Gmail como 
+    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
@@ -309,7 +309,7 @@
     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>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>
@@ -490,7 +490,7 @@
     {@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 
+    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>
@@ -981,7 +981,7 @@
     {@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 
+    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()}.
@@ -1403,7 +1403,7 @@
             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. 
+            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
@@ -1636,7 +1636,7 @@
     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 
+    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>
 
@@ -1652,7 +1652,7 @@
     </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. 
+    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>
@@ -1830,7 +1830,7 @@
 </p>
 <h3 id="StreamText">Textos de fluxos sociais</h3>
 <p>
-    Itens de fluxo sempre são associados a um contato bruto. 
+    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.
@@ -1861,17 +1861,17 @@
         ao inserir um item de fluxo:
         <ul>
             <li>
-                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: 
+                {@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}: 
+                {@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}: 
+                {@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>
@@ -2275,14 +2275,14 @@
     </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 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>.
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
index 5005f92..7bbca94 100644
--- 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
@@ -216,7 +216,7 @@
     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}. 
+    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>
@@ -251,7 +251,7 @@
 </pre>
 <p>
     A tabela 2 mostra como os argumentos para
-    {@link android.content.ContentResolver#query 
+    {@link android.content.ContentResolver#query
     query(Uri,projection,selection,selectionArgs,sortOrder)} correspondem a uma declaração SQL SELECT:
 </p>
 <p class="table-caption">
@@ -310,7 +310,7 @@
     {@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. 
+    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>
@@ -344,7 +344,7 @@
 </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. 
+    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.
@@ -359,7 +359,7 @@
 </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". 
+    {@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">
@@ -567,7 +567,7 @@
 <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. 
+    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
@@ -946,7 +946,7 @@
     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 
+    {@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
@@ -954,7 +954,7 @@
 </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. 
+    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>.
@@ -1089,7 +1089,7 @@
 </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. 
+    {@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
@@ -1184,7 +1184,7 @@
 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 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
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
index 11ad4c3..6ae7b2d6 100644
--- 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
@@ -203,7 +203,7 @@
 <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. 
+    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.
@@ -539,7 +539,7 @@
     </dd>
 </dl>
 <p>
-    Observe que esses métodos têm a mesma assinatura dos métodos 
+    Observe que esses métodos têm a mesma assinatura dos métodos
         {@link android.content.ContentResolver} de mesmo nome.
 </p>
 <p>
@@ -569,7 +569,7 @@
 </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
@@ -778,7 +778,7 @@
     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 
+    no site de
     <a href="http://www.iana.org/assignments/media-types/index.htm">Tipos de mídia MIME IANA</a>.
 </p>
 <p>
@@ -981,7 +981,7 @@
         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> 
+        &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
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
index c9574f6..48f4cd4 100644
--- 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
@@ -52,12 +52,12 @@
  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 
+    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 
+    provedor recebe solicitações de dados de clientes, realiza a ação solicitada e
     devolve os resultados.
 </p>
 <p>
@@ -68,10 +68,10 @@
 </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 
+    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 
+    </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:
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
index 25aab7a..b2e040e 100644
--- 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
@@ -139,7 +139,7 @@
 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 
+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>
@@ -236,7 +236,7 @@
 </ul>
 
 
-<p>Esta seção descreve como programar aplicativos clientes com base nas intenções 
+<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>
 
@@ -521,7 +521,7 @@
 
 <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 
+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>
 
 
@@ -624,7 +624,7 @@
 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. 
+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
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
index f196dfe..de8b5df 100644
--- 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
@@ -11,7 +11,7 @@
 {@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 
+    <li>Também é possível acessar os recursos do aplicativo com métodos em
 {@link android.content.res.Resources}</li>
   </ul>
 
@@ -43,10 +43,10 @@
 
 
 <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 
+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 
+<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
@@ -60,7 +60,7 @@
 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 
+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>
 
@@ -101,7 +101,7 @@
 <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, 
+<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>
@@ -139,7 +139,7 @@
 
 <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 
+<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>
@@ -176,7 +176,7 @@
 
 
 <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 é 
+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>
 
 
@@ -209,7 +209,7 @@
 <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 
+  <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
@@ -260,10 +260,10 @@
 </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. 
+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, 
+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
@@ -289,14 +289,14 @@
 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, 
+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 à 
+<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>
@@ -320,7 +320,7 @@
 <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 
+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>
 
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
index 5bf37e6..b34c01b 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
@@ -24,8 +24,8 @@
 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 
+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">
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
index 1118fd5..b45018d 100644
--- 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
@@ -71,7 +71,7 @@
 </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 
+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>
 
@@ -161,7 +161,7 @@
 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 
+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
@@ -510,7 +510,7 @@
 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},
@@ -627,8 +627,8 @@
 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> 
+          <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
@@ -823,7 +823,7 @@
     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 
+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,
@@ -1088,7 +1088,7 @@
 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 
+(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
index 366ce0d..416bce9 100644
--- 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
@@ -125,7 +125,7 @@
 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. 
+<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>
 
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
index 58a4fcd..1cd6d52 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <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} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 09dbd2c..8782ba2 100644
--- 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
@@ -43,7 +43,7 @@
 <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>. 
+<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>
 
@@ -123,7 +123,7 @@
 </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 
+ela é inicializada (veja a discussão sobre ciclos de vida no documento
 <a href="{@docRoot}guide/components/activities.html#Lifecycle">Atividades</a>
 ).</p>
 
@@ -201,7 +201,7 @@
 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 
+<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>
 
@@ -229,7 +229,7 @@
 <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> 
+   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>
@@ -262,7 +262,7 @@
    <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. 
+   dentro da vista pai.
    Para obter as dimensões medidas, chamam-se {@link android.view.View#getMeasuredWidth()}
    e {@link android.view.View#getMeasuredHeight()}.
    </p>
@@ -368,7 +368,7 @@
 <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. 
+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}
@@ -399,7 +399,7 @@
 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}. 
+recuperar diferentes tipos de dados e criar vistas de um {@link android.widget.AdapterView}.
 Os dois adaptadores mais comuns são:</p>
 
 <dl>
@@ -438,7 +438,7 @@
 </dd>
 
   <dt>{@link android.widget.SimpleCursorAdapter}</dt>
-    <dd>Use este adaptador quando os dados vierem de um {@link android.database.Cursor}. 
+    <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
@@ -466,7 +466,7 @@
 </dl>
 
 
-<p>Se durante o curso de vida do aplicativo, você mudar os dados subjacentes lidos 
+<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>
 
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
index 2cbedbe..71e6176 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -235,8 +235,8 @@
 </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 
+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>
@@ -248,7 +248,7 @@
   <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> 
+  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
@@ -271,7 +271,7 @@
 <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, 
+<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">
@@ -291,7 +291,7 @@
 
 <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 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
@@ -320,8 +320,8 @@
 <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) 
+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
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -373,7 +373,7 @@
 
 <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) 
+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>
@@ -442,7 +442,7 @@
 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 
+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.
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
@@ -695,7 +695,7 @@
 }
 </pre>
 
-<p>Para obter mais informações sobre a realização de operações de fragmentos, consulte o guia 
+<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
@@ -721,7 +721,7 @@
 &lt;/resources>
 </pre>
 
-<p>Assim, é possível inicializar o valor {@code mIsLargeLayout} durante o método 
+<p>Assim, é possível inicializar o valor {@code mIsLargeLayout} durante o método
 {@link android.app.Activity#onCreate onCreate()} da atividade:</p>
 
 <pre>
@@ -776,7 +776,7 @@
 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 
+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>
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
index 833f896..6bdb370 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@
 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.
@@ -94,7 +94,7 @@
 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
@@ -135,7 +135,7 @@
   <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,
@@ -218,7 +218,7 @@
 foi desenvolvido:</p>
 
 <ul>
-  <li>Caso tenha desenvolvido o aplicativo para <strong>Android 2.3.x (API de nível 10) ou 
+  <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
@@ -363,7 +363,7 @@
 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> 
+<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
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -901,7 +901,7 @@
 (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 
+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>
@@ -1023,9 +1023,9 @@
 &lt;/intent-filter>
 </pre>
 
-<p>Leia mais sobre a criação de filtros de intenção no documento 
+<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 
+<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
index 42563ac..d3fb4cf 100644
--- 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
@@ -92,7 +92,7 @@
 <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 
+ 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>
@@ -451,14 +451,14 @@
                 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 
+                como o filho de
 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
                 <p>
-                    Para este elemento, defina 
+                    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 
+                    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>
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
index d12bfe5..d82ecf7 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
@@ -4,12 +4,12 @@
 
 <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 
+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 
+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>
 
 
@@ -30,7 +30,7 @@
 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 
+<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>
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <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
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
index f95966c..c00b461 100644
--- a/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@
 
 <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} 
+do Android. A seleção de um item definido por uma {@link android.preference.Preference}
 abre uma interface para alterar a configuração.</p>
 
 
@@ -120,8 +120,8 @@
 </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 
+ 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>
@@ -226,8 +226,8 @@
   <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 
+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>
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -311,7 +311,7 @@
 
 <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 
+<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>
 
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -636,7 +636,7 @@
 <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 
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} e chamar
 {@link android.preference.PreferenceActivity#loadHeadersFromResource
 loadHeadersFromResource()}. Por exemplo:</p>
 
@@ -672,15 +672,15 @@
 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> 
+e posterior ({@code res/xml/preference_headers.xml}):</p>
 
 <pre>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index e0ace1d..2f88248 100644
--- 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
@@ -30,7 +30,7 @@
 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. 
+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>
@@ -46,27 +46,27 @@
 
 <dl>
   <dt><code>onClick()</code></dt>
-    <dd>De {@link android.view.View.OnClickListener}. 
+    <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}. 
+    <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}. 
+    <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}. 
+    <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}. 
+    <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}. 
+    <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>
@@ -75,8 +75,8 @@
 <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> 
+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>
@@ -121,17 +121,17 @@
 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; 
+  <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> - 
+  <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 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> - 
+  <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á
@@ -181,14 +181,14 @@
 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 
+    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 
+    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>
 
@@ -199,7 +199,7 @@
 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". 
+de interação chamado "modo de toque".
 </p>
 <p>
 Para dispositivos com capacidades de toque, quando o usuário toca na tela, o dispositivo
@@ -214,7 +214,7 @@
 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). 
+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>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd
index c16d847..d638e71 100644
--- a/docs/html-intl/intl/pt-br/preview/api-overview.jd
+++ b/docs/html-intl/intl/pt-br/preview/api-overview.jd
@@ -48,7 +48,7 @@
 
 
 
-<p>O Android N ainda está em desenvolvimento ativo, mas agora você já pode testá-lo 
+<p>O Android N ainda está em desenvolvimento ativo, mas agora você já pode testá-lo
 como parte do N Developer Preview. As seções a seguir destacam alguns dos
 novos recursos para desenvolvedores. </p>
 
@@ -62,7 +62,7 @@
 <h2 id="multi-window_support">Suporte a várias janelas</h2>
 
 
-<p>No Android N, introduzimos um recurso de multitarefa novo e muito solicitado 
+<p>No Android N, introduzimos um recurso de multitarefa novo e muito solicitado
 na plataforma &mdash; o suporte a várias janelas. </p>
 
   <p>Agora os usuários podem abrir dois aplicativos na tela ao mesmo tempo. </p>
@@ -85,9 +85,9 @@
 
   </div>
 
-<p>O suporte a várias janelas oferece novas formas de envolver os usuários, 
-particularmente em tablets e outros dispositivos com telas maiores. Você pode até ativar o recurso de arrastar e soltar 
-no aplicativo para permitir que os usuários arrastem conteúdo de ou para o aplicativo &mdash; uma ótima 
+<p>O suporte a várias janelas oferece novas formas de envolver os usuários,
+particularmente em tablets e outros dispositivos com telas maiores. Você pode até ativar o recurso de arrastar e soltar
+no aplicativo para permitir que os usuários arrastem conteúdo de ou para o aplicativo &mdash; uma ótima
 maneira de aprimorar a experiência do usuário. </p>
 
 <p>É muito fácil adicionar suporte a várias janelas a seu aplicativo e configurar como ele
@@ -103,7 +103,7 @@
 
 <h2 id="notification_enhancements">Aprimoramentos de notificações</h2>
 
-<p>Reformulamos as notificações no Android N para facilitar e agilizar o 
+<p>Reformulamos as notificações no Android N para facilitar e agilizar o
 uso. Entre as alterações estão:</p>
 
 <ul>
@@ -158,7 +158,7 @@
   <strong>Figura 2.</strong> Notificações empacotadas e resposta direta.
 </p>
 
-<p>Para saber como implementar os novos recursos, consulte o 
+<p>Para saber como implementar os novos recursos, consulte o
 guia <a href="{@docRoot}preview/features/notification-updates.html">Notificações</a>
 .</p>
 
@@ -166,42 +166,42 @@
 
 <h2 id="jit_aot">Compilação JIT/AOT orientada a perfil</h2>
 
-<p>No Android N, adicionamos um compilador Just in Time (JIT) com perfis de código para 
-ART, o que permite aprimorar constantemente o desempenho de aplicativos Android durante a 
+<p>No Android N, adicionamos um compilador Just in Time (JIT) com perfis de código para
+ART, o que permite aprimorar constantemente o desempenho de aplicativos Android durante a
 execução. O compilador JIT complementa o compilador atual Ahead of Time (AOT)
  do ART e ajuda a aprimorar o desempenho em tempo de execução, economizar espaço de armazenamento e acelerar atualizações
  de aplicativos e de sistema.</p>
 
-<p>A compilação orientada a perfil permite que o ART gerencie a compilação AOT/JIT de cada aplicativo 
-de acordo com o uso real e com as condições no dispositivo. Por 
-exemplo, o ART mantém um perfil dos principais métodos do aplicativo e pode pré-compilar 
+<p>A compilação orientada a perfil permite que o ART gerencie a compilação AOT/JIT de cada aplicativo
+de acordo com o uso real e com as condições no dispositivo. Por
+exemplo, o ART mantém um perfil dos principais métodos do aplicativo e pode pré-compilar
 e armazenar esses métodos em cache para obter o melhor desempenho. As outras partes do aplicativo não são
 compiladas até que sejam realmente utilizadas.</p>
 
-<p>Além de aprimorar o desempenho para as principais partes do aplicativo, a compilação 
-ajuda a reduzir o uso geral de recursos de RAM, incluindo os binários 
+<p>Além de aprimorar o desempenho para as principais partes do aplicativo, a compilação
+ajuda a reduzir o uso geral de recursos de RAM, incluindo os binários
 associados. Esse recurso é particularmente importante em dispositivos com pouca memória.</p>
 
-<p>O ART gerencia a compilação orientada a perfil de forma a minimizar o impacto sobre a 
-bateria do dispositivo. A pré-compilação é executada apenas quando o dispositivo está ocioso e 
+<p>O ART gerencia a compilação orientada a perfil de forma a minimizar o impacto sobre a
+bateria do dispositivo. A pré-compilação é executada apenas quando o dispositivo está ocioso e
 com a bateria sendo carregada, economizando tempo e bateria com a execução antecipada dessa tarefa.</p>
 
 <h2 id="quick_path_to_app_install">Caminho rápido para a instalação de aplicativos</h2>
 
-<p>Um dos benefícios mais tangíveis do compilador JIT do ART é a velocidade de instalação dos 
-aplicativos e das atualizações do sistema. Até mesmo aplicativos grandes, que exigiam vários minutos para 
-otimização e instalação no Android 6.0, podem agora ser instalados em 
+<p>Um dos benefícios mais tangíveis do compilador JIT do ART é a velocidade de instalação dos
+aplicativos e das atualizações do sistema. Até mesmo aplicativos grandes, que exigiam vários minutos para
+otimização e instalação no Android 6.0, podem agora ser instalados em
 segundos. As atualizações de sistema também ficaram mais rápidas, pois não existe mais a etapa de otimização. </p>
 
 <h2 id="doze_on_the_go">Modo soneca em movimento...</h2>
 
-<p>O Android 6.0 introduziu o modo soneca, um modo de sistema que economiza bateria adiando 
-atividades de CPU e rede dos aplicativos quando o dispositivo está ocioso, como 
+<p>O Android 6.0 introduziu o modo soneca, um modo de sistema que economiza bateria adiando
+atividades de CPU e rede dos aplicativos quando o dispositivo está ocioso, como
 quando está em uma mesa ou gaveta. </p>
 
-<p>Agora, no Android N, o modo soneca foi aprimorado e economiza bateria quando em movimento. 
-Sempre que a tela ficar desativada por um período e o dispositivo ficar desativado, 
-o modo soneca aplicará um subconjunto das restrições familiares de CPU e rede aos aplicativos. 
+<p>Agora, no Android N, o modo soneca foi aprimorado e economiza bateria quando em movimento.
+Sempre que a tela ficar desativada por um período e o dispositivo ficar desativado,
+o modo soneca aplicará um subconjunto das restrições familiares de CPU e rede aos aplicativos.
 Isso significa que os usuários podem economizar bateria transportando os dispositivos no
 bolso.</p>
 
@@ -213,36 +213,36 @@
 </p>
 
 
-<p>Pouco depois de a tela ser desativada com o dispositivo alimentado pela bateria, o modo soneca 
-restringe o acesso de rede e adia trabalhos e sincronizações. Durante breves janelas de 
-manutenção, os aplicativos podem acessar a rede e todos os 
+<p>Pouco depois de a tela ser desativada com o dispositivo alimentado pela bateria, o modo soneca
+restringe o acesso de rede e adia trabalhos e sincronizações. Durante breves janelas de
+manutenção, os aplicativos podem acessar a rede e todos os
 trabalhos/sincronizações adiados são executados. A ativação da tela ou do dispositivo
 encerra o modo soneca.</p>
 
-<p>Quando o dispositivo voltar a ficar estacionário, com a tela desativada e alimentado por bateria por um 
+<p>Quando o dispositivo voltar a ficar estacionário, com a tela desativada e alimentado por bateria por um
 período, o modo soneca aplicará as restrições completas de CPU e rede em {@link
-android.os.PowerManager.WakeLock}, alarmes {@link android.app.AlarmManager} e 
+android.os.PowerManager.WakeLock}, alarmes {@link android.app.AlarmManager} e
 verificações de GPS/Wi-Fi.</p>
 
-<p>As práticas recomendadas para adaptar o aplicativo ao modo soneca são as mesmas para 
-dispositivos estacionários ou em movimento. Portanto, se você já atualizou o aplicativo para 
+<p>As práticas recomendadas para adaptar o aplicativo ao modo soneca são as mesmas para
+dispositivos estacionários ou em movimento. Portanto, se você já atualizou o aplicativo para
 processar o modo soneca corretamente, está pronto. Caso contrário, comece a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptar
  o aplicativo para o modo soneca</a> agora.</p>
 
 <h2 id="background_optimizations">Project Svelte: Otimizações em segundo plano</h2>
 
-<p>O Project Svelte é um esforço contínuo para minimizar o uso de RAM pelo sistema e pelos aplicativos 
-nos dispositivos Android existentes no ecossistema. No Android N, o Project 
+<p>O Project Svelte é um esforço contínuo para minimizar o uso de RAM pelo sistema e pelos aplicativos
+nos dispositivos Android existentes no ecossistema. No Android N, o Project
 Svelte se concentra em otimizar a forma de execução dos aplicativos em segundo plano. </p>
 
-<p>O processamento em segundo plano é parte essencial da maioria dos aplicativos. Quando executado corretamente, a experiência 
-do usuário pode ficar incrível &mdash; imediata, rápida e sensível ao contexto. 
-Quando executado incorretamente, o processamento em segundo plano pode consumir desnecessariamente RAM (e 
+<p>O processamento em segundo plano é parte essencial da maioria dos aplicativos. Quando executado corretamente, a experiência
+do usuário pode ficar incrível &mdash; imediata, rápida e sensível ao contexto.
+Quando executado incorretamente, o processamento em segundo plano pode consumir desnecessariamente RAM (e
 bateria) e afetar o desempenho do sistema para os outros aplicativos. </p>
 
-<p>Desde o Android 5.0, {@link android.app.job.JobScheduler} é a forma 
-preferencial para execução de trabalho em segundo plano de uma maneira que beneficia 
-os usuários. Os aplicativos podem agendar trabalhos e permitir que o sistema execute otimizações com base em 
+<p>Desde o Android 5.0, {@link android.app.job.JobScheduler} é a forma
+preferencial para execução de trabalho em segundo plano de uma maneira que beneficia
+os usuários. Os aplicativos podem agendar trabalhos e permitir que o sistema execute otimizações com base em
 condições de memória, energia e conectividade. O JobScheduler oferece controle e
 simplicidade, e queremos que seja usado por todos os aplicativos. </p>
 
@@ -253,23 +253,23 @@
  Android.
 </p>
 
-<p>Continuamos a expandir o <code>JobScheduler</code> e o 
-<code>GCMNetworkManager</code> para atender a mais 
-casos de uso &mdash; por exemplo, no Android N, você já pode agendar trabalhos 
-em segundo plano de acordo com mudanças nos provedores de conteúdo. Ao mesmo tempo, começamos a 
-substituir alguns padrões mais antigos que podem reduzir o desempenho do sistema, 
+<p>Continuamos a expandir o <code>JobScheduler</code> e o
+<code>GCMNetworkManager</code> para atender a mais
+casos de uso &mdash; por exemplo, no Android N, você já pode agendar trabalhos
+em segundo plano de acordo com mudanças nos provedores de conteúdo. Ao mesmo tempo, começamos a
+substituir alguns padrões mais antigos que podem reduzir o desempenho do sistema,
 particularmente em dispositivos com pouca memória.</p>
 
 <p>No Android N, estamos removendo três transmissões implícitas de uso comum &mdash;
 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
 android.hardware.Camera#ACTION_NEW_PICTURE} e {@link
- android.hardware.Camera#ACTION_NEW_VIDEO} &mdash;, pois podem despertar simultaneamente 
-processos em segundo plano de vários aplicativos, aumentando o consumo de memória e bateria. Se 
+ android.hardware.Camera#ACTION_NEW_VIDEO} &mdash;, pois podem despertar simultaneamente
+processos em segundo plano de vários aplicativos, aumentando o consumo de memória e bateria. Se
 o seu aplicativo receber essas transmissões, aproveite o N Developer Preview para
  migrar para o <code>JobScheduler</code> e as APIs relacionadas. </p>
 
 <p>
-  Consulte a documentação de <a href="{@docRoot}preview/features/background-optimization.html">Otimizações 
+  Consulte a documentação de <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
 em segundo plano</a> para obter mais detalhes.
 </p>
 
@@ -284,27 +284,27 @@
 </p>
   </div>
 
-<p>Normalmente, o custo de um plano de dados de celular ao longo da vida útil do dispositivo móvel 
-excede o custo do próprio dispositivo. Para muitos usuários, os dados de celular 
+<p>Normalmente, o custo de um plano de dados de celular ao longo da vida útil do dispositivo móvel
+excede o custo do próprio dispositivo. Para muitos usuários, os dados de celular
 são um recurso caro que querem economizar. </p>
 
-<p>O Android N introduz o modo de Economia de dados, um novo serviço do sistema que ajuda a reduzir 
-o uso de dados de celular pelos aplicativos em situações de roaming, perto do final do ciclo de cobrança 
-ou em pacotes de dados pré-pagos pequenos. A Economia de dados permite que os usuários controlem o 
-uso de dados de celular e possibilita que os desenvolvedores ofereçam serviços mais eficientes quando o modo de Economia 
+<p>O Android N introduz o modo de Economia de dados, um novo serviço do sistema que ajuda a reduzir
+o uso de dados de celular pelos aplicativos em situações de roaming, perto do final do ciclo de cobrança
+ou em pacotes de dados pré-pagos pequenos. A Economia de dados permite que os usuários controlem o
+uso de dados de celular e possibilita que os desenvolvedores ofereçam serviços mais eficientes quando o modo de Economia
 de dados estiver ativado. </p>
 
-<p>Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está 
-em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos 
-para reduzir o uso de dados no primeiro plano sempre que possível &mdash; como, por exemplo, limitar a 
-taxa de bits de streaming, reduzir a qualidade de imagens, adiar o armazenamento prévio otimista em cache 
+<p>Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
+em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos
+para reduzir o uso de dados no primeiro plano sempre que possível &mdash; como, por exemplo, limitar a
+taxa de bits de streaming, reduzir a qualidade de imagens, adiar o armazenamento prévio otimista em cache
 e assim por diante. Os usuários podem autorizar aplicativos específicos a usar dados tarifados
 em segundo plano, mesmo com a Economia de dados ativada.</p>
 
-<p>O Android N estende o {@link android.net.ConnectivityManager} para oferecer aos aplicativos uma 
-forma de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar as 
-preferências do usuário para a Economia de dados</a> e <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitorar 
-as mudanças de preferências</a>. Todos os aplicativos devem verificar se o usuário ativou a Economia 
+<p>O Android N estende o {@link android.net.ConnectivityManager} para oferecer aos aplicativos uma
+forma de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar as
+preferências do usuário para a Economia de dados</a> e <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitorar
+as mudanças de preferências</a>. Todos os aplicativos devem verificar se o usuário ativou a Economia
 de dados e tentar limitar o uso de dados em primeiro e segundo plano.</p>
 
 
@@ -364,16 +364,16 @@
 </p>
 
 
-  </div><p>As Configurações rápidas são uma forma popular e simples de expor as principais configurações e ações 
-diretamente na aba de notificações. No Android N, ampliamos o escopo das 
+  </div><p>As Configurações rápidas são uma forma popular e simples de expor as principais configurações e ações
+diretamente na aba de notificações. No Android N, ampliamos o escopo das
 Configurações rápidas para aumentar ainda mais a utilidade e a conveniência. </p>
 
-<p>Adicionamos mais espaço para os blocos de Configurações rápidas, que os usuários podem 
-acessar em uma área de exibição paginada deslizando à direita ou à esquerda. Além disso, 
-permitimos que os usuários controlem quais blocos de Configurações rápidas são exibidos, bem como o local 
+<p>Adicionamos mais espaço para os blocos de Configurações rápidas, que os usuários podem
+acessar em uma área de exibição paginada deslizando à direita ou à esquerda. Além disso,
+permitimos que os usuários controlem quais blocos de Configurações rápidas são exibidos, bem como o local
 em que são exibidos &mdash; para adicionar ou mover blocos, os usuários simplesmente arrastam e soltam os blocos. </p>
 
-<p>Para desenvolvedores, o Android N também adiciona uma API nova que permite definir os próprios 
+<p>Para desenvolvedores, o Android N também adiciona uma API nova que permite definir os próprios
 blocos de Configurações rápidas para que os usuários possam acessar facilmente os principais controles e ações do seu aplicativo.</p>
 
 <p>
@@ -396,25 +396,25 @@
 
 <h2 id="number-blocking">Bloqueio de número</h2>
 
-<p>O Android N agora oferece suporte a bloqueio de números na plataforma e disponibiliza uma 
+<p>O Android N agora oferece suporte a bloqueio de números na plataforma e disponibiliza uma
 API de estrutura para permitir que provedores de serviço mantenham uma lista de números bloqueados. O
- aplicativo padrão de SMS, o aplicativo padrão de telefone e os aplicativos de provedor podem ler e gravar 
+ aplicativo padrão de SMS, o aplicativo padrão de telefone e os aplicativos de provedor podem ler e gravar
 a lista de números bloqueados. A lista não está acessível para outros aplicativos.</p>
 
-<p>Ao oferecer o bloqueio de número como recurso padrão da plataforma, o Android oferece 
-uma forma consistente de bloqueio de números em uma grande variedade de 
+<p>Ao oferecer o bloqueio de número como recurso padrão da plataforma, o Android oferece
+uma forma consistente de bloqueio de números em uma grande variedade de
 dispositivos. Alguns benefícios que podem ser aproveitados pelos aplicativos são:</p>
 
 <ul>
   <li> Números bloqueados para chamadas também são bloqueados para mensagens de texto
-  <li> Números bloqueados podem persistir entre várias redefinições e dispositivos por meio do 
+  <li> Números bloqueados podem persistir entre várias redefinições e dispositivos por meio do
 recurso Backup e restauração
   <li> Vários aplicativos podem usar a mesma lista de números bloqueados
 </ul>
 
-<p>Além disso, a integração de aplicativos da operadora por meio do Android significa que as operadoras podem 
-ler a lista de números bloqueados no dispositivo e executar um bloqueio do lado do servidor 
-para o usuário, impedindo que chamadas e textos indesejados cheguem a ele 
+<p>Além disso, a integração de aplicativos da operadora por meio do Android significa que as operadoras podem
+ler a lista de números bloqueados no dispositivo e executar um bloqueio do lado do servidor
+para o usuário, impedindo que chamadas e textos indesejados cheguem a ele
 por qualquer meio, como terminais de VOIP ou encaminhamento de telefones.</p>
 
 <p>
@@ -449,23 +449,23 @@
 
 
 <p>O Android N agora permite que os usuários selecionem <strong>diversas localidades</strong> em Settings
-para oferecer melhor suporte a casos de uso bilíngue. Os aplicativos podem usar 
-uma API nova para obter as localidades selecionadas pelo usuário e oferecer 
-experiências de usuário mais sofisticadas para usuários com diversas localidades &mdash; como, por exemplo, mostrar resultados de pesquisa em 
-diversos idiomas e não oferecer a tradução de páginas da web que usam 
+para oferecer melhor suporte a casos de uso bilíngue. Os aplicativos podem usar
+uma API nova para obter as localidades selecionadas pelo usuário e oferecer
+experiências de usuário mais sofisticadas para usuários com diversas localidades &mdash; como, por exemplo, mostrar resultados de pesquisa em
+diversos idiomas e não oferecer a tradução de páginas da web que usam
 um idioma conhecido pelo usuário.</p>
 
-<p>Juntamente com o suporte a várias localidades, o Android N também amplia o número de idiomas 
-disponíveis aos usuários. Ele oferece mais de 25 variantes para cada um dos idiomas 
+<p>Juntamente com o suporte a várias localidades, o Android N também amplia o número de idiomas
+disponíveis aos usuários. Ele oferece mais de 25 variantes para cada um dos idiomas
 mais comuns, como inglês, espanhol, francês e árabe. Além disso, adiciona suporte parcial
 a mais de 100 novos idiomas.</p>
 
 <p>Os aplicativos podem obter a lista de localidades definida pelo usuário chamando
 <code>LocaleList.GetDefault()</code>.  Para oferecer suporte ao maior número de localidades, o Android N está
-alterando a forma como resolve recursos. Não deixe de testar e verificar se seus aplicativos 
+alterando a forma como resolve recursos. Não deixe de testar e verificar se seus aplicativos
 funcionam da forma esperada com a nova lógica de resolução de recursos.</p>
 
-<p>Para saber mais sobre o novo comportamento de resolução de recursos e sobre as práticas recomendadas que você deve 
+<p>Para saber mais sobre o novo comportamento de resolução de recursos e sobre as práticas recomendadas que você deve
 seguir, consulte <a href="{@docRoot}preview/features/multilingual-support.html">Suporte a vários idiomas</a>.</p>
 
 
@@ -481,7 +481,7 @@
 <ul>
   <li>
     <strong>Verifique se o dispositivo contém um emoticon antes de inseri-lo.</strong>
-    Para conferir quais emoticons estão presentes 
+    Para conferir quais emoticons estão presentes
  na fonte do sistema, use o método {@link android.graphics.Paint#hasGlyph(String)}.
   </li>
   <li>
@@ -539,19 +539,19 @@
 </ul>
 
 <p>A API da estrutura do OpenGL ES 3.2 no Android N é fornecida pela classe
-<code>GLES32</code>. Ao usar o OpenGL ES 3.2, não deixe de declarar o 
-requisito no arquivo manifesto usando o rótulo <code>&lt;uses-feature&gt;</code> e o 
+<code>GLES32</code>. Ao usar o OpenGL ES 3.2, não deixe de declarar o
+requisito no arquivo manifesto usando o rótulo <code>&lt;uses-feature&gt;</code> e o
 atributo <code>android:glEsVersion</code>. </p>
 
-<p>Para obter mais informações sobre como usar o OpenGL ES, incluindo como verificar a versão do 
+<p>Para obter mais informações sobre como usar o OpenGL ES, incluindo como verificar a versão do
 OpenGL ES compatível do dispositivo no tempo de execução, consulte o <a href="{@docRoot}guide/topics/graphics/opengl.html">guia da OpenGL ES API</a>.</p>
 
 
 <h2 id="android_tv_recording">Gravação do Android TV</h2>
 
-<p>O Android N adiciona a capacidade de gravar e reproduzir conteúdo de serviços de entrada 
-do Android TV por meio de novas APIs de gravação.  Criados usando as APIs atuais de time-shifting, 
-os serviços de entrada de TV podem controlar quais dados de canal são gravados e como 
+<p>O Android N adiciona a capacidade de gravar e reproduzir conteúdo de serviços de entrada
+do Android TV por meio de novas APIs de gravação.  Criados usando as APIs atuais de time-shifting,
+os serviços de entrada de TV podem controlar quais dados de canal são gravados e como
 as sessões gravadas são salvas, bem como gerenciar a interação do usuário com o conteúdo gravado. </p>
 
 <p>Para obter mais informações, consulte <a href="{@docRoot}preview/features/tv-recording-api.html">Android TV Recording APIs</a>.</p>
@@ -589,8 +589,8 @@
 </p>
 <h3 id="turn_off_work">Desativar o trabalho </h3>
 
-<p>Os usuários podem alternar o modo de trabalho em dispositivos com um perfil de trabalho. Quando o modo de trabalho está 
-desativado, o usuário gerenciado é encerrado temporariamente, o que desativa 
+<p>Os usuários podem alternar o modo de trabalho em dispositivos com um perfil de trabalho. Quando o modo de trabalho está
+desativado, o usuário gerenciado é encerrado temporariamente, o que desativa
 os aplicativos, a sincronização em segundo plano e as notificações do perfil de trabalho. Isso inclui o aplicativo do
 dono do perfil. Quando o modo de trabalho está desativado, o sistema exibe um ícone de status persistente
  para lembrar ao usuário que não é possível iniciar aplicativos de trabalho. A tela de início
@@ -598,7 +598,7 @@
 
 <h3 id="always_on_vpn">Always on VPN </h3>
 
-<p>Os donos de dispositivo e perfil podem garantir que os aplicativos de trabalho se conectem sempre 
+<p>Os donos de dispositivo e perfil podem garantir que os aplicativos de trabalho se conectem sempre
 por meio de uma VPN especificada. O sistema inicia automaticamente a VPN após a
  inicialização do dispositivo.</p>
 
@@ -608,7 +608,7 @@
  <code>getAlwaysOnVpnPackage()</code>.
 </p>
 
-<p>Como os serviços de VPN podem ser vinculados diretamente pelo sistema sem interação com 
+<p>Como os serviços de VPN podem ser vinculados diretamente pelo sistema sem interação com
 aplicativos, os clientes de VPN precisam processar novos pontos de entrada para o Always on VPN. Da
  mesma forma que antes, os serviços são indicados ao sistema por um filtro de intenção
  correspondente à ação <code>android.net.VpnService</code>. </p>
@@ -631,17 +631,17 @@
 
 <h2 id="accessibility_enhancements">Aprimoramentos na acessibilidade</h2>
 
-<p>O Android N agora oferece Configurações de visão diretamente na tela de boas-vindas na instalação 
+<p>O Android N agora oferece Configurações de visão diretamente na tela de boas-vindas na instalação
 de novos dispositivos. Isso permite que os usuários descubram e configurem recursos de acessibilidade
  em seus dispositivos de forma muito mais fácil, incluindo gesto de ampliação, tamanho
 da fonte, tamanho da tela e TalkBack. </p>
 
-<p>Com o posicionamento mais proeminente desses recursos de acessibilidade, os usuários 
+<p>Com o posicionamento mais proeminente desses recursos de acessibilidade, os usuários
 ficarão mais propensos a experimentar o aplicativo com os recursos ativados. Não deixe de testar antecipadamente os aplicativos
 com essas configurações ativadas. Você pode ativá-las em Settings &gt;
 Accessibility.</p>
 
-<p>Além disso, os serviços de acessibilidade no Android N podem ajudar usuários com deficiências 
+<p>Além disso, os serviços de acessibilidade no Android N podem ajudar usuários com deficiências
 motoras a tocar na tela. A nova API permite criar serviços com recursos
 como acompanhamento de face, acompanhamento de olho e varredura de pontos, entre outros, para atender
 às necessidades desses usuários.</p>
@@ -652,22 +652,22 @@
 
 <h2 id="direct_boot">Inicialização direta</h2>
 
-<p>A inicialização direta reduz os tempos de inicialização dos dispositivos e permite que aplicativos 
-registrados tenham funcionalidade limitada, mesmo após uma reinicialização inesperada. 
-Por exemplo, se um dispositivo criptografado reinicializar durante o sono do usuário, 
-alarmes registrados, mensagens e chamadas recebidas podem agora continuar notificando 
+<p>A inicialização direta reduz os tempos de inicialização dos dispositivos e permite que aplicativos
+registrados tenham funcionalidade limitada, mesmo após uma reinicialização inesperada.
+Por exemplo, se um dispositivo criptografado reinicializar durante o sono do usuário,
+alarmes registrados, mensagens e chamadas recebidas podem agora continuar notificando
 o usuário normalmente. Isso também significa que serviços de acessibilidade podem ser
 disponibilizados imediatamente após um reinício.</p>
 
-<p>A inicialização direita aproveita a criptografia baseada em arquivo do Android N 
-para ativar políticas de criptografia detalhadas para dados de sistema e aplicativos. 
-O sistema usa um armazenamento criptografado pelo dispositivo para determinados dados de sistema e dados 
+<p>A inicialização direita aproveita a criptografia baseada em arquivo do Android N
+para ativar políticas de criptografia detalhadas para dados de sistema e aplicativos.
+O sistema usa um armazenamento criptografado pelo dispositivo para determinados dados de sistema e dados
 de aplicativos registrados explicitamente. Por padrão, um armazenamento criptografado por credencial é usado para todos
 os outros dados de sistema, dados de usuário, aplicativos e dados de aplicativos. </p>
 
-<p>Na inicialização, o sistema inicia em um modo restrito que permite 
-acessar apenas dados criptografados pelo dispositivo, sem acesso geral a aplicativos ou dados. 
-Se você deseja executar componentes nesse modo, pode registrá-los 
+<p>Na inicialização, o sistema inicia em um modo restrito que permite
+acessar apenas dados criptografados pelo dispositivo, sem acesso geral a aplicativos ou dados.
+Se você deseja executar componentes nesse modo, pode registrá-los
 definindo um sinalizador no manifesto. Após a reinicialização, o sistema ativa
 componentes registrados transmitindo a intenção <code>LOCKED_BOOT_COMPLETED</code>
 . O sistema garante que dados de aplicativos registrados criptografados pelos dispositivos sejam disponibilizados
@@ -680,26 +680,26 @@
 
 <h2 id="key_attestation">Confirmação de chaves</h2>
 
-<p>Os armazenamentos de chaves protegidos por hardware oferecem um método muito mais seguro para criar, armazenar 
+<p>Os armazenamentos de chaves protegidos por hardware oferecem um método muito mais seguro para criar, armazenar
 e usar chaves de criptografia em dispositivos Android. Eles protegem chaves contra o kernel do Linux,
 possíveis vulnerabilidades do Android e extração
 em dispositivos com acesso root.</p>
 
-<p>Para permitir o uso de armazenamento de chaves protegido por hardware com maior facilidade e segurança, 
+<p>Para permitir o uso de armazenamento de chaves protegido por hardware com maior facilidade e segurança,
 o Android N introduziu a confirmação de chaves. Aplicativos em dispositivos móveis e fora deles podem usar a confirmação de chaves
 para determinar com precisão se um par de chaves RSA ou EC
 está protegido por hardware, quais as propriedades do par de chaves e quais as restrições
 aplicadas ao uso e à validação. </p>
 
-<p>Aplicativos e serviços externos aos dispositivos móveis podem solicitar informações sobre um par de chaves 
-por meio de um certificado de confirmação X.509, que deve estar assinado por uma 
-chave de confirmação válida. A chave de confirmação é uma chave de assinatura ECDSA, 
-injetada no armazenamento de chaves protegido por hardware do dispositivo na fábrica. 
-Portanto, um certificado de confirmação assinado com uma chave de confirmação 
-válida confirma a existência de um armazenamento de chaves protegido por hardware, além de 
+<p>Aplicativos e serviços externos aos dispositivos móveis podem solicitar informações sobre um par de chaves
+por meio de um certificado de confirmação X.509, que deve estar assinado por uma
+chave de confirmação válida. A chave de confirmação é uma chave de assinatura ECDSA,
+injetada no armazenamento de chaves protegido por hardware do dispositivo na fábrica.
+Portanto, um certificado de confirmação assinado com uma chave de confirmação
+válida confirma a existência de um armazenamento de chaves protegido por hardware, além de
 detalhes dos pares de chaves desse armazenamento de chaves.</p>
 
-<p>Para garantir que o dispositivo esteja usando uma imagem Android oficial de fábrica 
+<p>Para garantir que o dispositivo esteja usando uma imagem Android oficial de fábrica
 e segura, a confirmação de chaves exige que o <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
  do dispositivo forneça as seguintes informações ao <a class="external-link" href="https://source.android.com/security/trusty/index.html">Ambiente
  de execução confiável (TEE)</a>:</p>
@@ -709,7 +709,7 @@
 <li>A chave pública <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> e seu status de bloqueio</li>
   </ul>
 
-<p>Para obter mais informações sobre o recurso de armazenamento de chaves protegido por hardware, 
+<p>Para obter mais informações sobre o recurso de armazenamento de chaves protegido por hardware,
 consulte o guia <a href="https://source.android.com/security/keystore/" class="external-link">Armazenamento de chaves protegido por hardware</a>.</p>
 
 <p>Além da confirmação de chaves, o Android N também introduziu
@@ -717,9 +717,9 @@
 
 <h2 id="network_security_config">Configuração de segurança de rede</h2>
 
-<p>No Android N, os aplicativos podem personalizar o comportamento de conexões seguras (HTTPS, TLS) 
-de forma segura, sem modificação no código, usando a 
-<em>Configuração de segurança de rede</em> declarativa em vez das 
+<p>No Android N, os aplicativos podem personalizar o comportamento de conexões seguras (HTTPS, TLS)
+de forma segura, sem modificação no código, usando a
+<em>Configuração de segurança de rede</em> declarativa em vez das
 APIs programáticas propensas a erro (por exemplo, X509TrustManager).</p>
 
   <p>Recursos compatíveis:</p>
@@ -728,25 +728,25 @@
 autoridades de certificado (CA) são confiáveis para as conexões seguras. Por
  exemplo, confiar em certificados autoassinados privados ou um restrito conjunto de CAs públicas.
 </li>
-<li><b>Substituições apenas em depuração.</b> Permite que um desenvolvedor de aplicativos depure 
-conexões seguras do aplicativo com segurança, sem adicionar riscos à base 
+<li><b>Substituições apenas em depuração.</b> Permite que um desenvolvedor de aplicativos depure
+conexões seguras do aplicativo com segurança, sem adicionar riscos à base
 instalada.
 </li>
-<li><b>Cancelamento do uso de tráfego de texto simples.</b> Permite que um aplicativo seja protegido contra 
+<li><b>Cancelamento do uso de tráfego de texto simples.</b> Permite que um aplicativo seja protegido contra
 o uso acidental de tráfego de texto simples.</li>
 <li><b>Fixação de certificados.</b> Um recurso avançado que permite que os aplicativos
  limitem quais chaves de servidor são confiáveis para conexões seguras.</li>
 </ul>
 
-<p>Para obter mais configurações, consulte <a href="{@docRoot}preview/features/security-config.html">Configuração de segurança 
+<p>Para obter mais configurações, consulte <a href="{@docRoot}preview/features/security-config.html">Configuração de segurança
 de rede</a>.</p>
 
 <h2 id="default_trusted_ca">Autoridade de certificado confiável padrão</h2>
 
-<p>Por padrão, os aplicativos direcionados ao Android N confiam apenas em certificados fornecidos pelo sistema 
-e não confiam mais em Autoridades de certificado (CA) adicionadas pelo usuário. Os aplicativos direcionados ao Android 
-N que querem confiar em CAs adicionadas pelo usuário devem usar a 
-<a href="{@docRoot}preview/features/security-config.html">Configuração de segurança de rede</a> para 
+<p>Por padrão, os aplicativos direcionados ao Android N confiam apenas em certificados fornecidos pelo sistema
+e não confiam mais em Autoridades de certificado (CA) adicionadas pelo usuário. Os aplicativos direcionados ao Android
+N que querem confiar em CAs adicionadas pelo usuário devem usar a
+<a href="{@docRoot}preview/features/security-config.html">Configuração de segurança de rede</a> para
 especificar como confiar nas CAs de usuário.</p>
 
 <h2 id="apk_signature_v2">Esquema de assinatura de APK v2</h2>
@@ -804,18 +804,18 @@
 <p>No Android N, os aplicativos podem usar novas APIs para solicitar acesso a determinados diretórios de <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">armazenamento
 externo</a>, incluindo diretórios em mídias removíveis, tais como cartões
 SD. As novas APIs simplificam consideravelmente como o aplicativo acessa os
-diretórios de armazenamento externo padrão, tais como o diretório<code>Pictures</code>. Os aplicativos, 
-como aplicativos de fotografia, podem usar essas APIs em vez de 
-<code>READ_EXTERNAL_STORAGE</code>, que concede acesso a todos os diretórios de 
-armazenamento, ou da Estrutura de acesso ao armazenamento, que faz o usuário navegar até 
+diretórios de armazenamento externo padrão, tais como o diretório<code>Pictures</code>. Os aplicativos,
+como aplicativos de fotografia, podem usar essas APIs em vez de
+<code>READ_EXTERNAL_STORAGE</code>, que concede acesso a todos os diretórios de
+armazenamento, ou da Estrutura de acesso ao armazenamento, que faz o usuário navegar até
 o diretório.</p>
 
-<p>Além disso, as novas APIs simplificam as etapas executadas pelo usuário para conceder ao aplicativo 
+<p>Além disso, as novas APIs simplificam as etapas executadas pelo usuário para conceder ao aplicativo
 acesso ao armazenamento externo. Quando você usa as novas APIs, o sistema usa uma IU de permissões simples
 que detalha claramente a qual diretório o aplicativo
 está solicitando acesso.</p>
 
-<p>Para obter mais informações, consulte a documentação para desenvolvedores 
+<p>Para obter mais informações, consulte a documentação para desenvolvedores
 <a href="{@docRoot}preview/features/scoped-folder-access.html">Acessos
  a diretório com escopo</a>.</p>
 
@@ -846,7 +846,7 @@
 </p>
 
 <p>
-Para tratar estas limitações, o Android N inclui compatibilidade opcional para 
+Para tratar estas limitações, o Android N inclui compatibilidade opcional para
 <em>modo de desempenho sustentado</em>, permitindo que OEMs ofereçam dicas sobre
  capacidades de desempenho em dispositivo para aplicativos de longa duração. Os desenvolvedores de aplicativos
 podem usar essas dicas para ajustar os aplicativos para um nível de desempenho do dispositivo previsível
@@ -869,8 +869,8 @@
  desenvolvedores a capacidade de projetar experiências de RV móveis de alta qualidade para os usuários. Há diversas melhorias de desempenho
 , incluindo acesso a um núcleo exclusivo da CPU para aplicativos de RV.
  Dentro dos aplicativos, é possível tirar vantagem do rastreamento inteligente da cabeça
-e de notificações estéreo que funcionam para RV. Mais importante, o Android N oferece 
-gráficos de latência muito baixa. Para obter informações completas sobre a criação de aplicativos de RV para Android N, 
+e de notificações estéreo que funcionam para RV. Mais importante, o Android N oferece
+gráficos de latência muito baixa. Para obter informações completas sobre a criação de aplicativos de RV para Android N,
 consulte o <a href="https://developers.google.com/vr/android/">Google VR SDK para Android</a>.
 </p>
 
@@ -883,7 +883,7 @@
 </p>
 
 <p>
-  Ao listar impressoras individuais, agora um serviço de impressão pode definir 
+  Ao listar impressoras individuais, agora um serviço de impressão pode definir
 ícones por impressora de duas maneiras:
 </p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
index 1e56a99..b2f07d9 100644
--- a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
@@ -44,7 +44,7 @@
 
 
 <p>
-  Junto com novos recursos e funcionalidades, o Android N 
+  Junto com novos recursos e funcionalidades, o Android N
 inclui uma variedade de mudanças de comportamento do sistema e da API. Este documento
 destaca algumas das principais mudanças que você deve entender e considerar
 nos aplicativos.
@@ -88,7 +88,7 @@
  período, o dispositivo entrará no modo de soneca e aplicará o primeiro subconjunto de restrições: o
 acesso do aplicativo à rede será desativado e os trabalhos e sincronizações serão adiados. Se o dispositivo permanecer
 estacionário por um determinado período após entrar no modo soneca, o sistema aplicará
-as demais restrições de soneca a {@link android.os.PowerManager.WakeLock}, aos alarmes 
+as demais restrições de soneca a {@link android.os.PowerManager.WakeLock}, aos alarmes
 {@link android.app.AlarmManager} e às verificações de GPS e Wi-Fi. Independentemente
  de as restrições de soneca serem aplicadas parcial ou totalmente, o sistema despertará o
  dispositivo para breves janelas de manutenção, quando os aplicativos
@@ -151,7 +151,7 @@
 <ul>
   <li>Os aplicativos direcionados ao Android N não receberão transmissões {@link
  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, mesmo
- se tiverem entradas no manifesto solicitando notificação desses eventos. Os aplicativos em execução 
+ se tiverem entradas no manifesto solicitando notificação desses eventos. Os aplicativos em execução
 ainda poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal
  se solicitarem a notificação com {@link android.content.BroadcastReceiver}.
   </li>
@@ -175,7 +175,7 @@
 
 <p>
   Para obter mais informações sobre otimizações em segundo plano no N e como adaptar seu aplicativo,
- consulte <a href="{@docRoot}preview/features/background-optimization.html">Otimizações 
+ consulte <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
 em segundo plano</a>.
 </p>
 
@@ -245,14 +245,14 @@
 
 <p>
 Para aplicativos direcionados ao Android N, a estrutura do Android cumpre com
-a política de API {@link android.os.StrictMode} que proíbe a exposição de URIs {@code file://} 
+a política de API {@link android.os.StrictMode} que proíbe a exposição de URIs {@code file://}
 fora do aplicativo. Se uma intenção que contenha o URI de um arquivo deixar o aplicativo, ele falhará
  com uma exceção {@code FileUriExposedException}.
 </p>
 
 <p>
 Para compartilhar arquivos entre aplicativos, você deve enviar um URI {@code content://}
-e conceder uma permissão de acesso temporária ao URI. A forma mais fácil de conceder essa permissão é 
+e conceder uma permissão de acesso temporária ao URI. A forma mais fácil de conceder essa permissão é
 usar a classe {@link android.support.v4.content.FileProvider}. Para obter mais informações
  sobre permissões e compartilhamento de arquivos,
 consulte <a href="{@docRoot}training/secure-file-sharing/index.html">Compartilhamento de Arquivos</a>.
@@ -334,7 +334,7 @@
  rede. Verifique a ocorrência de alterações de configuração quando o aplicativo sair do estado pausado e retomar
  a execução.
     <p class="note">
-      <strong>Observação:</strong> se você armazenar em cache dados dependentes de configuração, 
+      <strong>Observação:</strong> se você armazenar em cache dados dependentes de configuração,
 recomendamos incluir metadados relevantes, como o tamanho de tela
  adequado ou a densidade de pixels desses dados. Salvar esses dados permitirá que você
  decida se será necessário atualizar os dados armazenados em cache após uma mudança
@@ -373,7 +373,7 @@
 <p>
   Para alertar sobre o uso de APIs não públicas, os aplicativos executados em um dispositivo
  Android N geram um erro na saída logcat quando um aplicativo chama uma API não pública.
-  Esse erro também é exibido na tela do dispositivo como mensagem para que o usuário 
+  Esse erro também é exibido na tela do dispositivo como mensagem para que o usuário
 fique ciente da situação. Revise o código do seu aplicativo para
  remover o uso de APIs de plataformas não públicas e faça testes completos do aplicativo usando
  um dispositivo de visualização ou um emulador.
@@ -384,7 +384,7 @@
  para obter soluções usuais de substituição de APIs privadas comuns por APIs públicas equivalentes.
   Também é possível que você esteja vinculando bibliotecas de plataforma sem perceber,
  particularmente se o aplicativo usar uma biblioteca que faz parte da plataforma (como
- <code>libpng</code>), mas não faz parte do NDK. Nesse caso, verifique se 
+ <code>libpng</code>), mas não faz parte do NDK. Nesse caso, verifique se
 o APK contém todos os arquivos .so que você pretende vincular.
 </p>
 
@@ -398,9 +398,9 @@
   Os aplicativos não devem depender de nem usar bibliotecas nativas não incluídas
  no NDK, pois elas podem ser alteradas ou removidas entre uma versão do Android
  e outra. A mudança de OpenSSL para BoringSSL é um exemplo dessas alterações.
-  Além disso, dispositivos diferentes podem oferecer níveis distintos de compatibilidade, pois 
- não há requisitos de compatibilidade para bibliotecas de plataforma não incluídas 
-no NDK. Se você precisar acessar bibliotecas que não são do NDK em dispositivos mais antigos, torne o carregamento 
+  Além disso, dispositivos diferentes podem oferecer níveis distintos de compatibilidade, pois
+ não há requisitos de compatibilidade para bibliotecas de plataforma não incluídas
+no NDK. Se você precisar acessar bibliotecas que não são do NDK em dispositivos mais antigos, torne o carregamento
 dependente do nível da Android API.
 </p>
 
@@ -528,28 +528,28 @@
 
 <ul>
 <li>Quando um aplicativo for executado no Android N, mas for direcionado a um nível da API menor
- e o usuário alterar o tamanho da tela, o processo do aplicativo será eliminado. O aplicativo 
-deverá ser capaz de processar corretamente esse cenário. Caso contrário, ele falhará 
+ e o usuário alterar o tamanho da tela, o processo do aplicativo será eliminado. O aplicativo
+deverá ser capaz de processar corretamente esse cenário. Caso contrário, ele falhará
 quando o usuário restaurá-lo usando Recents.
 
 <p>
-Você deve testar o aplicativo para verificar 
-se esse comportamento não ocorre. 
-Isso pode ser feito causando uma falha idêntica 
+Você deve testar o aplicativo para verificar
+se esse comportamento não ocorre.
+Isso pode ser feito causando uma falha idêntica
 eliminando o aplicativo manualmente usando o DDMS.
 </p>
 
 <p>
-Aplicativos direcionados ao Android N e versões posteriores não serão eliminados automaticamente em mudanças de densidade. 
+Aplicativos direcionados ao Android N e versões posteriores não serão eliminados automaticamente em mudanças de densidade.
 No entanto, podem continuar a responder a alterações de configurações de forma não ideal.
 </p>
 </li>
 
 <li>
-Os aplicativos no Android N devem ser capazes de processar corretamente mudanças de configuração 
-e não devem falhar em inicializações subsequentes. Você pode verificar o comportamento do aplicativo 
+Os aplicativos no Android N devem ser capazes de processar corretamente mudanças de configuração
+e não devem falhar em inicializações subsequentes. Você pode verificar o comportamento do aplicativo
 alterando o tamanho da fonte (<strong>Setting</strong> &gt;
-<strong>Display</strong> &gt; <strong>Font size</strong>) e depois restaurando 
+<strong>Display</strong> &gt; <strong>Font size</strong>) e depois restaurando
 o aplicativo em Recents.
 </li>
 
@@ -557,12 +557,12 @@
 Devido a um erro em versões anteriores do Android, o sistema não sinaliza gravações
  em um soquete TCP no encadeamento principal como violações do modo estrito. O Android N corrigiu esse erro.
 Agora, os aplicativos que exibirem este comportamento gerarão uma{@code android.os.NetworkOnMainThreadException}.
-Geralmente, a realização de operações de rede no encadeamento principal é uma má ideia porque essas operações 
+Geralmente, a realização de operações de rede no encadeamento principal é uma má ideia porque essas operações
 geralmente têm alta latência no final, causando ANRs e problemas.
 </li>
 
 <li>
-Agora, por padrão, a família de métodos {@code Debug.startMethodTracing()} armazena 
+Agora, por padrão, a família de métodos {@code Debug.startMethodTracing()} armazena
 os resultados no diretório específico do pacote no armazenamento compartilhado,
  e não no nível mais alto
  do cartão SD.  Isso significa que os aplicativos não precisam mais solicitar a permissão {@code WRITE_EXTERNAL_STORAGE} para usar estas APIs.
@@ -583,9 +583,9 @@
 Se um aplicativo publica tarefas {@link java.lang.Runnable} para uma {@link android.view.View} e
  esta {@link android.view.View}
 não está anexada a uma janela, o sistema
-coloca a tarefa {@link java.lang.Runnable} em fila com a {@link android.view.View}. 
-A tarefa {@link java.lang.Runnable} não é executada até que a 
-{@link android.view.View} esteja anexada 
+coloca a tarefa {@link java.lang.Runnable} em fila com a {@link android.view.View}.
+A tarefa {@link java.lang.Runnable} não é executada até que a
+{@link android.view.View} esteja anexada
 a uma janela. Este comportamento corrige os seguintes erros:
 <ul>
    <li>Se um aplicativo publicasse em uma {@link android.view.View} de um encadeamento que não fosse o encadeamento de IU da janela pretendida
diff --git a/docs/html-intl/intl/pt-br/preview/download-ota.jd b/docs/html-intl/intl/pt-br/preview/download-ota.jd
index 693aa92..3f817ed 100644
--- a/docs/html-intl/intl/pt-br/preview/download-ota.jd
+++ b/docs/html-intl/intl/pt-br/preview/download-ota.jd
@@ -165,7 +165,7 @@
 <p>
   Esta página fornece links para imagens OTA de dispositivo e descreve
  como aplicar manualmente uma atualização OTA em um dispositivo. Esse procedimento pode ser útil
- para recuperar dispositivos que receberam atualizações OTA usando o programa beta 
+ para recuperar dispositivos que receberam atualizações OTA usando o programa beta
 do Android e não estão ligando após a instalação.
 </p>
 
@@ -179,7 +179,7 @@
   <li>Baixe uma imagem OTA de dispositivo na tabela abaixo.</li>
   <li>Reinicialize o dispositivo para ficar em modo Recovery. Para obter mais informações sobre como colocar
  dispositivos Nexus nesse modo, consulte
- <a href="https://support.google.com/nexus/answer/4596836">Redefinição do 
+ <a href="https://support.google.com/nexus/answer/4596836">Redefinição do
 dispositivo Nexus para voltar à configuração de fábrica</a>.
   </li>
   <li>No dispositivo, selecione <strong>ADB sideload</strong>.</li>
@@ -202,65 +202,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
-      MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
-      SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
-      MD5: e8b12f7721c53af9a450f7058928a5fc<br>
-      SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
-      MD5: 3fac09fef759dde26e57cb80b20b6477<br>
-      SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
-      MD5: 58312c4a5971818ef5c77a3f446003da<br>
-      SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
-      MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
-      SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
-      MD5: 1461622ad53ea842b2722fa7b49b8172<br>
-      SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
-      MD5: c60117f3640cc6db12386fd632289c7d<br>
-      SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
-      MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
-      SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/pt-br/preview/download.jd b/docs/html-intl/intl/pt-br/preview/download.jd
index b0f23e5..4477142 100644
--- a/docs/html-intl/intl/pt-br/preview/download.jd
+++ b/docs/html-intl/intl/pt-br/preview/download.jd
@@ -286,7 +286,7 @@
 </p>
 
 <p>
-  Se decidir que deseja obter atualizações por OTA após atualizar um dispositivo manualmente, 
+  Se decidir que deseja obter atualizações por OTA após atualizar um dispositivo manualmente,
 basta inscrevê-lo no <a href="https://g.co/androidbeta">programa beta
  do Android</a>. É possível inscrever dispositivos a qualquer momento para receber a próxima atualização do Preview
  por OTA.
@@ -300,72 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
-      MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
-      SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
-      MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
-      SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
-      MD5: e93de7949433339856124c3729c15ebb<br>
-      SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
-      MD5: 565be87ebb2d5937e2abe1a42645864b<br>
-      SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
-      MD5: a8464e15c6683fe2afa378a63e205fda<br>
-      SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
-      MD5: c0dbb7db671f61b2785da5001cedefcb<br>
-      SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
-      MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
-      SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
-      MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
-      SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> (D6603 e D6653)</td>
-    <td>Download: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      Para obter mais informações, consulte <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Experimente o Android N Developer Preview para Xperia Z3</a>.
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
@@ -390,7 +391,7 @@
       </ul>
     </li>
     <li><strong>Cancele a inscrição do dispositivo no programa beta do Android</strong>. Se o
- dispositivo estiver inscrito no <a href="https://g.co/androidbeta">programa beta 
+ dispositivo estiver inscrito no <a href="https://g.co/androidbeta">programa beta
 do Android</a>, independentemente de qual ele seja, você poderá simplesmente cancelar a inscrição.
   <p>
     O dispositivo receberá uma atualização por OTA para a versão
@@ -465,7 +466,7 @@
 <p>Agora, é possível iniciar o emulador do Android com o AVD Android N Preview.</p>
 
 <p>
-Para ter a melhor experiência possível com o emulador do Android, instale o 
+Para ter a melhor experiência possível com o emulador do Android, instale o
 Android Studio 2.1 ou mais recente, que oferece suporte ao <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>,
 cujo desempenho é muito superior ao do emulador no
 Android Studio 1.5.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/afw.jd b/docs/html-intl/intl/pt-br/preview/features/afw.jd
index c16cff9..977d2a0 100644
--- a/docs/html-intl/intl/pt-br/preview/features/afw.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/afw.jd
@@ -101,7 +101,7 @@
   Donos de perfis podem exigir que os usuários especifiquem um desafio de segurança para aplicativos
 em execução no perfil de trabalho. O sistema mostra o desafio de segurança quando o
 usuário tenta abrir qualquer aplicativo de trabalho. Se o usuário preencher corretamente o
- desafio de segurança, o sistema desbloqueará e, se necessário, descriptografará o 
+ desafio de segurança, o sistema desbloqueará e, se necessário, descriptografará o
 perfil de trabalho.
 </p>
 
@@ -126,14 +126,14 @@
 setPasswordMinimumLength()}. O dono de perfil também pode definir o bloqueio de dispositivo
 usando a instância de {@link android.app.admin.DevicePolicyManager} retornada
 pelo novo método <code>DevicePolicyManager.getParentProfileInstance()</code>
-. Além disso, donos de perfil podem personalizar a tela de credenciais do 
+. Além disso, donos de perfil podem personalizar a tela de credenciais do
 desafio de trabalho usando os novos métodos <code>setOrganizationColor()</code> e
  <code>setOrganizationName()</code> da classe {@link android.app.admin.DevicePolicyManager}
 .
 </p>
 
 <p>
-  Para obter detalhes sobre os novos métodos e constantes, consulte a 
+  Para obter detalhes sobre os novos métodos e constantes, consulte a
 página de referência <code>DevicePolicyManager</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência do N Preview SDK</a>.
 </p>
 
@@ -149,7 +149,7 @@
   Enquanto está suspenso, um pacote não consegue iniciar atividades, as notificações
  são suspensas e a entrada do aplicativo na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a> é ocultada.
   Os pacotes suspensos não são exibidos na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a> e não
- podem mostrar caixas de diálogo (incluindo avisos e snackbars). Também não conseguem reproduzir 
+ podem mostrar caixas de diálogo (incluindo avisos e snackbars). Também não conseguem reproduzir
  áudio nem vibrar o dispositivo.
 </p>
 
@@ -175,13 +175,13 @@
 <h2 id="always-on-vpn">Always-On VPN</h2>
 
 <p>
-  Os donos de dispositivo e perfil podem exigir que os aplicativos de trabalho se conectem sempre 
+  Os donos de dispositivo e perfil podem exigir que os aplicativos de trabalho se conectem sempre
 por meio de uma VPN especificada. Se os donos definirem este requisito, o
  dispositivo iniciará a VPN automaticamente na inicialização.
 </p>
 
 <p>
-  Os donos podem exigir o uso de uma VPN chamando o novo 
+  Os donos podem exigir o uso de uma VPN chamando o novo
 método <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para descobrir
  se o dono definiu um requisito de VPN, chame o novo
  método <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code>.
@@ -319,7 +319,7 @@
 </p>
 
 <p>
-  O Android N inclui as seguintes adições de API para dar suporte a este recurso. Para 
+  O Android N inclui as seguintes adições de API para dar suporte a este recurso. Para
 obter detalhes, consulte a <a href="{@docRoot}preview/setup-sdk.html#docs-dl"> Referência do N
  Preview SDK</a>.
 </p>
@@ -353,7 +353,7 @@
 <h2 id="remove-cert">Remoção de certificado do cliente</h2>
 
 <p>
-  Agora, donos de perfis e dispositivos podem remover certificados de cliente que foram 
+  Agora, donos de perfis e dispositivos podem remover certificados de cliente que foram
 instalados por meio do {@link android.app.admin.DevicePolicyManager#installKeyPair
  installKeyPair()} chamando o novo método
  <code>DevicePolicyManager.removeKeyPair()</code>.
@@ -404,7 +404,7 @@
   O dono do dispositivo ou perfil pode habilitar outro aplicativo para gerenciar restrições de aplicativo
  por meio do novo
  método <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
-. O aplicativo indicado pode verificar se a permissão foi 
+. O aplicativo indicado pode verificar se a permissão foi
 concedida chamando
  <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
 </p>
@@ -421,7 +421,7 @@
 
 <p>
   Os usuários podem desativar as permissões de localidade para aplicativos de trabalho sem deixar de
- acessar informações de localidade em seus aplicativos pessoais. Um interruptor de acesso de localidade 
+ acessar informações de localidade em seus aplicativos pessoais. Um interruptor de acesso de localidade
  em separado em Location Settings permite que o usuário impeça atualizações de localização ou
  consultas de última localidade em aplicativos executados no perfil de trabalho.
 </p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd b/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
index 073fd5e..cf4bbe9 100644
--- a/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
@@ -62,7 +62,7 @@
   <li>Os aplicativos direcionados ao Preview não receberão transmissões {@link
  android.net.ConnectivityManager#CONNECTIVITY_ACTION} se estiverem
  registrados para recebê-las no seu manifesto. Os aplicativos em execução ainda
-poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal registrando um 
+poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal registrando um
 {@link android.content.BroadcastReceiver} em {@link
  android.content.Context#registerReceiver Context.registerReceiver()}.
   </li>
@@ -111,7 +111,7 @@
 </p>
 
 <p class="note">
-  <strong>Observação:</strong> Um {@link android.content.BroadcastReceiver} registrado em 
+  <strong>Observação:</strong> Um {@link android.content.BroadcastReceiver} registrado em
  {@link android.content.Context#registerReceiver Context.registerReceiver()}
  continuará a receber essas transmissões enquanto o aplicativo estiver em execução.
 </p>
@@ -185,7 +185,7 @@
 </p>
 
 <p>
-  O aplicativo continuará a receber retornos de chamada até que o aplicativo encerre ou chame 
+  O aplicativo continuará a receber retornos de chamada até que o aplicativo encerre ou chame
   {@link android.net.ConnectivityManager#unregisterNetworkCallback
   unregisterNetworkCallback()}.
 </p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/data-saver.jd b/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
index 29c9ee4..f42b9cf 100644
--- a/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/data-saver.jd
@@ -40,17 +40,17 @@
 </p>
 
 <p>
-  Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está 
+  Quando um usuário ativa a Economia de dados em <strong>Settings</strong> e o dispositivo está
 em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa
- aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possível. Os usuários podem 
+ aos aplicativos para reduzir o uso de dados no primeiro plano sempre que possível. Os usuários podem
 autorizar aplicativos específicos a usar dados tarifados em segundo plano, mesmo com a Economia
  de dados ativada.
 </p>
 
 <p>
   O N Developer Preview estende a API {@link android.net.ConnectivityManager}
- para oferecer aos aplicativos uma forma de <a href="#status">recuperar as 
-preferências do usuário para a Economia de dados</a> e <a href="#monitor-changes">monitorar 
+ para oferecer aos aplicativos uma forma de <a href="#status">recuperar as
+preferências do usuário para a Economia de dados</a> e <a href="#monitor-changes">monitorar
 as mudanças de preferências</a>. Como prática recomendada, os aplicativos devem verificar se o
  usuário ativou a Economia de dados e tentar limitar o uso de dados em primeiro e
  segundo plano.
@@ -147,7 +147,7 @@
   O envio da intenção e do URI abre o aplicativo <strong>Settings</strong> e
  exibe as configurações de uso de dados de seu aplicativo. O usuário pode decidir então se
  ativará os dados em segundo plano para o aplicativo. Antes de enviar a intenção, é
- prática recomendada perguntar primeiro ao usuário se ele deseja iniciar o 
+ prática recomendada perguntar primeiro ao usuário se ele deseja iniciar o
 aplicativo <strong>Settings</strong> com o objetivo de ativar o uso
  de dados em segundo plano.
 </p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd b/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
index d14449f..8f58841 100644
--- a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
@@ -18,7 +18,7 @@
 </div>
 </div>
 
-<p>O Android N é executado em um modo seguro de <i>inicialização direta</i> 
+<p>O Android N é executado em um modo seguro de <i>inicialização direta</i>
 quando o dispositivo é ligado, mas o usuário não o
 desbloqueia. Para isso, o sistema oferece dois locais de armazenamento para dados:</p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd b/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
index 77421820d..1a48140 100644
--- a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
@@ -34,9 +34,9 @@
 
 <p>
   Se você compilar o aplicativo com o N Preview SDK, poderá configurar como o aplicativo
- processa a exibição de várias janelas. Por exemplo, você pode especificar as dimensões 
+ processa a exibição de várias janelas. Por exemplo, você pode especificar as dimensões
 mínimas permitidas para a atividade. Você também pode desativar a exibição de várias janelas para
- o aplicativo, garantindo que o sistema mostre o aplicativo apenas 
+ o aplicativo, garantindo que o sistema mostre o aplicativo apenas
 em modo de tela inteira.
 </p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd b/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
index 072e55b..c00eb9b 100644
--- a/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
@@ -29,7 +29,7 @@
 esperada. Por fim, garanta que seu aplicativo possa lidar corretamente
 com idiomas que ele não tenha sido explicitamente projetado para suportar.</p>
 
-<p>Este documento começa explicando a estratégia de resolução de recursos anterior ao 
+<p>Este documento começa explicando a estratégia de resolução de recursos anterior ao
 Android N. Em seguida, ele descreve a estratégia
 de resolução de recursos aprimorada do Android N. Por fim, ele explica como aproveitar as vantagens
 do maior número de localidades para oferecer suporte a usuários multilíngues.</p>
@@ -215,7 +215,7 @@
 <p>Um bom exemplo é o árabe, cujo suporte no Android N foi expandido de
 uma {@code ar_EG} para 27 localidades de árabe. Essas localidades podem compartilhar a maioria dos recursos,
 mas algumas preferem dígitos ASCII, enquanto outras preferem dígitos nativos. Por exemplo,
-quando você quer criar uma frase com uma variável em dígito, como 
+quando você quer criar uma frase com uma variável em dígito, como
 “Choose a 4 digit pin”, use formatadores como mostrado abaixo:</p>
 
 <pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd b/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
index 72c2fe6..36988da 100644
--- a/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
@@ -212,7 +212,7 @@
 <h2 id="bundle">Notificações empacotadas</h2>
 
 <p>O Android N oferece aos desenvolvedores uma nova forma de representar
- uma fila de notificações: <i>notificações empacotadas</i>. Essa forma é semelhante ao recurso 
+ uma fila de notificações: <i>notificações empacotadas</i>. Essa forma é semelhante ao recurso
   <a href="{@docRoot}training/wearables/notifications/stacks.html">Pilhas
  de Notificações</a> no Android Wear. Por exemplo, se o aplicativo criar notificações
  para mensagens recebidas, quando mais de uma mensagem for recebida, empacote as
@@ -243,8 +243,8 @@
  sistema as agrupará automaticamente.
 </p>
 
-<p>Para saber como adicionar notificações a um grupo, consulte 
-<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Adicionar 
+<p>Para saber como adicionar notificações a um grupo, consulte
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Adicionar
 cada notificação a um grupo</a>.</p>
 
 
@@ -278,7 +278,7 @@
 <p>
 Os exemplos de casos em que uma única notificação é preferível
  incluem mensagens individuais de uma única pessoa ou uma representação em lista
- de itens de texto com uma única linha. Você pode usar 
+ de itens de texto com uma única linha. Você pode usar
 ({@link android.app.Notification.InboxStyle InboxStyle} ou
  {@link android.app.Notification.BigTextStyle BigTextStyle}) para
  isso.
@@ -354,7 +354,7 @@
 <p>Para usar essa nova API, chame o método {@code setStyle()}, passando o
  estilo de visualização personalizada desejado.</p>
 
-<p>O snippet mostra como construir um objeto de notificação personalizada com o método 
+<p>O snippet mostra como construir um objeto de notificação personalizada com o método
 {@code DecoratedCustomViewStyle()}.</p>
 
 <pre>
@@ -370,7 +370,7 @@
 <h2 id="style">Estilo de mensagens</h2>
 <p>
   O Android N traz uma nova API para personalização do estilo de uma notificação.
-  Usando a classe <code>MessageStyle</code>, você pode alterar vários 
+  Usando a classe <code>MessageStyle</code>, você pode alterar vários
 rótulos exibidos na notificação, incluindo o título da conversa,
  mensagens adicionais e a visualização de conteúdo para a notificação.
 </p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd b/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
index 3a7dec4..4bdc545 100644
--- a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
@@ -9,13 +9,13 @@
 
 <h2>Neste documento</h2>
 <ol>
-  <li><a href="#declaring">Declarar que sua atividade oferece suporte ao modo de 
+  <li><a href="#declaring">Declarar que sua atividade oferece suporte ao modo de
 imagem em imagem</a></li>
   <li><a href="#pip_button">Alternar a atividade para o modo de imagem em imagem</a>
 </li>
   <li><a href="#handling_ui">Lidar com a IU durante o modo de imagem em imagem</a>
 </li>
-  <li><a href="#continuing_playback">Continuar reprodução de vídeo no modo de 
+  <li><a href="#continuing_playback">Continuar reprodução de vídeo no modo de
 imagem em imagem</a></li>
   <li><a href="#single_playback">Usar uma única atividade de reprodução para
 imagem em imagem</a></li>
@@ -99,7 +99,7 @@
 <h2 id="pip_button">Alternar a atividade para o modo de imagem em imagem</h2>
 
 Quando precisar colocar a atividade no modo de PIP, chame
-<code>Activity.enterPictureInPictureMode()</code>. O exemplo a seguir 
+<code>Activity.enterPictureInPictureMode()</code>. O exemplo a seguir
 entra no modo de PIP quando o usuário seleciona um botão dedicado ao PIP na barra de controle de
 uma mídia:</p>
 
@@ -146,7 +146,7 @@
 }
 </pre>
 
-<h2 id="continuing_playback">Continuar reprodução de vídeo no modo de 
+<h2 id="continuing_playback">Continuar reprodução de vídeo no modo de
 imagem em imagem</h2>
 
 <p>Quando a atividade entra no modo de PIP, o sistema a considera
@@ -177,11 +177,11 @@
 
 <p>Ao navegar pelo conteúdo
  da tela principal de seu aplicativo, um usuário pode selecionar um novo vídeo enquanto uma atividade de reprodução de vídeo estiver em modo de PIP. Reproduza o novo
- vídeo na atividade de reprodução existente em modo de tela cheia em vez de 
+ vídeo na atividade de reprodução existente em modo de tela cheia em vez de
 lançar uma nova atividade que pode confundir o usuário.</p>
 
 <p>Para que uma única atividade seja usada para solicitações de reprodução de vídeo e
-com o modo de PIP ativado ou desativado, conforme necessário, configure o 
+com o modo de PIP ativado ou desativado, conforme necessário, configure o
 <code>android:launchMode</code> da atividade para <code>singleTask</code> em seu manifesto.
 </p>
 
@@ -194,7 +194,7 @@
 </pre>
 
 <p>Na atividade, modifique {@link android.app.Activity#onNewIntent
-Activity.onNewIntent()} e processe o novo vídeo, interrompendo qualquer 
+Activity.onNewIntent()} e processe o novo vídeo, interrompendo qualquer
 reprodução existente, caso necessário.</p>
 
 <h2 id="best">Práticas recomendadas</h2>
diff --git a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
index ef9ba65..6a58d76 100644
--- a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
@@ -25,7 +25,7 @@
 ou {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} em seu manifesto
 permite o acesso a todos os diretórios públicos no armazenamento externo, o que pode ser mais do
 que o aplicativo precisa.</li>
-<li>Usar a 
+<li>Usar a
 <a href="{@docRoot}guide/topics/providers/document-provider.html">Estrutura de
 acesso ao armazenamento</a> geralmente faz com que o usuário selecione diretórios
 por meio de uma IU de sistema, o que é desnecessário se seu aplicativo sempre acessa o mesmo
@@ -54,7 +54,7 @@
 Em volumes secundários, como cartões SD externos, passe nulo ao chamar
 <code>StorageVolume.createAccessIntent()</code> para solicitar acesso ao
 volume todo em vez de um diretório específico.
-<code>StorageVolume.createAccessIntent()</code> retornará nulo se você passar 
+<code>StorageVolume.createAccessIntent()</code> retornará nulo se você passar
 nulo no volume principal ou se passar um nome de diretório inválido.
 </p>
 
@@ -80,7 +80,7 @@
 <code>onActivityResult()</code> com um código de resultado de
 <code>Activity.RESULT_OK</code> e os dados de intenção que contêm o URI. Use
 o URI fornecido para acessar as informações do diretório, o que é semelhante a usar URIs
-retornados pela 
+retornados pela
 <a href="{@docRoot}guide/topics/providers/document-provider.html">Estrutura de
 acesso ao armazenamento</a>.</p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd b/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
index 15d22d1..890e140 100644
--- a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
+++ b/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
@@ -123,7 +123,7 @@
 <code>RecordedPrograms.Uri</code>. Use APIs de provedores de conteúdo para
 ler, adicionar e excluir entradas dessa tabela.</p>
 
-<p>Para saber mais sobre como trabalhar com dados de provedores de conteúdo, consulte 
+<p>Para saber mais sobre como trabalhar com dados de provedores de conteúdo, consulte
 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
 Fundamentos do provedor de conteúdo</a> .</p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/j8-jack.jd b/docs/html-intl/intl/pt-br/preview/j8-jack.jd
index 5047396..22f4b67 100644
--- a/docs/html-intl/intl/pt-br/preview/j8-jack.jd
+++ b/docs/html-intl/intl/pt-br/preview/j8-jack.jd
@@ -23,7 +23,7 @@
 </p>
 
 <p>Para começar a usar esses recursos, primeiro faça o download e instale o Android
-Studio 2.1 e o Android N Preview SDK, que inclui a 
+Studio 2.1 e o Android N Preview SDK, que inclui a
 cadeia de ferramentas Jack obrigatória e o Android Plugin for Gradle atualizado. Se você ainda não
 instalou o Android N Preview SDK, consulte <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o Android N</a>.</p>
 
diff --git a/docs/html-intl/intl/pt-br/preview/overview.jd b/docs/html-intl/intl/pt-br/preview/overview.jd
index eaa3c0c..1c81f6d 100644
--- a/docs/html-intl/intl/pt-br/preview/overview.jd
+++ b/docs/html-intl/intl/pt-br/preview/overview.jd
@@ -116,7 +116,7 @@
       </h5>
 
       <p>
-        Informe problemas e dê-nos feedback usando o 
+        Informe problemas e dê-nos feedback usando o
 <a href="{@docRoot}preview/bug">issue tracker</a>. Conecte-se a outros
  desenvolvedores na
  <a href="{@docRoot}preview/dev-community">Comunidade N&nbsp;Developer</a>.
@@ -262,7 +262,7 @@
 </p>
 
 <p>
-  Para se inscrever no programa, acesse o site do <a href="https://g.co/androidbeta">programa beta 
+  Para se inscrever no programa, acesse o site do <a href="https://g.co/androidbeta">programa beta
  do Android</a>. Você
  verá uma lista de todos os dispositivos registrados em sua conta que estejam qualificados para inscrição no
  programa beta do Android.
@@ -314,13 +314,13 @@
 </p>
 
 <ul>
-  <li> <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o 
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o
 Android N</a> tem
  instruções passo a passo para você iniciar o trabalho.</li>
   <li> <a href="{@docRoot}preview/behavior-changes.html">Mudanças
  de comportamento</a> indicam as principais áreas a serem testadas.</li>
-  <li> Documentação de novas APIs, incluindo uma <a href="{@docRoot}preview/api-overview.html">visão geral das APIs</a>, a 
-<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da 
+  <li> Documentação de novas APIs, incluindo uma <a href="{@docRoot}preview/api-overview.html">visão geral das APIs</a>, a
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da
 API</a> disponível para download e guias de desenvolvedor detalhados sobre os recursos principais, como
 suporte para várias janelas, notificações agrupadas, suporte para vários idiomas e outros.
   <li> <a href="{@docRoot}preview/samples.html">Exemplo de código</a> que
@@ -333,7 +333,7 @@
 <h4 id="reference">Referência da API para download</h4>
 
 <p>
-  Durante as primeiras atualizações do Preview, você pode fazer o download da 
+  Durante as primeiras atualizações do Preview, você pode fazer o download da
  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da API
  mais recente para a plataforma Android N</a> como um arquivo zip separado. Esse download
  também inclui um relatório de diferenças que ajuda você a identificar as mudanças da API em relação à
@@ -357,7 +357,7 @@
 <ul>
   <li> O <a href="https://code.google.com/p/android-developer-preview/">Issue
  Tracker do N 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 
+ problemas de desempenho e feedback geral pelo issue tracker. Também é possível verificar os
 <a href="{@docRoot}preview/bugs">erros conhecidos</a> e
  encontrar etapas de resolução. Manteremos você atualizado sobre seu problema conforme ele seja avaliado e
  enviado para a equipe de engenharia do Android para análise. </li>
@@ -374,7 +374,7 @@
   O N Developer Preview fornece um sistema apenas para desenvolvimento e uma biblioteca Android
  que <strong>não tem 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 a versão de prévia do Android N 
+ recomendado), é possível destinar a versão de prévia do Android N
 configurando o <code><a href=
   "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> do aplicativo
  para <code>“N”</code>.
diff --git a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
index 6db456c..9c1f035 100644
--- a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
@@ -41,7 +41,7 @@
 necessário atualizar para o JDK 8 para desenvolver para a plataforma Android N,
 conforme descrito abaixo.</p>
 
-<p>Se você já instalou o Android Studio, verifique se tem o Android 
+<p>Se você já instalou o Android Studio, verifique se tem o Android
 Studio 2.1 ou superior clicando em <strong>Help &gt; Check for Update</strong>
 (no Mac, <strong>Android Studio &gt; Check for Updates</strong>).</p>
 
@@ -51,7 +51,7 @@
 
 <h2 id="get-sdk">Obter o N Preview SDK</h2>
 
-<p>Para começar a desenvolver com as APIs do Android N, instale o 
+<p>Para começar a desenvolver com as APIs do Android N, instale o
 Android N Preview SDK no Android Studio da seguinte maneira:</p>
 
 <ol>
@@ -77,7 +77,7 @@
 <p>
   Informações detalhadas sobre as APIs do Android N são disponibilizadas na documentação de referência do N Preview
 , que pode ser baixada pela tabela a seguir.
-  Este pacote contém uma versão off-line resumida do site de desenvolvedores do Android 
+  Este pacote contém uma versão off-line resumida do site de desenvolvedores do Android
  e inclui uma referência de API atualizada para as APIs do Android N, além de um relatório
  das diferenças entre as APIs.
 </p>
@@ -92,7 +92,7 @@
     <a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
     <td width="100%">
       MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7 
+      SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
     </td>
   </tr>
 <table>
@@ -131,7 +131,7 @@
   Para usar as APIs do Android N, seu projeto deve ser configurado da maneira apropriada.
 </p>
 
-<p>Se planeja usar os recursos de linguagem do Java 8, consulte 
+<p>Se planeja usar os recursos de linguagem do Java 8, consulte
 <a href="{@docRoot}preview/j8-jack.html">Recursos de linguagem do Java 8</a>
 para saber mais sobre os recursos do Java 8 com suporte e
 como configurar seu projeto com o compilador Jack.</p>
@@ -179,7 +179,7 @@
 
 <ul>
   <li>Siga o guia para <a href="{@docRoot}preview/download.html">Testar em um dispositivo Android N</a>.</li>
-  <li>Saiba mais sobre a plataforma Android N com 
+  <li>Saiba mais sobre a plataforma Android N com
 <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a>
 e <a href="{@docRoot}preview/api-overview.html">Recursos de APIs do
 Android N</a>.</li>
diff --git a/docs/html-intl/intl/pt-br/preview/support.jd b/docs/html-intl/intl/pt-br/preview/support.jd
index 4580887..9ae32c8 100644
--- a/docs/html-intl/intl/pt-br/preview/support.jd
+++ b/docs/html-intl/intl/pt-br/preview/support.jd
@@ -101,7 +101,7 @@
  desenvolvedores a capacidade de projetar experiências de RV móveis de alta qualidade para os usuários. Há
  diversas melhorias de desempenho, incluindo o acesso a um núcleo exclusivo da CPU
  para aplicativos de RV. Dentro dos aplicativos, é possível aproveitar o rastreamento inteligente
- da cabeça e notificações estéreo que funcionam para RV. Mais importante, 
+ da cabeça e notificações estéreo que funcionam para RV. Mais importante,
 o Android N oferece gráficos de latência muito baixa.
 </p>
 
@@ -112,7 +112,7 @@
 <h4 id="">Modo de desempenho sustentado</h4>
 
 <p>
-  O Android N inclui compatibilidade opcional para <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">modo de desempenho 
+  O Android N inclui compatibilidade opcional para <a href="{@docRoot}preview/api-overview.html#sustained_performance_api">modo de desempenho
 sustentado</a>, permitindo que OEMs ofereçam dicas sobre
  capacidades de desempenho do dispositivo para aplicativos de longa duração. Desenvolvedores de aplicativos podem usar
  essas dicas para ajustar os aplicativos para um nível de
@@ -143,7 +143,7 @@
   No Android N, o usuário pode pressionar <code>Meta+/</code> para acionar uma tela de <strong>atalhos
  de teclado</strong> que exibe todos os atalhos disponíveis do
  sistema e do aplicativo em questão. Os desenvolvedores podem adicionar os próprios atalhos ou
- ativar a tela de atalhos nos aplicativos. Consulte o <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Auxiliar de 
+ ativar a tela de atalhos nos aplicativos. Consulte o <a href="{@docRoot}preview/api-overview.html#keyboard_shortcuts_helper">Auxiliar de
 atalhos de teclado</a> para saber mais.
 </p>
 
@@ -223,7 +223,7 @@
   <dd>
     Agora o sistema usa os metadados da atividade para decidir o modo do bloco.
     (Anteriormente, o modo do bloco era determinado pelo valor de retorno do
- <code>TileService.onTileAdded()</code>.) Para obter mais informações, consulte 
+ <code>TileService.onTileAdded()</code>.) Para obter mais informações, consulte
 <code>TileService.META_DATA_ACTIVE_TILE</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.
   </dd>
 </dl>
@@ -604,7 +604,7 @@
  problemas podem aumentar com o uso prolongado.
       </li>
 
-      <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e 
+      <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
  desligar a tela.
       </li>
     </ul>
@@ -857,7 +857,7 @@
  problemas podem aumentar com o uso prolongado.
   </li>
 
-  <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e 
+  <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
  desligar a tela.
   </li>
 
@@ -885,7 +885,7 @@
  problemas podem aumentar com o uso prolongado.
   </li>
 
-  <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e 
+  <li>A vida útil da bateria pode regredir nesta versão em casos de uso de ligar e
  desligar a tela.
   </li>
 </ul>
@@ -966,7 +966,7 @@
   <li>Always on VPN
     <ul>
       <li>Se o modo Always on VPN estiver ativado, mas uma VPN não estiver disponível, os aplicativos
- não especificados como exceções na política Always on se conectarão via 
+ não especificados como exceções na política Always on se conectarão via
  rede comum. Exceto quando especificados como exceções na política Always on,
  os aplicativos deverão ficar off-line se não houver nenhuma conexão VPN disponível.
         <ul>
@@ -1124,7 +1124,7 @@
  desenvolvedor do aplicativo.
   </li>
 
-  <li>Quando o aplicativo é destinado para uma versão da plataforma Android anterior ao N, 
+  <li>Quando o aplicativo é destinado para uma versão da plataforma Android anterior ao N,
  ele pode não funcionar com avisos de tela dividida que aparecem diversas vezes.
   </li>
 
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd
index 5912058..ff22642 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/index.jd
@@ -45,7 +45,7 @@
 está visível, mas a instância e seu estado permanecem intactos).</p>
 
 <p>Dentro dos métodos de retorno de chamada do ciclo de vida, você pode declarar como a atividade deve se comportar quando o
-usuário sai e retorna da atividade.  Por exemplo, se estiver construindo um reprodutor de vídeos de transmissão em sequência, 
+usuário sai e retorna da atividade.  Por exemplo, se estiver construindo um reprodutor de vídeos de transmissão em sequência,
 você pode pausar o vídeo e encerrar a conexão da rede quando o usuário alternar para outro
 aplicativo. Quando o usuário retornar, será possível reconectar a rede e permitir que ele reinicie o vídeo
 de onde parou.</p>
@@ -55,7 +55,7 @@
 usuário espera e não consuma recursos do sistema quando não estiver em uso.</p>
 
 <h2>Lições</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">Iniciando uma atividade</a></b></dt>
   <dd>Aprenda os fundamentos sobre ciclo de vida da atividade, como o usuário pode iniciar seu aplicativo e como
@@ -68,5 +68,5 @@
   <dt><b><a href="recreating.html">Recriando uma atividade</a></b></dt>
   <dd>Aprenda sobre o que acontece quando sua atividade é destruída e como reconstruir o estado
 da atividade quando necessário.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd
index 55f772e..9851579 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Esta lição ensina a</h2>
     <ol>
       <li><a href="#Pause">Pausar sua atividade</a></li>
       <li><a href="#Resume">Reiniciar sua atividade</a></li>
     </ol>
-    
+
     <h2>Leia também</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Atividades</a>
@@ -31,12 +31,12 @@
   </div>
 </div>
 
-<p>Durante o uso normal do aplicativo, a atividade em primeiro plano as vezes é obstruída por outros 
+<p>Durante o uso normal do aplicativo, a atividade em primeiro plano as vezes é obstruída por outros
 componentes visuais que causam a <em>pausa</em>.  Por exemplo, quando uma atividade
- semitransparente é aberta (como uma no estilo de um diálogo), a atividade anterior pausa. Enquanto a 
+ semitransparente é aberta (como uma no estilo de um diálogo), a atividade anterior pausa. Enquanto a
 atividade estiver parcialmente visível, mas não for o foco da atividade, ela permanecerá pausada.</p>
 
-<p>No entanto, se a atividade estiver completamente obstruída e não visível, ela <em>para</em> (o que será 
+<p>No entanto, se a atividade estiver completamente obstruída e não visível, ela <em>para</em> (o que será
 discutido na próxima lição).</p>
 
 <p>Conforme a atividade entra no estado pausado, o sistema chama o método {@link
@@ -59,7 +59,7 @@
 
 
 <h2 id="Pause">Pausar sua atividade</h2>
-      
+
 <p>Quando o sistema chama {@link android.app.Activity#onPause()} para sua atividade, teoricamente
 significa que a atividade ainda está parcialmente visível, mas geralmente é um indício
 de que o usuário está saindo da atividade e logo entrará em estado Interrompido.  Use
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd
index 7cb122f..9746a65 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Esta lição ensina a</h2>
     <ol>
       <li><a href="#SaveState">Salvar o estado da atividade</a></li>
       <li><a href="#RestoreState">Restaurar o estado da atividade</a></li>
     </ol>
-    
+
     <h2>Leia também</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">Compatibilidade
@@ -57,7 +57,7 @@
 rastreiam o progresso do usuário na atividade.</p>
 
 <p class="note"><strong>Observação:</strong> para que o sistema Android restaure o estado das
-visualizações em sua atividade, <strong>cada visualização precisa ter uma ID exclusiva</strong>, fornecido pelo atributo 
+visualizações em sua atividade, <strong>cada visualização precisa ter uma ID exclusiva</strong>, fornecido pelo atributo
 <a href="{@docRoot}reference/android/view/View.html#attr_android:id">{@code
 android:id}</a>.</p>
 
@@ -105,7 +105,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -138,7 +138,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -157,12 +157,12 @@
 depois do método {@link android.app.Activity#onStart()}. O sistema chama {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} se houver um estado
 salvo para ser restaurado. Portanto, não é necessário verificar se {@link android.os.Bundle} é null:</p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd
index efe2bad..4c1a9b8 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Esta lição ensina a</h2>
 <ol>
   <li><a href="#lifecycle-states">Entender o ciclo de vida do retorno de chamada</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">Criar uma nova instância</a></li>
   <li><a href="#Destroy">Destruir a atividade</a></li>
 </ol>
-    
+
     <h2>Leia também</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Atividades</a></li>
@@ -83,7 +83,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -138,7 +138,7 @@
 
 
 
-<h2 id="launching-activity">Especificar a atividade da tela de início do aplicativo</h2> 
+<h2 id="launching-activity">Especificar a atividade da tela de início do aplicativo</h2>
 
 <p>Quando o usuário seleciona seu aplicativo na tela inicial, o sistema chama o método {@link
 android.app.Activity#onCreate onCreate()} para {@link android.app.Activity} no aplicativo
@@ -151,7 +151,7 @@
 <p>A principal atividade do aplicativo deve ser declarada no manifesto com um <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a> que inclui a ação {@link
 android.content.Intent#ACTION_MAIN MAIN} e categoria
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Por exemplo:</p> 
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Por exemplo:</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd
index 2eba3772..1c00d99 100644
--- a/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Esta lição ensina a</h2>
     <ol>
       <li><a href="#Stop">Interromper sua atividade</a></li>
       <li><a href="#Start">Iniciar/reiniciar sua atividade</a></li>
     </ol>
-    
+
     <h2>Leia também</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Atividades</a>
@@ -152,13 +152,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd b/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd
index 37d0d43..68b5518 100644
--- a/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/data-storage/databases.jd
@@ -118,12 +118,12 @@
 pode ser acessada por outros aplicativos.</p>
 
 <p>Um conjunto de APIs está disponível na classe {@link
-android.database.sqlite.SQLiteOpenHelper}. 
+android.database.sqlite.SQLiteOpenHelper}.
 Ao usar esta classe para obter referências para seu banco de dados, o sistema
 realiza operações
 de possível longa execução para criar e atualizar o banco de dados apenas quando
-necessário e <em>não durante a inicialização do aplicativo</em>. Basta chamar 
-{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ou 
+necessário e <em>não durante a inicialização do aplicativo</em>. Basta chamar
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} ou
 {@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
 
 <p class="note"><strong>Observação:</strong> devido à possibilidade de serem de longa execução,
diff --git a/docs/html-intl/intl/pt-br/training/basics/data-storage/files.jd b/docs/html-intl/intl/pt-br/training/basics/data-storage/files.jd
index d071d39..0e00645 100644
--- a/docs/html-intl/intl/pt-br/training/basics/data-storage/files.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/data-storage/files.jd
@@ -183,7 +183,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -250,12 +250,12 @@
 . Embora esses arquivos estejam teoricamente à disposição do usuário e de outros aplicativo por estarem
 no armazenamento externo, na verdade são arquivos que não têm valor para o usuário
 fora do aplicativo. Ao desinstalar o aplicativo, o sistema exclui
-todos os arquivos no diretório privado externo do aplicativo. 
+todos os arquivos no diretório privado externo do aplicativo.
   <p>Por exemplo, recursos adicionais baixados através do aplicativo ou arquivos de mídia temporários.</p>
   </dd>
 </dl>
 
-<p>Para salvar arquivos públicos no armazenamento externo, use o método 
+<p>Para salvar arquivos públicos no armazenamento externo, use o método
 {@link android.os.Environment#getExternalStoragePublicDirectory
 getExternalStoragePublicDirectory()} para obter um {@link java.io.File} que representa
 o diretório correto no armazenamento externo. O método exige um argumento que especifica
@@ -265,7 +265,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -287,7 +287,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -366,7 +366,7 @@
 
 <div class="note">
 <p><strong>Observação:</strong> quando o usuário desinstala o aplicativo, o sistema Android também
-exclui:</p> 
+exclui:</p>
 <ul>
 <li>Todos os arquivos salvos no armazenamento interno</li>
 <li>Todos os arquivos salvos no armazenamento externo usando {@link
diff --git a/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd b/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd
index f3b3b12..596f35c 100644
--- a/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/intents/filters.jd
@@ -154,7 +154,7 @@
 
 <p>Quando sua atividade iniciar, chame {@link android.app.Activity#getIntent()} para retomar a
 {@link android.content.Intent} que iniciou a atividade. Pode-se fazer isso a qualquer momento durante
-o ciclo de vida da atividade, mas recomenda-se fazê-lo no início do retorno de chamada como 
+o ciclo de vida da atividade, mas recomenda-se fazê-lo no início do retorno de chamada como
 {@link android.app.Activity#onCreate onCreate()} ou {@link android.app.Activity#onStart()}.</p>
 
 <p>Por exemplo:</p>
diff --git a/docs/html-intl/intl/pt-br/training/basics/intents/result.jd b/docs/html-intl/intl/pt-br/training/basics/intents/result.jd
index ecb5a47..abb880b 100644
--- a/docs/html-intl/intl/pt-br/training/basics/intents/result.jd
+++ b/docs/html-intl/intl/pt-br/training/basics/intents/result.jd
@@ -29,7 +29,7 @@
 startActivityForResult()} (em vez de {@link android.app.Activity#startActivity
 startActivity()}).</p>
 
-<p>Por exemplo, o aplicativo pode iniciar um aplicativo de câmera e receber a foto capturada como resultado. Ou, 
+<p>Por exemplo, o aplicativo pode iniciar um aplicativo de câmera e receber a foto capturada como resultado. Ou,
 ao iniciar o aplicativo Pessoas para que o usuário selecione um
 contato, você receberá os detalhes do contato como resultado.</p>
 
@@ -104,7 +104,7 @@
 aplicativos Contatos ou Pessoas do Android fornece um conteúdo {@link android.net.Uri} que identifica o
 contato escolhido pelo usuário.</p>
 
-<p>Para que o resultado seja tratado de forma adequada, é preciso saber o formato do resultado 
+<p>Para que o resultado seja tratado de forma adequada, é preciso saber o formato do resultado
 {@link android.content.Intent}. Isso é fácil quando umas das suas atividades
 retorna o resultado. Os aplicativos incluídos na plataforma Android oferecem suas próprias APIs que
 podem ser usadas para dados de resultado específicos. Por exemplo, o aplicativo Pessoas (Contatos em algumas versões mais
@@ -155,7 +155,7 @@
 <p class="note"><strong>Observação:</strong> antes do Android 2.3 (API nível 9), executar uma consulta
 no {@link android.provider.ContactsContract.Contacts Contacts Provider} (como mostrado
 acima) exige que o aplicativo declare a permissão {@link
-android.Manifest.permission#READ_CONTACTS} (consulte <a href="{@docRoot}guide/topics/security/security.html">Segurança e permissões</a>). Contudo, 
+android.Manifest.permission#READ_CONTACTS} (consulte <a href="{@docRoot}guide/topics/security/security.html">Segurança e permissões</a>). Contudo,
 iniciar com Android 2.3, o aplicativo Contatos/Pessoas dá ao aplicativo permissão
 temporária para ler no Provedor de Contatos quando retornar um resultado. A permissão temporária
 aplica-se apenas a pedidos de contato específicos, portanto, não é possível consultar um contato diferente daquele
diff --git a/docs/html-intl/intl/pt-br/training/material/drawables.jd b/docs/html-intl/intl/pt-br/training/material/drawables.jd
index 4eb9f36..900fbb1 100644
--- a/docs/html-intl/intl/pt-br/training/material/drawables.jd
+++ b/docs/html-intl/intl/pt-br/training/material/drawables.jd
@@ -38,7 +38,7 @@
 
 <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 
+pode configurar a cor e o modo do tingimento nos layouts com os atributos <code>android:tint</code> e
 <code>android:tintMode</code>.</p>
 
 
diff --git a/docs/html-intl/intl/ru/about/versions/android-5.0.jd b/docs/html-intl/intl/ru/about/versions/android-5.0.jd
index 5dbbac8..8267252 100644
--- a/docs/html-intl/intl/ru/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/ru/about/versions/android-5.0.jd
@@ -429,7 +429,7 @@
 <p>При обнаружении подходящей сети система подключается к ней и отправляет ответ {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()}. Для получения дополнительных сведений о сети можно использовать объект {@link android.net.Network} в ответе. Он же применяется для перенаправления трафика в выбранную сеть.</p>
 
 <h3 id="BluetoothBroadcasting">Низкоэнергетический Bluetooth</h3>
-<p>В Android версии 4.3 была представлена поддержка <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">низкоэнергетического Bluetooth</a> (<em>Bluetooth LE</em>) как основного способа передачи данных. Устройство на Android 5.0 может быть <em>периферийным</em> с поддержкой Bluetooth низкой мощности. Эта функция позволяет приложениям связываться с устройствами, расположенными неподалеку. Например, ваше приложение может работать как шагомер или отслеживать иные показатели, передавая данные на другое близко расположенное устройство по сети Bluetooth.</p> 
+<p>В Android версии 4.3 была представлена поддержка <a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">низкоэнергетического Bluetooth</a> (<em>Bluetooth LE</em>) как основного способа передачи данных. Устройство на Android 5.0 может быть <em>периферийным</em> с поддержкой Bluetooth низкой мощности. Эта функция позволяет приложениям связываться с устройствами, расположенными неподалеку. Например, ваше приложение может работать как шагомер или отслеживать иные показатели, передавая данные на другое близко расположенное устройство по сети Bluetooth.</p>
 <p>Новый API {@link android.bluetooth.le} позволяет приложениям передавать рекламу, получать отчеты и устанавливать связь с другими устройствами, поддерживающими Bluetooth LE. Чтобы воспользоваться новыми функциями, добавьте в манифест разрешение {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN}. Скачивая приложение или обновления для него в Google Play, пользователи должны дать разрешение на сбор данных о Bluetooth, управление этой функцией, а также на обмен информацией с устройствами по соседству.</p>
 
 <p>Чтобы начать передачу рекламы по Bluetooth LE на другие устройства, вызовите {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} и передайте данные о внедрении класса {@link android.bluetooth.le.AdvertiseCallback}. Объект обратного вызова получает отчет об успешном или неуспешном показе рекламы.</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 7e4ea12..4eb0f5d 100644
--- a/docs/html-intl/intl/ru/design/get-started/principles.jd
+++ b/docs/html-intl/intl/ru/design/get-started/principles.jd
@@ -260,7 +260,7 @@
   <div class="col-7">
 
 <h4 id="sprinkle-encouragement">Не скупитесь на поддержку пользователя</h4>
-<p>Разбейте сложные задачи на более мелкие, легко выполнимые этапы. Обеспечьте обратную связь, 
+<p>Разбейте сложные задачи на более мелкие, легко выполнимые этапы. Обеспечьте обратную связь,
 даже при незначительных операциях.</p>
 
   </div>
@@ -295,7 +295,7 @@
   <div class="col-7">
 
 <h4 id="make-important-things-fast">Важные действия должны происходить быстро</h4>
-<p>Не все действия равноценны. Решите, какие функции вашего приложения являются самыми важными, и обеспечьте возможность 
+<p>Не все действия равноценны. Решите, какие функции вашего приложения являются самыми важными, и обеспечьте возможность
 быстро найти и использовать их. Например, это может быть кнопка спуска затвора в фотокамере или кнопка паузы в музыкальном плеере.</p>
 
   </div>
diff --git a/docs/html-intl/intl/ru/design/material/index.jd b/docs/html-intl/intl/ru/design/material/index.jd
index da0352a..f585a0d 100644
--- a/docs/html-intl/intl/ru/design/material/index.jd
+++ b/docs/html-intl/intl/ru/design/material/index.jd
@@ -165,7 +165,7 @@
 <p>Анимация для реакции на касание встроена в некоторые стандартные представления, например кнопки. Новые API-интерфейсы
 позволяют разработчику настраивать эти анимации и добавлять их в свои нестандартные представления.</p>
 
-<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/animations.html">Определение настраиваемой 
+<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/animations.html">Определение настраиваемой
 анимации</a>.</p>
 
 
@@ -182,5 +182,5 @@
 растровых изображений.</li>
 </ul>
 
-<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/drawables.html">Работа с 
+<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/drawables.html">Работа с
 элементами дизайна</a>.</p>
diff --git a/docs/html-intl/intl/ru/design/patterns/navigation.jd b/docs/html-intl/intl/ru/design/patterns/navigation.jd
index 3a0fc6e..817ec33 100644
--- a/docs/html-intl/intl/ru/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ru/design/patterns/navigation.jd
@@ -15,7 +15,7 @@
 глобальное поведение навигации претерпело значительные изменения. Тщательное следование
 инструкциям по применению кнопок "Назад" и "Вверх" сделает навигацию в вашем приложении предсказуемой и надежной с точки зрения пользователей.</p>
 <p>В Android 2.3 и в более ранних версиях для навигации внутри приложения использовалась системная кнопка <em>Назад</em>.
- С появлением панели действий в Android 3.0 стал доступен второй механизм 
+ С появлением панели действий в Android 3.0 стал доступен второй механизм
 навигации – кнопка <em>Вверх</em>, содержащая значок приложения и левую угловую скобку.</p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
@@ -33,7 +33,7 @@
 экранов, недавно открытых пользователем. Такая навигация основана на порядке появления
 экранов, а не на иерархии приложения.</p>
 
-<p>Если предыдущий экран одновременно является иерархическим родителем текущего, 
+<p>Если предыдущий экран одновременно является иерархическим родителем текущего,
 кнопка "Назад" имеет то же действие, что и кнопка "Вверх", &mdash; и это случается довольно
 часто. Однако, в отличие от кнопки "Вверх", гарантирующей, что пользователь остается в приложении, кнопка "Назад"
 может перевести его на главный экран или даже в другое приложение.</p>
@@ -98,12 +98,12 @@
 <p>В обоих этих случаях реализуйте следующее поведение кнопки "Вверх":</p>
 
 <ul>
-<li><em>Если целевой экран, как правило, достигается из одного конкретного экрана 
+<li><em>Если целевой экран, как правило, достигается из одного конкретного экрана
 приложения</em>, кнопка "Вверх" должна осуществлять переход на этот экран.</li>
 <li><em>В противном случае</em> кнопка "Вверх" должна осуществлять переход на самый верхний (главный) экран приложения.</li>
 </ul>
 
-<p>Что касается кнопки "Назад", необходимо обеспечить более предсказуемую навигацию, вставив в 
+<p>Что касается кнопки "Назад", необходимо обеспечить более предсказуемую навигацию, вставив в
 стек переходов назад полный путь навигации вверх к самому верхнему экрану приложения. Это позволит пользователям,
 забывшим, как они вошли в приложение, перейти к его главному экрану перед выходом из
 приложения.</p>
@@ -139,7 +139,7 @@
 
 <p><em>Всплывающие уведомления</em> появляются непосредственно перед пользователем,
 в обход панели уведомлений. Они используются редко и <strong>должны быть зарезервированы для ситуаций, в которых требуется немедленная
-реакция пользователя, и прерывание его действий оправдано</strong>. Например, 
+реакция пользователя, и прерывание его действий оправдано</strong>. Например,
 приложение Talk с помощью таких уведомлений извещает пользователя о поступившем от друга приглашении присоединиться к видеочату, поскольку срок действия этого
 приглашения истекает через несколько секунд.</p>
 
@@ -153,7 +153,7 @@
 <h2 id="between-apps">Навигация между приложениями</h2>
 
 <p>Одним из фундаментальных достоинств системы Android является способность взаимного запуска приложений,
-что дает пользователю возможность переходить непосредственно из одного приложения в другое. Например, 
+что дает пользователю возможность переходить непосредственно из одного приложения в другое. Например,
 приложение, которому нужно сделать снимок, может активировать приложение Camera, которое передаст фотографию
 вызвавшему его приложению. Это огромное преимущество как для разработчика, имеющего возможность без проблем воспользоваться
 кодом других приложений, так и для пользователя, получающего согласованный интерфейс для часто выполняемых
@@ -182,7 +182,7 @@
 <p>Чтобы понять, как действия, задачи и намерения взаимодействуют друг с другом, разберемся, как одно приложение позволяет пользователям
 поделиться содержимым с помощью другого приложения. Например, при запуске приложения Play Store с главного экрана создается
 новая задача, Task A (см. рисунок ниже). Когда пользователь выполнит навигацию по Play Store и коснется интересующей его книги,
-чтобы просмотреть информацию о ней, он остается в той же задаче, расширяя ее с помощью добавленных действий. Запуск 
+чтобы просмотреть информацию о ней, он остается в той же задаче, расширяя ее с помощью добавленных действий. Запуск
 действия "Поделиться" выводит перед пользователем диалоговое окно со списком действий (из разных приложений),
 зарегистрированных для выполнения намерения "Поделиться".</p>
 
@@ -198,16 +198,16 @@
 
 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
 
-<p>Однако, коснувшись кнопки "Вверх" во время действия "Составление сообщения", пользователь выскажет пожелание остаться в приложении 
+<p>Однако, коснувшись кнопки "Вверх" во время действия "Составление сообщения", пользователь выскажет пожелание остаться в приложении
 Gmail. Откроется экран действия "Переписка" приложения Gmail, и для него будет создана новая задача Task B. Новые задачи
 всегда имеют корень на главном экране, поэтому касание кнопки "Назад" на экране переписки возвращает пользователя именно туда.</p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
 
-<p>Задача Task A остается в фоновом режиме, и пользователь может вернуться к ней впоследствии (например, с помощью 
+<p>Задача Task A остается в фоновом режиме, и пользователь может вернуться к ней впоследствии (например, с помощью
 экрана с последними приложениями). Если в фоновом режиме уже работает собственная задача Gmail, она будет замещена
 задачей Task B. Произойдет отказ от предыдущего контекста ради новой цели пользователя.</p>
 
 <p>Если для обработки намерений ваше приложение зарегистрирует действие, расположенное в глубине своей иерархии,
-следуйте инструкциям по реализации навигации с помощью кнопки "Вверх", изложенным в разделе <a href="#into-your-app">Навигация внутрь приложения с помощью виджетов и 
+следуйте инструкциям по реализации навигации с помощью кнопки "Вверх", изложенным в разделе <a href="#into-your-app">Навигация внутрь приложения с помощью виджетов и
 уведомлений главного экрана</a>.</p>
diff --git a/docs/html-intl/intl/ru/design/patterns/notifications.jd b/docs/html-intl/intl/ru/design/patterns/notifications.jd
index db46ad5..4d339c2 100644
--- a/docs/html-intl/intl/ru/design/patterns/notifications.jd
+++ b/docs/html-intl/intl/ru/design/patterns/notifications.jd
@@ -103,15 +103,15 @@
 <p>Разработчик может выбрать степень подробности уведомлений, генерируемых его
 приложением. Уведомление может содержать первые
 несколько строк сообщения или миниатюру изображения. В качестве дополнительной
-информации можно предоставлять пользователю 
+информации можно предоставлять пользователю
 контекст и, &mdash;в некоторых случаях, &mdash;давать ему возможность прочитать сообщение
 целиком. Чтобы переключаться
  между компактной и расширенной компоновкой, пользователь может применить жест сжатия/масштабирования или
 провести пальцем по экрану.
  Для уведомлений о единичных событиях Android предоставляет
- разработчику приложения три шаблона расширенной компоновки 
+ разработчику приложения три шаблона расширенной компоновки
 (текст, входящая почта и изображения). Ниже приведены скриншоты уведомлений о единичных
-событиях на мобильных устройствах (слева) 
+событиях на мобильных устройствах (слева)
  и на носимых устройствах (справа).</p>
 
 <img style="margin-top:30px"
@@ -158,7 +158,7 @@
 
 <ul>
   <li> неоднозначных;
-  <li> совпадающих с действиями, выполняемыми для данного уведомления по умолчанию (например, "Прочитать" или 
+  <li> совпадающих с действиями, выполняемыми для данного уведомления по умолчанию (например, "Прочитать" или
 "Открыть").
 </ul>
 
@@ -189,7 +189,7 @@
 отображается
 в расширенной компоновке, позволяя выполнить допустимые действия.</p>
 <p> Затем уведомление принимает обычный
-вид. Если для уведомления установлен высокий, максимальный или полноэкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a> 
+вид. Если для уведомления установлен высокий, максимальный или полноэкранный <a href="#correctly_set_and_manage_notification_priority">приоритет</a>
 , оно становится уведомлением heads-up.</p>
 
 <p><b>Хорошими примерами событий для уведомлений heads-up являются</b></p>
@@ -232,15 +232,15 @@
 сокращенное представление, если накопилось несколько уведомлений. Если приложение переводит
 пользователя на какой-либо уровень, отличный от верхнего, реализуйте навигацию в стеке переходов назад в приложении, чтобы
 пользователь мог нажать системную кнопку "Назад" и вернуться на верхний уровень. Дополнительную информацию можно найти в разделе
-<em>Навигация внутрь приложения с помощью виджетов и уведомлений главного экрана</em> в шаблоне проектирования 
+<em>Навигация внутрь приложения с помощью виджетов и уведомлений главного экрана</em> в шаблоне проектирования
 <a href="{@docRoot}design/patterns/navigation.html#into-your-app">Навигация</a>.</p>
 
-<h3 id="correctly_set_and_manage_notification_priority">Правильно выполняйте расстановку приоритетов уведомлений и 
+<h3 id="correctly_set_and_manage_notification_priority">Правильно выполняйте расстановку приоритетов уведомлений и
 управление ими
 </h3>
 
 <p>Android поддерживает флаг приоритета для уведомлений. Это флаг позволяет
-влиять на позицию уведомления среди других уведомлений и 
+влиять на позицию уведомления среди других уведомлений и
 гарантировать,
 что пользователь в первую очередь увидит самые важные уведомления. При отправке уведомления можно выбрать один
 из
@@ -315,7 +315,7 @@
 подходящий
 приоритет</strong></h4>
 
-<p>При выдаче уведомлений с приоритетами <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> существует риск, что деятельность 
+<p>При выдаче уведомлений с приоритетами <code>DEFAULT</code>, <code>HIGH</code> и <code>MAX</code> существует риск, что деятельность
 пользователя будет прервана
 в самом разгаре. Чтобы не раздражать пользователей вашего приложения, применяйте приоритеты этих уровней для
 уведомлений,</p>
@@ -359,7 +359,7 @@
 href="/reference/android/app/Notification.html#CATEGORY_CALL">CATEGORY_CALL</a></code></p>
 </td>
     <td>
-<p>Входящий звонок (голосовой или по видеосвязи) или алогичный запрос синхронной 
+<p>Входящий звонок (голосовой или по видеосвязи) или алогичный запрос синхронной
 связи</p>
 </td>
  </tr>
@@ -568,7 +568,7 @@
 представлять собой изображение белого цвета на прозрачном фоне.</p>
 
 
-<h3 id="pulse_the_notification_led_appropriately">Правильно используйте индикатор 
+<h3 id="pulse_the_notification_led_appropriately">Правильно используйте индикатор
 уведомлений</h3>
 
 <p>На многих устройствах Android имеется светодиодный индикатор уведомлений,
@@ -579,7 +579,7 @@
 <code>MIN</code>) не должны.</p>
 
 <p>Возможности пользователя управлять уведомлениями должны распространяться на светодиодный индикатор. Когда разработчик использует
-DEFAULT_LIGHTS, 
+DEFAULT_LIGHTS,
 индикатор светится белым цветом. Ваши уведомления не должны вызывать свечение другим
 цветом, если
 пользователь не указал этого явным образом.</p>
@@ -658,7 +658,7 @@
   <li> Не отвлекайте пользователя, чтобы проинформировать его об ошибке, если
 приложение может восстановиться после нее самостоятельно, не требуя от пользователя
 никаких действий.</li>
-  <li> Не создавайте уведомления, не имеющие осмысленного содержимого и 
+  <li> Не создавайте уведомления, не имеющие осмысленного содержимого и
 всего лишь рекламирующие ваше
 приложение. Уведомление должно нести полезную, актуальную и новую информацию. Не следует
 использовать его
@@ -787,7 +787,7 @@
  чтобы конфиденциальные данные не отображались на защищенном экране блокировки. В этом случае системный пользовательский интерфейс
 учитывает <em>уровень видимости</em> уведомления, чтобы выяснить, какую информацию
 можно отображать без риска.</p>
-<p> Чтобы установить уровень видимости, вызовите 
+<p> Чтобы установить уровень видимости, вызовите
 <code><a
 href="/reference/android/app/Notification.Builder.html#setVisibility(int)">Notification.Builder.setVisibility()</a></code>
 и укажите одно из следующих значений:</p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/about.jd b/docs/html-intl/intl/ru/distribute/googleplay/about.jd
index d5eaafe..1c2bc96 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@
 
 @jd:body
 
-    <div id="qv-wrapper">           
+    <div id="qv-wrapper">
   <div id="qv">
   <h2>О Google Play</h2>
     <ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/auto.jd b/docs/html-intl/intl/ru/distribute/googleplay/auto.jd
index 3fc82dd..3550b36 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/auto.jd
@@ -133,7 +133,7 @@
 <ul>
   <li>В манифесте приложения должна быть декларирована запись метаданных <code>com.google.android.gms.car.application</code>
  с функциональными возможностями автомобиля, используемыми приложением. Чтобы получить более подробную информацию
- о конфигурации приложения для Android Auto, см. 
+ о конфигурации приложения для Android Auto, см.
 <a href="{@docRoot}training/auto/start/index.html#auto-metadata">Начало работы с Android Auto</a>.
   </li>
 </ul>
@@ -152,7 +152,7 @@
   После принятия условий и сохранения изменений вы можете загрузить и опубликовать свое приложение в обычном порядке.
   Перед тем, как открыть доступ к приложению пользователям Android Auto, Google Play передает
 приложение на проверку его соответствия критериям <a href="{@docRoot}distribute/essentials/quality/auto.html">качества автоприложений</a>
-и уведомляет о ее результатах. Если приложение было одобрено, Google Play делает его 
+и уведомляет о ее результатах. Если приложение было одобрено, Google Play делает его
 доступным пользователям Android Auto. Подробная информация о том, как отслеживать статус подтверждения приложения, приведена
  в следующем разделе.
 </p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd
index cb62c2f..7510202 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@
 Xnonavpage=true
 
 @jd:body
-    
-    <div id="qv-wrapper">           
+
+    <div id="qv-wrapper">
   <div id="qv">
     <h2>Возможности для публикации приложений</h2>
     <ol>
@@ -204,7 +204,7 @@
 <p>
   В случае добавления функций или исправления проблем обновленный двоичный файл
  можно опубликовать в любое время. Новая версия сразу же становится доступной, а существующие пользователи
- получают уведомление о готовом к загрузке обновлении. Пользователи также могут 
+ получают уведомление о готовом к загрузке обновлении. Пользователи также могут
  принимать автоматические обновления приложения, которые будут
  передаваться и устанавливаться сразу после публикации. Вы можете отменить публикацию своих приложений в любое
  время.
@@ -441,7 +441,7 @@
 <p>
   Управляйте распространением своих приложений по странам и регионам. Для
  некоторых стран можно указать операторов мобильной связи, на которых будут нацелены ваши продажи. Вы также можете просмотреть
- список устройств, которым доступно ваше приложение, составленный на основании правил распространения 
+ список устройств, которым доступно ваше приложение, составленный на основании правил распространения
  из файла манифеста приложения.
 </p>
 
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd
index 9551108..664539f 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>Содержание документа</h2>
@@ -141,7 +141,7 @@
  приложение семейным пользователям. Если приложение удовлетворяет всем
  требованиям программы, срок его публикации будет не больше обычного. Однако
  если в процессе проверки приложение было отклонено, срок его публикации
- задержится. 
+ задержится.
   </dd>
 
   <dt>
@@ -281,7 +281,7 @@
  за собой право отклонять приложения, использующие излишне агрессивные коммерческие методы. Продажа контента во всех приложениях
  программы "Для всей семьи", предназначенных в основном для детской
  аудитории, будет защищена паролем, чтобы покупки подтверждались
- родителями, а не детьми. Следует отметить, что эта защита не распространяется на приложения, 
+ родителями, а не детьми. Следует отметить, что эта защита не распространяется на приложения,
  предназначенные для общей аудитории.
   </dd>
 </dl>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd b/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd
index fcb0d34..9274732 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@
 
 <p class="note">
   <strong>Примечание</strong>. Опубликованные в рамках программы "Для всей семьи" приложения также доступны для
- всех пользователей Google Play. 
+ всех пользователей Google Play.
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd
index ca1b671..8af9d91 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@
         <li><a href="#listing">Соответствие требованиям Google Play</a></li>
 
   </ol>
-  
+
   <h2>Тестирование</h2>
   <ol>
     <li><a href="#test-environment">Настройка среды тестирования</a></li>
@@ -24,7 +24,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Качество приложений для планшетных ПК</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Оптимизация приложений</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -84,7 +84,7 @@
     <th style="width:54px;">
       ИД
     </th>
-    
+
 
     <th>
       Описание
@@ -182,7 +182,7 @@
   </td>
   <td>
     <p style="margin-bottom:.5em;">
-    Уведомления должны соответствовать <a href="{@docRoot}design/patterns/notifications.html">рекомендациям</a> по дизайну Android. В 
+    Уведомления должны соответствовать <a href="{@docRoot}design/patterns/notifications.html">рекомендациям</a> по дизайну Android. В
 частности, должны быть соблюдены следующие правила.
     </p>
 
@@ -290,7 +290,7 @@
   <td>
     <p style="margin-bottom:.5em;">
     Приложение не запрашивает прав доступа к наиболее важным данным (например,
- к контактам или системному журналу), а также к платным сервисам 
+ к контактам или системному журналу), а также к платным сервисам
  (например, службам дозвона или отправки СМС), если это не связано с основной функциональностью данного
  приложения.
     </p>
@@ -311,7 +311,7 @@
 
     <p style="margin-bottom:.25em;">
     Поддержка установки на SD-карту рекомендована для всех больших приложений
- (превышающих 10 МБ). См. в руководстве разработчика в разделе <a href="{@docRoot}guide/topics/data/install-location.html">Место 
+ (превышающих 10 МБ). См. в руководстве разработчика в разделе <a href="{@docRoot}guide/topics/data/install-location.html">Место
 установки приложения</a> информацию о том,
  какие типы приложений должны поддерживать установку на SD-карты.
     </p>
@@ -490,7 +490,7 @@
  его состояние должно быть восстановлено максимально близко к предыдущему состоянию.
     </li>
 
-    <li>При нажатии кнопки "Назад" приложение позволяет сохранить свое текущее состояние или 
+    <li>При нажатии кнопки "Назад" приложение позволяет сохранить свое текущее состояние или
 состояние пользователя, которое в противном случае будет потеряно при переходе назад.
     </li>
     </ol>
@@ -1048,8 +1048,8 @@
     </p>
 
     <p style="margin-bottom:.25em;">
-    Чтобы принудительно задействовать аппаратное ускорение (если оно поддерживается 
- устройством), добавьте параметр <code>hardware-accelerated="true"</code> к разделу 
+    Чтобы принудительно задействовать аппаратное ускорение (если оно поддерживается
+ устройством), добавьте параметр <code>hardware-accelerated="true"</code> к разделу
  <code>&lt;application&gt;</code> в манифесте приложения и выполните его повторную компиляцию.
     </p>
   </td>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd
index 4e0322f..4c25d88 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/quality/tablets.jd
@@ -56,7 +56,7 @@
 
 <p>Первым шагом к созданию хорошего планшетного приложения будет соблюдение
  <em>основных критериев качества</em> для всех устройств
- и форм-факторов, для которых предназначается приложение. Полную информацию об этом см. в руководстве <a href="{@docRoot}distribute/essentials/quality/core.html">Основные критерии качества приложений</a>. 
+ и форм-факторов, для которых предназначается приложение. Полную информацию об этом см. в руководстве <a href="{@docRoot}distribute/essentials/quality/core.html">Основные критерии качества приложений</a>.
 </p>
 
 <p>
@@ -174,7 +174,7 @@
 
 <p>Планшеты обеспечивают значительно больше полезной площади экрана
  для вашего приложения, особенно в альбомной ориентации. Особенно этот прирост заметен на 10-дюймовых планшетах, но даже 7-дюмовые
- планшеты добавляют значительное количество места для отображения контента 
+ планшеты добавляют значительное количество места для отображения контента
 и привлечения пользователей. </p>
 
 <p>Планируя интерфейс пользователя для работы на планшетах, убедитесь, что в нем будут
@@ -196,20 +196,20 @@
 <img src="{@docRoot}images/ui-ex-single-panes.png" style="width:490px;padding:4px;margin-bottom:0em;" align="middle">
 <img src="{@docRoot}images/ui-ex-multi-pane.png" style="width:490px;padding:4px;margin-bottom:0em;">
 <p class="image-caption" style="padding:.5em"><span
-style="font-weight:500;">Составные представления</span> объединяют несколько простых представлений из 
+style="font-weight:500;">Составные представления</span> объединяют несколько простых представлений из
 интерфейса для смартфонов<em>(см. верхнюю часть рисунка)</em> в информативном и более эффективном
  интерфейсе для планшетов <em>(см. нижнюю часть рисунка)</em>. </p>
 </div>
 </div>
 
-<li>Хотя отдельные экраны реализуются с помощью подкласса {@link android.app.Activity}, 
+<li>Хотя отдельные экраны реализуются с помощью подкласса {@link android.app.Activity},
  старайтесь реализовать отдельные составные панели с помощью подкласса {@link
 android.app.Fragment}. Это позволит повысить
  применимость программного кода для использующих один и тот же контент экранов,
  отличающихся форм-факторами и размерами.</li>
 <li>Примите решение, для каких размеров экранов будет использоваться интерфейс с
- несколькими панелями, а затем предложите разные макеты для подобных размеров экранов (например, для категорий 
-<code>large</code>/<code>xlarge</code>) или для экранов с минимальной шириной (таких, как категории 
+ несколькими панелями, а затем предложите разные макеты для подобных размеров экранов (например, для категорий
+<code>large</code>/<code>xlarge</code>) или для экранов с минимальной шириной (таких, как категории
 <code>sw600dp</code>/<code>sw720</code>).</li>
 </ul>
 
@@ -496,7 +496,7 @@
  которые <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">подразумевают наличие аппаратных
  возможностей</a>, не применимых к планшетам. Если вы обнаружите декларацию таких прав доступа,
  обязательно явным образом задекларируйте соответствующий элемент
-<code>&lt;uses-feature&gt;</code> для подразумеваемых возможностей и включите в него атрибут 
+<code>&lt;uses-feature&gt;</code> для подразумеваемых возможностей и включите в него атрибут
 <code>android:required=”false”</code>.</li>
 </ul>
 
@@ -539,11 +539,11 @@
  <code>android:xlargeScreens="true"</code>.</li>
 </ul>
 
-<p>Если в манифесте приложения задекларирован элемент 
+<p>Если в манифесте приложения задекларирован элемент
 <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>,
  в нем должны быть атрибуты, указывающие
  <em>все комбинации размеров и разрешений для планшетных экранов</em>,
- поддерживаемые приложением. Обратите внимание, что там, где это возможно, вы должны избегать использования элемента 
+ поддерживаемые приложением. Обратите внимание, что там, где это возможно, вы должны избегать использования элемента
 <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>
  для своего приложения.</p>
 
@@ -804,7 +804,7 @@
 <p>
   Сравнив <a href="{@docRoot}distribute/essentials/quality/core.html#test-environment">рекомендуемую
  среду тестирования</a> для проверки с основными критериями качества приложения,
- включите в нее планшеты среднего размера и планшеты с большим или меньшим количеством 
+ включите в нее планшеты среднего размера и планшеты с большим или меньшим количеством
  аппаратных или программных функциональных возможностей.
 </p>
 
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/tv.jd b/docs/html-intl/intl/ru/distribute/googleplay/tv.jd
index 31a40ce..747c6d9 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/tv.jd
@@ -78,7 +78,7 @@
 <h3 id="develop_app">2. Создайте качественное телеприложение</h3>
 
 <p>
-  Качественное телеприложение предназначено для использования на 
+  Качественное телеприложение предназначено для использования на
  телевизионном экране, в нем реализованы возможности Android TV, а также соответствующих
  устройств ввода: джойстиков, навигационных кнопок и пультов дистанционного управления. Это приложение тщательно проработано, обладает отлаженным и качественным
  интерфейсом для больших экранов, предлагает привлекательный для пользователей
@@ -89,7 +89,7 @@
   Обдумывая свое будущее телеприложение, изучите <a href="{@docRoot}training/tv/start/index.html">документацию для разработчиков</a> и
  рекомендации относительно эргономики и постарайтесь максимально их
  придерживаться. Позаботьтесь о максимальном удобстве работы для пользователей и обеспечьте
- его с помощью специальной библиотеки Leanback, входящей в SDK. Возможно, потребуется оптимизировать другие 
+ его с помощью специальной библиотеки Leanback, входящей в SDK. Возможно, потребуется оптимизировать другие
  части вашего приложения для использования на телеэкране, правильно будет определить это
  в начальной стадии процесса разработки.
 </p>
@@ -145,7 +145,7 @@
   <li>Предусмотрите соблюдение критериев <a href="{@docRoot}distribute/essentials/quality/tv.html">Качества
  телеприложений</a>.
     <ul>
-      <li>Используйте передовые 
+      <li>Используйте передовые
 методы <a href="{@docRoot}training/tv/index.html">разработки телеприложений</a>.</li>
       <li>Убедитесь в том, что приложение соответствует всем критериям <a href="{@docRoot}distribute/essentials/quality/tv.html">качества телеприложений</a>.</li>
     </ul>
@@ -181,7 +181,7 @@
 
 <ul>
   <li>В манифесте приложения для объекта Intent должен быть установлен тип <a href="{@docRoot}reference/android/content/Intent.html#ACTION_MAIN"><code>ACTION_MAIN</code></a>
- с категорией<a href="{@docRoot}reference/android/content/Intent.html#CATEGORY_LEANBACK_LAUNCHER"> 
+ с категорией<a href="{@docRoot}reference/android/content/Intent.html#CATEGORY_LEANBACK_LAUNCHER">
 <code>CATEGORY_LEANBACK_LAUNCHER</code></a>. Дополнительную информацию см. <a href="{@docRoot}training/tv/start/start.html#tv-activity">здесь</a>.
   </li>
 
@@ -261,7 +261,7 @@
  соответствует критериям, вы получите <strong>уведомление на адрес электронной почты,
  указанный в учетной записи разработчика</strong>, с описанием проблем, которые следует устранить. После
  внесения необходимых исправлений вы можете загрузить новую версию своего приложения в консоль
- разработчика. 
+ разработчика.
 </p>
 
 <p>
@@ -282,7 +282,7 @@
 
   <li>
     <em>Утверждено</em> – ваше приложение было проверено и утверждено. Приложение
- становится доступно пользователям программы Android TV. 
+ становится доступно пользователям программы Android TV.
   </li>
 
   <li>
diff --git a/docs/html-intl/intl/ru/distribute/googleplay/wear.jd b/docs/html-intl/intl/ru/distribute/googleplay/wear.jd
index 1c6b270..9274401 100644
--- a/docs/html-intl/intl/ru/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/ru/distribute/googleplay/wear.jd
@@ -152,7 +152,7 @@
 <p>
   Создав готовый к выпуску пакет APK и проверив его на соответствие всем критериям <a href="{@docRoot}distribute/essentials/quality/wear.html">качества приложений Android Wear</a>,
  загрузите пакет в консоль разработчика. Добавьте снимки экранов Android Wear на страницу своего каталога
- и установите нужные параметры распространения. Если вы не знаете, как подготовить приложение к выпуску в Google Play, изучите 
+ и установите нужные параметры распространения. Если вы не знаете, как подготовить приложение к выпуску в Google Play, изучите
 <a href="{@docRoot}distribute/googleplay/publish/preparing.html">контрольный список при выпуске приложения.</a>
 </p>
 
diff --git a/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd
index a62e3f1..303ab5b 100644
--- a/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/ru/distribute/tools/launch-checklist.jd
@@ -692,7 +692,7 @@
 </div>
 
 <p>
-  Прежде чем выпускать свои приложения всегда полезно получить отзывы 
+  Прежде чем выпускать свои приложения всегда полезно получить отзывы
 от настоящих пользователей &mdash; даже в большем количестве, чем при запуске новых приложений. Поэтому
  настоятельно рекомендуется распространить предварительную версию приложения среди
  таких тестирующих пользователей на ключевых для вас рынках и обеспечить для них удобный
@@ -983,7 +983,7 @@
 
   <li>
     <p>
-      Помимо окна автоматического возмещения, предлагаемого Google Play, будьте щедрыми 
+      Помимо окна автоматического возмещения, предлагаемого Google Play, будьте щедрыми
  в своей собственной политике возмещения, удовлетворенные пользователи скорее совершат повторную
  покупку в будущем.
     </p>
diff --git a/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd
index 7aef25c..dccfb11 100644
--- a/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/ru/distribute/tools/localization-checklist.jd
@@ -103,7 +103,7 @@
   После определения намеченных для локализации языков оцените свои потребности
  для их поддержки в своих приложениях и заранее спланируйте работу.
   Следует учесть расширение лексики, требования к написанию, ограничению интервалов между знаками и
- переноса слов, поддержку написания слева направо и справа налево, а также другие 
+ переноса слов, поддержку написания слева направо и справа налево, а также другие
  потенциальные факторы каждого языка.
 </p>
 
diff --git a/docs/html-intl/intl/ru/google/play/filters.jd b/docs/html-intl/intl/ru/google/play/filters.jd
index 0059a1a..ccac3894b 100644
--- a/docs/html-intl/intl/ru/google/play/filters.jd
+++ b/docs/html-intl/intl/ru/google/play/filters.jd
@@ -45,21 +45,21 @@
 </div>
 </div>
 
-<p>Когда пользователь просматривает каталог Google Play или ищет там приложения для загрузки, 
-отображаемые результаты фильтруются с учетом того, какие приложения совместимы с его устройством. 
+<p>Когда пользователь просматривает каталог Google Play или ищет там приложения для загрузки,
+отображаемые результаты фильтруются с учетом того, какие приложения совместимы с его устройством.
 Например, если для приложения требуется камера, Google Play не отобразит его для устройств,
  не оборудованных камерами. Такая <em>фильтрация</em> помогает разработчикам управлять
  распространением своих приложений, а также обеспечивает максимальный уровень удобства для
  пользователей.</p>
 
-<p>Для фильтрация в Google Play используется несколько типов метаданных приложений и 
+<p>Для фильтрация в Google Play используется несколько типов метаданных приложений и
 настройки конфигурации, включая декларированные в манифесте сведения, необходимые
 библиотеки, архитектурные требования, и набор средств контроля за распространением, предусмотренный в консоли разработчика Google
 Play, например, геотаргетинг, ценообразование и т. п.</p>
 
 <p>Фильтрация в Google Play частично основывается на декларациях в манифесте и прочих
-аспектах платформы Android, но фактические функции фильтрации определяются 
-именно самой платформой и не связаны с конкретными уровнями API-интерфейсов. В этом документе 
+аспектах платформы Android, но фактические функции фильтрации определяются
+именно самой платформой и не связаны с конкретными уровнями API-интерфейсов. В этом документе
 описываются действующие сейчас правила фильтрации в Google Play.</p>
 
 
@@ -81,7 +81,7 @@
 специально запрашивает данное приложение или пытается перейти к нему по внешней ссылке, прямо указывающей на
 идентификатор этого приложения в Google Play.</p>
 
-<p>Можно использовать любые комбинации доступных фильтров для своих приложений. Например, можно установить для 
+<p>Можно использовать любые комбинации доступных фильтров для своих приложений. Например, можно установить для
 <code>minSdkVersion</code> требуемое значение <code>"4"</code> и задать <code>smallScreens="false"</code>
 в самом приложении, тогда при загрузке приложения в Google Play можно будет нацелить приложение
 только на определенные европейские страны (или операторов связи). Таким образом, фильтры Google Play делают приложение недоступным на любом устройстве,
@@ -171,7 +171,7 @@
     <strong>Результат</strong>: Google Play показывает это приложение пользователям всех устройств,
  пока не будут применены другие фильтры. </p>
     <p><strong>Пример 3<br />
-    </strong>В манифесте декларируется <code>&lt;uses-sdk android:minSdkVersion="4"&gt;</code> 
+    </strong>В манифесте декларируется <code>&lt;uses-sdk android:minSdkVersion="4"&gt;</code>
 и не содержится элемент <code>&lt;supports-screens&gt;</code>.
     <strong>Результат</strong>: Google Play показывает это приложение всем пользователям,
  пока не будут применены другие фильтры. </p>
@@ -268,7 +268,7 @@
   <tr id="uses-permission-filtering">
     <td valign="top" style="white-space:nowrap;"><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code></td>
     <td valign="top">&nbsp;</td>
-    <td valign="top">Собственно, Google Play не выполняет фильтрацию по элементам 
+    <td valign="top">Собственно, Google Play не выполняет фильтрацию по элементам
 <code>&lt;uses-permission&gt;</code>. Однако эти элементы считываются
 для определения того, есть ли у приложения какие-либо требования к аппаратным компонентам,
 которые, возможно, не были правильно задекларированы элементами <code>&lt;uses-feature&gt;</code>.
@@ -279,7 +279,7 @@
 камеры.</p>
     <p>В целом, если приложение запрашивает доступ к каким-то аппаратным компонентам,
 Google Play считает, что для приложения необходимо наличие
-этих компонентов, даже когда это не отражено в соответствующих декларациях 
+этих компонентов, даже когда это не отражено в соответствующих декларациях
 <code>&lt;uses-feature&gt;</code>. Затем Google Play осуществляет
 фильтрацию с учетом таких функциональных возможностей, подразумеваемых декларациями <code>&lt;uses-feature&gt;</code>
 в манифесте.</p>
diff --git a/docs/html-intl/intl/ru/guide/components/activities.jd b/docs/html-intl/intl/ru/guide/components/activities.jd
index 5f55a35..3fab970 100644
--- a/docs/html-intl/intl/ru/guide/components/activities.jd
+++ b/docs/html-intl/intl/ru/guide/components/activities.jd
@@ -50,8 +50,8 @@
 отображается во весь экран, однако его размер может быть меньше, и оно может размещаться поверх других
 окон.</p>
 
-<p> Как правило, приложение состоит из нескольких операций, которые слабо 
-связаны друг с другом. Обычно одна из операций в приложении обозначается как «основная», 
+<p> Как правило, приложение состоит из нескольких операций, которые слабо
+связаны друг с другом. Обычно одна из операций в приложении обозначается как «основная»,
 предлагаемая пользователю при первом запуске приложения. В свою очередь, каждая
 операция может запустить другую операцию для выполнения различных действий. Каждый раз, когда
 запускается новая операция, предыдущая операция останавливается, однако система сохраняет ее
@@ -115,11 +115,11 @@
 кнопка, нажатие на которую приводит к выполнению определенного действия.</p>
 
 <p>В Android предусмотрен набор уже готовых представлений, которые можно использовать для создания дизайна макета и его
-организации. Виджеты — это представления с визуальными (и интерактивными) элементами, например, 
+организации. Виджеты — это представления с визуальными (и интерактивными) элементами, например,
 кнопками, текстовыми полями, чекбоксами или просто изображениями. Макеты — это представления, полученные из класса {@link
 android.view.ViewGroup}, обеспечивающие уникальную модель компоновки для своих дочерних представлений, таких как линейный
 макет, сетка или относительный макет. Также можно создать подкласс для классов {@link android.view.View} и
-{@link android.view.ViewGroup} (или воспользоваться существующими подклассами), чтобы создать собственные виджеты и 
+{@link android.view.ViewGroup} (или воспользоваться существующими подклассами), чтобы создать собственные виджеты и
 макеты, и затем применить их к макету своей операции.</p>
 
 <p>Чаще всего для задания макета с помощью представлений используется XML-файл макета, сохраненный в
@@ -343,8 +343,8 @@
 также иногда называется «Выполняется».)</dd>
 
   <dt><i>Приостановлена</i></dt>
-    <dd>На переднем фоне выполняется другая операция, которая отображается для пользователя, однако эта операция по-прежнему не скрыта. То есть 
-поверх текущей операции отображается другая операция, частично прозрачная или не занимающая 
+    <dd>На переднем фоне выполняется другая операция, которая отображается для пользователя, однако эта операция по-прежнему не скрыта. То есть
+поверх текущей операции отображается другая операция, частично прозрачная или не занимающая
 полностью весь экран. Приостановленная операция полностью активна (объект {@link android.app.Activity}
 по-прежнему находится в памяти, в нем сохраняются все сведения о состоянии и информация об элементах, и он также остается связанным с
 диспетчером окон), однако в случае острой нехватки памяти система может завершить ее.</dd>
@@ -357,7 +357,7 @@
 может завершить ее.</dd>
 </dl>
 
-<p>Если операция приостановлена или полностью остановлена, система может очистить ее из памяти путем 
+<p>Если операция приостановлена или полностью остановлена, система может очистить ее из памяти путем
 завершения самой операции (с помощью метода {@link android.app.Activity#finish finish()}) или просто завершить ее
 процесс.  В случае повторного открытия операции (после ее завершения) ее потребуется создать
 полностью.</p>
@@ -366,7 +366,7 @@
 
 <h3 id="ImplementingLifecycleCallbacks">Реализация обратных вызовов жизненного цикла</h3>
 
-<p>При переходе операции из одного вышеописанного состояния в другое, уведомления об этом 
+<p>При переходе операции из одного вышеописанного состояния в другое, уведомления об этом
 реализуются через различные методы обратного вызова. Все методы обратного вызова представляют собой привязки, которые
 можно переопределить для выполнения подходящего действия при изменении состояния операции. Указанная ниже базовая
 операция включает каждый из основных методов жизненного цикла.</p>
@@ -431,7 +431,7 @@
 сохранить ресурсы, необходимые для отображения операции для пользователя. Например, можно зарегистрировать объект
 {@link android.content.BroadcastReceiver} в методе {@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.app.Activity#onStop onStop()}, поскольку
 операция то отображается для пользователя, то скрывается от него.</p></li>
@@ -629,7 +629,7 @@
 <p class="note"><strong>Примечание.</strong> Нет никаких гарантий, что метод {@link
 android.app.Activity#onSaveInstanceState onSaveInstanceState()} будет вызван до того, как ваша
 операция будет уничтожена, поскольку существуют случаи, когда нет необходимости сохранять состояние
-(например, когда пользователь покидает вашу операцию нажатием кнопки <em>Назад</em>, 
+(например, когда пользователь покидает вашу операцию нажатием кнопки <em>Назад</em>,
 явным образом
 закрывая ее). Если система вызывает метод {@link android.app.Activity#onSaveInstanceState
 onSaveInstanceState()}, она делает это до вызова метода {@link
@@ -719,7 +719,7 @@
 <h3 id="CoordinatingActivities">Согласование операций</h3>
 
  <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
index ad690b7..4b2ae26 100644
--- a/docs/html-intl/intl/ru/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/ru/guide/components/bound-services.jd
@@ -46,9 +46,9 @@
 IPC. Привязанная служба обычно работает, пока другой компонент приложения
 привязан к ней. Она не работает постоянно в фоновом режиме.</p>
 
-<p>В этом документе рассказывается, как создать привязанную службу, включая привязку 
+<p>В этом документе рассказывается, как создать привязанную службу, включая привязку
 службы к другим компонентам приложения. Также рекомендуем обратиться к статье <a href="{@docRoot}guide/components/services.html">Службы</a>, чтобы узнать подробнее
-о службах, например, об организации отправки уведомлений от службы, настройке службы 
+о службах, например, об организации отправки уведомлений от службы, настройке службы
 на работу на переднем плане и т. д.</p>
 
 
@@ -91,7 +91,7 @@
 bindService()}. После привязки он должен предоставить реализацию метода {@link
 android.content.ServiceConnection}, который служит для отслеживания подключения к службе. Метод {@link
 android.content.Context#bindService bindService()} возвращается незамедлительно без значения, однако
-, когда система Android устанавливает подключение 
+, когда система Android устанавливает подключение
 клиент-служба, она вызывает метод {@link
 android.content.ServiceConnection#onServiceConnected onServiceConnected()} для {@link
 android.content.ServiceConnection}, чтобы выдать объект {@link android.os.IBinder}, который
@@ -127,7 +127,7 @@
 после чего он может использовать его для получения прямого доступа к общедоступным методам, имеющимся либо в реализации {@link android.os.Binder},
 либо даже в {@link android.app.Service}.
   <p>Этот способ является предпочтительным, когда служба просто выполняется в фоновом режиме для
-вашего приложения. Этот способ не подходит для создания интерфейса только тогда, 
+вашего приложения. Этот способ не подходит для создания интерфейса только тогда,
 когда ваша служба используется другими приложениями или в отдельных процессах.</dd>
 
   <dt><a href="#Messenger">Использование объекта Messenger</a></dt>
@@ -149,7 +149,7 @@
 примитивы, которые операционная система может распознать и распределить по процессам для организации
 взаимодействия между ними (IPC). Предыдущий способ с использованием объекта {@link android.os.Messenger} фактически основан на AIDL, поскольку это его
 базовая структура. Как уже упоминалось выше, объект {@link android.os.Messenger} создает очередь из всех
-запросов клиентов в рамках одного потока, поэтому служба одновременно получает только один запрос. Однако, 
+запросов клиентов в рамках одного потока, поэтому служба одновременно получает только один запрос. Однако,
 если необходимо, чтобы служба обрабатывала одновременно сразу несколько запросов, можно использовать AIDL
 напрямую. В таком случае ваша служба должна поддерживать многопоточность и должна быть потокобезопасной.
   <p>Чтобы использовать AIDL напрямую, необходимо
@@ -499,7 +499,7 @@
 onBind()} службы, который возвращает объект {@link android.os.IBinder} для взаимодействия со службой.</p>
 
 <p>Привязка выполняется асинхронно. {@link android.content.Context#bindService
-bindService()} возвращается сразу же и <em>не</em> возвращает клиенту объект 
+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} включает метод обратного вызова,
@@ -608,7 +608,7 @@
 во время выполнения методов {@link android.app.Activity#onResume onResume()} и {@link
 android.app.Activity#onPause onPause()} вашей операции, поскольку такие обратные вызовы происходят при каждом переходе из одного состояния в другое,
  а обработка данных, выполняемая при таких переходах, должна быть минимальной. Кроме того, если к одной и той же
-службе привязано несколько операций в вашем приложении, и имеется переход между 
+службе привязано несколько операций в вашем приложении, и имеется переход между
 двумя этими операциями, служба может быть уничтожена и создана повторно, поскольку текущая операция выполняет отмену привязки
 (во время приостановки) до того, как следующая служба выполнит привязку (во время возобновления). (Подробные сведения о согласовании жизненных циклов операций при таких переходах
 представлены в статье
diff --git a/docs/html-intl/intl/ru/guide/components/fragments.jd b/docs/html-intl/intl/ru/guide/components/fragments.jd
index b13fcc3..6fc39b7 100644
--- a/docs/html-intl/intl/ru/guide/components/fragments.jd
+++ b/docs/html-intl/intl/ru/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -56,10 +56,10 @@
 <p>Фрагмент всегда должен быть встроен в операцию, и на его жизненный цикл напрямую
 влияет жизненный цикл операции. Например, когда операция приостановлена, в том же состоянии находятся и все
 фрагменты внутри нее, а когда операция уничтожается, уничтожаются и все фрагменты. Однако пока
-операция выполняется (это соответствует состоянию <em>возобновлена</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">жизненного цикла</a>), можно 
+операция выполняется (это соответствует состоянию <em>возобновлена</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">жизненного цикла</a>), можно
 манипулировать каждым фрагментом независимо, например добавлять или удалять их. Когда разработчик выполняет такие
 транзакции с фрагментами, он может также добавить их в стек переходов назад, которым управляет
-операция. Каждый элемент стека переходов назад в операции является записью 
+операция. Каждый элемент стека переходов назад в операции является записью
  выполненной транзакции с фрагментом. Стек переходов назад позволяет пользователю обратить транзакцию с фрагментом (выполнить навигацию в обратном направлении),
 нажимая кнопку <em>Назад</em>.</p>
 
@@ -96,7 +96,7 @@
 операции, как на планшете, изображенном на рисунке 1.</p>
 
 <p>Следует разрабатывать каждый фрагмент как модульный и повторно используемый компонент операции.  Поскольку
- каждый фрагмент определяет собственный макет и собственное поведение со своими обратными вызовами жизненного цикла, разработчик может 
+ каждый фрагмент определяет собственный макет и собственное поведение со своими обратными вызовами жизненного цикла, разработчик может
 включить один фрагмент в несколько операций. Поэтому он должен предусмотреть повторное использование фрагмента и не допускать,
 чтобы один фрагмент непосредственно манипулировал другим. Это особенно важно, потому что модульность фрагментов
 позволяет изменять их сочетания в соответствии с различными размерами экранов. Если
@@ -335,7 +335,7 @@
   <p>Первый аргумент, передаваемый методу {@link android.app.FragmentTransaction#add(int,Fragment) add()},
 представляет собой контейнерный объект {@link android.view.ViewGroup} для фрагмента, указанный при помощи
 идентификатора ресурса. Второй параметр — это фрагмент, который нужно добавить.</p>
-  <p>Выполнив изменения с помощью 
+  <p>Выполнив изменения с помощью
 {@link android.app.FragmentTransaction}, необходимо
 вызвать метод {@link android.app.FragmentTransaction#commit}, чтобы они вступили в силу.</p>
   </li>
@@ -355,14 +355,14 @@
 android.app.Fragment#onCreateView onCreateView()}. Поэтому в реализации этого метода нет необходимости.</p>
 
 <p>Передача строкового тега свойственна не только фрагментам без пользовательского интерфейса, поэтому можно
-передавать строковые теги и фрагментам, имеющим пользовательский интерфейс. Однако, если у фрагмента нет 
+передавать строковые теги и фрагментам, имеющим пользовательский интерфейс. Однако, если у фрагмента нет
  пользовательского интерфейса, то строковый тег является единственным способом его идентификации. Если впоследствии потребуется получить фрагмент от
 операции, нужно будет вызвать метод {@link android.app.FragmentManager#findFragmentByTag
 findFragmentByTag()}.</p>
 
 <p>Пример операции, использующей фрагмент в качестве фонового потока, без пользовательского интерфейса, приведен в образце кода {@code
-FragmentRetainInstance.java}, входящем в число образцов в SDK (и доступном при помощи 
-Android SDK Manager). Путь к нему в системе — 
+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>
 
 
@@ -378,7 +378,7 @@
   <li>получать фрагменты, имеющиеся в операции, с помощью метода {@link
 android.app.FragmentManager#findFragmentById findFragmentById()} (для фрагментов, предоставляющих пользовательский интерфейс в
  макете операции) или {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (как для фрагментов, имеющих пользовательский интерфейс, так и для фрагментов без него);</li> 
+findFragmentByTag()} (как для фрагментов, имеющих пользовательский интерфейс, так и для фрагментов без него);</li>
   <li>снимать фрагменты со стека переходов назад методом {@link
 android.app.FragmentManager#popBackStack()} (имитируя нажатие кнопки <em>Назад</em> пользователем);</li>
   <li>регистрировать процесс-слушатель изменений в стеке переходов назад при помощи метода {@link
@@ -475,7 +475,7 @@
 <p>Вызов метода {@link android.app.FragmentTransaction#commit()} не приводит к немедленному выполнению
  транзакции. Метод запланирует ее выполнение в потоке пользовательского интерфейса операции (в «главном» потоке), как только
 у потока появится возможность для этого. Впрочем, при необходимости можно вызвать {@link
-android.app.FragmentManager#executePendingTransactions()} из потока пользовательского интерфейса, чтобы 
+android.app.FragmentManager#executePendingTransactions()} из потока пользовательского интерфейса, чтобы
 транзакции, запланированные методом {@link android.app.FragmentTransaction#commit()} были выполнены немедленно. Как правило,
 в этом нет необходимости, за исключением случаев, когда транзакция является зависимостью для заданий в других потоках.</p>
 
@@ -600,7 +600,7 @@
 
 <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>), реализовав 
+<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
@@ -639,7 +639,7 @@
 фрагмента</p>
 </div>
 
-<p>Управление жизненным циклом фрагмента во многом аналогично управлению жизненным циклом операции. Как и 
+<p>Управление жизненным циклом фрагмента во многом аналогично управлению жизненным циклом операции. Как и
 операция, фрагмент может существовать в одном из трех состояний:</p>
 
 <dl>
@@ -677,7 +677,7 @@
 android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} во время транзакции,
 удаляющей фрагмент.</p>
 
-<p>В остальном управление жизненным циклом фрагмента очень похоже на управление жизненным циклом 
+<p>В остальном управление жизненным циклом фрагмента очень похоже на управление жизненным циклом
 операции. Поэтому практические рекомендации по <a href="{@docRoot}guide/components/activities.html#Lifecycle">управлению жизненным циклом
 операций</a> применимы и к фрагментам. При этом разработчику необходимо понимать, как жизненный цикл
 операции влияет на жизненный цикл фрагмента.</p>
@@ -722,7 +722,7 @@
 {@link android.app.Fragment#onActivityCreated onActivityCreated()}.</p>
 
 <p>Когда операция переходит в состояние «возобновлена», можно свободно добавлять в нее фрагменты и удалять
-их. Таким образом, жизненный цикл фрагмента может быть независимо изменен, только пока операция остается 
+их. Таким образом, жизненный цикл фрагмента может быть независимо изменен, только пока операция остается
 в состоянии «возобновлена».</p>
 
 <p>Однако, когда операция выходит из этого состояния, продвижение фрагмента по его
@@ -785,7 +785,7 @@
 
 <p>Второй фрагмент, {@code DetailsFragment}, отображает краткое содержание пьесы, выбранной в
 списке {@code TitlesFragment}:</p>
- 
+
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
 
 <p>Вспомним код класса {@code TitlesFragment}: если пользователь нажимает на пункт списка, а
@@ -798,7 +798,7 @@
 
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
 details_activity}
- 
+
 <p>Обратите внимание, что в альбомной конфигурации эта операция самостоятельно завершается, чтобы главная
 операция могла принять управление и отобразить фрагмент {@code DetailsFragment} рядом с фрагментом{@code TitlesFragment}.
 Это может произойти, если пользователь запустит операцию {@code DetailsActivity} в книжной ориентации экрана, а
diff --git a/docs/html-intl/intl/ru/guide/components/fundamentals.jd b/docs/html-intl/intl/ru/guide/components/fundamentals.jd
index 181cbbd..07f001a 100644
--- a/docs/html-intl/intl/ru/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/ru/guide/components/fundamentals.jd
@@ -165,7 +165,7 @@
 
 <p>Уникальной особенностью системы Android является то, что любое приложение может запустить компонент
 другого приложения. Например, если вы хотите дать пользователю возможность фотографировать, используя
-камеру устройства, то, поскольку наверняка имеется другое приложение, которое может выполнить это действие, вместо того чтобы разработать операцию фотографирования в своем приложении, вы можете вызвать 
+камеру устройства, то, поскольку наверняка имеется другое приложение, которое может выполнить это действие, вместо того чтобы разработать операцию фотографирования в своем приложении, вы можете вызвать
 такое приложение. Вам не
 нужно внедрять код из приложения для камеры или даже устанавливать на него ссылку.
 Вместо этого вы можете просто запустить операцию фотографирования
@@ -212,7 +212,7 @@
 содержит только строку "аккумулятор разряжен").</p>
 
 <p>Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются. Они
-активируются по запросу от {@link android.content.ContentResolver}. Процедура определения 
+активируются по запросу от {@link android.content.ContentResolver}. Процедура определения
  контента (content resolver) обрабатывает все прямые транзакции с поставщиком контента, с тем чтобы этого не пришлось делать компоненту, который
 выполняет транзакции с поставщиком. Вместо этого он вызывает методы для объекта {@link
 android.content.ContentResolver}. Это формирует слой, абстрагирующий (в целях безопасности) поставщика
@@ -224,7 +224,7 @@
 передав объект {@link android.content.Intent} методу {@link android.content.Context#startActivity
 startActivity()} или {@link android.app.Activity#startActivityForResult startActivityForResult()}
 (если требуется, чтобы операция вернула результат).</li>
-  <li>Можно запустить службу (либо выдать работающей службе новые инструкции), 
+  <li>Можно запустить службу (либо выдать работающей службе новые инструкции),
 передав объект {@link android.content.Intent} методу {@link android.content.Context#startService
 startService()}. Либо можно установить привязку к службе, передав объект{@link android.content.Intent} методу
 {@link android.content.Context#bindService bindService()}.</li>
@@ -236,7 +236,7 @@
 android.content.ContentProvider#query query()} для объекта {@link android.content.ContentResolver}.</li>
 </ul>
 
-<p>Подробные сведения об использовании объектов Intent приведены в документе <a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и 
+<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>
@@ -312,7 +312,7 @@
 в манифесте, поэтому они не могут быть запущены.  А вот
 приемники широковещательных сообщений
 можно либо объявить в манифесте, либо создать динамически в коде (как объекты
-{@link android.content.BroadcastReceiver}) и зарегистрировать в системе путем вызова 
+{@link android.content.BroadcastReceiver}) и зарегистрировать в системе путем вызова
 {@link android.content.Context#registerReceiver registerReceiver()}.</p>
 
 <p>Подробные сведения о структуризации файла манифеста для приложения см. в документе <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Файл AndroidManifest.xml</a>
@@ -331,7 +331,7 @@
 действие, и запустить его. При наличии нескольких компонентов, которые могут выполнить действие, описанное в сообщении
 Intent, пользователь выбирает, какой из них будет использоваться.</p>
 
-<p>Система определяет компоненты, которые могут ответить на сообщение Intent, путем сравнения 
+<p>Система определяет компоненты, которые могут ответить на сообщение Intent, путем сравнения
 полученного сообщения Intent с <i>фильтрами объектов Intent,</i> указанными в файле манифеста других приложений, имеющихся
  на устройстве.</p>
 
@@ -373,13 +373,13 @@
 <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> 
+эти параметры следует объявить в файле манифеста в качестве требований следующим образом:</p>
 
 <pre>
 &lt;manifest ... >
@@ -390,7 +390,7 @@
 &lt;/manifest>
 </pre>
 
-<p>Теперь ваше приложение нельзя будет установить из Google Play на устройствах, в которых <em>нет</em> камеры, а также на устройствах, работающих под управлением 
+<p>Теперь ваше приложение нельзя будет установить из Google Play на устройствах, в которых <em>нет</em> камеры, а также на устройствах, работающих под управлением
 Android версии <em>ниже</em> 2.1.</p>
 
 <p>Однако можно также объявить, что приложение использует камеру, но для его работы она не является
@@ -430,7 +430,7 @@
 соответствующем языке.</p>
 
 <p>Android поддерживает разные <em>квалификаторы</em> для соответствующих ресурсов. Квалификатор
- представляет собой короткую строку, которая включается в имена каталогов ресурсов с целью 
+ представляет собой короткую строку, которая включается в имена каталогов ресурсов с целью
 определения конфигурации устройства, для которой эти ресурсы следует использовать. В качестве другого
 примера можно сказать, что для своих операций следует создавать разные макеты, которые будут соответствовать
 размеру и ориентации экрана устройства. Например, когда экран устройства имеет книжную
@@ -469,7 +469,7 @@
   <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-интерфейсам с помощью системы
diff --git a/docs/html-intl/intl/ru/guide/components/index.jd b/docs/html-intl/intl/ru/guide/components/index.jd
index 41d5a34..13050f2 100644
--- a/docs/html-intl/intl/ru/guide/components/index.jd
+++ b/docs/html-intl/intl/ru/guide/components/index.jd
@@ -1,7 +1,7 @@
 page.title=Компоненты приложения
 page.landing=true
-page.landing.intro=Платформа приложений системы Android позволяет создавать функциональные и инновационные приложения с помощью набора компонентов, которые можно использовать многократно. В этом разделе рассказывается о том, как создавать компоненты, определяющие элементы структуры вашего приложения, и как связывать их воедино с помощью объектов Intent. 
-page.metaDescription=Платформа приложений системы Android позволяет создавать функциональные и инновационные приложения с помощью набора компонентов, которые можно использовать многократно. В этом разделе рассказывается о том, как создавать компоненты, определяющие элементы структуры вашего приложения, и как связывать их воедино с помощью объектов Intent. 
+page.landing.intro=Платформа приложений системы Android позволяет создавать функциональные и инновационные приложения с помощью набора компонентов, которые можно использовать многократно. В этом разделе рассказывается о том, как создавать компоненты, определяющие элементы структуры вашего приложения, и как связывать их воедино с помощью объектов Intent.
+page.metaDescription=Платформа приложений системы Android позволяет создавать функциональные и инновационные приложения с помощью набора компонентов, которые можно использовать многократно. В этом разделе рассказывается о том, как создавать компоненты, определяющие элементы структуры вашего приложения, и как связывать их воедино с помощью объектов Intent.
 page.landing.image=images/develop/app_components.png
 page.image=images/develop/app_components.png
 
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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>Для создания быстро реагирующих приложений рекомендуется, чтобы в основном потоке пользовательского интерфейса
@@ -32,7 +32,7 @@
 
   <div class="col-6">
     <h3>Обучение</h3>
-    
+
     <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
       <h4>Управление жизненным циклом операций</h4>
       <p>В этом учебном курсе разъясняются важные методы обратного вызова жизненного цикла, которые получает каждый экземпляр
diff --git a/docs/html-intl/intl/ru/guide/components/loaders.jd b/docs/html-intl/intl/ru/guide/components/loaders.jd
index eea72a2..a554067 100644
--- a/docs/html-intl/intl/ru/guide/components/loaders.jd
+++ b/docs/html-intl/intl/ru/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>Основные классы</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>Образцы кода по теме</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@
 воссоздании после изменения конфигурации. Таким образом, им не требуется повторно запрашивать свои
 данные.</li>
   </ul>
- 
+
 <h2 id="summary">Сводная информация об API-интерфейсе загрузчика</h2>
 
 <p>Имеется несколько классов и интерфейсов, которые могут использовать
@@ -68,7 +68,7 @@
 {@link android.app.Fragment} для управления одним или несколькими интерфейсами {@link
 android.content.Loader}. Это позволяет приложению управлять
 длительно выполняющимися операциями вместе с жизненным циклом {@link android.app.Activity}
-или {@link android.app.Fragment}; чаще всего этот класс используется с 
+или {@link android.app.Fragment}; чаще всего этот класс используется с
 {@link android.content.CursorLoader}, однако приложения могут писать
 свои собственные загрузчики для работы с другими типами данных.
     <br />
@@ -129,10 +129,10 @@
 загрузки данных из другого источника;</li>
   <li>реализация для {@link android.app.LoaderManager.LoaderCallbacks}.
 Именно здесь создаются новые загрузчики и ведется управление ссылками на существующие
-загрузчики;</li> 
+загрузчики;</li>
 <li>способ отображения данных загрузчика, например {@link
 android.widget.SimpleCursorAdapter};</li>
-  <li>источник данных, например {@link android.content.ContentProvider}, когда используется 
+  <li>источник данных, например {@link android.content.ContentProvider}, когда используется
 {@link android.content.CursorLoader}.</li>
 </ul>
 <h3 id="starting">Запуск загрузчика</h3>
@@ -140,11 +140,11 @@
 <p>{@link android.app.LoaderManager} управляет одним или несколькими экземплярами {@link
 android.content.Loader} в {@link android.app.Activity} или
 {@link android.app.Fragment}. Имеется только один {@link
-android.app.LoaderManager} на каждую операцию или каждый фрагмент.</p> 
+android.app.LoaderManager} на каждую операцию или каждый фрагмент.</p>
 
 <p>{@link android.content.Loader} обычно
 инициализируется в методе {@link
-android.app.Activity#onCreate onCreate()} операции или в методе фрагмента 
+android.app.Activity#onCreate onCreate()} операции или в методе фрагмента
 {@link android.app.Fragment#onActivityCreated onActivityCreated()}. Делается
 это следующим образом:</p>
 
@@ -157,13 +157,13 @@
 <ul>
   <li>уникальный идентификатор, обозначающий загрузчик. В данном примере идентификатором является 0;</li>
 <li>необязательные аргументы, которые передаются загрузчику при
-построении (в данном примере это <code>null</code>);</li> 
+построении (в данном примере это <code>null</code>);</li>
 
 <li>реализация {@link android.app.LoaderManager.LoaderCallbacks}, которая
 вызывает класс {@link android.app.LoaderManager} для выдачи событий загрузчика. В данном
 примере локальный класс реализует интерфейс {@link
 android.app.LoaderManager.LoaderCallbacks}, поэтому он передает ссылку
-самому себе: {@code this}.</li> 
+самому себе: {@code this}.</li>
 </ul>
 <p>Вызов {@link android.app.LoaderManager#initLoader initLoader()} обеспечивает инициализацию
 загрузчика. Возможен один из двух результатов:</p>
@@ -193,7 +193,7 @@
 начинает загрузку и заканчивает ее при необходимости, а также поддерживает состояние загрузчика
 и связанного с ним контента. А это подразумевает, что вы будете редко взаимодействовать с загрузчиками
 напрямую (однако пример использования методов загрузчика для тонкой настройки его
-поведения см. в образце кода <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>). 
+поведения см. в образце кода <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>
@@ -343,8 +343,8 @@
 <p>Этот метод вызывается, когда состояние созданного ранее загрузчика сбрасывается, в результате чего
 его данные теряются. Этот обратный вызов позволяет узнать, когда данные
 вот-вот будут высвобождены, с тем чтобы можно было удалить свою ссылку на них.  </p>
-<p>Данная реализация вызывает 
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}  
+<p>Данная реализация вызывает
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
 со значением <code>null</code>:</p>
 
 <pre>
@@ -366,7 +366,7 @@
 android.app.Fragment}, который отображает {@link android.widget.ListView} с
 результатами запроса к поставщику такого контента, как контакты. Для управления запросом к поставщику используется класс {@link
 android.content.CursorLoader}.</p>
- 
+
 <p>Чтобы приложение могло обращаться к контактам пользователя, как показано в этом примере, в его
 манифесте должно присутствовать разрешение
 {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</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
index fd298e0..c9b7dbe 100644
--- a/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
@@ -120,7 +120,7 @@
 
       <ul>
         <li>Он содержит действие {@link android.app.Activity}, которое не находится на переднем плане, но
-видно пользователю (вызван метод {@link android.app.Activity#onPause onPause()}). 
+видно пользователю (вызван метод {@link android.app.Activity#onPause onPause()}).
 Например, это может происходить, если действие на переднем плане запустило диалоговое окно, которое позволяет видеть
 предыдущее действие позади него.</li>
 
@@ -142,7 +142,7 @@
   </li>
 
   <li><b>Фоновый процесс</b>
-    <p>Процесс, содержащий действия, которые не видны пользователю в настоящее время (вызван метод 
+    <p>Процесс, содержащий действия, которые не видны пользователю в настоящее время (вызван метод
 {@link android.app.Activity#onStop onStop()} действия). Эти процессы не оказывают непосредственного
 воздействия на работу пользователя, и система может удалить их в любой момент, чтобы освободить память для
 процессов переднего плана,
@@ -168,7 +168,7 @@
 компонентов, активных в процессе в текущее время.  Например, если процесс содержит служебное и видимое действие,
 процесс считается видимым, а не служебным процессом.</p>
 
-  <p>Кроме того, уровень процесса может быть повышен, поскольку имеются другие процессы, зависимые от него. 
+  <p>Кроме того, уровень процесса может быть повышен, поскольку имеются другие процессы, зависимые от него.
 Например, процесс, обслуживающий другой процесс, не может иметь уровень ниже уровня обслуживаемого
 процесса. Например, если поставщик контента в процессе A обслуживает клиента в процессе B или
 служебный процесс A связан с компонентом в процессе B, процесс A всегда считается не менее
@@ -319,7 +319,7 @@
     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) {
diff --git a/docs/html-intl/intl/ru/guide/components/services.jd b/docs/html-intl/intl/ru/guide/components/services.jd
index 62a6a7e..28e9daa 100644
--- a/docs/html-intl/intl/ru/guide/components/services.jd
+++ b/docs/html-intl/intl/ru/guide/components/services.jd
@@ -291,7 +291,7 @@
   <li>Создает рабочую очередь, которая передает намерения по одному в вашу реализацию метода {@link
 android.app.IntentService#onHandleIntent onHandleIntent()}, поэтому вы не должны беспокоиться
 относительно многопоточности.</li>
-  <li>Останавливает службу после обработки всех запросов запуска, поэтому вам никогда не требуется вызывать 
+  <li>Останавливает службу после обработки всех запросов запуска, поэтому вам никогда не требуется вызывать
 {@link android.app.Service#stopSelf}.</li>
   <li>Предоставляет реализацию метода {@link android.app.IntentService#onBind onBind()} по умолчанию, которая
 возвращает null.</li>
@@ -668,7 +668,7 @@
 уделить пристальное внимание тому, как ваша служба создается и уничтожается, так как служба
 может работать в фоновом режиме без ведома пользователя.</p>
 
-<p>Жизненный цикл службы от создания до уничтожения может следовать двум 
+<p>Жизненный цикл службы от создания до уничтожения может следовать двум
 разным путям:</p>
 
 <ul>
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
index c9fdc0e..8bdb394 100644
--- 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
@@ -29,7 +29,7 @@
 <ol>
   <li><a href="{@docRoot}design/patterns/navigation.html">Дизайн Android:
 навигация</a></li>
-  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Элемент манифеста 
+  <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>
@@ -43,7 +43,7 @@
 Когда пользователь выбирает сообщение, открывается новая операция для просмотра этого сообщения.</p>
 
 <p>Операция может даже запускать операции, существующие в других приложениях на устройстве. Например,
-если ваше приложение хочет отправить сообщение электронной почты, вы можете определить намерение для выполнения 
+если ваше приложение хочет отправить сообщение электронной почты, вы можете определить намерение для выполнения
 действия «отправить» и включить в него некоторые данные, например, адрес электронной почты и текст сообщения. После этого открывается операция из другого
 приложения, которая объявила, что она обрабатывает намерения такого типа. В этом случае намерение состоит в том, чтобы
 отправить сообщение электронной почты, поэтому в приложении электронной почты запускается операция «составить сообщение» (если одно намерение
@@ -127,7 +127,7 @@
 в своем стеке — две операции под текущей операцией. Пользователь нажимает кнопку <em>Домой</em>,
  затем запускает
 новое приложение из средства запуска приложений. Когда появляется главный экран, Задача A переходит
-в фоновый режим. Когда запускается новое приложение, система запускает задачу для этого приложения 
+в фоновый режим. Когда запускается новое приложение, система запускает задачу для этого приложения
 (Задачу B) со своим собственным стеком операций. После взаимодействия с этим
 приложением пользователь снова возвращается на главный экран и выбирает изначально запущенную
 Задачу A. Теперь Задача A переходит на передний
@@ -290,7 +290,7 @@
 
 <p>При объявлении операции в вашем файле манифеста вы можете указать, как операция должна
 быть связана с задачей посредством атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
-launchMode}</a> 
+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
@@ -351,7 +351,7 @@
 имеет задачу, работающую в фоновом режиме, эта задача переводится на передний план для обработки нового
 намерения.</p>
 
-<p>И при запуске операции в новой задаче, и при запуске операции в существующей задаче, 
+<p>И при запуске операции в новой задаче, и при запуске операции в существующей задаче,
  кнопка <em>Назад</em> всегда возвращает пользователя к предыдущей операции. Однако, если вы
 запускаете операцию, которая указывает режим запуска {@code singleTask}, вся задача переводится на передний план, если экземпляр
 этой операции существует в фоновой задаче. В этот момент
@@ -505,7 +505,7 @@
 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>
@@ -526,7 +526,7 @@
 
 <h3 id="Starting">Запуск задачи</h3>
 
-<p>Вы можете сделать операцию точкой входа, назначая ей фильтр намерений со значением 
+<p>Вы можете сделать операцию точкой входа, назначая ей фильтр намерений со значением
 {@code "android.intent.action.MAIN"} в качестве указанного действия и
 {@code "android.intent.category.LAUNCHER"}
 в качестве указанной категории. Например:</p>
diff --git a/docs/html-intl/intl/ru/guide/index.jd b/docs/html-intl/intl/ru/guide/index.jd
index b073272..703700b 100644
--- a/docs/html-intl/intl/ru/guide/index.jd
+++ b/docs/html-intl/intl/ru/guide/index.jd
@@ -4,7 +4,7 @@
 
 
 <div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
-<p>Чтобы узнать, как работают приложения, начните с раздела 
+<p>Чтобы узнать, как работают приложения, начните с раздела
 <a href="{@docRoot}guide/components/fundamentals.html">Основы создания приложений</a>.</p>
 <p>Чтобы сразу приступить к программированию, читайте раздел <a href="{@docRoot}training/basics/firstapp/index.html">Создание первого приложения</a>.</p>
 </div>
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
index f2c5a9e0..63d3a46 100644
--- a/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
@@ -31,27 +31,27 @@
 <li>Он задает имя пакета Java для приложения.
 Это имя пакета служит уникальным идентификатором приложения.</li>
 
-<li>Он описывает компоненты приложения &mdash; операции, 
+<li>Он описывает компоненты приложения &mdash; операции,
 службы, приемники широковещательных сообщений и поставщиков контента, из которых состоит
-приложение.  Он содержит имена классов, которые реализуют каждый компонент, и 
-публикует их возможности (указывает, например, какие сообщения {@link android.content.Intent 
-Intent} они могут принимать).  На основании этих деклараций система Android 
+приложение.  Он содержит имена классов, которые реализуют каждый компонент, и
+публикует их возможности (указывает, например, какие сообщения {@link android.content.Intent
+Intent} они могут принимать).  На основании этих деклараций система Android
 может определить, из каких компонентов состоит приложение и при каких условиях их можно запускать.</li>
 
-<li>Он определяет, в каких процессах будут размещаться компоненты приложения.</li>  
+<li>Он определяет, в каких процессах будут размещаться компоненты приложения.</li>
 
-<li>Он объявляет, какие разрешения должны быть выданы приложению, чтобы оно могло получить 
-доступ к защищенным частям API-интерфейса и взаимодействовать с другими приложениями.</li>  
+<li>Он объявляет, какие разрешения должны быть выданы приложению, чтобы оно могло получить
+доступ к защищенным частям API-интерфейса и взаимодействовать с другими приложениями.</li>
 
-<li>Он также объявляет разрешения, требуемые для 
+<li>Он также объявляет разрешения, требуемые для
 взаимодействия с компонентами данного приложения.</li>
 
-<li>Он содержит список классов {@link android.app.Instrumentation}, которые при выполнении приложения предоставляют 
-сведения о профиле и прочую информацию.  Эти объявления 
-присутствуют в файле манифеста только во время разработки и отладки 
+<li>Он содержит список классов {@link android.app.Instrumentation}, которые при выполнении приложения предоставляют
+сведения о профиле и прочую информацию.  Эти объявления
+присутствуют в файле манифеста только во время разработки и отладки
 приложения и удаляются перед его публикацией.</li>
 
-<li>Он объявляет минимальный уровень API-интерфейса Android, который требуется 
+<li>Он объявляет минимальный уровень API-интерфейса Android, который требуется
 приложению.</li>
 
 <li>Он содержит список библиотек, с которыми должно быть связано приложение.</li>
@@ -61,12 +61,12 @@
 <h2 id="filestruct">Структура файла манифеста</h2>
 
 <p>
-Приведенная далее схема позволяет ознакомиться с общей структурой файла манифеста и 
-всеми элементами, которые могут в нем содержаться.  Каждый элемент вместе со всеми своими 
-атрибутами, полностью описывается в отдельном файле.  Для просмотра подробных 
-сведений о любом элементе, щелкните имя элемента на схеме, 
-в алфавитном списке элементов, приведенном после схемы, или 
-в любом другом месте, где этот элемент упоминается. 
+Приведенная далее схема позволяет ознакомиться с общей структурой файла манифеста и
+всеми элементами, которые могут в нем содержаться.  Каждый элемент вместе со всеми своими
+атрибутами, полностью описывается в отдельном файле.  Для просмотра подробных
+сведений о любом элементе, щелкните имя элемента на схеме,
+в алфавитном списке элементов, приведенном после схемы, или
+в любом другом месте, где этот элемент упоминается.
 </p>
 
 <pre>
@@ -126,9 +126,9 @@
 </pre>
 
 <p>
-Далее приведен список всех элементов, расположенных в алфавитном порядке, которые могут 
+Далее приведен список всех элементов, расположенных в алфавитном порядке, которые могут
 присутствовать в файле манифеста.  Там могут находиться только эти элементы, а никакие другие
-элементы или атрибуты добавлять нельзя.  
+элементы или атрибуты добавлять нельзя.
 </p>
 
 <p style="margin-left: 2em">
@@ -158,74 +158,74 @@
 </p>
 
 
-    
+
 
 <h2 id="filec">Соглашения о компонентах файла</h2>
 
 <p>
-Ко всем элементам и атрибутам 
+Ко всем элементам и атрибутам
 из файла манифеста применяется рад соглашений и правил:
 </p>
 
 <dl>
 <dt><b>Элементы</b></dt>
-<dd>Обязательными 
+<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; хотя по 
-крайней мере некоторые из них нужны, чтобы файл манифеста был сколько-нибудь 
+<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-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>, 
+является исключением из этого правила.  Он должен следовать за элементом
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
 псевдонимом которого он является.)
 </p></dd>
 
 <dt><b>Атрибуты</b></dt>
-<dd>Формально все атрибуты являются необязательными.  Однако некоторые их них 
+<dd>Формально все атрибуты являются необязательными.  Однако некоторые их них
 указывать необходимо, чтобы файл мог выполнять свое предназначение.  В качестве руководства используйте эту
-документацию.  В отношении атрибутов, которые являются и вправду необязательными, в ней указывается значение, 
+документацию.  В отношении атрибутов, которые являются и вправду необязательными, в ней указывается значение,
 используемое по умолчанию, или говорится, что произойдет, если такой атрибут не будет указан.
 
-<p>За исключением некоторых атрибутов корневого элемента 
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
-, имена всех атрибутов должны начинаться с префикса {@code android:} &mdash; 
-например, {@code android:alwaysRetainTaskState}.  Поскольку этот префикс является 
-универсальным, в документации при указании атрибутов по имени 
+<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, в том числе элементы для самого 
-приложения (элемент 
+<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>).  
+) и основных его компонентов &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.Activity}, {@link android.app.Service},
+{@link android.content.BroadcastReceiver} и {@link android.content.ContentProvider}),
+выполняется это с помощью атрибута {@code name}.  В состав имени должно входить
+полное обозначение пакета.
 Например, подкласс {@link android.app.Service} можно объявить следующим образом:
 </p>
 
@@ -239,12 +239,12 @@
 &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> 
-).  Следующее назначение является таким же, как приведенное выше: 
+Однако его можно укоротить. Если первым символом в строке указать точку, эта
+строка будет добавляться к имени пакета приложения (указанного атрибутом
+<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;
@@ -257,13 +257,13 @@
 &lt;/manifest&gt;</pre>
 
 <p>
-При запуске компонента Android создает экземпляр подкласса, указанного по имени.  
+При запуске компонента Android создает экземпляр подкласса, указанного по имени.
 Если подкласс не указан, система создает экземпляр базового класса.
 </p></dd>
 
 <dt><b>Несколько значений</b></dt>
-<dd>Если можно указать несколько значений, элемент почти всегда 
-приводится повторно. Делается это вместо перечисления нескольких значений в одном элементе.  
+<dd>Если можно указать несколько значений, элемент почти всегда
+приводится повторно. Делается это вместо перечисления нескольких значений в одном элементе.
 Например, в фильтре Intent может быть перечислено несколько действий:
 
 <pre>&lt;intent-filter . . . &gt;
@@ -274,24 +274,24 @@
 &lt;/intent-filter&gt;</pre></dd>
 
 <dt><b>Значения ресурсов</b></dt>
-<dd>Значения некоторых атрибутов могут отображаться на экране &mdash; например, 
-метка и значок операции.  Значения этих атрибутов 
-следует локализовать, поэтому они должны задаваться в ресурсе или теме.  Значения 
+<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> это имя, определяющее ресурс.  
+где <i>имя пакета</i> можно опустить, если ресурс находится в одном пакете
+с приложением, <i>тип —</i> это тип ресурса, &mdash; например "string" или
+"drawable", &mdash; а <i>имя —</i> это имя, определяющее ресурс.
 Например:
 </p>
 
 <pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
 
 <p>
-Значения из темы выражаются схожим образом, только в начале у них идет "{@code ?}", 
+Значения из темы выражаются схожим образом, только в начале у них идет "{@code ?}",
 а не "{@code @}":
 </p>
 
@@ -299,8 +299,8 @@
 </p></dd>
 
 <dt><b>Строковые значения</b></dt>
-<dd>Когда значением атрибута является строка, следует использовать двойную обратную косую черту ("{@code \\}") 
-для выделения управляющей последовательности символов, &mdash; например "{@code \\n}" для 
+<dd>Когда значением атрибута является строка, следует использовать двойную обратную косую черту ("{@code \\}")
+для выделения управляющей последовательности символов, &mdash; например "{@code \\n}" для
 новой строки или "{@code \\uxxxx}" для символа Юникода.</dd>
 </dl>
 
@@ -308,7 +308,7 @@
 <h2 id="filef">Отображение функций в файле</h2>
 
 <p>
-В следующих разделах описано, как некоторые функции Android отображаются 
+В следующих разделах описано, как некоторые функции Android отображаются
 в файле манифеста.
 </p>
 
@@ -316,37 +316,37 @@
 <h3 id="ifs">Фильтры объектов Intent</h3>
 
 <p>
-Базовые компоненты приложения (его операции, службы и 
-приемники широковещательных сообщений) активируются <i>объектами Intent</i>.  Intent — 
-это совокупность информации (объект {@link android.content.Intent}), описывающей 
-требуемое действие, &mdash; в том числе в ней указаны данные, с которыми следует выполнить это действие, категория 
-компонентов, которые должны выполнять это действие, и другие уместные инструкции.  
-Система Android находит компонент, который отреагирует на объект Intent, запускает 
-новый экземпляр компонента, если он требуется, и передает ему 
+Базовые компоненты приложения (его операции, службы и
+приемники широковещательных сообщений) активируются <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> 
-.  Компонент может иметь любое количество фильтров, каждый из которых описывает 
+Компоненты объявляют свои возможности &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, в котором имя целевого 
-компонента не указано, может активировать компонент, только если он может пройти через один из фильтров 
+Объект Intent, в котором целевой компонент явно указан по имени, активирует этот компонент,
+и фильтр при этом не учитывается.  Но объект Intent, в котором имя целевого
+компонента не указано, может активировать компонент, только если он может пройти через один из фильтров
 компонента.
 </p>
 
 <p>
-Сведения о том, каким образом объекты Intent проверяются по фильтрам Intent, 
-см. в отдельном документе 
-<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent 
+Сведения о том, каким образом объекты Intent проверяются по фильтрам Intent,
+см. в отдельном документе
+<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent
 и фильтры объектов Intent</a>.
 </p>
 
@@ -354,42 +354,42 @@
 <h3 id="iconlabel">Значки и метки</h3>
 
 <p>
-У ряда элементов есть атрибуты {@code icon} и {@code label} для 
-небольшого значка и текстовой метки, которые могут отображаться на экране.  У некоторых из них также есть атрибут 
-{@code description} для более длинного описательного текста, который также может 
-отображаться на экране.  Например, элемент 
+У ряда элементов есть атрибуты {@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 — нет, 
-метка приложения будет считаться меткой и для операции, и для 
+В любом случае значок и метка, заданные в элементе-контейнере, становятся параметрами
+{@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, используются для обозначения компонента, 
+Значок и метка, заданные для фильтра Intent, используются для обозначения компонента,
 когда он представляется пользователю, для указания функции,
-которую анонсирует фильтр.  Например, фильтр с параметрами 
-"{@code android.intent.action.MAIN}" и 
-"{@code android.intent.category.LAUNCHER}" сообщает, что эта операция 
+которую анонсирует фильтр.  Например, фильтр с параметрами
+"{@code android.intent.action.MAIN}" и
+"{@code android.intent.category.LAUNCHER}" сообщает, что эта операция
 инициирует приложение, &mdash; то есть он обозначает ее как
- операцию, которая должна быть отображена в средстве запуска приложений.  Отсюда следует, что значок и метка, 
+ операцию, которая должна быть отображена в средстве запуска приложений.  Отсюда следует, что значок и метка,
 заданные в фильтре, отображаются в средстве запуска.
 </p>
 
@@ -397,14 +397,14 @@
 <h3 id="perms">Разрешения</h3>
 
 <p>
-Разрешение <i>представляет</i> собой ограничение на доступ к части кода 
-или к данным, имеющимся на устройстве.   Это ограничение накладывается для защиты важных 
-данных и кода, ненадлежащее использование которых может пагубно сказаться на работе приложения.  
+Разрешение <i>представляет</i> собой ограничение на доступ к части кода
+или к данным, имеющимся на устройстве.   Это ограничение накладывается для защиты важных
+данных и кода, ненадлежащее использование которых может пагубно сказаться на работе приложения.
 </p>
 
 <p>
-Каждое разрешение обозначается уникальной меткой.  Зачастую метка обозначает 
-действие, выполнение которого ограничивается.  Например, вот некоторые разрешения, определенные 
+Каждое разрешение обозначается уникальной меткой.  Зачастую метка обозначает
+действие, выполнение которого ограничивается.  Например, вот некоторые разрешения, определенные
 системой Android:
 </p>
 
@@ -418,25 +418,25 @@
 </p>
 
 <p>
-Если приложению требуется доступ к функции, защищенной разрешением, 
-оно должно объявить, что ему необходимо это разрешение, с помощью элемента 
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
-в файле манифеста.  Затем, когда приложение устанавливается на 
-устройство, установщик определяет, выдать ли запрошенное 
-разрешение, проверяя полномочия органов, подписавших сертификаты 
-приложения, а также, в некоторых случаях, спрашивая об этом пользователя.  
-Если разрешение предоставляется, приложение сможет использовать защищенные 
+Если приложению требуется доступ к функции, защищенной разрешением,
+оно должно объявить, что ему необходимо это разрешение, с помощью элемента
+<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}) или объявленные 
-другими приложениями.  Либо оно может определить разрешения самостоятельно.  Новое разрешение объявляется 
-с помощью элемента 
+Приложение также может защищать с помощью разрешений собственные компоненты (операции, службы,
+приемники широковещательных сообщений и поставщиков контента).  Оно может использовать
+любые разрешения, определенные системой Android (они приведены в объекте
+{@link android.Manifest.permission android.Manifest.permission}) или объявленные
+другими приложениями.  Либо оно может определить разрешения самостоятельно.  Новое разрешение объявляется
+с помощью элемента
 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
 .  Например, операцию можно защитить следующим образом:
 </p>
@@ -457,43 +457,43 @@
 </pre>
 
 <p>
-Обратите внимание, что в этом примере разрешение {@code DEBIT_ACCT} не только 
-объявляется с помощью элемента 
+Обратите внимание, что в этом примере разрешение {@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 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>. 
+.  Однако все равно нужно было бы запрашивать его использование с помощью
+<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-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> 
+атрибуту
+<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>
 
@@ -501,17 +501,17 @@
 <h3 id="libs">Библиотеки</h3>
 
 <p>
-Каждое приложение связывается с используемой по умолчанию библиотекой Android, в которой 
-имеются базовые пакеты для построения приложений (со стандартными классами, 
-например Activity, Service, Intent, View, Button, Application, ContentProvider 
+Каждое приложение связывается с используемой по умолчанию библиотекой 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> 
-для указания имени каждой библиотеки.  (Имя библиотеки можно найти в 
+Однако некоторые пакеты находятся в собственных библиотеках.  Если ваше приложение
+использует код из одного из таких пакетов, оно должно в явном виде потребовать, чтобы его связали
+с этим пакетом.  Файл манифеста должен содержать отдельный элемент
+<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
index 2d12e12..3533ad0 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@
       <li><a href="#intent-view">Использование намерения для просмотра данных календаря</a></li>
     </ol>
   </li>
-  
+
   <li><a href="#sync-adapter">Адаптеры синхронизации</a></li>
 </ol>
 
@@ -113,26 +113,26 @@
   </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>В этой таблице содержатся данные о времени
 начала и окончания каждого повторения события. В каждой строке этой таблицы
 представлено одно повторение события. Однократные события сопоставляются с повторениями
@@ -141,7 +141,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Attendees}</td>
-    
+
     <td>В этой таблице находится
 информация об участниках (гостях). В каждой строке этой таблицы указан один
 гость. В ней указываются тип гостя и информация о том,
@@ -149,7 +149,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Reminders}</td>
-    
+
     <td>В этой таблице находятся
 данные уведомлений или оповещений. В каждой строке этой таблицы указано одно уведомление или оповещение. Для одного
 события можно создать несколько напоминаний. Максимальное количество таких напоминаний для события
@@ -159,7 +159,7 @@
 указанным календарем. Напоминания задаются в минутах до начала события и
 имеют метод, который определяет порядок уведомления пользователя.</td>
   </tr>
-  
+
 </table>
 
 <p>API поставщика календаря обеспечивает достаточную гибкость и эффективность. В то же время
@@ -211,7 +211,7 @@
 
 <p>В таблице {@link android.provider.CalendarContract.Calendars} содержатся подробные сведения
 о каждом отдельном календаре. Выполнять запись в указанные ниже столбцы
-этой таблицы могут и приложение, и <a href="#sync-adapter">адаптер синхронизации</a>. 
+этой таблицы могут и приложение, и <a href="#sync-adapter">адаптер синхронизации</a>.
 Полный список поддерживаемых полей представлен в справке по классу
 {@link android.provider.CalendarContract.Calendars}.</p>
 <table>
@@ -229,7 +229,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-    
+
     <td>Логическое значение, обозначающее, выбран ли календарь для отображения. Значение
 «0» указывает на то, что события, связанные с
 этим календарем, не отображаются.  Значение «1» указывает на то, что события, связанные с
@@ -240,7 +240,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-    
+
     <td>Логическое значение, обозначающее, следует ли синхронизировать календарь и хранить имеющиеся в нем события
 на устройстве. Значение «0» указывает, что не следует синхронизировать этот календарь или
 хранить имеющиеся в нем события на устройстве.  Значение «1» указывает, что этот календарь следует синхронизировать и
@@ -268,13 +268,13 @@
     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
@@ -289,7 +289,7 @@
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}. Он используется для календарей,
 которые не связаны с аккаунтом устройства. Аккаунты {@link
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} не
-синхронизируются.</p> </div> </div> 
+синхронизируются.</p> </div> </div>
 
 
 <p> В следующей части примера создается запрос. С помощью выбора определяются
@@ -308,38 +308,38 @@
 <pre>// Run query
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;   
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+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. 
+        "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
@@ -350,7 +350,7 @@
 либо в качестве первого элемента выделения. Выделение
 должно начинаться с <code>&quot;_id=?&quot;</code>, а первым аргументом
 <code>selectionArg</code> должен быть {@link
-android.provider.BaseColumns#_ID} календаря. 
+android.provider.BaseColumns#_ID} календаря.
 Также для выполнения обновлений можно закодировать идентификатор в URI. В этом примере для
 изменения отображаемого имени календаря используется
 подход
@@ -387,7 +387,7 @@
 в <a href="#manifest">файл манифеста</a>
 приложения необходимо включить разрешение {@link android.Manifest.permission#WRITE_CALENDAR}.</p>
 
-<p>Выполнять запись в указанные ниже столбцы этой таблицы могут и приложение, и 
+<p>Выполнять запись в указанные ниже столбцы этой таблицы могут и приложение, и
 адаптер синхронизации. Полный список поддерживаемых полей представлен в справке по классу {@link
 android.provider.CalendarContract.Events}.</p>
 
@@ -434,7 +434,7 @@
   </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> указывает на продолжительность
@@ -444,39 +444,39 @@
   </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>Даты повторения события. 
+    <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>
@@ -514,11 +514,11 @@
 вставке события с помощью намерения {@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
@@ -528,7 +528,7 @@
 случае можно использовать {@link
 android.provider.CalendarContract.EventsColumns#RRULE} в сочетании с {@link android.provider.CalendarContract.EventsColumns#DTSTART} и {@link android.provider.CalendarContract.EventsColumns#DTEND}; кроме того, приложение «Календарь»
  автоматически преобразует указанный период в продолжительность.</li>
-  
+
 </ul>
 
 <p>Ниже представлен пример вставки события. Для простоты все это выполняется в потоке
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -625,7 +625,7 @@
 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);  
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
 </pre>
 
 <h2 id="attendees">Таблица участников</h2>
@@ -634,10 +634,10 @@
 указан один участник или гость события. При вызове метода
 {@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.CalendarContract.AttendeesColumns#EVENT_ID}
 должен соответствовать {@link
-android.provider.BaseColumns#_ID} определенного события.</p> 
+android.provider.BaseColumns#_ID} определенного события.</p>
 
 <p>В таблице ниже указаны
 поля, доступные для записи. При вставке нового участника необходимо указать все эти поля, кроме
@@ -720,7 +720,7 @@
 <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>
 
 
@@ -780,9 +780,9 @@
 возможность запрашивать повторения событий. </p>
 
 <p>В таблице ниже перечислены некоторые из полей, которые можно запросить для экземпляра. Обратите внимание,
-что часовой пояс задается параметрами 
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 
-и 
+что часовой пояс задается параметрами
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+и
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
 
 
@@ -801,18 +801,18 @@
   </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>
@@ -820,27 +820,27 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>День начала экземпляра по юлианскому календарю относительно часового пояса приложения «Календарь». 
+    <td>День начала экземпляра по юлианскому календарю относительно часового пояса приложения «Календарь».
  </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-    
+
     <td>Минута начала экземпляра, вычисленная от полуночи по часовому поясу
-приложения «Календарь». 
+приложения «Календарь».
 </td>
-    
+
   </tr>
 
 </table>
 
 <h3 id="query-instances">Запрос таблицы экземпляров</h3>
 
-<p>Чтобы запросить таблицу экземпляров, необходимо указать промежуток времени для запроса в 
+<p>Чтобы запросить таблицу экземпляров, необходимо указать промежуток времени для запроса в
 URI. В этом примере {@link android.provider.CalendarContract.Instances}
 получает доступ к полю {@link
 android.provider.CalendarContract.EventsColumns#TITLE} посредством своей реализации
-интерфейса {@link android.provider.CalendarContract.EventsColumns}. 
+интерфейса {@link android.provider.CalendarContract.EventsColumns}.
 Другими словами, {@link
 android.provider.CalendarContract.EventsColumns#TITLE}
 возвращается посредством обращения к базе данных, а не путем запроса таблицы {@link
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -923,8 +923,8 @@
     {@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>. 
+{@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>
@@ -935,11 +935,11 @@
 
      </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}. 
+{@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>
 
@@ -952,12 +952,12 @@
   <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}. 
+{@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>
 
@@ -972,11 +972,11 @@
     <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}. 
+{@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>
@@ -996,7 +996,7 @@
     <td>Название события.</td>
   </tr>
   <tr>
-  
+
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
 CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
     <td>Время начала события (в миллисекундах) от эпохи.</td>
@@ -1004,25 +1004,25 @@
   <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>В разделах ниже указан порядок использования этих намерений.</p>
 
 
@@ -1059,14 +1059,14 @@
 Благодаря этому в <a href="#manifest">файл манифеста</a> вашего приложения не нужно включать разрешение {@link
 android.Manifest.permission#WRITE_CALENDAR}.</p>
 
-  
+
 <p>Когда пользователи работают с приложением, в котором используется такой подход, приложение отправляет
 их в «Календарь» для завершения добавления события. Намерение {@link
 android.content.Intent#ACTION_INSERT INSERT} использует дополнительные поля
 для предварительного указания в форме сведений о событии в приложении «Календарь». После этого пользователи
 могут отменить событие, отредактировать форму или сохранить событие в своем
 календаре.</p>
-  
+
 
 
 <p>Ниже представлен фрагмент кода, в котором на 19 января 2012 г. планируется событие, которое будет проходить с
@@ -1075,7 +1075,7 @@
 <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
@@ -1083,10 +1083,10 @@
 CalendarContract.EXTRA_EVENT_END_TIME} для предварительного указания в форме
 сведений о времени события. Значения времени должны быть указаны в формате UTC и в миллисекундах от
 эпохи.</li>
-  
+
   <li>В нем используется дополнительное поле {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
 для предоставления списка участников, разделенных запятыми (их адреса эл. почты).</li>
-  
+
 </ul>
 <pre>
 Calendar beginTime = Calendar.getInstance();
@@ -1158,12 +1158,12 @@
 
 <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>Адаптер синхронизации имеет доступ на запись к большему числу столбцов, чем приложение или виджет.
   Например, приложение может изменять только некоторые характеристики календаря,
 такие как название, отображаемое имя, настройки видимости и
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
index 4d07856..151f75b 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
@@ -467,7 +467,7 @@
 </p>
 <p>
     При добавлении нового необработанного контакта,
-который не соответствует ни одному из существующих контактов, поставщик контактов создает новый контакт. Поставщик поступает аналогично в случае, если 
+который не соответствует ни одному из существующих контактов, поставщик контактов создает новый контакт. Поставщик поступает аналогично в случае, если
 данные в строке существующего необработанного контакта изменяются таким образом, что они больше не соответствуют контакту,
 с которым они ранее были связаны. При создании приложением или адаптером синхронизации нового контакта,
 который <em></em> соответствует существующему контакту, то новый контакт объединяется с
@@ -543,7 +543,7 @@
 </p>
 <p>
     Если необходимо передать данные из службы в поставщик контактов, необходимо создать
-собственный адаптер синхронизации. Дополнительные сведения об этом представлены в разделе 
+собственный адаптер синхронизации. Дополнительные сведения об этом представлены в разделе
 <a href="#SyncAdapters">Адаптеры синхронизации поставщика контактов</a>.
 </p>
 <p>
@@ -672,7 +672,7 @@
 Android.
             <p>
                 Адаптеры синхронизации, которые вносят изменения в необработанные контакты или таблицы данных, должны всегда добавлять к используемому ими URI
-контента строку 
+контента строку
 {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}. Это позволяет предотвратить пометку таких строк поставщиком как «грязных».
                 В противном случае изменения, внесенные адаптером синхронизации, будут рассматриваться как локальные изменения,
 которые подлежат отправке на сервер, даже если источником таких изменений был сам сервер.
@@ -1809,7 +1809,7 @@
                 <li>
                     <strong>Необязательно:</strong> элемент
 <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
-для структуры проверки подлинности указывает на файл XML 
+для структуры проверки подлинности указывает на файл XML
 <code>res/xml/authenticator.xml</code>. В свою очередь, в этом файле задается
 тип аккаунта, который поддерживает структура проверки подлинности, а также ресурсы пользовательского интерфейса,
 которые отображаются в процессе аутентификации. Тип аккаунта, указанный в этом
@@ -2022,7 +2022,7 @@
     </ul>
 <p>
     Регулярная синхронизация элементов потока с помощью поставщика контактов выполняется так же,
-как и любая другая синхронизация. Дополнительные сведения о синхронизации представлены в разделе 
+как и любая другая синхронизация. Дополнительные сведения о синхронизации представлены в разделе
 <a href="#SyncAdapters">Адаптеры синхронизации поставщика контактов</a>. Регистрация уведомлений
 и приглашение контактов рассматриваются в следующих двух разделах.
 </p>
@@ -2092,7 +2092,7 @@
 <h4>Взаимодействие со службой социальной сети</h4>
 <p>
     Пользователям не обязательно выходить из приложения для работы с контактами, которое имеется на устройстве, чтобы пригласить контакт на сайт
-социальной сети. Вместо этого приложение для работы с контактами может отправить намерение для приглашения 
+социальной сети. Вместо этого приложение для работы с контактами может отправить намерение для приглашения
 контакта в одну из ваших операций. Для этого выполните указанные ниже действия.
 </p>
 <ol>
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
index c912dbc..4d520e8 100644
--- 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
@@ -251,7 +251,7 @@
 </pre>
 <p>
     В таблице 2 указано соответствие аргументов для метода
-{@link android.content.ContentResolver#query 
+{@link android.content.ContentResolver#query
 query(Uri,projection,selection,selectionArgs,sortOrder)} SQL-инструкции SELECT.
 </p>
 <p class="table-caption">
@@ -701,7 +701,7 @@
 для вставки, обновления или удаления данных.
 </p>
 <p>
-    Чтобы получить разрешения, необходимые для доступа к поставщику, приложение запрашивает их с помощью элемента 
+    Чтобы получить разрешения, необходимые для доступа к поставщику, приложение запрашивает их с помощью элемента
 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
 в файле манифеста. При установке менеджером пакетов Android приложения пользователю необходимо
 утвердить все разрешения, запрашиваемые приложением. В случае утверждения всех разрешений
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
index d8f7873..d669757 100644
--- 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
@@ -485,7 +485,7 @@
 <h3 id="RequiredAccess">Необходимые методы</h3>
 <p>
     В абстрактном классе {@link android.content.ContentProvider} определены шесть абстрактных методов,
-которые необходимо реализовать в рамках вашего собственного конкретного подкласса. Все указанные ниже методы, кроме 
+которые необходимо реализовать в рамках вашего собственного конкретного подкласса. Все указанные ниже методы, кроме
 {@link android.content.ContentProvider#onCreate() onCreate()}, вызываются клиентским приложением,
 которое пытается получить доступ к вашему поставщику контента.
 </p>
@@ -777,7 +777,7 @@
 <p>
     Для общих типов данных, таких как текст, HTML или JPEG, метод
 {@link android.content.ContentProvider#getType(Uri) getType()} должен возвращать стандартный тип
-MIME. Полный список стандартных типов представлен на 
+MIME. Полный список стандартных типов представлен на
 веб-сайте
 <a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>.
 </p>
@@ -870,8 +870,8 @@
 <p>
     Класс-контракт представляет собой класс <code>public final</code>, в котором содержатся определения констант для
 URI, имен столбцов, типов MIME и других метаданных поставщика. Класс
-устанавливает контрактные отношения между поставщиком и другими приложениями путем обеспечения 
-прямого доступа к поставщику даже в случае изменения фактических значений URI, имен столбцов и 
+устанавливает контрактные отношения между поставщиком и другими приложениями путем обеспечения
+прямого доступа к поставщику даже в случае изменения фактических значений URI, имен столбцов и
 т. д.
 </p>
 <p>
@@ -928,7 +928,7 @@
 <h3>Реализация разрешений</h3>
 <p>
     Любое приложение может выполнять чтение данных в поставщике или записывать их, даже если соответствующие данные
-являются закрытыми, поскольку по умолчанию для поставщика не заданы разрешения. Чтобы изменить эти настройки, 
+являются закрытыми, поскольку по умолчанию для поставщика не заданы разрешения. Чтобы изменить эти настройки,
 задайте разрешения для поставщика в файле манифеста с помощью атрибутов элемента
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
     &lt;provider&gt;</a></code> или его дочерних элементов. Можно задать разрешения, которые применяются ко всему поставщику
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
index c594968..c394e60 100644
--- a/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
@@ -567,7 +567,7 @@
 <li>Атрибут <code>android:exported</code>, установленный в значение <code>&quot;true&quot;</code>.
  Необходимо экспортировать поставщик, чтобы он был виден другим приложениям.</li>
 
-<li>Атрибут <code>android:grantUriPermissions</code>, установленный в значение 
+<li>Атрибут <code>android:grantUriPermissions</code>, установленный в значение
 <code>&quot;true&quot;</code>. Этот параметр позволяет системе предоставлять другим приложениям доступ
 к контенту поставщика. Обсуждение того, как следует удерживать права доступа
 к конкретному документу см. в разделе <a href="#permissions">Удержание прав доступа</a>.</li>
@@ -776,7 +776,7 @@
 
 <h4 id="queryChildDocuments">Реализация метода queryChildDocuments</h4>
 
-<p>Реализация метода 
+<p>Реализация метода
 {@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
 должна возвращать объект{@link android.database.Cursor}, указывающий на все файлы в
 заданном каталоге, используя столбцы, определенные в
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
index 3d59ceb..ccb7ad8 100644
--- a/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
@@ -209,7 +209,7 @@
 <ul>
   <li>{@code &lt;package_name&gt;} — это имя пакета, в котором находится ресурс (не
 требуется при создании ссылок на ресурсы из одного и того же пакета).</li>
-  <li>{@code &lt;resource_type&gt;} — это подкласс 
+  <li>{@code &lt;resource_type&gt;} — это подкласс
 {@code R} для типа ресурса.</li>
   <li>{@code &lt;resource_name&gt;} — это либо имя файла
 ресурса (без расширения), либо значение атрибута {@code android:name} в элементе XML (для простых
@@ -222,7 +222,7 @@
 
 <h3>Примеры использования</h3>
 
-<p>В некоторых случаях ресурс необходимо использовать в качестве значения в элементе XML (например, чтобы применить графическое изображение к 
+<p>В некоторых случаях ресурс необходимо использовать в качестве значения в элементе XML (например, чтобы применить графическое изображение к
 виджету), однако вы также можете использовать ресурс в любом фрагменте XML, где ожидается простое значение. Например,
 если имеется следующий файл ресурса, включающий <a href="more-resources.html#Color">цветовой ресурс</a> и <a href="string-resource.html">строковый ресурс</a>:</p>
 
@@ -260,13 +260,13 @@
 </pre>
 
 <p class="note"><strong>Примечание.</strong> Всегда используйте строковые ресурсы,
-поскольку ваше приложение может потребоваться перевести на другие языки. 
+поскольку ваше приложение может потребоваться перевести на другие языки.
 Сведения о создании альтернативных
 ресурсов (например, локализованных строк) представлены в разделе <a href="providing-resources.html#AlternativeResources">Предоставление альтернативных
 ресурсов</a>. В разделе <a href="localization.html">Локализация</a> приведено полное руководство по локализации
 приложения.</p>
 
-<p>Вы даже можете использовать ресурсы в XML для создания псевдонимов. Например, можно создать 
+<p>Вы даже можете использовать ресурсы в XML для создания псевдонимов. Например, можно создать
 элемент дизайна, который будет служить псевдонимом для другого элемента дизайна:</p>
 
 <pre>
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
index be0af95..6a287b8 100644
--- a/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
@@ -495,7 +495,7 @@
 экрану VGA средней плотности.
         Минимальный размер макета для большого экрана составляет приблизительно 480x640 пикселов.
         Примерами являются экраны VGA и WVGA средней плотности.</li>
-        <li>{@code xlarge}: Экраны значительно крупнее обычного 
+        <li>{@code xlarge}: Экраны значительно крупнее обычного
 экрана HVGA средней плотности. Минимальный размер макета для очень большого экрана составляет
 приблизительно 720x960 пикселов.  В большинстве случаев устройства с очень большими
 экранами слишком велики для карманного использования и, скорее всего,
@@ -510,7 +510,7 @@
 аварийно завершится во время выполнения (например, если все ресурсы макета отмечены квалификатором {@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}, которое
@@ -1088,7 +1088,7 @@
 чем число квалификаторов, которые точно соответствуют устройству. Например, на шаге 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
index 5dc59c8..5133751 100644
--- a/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
@@ -125,7 +125,7 @@
 означает, что приложение удерживает их, и система не может очистить от них память, поэтому
 может теряться значительный объем памяти).</p>
 
-<p>Затем используйте {@link android.app.FragmentManager} для добавления фрагмента в операцию. 
+<p>Затем используйте {@link android.app.FragmentManager} для добавления фрагмента в операцию.
 Можно получить объект данных из фрагмента, когда операция повторно запускается в результате изменения конфигурации
 в режиме выполнения. В качестве примера операция определена следующим образом:</p>
 
@@ -168,7 +168,7 @@
 <p>В этом примере {@link android.app.Activity#onCreate(Bundle) onCreate()} добавляет фрагмент
 или восстанавливает ссылку на него. Метод {@link android.app.Activity#onCreate(Bundle) onCreate()} также
 хранит объект, сохраняющий состояние, внутри экземпляра фрагмента.
-Метод {@link android.app.Activity#onDestroy() onDestroy()} обновляет объект, сохраняющий состояние, внутри 
+Метод {@link android.app.Activity#onDestroy() onDestroy()} обновляет объект, сохраняющий состояние, внутри
 сохраненного экземпляра фрагмента.</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
index 62f4c76..7e15a72 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <tr>
         <td><a href="controls/radiobutton.html">Переключатель</a></td>
         <td>Этот элемент управления аналогичен флажку, за исключением того, что в группе элементов можно выбрать только один вариант.</td>
-	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 71428f6..b5db656 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
@@ -219,9 +219,9 @@
 <p>Как правило, не рекомендуется задавать абсолютные значения ширины и высоты макета
 (например, в пикселах). Вместо этого используйте относительные единицы измерения, такие как
 пикселы, не зависящие от разрешения экрана (<var>dp</var>), <var>wrap_content</var>или
-<var>match_parent</var>Это гарантирует одинаковое отображение 
+<var>match_parent</var>Это гарантирует одинаковое отображение
 вашего приложения на устройствах с экранами разных размеров.
-Принятые типы измерения определены в 
+Принятые типы измерения определены в
 документе
 <a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">Доступные ресурсы</a>.</p>
 
@@ -325,7 +325,7 @@
 Android.</p>
 
 <p class="note"><strong>Примечание.</strong> Несмотря на то, что для формирования пользовательского интерфейса один
-макет может содержать один или несколько вложенных макетов, рекомендуется использовать как можно более простую 
+макет может содержать один или несколько вложенных макетов, рекомендуется использовать как можно более простую
 иерархию макетов. Чем меньше в макете вложенных элементов, тем быстрее выполняется его отрисовка (горизонтальная иерархия
 представлений намного лучше вертикальной).</p>
 
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
index 515ecc6..7e5d908 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -235,8 +235,8 @@
 </pre>
 
 <p>Методы <code>set...Button()</code> предполагают заголовок для кнопки (реализуемый
-через <a href="{@docRoot}guide/topics/resources/string-resource.html">строковый ресурс</a>) и 
-{@link android.content.DialogInterface.OnClickListener}, который определяет действие, 
+через <a href="{@docRoot}guide/topics/resources/string-resource.html">строковый ресурс</a>) и
+{@link android.content.DialogInterface.OnClickListener}, который определяет действие,
 следующее за нажатием кнопки пользователем.</p>
 
 <p>Реализована возможность добавлять три различных вида кнопок действий:</p>
@@ -248,7 +248,7 @@
   <dt>Нейтральные</dt>
   <dd>Используются в случаях, когда пользователь может не желать продолжить действие,
   но при этом необязательно хочет его отменить. Появляется между положительными и отрицательнымиI
-  кнопками. Примером такого действия может быть «Напомнить позже».</dd> 
+  кнопками. Примером такого действия может быть «Напомнить позже».</dd>
 </dl>
 
 <p>Можно добавлять только одну кнопку каждого вида в {@link
@@ -271,7 +271,7 @@
 <li>Интерактивный список с выбором нескольких вариантов (флажки)</li>
 </ul>
 
-<p>Для создания списка с выбором одного варианта, как на рисунке 3, 
+<p>Для создания списка с выбором одного варианта, как на рисунке 3,
 используйте метод{@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
 
 <pre style="clear:right">
@@ -289,9 +289,9 @@
 }
 </pre>
 
-<p>Поскольку список отображается в области содержимого диалогового окна, 
+<p>Поскольку список отображается в области содержимого диалогового окна,
 диалоговое окно не может показать одновременно сообщение и список, поэтому необходимо задать заголовок
-диалогового окна с помощью {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+диалогового окна с помощью {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
 Для указания элементов списка необходимо вызвать {@link
 android.app.AlertDialog.Builder#setItems setItems()}, передающий указатель.
 В качестве другого варианта можно указать список с помощью {@link
@@ -320,8 +320,8 @@
 <p>Для добавления списка с несколькими вариантами ответов (флажки) или
 списка с одним вариантом ответа (переключатели) используйте методы
 {@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} или 
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} или
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} соответственно.</p>
 
 <p>Например, таким образом можно создать список с несколькими вариантами ответов, как на
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -371,9 +371,9 @@
 }
 </pre>
 
-<p>Несмотря на то, что и традиционный список, и список с переключателями 
+<p>Несмотря на то, что и традиционный список, и список с переключателями
 предполагают действие по выбору одного элемента, вам необходимо использовать {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()}, чтобы сохранить выбор пользователя.
 Это значит, что при повторном открытии диалогового окна будет отображаться текущий выбор пользователя,
 а затем создается список с переключателями.</p>
@@ -442,7 +442,7 @@
 одинаковые стили шрифта.</p>
 
 <p>Для применения макета в вашем {@link android.support.v4.app.DialogFragment}
-вам понадобится {@link android.view.LayoutInflater} с 
+вам понадобится {@link android.view.LayoutInflater} с
 {@link android.app.Activity#getLayoutInflater()} и вызов
 {@link android.view.LayoutInflater#inflate inflate()}, где первым параметром будет являться
 ID ресурса макета, а вторым параметром — исходный вид макета.
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -638,7 +638,7 @@
 
 <p>Тем не менее, в этом случае нельзя использовать{@link android.app.AlertDialog.Builder AlertDialog.Builder}
 или другие объекты {@link android.app.Dialog} для построения диалогового окна. Если
-необходимо сделать {@link android.support.v4.app.DialogFragment} 
+необходимо сделать {@link android.support.v4.app.DialogFragment}
 встраиваемым, нужно определить пользовательский интерфейс диалогового окна в макете методом обратного вызова
 {@link android.support.v4.app.DialogFragment#onCreateView
 onCreateView()}.</p>
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
@@ -695,12 +695,12 @@
 }
 </pre>
 
-<p>Подробные сведения о выполнении операций с фрагментами приведены в руководстве 
+<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>
@@ -776,7 +776,7 @@
 android.support.v4.app.DialogFragment}.</p>
 
 <p>Также можно <em>отменить</em> диалоговое окно. Это особое событие, возникающее, когда пользователь
-покинул диалоговое окно, не завершив задачу. Так происходит, когда пользователь нажимает кнопку 
+покинул диалоговое окно, не завершив задачу. Так происходит, когда пользователь нажимает кнопку
 <em>Назад</em>, касается экрана за областью диалогового окна,
 либо когда задано {@link android.app.Dialog#cancel()} в {@link
 android.app.Dialog} (например, в качестве отклика на нажатие кнопки «Отмена» в диалоговом окне).</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
index 2f3ce1e..885918f 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
@@ -66,13 +66,13 @@
 
 <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>
@@ -83,9 +83,9 @@
 строки действий.</p>
   <p>См. раздел <a href="#options-menu">Создание меню параметров</a></p>
     </dd>
-    
+
   <dt><strong>Контекстное меню и режим контекстных действий</strong></dt>
-  
+
    <dd>Контекстное меню ― это <a href="#FloatingContextMenu">плавающее меню</a>, которое открывается, когда
 пользователь длительно нажимает на элемент. В нем содержатся действия, которые затрагивают выбранный контент или
 контекстный кадр.
@@ -94,11 +94,11 @@
 выбрать сразу несколько элементов.</p>
   <p>См. раздел <a href="#context-menu">Создание контекстного меню</a></p>
 </dd>
-    
+
   <dt><strong>Всплывающее меню</strong></dt>
     <dd>Во всплывающем меню отображается вертикальный список пунктов, который привязан к представлению,
 вызвавшему меню. Он хорошо подходит для предоставления возможности дополнительных вариантов действий, относящихся к определенному контенту или
-для выдачи вариантов для второй части команды. Действия во всплывающем меню 
+для выдачи вариантов для второй части команды. Действия во всплывающем меню
 <strong>не</strong> должны напрямую затрагивать соответствующий контент &mdash; для этого предназначены контекстные
 действия. Всплывающее меню предназначено для расширенных действий, относящихся к областям контента в вашей
 операции.
@@ -135,7 +135,7 @@
   <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;}. Он позволяет
 разделять пункты меню на категории и назначать им одинаковые свойства, такие как активное состояние и видимость. Подробные
@@ -322,7 +322,7 @@
 должен быть общедоступным и принимать один параметр {@link android.view.MenuItem}, &mdash; когда система
 вызывает этот метод, она передает ему выбранный пункт меню. Подробные сведения и пример см. в документе <a href="{@docRoot}guide/topics/resources/menu-resource.html">Ресурс меню</a>.</p>
 
-<p class="note"><strong>Совет.</strong> Если в приложении предусмотрено несколько операций и 
+<p class="note"><strong>Совет.</strong> Если в приложении предусмотрено несколько операций и
 в некоторых из них имеются одинаковые меню параметров, рассмотрите возможность создания
 операции, которая будет использовать исключительно методы {@link android.app.Activity#onCreateOptionsMenu(Menu)
 onCreateOptionsMenu()} и {@link android.app.Activity#onOptionsItemSelected(MenuItem)
@@ -346,7 +346,7 @@
 android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} следует использовать только для создания начального
 состояния меню, а не для внесения в него изменений в течение жизненного цикла операции.</p>
 
-<p>Если вам требуется изменять меню параметров в зависимости от 
+<p>Если вам требуется изменять меню параметров в зависимости от
 событий, которые возникают в течение жизненного цикла операции, сделать это можно в
 методе{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Этот
 метод передает объект {@link android.view.Menu} в том виде, в котором он в данный момент существует. Его-то и можно изменить
@@ -363,7 +363,7 @@
 вызвать метод {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()}, чтобы запросить у
 системы вызов метода {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
 
-<p class="note"><strong>Примечание.</strong> 
+<p class="note"><strong>Примечание.</strong>
 Никогда не следует изменять пункты меню параметров с учетом класса {@link android.view.View}, действующего
 в данный момент. В сенсорном режиме (когда пользователь не использует трекбол или кнопки направления движения) фокус
 не может переводиться на представления, поэтому никогда не следует использовать фокус в качестве основы для изменения
@@ -525,7 +525,7 @@
 представления, то вам следует:</p>
 <ol>
   <li>Реализовать интерфейс {@link android.view.ActionMode.Callback}. В его методах обратного вызова вы
-можете указать действия для строки контекстных действий, реагировать на нажатия пунктов действий и 
+можете указать действия для строки контекстных действий, реагировать на нажатия пунктов действий и
 обрабатывать другие события жизненного цикла для режима действий.</li>
   <li>Вызывайте {@link android.app.Activity#startActionMode startActionMode()}, когда требуется показать
 строку (например, когда пользователь выполняет длительное нажатие представления).</li>
@@ -582,12 +582,12 @@
 android.view.ActionMode#setSubtitle setSubtitle()} (удобно для указания количества выбранных
 элементов).</p>
 
-<p>Также обратите внимание, что приведенный выше образец кода задает для переменной {@code mActionMode} значение null, когда 
+<p>Также обратите внимание, что приведенный выше образец кода задает для переменной {@code mActionMode} значение null, когда
 режим действия прекращает свое существование. Далее вы узнаете, каким образом он инициализируется и чем может быть
 полезно сохранение составной переменной в операции или фрагменте.</p>
 </li>
 
-  <li>Для включения режима контекстных действий, когда это необходимо, 
+  <li>Для включения режима контекстных действий, когда это необходимо,
 например, в ответ на длительное нажатие {@link
 android.view.View}, вызывайте {@link android.app.Activity#startActionMode startActionMode()}:</p>
 
@@ -727,7 +727,7 @@
 
 <p>Если для <a href="#xml">определения меню используется XML</a>, вот каким образом можно показать всплывающее меню:</p>
 <ol>
-  <li>Создайте экземпляр класса {@link android.widget.PopupMenu} с помощью его конструктора, принимающий 
+  <li>Создайте экземпляр класса {@link android.widget.PopupMenu} с помощью его конструктора, принимающий
 текущие {@link android.content.Context} и {@link android.view.View} приложения, к которым
 должно быть привязано меню.</li>
   <li>С помощью {@link android.view.MenuInflater} загрузите свой ресурс меню в объект {@link
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -901,7 +901,7 @@
 (например {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). Именно
 здесь необходимо задать состояние флажка, поскольку флажок или переключатель не
 изменяет свое состояние автоматически. Запросить текущее состояние пункта (в котором он находился до того, как был
-выбран пользователем) можно с помощью{@link android.view.MenuItem#isChecked()}, а затем задать помеченное состояние с помощью 
+выбран пользователем) можно с помощью{@link android.view.MenuItem#isChecked()}, а затем задать помеченное состояние с помощью
 {@link android.view.MenuItem#setChecked(boolean) setChecked()}. Например:</p>
 
 <pre>
@@ -1023,9 +1023,9 @@
 &lt;/intent-filter>
 </pre>
 
-<p>Подробные сведения о написании фильтров Intent см. в документе 
+<p>Подробные сведения о написании фильтров Intent см. в документе
 <a href="/guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>.</p>
 
-<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
index d072b77..c286431 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
@@ -92,7 +92,7 @@
 <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>
@@ -294,7 +294,7 @@
         Обеспечьте доступ к этой функции операции {@link android.app.Activity} всех пользователей,
         сделав так, чтобы эта операция запускалась, когда пользователь нажимает уведомление. Для этого
         создайте объект {@link android.app.PendingIntent}
-        для операции {@link android.app.Activity}. Вызовите 
+        для операции {@link android.app.Activity}. Вызовите
         {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
         setContentIntent()}, чтобы добавить объект {@link android.app.PendingIntent} в уведомление.
     </li>
@@ -333,7 +333,7 @@
     вызова метода {@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} с тем же идентификатором, который использовался ранее. Если
     предыдущее уведомление все еще отображается на экране, система обновит его с использованием содержимого
     объекта{@link android.app.Notification}. Если предыдущее уведомление было закрыто, то
@@ -451,14 +451,14 @@
                 Добавьте поддержку для версии 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>&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>
@@ -466,7 +466,7 @@
                 </p>
             </li>
             <li>
-                Также добавьте поддержку для версии Android 4.1 и более поздних версий. Для этого добавьте атрибут 
+                Также добавьте поддержку для версии 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>
@@ -513,7 +513,7 @@
                 запускает {@link android.app.Activity}. Этот метод также добавляет флаги, которые запускают
                 стек в новой задаче.
                 <p class="note">
-                    <strong>Примечание.</strong> Несмотря на то что аргумент 
+                    <strong>Примечание.</strong> Несмотря на то что аргумент
                     {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
                     является ссылкой на запускаемую операцию {@link android.app.Activity}, при вызове этого метода
                     не добавляется объект {@link android.content.Intent}, который запускает операцию
@@ -536,7 +536,7 @@
                 в нее с помощью действия <i>"Назад"</i>.
             </li>
             <li>
-                Получите объект {@link android.app.PendingIntent} для этого стека переходов назад путем вызова метода 
+                Получите объект {@link android.app.PendingIntent} для этого стека переходов назад путем вызова метода
                 {@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.
                 Затем этот объект {@link android.app.PendingIntent} можно будет использовать в качестве аргумента для метода
                 {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
@@ -576,7 +576,7 @@
     Особой операции {@link android.app.Activity} не требуется стек перехода назад, поэтому не нужно
     определять иерархию объектов {@link android.app.Activity} в файле манифеста и
     вызывать
-    метод {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} для построения 
+    метод {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} для построения
     стека перехода назад. Вместо этого в файле манифеста задайте параметры задачи {@link android.app.Activity}
     и создайте объект {@link android.app.PendingIntent} путем вызова метода
     {@link android.app.PendingIntent#getActivity getActivity()}:
@@ -597,7 +597,7 @@
 <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} не
                 перейдет в задачу приложения, используемую по умолчанию. Любые существующие задачи, имеющие
@@ -629,11 +629,11 @@
         Построение и выдача уведомления:
         <ol style="list-style-type: lower-alpha;">
             <li>
-                Создайте объект {@link android.content.Intent}, который запускает операцию 
+                Создайте объект {@link android.content.Intent}, который запускает операцию
                 {@link android.app.Activity}.
             </li>
             <li>
-                Настройте операцию {@link android.app.Activity}, запускаемую в новой пустой задаче, путем вызова метода 
+                Настройте операцию {@link android.app.Activity}, запускаемую в новой пустой задаче, путем вызова метода
                 {@link android.content.Intent#setFlags setFlags()} с флагами
                 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
                 и
@@ -714,7 +714,7 @@
     {@link android.support.v4.app.NotificationCompat.Builder#setProgress
     setProgress(max, progress, false)}, а затем выдайте уведомление. По мере выполнения
     увеличивайте значение <code>progress</code> и обновляйте уведомление. По окончании операции
-    <code>progress</code> должен быть равен <code>max</code>. Стандартный способ вызова метода 
+    <code>progress</code> должен быть равен <code>max</code>. Стандартный способ вызова метода
     {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
     заключается в следующем: задать значение <code>max</code> равным 100 с последующим увеличением <code>progress</code> в виде
     величины "процента выполнения" операции.
@@ -841,7 +841,7 @@
 <p>Примеры ситуаций, в которых могут быть вызваны уведомления heads-up:</p>
 
 <ul>
-  <li>операция пользователя выполняется в полноэкранном режиме (приложение использует 
+  <li>операция пользователя выполняется в полноэкранном режиме (приложение использует
 {@link android.app.Notification#fullScreenIntent}) или;</li>
   <li>уведомление имеет высокий приоритет и использует рингтоны или
     вибрацию.</li>
@@ -915,7 +915,7 @@
 </pre>
 
 <p class="note"><strong>Примечание.</strong> Прекращение использования класса {@link android.media.RemoteControlClient}
-имеет и другие последствия для управления мультимедиа. Подробные сведения о новых API-интерфейсах для управления сеансами воспроизведения мультимедиа см. в разделе 
+имеет и другие последствия для управления мультимедиа. Подробные сведения о новых API-интерфейсах для управления сеансами воспроизведения мультимедиа см. в разделе
 <a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Управление воспроизведением мультимедиа</a>
 .</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
index 0e9628b..8bb953f 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <p>Полное руководство по созданию макета пользовательского интерфейса см. в документе <a href="declaring-layout.html">Макеты
 XML</a>.
 
-  
+
 <h2 id="UIComponents">Компоненты пользовательского интерфейса</h2>
 
 <p>Не обязательно создавать все элементы пользовательского интерфейса с помощью объектов {@link android.view.View} и {@link
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/settings.jd b/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
index 4325439..9adfd62 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@
 
 <img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
 <p class="img-caption"><strong>Рисунок 1.</strong> Снимки экранов настроек приложения Android
-для обмена сообщениями. Выбор элемента, заданного посредством {@link android.preference.Preference}, 
+для обмена сообщениями. Выбор элемента, заданного посредством {@link android.preference.Preference},
 открывает интерфейс для изменения значения.</p>
 
 
@@ -143,7 +143,7 @@
 <p>Каждая настройка для вашего приложения представлена конкретным подклассом класса {@link
 android.preference.Preference}. Каждый подкласс содержит набор основных свойств, которые позволяют вам
 указывать, например, заголовок для настройки и ее значение по умолчанию. Каждый подкласс также содержит
-собственные специализированные свойства и пользовательский интерфейс. В качестве примера на рисунке 1 показан снимок экрана настроек 
+собственные специализированные свойства и пользовательский интерфейс. В качестве примера на рисунке 1 показан снимок экрана настроек
 приложения Android для обмена сообщениями. Каждый элемент списка на экране настроек возвращается отдельным объектом {@link
 android.preference.Preference}.</p>
 
@@ -226,7 +226,7 @@
   <dt>{@code android:key}</dt>
   <dd>Этот атрибут необходим для предпочтений, которые сохраняют значение данных. Он задает уникальный
 ключ (строку), который использует система при сохранении значения этой настройки в {@link
-android.content.SharedPreferences}. 
+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
@@ -271,7 +271,7 @@
 </ul>
 
 <p>Вы можете пользоваться одним или обоими из этих методов группировки для организации настроек в вашем приложении. Принимая
-решение об используемом варианте и о разделении настроек на группы, вы должны следовать инструкциям в разделе 
+решение об используемом варианте и о разделении настроек на группы, вы должны следовать инструкциям в разделе
 <a href="{@docRoot}design/patterns/settings.html">Настройки</a> руководства «Дизайн для Android».</p>
 
 
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -430,7 +430,7 @@
 
 <p>При разработке приложений для Android 3.0 (API уровня 11) и более поздних версий необходимо использовать {@link
 android.preference.PreferenceFragment} для отображения списка
-объектов {@link android.preference.Preference}. Вы можете добавить {@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> обеспечивают более
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -636,7 +636,7 @@
 <h3 id="DisplayHeaders">Отображение заголовков</h3>
 
 <p>Чтобы отобразить заголовки предпочтений, вы должны реализовать метод обратного вызова {@link
-android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} и вызвать 
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} и вызвать
 {@link android.preference.PreferenceActivity#loadHeadersFromResource
 loadHeadersFromResource()}. Например:</p>
 
@@ -672,38 +672,38 @@
 для загрузки.</p>
 
 <p>В качестве примера приведен XML-файл для заголовков предпочтений, который используется в Android версии 3.0
-и более поздних версий ({@code res/xml/preference_headers.xml}):</p> 
+и более поздних версий ({@code res/xml/preference_headers.xml}):</p>
 
 <pre>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &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>А здесь представлен файл предпочтений, который содержит те же самые заголовки для версий старше 
+<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 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -992,7 +992,7 @@
 
 <p>Вы можете сохранить значение настройки в любой момент, вызвав один из методов {@code persist*()} класса {@link
 android.preference.Preference}, например, {@link
-android.preference.Preference#persistInt persistInt()}, если настройка имеет целое значение, или 
+android.preference.Preference#persistInt persistInt()}, если настройка имеет целое значение, или
 {@link android.preference.Preference#persistBoolean persistBoolean()} для сохранения логического значения.</p>
 
 <p class="note"><strong>Примечание.</strong> Каждое предпочтение {@link android.preference.Preference} может сохранять только один
@@ -1071,7 +1071,7 @@
 
 <h3 id="CustomDefault">Предоставление значения по умолчанию</h3>
 
-<p>Если экземпляр вашего класса {@link android.preference.Preference} указывает значение по умолчанию 
+<p>Если экземпляр вашего класса {@link android.preference.Preference} указывает значение по умолчанию
 (с помощью атрибута {@code android:defaultValue}),
 система вызывает {@link android.preference.Preference#onGetDefaultValue
 onGetDefaultValue()}, когда она создает экземпляр объекта для извлечения значения. Вы должны реализовать
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index cd2b481..9f3609b 100644
--- a/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
@@ -30,7 +30,7 @@
 которые называются <a href="#EventListeners">приемниками событий</a>, и служат перехватчиками действий пользователя с вашим пользовательским интерфейсом.</p>
 
 <p>Несмотря на то, что вы будете чаще использовать приемники событий для перехвата действий пользователя, может
-наступить момент, когда вам не захочется наследовать класс View, чтобы создать нестандартный компонент. 
+наступить момент, когда вам не захочется наследовать класс View, чтобы создать нестандартный компонент.
 Возможно, вы захотите наследовать класс {@link android.widget.Button},
 чтобы сделать нечто более необычное. В этом случае вы сможете определить поведение события по умолчанию для своего
 класса с помощью <a href="#EventHandlers">обработчиков событий</a> класса.</p>
@@ -46,27 +46,27 @@
 
 <dl>
   <dt><code>onClick()</code></dt>
-    <dd>Из объекта {@link android.view.View.OnClickListener}. 
+    <dd>Из объекта {@link android.view.View.OnClickListener}.
  Этот метод вызывается, когда пользователь касается элемента
  (в режиме касания), или переводит фокус на элемент с помощью клавиш перемещения или трекбола и
 нажимает соответствующую клавишу «ввода» или нажимает на трекбол.</dd>
   <dt><code>onLongClick()</code></dt>
-    <dd>Из объекта {@link android.view.View.OnLongClickListener}. 
+    <dd>Из объекта {@link android.view.View.OnLongClickListener}.
  Этот метод вызывается, когда пользователь касается элемента и удерживает его (в режиме касания),
 или переводит фокус на элемент с помощью клавиш перемещения или трекбола и
 нажимает и удерживает соответствующую клавишу «ввода» или трекбол (в течение одной секунды).</dd>
   <dt><code>onFocusChange()</code></dt>
-    <dd>Из объекта {@link android.view.View.OnFocusChangeListener}. 
+    <dd>Из объекта {@link android.view.View.OnFocusChangeListener}.
  Этот метод вызывается, когда пользователь перемещается в элемент или из него с помощью клавиш перемещения или трекбола.</dd>
   <dt><code>onKey()</code></dt>
-    <dd>Из объекта {@link android.view.View.OnKeyListener}. 
+    <dd>Из объекта {@link android.view.View.OnKeyListener}.
  Этот метод вызывается, когда пользователь переносит фокус на элемент и нажимает или отпускает аппаратную клавишу на устройстве.</dd>
   <dt><code>onTouch()</code></dt>
-    <dd>Из объекта {@link android.view.View.OnTouchListener}. 
+    <dd>Из объекта {@link android.view.View.OnTouchListener}.
  Этот метод вызывается, когда пользователь выполняет действие, считающееся событием касания, например, нажимает, отпускает
 или выполняет любой жест на экране (в пределах границ элемента).</dd>
   <dt><code>onCreateContextMenu()</code></dt>
-    <dd>Из объекта {@link android.view.View.OnCreateContextMenuListener}. 
+    <dd>Из объекта {@link android.view.View.OnCreateContextMenuListener}.
 Этот метод вызывается, когда создается контекстное меню (в результате длительного «длительного нажатия»). См. обсуждение
 контекстных меню в руководстве
 для разработчиков <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Меню</a>.</dd>
@@ -75,8 +75,8 @@
 <p>Эти методы являются единственными составными частями соответствующих интерфейсов. Чтобы определить один из этих методов
 и обрабатывать события, реализуйте вложенный интерфейс в вашем процесс или определите его, как анонимный класс.
 Затем передайте экземпляр реализации
-в соответствующий метод <code>View.set...Listener()</code>. (Например, вызовите 
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 
+в соответствующий метод <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>
@@ -122,7 +122,7 @@
 зависит от события. Для некоторых методов, которые возвращают значения, причина описана ниже:</p>
 <ul>
   <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> —
-этот метод возвращает логическое значение, указывающее, что вы обработали это событие и его более не следует хранить. 
+этот метод возвращает логическое значение, указывающее, что вы обработали это событие и его более не следует хранить.
 А именно, верните значение <em>true</em>, чтобы указать, что вы обработали событие и его следует остановить;
 верните значение <em>false</em>, если вы не обработали его и/или событие должно продолжаться для любых других
 приемников события on-click.</li>
@@ -181,14 +181,14 @@
 макета, учитывайте и другие методы:</p>
 <ul>
   <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
-    Activity.dispatchTouchEvent(MotionEvent)}</code> — этот метод позволяет вашей операции {@link 
+    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 
+в родительском отображаемом объекте, чтобы указать ему, что он не должен перехватывать события касания с помощью <code>{@link
     android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
 </ul>
 
@@ -199,7 +199,7 @@
 какой элемент будет принимать ввод.  Однако, если устройство поддерживает сенсорный ввод, и пользователь
 начинает взаимодействовать с интерфейсом, прикасаясь к его элементам, исчезает необходимость
 выделять элементы или передавать фокус определенному отображаемому объекту.  Следовательно, существует режим
-взаимодействия, который называется «режимом касания». 
+взаимодействия, который называется «режимом касания».
 </p>
 <p>
 Как только пользователь касается экрана, устройство, поддерживающее сенсорный ввод,
@@ -214,7 +214,7 @@
 с пользовательским интерфейсом без касания экрана.
 </p>
 <p>
-Состояние режима касания поддерживается во всей системе (для всех окон и операций). 
+Состояние режима касания поддерживается во всей системе (для всех окон и операций).
 Чтобы узнать текущее состояние, можно вызвать
 {@link android.view.View#isInTouchMode} и посмотреть, находится ли устройство в режиме касания.
 </p>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd
index d4e6042..887ea63 100644
--- a/docs/html-intl/intl/ru/preview/api-overview.jd
+++ b/docs/html-intl/intl/ru/preview/api-overview.jd
@@ -456,7 +456,7 @@
 <h2 id="android_for_work">Android for Work</h2>
 
 <p>В Android for Work добавлены много новых возможностей и API-интерфейсов для устройств под управлением Android N.
-Некоторые из них приведены ниже. Полный список обновлений Android for Work, касающихся 
+Некоторые из них приведены ниже. Полный список обновлений Android for Work, касающихся
 Android N, содержится в списке изменений Android for Work.</p>
 
 <h3 id="work_profile_security_challenge">Пароль безопасности для рабочего профиля </h3>
diff --git a/docs/html-intl/intl/ru/preview/download.jd b/docs/html-intl/intl/ru/preview/download.jd
index b286cad..3af4a5a 100644
--- a/docs/html-intl/intl/ru/preview/download.jd
+++ b/docs/html-intl/intl/ru/preview/download.jd
@@ -107,7 +107,7 @@
 9.3. Google вправе в любое время прекратить действие настоящего Лицензионного соглашения, отправив предварительное уведомление или без него.
 
 9.4 Действие настоящего Лицензионного соглашения автоматически прекращается без предварительного уведомления или выполнения иных действий сразу после следующего:
-(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям в той стране, в которой вы проживаете или используете услуги компании; 
+(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям в той стране, в которой вы проживаете или используете услуги компании;
 (B) компания Google выпускает окончательную версию Android SDK.
 
 9.5 В случае прекращения действия настоящего Лицензионного соглашения прекращается действие лицензии, предоставленной в рамках Лицензионного соглашения, и вам следует незамедлительно прекратить любое использование Preview, тогда как положения, изложенные в разделах 10, 11, 12 и 14 продолжают действовать бессрочно.
@@ -264,7 +264,7 @@
 вручную записать его во флэш-память устройства. См. информацию в следующей таблице, чтобы загрузить системный образ
 для своего тестового устройства. Запись вручную во флэш-память устройства удобна, если требуется
 точное управление средой тестирования или частая переустановка,
-например при автоматическом тестировании. 
+например при автоматическом тестировании.
 </p>
 
 <!-- You can flash by ota or system image --><p>
@@ -289,7 +289,7 @@
   Если вы захотите получить обновления по беспроводной связи после записи на устройство вручную,
 вам нужно просто зарегистрировать устройство в <a href="https://g.co/androidbeta">программе
 бета-тестировании Android</a>. Вы можете зарегистрировать устройство в любое время для получения следующего обновления предварительной версии
-по беспроводной связи. 
+по беспроводной связи.
 </p>
 
 <table>
@@ -300,64 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
-      MD5: b5cf874021023b398f5b983b24913f5d<br>
-      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
-      MD5: af183638cf34e0eb944a1957d7696f60<br>
-      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
-      MD5: bc4934ea7bd325753eee1606d3725a24<br>
-      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
-      MD5: c901334c6158351e945f188167ae56f4<br>
-      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
-      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
-      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
-      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
-      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </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><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </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><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/ru/preview/features/direct-boot.jd b/docs/html-intl/intl/ru/preview/features/direct-boot.jd
index b49624b..3392c13 100644
--- a/docs/html-intl/intl/ru/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/ru/preview/features/direct-boot.jd
@@ -103,7 +103,7 @@
 <p>Шифрованное хранилище устройства следует использовать только для
 информации, которая должна быть доступна в режиме Direct Boot.
 Шифрованное хранилище устройства не следует использовать в качестве шифрованного хранилища общего назначения.
-Для хранения данных пользователя или шифрованных данных, которые не требуются в режиме 
+Для хранения данных пользователя или шифрованных данных, которые не требуются в режиме
 Direct Boot, следует использовать шифрованное хранилище, требующее ввода учетных данных.</p>
 
 <h2 id="notification">Уведомление о разблокировке пользователем</h2>
@@ -148,7 +148,7 @@
 Direct Boot на поддерживаемых устройствах с Android N, выполните одну из следующих последовательностей действий.</p>
 
 <ul>
-<li>Включите на устройстве параметры разработчика <b>Developer options</b>, если вы еще не сделали этого ранее. Для этого 
+<li>Включите на устройстве параметры разработчика <b>Developer options</b>, если вы еще не сделали этого ранее. Для этого
 перейдите на экран <b>Settings &gt; About phone</b> и нажмите семь раз <b>Build number</b>.
  Когда параметры разработчика станут доступны, откройте раздел
 <b>Settings &gt; Developer options</b> и выберите
diff --git a/docs/html-intl/intl/ru/preview/features/multi-window.jd b/docs/html-intl/intl/ru/preview/features/multi-window.jd
index f1a8ea6..b45766c 100644
--- a/docs/html-intl/intl/ru/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/ru/preview/features/multi-window.jd
@@ -356,7 +356,7 @@
 <p>
   Чтобы перевести операцию в режим "картинка в картинке",
  вызовите новый метод <code>Activity.enterPictureInPicture()</code>. Этот метод игнорируется, если
- устройство не поддерживает режим "картинка в картинке". Дополнительная информация содержится в документации 
+ устройство не поддерживает режим "картинка в картинке". Дополнительная информация содержится в документации
  <a href="picture-in-picture.html">Режим "картинка в картинке"</a>.
 </p>
 
diff --git a/docs/html-intl/intl/ru/preview/features/multilingual-support.jd b/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
index 83dd2b4..83e9968 100644
--- a/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
+++ b/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
@@ -208,7 +208,7 @@
 конечных пользователей.  Поэтому при разработке приложений для Android N
 следует использовать средства форматирования, а не жесткое кодирование строк с числами и датами.</p>
 
-<p>В качестве наглядного примера можно привести арабский язык, поддержка которого в Android N расширена 
+<p>В качестве наглядного примера можно привести арабский язык, поддержка которого в Android N расширена
 с одного {@code ar_EG} до 27 языковых стандартов. Большинство ресурсов этих языковых стандартов общие, но
 в некоторых из них используются цифры формата ASCII, а в других — собственные цифры. Например,
 если вы хотите создать предложение с числовой переменной
diff --git a/docs/html-intl/intl/ru/preview/features/notification-updates.jd b/docs/html-intl/intl/ru/preview/features/notification-updates.jd
index 9c7cb93..54b3bc3 100644
--- a/docs/html-intl/intl/ru/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/ru/preview/features/notification-updates.jd
@@ -203,7 +203,7 @@
 
 </p>
 
-<p>Добавление уведомлений в группу описано в разделе 
+<p>Добавление уведомлений в группу описано в разделе
 <a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Добавление
 каждого уведомления в группу</a>.</p>
 
diff --git a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
index a39230c..51a4c4d 100644
--- a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
+++ b/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
@@ -113,7 +113,7 @@
 <h2 id="best">Советы и рекомендации</h2>
 
 <p>По возможности оставляйте постоянный URI для доступа к внешнему каталогу, чтобы приложению не
-приходилось многократно запрашивать у пользователя разрешение на доступ. После предоставления доступа пользователем вызовите метод 
+приходилось многократно запрашивать у пользователя разрешение на доступ. После предоставления доступа пользователем вызовите метод
 <code>getContentResolver().takePersistableUriPermssion()</code> для
 URI доступа к каталогу. Система сохранит постоянный URI и при последующих запросах
 доступа будет возвращать ответ <code>RESULT_OK</code>. Таким образом, приложение не будет постоянно выводить
diff --git a/docs/html-intl/intl/ru/preview/features/security-config.jd b/docs/html-intl/intl/ru/preview/features/security-config.jd
index de117d6..5294a4f 100644
--- a/docs/html-intl/intl/ru/preview/features/security-config.jd
+++ b/docs/html-intl/intl/ru/preview/features/security-config.jd
@@ -133,7 +133,7 @@
 </p>
 
 <p>
-  Добавьте самозаверенный сертификат или сертификат закрытого ЦС в формате PEM или DER в 
+  Добавьте самозаверенный сертификат или сертификат закрытого ЦС в формате PEM или DER в
  {@code res/raw/my_ca}.
 </p>
 
@@ -209,7 +209,7 @@
   При отладке приложения, которое использует для подключения протокол HTTPS, вам может потребоваться
  подключение к локальному серверу разработки, у которого нет сертификата SSL
  для рабочего сервера. Чтобы выполнить отладку без изменения кода
- приложения, вы можете указать ЦС для отладки, 
+ приложения, вы можете указать ЦС для отладки,
  которые входят в число доверенных, <i>только</i> если для параметра <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
 android:debuggable</a>
  установлено значение {@code true} с использованием {@code debug-overrides}. Обычно среды разработки и инструменты
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd
index b8de11e..29f1730 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/index.jd
@@ -34,12 +34,12 @@
 </div>
 </div>
 
-<p>Во время навигации пользователя по вашему приложению экземпляры 
+<p>Во время навигации пользователя по вашему приложению экземпляры
 {@link android.app.Activity} внутри приложения переключаются между разными состояниями их
 жизненного цикла Например, при первом запуске
 операции она получает высокий приоритет в системе и привлекает внимание
 пользователя. Во время этого процесса система Android вызывает серию методов жизненного цикла
-операции, позволяя настроить пользовательский интерфейс и другие компоненты. Если пользователь выполняет 
+операции, позволяя настроить пользовательский интерфейс и другие компоненты. Если пользователь выполняет
 действие, запускающее другую операцию, или переключается на другое приложение, система вызывает другой набор
 методов жизненного цикла для операции, поскольку она переносится на фоновый уровень (операция больше не
 отображается, но экземпляр и состояние остаются без изменений).</p>
@@ -50,12 +50,12 @@
 а сетевое соединение разрывалось. После возврата пользователя проигрыватель может снова подключиться к сети, и пользователь сможет возобновить воспроизведение
 видео с того же самого места.</p>
 
-<p>В этом учебном курсе разъясняются важные методы обратного вызова жизненного цикла, которые получает каждый экземпляр {@link 
+<p>В этом учебном курсе разъясняются важные методы обратного вызова жизненного цикла, которые получает каждый экземпляр {@link
 android.app.Activity}, и описывается как их использовать, чтобы операция выполнялась так, как этого ожидает
 пользователь, и не потребляла системные ресурсы, когда они ей не нужны.</p>
 
 <h2>Уроки</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">Запуск операции</a></b></dt>
   <dd>Из этого урока вы узнаете об основах жизненного цикла операций, способах запуска вашего приложения пользователями и вариантах
@@ -68,5 +68,5 @@
   <dt><b><a href="recreating.html">Повторное создание операции</a></b></dt>
   <dd>Вы узнаете, что происходит при полном прекращении операции, и как можно восстановить ее состояние
 в случае необходимости.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
index c483780..8d1ce92 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Содержание этого урока</h2>
     <ol>
       <li><a href="#Pause">Приостановка операции</a></li>
       <li><a href="#Resume">Возобновление операции</a></li>
     </ol>
-    
+
     <h2>См. также:</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Операции</a>
@@ -59,7 +59,7 @@
 
 
 <h2 id="Pause">Приостановка операции</h2>
-      
+
 <p>Когда система вызывает {@link android.app.Activity#onPause()} для операции, это
 технически означает, что операция остается частично видимой. Однако чаще всего это означает, что
 пользователь покидает операцию, и вскоре она войдет в состояние остановки.  Обратный вызов
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd
index acb89fa..c36ccf4 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Содержание этого урока</h2>
     <ol>
       <li><a href="#SaveState">Сохранение состояния операции</a></li>
       <li><a href="#RestoreState">Восстановление состояния операции</a></li>
     </ol>
-    
+
     <h2>См. также:</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">Поддержка
@@ -105,7 +105,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -138,7 +138,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -157,12 +157,12 @@
 после метода {@link android.app.Activity#onStart()}. Система вызывает {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} только при наличии сохраненного состояния
 для восстановления, и поэтому вам не нужно проверять, имеет ли {@link android.os.Bundle} значение null:</p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd
index ef8be5b..19f7134 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Содержание этого урока</h2>
 <ol>
   <li><a href="#lifecycle-states">Изучение обратных вызовов жизненного цикла</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">Создание нового экземпляра</a></li>
   <li><a href="#Destroy">Уничтожение операции</a></li>
 </ol>
-    
+
     <h2>См. также:</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Операции</a></li>
@@ -34,7 +34,7 @@
 </div>
 
 <p>В отличие от других парадигм программирования, где приложения запускаются с использованием метода {@code main()}, система
-Android запускает код в {@link android.app.Activity}экземпляре посредством активации определенных 
+Android запускает код в {@link android.app.Activity}экземпляре посредством активации определенных
 методов обратного вызова, соответствующих определенным этапам его
 жизненного цикла. Существует последовательность методов обратного вызова, которые запускают операцию и последовательность
 методов обратного вызова, уничтожающих операцию.</p>
@@ -83,7 +83,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -138,7 +138,7 @@
 
 
 
-<h2 id="launching-activity">Указание операции, запускающей приложение</h2> 
+<h2 id="launching-activity">Указание операции, запускающей приложение</h2>
 
 <p>Когда пользователь выбирает значок приложения на главном экране, система вызывает метод {@link
 android.app.Activity#onCreate onCreate()} для {@link android.app.Activity} в вашем приложении
@@ -151,7 +151,7 @@
 <p>Основная операция приложения должна декларироваться в манифесте с помощью фильтра <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a>, включающего действие {@link
 android.content.Intent#ACTION_MAIN MAIN} и категорию
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Например:</p> 
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER}. Например:</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -221,7 +221,7 @@
 <p>После завершения выполнения {@link android.app.Activity#onCreate onCreate()} система
 быстро вызывает методы {@link android.app.Activity#onStart()} и {@link android.app.Activity#onResume()} по
 очереди. Операция никогда не остается в состоянии создания или запуска. Технически
-операция становится видимой для пользователя при вызове {@link android.app.Activity#onStart()}, однако затем сразу же происходит 
+операция становится видимой для пользователя при вызове {@link android.app.Activity#onStart()}, однако затем сразу же происходит
 {@link android.app.Activity#onResume()} и операция остается в состоянии возобновления,
 пока что-то не произойдет, например пока не поступит телефонный звонок, пользователь не переключится
 на другую операцию или экран устройства не выключится.</p>
@@ -268,7 +268,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd
index 27c771f..f78e4ef 100644
--- a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>Содержание этого урока</h2>
     <ol>
       <li><a href="#Stop">Остановка операции</a></li>
       <li><a href="#Start">Запуск/перезапуск операции</a></li>
     </ol>
-    
+
     <h2>См. также:</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Операции</a>
@@ -118,7 +118,7 @@
 <p class="note"><strong>Примечание.</strong> Даже если система уничтожит операцию в период остановки,
 она сохранит состояние объектов {@link android.view.View} (например, текста в {@link
 android.widget.EditText}) в {@link android.os.Bundle} (наборе пар "ключ-значение") и восстановит
-их, если пользователь вернется в тот же экземпляр операции (на <a href="recreating.html">следующем уроке</a> мы более подробно поговорим об использовании {@link android.os.Bundle} для сохранения 
+их, если пользователь вернется в тот же экземпляр операции (на <a href="recreating.html">следующем уроке</a> мы более подробно поговорим об использовании {@link android.os.Bundle} для сохранения
 других данных состояния в случае уничтожения и воссоздания вашей операции).</p>
 
 
@@ -152,13 +152,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd b/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd
index 418d288..bd1a4b7 100644
--- a/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/ru/training/basics/data-storage/databases.jd
@@ -118,11 +118,11 @@
 по умолчанию недоступна другим приложениям.</p>
 
 <p>Полезный набор API-интерфейсов содержится в классе {@link
-android.database.sqlite.SQLiteOpenHelper}. 
+android.database.sqlite.SQLiteOpenHelper}.
 Если вы используете этот класс для получения ссылок на свою базу данных, система
 выполняет потенциально
 долговременные операции создания и обновления базы данных только тогда, когда это
-необходимо, а <em>не при запуске приложения</em>. Для этого нужно использовать вызов 
+необходимо, а <em>не при запуске приложения</em>. Для этого нужно использовать вызов
 {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} или
 {@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
 
@@ -245,7 +245,7 @@
     );
 </pre>
 
-<p>Чтобы посмотреть на строку в месте курсора, используйте один из методов перемещения 
+<p>Чтобы посмотреть на строку в месте курсора, используйте один из методов перемещения
 {@link android.database.Cursor}, которые всегда нужно вызывать перед считыванием значений. Обычно следует начинать
 с вызова {@link android.database.Cursor#moveToFirst}, который помещает "позицию чтения"
 на первую запись в результатах. Для каждой строки значение столбца можно прочитать, вызвав один из методов
diff --git a/docs/html-intl/intl/ru/training/basics/data-storage/files.jd b/docs/html-intl/intl/ru/training/basics/data-storage/files.jd
index 2afecea..2b8f880 100644
--- a/docs/html-intl/intl/ru/training/basics/data-storage/files.jd
+++ b/docs/html-intl/intl/ru/training/basics/data-storage/files.jd
@@ -183,7 +183,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -250,7 +250,7 @@
 вашего приложения пользователем. Хотя технически эти файлы доступны для пользователя и других приложений, поскольку находятся
 во внешнем хранилище, они не имеют никакой ценности для пользователей
 вне вашего приложения. Когда пользователь удаляет ваше приложение, система удаляет
-все файлы из каталога закрытых файлов вашего приложения во внешнем хранилище. 
+все файлы из каталога закрытых файлов вашего приложения во внешнем хранилище.
   <p>Например, к этой категории относятся дополнительные ресурсы, загруженные приложением, и временные мультимедийные файлы.</p>
   </dd>
 </dl>
@@ -265,7 +265,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -287,7 +287,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -332,7 +332,7 @@
 общее пространство в хранилище. Эта информация также позволять
 избежать переполнения объема хранилища сверх определенного уровня.</p>
 
-<p>Однако система не гарантирует возможность записи такого же количества байт, как указано 
+<p>Однако система не гарантирует возможность записи такого же количества байт, как указано
 в {@link java.io.File#getFreeSpace}.  Если выводимое число на
 несколько мегабайт превышает размер данных, которые вы хотите сохранить, или если файловая система заполнена
 менее, чем на 90%, дальше можно действовать спокойно.
@@ -366,13 +366,13 @@
 
 <div class="note">
 <p><strong>Примечание.</strong> При удалении пользователем вашего приложения система Android удаляет
-следующие элементы:</p> 
+следующие элементы:</p>
 <ul>
 <li>Все файлы, сохраненные во внутреннем хранилище</li>
 <li>Все файлы, сохраненные во внешнем хранилище с использованием {@link
 android.content.Context#getExternalFilesDir getExternalFilesDir()}.</li>
 </ul>
-<p>Однако вам следует регулярно вручную очищать кэш-память, чтобы удалить файлы, созданные с помощью 
+<p>Однако вам следует регулярно вручную очищать кэш-память, чтобы удалить файлы, созданные с помощью
 {@link android.content.Context#getCacheDir()}, а также удалять любые
 другие ненужные файлы.</p>
 </div>
diff --git a/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd b/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd
index 61a0037..9a52e3e 100644
--- a/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd
+++ b/docs/html-intl/intl/ru/training/basics/data-storage/shared-preferences.jd
@@ -79,7 +79,7 @@
 SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
 </pre>
 
-<p class="caution"><strong>Внимание!</strong> Если вы создадите общий файл настроек 
+<p class="caution"><strong>Внимание!</strong> Если вы создадите общий файл настроек
 с {@link android.content.Context#MODE_WORLD_READABLE} или {@link
 android.content.Context#MODE_WORLD_WRITEABLE}, ваши данные будут доступны всем другим приложениям, которым известен идентификатор
 файла.</p>
diff --git a/docs/html-intl/intl/ru/training/basics/intents/result.jd b/docs/html-intl/intl/ru/training/basics/intents/result.jd
index 8ab03d4..c413725 100644
--- a/docs/html-intl/intl/ru/training/basics/intents/result.jd
+++ b/docs/html-intl/intl/ru/training/basics/intents/result.jd
@@ -37,7 +37,7 @@
 результат отправляется как другой объект {@link android.content.Intent}. Ваша операция получает
 его в обратном вызове {@link android.app.Activity#onActivityResult onActivityResult()}.</p>
 
-<p class="note"><strong>Примечание.</strong> Вы можете использовать явные и неявные результаты при вызове 
+<p class="note"><strong>Примечание.</strong> Вы можете использовать явные и неявные результаты при вызове
 {@link android.app.Activity#startActivityForResult startActivityForResult()}. При запуске собственной
 операции для получения результата вы должны использовать явные результаты, чтобы получить
 именно ожидаемый результат.</p>
@@ -104,7 +104,7 @@
 Android Контакты или Люди, предоставляют контент {@link android.net.Uri}, который идентифицирует
 выбранный пользователем контакт.</p>
 
-<p>Для успешной обработки результатов необходимо понимать, каким будет формат этих результатов 
+<p>Для успешной обработки результатов необходимо понимать, каким будет формат этих результатов
 {@link android.content.Intent}. Это просто, если результат возвращается одной из ваших
 собственных операций. Приложения, входящие в состав платформы Android, имеют собственные прикладные интерфейсы, так что
 вы можете рассчитывать на получение определенных результатов. Например, приложение "Люди" (приложение "Контакты" в старых
diff --git a/docs/html-intl/intl/ru/training/material/animations.jd b/docs/html-intl/intl/ru/training/material/animations.jd
index 9808a9f..ab59ea5 100644
--- a/docs/html-intl/intl/ru/training/material/animations.jd
+++ b/docs/html-intl/intl/ru/training/material/animations.jd
@@ -173,7 +173,7 @@
 </ul>
 
 <p>Любой переход, являющийся наследованием класса {@link android.transition.Visibility}, поддерживается как начальный или конечный переход.
- Дополнительные сведения представлены в справке по API для класса 
+ Дополнительные сведения представлены в справке по API для класса
 {@link android.transition.Transition}.</p>
 
 <p>В Android 5.0 (уровень API 21) также поддерживаются следующие переходы общих элементов:</p>
@@ -230,7 +230,7 @@
 {@link android.transition.ChangeImageTransform}. Дополнительные сведения представлены в справке по API для {@link android.transition.Transition}.
 </p>
 
-<p>Чтобы активировать в своем коде переходы содержимого окна, вызовите метод 
+<p>Чтобы активировать в своем коде переходы содержимого окна, вызовите метод
 {@link android.view.Window#requestFeature Window.requestFeature()}:</p>
 
 <pre>
@@ -263,7 +263,7 @@
  В противном случае вызывающая операция запустит конечный переход, однако будет выполнен переход окна (например, масштабирование или затемнение).
 </p>
 
-<p>Чтобы запустить начальный переход как можно раньше, используйте в вызываемой операции метод 
+<p>Чтобы запустить начальный переход как можно раньше, используйте в вызываемой операции метод
 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
 . Это позволит сделать начальные переходы более эффектными.</p>
 
@@ -289,7 +289,7 @@
 <li>Активируйте в своей теме переходы содержимого окна.</li>
 <li>В определении стиля укажите переходы общих элементов.</li>
 <li>Определите свой переход как XML-ресурс.</li>
-<li>Присвойте одинаковое имя общим элементам в обоих макетах, используя для этого атрибут 
+<li>Присвойте одинаковое имя общим элементам в обоих макетах, используя для этого атрибут
 <code>android:transitionName</code>.</li>
 <li>Воспользуйтесь методом {@link android.app.ActivityOptions#makeSceneTransitionAnimation
 ActivityOptions.makeSceneTransitionAnimation()}.</li>
@@ -321,7 +321,7 @@
 {@link android.view.View#setTransitionName View.setTransitionName()} для определения одинакового имени элемента в обеих операциях.
 </p>
 
-<p>Чтобы выполнить анимацию обратного перехода по завершении второй операции, вызовите метод 
+<p>Чтобы выполнить анимацию обратного перехода по завершении второй операции, вызовите метод
 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
  вместо{@link android.app.Activity#finish Activity.finish()}.</p>
 
@@ -414,15 +414,15 @@
 &lt;/selector>
 </pre>
 
-<p>Чтобы присоединить к представлению настраиваемые анимации состояния представления, определите аниматор, используя элемент 
+<p>Чтобы присоединить к представлению настраиваемые анимации состояния представления, определите аниматор, используя элемент
 <code>selector</code> в файле XML-ресурса (как в этом примере), а затем назначьте его своему представлению
 с помощью атрибута <code>android:stateListAnimator</code>. Чтобы в своем коде назначить представлению аниматор
  списка состояний, используйте метод {@link android.animation.AnimatorInflater#loadStateListAnimator
-AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор своему представлению с помощью метода 
+AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор своему представлению с помощью метода
 {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
 
 <p>Если ваша тема является расширением темы Material Design, по умолчанию у кнопок имеется возможность анимации по оси Z. Чтобы отключить
-такое поведение кнопок, задайте для атрибута <code>android:stateListAnimator</code> значение 
+такое поведение кнопок, задайте для атрибута <code>android:stateListAnimator</code> значение
 <code>@null</code>.</p>
 
 <p>С помощью класса {@link android.graphics.drawable.AnimatedStateListDrawable} можно создавать элементы, которые служат для отображения анимации между изменениями состояния связанного представления.
diff --git a/docs/html-intl/intl/ru/training/material/drawables.jd b/docs/html-intl/intl/ru/training/material/drawables.jd
index 2554f07..c1924e3 100644
--- a/docs/html-intl/intl/ru/training/material/drawables.jd
+++ b/docs/html-intl/intl/ru/training/material/drawables.jd
@@ -38,7 +38,7 @@
 
 <p>Тонирование можно применить к объектам {@link android.graphics.drawable.BitmapDrawable} и {@link
 android.graphics.drawable.NinePatchDrawable} с помощью метода {@code setTint()}. Также можно
-задать цвет и способ тонирования в макетах, используя для этого атрибуты <code>android:tint</code> и 
+задать цвет и способ тонирования в макетах, используя для этого атрибуты <code>android:tint</code> и
 <code>android:tintMode</code>.</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
index 476de7f..6a0340d 100644
--- a/docs/html-intl/intl/ru/training/material/get-started.jd
+++ b/docs/html-intl/intl/ru/training/material/get-started.jd
@@ -59,7 +59,7 @@
 
 <h2 id="ApplyTheme">Применение темы Material Design</h2>
 
-<p>Чтобы применить тему Material Design в своем приложении, укажите стиль, который наследует от 
+<p>Чтобы применить тему Material Design в своем приложении, укажите стиль, который наследует от
 <code>android:Theme.Material</code>:</p>
 
 <pre>
diff --git a/docs/html-intl/intl/ru/training/material/index.jd b/docs/html-intl/intl/ru/training/material/index.jd
index 0b3f1c4..e609557 100644
--- a/docs/html-intl/intl/ru/training/material/index.jd
+++ b/docs/html-intl/intl/ru/training/material/index.jd
@@ -1,7 +1,7 @@
-page.title=Создание приложений с помощью Material Design 
-page.type=проектирование 
+page.title=Создание приложений с помощью Material Design
+page.type=проектирование
 page.image=images/cards/material_2x.png
-page.metaDescription=Научитесь применять Material Design к своим приложениям. 
+page.metaDescription=Научитесь применять Material Design к своим приложениям.
 
 
 @jd:body
diff --git a/docs/html-intl/intl/ru/training/material/lists-cards.jd b/docs/html-intl/intl/ru/training/material/lists-cards.jd
index 44ff160..fa0db14 100644
--- a/docs/html-intl/intl/ru/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/ru/training/material/lists-cards.jd
@@ -90,7 +90,7 @@
 
 <h3 id="RVExamples">Примеры</h3>
 
-<p>В следующем примере демонстрируется, как включить в макет виджет 
+<p>В следующем примере демонстрируется, как включить в макет виджет
 {@link android.support.v7.widget.RecyclerView}:</p>
 
 <pre>
@@ -253,7 +253,7 @@
 
 <p> Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}
 входят во <a href="{@docRoot}tools/support-library/features.html#v7">вспомогательные
-библиотеки v7</a>. Чтобы использовать эти виджеты в своем проекте, добавьте в модуль приложения следующие 
+библиотеки v7</a>. Чтобы использовать эти виджеты в своем проекте, добавьте в модуль приложения следующие
 <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">зависимости Gradle</a>:
 </p>
 
diff --git a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
index a1c41fc..293b525 100644
--- a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
@@ -31,7 +31,7 @@
 <p>Установка высоты также полезна для создания анимации, когда виджеты временно поднимаются выше плоскости представления при выполнении какого-либо действия.
 </p>
 
-<p>Дополнительные сведения об установке высоты в Material Design представлены на странице 
+<p>Дополнительные сведения об установке высоты в Material Design представлены на странице
 <a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Объекты в трехмерном пространстве</a>.
 </p>
 
@@ -59,13 +59,13 @@
 
 <p>Новые методы {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} и {@link
 android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} позволяют с легкостью анимировать изменение высоты представлений.
- Дополнительные сведения см. в справке по API для 
+ Дополнительные сведения см. в справке по 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>
@@ -110,7 +110,7 @@
 android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
 </ol>
 
-<p>Можно создавать овальные и прямоугольные контуры со скругленными углами, используя для этого методы класса 
+<p>Можно создавать овальные и прямоугольные контуры со скругленными углами, используя для этого методы класса
 {@link android.graphics.Outline}. Стандартный источник контуров получает контуры из фона представления.
  Чтобы представление не отбрасывало тень, задайте для источника контуров значение <code>null</code>.
 </p>
diff --git a/docs/html-intl/intl/ru/training/material/theme.jd b/docs/html-intl/intl/ru/training/material/theme.jd
index 320f308..62c310f 100644
--- a/docs/html-intl/intl/ru/training/material/theme.jd
+++ b/docs/html-intl/intl/ru/training/material/theme.jd
@@ -42,7 +42,7 @@
   <li><code>@android:style/Theme.Material.Light.DarkActionBar</code>.</li>
 </ul>
 
-<p>Список доступных стилей Material Design см. в справке по API для 
+<p>Список доступных стилей Material Design см. в справке по API для
 {@link android.R.style R.style}.</p>
 
 <!-- two columns, dark/light material theme example -->
@@ -66,7 +66,7 @@
 <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>
 
@@ -108,7 +108,7 @@
 
 <p>Кроме того, можно самостоятельно разместить элемент за строкой состояния. Например, если требуется наложить прозрачную строку состояния поверх фотографии, применив еле уловимый темный градиент, чтобы были видны белые значки состояния.
 
- Для этого задайте для атрибута <code>android:statusBarColor</code> значение 
+ Для этого задайте для атрибута <code>android:statusBarColor</code> значение
 <code>&#64;android:color/transparent</code> и настройте флаги окна требуемым образом. Также можно воспользоваться
 методом {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} для применения анимации или эффекта постепенного исчезания.
 </p>
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd
index 26daf04..a8e5843 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@
 next.link=docking-monitoring.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>Содержание урока</h2>
@@ -24,9 +24,9 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 <p>Если вы хотите изменить частоту фоновых обновлений, чтобы продлить время работы устройства от батареи, сначала рекомендуется проверить текущий уровень заряда и состояние зарядки.</p>
 
 <p>Именно от этих двух факторов зависит, как обновления повлияют на время работы устройства от батареи. Когда устройство подключено к сети переменного тока, приложение можно обновлять максимально часто, поскольку процесс обновления не будет сказываться на уровне заряда батареи. Если устройство не подключено к сети, следует воздержаться от обновлений, чтобы продлить время его работы от батареи.</p>
@@ -34,8 +34,8 @@
 <p>Если заряд батареи практически исчерпан, можно снизить частоту обновлений (вплоть до их полного прекращения).</p>
 
 
-<h2 id="DetermineChargeState">Определение текущего состояния зарядки</h2> 
- 
+<h2 id="DetermineChargeState">Определение текущего состояния зарядки</h2>
+
 <p>Начните с определения текущего состояния зарядки. {@link android.os.BatteryManager} передает все сведения о батарее и зарядке в закрепленном намерении {@link android.content.Intent}, которое содержит также информацию о состоянии зарядки.</p>
 
 <p>Поскольку это намерение является закрепленным, регистрировать {@link android.content.BroadcastReceiver} не нужно. Чтобы получить текущее состояние батареи в виде намерения, нужно вызвать {@code registerReceiver}, передав {@code null} в качестве приемника, как показано в коде ниже. Можно также передать фактический объект {@link android.content.BroadcastReceiver}, но это необязательно, поскольку обработка обновлений будет выполняться позднее.</p>
@@ -58,7 +58,7 @@
 <p>Как правило, если устройство подключено к сети переменного тока, фоновые обновления можно выполнять с максимальной частотой. Если устройство заряжается через USB, частоту можно несколько сократить, а если устройство не подключено к сети&nbsp;– сократить еще больше.</p>
 
 
-<h2 id="MonitorChargeState">Отслеживание изменений состояния зарядки</h2> 
+<h2 id="MonitorChargeState">Отслеживание изменений состояния зарядки</h2>
 
 <p>Состояние зарядки изменяется всякий раз, когда пользователь подключает устройство к источнику питания. Поскольку это случается довольно часто, важно отслеживать изменения этого состояния и соответствующим образом корректировать частоту обновления приложения.</p>
 
@@ -75,11 +75,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 == BATTERY_PLUGGED_USB;
         boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@
 }</pre>
 
 
-<h2 id="CurrentLevel">Определение текущего уровня заряда батареи</h2> 
+<h2 id="CurrentLevel">Определение текущего уровня заряда батареи</h2>
 
 <p>В некоторых случаях целесообразно определять текущий уровень заряда батареи. Если он ниже определенного значения, частоту фоновых обновлений следует уменьшить.</p>
 
@@ -99,7 +99,7 @@
 float batteryPct = level / (float)scale;</pre>
 
 
-<h2 id="MonitorLevel">Отслеживание существенных изменений уровня заряда батареи</h2> 
+<h2 id="MonitorLevel">Отслеживание существенных изменений уровня заряда батареи</h2>
 
 <p>Отслеживать состояние батареи непрерывно не следует,</p>
 
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
index ca1a942..d372431 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>Содержание урока</h2>
@@ -27,7 +27,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Чаще всего повторяющиеся оповещения и фоновые службы используются для планового обновления приложения из Интернета, кэширования или загрузки больших объемов данных. Однако если подключение к Интернету не установлено или скорость соединения слишком низкая, выполнять загрузку не имеет смысла.</p>
@@ -35,18 +35,18 @@
 <p>Проверить наличие подключения к Интернету и его тип можно с помощью {@link android.net.ConnectivityManager}.</p>
 
 
-<h2 id="DetermineConnection">Определение наличия подключения к Интернету</h2> 
- 
+<h2 id="DetermineConnection">Определение наличия подключения к Интернету</h2>
+
 <p>Если подключение отсутствует, нет смысла планировать обновление из Интернета. В приведенном ниже коде показано, как использовать {@link android.net.ConnectivityManager} для отправки запросов об активной сети и определять возможности подключения.</p>
 
 <pre>ConnectivityManager cm =
         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
 
 
-<h2 id="DetermineType">Определение типа подключения к Интернету</h2> 
+<h2 id="DetermineType">Определение типа подключения к Интернету</h2>
 
 <p>Также можно определить тип доступного в настоящий момент подключения к Интернету.</p>
 
@@ -59,7 +59,7 @@
 <p>Когда обновления отключены, необходимо отслеживать изменения доступных соединений, чтобы возобновить их сразу после подключения устройства к Интернету.</p>
 
 
-<h2 id="MonitorChanges">Отслеживание изменения возможностей подключения</h2> 
+<h2 id="MonitorChanges">Отслеживание изменения возможностей подключения</h2>
 
 <p>{@link android.net.ConnectivityManager} передает действие {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) при каждом изменении сведений о подключении. Зарегистрируйте в манифесте приемник широковещательных намерений, чтобы отслеживать эти изменения и запускать (или приостанавливать) фоновые обновления соответствующим образом.</p>
 
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd
index d94f357..002f351 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>Содержание урока</h2>
@@ -26,7 +26,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Устройства под управлением ОС Android можно подключать к нескольким типам док-станций: настольным, которые делятся на цифровые и аналоговые, и автомобильным. В большинстве случаев устройства заряжаются при подключении к док-станции, поэтому состояние подключения к док-станции часто связано с состоянием зарядки.</p>
@@ -36,8 +36,8 @@
 <p>Состояние подключения к док-станции также передается в виде закрепленного намерения {@link android.content.Intent}, что позволяет запрашивать сведения о наличии подключения к док-станции и ее типе.</p>
 
 
-<h2 id="CurrentDockState">Определение текущего состояния подключения к док-станции</h2> 
- 
+<h2 id="CurrentDockState">Определение текущего состояния подключения к док-станции</h2>
+
 <p>Сведения о состоянии подключения к док-станции передаются в качестве дополнительных данных в закрепленном оповещении действия {@link android.content.Intent#ACTION_DOCK_EVENT}. Поскольку это закрепленное намерение, регистрировать {@link android.content.BroadcastReceiver} не требуется. Достаточно вызвать {@link android.content.Context#registerReceiver registerReceiver()}, передав {@code null} в качестве приемника широковещательных намерений, как показано в коде ниже.</p>
 
 <pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@
 boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
 
 
-<h2 id="DockType">Определение типа док-станции</h2> 
+<h2 id="DockType">Определение типа док-станции</h2>
 
-<p>Док-станция, к которой подключено устройство, может быть одного из четырех типов: 
+<p>Док-станция, к которой подключено устройство, может быть одного из четырех типов:
 <ul><li>автомобильная;</li>
 <li>настольная;</li>
 <li>настольная с минимальным набором функций (аналоговая);</li>
@@ -60,12 +60,12 @@
 <p>Обратите внимание, что последние два типа поддерживаются только на уровне API&nbsp;11, поэтому, даже если вас не интересует, является ли док-станция цифровой или аналоговой, а интересует только ее тип, рекомендуется выполнять проверку по всем трем типам:</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">Отслеживание изменений состояния подключения к док-станции и ее типа</h2> 
+<h2 id="MonitorDockState">Отслеживание изменений состояния подключения к док-станции и ее типа</h2>
 
 <p>При каждом подключении устройства к док-станции или отключении от нее передается действие {@link android.content.Intent#ACTION_DOCK_EVENT}. Чтобы отслеживать состояние подключения к док-станции, достаточно зарегистрировать в манифесте приложения приемник широковещательных намерений, как показано ниже.</p>
 
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd
index c87d9af..e26af09 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
-<h2>Требования</h2> 
+<h2>Требования</h2>
 <ul>
   <li>Android 2.0 (API уровня&nbsp;5) или более поздней версии</li>
   <li>Опыт работы с <a href="{@docRoot}guide/components/intents-filters.html">намерениями и фильтрами намерений</a></li>
@@ -21,19 +21,19 @@
   <li><a href="{@docRoot}guide/components/services.html">Службы</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Качественное приложение должно оказывать минимальное влияние на время работы устройства от батареи. В этом уроке вы научитесь создавать приложения, способные изменять функционал и режим работы в зависимости от состояния устройства.</p>
 
 <p>Отключение обновления данных фоновых служб при потере подключения и снижение частоты обновления при низком заряде батареи позволяет снизить расход энергии и продлить работу устройства без подзарядки.</p>
 
-<h2>Уроки</h2> 
- 
+<h2>Уроки</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="battery-monitoring.html">Отслеживание уровня заряда батареи и состояния зарядки</a></b></dt>
   <dd>Вы узнаете, как изменять частоту обновления приложения, определяя и отслеживая текущий уровень заряда батареи и изменение состояния зарядки.</dd>
@@ -46,4 +46,4 @@
 
   <dt><b><a href="manifest-receivers.html">Операции с приемниками широковещательных намерений по запросу</a></b></dt>
   <dd>Приемники широковещательных намерений, объявленные в манифесте, можно включать и отключать во время работы приложения. Это позволяет отключать ненужные приемники в зависимости от состояния устройства. Вы узнаете, как повысить эффективность путем включения, отключения или каскадирования приемников изменения состояния и как отложить действие до момента перехода устройства в заданное состояние.</dd>
-</dl> 
\ No newline at end of file
+</dl>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd
index 724ee93..2bd0fb9 100644
--- a/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/ru/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>Содержание урока</h2>
@@ -23,7 +23,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Самый простой способ отслеживать изменения состояния устройства&nbsp;– создать приемники {@link android.content.BroadcastReceiver} для каждого отслеживаемого состояния и зарегистрировать их в манифесте приложения. Затем в каждом из этих приемников можно переопределять график повторяющихся оповещений в зависимости от текущего состояния устройства.</p>
@@ -31,10 +31,10 @@
 <p>Этот способ имеет недостатки: приложение активирует устройство при каждом запуске любого из этих приемников, что далеко не всегда оправданно.</p>
 
 <p>Оптимальный вариант&nbsp;– включать и выключать приемники широковещательных намерений во время работы приложения. Это позволяет использовать приемники, объявленные в манифесте, как пассивные оповещения, которые инициируются системными событиями только в случае необходимости.</p>
- 
 
-<h2 id="ToggleReceivers">Включение, отключение и каскадирование приемников изменения состояния для повышения эффективности </h2> 
- 
+
+<h2 id="ToggleReceivers">Включение, отключение и каскадирование приемников изменения состояния для повышения эффективности </h2>
+
 <p>{@link android.content.pm.PackageManager} позволяет включать и выключать любые компоненты, определенные в манифесте, в том числе все приемники широковещательных намерений:</p>
 
 <pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd b/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd
index 490a64a..ee1dd9d 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
+<div id="tb-wrapper">
+<div id="tb">
+
 <h2>Содержание урока</h2>
 
 <ol>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Поддержка планшетных ПК и мобильных телефонов</a></li>
 </ul>
- 
+
 <h2>Упражнение</h2>
- 
+
 <div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>Алгоритм пользовательского интерфейса зависит от макета, который в данный момент отображается. Например, если приложение работает в двухпанельном режиме, то при нажатии на элемент в левой панели содержание отобразится в правой. В однопанельном режиме содержание откроется отдельно (в другой активности).</p>
 
@@ -56,7 +56,7 @@
         setContentView(R.layout.main_layout);
 
         View articleView = findViewById(R.id.article);
-        mIsDualPane = articleView != null &amp;&amp; 
+        mIsDualPane = articleView != null &amp;&amp;
                         articleView.getVisibility() == View.VISIBLE;
     }
 }
@@ -116,7 +116,7 @@
     else {
         /* use list navigation (spinner) */
         actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
-        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+        SpinnerAdapter adap = new ArrayAdapter<String>(this,
                 R.layout.headline_item, CATEGORIES);
         actionBar.setListNavigationCallbacks(adap, handler);
     }
@@ -168,7 +168,7 @@
 public class HeadlinesFragment extends ListFragment {
     ...
     &#64;Override
-    public void onItemClick(AdapterView&lt;?&gt; parent, 
+    public void onItemClick(AdapterView&lt;?&gt; parent,
                             View view, int position, long id) {
         if (null != mHeadlineSelectedListener) {
             mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/ru/training/multiscreen/index.jd b/docs/html-intl/intl/ru/training/multiscreen/index.jd
index 84b9b8b..66cf968 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
-<h2>Требования</h2> 
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Требования</h2>
 
 <ul>
   <li>Android 1.6 или более поздней версии (для запуска учебного приложения требуется версия 2.1 или более поздняя)</li>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких экранов</a></li>
 </ul>
- 
-<h2>Упражнение</h2> 
- 
-<div class="download-box"> 
+
+<h2>Упражнение</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
- 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
 <p>На платформе Android работают устройства с самыми разными размерами экрана: от телефонов до телевизоров. Чтобы с вашим приложением могли работать как можно больше пользователей, оно должно корректно отображаться на всех этих устройствах.</p>
 
 <p>Однако совместимость с разными типами устройств&nbsp;– это еще не все. От размера экрана зависит, какие возможности будет иметь пользователь при работе с приложением. Чтобы пользователи действительно остались довольны вашим приложением, оно должно не просто <em>поддерживать</em> разные экраны, но и быть <em>оптимизировано</em> для каждого из них.</p>
@@ -48,17 +48,17 @@
 
 <p class="note"><strong>Примечание</strong>. В этом модуле и в учебном приложении используется <a
 href="{@docRoot}tools/support-library/index.html">вспомогательная библиотека</a>, позволяющая работать с API  <PH>{@link android.app.Fragment}</PH> в версиях до Android 3.0. Чтобы иметь возможность использовать все необходимые API, загрузите библиотеку и добавьте ее в свое приложение.</p>
- 
 
-<h2>Уроки</h2> 
- 
-<dl> 
-  <dt><b><a href="screensizes.html">Поддержка разных размеров экрана</a></b></dt> 
-    <dd>В этом уроке рассказывается, как создать макет, который адаптируется к разным размерам экрана, используя масштабируемые представления, объекты <PH>{@link android.widget.RelativeLayout}</PH>, квалификаторы размера и ориентации, фильтры псевдонимов и растровые изображений формата nine-patch.</dd> 
- 
-  <dt><b><a href="screendensities.html">Поддержка разных разрешений экрана</a></b></dt> 
-    <dd>В этом уроке рассказывается, как работать с экранами разного разрешения с помощью не зависящих от разрешения пикселей и как подготовить растровые изображения для каждого из них.</dd> 
- 
-  <dt><b><a href="adaptui.html">Реализация адаптируемых алгоритмов работы пользовательского интерфейса</a></b></dt> 
-    <dd>В этом уроке рассказывается, как реализовать алгоритм работы интерфейса, адаптирующийся к размеру и разрешению экрана, то есть способный определять активный макет во время выполнения приложения, выбирать дальнейшие действия на основе текущего макета и обрабатывать изменения конфигурации экрана.</dd> 
-</dl> 
+
+<h2>Уроки</h2>
+
+<dl>
+  <dt><b><a href="screensizes.html">Поддержка разных размеров экрана</a></b></dt>
+    <dd>В этом уроке рассказывается, как создать макет, который адаптируется к разным размерам экрана, используя масштабируемые представления, объекты <PH>{@link android.widget.RelativeLayout}</PH>, квалификаторы размера и ориентации, фильтры псевдонимов и растровые изображений формата nine-patch.</dd>
+
+  <dt><b><a href="screendensities.html">Поддержка разных разрешений экрана</a></b></dt>
+    <dd>В этом уроке рассказывается, как работать с экранами разного разрешения с помощью не зависящих от разрешения пикселей и как подготовить растровые изображения для каждого из них.</dd>
+
+  <dt><b><a href="adaptui.html">Реализация адаптируемых алгоритмов работы пользовательского интерфейса</a></b></dt>
+    <dd>В этом уроке рассказывается, как реализовать алгоритм работы интерфейса, адаптирующийся к размеру и разрешению экрана, то есть способный определять активный макет во время выполнения приложения, выбирать дальнейшие действия на основе текущего макета и обрабатывать изменения конфигурации экрана.</dd>
+</dl>
diff --git a/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd b/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd
index cfd4724..ffcdbbca 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Содержание урока</h2>
 <ol>
@@ -29,15 +29,15 @@
 </ul>
 
 <h2>Упражнение</h2>
- 
-<div class="download-box"> 
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>В этом уроке рассказывается, как создать интерфейс, поддерживающий разные разрешения экрана, за счет использования разных ресурсов и не зависящих от разрешения единиц измерения.</p>
 
@@ -48,8 +48,8 @@
 <p>Например, если вы задаете расстояние между двумя представлениями, рекомендуется использовать <code>dp</code>, а не <code>px</code>:</p>
 
 <pre>
-&lt;Button android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+&lt;Button android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:text="&#64;string/clickme"
     android:layout_marginTop="20dp" /&gt;
 </pre>
@@ -57,8 +57,8 @@
 <p>Для определения размера шрифта всегда используйте <code>sp</code>:</p>
 
 <pre>
-&lt;TextView android:layout_width="match_parent" 
-    android:layout_height="wrap_content" 
+&lt;TextView android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:textSize="20sp" /&gt;
 </pre>
 
diff --git a/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd b/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd
index 9684d77..57496d9 100644
--- a/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/ru/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>Содержание урока</h2>
 <ol>
@@ -30,26 +30,26 @@
   <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких экранов</a></li>
 </ul>
 
-<h2>Упражнение</h2> 
- 
-<div class="download-box"> 
+<h2>Упражнение</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
 
 <p>В этом уроке описаны следующие аспекты обеспечения совместимости интерфейса с разными экранами:</p>
-<ul> 
-  <li>обеспечение способности макета адаптироваться к размеру экрана;</li> 
-  <li>выбор макета интерфейса, отвечающего конфигурации экрана;</li> 
+<ul>
+  <li>обеспечение способности макета адаптироваться к размеру экрана;</li>
+  <li>выбор макета интерфейса, отвечающего конфигурации экрана;</li>
   <li>контроль правильности применяемого макета;</li>
-  <li>использование масштабируемых растровых изображений.</li> 
-</ul> 
+  <li>использование масштабируемых растровых изображений.</li>
+</ul>
 
 
-<h2 id="TaskUseWrapMatchPar">Использование параметров wrap_content и match_parent</h2> 
+<h2 id="TaskUseWrapMatchPar">Использование параметров wrap_content и match_parent</h2>
 
 <p>Чтобы создать масштабируемый макет, способный адаптироваться к разным экранам, используйте в качестве значений ширины и высоты отдельных компонентов представления параметры <code>"wrap_content"</code> и <code>"match_parent"</code>. Если используется <code>"wrap_content"</code>, для ширины или высоты представления устанавливается минимальное значение, позволяющее уместить содержание на экран, а параметр <code>"match_parent"</code> (известный как <code>"fill_parent"</code> в API до 8&nbsp;уровня) служит для растягивания компонента по размеру родительского представления.</p>
 
@@ -65,7 +65,7 @@
 <p class="img-caption"><strong>Рисунок 1</strong>. Приложение News Reader при вертикальной (слева) и горизонтальной (справа) ориентации.</p>
 
 
-<h2 id="TaskUseRelativeLayout">Использование объекта RelativeLayout</h2> 
+<h2 id="TaskUseRelativeLayout">Использование объекта RelativeLayout</h2>
 
 <p>С помощью вложенных экземпляров объекта <PH>{@link android.widget.LinearLayout}</PH> и параметров <code>"wrap_content"</code> и <code>"match_parent"</code> можно создавать достаточно сложные макеты. Однако <PH>{@link android.widget.LinearLayout}</PH> не дает возможности точно управлять взаимным расположением дочерних представлений: в <PH>{@link android.widget.LinearLayout}</PH> они просто помещаются в ряд друг за другом. Если необходимо расположить дочерние представления иным образом, используйте объект <PH>{@link android.widget.RelativeLayout}</PH>, позволяющий задать относительные позиции компонентов. Например, одно дочернее представление можно выровнять по левому краю экрана, а другое&nbsp;– по правому.</p>
 
@@ -115,8 +115,8 @@
 
 <p>Обратите внимание: несмотря на изменение размера компонентов их взаимное расположение остается прежним, так как оно задано объектом <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH>.</p>
 
- 
-<h2 id="TaskUseSizeQuali">Использование квалификаторов размера</h2> 
+
+<h2 id="TaskUseSizeQuali">Использование квалификаторов размера</h2>
 
 <p>Масштабируемые или относительные макеты, один из которых продемонстрирован выше, имеют свои ограничения. Хотя они позволяют создать интерфейс, способный адаптироваться к разным экранам за счет растягивания пространства внутри и вокруг компонентов, пользователю может оказаться не слишком удобно работать с таким интерфейсом. Поэтому в приложении должен использоваться не один масштабируемый макет, а несколько альтернативных вариантов для разных конфигураций экрана. Их можно создать с помощью <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">квалификаторов конфигураций</a>, которые позволяют оперативно выбирать ресурсы, отвечающие текущим параметрам экрана (например, разные варианты макетов для экранов разных размеров).</p>
 
@@ -158,7 +158,7 @@
 <p>Следует учесть, что на Android-устройствах до версии 3.2 квалификатор <code>sw600dp</code> не будет работать, поэтому для них по-прежнему нужно использовать <code>large</code>. Таким образом, вам потребуется еще один файл с названием <code>res/layout-large/main.xml</code>, идентичный файлу <code>res/layout-sw600dp/main.xml</code>. В следующем разделе вы познакомитесь с методом, который позволяет избежать дублирования таких файлов макета.</p>
 
 
-<h2 id="TaskUseAliasFilters">Использование псевдонимов макетов</h2> 
+<h2 id="TaskUseAliasFilters">Использование псевдонимов макетов</h2>
 
 <p>Квалификатор Smallest-width работает только на устройствах Android 3.2 или более поздних версий. Для совместимости с более ранними устройствами по-прежнему следует использовать абстрактные размеры (small, normal, large и xlarge). Например, чтобы интерфейс открывался в однопанельном режиме на телефонах и в многопанельном на планшетных ПК с 7-дюймовым экраном, телевизорах и других крупных устройствах, подготовьте следующие файлы:</p>
 
@@ -202,7 +202,7 @@
 <PH>{@code large}</PH>, а для более новых&nbsp;– <code>sw600dp</code>).</p>
 
 
-<h2 id="TaskUseOriQuali">Использование квалификаторов ориентации</h2> 
+<h2 id="TaskUseOriQuali">Использование квалификаторов ориентации</h2>
 
 <p>Хотя некоторые макеты одинаково хорошо смотрятся в вертикальной и горизонтальной ориентациях, в большинстве случаев интерфейс все же приходится адаптировать. Ниже показано, как изменяется макет в приложении News Reader в зависимости от размера и ориентации экрана.</p>
 
diff --git a/docs/html-intl/intl/vi/design/patterns/navigation.jd b/docs/html-intl/intl/vi/design/patterns/navigation.jd
index 98490db..a3d6003 100644
--- a/docs/html-intl/intl/vi/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/vi/design/patterns/navigation.jd
@@ -168,7 +168,7 @@
 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. 
+<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>
 
diff --git a/docs/html-intl/intl/vi/guide/components/activities.jd b/docs/html-intl/intl/vi/guide/components/activities.jd
index 83e7669..304b73c 100644
--- a/docs/html-intl/intl/vi/guide/components/activities.jd
+++ b/docs/html-intl/intl/vi/guide/components/activities.jd
@@ -57,7 +57,7 @@
 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ó 
+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>
@@ -139,7 +139,7 @@
 <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> 
+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>
 
@@ -161,7 +161,7 @@
 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> 
+<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>
 
 
@@ -200,7 +200,7 @@
 <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ử 
+&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
@@ -324,7 +324,7 @@
 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 
+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>
 
 
@@ -350,7 +350,7 @@
 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 
+    <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
@@ -608,7 +608,7 @@
 
 <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 
+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
diff --git a/docs/html-intl/intl/vi/guide/components/bound-services.jd b/docs/html-intl/intl/vi/guide/components/bound-services.jd
index 7a2ddba..9d19e05 100644
--- a/docs/html-intl/intl/vi/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/vi/guide/components/bound-services.jd
@@ -357,7 +357,7 @@
 
 
 <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 
+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>
@@ -539,7 +539,7 @@
 </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 
+<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>
 
diff --git a/docs/html-intl/intl/vi/guide/components/fragments.jd b/docs/html-intl/intl/vi/guide/components/fragments.jd
index 95d9c76..7b6346c 100644
--- a/docs/html-intl/intl/vi/guide/components/fragments.jd
+++ b/docs/html-intl/intl/vi/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -148,7 +148,7 @@
 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ó 
+  <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>
@@ -303,7 +303,7 @@
   <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 
+    <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>
@@ -362,7 +362,7 @@
 
 <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à 
+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>
 
 
@@ -378,7 +378,7 @@
   <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> 
+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
@@ -562,9 +562,9 @@
 }
 </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 
+<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 
+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
@@ -785,7 +785,7 @@
 
 <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í
@@ -798,7 +798,7 @@
 
 {@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
diff --git a/docs/html-intl/intl/vi/guide/components/fundamentals.jd b/docs/html-intl/intl/vi/guide/components/fundamentals.jd
index 4b70140..725c68d 100644
--- a/docs/html-intl/intl/vi/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/vi/guide/components/fundamentals.jd
@@ -295,16 +295,16 @@
 <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> 
+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> 
+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> 
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
 cho trình cung cấp nội dung</li>
 </ul>
 
@@ -379,7 +379,7 @@
 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> 
+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 ... >
diff --git a/docs/html-intl/intl/vi/guide/components/index.jd b/docs/html-intl/intl/vi/guide/components/index.jd
index 966597d..87b51c2 100644
--- a/docs/html-intl/intl/vi/guide/components/index.jd
+++ b/docs/html-intl/intl/vi/guide/components/index.jd
@@ -1,7 +1,7 @@
 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.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
 
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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
@@ -32,7 +32,7 @@
 
   <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ể
diff --git a/docs/html-intl/intl/vi/guide/components/loaders.jd b/docs/html-intl/intl/vi/guide/components/loaders.jd
index b6d277f..0585076 100644
--- a/docs/html-intl/intl/vi/guide/components/loaders.jd
+++ b/docs/html-intl/intl/vi/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>Lớp khóa</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </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">
@@ -51,7 +51,7 @@
 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
@@ -129,10 +129,10 @@
 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> 
+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 
+  <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>
@@ -140,7 +140,7 @@
 <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> 
+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
@@ -157,13 +157,13 @@
 <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> 
+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à 
+<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 cụ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> 
+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>
@@ -193,7 +193,7 @@
 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>). 
+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>
@@ -245,7 +245,7 @@
 — Đượ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()}  
+  <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>
@@ -315,7 +315,7 @@
 <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 
+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>
 
 
@@ -340,11 +340,11 @@
 
 <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 
+<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()}  
+<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>
@@ -366,7 +366,7 @@
 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>
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
index 390ca15..b9933ed 100644
--- a/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
+++ b/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
@@ -120,7 +120,7 @@
 
       <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). 
+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>
 
@@ -202,7 +202,7 @@
 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 
+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>
 
@@ -319,7 +319,7 @@
     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) {
diff --git a/docs/html-intl/intl/vi/guide/components/recents.jd b/docs/html-intl/intl/vi/guide/components/recents.jd
index 0a17614..271c05d 100644
--- a/docs/html-intl/intl/vi/guide/components/recents.jd
+++ b/docs/html-intl/intl/vi/guide/components/recents.jd
@@ -180,7 +180,7 @@
   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} 
+<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>
 
@@ -191,7 +191,7 @@
 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 
+<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>
diff --git a/docs/html-intl/intl/vi/guide/components/services.jd b/docs/html-intl/intl/vi/guide/components/services.jd
index 9e3e6c7..fc2a7eae 100644
--- a/docs/html-intl/intl/vi/guide/components/services.jd
+++ b/docs/html-intl/intl/vi/guide/components/services.jd
@@ -199,7 +199,7 @@
 &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> 
+<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> để
@@ -605,7 +605,7 @@
 
 <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 
+<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>
 
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
index 85affff..76df1dd 100644
--- 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
@@ -190,7 +190,7 @@
 
 <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, 
+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
@@ -314,7 +314,7 @@
   <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 
+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ể
@@ -557,9 +557,9 @@
 . 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ử 
+<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>
 
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
index ca2ed26..06668b4 100644
--- a/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
@@ -31,27 +31,27 @@
 <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 
+<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ó 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ó 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ó để 
+<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à 
+<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 
+<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>
@@ -61,12 +61,12 @@
 <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ơ đồ, 
+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ử. 
+nội dung nào khác đề cập tới tên phần tử.
 </p>
 
 <pre>
@@ -126,9 +126,9 @@
 </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.  
+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">
@@ -158,74 +158,74 @@
 </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 
+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ử 
+<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ó 
+<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.  
+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-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> 
+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 
+<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 
+<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>).  
+<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 đủ.  
+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>
 
@@ -239,12 +239,12 @@
 &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> 
+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: 
+<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;
@@ -257,13 +257,13 @@
 &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.  
+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.  
+<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;
@@ -274,24 +274,24 @@
 &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ị 
+<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ể.  
+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 ?}' 
+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>
 
@@ -299,8 +299,8 @@
 </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 
+<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>
 
@@ -308,7 +308,7 @@
 <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 
+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>
 
@@ -316,23 +316,23 @@
 <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 đó 
+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ử 
+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 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>
 
@@ -344,9 +344,9 @@
 </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 
+Để 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>
 
@@ -354,42 +354,42 @@
 <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ử 
+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 
+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> 
+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à 
+<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 
+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 
+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 
+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>
 
@@ -397,14 +397,14 @@
 <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.  
+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 
+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>
 
@@ -418,25 +418,25 @@
 </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 
+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. 
+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ử 
+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>
@@ -457,43 +457,43 @@
 </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ử 
+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.  
+, 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ử 
+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>. 
+.  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à 
+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ử 
+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; 
+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> 
+<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>
 
@@ -501,17 +501,17 @@
 <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, 
+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 
+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
index e2ecdb3..c9d779b 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@
       <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>
 
@@ -63,8 +63,8 @@
 
 <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 
+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>
 
 
@@ -79,17 +79,17 @@
 
 <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 
+<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 
+<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ả 
+ 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
@@ -113,26 +113,26 @@
   </tr>
   <tr>
     <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-    
-    <td>Bảng này chứa 
+
+    <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} 
+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
@@ -141,7 +141,7 @@
   </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
@@ -149,17 +149,17 @@
   </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 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
@@ -178,9 +178,9 @@
 
 
 <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 
+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}, 
+{@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ề
@@ -209,9 +209,9 @@
 
 <h2 id="calendar">Bảng Lịch</h2>
 
-<p>Bảng {@link android.provider.CalendarContract.Calendars} chứa thông tin chi tiết 
+<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>. 
+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>
@@ -229,7 +229,7 @@
   </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
@@ -240,10 +240,10 @@
   </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 
+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>
@@ -253,8 +253,8 @@
 <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ỉ 
+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>
 
@@ -268,18 +268,18 @@
     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 
+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à
@@ -289,7 +289,7 @@
 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> 
+đồ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
@@ -301,58 +301,58 @@
 đã 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, 
+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 (" 
+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. 
+        "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 
+Uri
 
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+({@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. 
+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ã hó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 
+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>
 
@@ -375,7 +375,7 @@
 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} 
+{@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>
@@ -434,7 +434,7 @@
   </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
@@ -444,39 +444,39 @@
   </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} 
+    <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 
+
+    <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>
@@ -514,11 +514,11 @@
 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
@@ -526,9 +526,9 @@
 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 
+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
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -578,14 +578,14 @@
 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 
+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. 
+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 
+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>
 
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -625,22 +625,22 @@
 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);  
+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()} 
+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. 
+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> 
+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ả 
+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>
 
@@ -698,7 +698,7 @@
 <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} 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
 là bắt buộc:</p>
 
 <pre>
@@ -718,17 +718,17 @@
 <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 
+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 
+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} 
+android.provider.CalendarContract.Calendars}. Xem
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
 để biết chi tiết.</p>
 
 
@@ -773,16 +773,16 @@
 
 <h2 id="instances">Bảng Thực thể</h2>
 
-<p>Bảng 
+<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à 
+<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>
 
 
@@ -801,18 +801,18 @@
   </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. 
-    
+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>
@@ -820,16 +820,16 @@
   </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>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. 
+của Lịch.
 </td>
-    
+
   </tr>
 
 </table>
@@ -840,7 +840,7 @@
 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ó. 
+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
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -922,9 +922,9 @@
     <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>. 
+    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>
@@ -935,11 +935,11 @@
 
      </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}. 
+
+    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>
 
@@ -952,12 +952,12 @@
   <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}. 
+
+  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>
 
@@ -972,11 +972,11 @@
     <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}. 
+
+   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>
@@ -996,7 +996,7 @@
     <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>
@@ -1004,25 +1004,25 @@
   <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>Các phần sau mô tả cách sử dụng những ý định này.</p>
 
 
@@ -1059,23 +1059,23 @@
 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} 
+  <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
@@ -1083,10 +1083,10 @@
 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();
@@ -1158,18 +1158,18 @@
 
 <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, 
+  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à 
+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>
@@ -1180,5 +1180,5 @@
         .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 
+<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
index 2fa2ed3..2d94e10 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
@@ -253,7 +253,7 @@
             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 
+            "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
@@ -1697,7 +1697,7 @@
 <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 
+    {@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>
@@ -1821,7 +1821,7 @@
     </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à 
+    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à
@@ -1830,7 +1830,7 @@
 </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ô. 
+    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.
@@ -1934,7 +1934,7 @@
         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 
+        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.
@@ -2344,7 +2344,7 @@
     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ô, 
+    {@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ô.
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
index 5f868ca..808c0f7 100644
--- 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
@@ -236,7 +236,7 @@
     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 
+    {@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>
@@ -251,7 +251,7 @@
 </pre>
 <p>
     Bảng 2 cho biết các tham đối tới
-    {@link android.content.ContentResolver#query 
+    {@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">
@@ -292,7 +292,7 @@
         <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 
+            <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>
@@ -344,7 +344,7 @@
 </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. 
+    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.
@@ -359,8 +359,8 @@
 </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 
+    {@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
@@ -428,7 +428,7 @@
 <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 
+    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>
@@ -438,8 +438,8 @@
 <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ê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>
@@ -565,14 +565,14 @@
 <!-- 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 
+    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 
+    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">
@@ -703,14 +703,14 @@
 <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 
+    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> 
+<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>
@@ -793,8 +793,8 @@
     Để 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 
+    {@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>
@@ -828,7 +828,7 @@
 </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ề 
+    {@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>
@@ -858,7 +858,7 @@
 </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ề 
+    {@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 -->
@@ -929,7 +929,7 @@
     </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 đó, 
+        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>
@@ -947,14 +947,14 @@
     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ể. 
+    <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 
+    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ó.
@@ -1053,7 +1053,7 @@
         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 
+        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ạ.
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
index 2e8579a..fcc9b0e 100644
--- 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
@@ -221,7 +221,7 @@
         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à 
+        Để 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">
@@ -381,7 +381,7 @@
     </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 
+        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>
@@ -614,7 +614,7 @@
 </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()} 
+    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ể
@@ -626,7 +626,7 @@
     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#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>
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
index 30844d7..7948fc2 100644
--- a/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
+++ b/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
@@ -146,7 +146,7 @@
 
 
 <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 
+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
@@ -177,7 +177,7 @@
 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 
+<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>
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
index b5491dc..0054562 100644
--- a/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
+++ b/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
@@ -259,8 +259,8 @@
     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. 
+<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,
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
index b733643..ef1c6b6 100644
--- a/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
+++ b/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
@@ -190,7 +190,7 @@
   </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 
+<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>
@@ -312,7 +312,7 @@
         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 
+              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>
@@ -498,7 +498,7 @@
         <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à 
+        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
@@ -510,7 +510,7 @@
 ứ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},
@@ -530,7 +530,7 @@
           <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ó 
+        <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>
@@ -628,7 +628,7 @@
           <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> 
+            <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ỡ
@@ -950,7 +950,7 @@
 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ó 
+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
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
index 4a9c38c..328b8ec 100644
--- a/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
+++ b/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
@@ -82,12 +82,12 @@
 <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 
+  <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 
+  <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>
 
@@ -125,8 +125,8 @@
 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 
+<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>
@@ -168,7 +168,7 @@
 <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 
+{@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>
 
 
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/controls.jd b/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
index 37fe81c..eda0050 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <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} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 6add812..5485200 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
@@ -107,7 +107,7 @@
 
 <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 
+<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>,
@@ -260,7 +260,7 @@
    </p>
 
    <p>
-   Cặp thứ nhất được gọi là <em>chiều rộng đo được</em> và 
+   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()}
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
index 1fa4550..00d5230 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -235,8 +235,8 @@
 </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 
+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>
@@ -248,7 +248,7 @@
   <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> 
+  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
@@ -271,7 +271,7 @@
 <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, 
+<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">
@@ -291,7 +291,7 @@
 
 <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()}. 
+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
@@ -317,11 +317,11 @@
 
 <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 
+<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) 
+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ư
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -373,7 +373,7 @@
 
 <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) 
+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>
@@ -442,7 +442,7 @@
 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 
+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í.
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
@@ -776,7 +776,7 @@
 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 
+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>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/menus.jd b/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
index 8e9e1c4..7950907 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@
 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.
@@ -94,7 +94,7 @@
 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
@@ -128,14 +128,14 @@
 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ử 
+    <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
@@ -273,7 +273,7 @@
 
 <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, 
+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>
 
@@ -346,7 +346,7 @@
 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 
+<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ó,
@@ -363,7 +363,7 @@
 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> 
+<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
@@ -609,7 +609,7 @@
 
 <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, 
+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>
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -1026,6 +1026,6 @@
 <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 
+<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
index 5890cb3..8b6e1c84 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
@@ -150,7 +150,7 @@
     {@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.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
@@ -449,7 +449,7 @@
         <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ử 
+                {@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>.
@@ -466,9 +466,9 @@
                 </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 
+                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ử 
+                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>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/overview.jd b/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
index 7bd4552..260b40d 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <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
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/settings.jd b/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
index 8e19b97..47a5c27 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
@@ -82,7 +82,7 @@
 
 <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} 
+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>
 
 
@@ -121,7 +121,7 @@
 
 <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.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>
@@ -226,7 +226,7 @@
   <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}. 
+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
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -569,7 +569,7 @@
 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> 
+<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>
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@
 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> 
+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 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -834,7 +834,7 @@
 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 để 
+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ý
@@ -902,7 +902,7 @@
 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 
+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>
@@ -946,7 +946,7 @@
 <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) 
+  <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
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -1034,7 +1034,7 @@
 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ì 
+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
@@ -1060,7 +1060,7 @@
 </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 
+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>
 
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index b4d1635..c2b337c 100644
--- a/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
+++ b/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
@@ -20,8 +20,8 @@
 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 
+<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
@@ -30,7 +30,7 @@
 đượ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ó 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>
@@ -38,7 +38,7 @@
 
 <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 
+<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>
 
@@ -46,27 +46,27 @@
 
 <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 
+    <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 
+    <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}. 
+    <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}. 
+    <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}. 
+    <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}. 
+    <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>
@@ -75,8 +75,8 @@
 <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> 
+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>
@@ -121,17 +121,17 @@
 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; 
+  <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> - 
+  <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; 
+    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> - 
+  <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
@@ -176,19 +176,19 @@
   <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 
+<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 
+    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 
+    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>
 
@@ -199,7 +199,7 @@
 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." 
+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ị
@@ -214,7 +214,7 @@
 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). 
+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>
@@ -254,10 +254,10 @@
 
 <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ẽ 
+đã đị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), 
+<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>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/vi/preview/api-overview.jd b/docs/html-intl/intl/vi/preview/api-overview.jd
index 0e2c35e..5abc2f8 100644
--- a/docs/html-intl/intl/vi/preview/api-overview.jd
+++ b/docs/html-intl/intl/vi/preview/api-overview.jd
@@ -336,7 +336,7 @@
 <h2 id="number-blocking">Chặn số</h2>
 
 <p>Android N đã hỗ trợ chặn số điện thoại trong nền tảng này và cung cấp một
- API khuôn khổ cho phép các nhà cung cấp dịch vụ duy trì một danh sách số bị chặn. 
+ API khuôn khổ cho phép các nhà cung cấp dịch vụ duy trì một danh sách số bị chặn.
 Ứng dụng SMS mặc định, ứng dụng gọi điện mặc định và các ứng dụng của nhà cung cấp có thể đọc và
 ghi vào danh sách số bị chặn. Các ứng dụng khác không thể truy cập vào danh sách này.</p>
 
diff --git a/docs/html-intl/intl/vi/preview/behavior-changes.jd b/docs/html-intl/intl/vi/preview/behavior-changes.jd
index 2c287504..3060fbf 100644
--- a/docs/html-intl/intl/vi/preview/behavior-changes.jd
+++ b/docs/html-intl/intl/vi/preview/behavior-changes.jd
@@ -67,7 +67,7 @@
 <p>
   Được đưa vào Android 6.0 (Mức API 23), Chế độ Ngủ sâu cải thiện thời lượng pin bằng cách
   trì hoãn các hoạt động của CPU và mạng khi người dùng không cắm sạc,
-   không di chuyển và tắt màn hình thiết bị. Android N 
+   không di chuyển và tắt màn hình thiết bị. Android N
   thêm các cải tiến cho Chế độ Ngủ sâu bằng cách sử dụng một tập con các hạn chế của CPU và mạng
   khi thiết bị không được cắm sạc với màn hình bị tắt, nhưng không nhất thiết
   phải để một chỗ, ví dụ như một thiết bị cầm tay di chuyển trong túi của người dùng.
@@ -250,7 +250,7 @@
 <ul>
   <li>Nếu một ứng dụng nhắm mục tiêu mức API 23 hoặc thấp hơn thì hệ thống sẽ tự động tắt
   tất cả các tiến trình chạy ngầm của ứng dụng đó. Điều này có nghĩa là nếu một người dùng rời khỏi
-  ứng dụng đó để mở màn hình <em>Settings</em> và thay đổi 
+  ứng dụng đó để mở màn hình <em>Settings</em> và thay đổi
   <strong>Display size</strong> thì hệ thống sẽ tắt ứng dụng giống
  như trong trường hợp thiết bị thiếu bộ nhớ. Nếu ứng dụng đó có bất kỳ tiến trình nào
   chạy ở tiền cảnh thì hệ thống sẽ thông báo cho các tiến trình đó về thay đổi cấu hình như
@@ -418,7 +418,7 @@
 
   <li>Giờ đây các hạn chế đặt lại mật khẩu cho người quản lý thiết bị sẽ áp dụng với người sở hữu
    cấu hình. Người quản lý thiết bị không thể sử dụng
-  <code>DevicePolicyManager.resetPassword()</code> được nữa để xóa mật khẩu hoặc thay đổi 
+  <code>DevicePolicyManager.resetPassword()</code> được nữa để xóa mật khẩu hoặc thay đổi
   các mật khẩu đã đặt. Người quản lý thiết bị vẫn có thể đặt một mật khẩu nhưng chỉ
   khi thiết bị không có mật khẩu, mã PIN hoặc mẫu hình.
   </li>
diff --git a/docs/html-intl/intl/vi/preview/download.jd b/docs/html-intl/intl/vi/preview/download.jd
index f6aa7cc..8b2a272 100644
--- a/docs/html-intl/intl/vi/preview/download.jd
+++ b/docs/html-intl/intl/vi/preview/download.jd
@@ -209,7 +209,7 @@
 <h2 id="device-preview">Thiết lập thiết bị phần cứng</h2>
 
 <p>
-  Bản N Developer Preview cung cấp các cập nhật hệ thống cho một loạt các thiết bị phần cứng 
+  Bản N Developer Preview cung cấp các cập nhật hệ thống cho một loạt các thiết bị phần cứng
   mà bạn có thể sử dụng để kiểm thử ứng dụng của bạn, từ điện thoại tới máy tính bảng và TV.
 </p>
 
@@ -220,8 +220,8 @@
 
 <ul>
   <li><strong>Đăng ký cập nhật hệ thống tự động qua vô tuyến cho thiết bị</strong> thông qua
-  <a href="https://g.co/androidbeta">Chương trình Android Beta</a>. Sau khi đăng ký, thiết bị của bạn sẽ nhận được 
-  qua sóng vô tuyến các cập nhật định kỳ về tất cả bản dựng theo mốc trong bản N Developer Preview. Cách tiếp cận này 
+  <a href="https://g.co/androidbeta">Chương trình Android Beta</a>. Sau khi đăng ký, thiết bị của bạn sẽ nhận được
+  qua sóng vô tuyến các cập nhật định kỳ về tất cả bản dựng theo mốc trong bản N Developer Preview. Cách tiếp cận này
   được khuyến khích bởi nó cho phép bạn chuyển tiếp liền mạch từ môi trường hiện tại của bạn
  qua nhiều bản phát hành khác nhau của N Developer Preview.</li>
   <li><strong>Tải xuống ảnh hệ thống của Developer Preview và flash thiết bị</strong>.
@@ -264,7 +264,7 @@
   flash thủ công nó vào thiết bị của bạn. Xem bảng dưới đây để tải xuống ảnh hệ thống
   cho thiết bị kiểm thử của bạn. Việc flash thủ công thiết bị sẽ hữu ích nếu bạn cần
   kiểm soát chính xác môi trường kiểm thử hoặc cần phải cài đặt lại thường xuyên,
-  chẳng hạn như cho kiểm thử tự động. 
+  chẳng hạn như cho kiểm thử tự động.
 </p>
 
 <!-- You can flash by ota or system image --><p>
@@ -286,10 +286,10 @@
 </p>
 
 <p>
-  Nếu bạn quyết định muốn nhận cập nhật qua vô tuyến sau khi đã flash thủ công thiết bị, 
+  Nếu bạn quyết định muốn nhận cập nhật qua vô tuyến sau khi đã flash thủ công thiết bị,
   tất cả những gì bạn cần làm là đăng ký <a href="https://g.co/androidbeta">Chương trình Android
   Beta</a> cho thiết bị. Bạn có thể đăng ký thiết bị bất cứ lúc nào để nhận được
-  bản cập nhật qua vô tuyến tiếp theo của Preview. 
+  bản cập nhật qua vô tuyến tiếp theo của Preview.
 </p>
 
 <table>
@@ -300,64 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
-      MD5: b5cf874021023b398f5b983b24913f5d<br>
-      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
-      MD5: af183638cf34e0eb944a1957d7696f60<br>
-      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
-      MD5: bc4934ea7bd325753eee1606d3725a24<br>
-      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
-      MD5: c901334c6158351e945f188167ae56f4<br>
-      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
-      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
-      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
-      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
-      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </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><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </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><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
@@ -423,7 +432,7 @@
 
   <li>Nhấp vào tab <strong>SDK Tools</strong>, rồi chọn
     <strong>Android SDK Build Tools</strong>, <strong>Android SDK
-    Platform-Tools</strong>, và các hộp kiểm <strong>Android SDK Tools</strong> 
+    Platform-Tools</strong>, và các hộp kiểm <strong>Android SDK Tools</strong>
 .
   </li>
 
@@ -464,7 +473,7 @@
 
 <p class="note"><strong>Lưu ý:</strong>
   Nếu bạn hiện đang sử dụng Android Studio 2.0 Beta, một vấn đề đã được biết đến
- sẽ ngăn cản bạn tạo AVD bằng ảnh hệ thống của N Preview, vì vậy 
+ sẽ ngăn cản bạn tạo AVD bằng ảnh hệ thống của N Preview, vì vậy
   hiện bạn cần sử dụng preview của Android Studio 2.1 để tạo các AVD.
 </p>
 
diff --git a/docs/html-intl/intl/vi/preview/features/background-optimization.jd b/docs/html-intl/intl/vi/preview/features/background-optimization.jd
index 9554725..39e1c15 100644
--- a/docs/html-intl/intl/vi/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/vi/preview/features/background-optimization.jd
@@ -60,7 +60,7 @@
 
 <ul>
   <li>Các ứng dụng nhắm đến Preview không nhận được truyền phát {@link
-  android.net.ConnectivityManager#CONNECTIVITY_ACTION} nếu chúng 
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} nếu chúng
   đăng ký nhận truyền phát trong bản kê khai của chúng. Các ứng dụng đang chạy ở tiền cảnh
   vẫn có thể theo dõi {@code CONNECTIVITY_CHANGE} trên luồng chính của chúng bằng cách
   đăng ký{@link android.content.BroadcastReceiver} với {@link
@@ -119,7 +119,7 @@
 </h3>
 
 <p>
-  Khi sử dụng lớp{@link android.app.job.JobInfo.Builder JobInfo.Builder} 
+  Khi sử dụng lớp{@link android.app.job.JobInfo.Builder JobInfo.Builder}
   để xây dựng đối tượng {@link android.app.job.JobInfo} của bạn, hãy áp dụng phương thức {@link
   android.app.job.JobInfo.Builder#setRequiredNetworkType
   setRequiredNetworkType()} và chuyển {@link android.app.job.JobInfo
@@ -145,7 +145,7 @@
 </pre>
 
 <p>
-  Khi các điều kiện cho tác vụ của bạn đã được đáp ứng, ứng dụng của bạn sẽ nhận được lệnh gọi lại để chạy 
+  Khi các điều kiện cho tác vụ của bạn đã được đáp ứng, ứng dụng của bạn sẽ nhận được lệnh gọi lại để chạy
   phương thức{@link android.app.job.JobService#onStartJob onStartJob()}trong
   {@code JobService.class} được chỉ định. Để xem thêm các ví dụ về triển khai {@link
   android.app.job.JobScheduler} , hãy xem <a href="{@docRoot}samples/JobScheduler/index.html">ứng dụng mẫu JobScheduler</a>.
@@ -243,7 +243,7 @@
 </dl>
 
 <p class="note">
-  <strong>Lưu ý:</strong> {@code TriggerContentUri()} không thể được sử dụng 
+  <strong>Lưu ý:</strong> {@code TriggerContentUri()} không thể được sử dụng
   kết hợp với {@link android.app.job.JobInfo.Builder#setPeriodic
   setPeriodic()} hoặc {@link android.app.job.JobInfo.Builder#setPersisted
   setPersisted()}. Để tiếp tục theo dõi các thay đổi nội dung, hãy lên lịch một
@@ -313,7 +313,7 @@
 
 <p>
   Mã mẫu sau sẽ ghi đè lên phương thức {@link
-  android.app.job.JobService#onStartJob JobService.onStartJob()} và 
+  android.app.job.JobService#onStartJob JobService.onStartJob()} và
   và ghi lại các thẩm quyền nội dung và URI đã kích hoạt tác vụ.
 </p>
 
@@ -357,7 +357,7 @@
   bộ nhớ ít có thể cải thiện hiệu suất và trải nghiệm của người dùng. Loại bỏ
   các thành phần phụ thuộc trên các dịch vụ chạy ngầm và bộ thu truyền phát không biểu thị đã đăng ký tĩnh
   có thể giúp ứng dụng của bạn chạy tốt hơn trên các thiết bị như vậy. Mặc dù
-  N Developer Preview thực hiện các bước để giảm bớt một vài trong số các vấn đề này, nhưng chúng tôi 
+  N Developer Preview thực hiện các bước để giảm bớt một vài trong số các vấn đề này, nhưng chúng tôi
   khuyến nghị bạn nên tối ưu ứng dụng của bạn để chạy hoàn toàn không cần sử dụng
   các tiến trình chạy ngầm này.
 </p>
diff --git a/docs/html-intl/intl/vi/preview/features/direct-boot.jd b/docs/html-intl/intl/vi/preview/features/direct-boot.jd
index d95d831..9b2a557 100644
--- a/docs/html-intl/intl/vi/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/vi/preview/features/direct-boot.jd
@@ -81,7 +81,7 @@
 &lt;/receiver&gt;
 </pre>
 
-<p>Khi người dùng đã mở khóa thiết bị thì mọi thành phần có thể truy cập 
+<p>Khi người dùng đã mở khóa thiết bị thì mọi thành phần có thể truy cập
 cả bộ nhớ lưu trữ mã hóa thiết bị lẫn bộ nhớ lưu trữ mã hóa thông tin xác thực.</p>
 
 <h2 id="access">Truy cập Bộ nhớ Lưu trữ Mã hóa của Thiết bị</h2>
@@ -89,7 +89,7 @@
 <p>Để truy cập bộ nhớ lưu trữ mã hóa thiết bị, hãy tạo một thực thể
 {@link android.content.Context} thứ hai bằng cách gọi
 <code>Context.createDeviceEncryptedStorageContext()</code>. Tất cả các lệnh gọi
-API bộ nhớ lưu trữ đều sử dụng bối cảnh này để truy cập bộ nhớ lưu trữ mã hóa thiết bị. 
+API bộ nhớ lưu trữ đều sử dụng bối cảnh này để truy cập bộ nhớ lưu trữ mã hóa thiết bị.
 Ví dụ sau sẽ truy cập bộ nhớ lưu trữ mã hóa của thiết bị và mở một tệp
 dữ liệu ứng dụng có sẵn:</p>
 
diff --git a/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd b/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
index 63f6825..ffb5799 100644
--- a/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
+++ b/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
@@ -51,7 +51,7 @@
 
 <p>
   Android N cung cấp một tập nhỏ các API ICU4J thông qua
-  gói <code>android.icu</code> thay vì gói <code>com.ibm.icu</code>. 
+  gói <code>android.icu</code> thay vì gói <code>com.ibm.icu</code>.
 Khuôn khổ Android có thể chọn không
    cung cấp các API ICU4J vì nhiều lý do; ví dụ, Android N không cung cấp
    một số API bị loại bỏ hoặc những API chưa được đội ngũ ICU công bố là
@@ -79,7 +79,7 @@
 <ul>
 <li>Các API khuôn khổ Android ICU4J không có tất cả các API của ICU4J.</li>
 <li>Các nhà phát triển NDK cần biết rằng ICU4C Android không được hỗ trợ.</li>
-<li>Các API trong khuôn khổ Android không thay thế hỗ trợ của Android cho 
+<li>Các API trong khuôn khổ Android không thay thế hỗ trợ của Android cho
 <a href="{@docRoot}guide/topics/resources/localization.html">việc bản địa hóa bằng
 các tài nguyên</a>.</li>
 </ul>
@@ -87,7 +87,7 @@
 <h2 id="migration">Chuyển nhập sang gói android.icu từ com.ibm.icu</h2>
 
 <p>
-  Nếu bạn đã sử dụng các API ICU4J trong ứng dụng và 
+  Nếu bạn đã sử dụng các API ICU4J trong ứng dụng và
    các API <code>android.icu</code> đáp ứng yêu cầu của bạn thì việc chuyển nhập sang
   các API của khuôn khổ đòi hỏi bạn phải thay đổi thành phần nhập vào của Java
   từ <code>com.ibm.icu</code> sang <code>android.icu</code>. Khi đó bạn có thể
diff --git a/docs/html-intl/intl/vi/preview/features/multi-window.jd b/docs/html-intl/intl/vi/preview/features/multi-window.jd
index 485bc28..5b2cb54 100644
--- a/docs/html-intl/intl/vi/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/vi/preview/features/multi-window.jd
@@ -33,7 +33,7 @@
 
 <p>
   Nếu bạn dựng ứng dụng của bạn bằng N Preview SDK, bạn có thể cấu hình cách ứng dụng của bạn
-  xử lý hiển thị đa cửa sổ. Ví dụ, bạn có thể quy định 
+  xử lý hiển thị đa cửa sổ. Ví dụ, bạn có thể quy định
   các kích thước tối thiểu cho phép của hoạt động của bạn. Bạn cũng có thể vô hiệu hóa hiển thị đa cửa sổ cho
   ứng dụng của bạn, đảm bảo rằng hệ thống chỉ hiển thị ứng dụng của bạn trong chế độ
    toàn màn hình.
@@ -117,7 +117,7 @@
 
 <p class="note">
   <strong>Lưu ý:</strong> Trong chế độ đa cửa sổ, một ứng dụng có thể trong trạng thái
-  tạm dừng và vẫn hiển thị với người dùng. Ứng dụng có thể cần tiếp tục 
+  tạm dừng và vẫn hiển thị với người dùng. Ứng dụng có thể cần tiếp tục
   các hoạt động của nó thậm chí trong khi đamg bị tạm dừng. Ví dụ, một ứng dụng phát video đang ở trong
   chế độ tạm dừng nhưng vẫn hiển thị thì sẽ tiếp tục hiển thị video của nó. Vì lý do
   này, chúng tôi đề nghị các hoạt động phát video <em>không</em> tạm dừng
@@ -129,13 +129,13 @@
 
 <p>
   Khi người dùng đặt một ứng dụng vào trong chế độ đa cửa sổ, hệ thống sẽ thông báo về
-  hoạt động thay đổi cấu hình đó, như được quy định trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi 
+  hoạt động thay đổi cấu hình đó, như được quy định trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi
   Thời gian chạy</a>. Về cơ bản, thay đổi này có ngụ ý về vòng đời hoạt động tương tự
   vì khi hệ thống thông báo cho ứng dụng rằng thiết bị đã chuyển
   từ chế độ hướng dọc sang chế độ ngang, ngoại trừ trường hợp các kích thước của thiết bị
   đã được thay đổi thay vì chỉ bị hoán đổi. Như đã thảo luận trong phần <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi
   Thời gian chạy</a>, hoạt động của bạn có thể tự xử lý thay đổi cấu hình này, hoặc nó
-  có thể cho phép hệ thống hủy hoạt động này và tạo lại nó với 
+  có thể cho phép hệ thống hủy hoạt động này và tạo lại nó với
   các kích thước mới.
 </p>
 
@@ -207,7 +207,7 @@
 <h3 id="layout">Thuộc tính bố trí</h3>
 
 <p>
-  Với Android N, phần tử bản kê khai <code>&lt;layout&gt;</code> 
+  Với Android N, phần tử bản kê khai <code>&lt;layout&gt;</code>
   có hỗ trợ một số thuộc tính sẽ ảnh hưởng đến cách hoạt động có hành vi như thế nào trong
   chế độ đa cửa sổ:
 </p>
@@ -244,7 +244,7 @@
 
   <dd>
     Chiều cao và chiều rộng tối thiểu cho hoạt động trong cả chế độ chia màn hình
-    và chế độ hình dạng tự do. Nếu người dùng di chuyển thanh phân chia trong chế độ chia màn hình 
+    và chế độ hình dạng tự do. Nếu người dùng di chuyển thanh phân chia trong chế độ chia màn hình
     để làm cho hoạt động nhỏ hơn mức tối thiểu quy định, hệ thống sẽ cắt xén
     hoạt động đó thành kích cỡ mà người dùng yêu cầu.
   </dd>
@@ -295,7 +295,7 @@
 
 <p>
   Các phương thức mới sau đây đã được thêm vào lớp {@link android.app.Activity}
-  để hỗ trợ hiển thị đa cửa sổ. Để biết chi tiết về mỗi phương thức, xem 
+  để hỗ trợ hiển thị đa cửa sổ. Để biết chi tiết về mỗi phương thức, xem
   <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham chiếu N Preview SDK</a>.
 </p>
 
@@ -560,7 +560,7 @@
   </li>
 
   <li>Thực hiện một vài thao tác thay đổi kích cỡ nối tiếp nhau thật nhanh. Xác minh rằng ứng dụng
-  của bạn không bị lỗi hoặc bị rò rỉ bộ nhớ. Để biết thông tin về kiểm tra việc sử dụng bộ nhớ của 
+  của bạn không bị lỗi hoặc bị rò rỉ bộ nhớ. Để biết thông tin về kiểm tra việc sử dụng bộ nhớ của
   ứng dụng, xem <a href="{@docRoot}tools/debugging/debugging-memory.html">
   Kiểm tra Sử dụng RAM của bạn</a>.
   </li>
diff --git a/docs/html-intl/intl/vi/preview/features/notification-updates.jd b/docs/html-intl/intl/vi/preview/features/notification-updates.jd
index d80cf6c..f60646a 100644
--- a/docs/html-intl/intl/vi/preview/features/notification-updates.jd
+++ b/docs/html-intl/intl/vi/preview/features/notification-updates.jd
@@ -37,7 +37,7 @@
   thông báo, từng thông báo một từ khu vực hiển thị thông báo.
 </p>
 
-<p>Cuối cùng, Android N cũng thêm các API mới cho phép bạn tận dụng các trang trí 
+<p>Cuối cùng, Android N cũng thêm các API mới cho phép bạn tận dụng các trang trí
 của hệ thống trong các dạng xem thông báo tùy chỉnh của ứng dụng của bạn. Các API này giúp
 đảm bảo rằng dạng xem thông báo có chung một cách trình bày nhất quán
 với các mẫu tiêu chuẩn.</p>
@@ -69,9 +69,9 @@
 </p>
 
 <ol>
-<li>Tạo thực thể{@link android.support.v4.app.RemoteInput.Builder} 
+<li>Tạo thực thể{@link android.support.v4.app.RemoteInput.Builder}
   mà bạn có thể thêm vào hành động
-thông báo của bạn. Hàm dựng của lớp này sẽ chấp nhận xâu mà hệ thống sử dụng làm khóa 
+thông báo của bạn. Hàm dựng của lớp này sẽ chấp nhận xâu mà hệ thống sử dụng làm khóa
  cho nhập liệu văn bản. Sau đó, ứng dụng cầm tay của bạn sử dụng khóa đó để truy xuất văn bản
   nhập liệu.
 
diff --git a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd b/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
index 4b3cb40..65799db 100644
--- a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
@@ -128,7 +128,7 @@
 video. Hãy xóa các phần tử UI trước khi hoạt động của bạn vào chế độ PIP,
 và khôi phục các phần tử này khi hoạt động quay lại chế độ toàn màn hình.
 Ghi đè phương thức <code>Activity.onPictureInPictureChanged()</code> hoặc
-<code>Fragment.onPictureInPictureChanged()</code> và bật hoặc 
+<code>Fragment.onPictureInPictureChanged()</code> và bật hoặc
 tắt các phần tử UI khi cần thiết, ví dụ:</p>
 
 <pre>
@@ -150,7 +150,7 @@
 <p>Khi hoạt động của bạn chuyển sang chế độ PIP thì hệ thống sẽ coi hoạt động đó đang ở trong
 trạng thái tạm dừng và sẽ gọi phương thức <code>onPause()</code> của hoạt động. Việc phát lại
 video không nên được tạm dừng và cần được tiếp tục phát nếu hoạt động
-bị tạm dừng do chế độ PIP. Hãy kiểm tra chế độ PIP trong phương thức 
+bị tạm dừng do chế độ PIP. Hãy kiểm tra chế độ PIP trong phương thức
 <code>onPause()</code> của hoạt động và xử lý việc phát lại cho phù hợp, ví
 dụ:</p>
 
diff --git a/docs/html-intl/intl/vi/preview/overview.jd b/docs/html-intl/intl/vi/preview/overview.jd
index a71bf61..f709489 100644
--- a/docs/html-intl/intl/vi/preview/overview.jd
+++ b/docs/html-intl/intl/vi/preview/overview.jd
@@ -175,7 +175,7 @@
 </p>
 
 <p>
-  Tại <strong>Preview 4 và 5</strong> bạn sẽ được sử dụng <strong>các   
+  Tại <strong>Preview 4 và 5</strong> bạn sẽ được sử dụng <strong>các
 API và SDK N cuối cùng</strong> để phát triển, và cả các ảnh hệ thống gần hoàn thiện
   để kiểm thử các hành vi, tính năng của hệ thống. Android N sẽ cung cấp một mức
   API chuẩn vào thời điểm này. Bạn có thể tiến hành kiểm thử khả năng tương thích cuối cùng đối với các ứng dụng
@@ -321,7 +321,7 @@
   Hành vi</a> chỉ ra cho bạn các phần chính yếu để kiểm thử.</li>
   <li> Tổng quan về các API mới, bao gồm một phần <a href="{@docRoot}preview/api-overview.html">Tổng quan về API</a>, bản tải xuống được
   <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo
- API</a> và các hướng dẫn chi tiết cho nhà phát triển đối với các tính năng quan trọng như 
+ API</a> và các hướng dẫn chi tiết cho nhà phát triển đối với các tính năng quan trọng như
   hỗ trợ đa cửa sổ, thông báo gộp, hỗ trợ đa bản địa và các tính năng khác.
   <li> <a href="{@docRoot}preview/samples.html">Mã mẫu</a> trong đó
   minh họa cách hỗ trợ các quyền và tính năng mới.
diff --git a/docs/html-intl/intl/vi/training/material/animations.jd b/docs/html-intl/intl/vi/training/material/animations.jd
index e93c99d..9299d3c 100644
--- a/docs/html-intl/intl/vi/training/material/animations.jd
+++ b/docs/html-intl/intl/vi/training/material/animations.jd
@@ -21,7 +21,7 @@
 </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 
+<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>
@@ -160,7 +160,7 @@
 
 <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> 
+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>
 
@@ -329,7 +329,7 @@
 
 <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()} 
+ (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>
diff --git a/docs/html-intl/intl/vi/training/material/compatibility.jd b/docs/html-intl/intl/vi/training/material/compatibility.jd
index e19a745..2f5c016 100644
--- a/docs/html-intl/intl/vi/training/material/compatibility.jd
+++ b/docs/html-intl/intl/vi/training/material/compatibility.jd
@@ -94,7 +94,7 @@
 
 <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 
+<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>
diff --git a/docs/html-intl/intl/vi/training/material/drawables.jd b/docs/html-intl/intl/vi/training/material/drawables.jd
index 175e77d..db69412 100644
--- a/docs/html-intl/intl/vi/training/material/drawables.jd
+++ b/docs/html-intl/intl/vi/training/material/drawables.jd
@@ -57,7 +57,7 @@
 <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 
+<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à
diff --git a/docs/html-intl/intl/vi/training/material/get-started.jd b/docs/html-intl/intl/vi/training/material/get-started.jd
index 9e612ad..45d7c09 100644
--- a/docs/html-intl/intl/vi/training/material/get-started.jd
+++ b/docs/html-intl/intl/vi/training/material/get-started.jd
@@ -94,7 +94,7 @@
 
 <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 
+<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>
 
@@ -122,7 +122,7 @@
 <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 
+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>
diff --git a/docs/html-intl/intl/vi/training/material/index.jd b/docs/html-intl/intl/vi/training/material/index.jd
index 44b74e1..eb489457 100644
--- a/docs/html-intl/intl/vi/training/material/index.jd
+++ b/docs/html-intl/intl/vi/training/material/index.jd
@@ -17,7 +17,7 @@
 
 <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 
+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>
diff --git a/docs/html-intl/intl/vi/training/material/lists-cards.jd b/docs/html-intl/intl/vi/training/material/lists-cards.jd
index 7127649..47a7d6f 100644
--- a/docs/html-intl/intl/vi/training/material/lists-cards.jd
+++ b/docs/html-intl/intl/vi/training/material/lists-cards.jd
@@ -210,7 +210,7 @@
 Để 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 
+<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>
diff --git a/docs/html-intl/intl/vi/training/material/shadows-clipping.jd b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
index e9091f2..f4ce402 100644
--- a/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
@@ -22,7 +22,7 @@
 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 
+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,
@@ -51,7 +51,7 @@
 <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 
+. Để đặ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
@@ -59,7 +59,7 @@
 
 <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 
+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>
 
diff --git a/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd b/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd
index 8e20975..8159145 100644
--- a/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/zh-cn/about/versions/android-5.0.jd
@@ -430,7 +430,7 @@
 <p>当系统检测到合适的网络时，它将连接到该网络并调用 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 回调。您可以在回调中使用 {@link android.net.Network} 对象来获取关于该网络的更多信息，或者指示通信使用选定的网络。</p>
 
 <h3 id="BluetoothBroadcasting">低功耗蓝牙</h3>
-<p>Android 4.3 中作为重头戏引入了对<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">低功耗蓝牙</a>（“低功耗蓝牙”<em></em>）的平台支持。在 Android 5.0 中，Android 设备现在可以用作低功耗蓝牙<em>外围设备</em>。应用可以使用此功能使附近的设备知道它的存在。例如，您可以构建相应的应用来允许设备用作计步器或健康检测器并与另一低功耗蓝牙设备交换其数据。</p> 
+<p>Android 4.3 中作为重头戏引入了对<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">低功耗蓝牙</a>（“低功耗蓝牙”<em></em>）的平台支持。在 Android 5.0 中，Android 设备现在可以用作低功耗蓝牙<em>外围设备</em>。应用可以使用此功能使附近的设备知道它的存在。例如，您可以构建相应的应用来允许设备用作计步器或健康检测器并与另一低功耗蓝牙设备交换其数据。</p>
 <p>新的 {@link android.bluetooth.le} API 允许您的应用对公告进行广播，扫描响应，以及与附近的低功能蓝牙设备建立连接。要使用新的公告和扫描功能，请在您的清单中添加 {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 权限。当用户从 Play 商店更新或下载您的应用时，会要求他们向您的应用授予以下权限：“蓝牙连接信息：允许应用控制蓝牙，包括向附近的蓝牙设备进行广播以及获取关于这些设备的信息。”</p>
 
 <p>要开始低功耗蓝牙公告以便其他设备可以发现您的应用，请调用 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} 并传入 {@link android.bluetooth.le.AdvertiseCallback} 类的一个实施。回调对象将收到关于公告操作成功或失败的报告。</p>
diff --git a/docs/html-intl/intl/zh-cn/design/style/writing.jd b/docs/html-intl/intl/zh-cn/design/style/writing.jd
index 7944c24..c0c3e54 100644
--- a/docs/html-intl/intl/zh-cn/design/style/writing.jd
+++ b/docs/html-intl/intl/zh-cn/design/style/writing.jd
@@ -174,7 +174,7 @@
     <li>使用缩写词。</li>
     <li>使用“您”或“你”直接与读者对话。</li>
     <li>语气应轻松自然，但要避免使用俚语。</li>
-  
+
   </ul>
 
   <p><em>避免使用令人困惑或令人厌烦的表达</em></p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd
index bfdb210..382c4c7 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@
 
 @jd:body
 
-    <div id="qv-wrapper">           
+    <div id="qv-wrapper">
   <div id="qv">
   <h2>关于 Google Play</h2>
     <ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd
index 7d0bd55..d925566 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/developer-console.jd
@@ -4,8 +4,8 @@
 Xnonavpage=true
 
 @jd:body
-    
-    <div id="qv-wrapper">           
+
+    <div id="qv-wrapper">
   <div id="qv">
     <h2>发布功能</h2>
     <ol>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd
index ea8bb61..7b0cf1d 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>本文内容</h2>
@@ -141,7 +141,7 @@
 假设您的应用符合该计划的所有要求，我们预计发布时间不会超过正常时间；但是，如果在“为家庭设计”审查时被拒绝，则应用的发布可能会延迟。
 
 
- 
+
   </dd>
 
   <dt>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd
index aab4b5a..e81bac5 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/families/start.jd
@@ -78,7 +78,7 @@
 
 <p class="note">
   <strong>注意</strong>：在“为家庭设计”计划中发布的应用也可供
- Google Play 上的所有用户使用。 
+ Google Play 上的所有用户使用。
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd
index b70bcb5..7b280cf 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/guide.jd
@@ -18,7 +18,7 @@
 <ul>
   <li>
     <strong>在 Google Play 上发布</strong> &mdash;使用 Google Play
- 的开发者控制台，将您的应用分发给全球超过 10 亿 
+ 的开发者控制台，将您的应用分发给全球超过 10 亿
 Android 用户。
   </li>
 
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd
index a590446..9f61a35 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/auto.jd
@@ -162,7 +162,7 @@
 
 <tr>
   <td rowspan="3" id="layout">
-    布局   
+    布局
   </td>
 
   <td id="AU-SC">
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd
index 0dae9e1..793d110 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/core.jd
@@ -12,7 +12,7 @@
         <li><a href="#listing">Google Play</a></li>
 
   </ol>
-  
+
   <h2>测试</h2>
   <ol>
     <li><a href="#test-environment">设置测试环境</a></li>
@@ -24,7 +24,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">平板电脑应用的质量</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">优化您的应用</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -84,7 +84,7 @@
     <th style="width:54px;">
       ID
     </th>
-    
+
 
     <th>
       说明
@@ -746,7 +746,7 @@
     <li>应用商品详情包括高品质的置顶大图。
     </li>
 
-    <li>置顶大图不能包含设备图片、屏幕截图，也不能包含缩小后以及在应用适配的最小尺寸屏幕上显示时难以辨认的小文字。  
+    <li>置顶大图不能包含设备图片、屏幕截图，也不能包含缩小后以及在应用适配的最小尺寸屏幕上显示时难以辨认的小文字。
 
 
     </li>
@@ -1049,7 +1049,7 @@
 
     <p style="margin-bottom:.25em;">
     要强制启动硬件加速（在设备支持的情况下），请将
-    <code>hardware-accelerated="true"</code>添加到应用清单文件中的<code>&lt;application&gt;</code>并重新编译。 
+    <code>hardware-accelerated="true"</code>添加到应用清单文件中的<code>&lt;application&gt;</code>并重新编译。
 
     </p>
   </td>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd
index 1d9d620..3df311a 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tablets.jd
@@ -48,7 +48,7 @@
 </p>
 
 <p>
-  本文档中提供了相关资源的链接，这些资源可帮助您了解文中给出的各条建议。  
+  本文档中提供了相关资源的链接，这些资源可帮助您了解文中给出的各条建议。
 
 </p>
 
@@ -56,7 +56,7 @@
 
 <p>为了打造上佳的平板电脑应用体验，首先要根据应用适配的所有设备和机型，确保您的应用满足相应的<em>应用核心质量标准</em>。
 
-有关完整信息，请参阅<a href="{@docRoot}distribute/essentials/quality/core.html">应用核心质量准则</a>。 
+有关完整信息，请参阅<a href="{@docRoot}distribute/essentials/quality/core.html">应用核心质量准则</a>。
 </p>
 
 <p>
@@ -116,7 +116,7 @@
 
 
 <ul>
-  <li>根据需要，针对 <code>large</code> 和 
+  <li>根据需要，针对 <code>large</code> 和
 <code>xlarge</code> 屏幕提供自定义布局。您还可以提供可根据屏幕的<a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">最短尺寸</a>或<a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">最小可用宽度和高度</a>加载的布局。
 
 
@@ -207,8 +207,8 @@
 android.app.Fragment} 子类实现各个内容面板。这样一来，您可以在共用内容的不同机型和不同屏幕间最大程度地重复使用代码。
 
 </li>
-<li>确定要在哪些屏幕尺寸上使用多窗格界面，然后在相应的屏幕尺寸单元（例如 
-<code>large</code>/<code>xlarge</code>）中提供不同的布局，或最小屏幕宽度（例如 
+<li>确定要在哪些屏幕尺寸上使用多窗格界面，然后在相应的屏幕尺寸单元（例如
+<code>large</code>/<code>xlarge</code>）中提供不同的布局，或最小屏幕宽度（例如
 <code>sw600dp</code>/<code>sw720</code>）。
 </li>
 </ul>
@@ -309,7 +309,7 @@
   data-cardSizes="9x3"
   data-maxResults="6"></div>
 
-<div class="headerLine"><h2 id="adjust-font-sizes">5. 
+<div class="headerLine"><h2 id="adjust-font-sizes">5.
 调整字体大小和触控目标</h2></div>
 
 <p>要确保您的应用在平板电脑上易于使用，请花些时间针对您要适配的各种屏幕配置调整平板电脑界面中的字体大小和触控目标。
@@ -345,7 +345,7 @@
 
 <div class="headerLine"><h2 id="adjust-widgets">6. 调整主屏幕小部件的尺寸</h2></div>
 
-<p>如果您的应用中包含主屏幕小部件，需要注意以下几点，以确保用户在平板电脑屏幕上获得良好体验：  
+<p>如果您的应用中包含主屏幕小部件，需要注意以下几点，以确保用户在平板电脑屏幕上获得良好体验：
  </p>
 
 <ul>
@@ -411,7 +411,7 @@
   为确保分发到尽可能多的平板电脑，务必让应用适配各种支持平板电脑的 Android 版本。
 对平板电脑的支持是从 <a href="{@docRoot}about/versions/android-3.0.html">Android 3.0</a>（API 级别 11）开始的。
 
-  对平板电脑、手机及其他设备的统一界面框架支持是从 <a href="{@docRoot}about/versions/android-4.0.html">Android 
+  对平板电脑、手机及其他设备的统一界面框架支持是从 <a href="{@docRoot}about/versions/android-4.0.html">Android
 4.0</a> 开始的
 
 </p>
@@ -494,8 +494,8 @@
 
 <li>与此类似，还请检查清单文件，找出
 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">表明硬件功能要求</a>不适用于平板电脑的 <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> 元素。
-如果您找到这样的权限，请务必为功能明确声明对应的 
-<code>&lt;uses-feature&gt;</code> 元素并加入 
+如果您找到这样的权限，请务必为功能明确声明对应的
+<code>&lt;uses-feature&gt;</code> 元素并加入
 <code>android:required=”false”</code> 属性。
 </li>
 </ul>
@@ -529,21 +529,21 @@
 </p>
 
 <ul>
-  <li>如果声明 
+  <li>如果声明
 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a>
  元素，就不要指定 <code>android:largeScreens="false"</code>
  或 <code>android:xlargeScreens="false"</code>。</li>
-  <li>如果应用适配的 <code>minSdkVersion</code> 值小于 13，必须使用 
+  <li>如果应用适配的 <code>minSdkVersion</code> 值小于 13，必须使用
 <code>android:largeScreens="true"</code> 和 <code>android:xlargeScreens="true"</code>
  声明 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code>&lt;supports-screens&gt;</code></a>
  元素。</li>
 </ul>
 
-<p>如果应用在清单文件中声明了 
+<p>如果应用在清单文件中声明了
 <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>
  元素，该元素应包含相关属性，
 以列举应用支持的<em>平板电脑屏幕的所有尺寸和密度组合</em>。
-请注意，如果可能，您应避免在应用中使用 
+请注意，如果可能，您应避免在应用中使用
 <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code>&lt;compatible-screens&gt;</code></a>
  元素。</p>
 
@@ -586,7 +586,7 @@
   <li>添加在 7 英寸和 10 英寸平板电脑上截取的屏幕截图。
   </li>
 
-  <li>如果可能，添加横屏和竖屏截取的屏幕截图。  
+  <li>如果可能，添加横屏和竖屏截取的屏幕截图。
 
   </li>
 
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd
index 6a60945..99a12d5 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/tv.jd
@@ -133,7 +133,7 @@
 
 <tr>
   <td rowspan="5" id="layout">
-    布局   
+    布局
   </td>
 
   <td id="TV-LO">
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd
index 99483ec..eb9166d 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/quality/wear.jd
@@ -91,7 +91,7 @@
   <td>
     <p style="margin-bottom:.5em;">
       手持类应用包括具有可穿戴设备特有功能的通知或直接在穿戴设备上运行的可穿戴类应用。
- 
+
       （<a href="{@docRoot}training/building-wearables.html">了解方法</a>）
     </p>
   </td>
@@ -441,7 +441,7 @@
 
 
 <p style="margin-top:30px;">
-  <strong>如果我的应用不符合穿戴设备的要求，是否仍会在 Google Play 
+  <strong>如果我的应用不符合穿戴设备的要求，是否仍会在 Google Play
 上向手机和平板电脑显示我的新应用或更新版本并且仍可在可穿戴设备上安装？</strong>
 </p>
 <p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd
index e557024..a1b2f4c 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/tv.jd
@@ -88,7 +88,7 @@
 <p>
   在考虑您的电视应用时，请查看<a href="{@docRoot}training/tv/start/index.html">开发者文档</a>和可用性准则，并且尽可能支持这些准则。
 
-确保为用户设计一种出色 Leanback 观看体验，并使用 SDK 中随附的 
+确保为用户设计一种出色 Leanback 观看体验，并使用 SDK 中随附的
 Leanback 库来打造这种体验。您想针对电视用例优化应用的其他部分，最好在开发过程的早期确定这些部分。
 
 
@@ -261,7 +261,7 @@
 
 当您进行必要的调整后，就可以将应用的新版本上传到开发者控制台。
 
- 
+
 </p>
 
 <p>
@@ -282,7 +282,7 @@
 
   <li>
     <em>已批准</em> — 您的应用已被审查并获得批准。该应用将直接提供给 Android TV 用户。
- 
+
   </li>
 
   <li>
diff --git a/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd b/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd
index 182abdf..480ce5d 100644
--- a/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/googleplay/wear.jd
@@ -60,7 +60,7 @@
 
 <p>
   为了做好准备，以便在 Android Wear 上成功推出应用，首先要查阅在穿戴设备上提供出色应用体验的准则。
-请参考 <a href="{@docRoot}design/wear/index.html">Android 
+请参考 <a href="{@docRoot}design/wear/index.html">Android
 Wear 设计准则</a>，了解有关针对穿戴设备扩展应用的建议，以及有关设计和可用性的详情。
 
 </p>
@@ -120,7 +120,7 @@
 <p>
   您的穿戴设备应用应表现出色，在 Android Wear 上看起来引人入胜，并且提供尽可能最佳的用户体验。
 Google Play 将展示精选的优质穿戴设备应用，以便用户轻松发现。
-以下说明了您如何加入平台，提交用户喜爱的 
+以下说明了您如何加入平台，提交用户喜爱的
 Android Wear 应用：
 </p>
 
diff --git a/docs/html-intl/intl/zh-cn/distribute/resources.jd b/docs/html-intl/intl/zh-cn/distribute/resources.jd
index 71bd466..4c5644c 100644
--- a/docs/html-intl/intl/zh-cn/distribute/resources.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/resources.jd
@@ -8,7 +8,7 @@
 @jd:body
 
     <div class="jd-descr" itemprop="articleBody">
-    <div class="resource-widget resource-carousel-layout col-16" 
+    <div class="resource-widget resource-carousel-layout col-16"
     style="height:420px;margin-top:0px;padding-top:0"
     data-query="collection:overview/carousel/zhcn"
     data-sortOdrder="-timestamp"
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd
index 19a25c5..900dc0d 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/launch-checklist.jd
@@ -79,8 +79,8 @@
 </p>
 
 <p>
-  当您基本熟悉发布流程后，请继续阅读以了解在 
-Google Play 上发布应用时应考虑哪些问题。  
+  当您基本熟悉发布流程后，请继续阅读以了解在
+Google Play 上发布应用时应考虑哪些问题。
 
 </p>
 
@@ -334,7 +334,7 @@
 </div>
 
 <p>
-  发布应用之前，请务必确保您的应用可在目标 Android 平台版本和设备屏幕尺寸上正常运行。  
+  发布应用之前，请务必确保您的应用可在目标 Android 平台版本和设备屏幕尺寸上正常运行。
 
 
 </p>
@@ -400,7 +400,7 @@
   <li>
     <p>
       将应用发布为免费应用后，您无法再将其改成付费应用。
-不过，您仍能通过 Google Play 
+不过，您仍能通过 Google Play
 的<a href="{@docRoot}google/play/billing/index.html">应用内结算</a>服务销售<a href="{@docRoot}google/play/billing/billing_overview.html#products">应用内商品</a>
 和<a href="{@docRoot}google/play/billing/billing_subscriptions.html">订阅</a>。
     </p>
@@ -449,9 +449,9 @@
 <p>
   如果您希望找到更多方法通过应用获利并建立与用户的互动，则应考虑使用“应用内结算”或“即时购买”。
 这些服务深受用户和开发者的欢迎。
-要使用“应用内结算”或“即时购买”，您需要对应用的二进制文件进行更改，因此，您需要先完成更改并测试实现方法，然后才能创建发布版 APK。 
+要使用“应用内结算”或“即时购买”，您需要对应用的二进制文件进行更改，因此，您需要先完成更改并测试实现方法，然后才能创建发布版 APK。
 
- 
+
 </p>
 
 <h3 class="rel-resources clearfloat">相关资源</h3>
@@ -955,7 +955,7 @@
 <ul>
   <li>
     <p>
-      经常查看您应用的商品详情页上的评分和评论。  
+      经常查看您应用的商品详情页上的评分和评论。
 注意反复出现的主题，这可能表示存在错误或其他问题。
     </p>
   </li>
@@ -991,7 +991,7 @@
 
   <li>
     <p>
-      确认并修正您应用中出现的问题。保持公开透明并主动在商品详情页上列出已知问题是有益之举。 
+      确认并修正您应用中出现的问题。保持公开透明并主动在商品详情页上列出已知问题是有益之举。
 
     </p>
   </li>
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd
index 522b7f5..e37f043 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/localization-checklist.jd
@@ -62,7 +62,7 @@
 
 用户可以控制其 Android 设备上使用的语言和语言区域，反过来这些因素也会影响应用的显示方式。
 
-  
+
 </p>
 
 <p>
@@ -820,7 +820,7 @@
 </h4>
 
 <p>
-  如果您正在准备国际化营销，请务必加入<a href="{@docRoot}distribute/tools/promote/badges.html">本地化的 Google Play 
+  如果您正在准备国际化营销，请务必加入<a href="{@docRoot}distribute/tools/promote/badges.html">本地化的 Google Play
 徽章</a>，让用户知道您是在 Google Play 上发布应用的。您可以使用徽章生成器快速构建本地化的徽章，然后用到您的网站或营销材料中。
 
 您还可以获得高分辨率的资源。
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd b/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd
index c7cf7cf..e9b13c0 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/promote/linking.jd
@@ -13,7 +13,7 @@
 	</div>
 	</div>
 
-	<p>Google Play 提供多种链接格式，可让你按自己需要的方式将用户从 Android 应用、网页、广告、评论、文章、社交媒体帖子等链接到你的商品。</p> 
+	<p>Google Play 提供多种链接格式，可让你按自己需要的方式将用户从 Android 应用、网页、广告、评论、文章、社交媒体帖子等链接到你的商品。</p>
 
 	<p>这些链接格式可让你：</p>
 	<ul>
diff --git a/docs/html-intl/intl/zh-cn/google/play/billing/api.jd b/docs/html-intl/intl/zh-cn/google/play/billing/api.jd
index fbdbac6..ba1d637 100644
--- a/docs/html-intl/intl/zh-cn/google/play/billing/api.jd
+++ b/docs/html-intl/intl/zh-cn/google/play/billing/api.jd
@@ -32,7 +32,7 @@
    <h2>另请参见</h2>
     <ol>
       <li><a href="{@docRoot}training/in-app-billing/index.html">销售应用内商品</a></li>
-    </ol>  
+    </ol>
   </div>
   </div>
 
@@ -68,7 +68,7 @@
     <ol type="a">
     <li>Google Play 返回的 <code>Bundle</code> 中包含 <code>PendingIntent</code>，您的应用可用它来启动购买结帐界面。</li>
     <li>您的应用通过调用 <code>startIntentSenderForResult</code> 方法来启动 PendingIntent。</li>
-    <li>当结帐流程结束后（即用户成功购买商品或取消购买），Google Play 会向您的 <code>onActivityResult</code> 方法发送响应 <code>Intent</code>。<code>onActivityResult</code> 的结果代码中有一个代码将用于表明用户是完成了购买还是取消了购买。响应 <code>Intent</code> 中会包含所购商品的相关信息，其中包括 Google Play 为了唯一标识此次购买交易而生成的 <code>purchaseToken</code> 字符串。<code>Intent</code> 中还包含使用您的私人开发者密钥签署的购买签名。</li> 
+    <li>当结帐流程结束后（即用户成功购买商品或取消购买），Google Play 会向您的 <code>onActivityResult</code> 方法发送响应 <code>Intent</code>。<code>onActivityResult</code> 的结果代码中有一个代码将用于表明用户是完成了购买还是取消了购买。响应 <code>Intent</code> 中会包含所购商品的相关信息，其中包括 Google Play 为了唯一标识此次购买交易而生成的 <code>purchaseToken</code> 字符串。<code>Intent</code> 中还包含使用您的私人开发者密钥签署的购买签名。</li>
     </ol>
   </li>
   </ol>
diff --git a/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd b/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd
index 989c0e7..50e2fe3 100644
--- a/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd
+++ b/docs/html-intl/intl/zh-cn/google/play/billing/billing_admin.jd
@@ -15,7 +15,7 @@
       <li><a href="#billing-support">获取相关支持</a></li>
     </ol>
 
-    
+
     <h2>另请参见</h2>
     <ol>
       <li><a href="{@docRoot}google/play/billing/billing_overview.html">应用内结算概述</a></li>
diff --git a/docs/html-intl/intl/zh-cn/google/play/filters.jd b/docs/html-intl/intl/zh-cn/google/play/filters.jd
index 9d68faf..87df676 100644
--- a/docs/html-intl/intl/zh-cn/google/play/filters.jd
+++ b/docs/html-intl/intl/zh-cn/google/play/filters.jd
@@ -166,7 +166,7 @@
  </p>
     <p><strong>示例 2<br />
     </strong>清单文件声明 <code>&lt;uses-sdk android:minSdkVersion="3"
-    android:targetSdkVersion="4"&gt;</code> 并且不包括 
+    android:targetSdkVersion="4"&gt;</code> 并且不包括
 <code>&lt;supports-screens&gt;</code> 元素。
     <strong>结果</strong>：Google Play 将向所有设备的用户显示该应用，除非还有其他筛选器。
  </p>
@@ -400,10 +400,10 @@
 
 这样，您可以只包括每种设备配置所需的纹理，从而减小
 APK 文件的大小。
-根据每个设备是否支持您的纹理压缩格式，Google Play 
+根据每个设备是否支持您的纹理压缩格式，Google Play
 将向其提供您已声明支持该设备的 APK。</p>
 
-<p>目前，只有在每个 APK 根据以下配置提供不同筛选时，Google Play 
+<p>目前，只有在每个 APK 根据以下配置提供不同筛选时，Google Play
 才允许您为同一应用发布多个 APK：</p>
 <ul>
   <li>OpenGL 纹理压缩格式
diff --git a/docs/html-intl/intl/zh-cn/guide/components/activities.jd b/docs/html-intl/intl/zh-cn/guide/components/activities.jd
index efc1fb1..0e7c4fd 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/activities.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/activities.jd
@@ -1,5 +1,5 @@
 page.title=Activity
-page.tags=Activity, Intent 
+page.tags=Activity, Intent
 @jd:body
 
 <div id="qv-wrapper">
@@ -215,7 +215,7 @@
 <h2 id="StartingAnActivity">启动 Activity</h2>
 
 <p>您可以通过调用 {@link android.app.Activity#startActivity
-  startActivity()}，并将其传递给描述您想启动的 Activity 的 {@link android.content.Intent} 
+  startActivity()}，并将其传递给描述您想启动的 Activity 的 {@link android.content.Intent}
 来启动另一个 Activity。Intent 对象会指定您想启动的具体 Activity 或描述您想执行的操作类型（系统会为您选择合适的 Activity，甚至是来自其他应用的 Activity）。
 
 
@@ -608,7 +608,7 @@
 
 <p>系统会先调用
 {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}，然后再使 Activity 变得易于销毁。系统会向该方法传递一个
-{@link android.os.Bundle}，您可以在其中使用 
+{@link android.os.Bundle}，您可以在其中使用
 {@link
 android.os.Bundle#putString putString()} 和 {@link
 android.os.Bundle#putInt putInt()} 等方法以名称-值对形式保存有关 Activity 状态的信息。然后，如果系统终止您的应用进程，并且用户返回您的 Activity，则系统会重建该 Activity，并将
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
index ed6aaf6..fda6ba7 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
@@ -636,7 +636,7 @@
 android.content.Context#stopService stopService()}
 为止，无论其是否绑定到任何客户端。</p>
 
-<p>此外，如果您的服务已启动并接受绑定，则当系统调用您的 {@link android.app.Service#onUnbind onUnbind()} 方法时，如果您想在客户端下一次绑定到服务时接收 
+<p>此外，如果您的服务已启动并接受绑定，则当系统调用您的 {@link android.app.Service#onUnbind onUnbind()} 方法时，如果您想在客户端下一次绑定到服务时接收
 {@link android.app.Service#onRebind
 onRebind()} 调用（而不是接收 {@link
 android.app.Service#onBind onBind()} 调用），则可选择返回
diff --git a/docs/html-intl/intl/zh-cn/guide/components/fragments.jd b/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
index a4c2cbb..12a26e2 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -362,7 +362,7 @@
 
 <p>如需查看将没有 UI 的片段用作后台工作线程的示例 Activity，请参阅 {@code
 FragmentRetainInstance.java} 示例，该示例包括在 SDK 示例（通过
-Android SDK 管理器提供）中，以 
+Android SDK 管理器提供）中，以
 <code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code> 形式位于您的系统中。</p>
 
 
@@ -378,7 +378,7 @@
   <li>通过 {@link
 android.app.FragmentManager#findFragmentById findFragmentById()}（对于在 Activity 布局中提供 UI
 的片段）或 {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()}（对于提供或不提供 UI 的片段）获取 Activity 中存在的片段</li> 
+findFragmentByTag()}（对于提供或不提供 UI 的片段）获取 Activity 中存在的片段</li>
   <li>通过 {@link
 android.app.FragmentManager#popBackStack()}（模拟用户发出的 <em>Back</em> 命令）将片段从返回栈中弹出</li>
   <li>通过 {@link
@@ -785,7 +785,7 @@
 
 <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}
@@ -798,7 +798,7 @@
 
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
 details_activity}
- 
+
 <p>请注意，如果配置为横向，则此 Activity 会自行完成，以便主 Activity 可以接管并沿 {@code TitlesFragment}
 显示
 {@code DetailsFragment}。如果用户在纵向显示时启动
diff --git a/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd b/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
index 4ff22b6..faaa0a3 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
@@ -379,7 +379,7 @@
 等外部服务会读取它们，以便当用户在其设备中搜索应用时为用户提供过滤功能。</p>
 
 <p>例如，如果您的应用需要相机，并使用 Android 2.1（<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API</a> 7 级）中引入的
-API，您应该像下面这样在清单文件中以要求形式声明这些信息：</p> 
+API，您应该像下面这样在清单文件中以要求形式声明这些信息：</p>
 
 <pre>
 &lt;manifest ... >
@@ -390,7 +390,7 @@
 &lt;/manifest>
 </pre>
 
-<p>现在，<em>没有</em>相机且 
+<p>现在，<em>没有</em>相机且
 Android 版本<em>低于</em> 2.1 的设备将无法从 Google Play 安装您的应用。</p>
 
 <p>不过，您也可以声明您的应用使用相机，但并不<em>要求</em>必须使用。
diff --git a/docs/html-intl/intl/zh-cn/guide/components/index.jd b/docs/html-intl/intl/zh-cn/guide/components/index.jd
index 53e8184..73c1bdf 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/index.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/index.jd
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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
@@ -32,7 +32,7 @@
 
   <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 不需要使用时消耗系统资源。
diff --git a/docs/html-intl/intl/zh-cn/guide/components/loaders.jd b/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
index d8427b0..d768188 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>关键类</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>相关示例</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
@@ -51,7 +51,7 @@
 因此，它们无需重新查询其数据。
 </li>
   </ul>
- 
+
 <h2 id="summary">Loader API 摘要</h2>
 
 <p>在应用中使用加载器时，可能会涉及到多个类和接口。
@@ -129,7 +129,7 @@
 或 {@link android.content.AsyncTaskLoader} 子类，从其他源中加载数据。</li>
   <li>一个
 {@link android.app.LoaderManager.LoaderCallbacks}
-实现。您可以使用它来创建新加载器，并管理对现有加载器的引用。</li> 
+实现。您可以使用它来创建新加载器，并管理对现有加载器的引用。</li>
 <li>一种显示加载器数据的方法，如 {@link
 android.widget.SimpleCursorAdapter}。</li>
   <li>使用
@@ -140,11 +140,11 @@
 <p>{@link android.app.LoaderManager} 可在 {@link android.app.Activity} 或
 {@link android.app.Fragment} 内管理一个或多个 {@link
 android.content.Loader} 实例。每个 Activity 或片段只有一个 {@link
-android.app.LoaderManager}。</p> 
+android.app.LoaderManager}。</p>
 
 <p>通常，您会使用 Activity 的 {@link
 android.app.Activity#onCreate onCreate()} 方法或片段的
-{@link android.app.Fragment#onActivityCreated onActivityCreated()} 
+{@link android.app.Fragment#onActivityCreated onActivityCreated()}
 方法初始化 {@link android.content.Loader}。您执行操作如下：
 </p>
 
@@ -157,13 +157,13 @@
 <ul>
   <li>用于标识加载器的唯一 ID。在此示例中，ID 为 0。</li>
 <li>在构建时提供给加载器的可选参数（在此示例中为 <code>null</code>
-）。</li> 
+）。</li>
 
 <li>{@link android.app.LoaderManager.LoaderCallbacks} 实现，
 {@link android.app.LoaderManager} 将调用此实现来报告加载器事件。在此示例中，本地类实现
 {@link
 android.app.LoaderManager.LoaderCallbacks}
-接口，因此它会将引用 {@code this} 传递给自己。</li> 
+接口，因此它会将引用 {@code this} 传递给自己。</li>
 </ul>
 <p>{@link android.app.LoaderManager#initLoader initLoader()}
 调用确保加载器已初始化且处于Activity状态。这可能会出现两种结果：</p>
@@ -362,11 +362,11 @@
 
 <h2 id="example">示例</h2>
 
-<p>以下是一个 
+<p>以下是一个
 {@link
 android.app.Fragment} 完整实现示例。它展示了一个 {@link android.widget.ListView}，其中包含针对联系人内容提供程序的查询结果。它使用 {@link
 android.content.CursorLoader} 管理提供程序的查询。</p>
- 
+
 <p>应用如需访问用户联系人（正如此示例中所示），其清单文件必须包括权限
 {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}。
 </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
index c88ecf4..3f7c3cf 100644
--- 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
@@ -47,7 +47,7 @@
 &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;均支持 
+&lt;provider&gt;}</a>&mdash;均支持
 {@code android:process} 属性，此属性可以指定该组件应在哪个进程运行。您可以设置此属性，使每个组件均在各自的进程中运行，或者使一些组件共享一个进程，而其他组件则不共享。
 此外，您还可以设置 {@code android:process}，使不同应用的组件在相同的进程中运行，但前提是这些应用共享相同的 Linux 用户 ID 并使用相同的证书进行签署。
 
@@ -319,7 +319,7 @@
     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) {
diff --git a/docs/html-intl/intl/zh-cn/guide/components/recents.jd b/docs/html-intl/intl/zh-cn/guide/components/recents.jd
index 2bf1a5b..bc218f4 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/recents.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/recents.jd
@@ -118,7 +118,7 @@
 如果未找到任务或者 Intent 包含
 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
 标志，则会以该 Activity 作为其根创建新任务。如果找到的话，则会将该任务转到前台并将新
- Intent 
+ Intent
 传递给
 {@link android.app.Activity#onNewIntent onNewIntent()}。新 Activity 将获得 Intent 并在概览屏幕中创建新文档，如下例所示：</p>
 
@@ -176,7 +176,7 @@
   <dd>该 Activity 不会为文档创建新任务。设置此值会替代
 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
 和 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 标志的行为（如果在
- Intent 
+ Intent
 中设置了其中一个标志），并且概览屏幕将为应用显示单个任务，该任务将从用户上次调用的任意 Activity 开始继续执行。</dd>
 </dl>
 
diff --git a/docs/html-intl/intl/zh-cn/guide/components/services.jd b/docs/html-intl/intl/zh-cn/guide/components/services.jd
index 9a00e70..c7c848b 100644
--- a/docs/html-intl/intl/zh-cn/guide/components/services.jd
+++ b/docs/html-intl/intl/zh-cn/guide/components/services.jd
@@ -244,7 +244,7 @@
 {@link android.app.Service#onStartCommand
 onStartCommand()} 方法接收此 {@link android.content.Intent}。</p>
 
-<p>例如，假设某 Activity 需要将一些数据保存到在线数据库中。该 Activity 可以启动一个协同服务，并通过向 
+<p>例如，假设某 Activity 需要将一些数据保存到在线数据库中。该 Activity 可以启动一个协同服务，并通过向
 {@link
 android.content.Context#startService startService()} 传递一个 Intent，为该服务提供要保存的数据。服务通过
 {@link
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
index 07fdf6e..88aa78eb 100644
--- 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
@@ -45,7 +45,7 @@
 <p>一个 Activity 甚至可以启动设备上其他应用中存在的 Activity。例如，如果应用想要发送电子邮件，则可将 Intent 定义为执行“发送”操作并加入一些数据，如电子邮件地址和电子邮件。
 
 然后，系统将打开其他应用中声明自己处理此类
- Intent 的 Activity。在这种情况下， Intent 
+ Intent 的 Activity。在这种情况下， Intent
 是要发送电子邮件，因此将启动电子邮件应用的“撰写”Activity（如果多个 Activity 支持相同
  Intent，则系统会让用户选择要使用的 Activity）。发送电子邮件时，Activity 将恢复，看起来好像电子邮件 Activity 是您的应用的一部分。
 即使这两个 Activity 可能来自不同的应用，但是
@@ -246,7 +246,7 @@
   <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
 </ul>
 
-<p>在下文中，您将了解如何使用这些清单文件属性和 Intent 
+<p>在下文中，您将了解如何使用这些清单文件属性和 Intent
 标志定义 Activity 与任务的关联方式，以及 Activity 在返回栈中的行为方式。</p>
 
 <p>此外，我们还单独介绍了有关如何在概览屏幕中显示和管理任务与 Activity 的注意事项。
@@ -282,7 +282,7 @@
 B 的请求（如其清单文件中所定义）。</p>
 
 <p class="note"><strong>注：</strong>某些适用于清单文件的启动
-模式不可用作 Intent 标志，同样，某些可用作 Intent 
+模式不可用作 Intent 标志，同样，某些可用作 Intent
 标志的启动模式无法在清单文件中定义。</p>
 
 
@@ -370,7 +370,7 @@
 属性和可接受的值。</p>
 
 <p class="note"><strong>注：</strong>使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
-属性为 Activity 指定的行为可由 Intent 
+属性为 Activity 指定的行为可由 Intent
 附带的 Activity 启动标志替代，下文将对此进行讨论。</p>
 
 
@@ -378,7 +378,7 @@
 <h4 id="#IntentFlagsForTasks">使用 Intent 标志</h4>
 
 <p>启动 Activity 时，您可以通过在传递给 {@link
-android.app.Activity#startActivity startActivity()} 的 Intent 
+android.app.Activity#startActivity startActivity()} 的 Intent
 中加入相应的标志，修改 Activity 与其任务的默认关联方式。可用于修改默认行为的标志包括：
 </p>
 
@@ -404,7 +404,7 @@
 属性没有值。</p>
     <p>{@code FLAG_ACTIVITY_CLEAR_TOP} 通常与
 {@code FLAG_ACTIVITY_NEW_TASK}
-结合使用。一起使用时，通过这些标志，可以找到其他任务中的现有 Activity，并将其放入可从中响应 Intent 
+结合使用。一起使用时，通过这些标志，可以找到其他任务中的现有 Activity，并将其放入可从中响应 Intent
 的位置。 </p>
     <p class="note"><strong>注：</strong>如果指定 Activity 的启动模式为
 {@code "standard"}，则该 Activity 也会从堆栈中删除，并在其位置启动一个新实例，以便处理传入的 Intent。
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
index c7ade4f..65b3b23 100644
--- 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
@@ -34,14 +34,14 @@
 <li>描述应用的各个组件，即：构成应用的 Activity、服务、广播接收器和内容提供程序。
 
 为实现每个组件的类命名并发布其功能（例如，它们可以处理的
-{@link android.content.Intent 
+{@link android.content.Intent
 Intent} 消息）。根据这些声明，Android
 系统可以了解这组件具体是什么，以及在什么条件下可以启动它们</li>
 
-<li>确定将托管应用组件的进程</li>  
+<li>确定将托管应用组件的进程</li>
 
 <li>声明应用必须具备哪些权限才能访问
-API 中受保护的部分并与其他应用交互</li>  
+API 中受保护的部分并与其他应用交互</li>
 
 <li>还声明其他应用与该应用组件交互所需具备的权限
 </li>
@@ -66,7 +66,7 @@
 要查看有关任何元素的详细信息，请点击该图中或其后按字母顺序排列的元素列表中相应的元素名称，或者点击任何其他地方提到的相应元素名称。
 
 
- 
+
 </p>
 
 <pre>
@@ -128,7 +128,7 @@
 <p>
 可出现在清单文件中的所有元素按字母顺序罗列如下。
 这些是仅有的合法元素；您无法添加自己的元素或属性。
-  
+
 </p>
 
 <p style="margin-left: 2em">
@@ -158,7 +158,7 @@
 </p>
 
 
-    
+
 
 <h2 id="filec">文件约定</h2>
 
@@ -218,7 +218,7 @@
 (<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>)。  
+(<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}
@@ -244,7 +244,7 @@
 元素的
 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
 属性中所指定）。
-以下赋值与上述方法相同： 
+以下赋值与上述方法相同：
 </p>
 
 <pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -339,7 +339,7 @@
 <p>
 显式命名目标组件的
  Intent 将激活该组件；过滤器不起作用。但是，不按名称指定目标的
- Intent 
+ Intent
 只有在能够通过组件的一个过滤器时才可激活该组件。
 </p>
 
@@ -399,7 +399,7 @@
 <p>
   <i>权限</i> 是一种限制，用于限制对部分代码或设备上数据的访问。
    施加限制是为了保护可能被误用以致破坏或损害用户体验的关键数据和代码。
-  
+
 </p>
 
 <p>
@@ -427,7 +427,7 @@
 如果授予权限，则应用能够使用受保护的功能。
 
 否则，其访问这些功能的尝试将会失败，并且不会向用户发送任何通知。
- 
+
 </p>
 
 <p>
@@ -464,7 +464,7 @@
 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
 元素来请求。要让应用的其他组件也能够启动受保护的 Activity，就必须请求其使用权限，即便保护是由应用本身施加的亦如此。
 
-  
+
 </p>
 
 <p>
@@ -474,7 +474,7 @@
 <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> 请求使用它。 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 请求使用它。
 </p>
 
 <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
index 5968284..b34cd8b 100644
--- 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
@@ -42,7 +42,7 @@
       <li><a href="#intent-view">使用 Intent 对象查看日历数据</a></li>
     </ol>
   </li>
-  
+
   <li><a href="#sync-adapter">同步适配器</a></li>
 </ol>
 
@@ -113,14 +113,14 @@
   </tr>
   <tr>
     <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-    
+
     <td>此表储存日历特定信息。
 此表中的每一行都包含一个日历的详细信息，例如名称、颜色、同步信息等。
 </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Events}</td>
-    
+
     <td>此表储存事件特定信息。
 此表中的每一行都包含一个事件的信息&mdash;例如事件名称、地点、开始时间、结束时间等。
 
@@ -132,7 +132,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances}</td>
-    
+
     <td>此表储存每个事件实例的开始时间和结束时间。
 此表中的每一行都表示一个事件实例。
 对于一次性事件，实例与事件为 1:1
@@ -141,7 +141,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Attendees}</td>
-    
+
     <td>此表储存事件参加者（来宾）信息。
 每一行都表示事件的一位来宾。
 它指定来宾的类型以及事件的来宾出席响应。
@@ -149,7 +149,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Reminders}</td>
-    
+
     <td>此表储存提醒/通知数据。
 每一行都表示事件的一个提醒。一个事件可以有多个提醒。
 每个事件的最大提醒数量在
@@ -159,7 +159,7 @@
 中指定，后者由拥有给定日历的同步适配器设置。提醒以事件发生前的分钟数形式指定，其具有一个可决定用户提醒方式的方法。
 </td>
   </tr>
-  
+
 </table>
 
 <p>Calendar Provider API 以灵活、强大为设计宗旨。提供良好的最终用户体验以及保护日历及其数据的完整性也同样重要。
@@ -229,7 +229,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-    
+
     <td>表示是否选择显示该日历的布尔值。值为 0 表示不应显示与该日历关联的事件。
 
 值为 1
@@ -240,7 +240,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-    
+
     <td>一个布尔值，表示是否应同步日历并将其事件存储在设备上。
 值为 0
 表示不同步该日历，也不将其事件存储在设备上。值为 1
@@ -268,13 +268,13 @@
     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
@@ -289,7 +289,7 @@
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
 的特殊帐户类型，用于未关联设备帐户的日历。{@link
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
-帐户不会进行同步。</p> </div> </div> 
+帐户不会进行同步。</p> </div> </div>
 
 
 <p> 在示例的下一部分，您需要构建查询。选定范围指定查询的条件。
@@ -308,38 +308,38 @@
 <pre>// Run query
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;   
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+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. 
+        "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>如需执行日历更新，您可以通过
@@ -434,7 +434,7 @@
   </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> 表示事件应持续一小时，值为
@@ -444,39 +444,39 @@
   </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} 
+{@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>
@@ -514,11 +514,11 @@
 {@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
@@ -528,7 +528,7 @@
 android.provider.CalendarContract.EventsColumns#RRULE} 与 {@link android.provider.CalendarContract.EventsColumns#DTSTART} 和 {@link android.provider.CalendarContract.EventsColumns#DTEND}
 联用，日历应用会自动将其转换为持续时间。
 </li>
-  
+
 </ul>
 
 <p>以下是一个插入事件的示例。为了简便起见，此操作是在 UI
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -625,19 +625,19 @@
 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);  
+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.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.CalendarContract.AttendeesColumns#EVENT_ID}
 必须匹配特定事件的 {@link
-android.provider.BaseColumns#_ID}。</p> 
+android.provider.BaseColumns#_ID}。</p>
 
 <p>下表列出了可写入的字段。
 插入新参加者时，您必须加入除 <code>ATTENDEE_NAME</code> 之外的所有字段。
@@ -718,7 +718,7 @@
 <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>
@@ -727,7 +727,7 @@
 <p>下表列出了提醒的可写入字段。插入新提醒时，必须加入所有字段。
 请注意，同步适配器指定它们在
 {@link
-android.provider.CalendarContract.Calendars} 表中支持的提醒类型。详情请参阅 
+android.provider.CalendarContract.Calendars} 表中支持的提醒类型。详情请参阅
 {@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
 。</p>
 
@@ -780,9 +780,9 @@
  </p>
 
 <p>下表列出了一些您可以执行实例查询的字段。请注意，
-时区由 
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 
-和 
+时区由
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+和
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} 定义。</p>
 
 
@@ -801,18 +801,18 @@
   </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>
@@ -820,16 +820,16 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>与日历时区相应的实例儒略历开始日。 
+    <td>与日历时区相应的实例儒略历开始日。
  </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-    
+
     <td>从日历时区午夜开始计算的实例开始时间（分钟）。
- 
+
 </td>
-    
+
   </tr>
 
 </table>
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -922,9 +922,9 @@
     <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>。 
+如需查看使用该 Intent 对象的示例，请参阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用 Intent 对象查看日历数据</a>。
 
     </td>
     <td>打开日历后定位到 <code>&lt;ms_since_epoch&gt;</code> 指定的时间。</td>
@@ -935,11 +935,11 @@
 
      </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>
 
@@ -952,12 +952,12 @@
   <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>
 
@@ -972,11 +972,11 @@
     <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>
@@ -996,7 +996,7 @@
     <td>事件的名称。</td>
   </tr>
   <tr>
-  
+
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
 CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
     <td>事件开始时间，以从公元纪年开始计算的毫秒数表示。</td>
@@ -1004,25 +1004,25 @@
   <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>下文描述如何使用这些 Intent 对象。</p>
 
 
@@ -1059,23 +1059,23 @@
 {@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} 
+  <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
@@ -1083,10 +1083,10 @@
 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();
@@ -1158,18 +1158,18 @@
 
 <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_NAME</code> 和
 <code>ACCOUNT_TYPE</code>。</li> </ul>
 
 <p>您可以利用以下 helper 方法返回供与同步适配器一起使用的 URI：</p>
@@ -1180,5 +1180,5 @@
         .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
  }
 </pre>
-<p>如需查看同步适配器的实现示例（并非仅限与日历有关的实现），请参阅 
+<p>如需查看同步适配器的实现示例（并非仅限与日历有关的实现），请参阅
 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>。
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
index 4c91d3a..b1a1c5a 100644
--- 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
@@ -251,7 +251,7 @@
 </pre>
 <p>
     表 2 显示了
-    {@link android.content.ContentResolver#query 
+    {@link android.content.ContentResolver#query
     query(Uri,projection,selection,selectionArgs,sortOrder)} 的参数如何匹配 SQL SELECT 语句：
 </p>
 <p class="table-caption">
@@ -717,7 +717,7 @@
     &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
 </pre>
 <p>
-    
+
 <a href="{@docRoot}guide/topics/security/security.html">安全与权限</a>指南中详细介绍了权限对提供程序访问的影响。
 </p>
 
@@ -944,7 +944,7 @@
 </p>
 <p>
     要在“批量模式”下访问提供程序，
-您可以创建 {@link android.content.ContentProviderOperation} 对象数组，然后使用 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} 
+您可以创建 {@link android.content.ContentProviderOperation} 对象数组，然后使用 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}
 将其分派给内容提供程序。
 您需将内容提供程序的<em>授权</em>传递给此方法，而不是特定内容 URI。这样可使数组中的每个 {@link android.content.ContentProviderOperation} 对象都能适用于其他表。
 
@@ -1191,6 +1191,6 @@
 
 </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
index 6da5743..329754e 100644
--- 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
@@ -277,7 +277,7 @@
 
 </p>
 <p>
-    
+
     <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容提供程序基础知识</a>主题中描述了内容 URI 的基础知识。
 
 </p>
@@ -569,7 +569,7 @@
 </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} 类的其中一个
@@ -831,7 +831,7 @@
 </pre>
 <h3 id="FileMIMETypes">文件的 MIME 类型</h3>
 <p>
-    如果您的提供程序提供文件，请实现 
+    如果您的提供程序提供文件，请实现
     {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}。
     该方法会为您的提供程序可以为给定内容 URI 返回的文件返回一个 MIME 类型 {@link java.lang.String} 数组。您应该通过 MIME 类型过滤器参数过滤您提供的 MIME 类型，以便只返回客户端想处理的那些 MIME 类型。
 
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
index fd36e29..db5b1a4 100644
--- 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
@@ -177,7 +177,7 @@
 中，提供程序和客户端并不直接交互。客户端请求与文件交互（即读取、编辑、创建或删除文件）的权限；
 </li>
 
-<li>交互在应用（在本示例中为照片应用）触发 Intent 
+<li>交互在应用（在本示例中为照片应用）触发 Intent
 {@link android.content.Intent#ACTION_OPEN_DOCUMENT} 或 {@link android.content.Intent#ACTION_CREATE_DOCUMENT} 后开始。Intent 可能包括进一步细化条件的过滤器&mdash;例如，“为我提供所有 MIME
 类型为‘图像’的可打开文件”；
 </li>
@@ -460,7 +460,7 @@
 
 <p>您可以使用 SAF
 就地编辑文本文档。以下代码段会触发
-{@link android.content.Intent#ACTION_OPEN_DOCUMENT}  Intent 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}  Intent
 并使用类别 {@link android.content.Intent#CATEGORY_OPENABLE}
 以仅显示可以打开的文档。它会进一步过滤以仅显示文本文件：</p>
 
@@ -589,7 +589,7 @@
 </ul></li>
 
 <li>一个包括
-{@code android.content.action.DOCUMENTS_PROVIDER} 操作的 Intent 
+{@code android.content.action.DOCUMENTS_PROVIDER} 操作的 Intent
 过滤器，以便在系统搜索提供程序时让您的提供程序出现在选取器中。</li>
 
 </ul>
@@ -623,7 +623,7 @@
 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}  Intent
 过滤器。应将文档提供程序和
 {@link android.content.Intent#ACTION_GET_CONTENT}
 视为具有互斥性。如果您同时支持这两者，您的应用将在系统选取器
@@ -631,7 +631,7 @@
 中出现两次，提供两种不同的方式来访问您存储的数据。这会给用户造成困惑。</p>
 
 <p>建议按照以下步骤为运行 Android 4.4 版或更高版本的设备禁用
-{@link android.content.Intent#ACTION_GET_CONTENT}  Intent 
+{@link android.content.Intent#ACTION_GET_CONTENT}  Intent
 过滤器：</p>
 
 <ol>
@@ -643,7 +643,7 @@
 
 <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 
+级）或更高版本禁用 {@link android.content.Intent#ACTION_GET_CONTENT}  Intent
 过滤器。例如：
 
 <pre>
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
index ea46d86..1516814 100644
--- 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
@@ -398,7 +398,7 @@
           <li>600，适用于 600x1024 mdpi 之类的屏幕（7 英寸平板电脑）。</li>
           <li>720，适用于 720x1280 mdpi 之类的屏幕（10 英寸平板电脑）。</li>
         </ul>
-        <p>应用为多个资源目录提供不同的 
+        <p>应用为多个资源目录提供不同的
 smallestWidth 限定符值时，系统会使用最接近（但未超出）设备
 smallestWidth 的值。 </p>
         <p><em>此项为 API 级别 13 中新增配置。</em></p>
@@ -428,7 +428,7 @@
         <p>应用为多个资源目录提供不同的此配置值时，系统会使用最接近（但未超出）设备当前屏幕宽度的值。
 
 此处的值考虑到了屏幕装饰元素，因此如果设备显示屏的左边缘或右边缘上有一些永久性 UI
-元素，考虑到这些 UI 
+元素，考虑到这些 UI
 元素，它会使用小于实际屏幕尺寸的宽度值，这样会减少应用的可用空间。
 
 </p>
@@ -456,7 +456,7 @@
         <p>应用为多个资源目录提供不同的此配置值时，系统会使用最接近（但未超出）设备当前屏幕高度的值。
 
 此处的值考虑到了屏幕装饰元素，因此如果设备显示屏的上边缘或下边缘有一些永久性 UI
-元素，考虑到这些 UI 
+元素，考虑到这些 UI
 元素，同时为减少应用的可用空间，它会使用小于实际屏幕尺寸的高度值。
 
 非固定的屏幕装饰元素（例如，全屏时可隐藏的手机状态栏）并不<em></em>在考虑范围内，标题栏或操作栏等窗口装饰也不在考虑范围内，因此应用必须准备好处理稍小于其所指定值的空间。
@@ -510,7 +510,7 @@
 
 </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} 配置字段，该字段表示屏幕是小尺寸、标准尺寸还是大尺寸。
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
index 0f1a543d..3d78bdc 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <tr>
         <td><a href="controls/radiobutton.html">单选按钮</a></td>
         <td>与复选框类似，不同的是只能选择组中的一个选项。</td>
-	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 84922b4..595407d 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -248,7 +248,7 @@
   <dt>中性</dt>
   <dd>您应该在用户可能不想继续执行操作，但也不一定想要取消操作时使用此按钮。
 它出现在肯定按钮和否定按钮之间。
-例如，实际操作可能是“稍后提醒我”。</dd> 
+例如，实际操作可能是“稍后提醒我”。</dd>
 </dl>
 
 <p>对于每种按钮类型，您只能为 {@link
@@ -317,10 +317,10 @@
 
 <h4 id="Checkboxes">添加永久性多选列表或单选列表</h4>
 
-<p>要想添加多选项（复选框）或单选项（单选按钮）列表，请分别使用 
+<p>要想添加多选项（复选框）或单选项（单选按钮）列表，请分别使用
 {@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或 
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()}
 方法。</p>
 
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -373,7 +373,7 @@
 
 <p>尽管传统列表和具有单选按钮的列表都能提供“单选”操作，但如果您想持久保存用户的选择，则应使用
 {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()}。也就是说，如果稍后再次打开对话框时系统应指示用户的当前选择，那么您就需要创建一个具有单选按钮的列表。
 
 </p>
@@ -442,7 +442,7 @@
 {@code "sans-serif"}，以便两个文本字段都使用匹配的字体样式。</p>
 
 <p>要扩展 {@link android.support.v4.app.DialogFragment}
-中的布局，请通过 {@link android.app.Activity#getLayoutInflater()} 
+中的布局，请通过 {@link android.app.Activity#getLayoutInflater()}
 获取一个 {@link android.view.LayoutInflater} 并调用
 {@link android.view.LayoutInflater#inflate inflate()}，其中第一个参数是布局资源
 ID，第二个参数是布局的父视图。然后，您可以调用
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
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
index b77f3bf..bafbc65 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@
 </p>
   <p>请参阅<a href="#options-menu">创建选项菜单</a>部分。</p>
     </dd>
-    
+
   <dt><strong>上下文菜单和上下文操作模式</strong></dt>
-  
+
    <dd>上下文菜单是用户长按某一元素时出现的<a href="#FloatingContextMenu">浮动菜单</a>。
 它提供的操作将影响所选内容或上下文框架。
 
@@ -94,7 +94,7 @@
 </p>
   <p>请参阅<a href="#context-menu">创建上下文菜单</a>部分。</p>
 </dd>
-    
+
   <dt><strong>弹出菜单</strong></dt>
     <dd>弹出菜单将以垂直列表形式显示一系列项目，这些项目将锚定到调用该菜单的视图中。
 它特别适用于提供与特定内容相关的大量操作，或者为命令的另一部分提供选项。
@@ -135,7 +135,7 @@
   <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>部分。
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
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
index c0bd74c..8908318 100644
--- 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
@@ -321,7 +321,7 @@
 
 </p>
 <p class="note">
-    <strong>注：</strong>此 
+    <strong>注：</strong>此
 Gmail 功能需要“收件箱”扩展布局，该布局是自 Android 4.1 版本起可用的扩展通知功能的一部分。
 </p>
 <p>
@@ -409,7 +409,7 @@
         您要启动的
 {@link android.app.Activity} 是应用的正常工作流的一部分。在这种情况下，请设置 {@link android.app.PendingIntent}
 以启动全新任务并为
-{@link android.app.PendingIntent}提供返回栈，这将重现应用的正常“返回”行为。 <i> </i>  
+{@link android.app.PendingIntent}提供返回栈，这将重现应用的正常“返回”行为。 <i> </i>
         <p>
             Gmail 应用中的通知演示了这一点。点击一封电子邮件消息的通知时，您将看到消息具体内容。
 触摸<b>返回</b>将使您从
@@ -533,7 +533,7 @@
                 TaskStackBuilder.editIntentAt()} 向堆栈中的 {@link android.content.Intent}
 对象添加参数。有时，需要确保目标 {@link android.app.Activity} 在用户使用“返回”导航回它时会显示有意义的数据。
 
- <i> </i> 
+ <i> </i>
             </li>
             <li>
                 通过调用
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
index 5097c76..78f4734 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <p>有关创建 UI 布局的完整指南，请参阅 <a href="declaring-layout.html">XML
 布局</a>。
 
-  
+
 <h2 id="UIComponents">用户界面组件</h2>
 
 <p>您无需使用 {@link android.view.View} 和 {@link
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
index f9be97b..71b185d 100644
--- a/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
@@ -226,7 +226,7 @@
   <dt>{@code android:key}</dt>
   <dd>对于要保留数据值的首选项，必须拥有此属性。它指定系统在将此设置的值保存在
 {@link
-android.content.SharedPreferences} 中时所用的唯一键（字符串）。 
+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
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@
 </p>
 
 <p>例如，下面就是一个用于 Android 3.0
-及更高版本系统的首选项标头 XML 文件 ({@code res/xml/preference_headers.xml})：</p> 
+及更高版本系统的首选项标头 XML 文件 ({@code res/xml/preference_headers.xml})：</p>
 
 <pre>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -920,7 +920,7 @@
 &lt;/activity>
 </pre>
 
-<p>此 Intent 
+<p>此 Intent
 过滤器指示系统此 Activity 控制应用的数据使用情况。因此，当用户从系统的“设置”应用检查应用所使用的数据量时，可以使用“查看应用设置”按钮启动
 {@link android.preference.PreferenceActivity}，这样，用户就能够优化应用使用的数据量。
 
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index f9e97630..faa294d 100644
--- 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
@@ -181,14 +181,14 @@
 </p>
 <ul>
   <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
-    Activity.dispatchTouchEvent(MotionEvent)}</code>：此方法允许 {@link 
+    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 
+对父视图调用此方法表明不应使用 <code>{@link
     android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> 截获触摸事件。</li>
 </ul>
 
@@ -199,7 +199,7 @@
 但是，如果设备具有触摸功能且用户开始通过触摸界面与之交互，则不再需要突出显示项目或聚焦到特定视图对象上。
 
 因此，有一种交互模式称为“触摸模式”。
- 
+
 </p>
 <p>
 对于支持触摸功能的设备，当用户触摸屏幕时，设备会立即进入触摸模式。
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/zh-cn/preview/api-overview.jd b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
index 495692a..f4f889d 100644
--- a/docs/html-intl/intl/zh-cn/preview/api-overview.jd
+++ b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
@@ -762,7 +762,7 @@
 <p>
   虽然我们建议您对您的应用采用 APK Signature Scheme v2，但这项新方案并非强制性的。
 如果您的应用在使用 APK Signature Scheme v2 时不能正确构建，您可以停用这项新方案。
-禁用过程会导致 Android Studio 2.2 和 Android Gradle 2.2 插件仅使用传统签名方案来签署您的应用。 
+禁用过程会导致 Android Studio 2.2 和 Android Gradle 2.2 插件仅使用传统签名方案来签署您的应用。
 
 若要仅用传统方案签署，打开多层 <code>build.gradle</code> 文件，然后将行 <code>v2SigningEnabled false</code> 添加到您的版本签名配置中：
 
@@ -970,7 +970,7 @@
 <em></em>虚拟文件功能可以让您的 {@link android.provider.DocumentsProvider} 返回可与 {@link android.content.Intent#ACTION_VIEW}Intent 使用的文件 URI，即使它们没有直接字节码表示。
 
 
-Android N 还允许您为用户文件（虚拟或其他类）提供备用格式。 
+Android N 还允许您为用户文件（虚拟或其他类）提供备用格式。
 
 </p>
 
diff --git a/docs/html-intl/intl/zh-cn/preview/download-ota.jd b/docs/html-intl/intl/zh-cn/preview/download-ota.jd
index ab1408f..5d17abc 100644
--- a/docs/html-intl/intl/zh-cn/preview/download-ota.jd
+++ b/docs/html-intl/intl/zh-cn/preview/download-ota.jd
@@ -202,65 +202,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
-      MD5:15fe2eba9b01737374196bdf0a792fe9<br>
-      SHA-1:5014b2bba77f9e1a680ac3f90729621c85a14283
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
-      MD5: e8b12f7721c53af9a450f7058928a5fc<br>
-      SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
-      MD5:3fac09fef759dde26e57cb80b20b6477<br>
-      SHA-1:27d6caa786577d8a38b2da5bf94b33b4524a1a1c
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
-      MD5:58312c4a5971818ef5c77a3f446003da<br>
-      SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
-      MD5:92b7d1fa252f7394e70f957c72d4aac8<br>
-      SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
-      MD5:1461622ad53ea842b2722fa7b49b8172<br>
-      SHA-1:409c061668ab270774877d7f3eae44fa48d2b931
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
-      MD5: c60117f3640cc6db12386fd632289c7d<br>
-      SHA-1:87349c767c69efb4172c90ce1d88cf578c3d28b3
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
-      MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
-      SHA-1:6f33742290eb46f2561891f38ca2e754b4e50c6a
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/zh-cn/preview/download.jd b/docs/html-intl/intl/zh-cn/preview/download.jd
index 0aa115f..2d3b883 100644
--- a/docs/html-intl/intl/zh-cn/preview/download.jd
+++ b/docs/html-intl/intl/zh-cn/preview/download.jd
@@ -300,72 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
-      MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
-      SHA-1:5ba4053577007d15c96472206e3a79bc80ab194c
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
-      MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
-      SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
-      MD5: e93de7949433339856124c3729c15ebb<br>
-      SHA-1:81c341d57ef2cd139569b055d5d59e9e592a7abd
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
-      MD5:565be87ebb2d5937e2abe1a42645864b<br>
-      SHA-1:2b50e19dae2667b27f911e3c61ed64860caf43e1
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
-      MD5: a8464e15c6683fe2afa378a63e205fda<br>
-      SHA-1:2e89ebe67a46b2f3beb050746c13341cd11fa678
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
-      MD5: c0dbb7db671f61b2785da5001cedefcb<br>
-      SHA-1:1de74874f8d83e14d642f13b5a2130fc2aa55873
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
-    <td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
-      MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
-      SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
-    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
-      MD5:7d34a9774fdd6e025d485ce6cfc23c4c<br>
-      SHA-1:5ab1212bc9417269d391aacf1e672fff24b4ecc5
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> （D6603 和 D6653）</td>
-    <td>下载：<a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      如需了解详细信息，请参阅<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">为 Xperia Z3 尝试 Android N Developer Preview</a>。
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/zh-cn/preview/features/afw.jd b/docs/html-intl/intl/zh-cn/preview/features/afw.jd
index 04e6802..0d4c562 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/afw.jd
+++ b/docs/html-intl/intl/zh-cn/preview/features/afw.jd
@@ -127,7 +127,7 @@
   android.app.admin.DevicePolicyManager#setPasswordMinimumLength
   setPasswordMinimumLength()}。
 
-个人资料所有者还能通过使用由新的 <code>DevicePolicyManager.getParentProfileInstance()</code> 方法返回的 {@link android.app.admin.DevicePolicyManager} 实例来设置设备锁定， 
+个人资料所有者还能通过使用由新的 <code>DevicePolicyManager.getParentProfileInstance()</code> 方法返回的 {@link android.app.admin.DevicePolicyManager} 实例来设置设备锁定，
 
 
 此外，个人资料所有者可以使用 {@link android.app.admin.DevicePolicyManager} 类的新 <code>setOrganizationColor()</code> 和 <code>setOrganizationName()</code> 方法来自定义工作挑战的凭据屏幕。
@@ -286,7 +286,7 @@
 <ul>
 
   <li>
-    新类 <code>android.app.admin.SecurityLog</code> 和它的方法 
+    新类 <code>android.app.admin.SecurityLog</code> 和它的方法
 
   </li>
 
@@ -539,7 +539,7 @@
 <h2 id="lock-user-icon">锁定用户图标</h2>
 
 <p>
-  新的用户限制 (<code>DISALLOW_SET_USER_ICON</code>) 阻止用户更改其用户图标。 
+  新的用户限制 (<code>DISALLOW_SET_USER_ICON</code>) 阻止用户更改其用户图标。
 用户的设备所有者或个人资料所有者仍可以更改图标。
 但是个人资料所有者只能更改其控制的个人资料的用户图标。
 
diff --git a/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd b/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
index 5392329..4ce58aa 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
@@ -61,7 +61,7 @@
 <ul>
   <li>面向 Preview 的应用不会收到 {@link
 android.net.ConnectivityManager#CONNECTIVITY_ACTION} 广播，即使它们在清单中注册接收这些广播。
-运行的应用如果使用 {@link android.content.Context#registerReceiver Context.registerReceiver()} 注册 
+运行的应用如果使用 {@link android.content.Context#registerReceiver Context.registerReceiver()} 注册
 {@link android.content.BroadcastReceiver}，则仍可在主线程上侦听 {@code CONNECTIVITY_CHANGE}。
 
 
diff --git a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd b/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
index ca20c44..e029a035 100644
--- a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
+++ b/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
@@ -739,7 +739,7 @@
       </dt>
 
       <dd>
-        用于生成 PKP 的摘要算法。目前仅支持 
+        用于生成 PKP 的摘要算法。目前仅支持
 {@code "SHA-256"}。
       </dd>
     </dl>
diff --git a/docs/html-intl/intl/zh-cn/preview/overview.jd b/docs/html-intl/intl/zh-cn/preview/overview.jd
index 06a905f..8bbd120 100644
--- a/docs/html-intl/intl/zh-cn/preview/overview.jd
+++ b/docs/html-intl/intl/zh-cn/preview/overview.jd
@@ -117,7 +117,7 @@
 
       <p>
         使用 <a href="{@docRoot}preview/bug">Issue Tracker</a> 向我们报告问题并提供反馈。
-与 
+与
 <a href="{@docRoot}preview/dev-community">N&nbsp;开发者社区</a>中的其他开发者建立联系。
 
       </p>
@@ -381,7 +381,7 @@
 </p>
 
 <p>
-  Android N Developer Preview 提供<strong>预览版 API</strong> 功能 
+  Android N Developer Preview 提供<strong>预览版 API</strong> 功能
 &mdash; 在最终的 SDK 发布之前，这些 API 都不是正式的 API。目前，最终的 SDK 计划于 2016 年第三季度发布。
 这意味着一段时期内，特别是该计划的最初几周内，
 <strong>API 可能会出现细微变化</strong>。
diff --git a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
index 872ad7c..c629cd9 100644
--- a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
+++ b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
@@ -55,7 +55,7 @@
 </p>
 
 <ol>
-  <li>点击 <strong>Tools &gt;Android &gt; 
+  <li>点击 <strong>Tools &gt;Android &gt;
 SDK Manager</strong> 来打开 SDK 管理器。</li>
 
   <li>在 <strong>SDK Platforms</strong> 选项卡中选中 <strong>Android N Preview</strong> 复选框。
@@ -92,7 +92,7 @@
     <a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
     <td width="100%">
       MD5:19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
-      SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7 
+      SHA-1:9224bd4445cd7f653c4c294d362ccb195a2101e7
     </td>
   </tr>
 <table>
diff --git a/docs/html-intl/intl/zh-cn/preview/support.jd b/docs/html-intl/intl/zh-cn/preview/support.jd
index 9efb5b2..353a71d 100644
--- a/docs/html-intl/intl/zh-cn/preview/support.jd
+++ b/docs/html-intl/intl/zh-cn/preview/support.jd
@@ -223,7 +223,7 @@
   <dd>
     系统现在使用 Activity 的元数据来决定图块模式。
     （之前平铺模式是由 <code>TileService.onTileAdded()</code> 的返回值决定。）
-如需了解详细信息，请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a> 中的 
+如需了解详细信息，请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a> 中的
 <code>TileService.META_DATA_ACTIVE_TILE</code>。
   </dd>
 </dl>
@@ -334,7 +334,7 @@
 </h4>
 
 <ul>
-  <li>在将一个运行 Android 6.0 或更早版本的设备更新到 N Developer Preview 时，Google 键盘不会保留首选项数据，如最近的表情符号和声音设置。 
+  <li>在将一个运行 Android 6.0 或更早版本的设备更新到 N Developer Preview 时，Google 键盘不会保留首选项数据，如最近的表情符号和声音设置。
 
 
   </li>
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd
index dad2208..e401aae 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/index.jd
@@ -55,7 +55,7 @@
 </p>
 
 <h2>课程</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">开始Activity</a></b></dt>
   <dd>学习有关Activity生命周期、用户如何启动您的应用以及如何执行基本Activity创建操作的基础知识。
@@ -68,5 +68,5 @@
   <dt><b><a href="recreating.html">重新创建Activity</a></b></dt>
   <dd>学习您的Activity被销毁时的情况以及您如何能够根据需要重新构建Activity。
 </dd>
-</dl> 
+</dl>
 
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd
index ef5b0d5..c73a9e8 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本课程将向您展示如何</h2>
     <ol>
       <li><a href="#Pause">暂停Activity</a></li>
       <li><a href="#Resume">继续Activity</a></li>
     </ol>
-    
+
     <h2>您还应阅读</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Activity</a>
@@ -59,7 +59,7 @@
 
 
 <h2 id="Pause">暂停Activity</h2>
-      
+
 <p>当系统为您的Activity调用 {@link android.app.Activity#onPause()} 时，它从技术角度看意味着您的Activity仍然处于部分可见状态，但往往说明用户即将离开Activity并且它很快就要进入“停止”状态。
 
 您通常应使用
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd
index a7971d8..76afe17 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本课程将向您展示如何</h2>
     <ol>
       <li><a href="#SaveState">保存Activity状态</a></li>
       <li><a href="#RestoreState">恢复Activity状态</a></li>
     </ol>
-    
+
     <h2>您还应阅读</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">支持不同屏幕</a>
@@ -105,7 +105,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -138,7 +138,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -157,12 +157,12 @@
 系统只在存在要恢复的已保存状态时调用 {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}
 ，因此您无需检查 {@link android.os.Bundle} 是否为 null：</p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd
index cebd748..04f380d 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本课程将向您展示如何</h2>
 <ol>
   <li><a href="#lifecycle-states">了解生命周期回调</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">创建一个新实例</a></li>
   <li><a href="#Destroy">销毁Activity</a></li>
 </ol>
-    
+
     <h2>您还应阅读</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Activity</a></li>
@@ -83,7 +83,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -128,7 +128,7 @@
 </dl>
 
 <p>其他状态（“创建”和“开始”）是瞬态，系统会通过调用下一个生命周期回调方法从这些状态快速移到下一个状态。
-也就是说，在系统调用 
+也就是说，在系统调用
 {@link android.app.Activity#onCreate onCreate()} 之后，它会快速调用 {@link
 android.app.Activity#onStart()}，紧接着快速调用 {@link
 android.app.Activity#onResume()}。</p>
@@ -138,7 +138,7 @@
 
 
 
-<h2 id="launching-activity">指定您的应用的启动器Activity</h2> 
+<h2 id="launching-activity">指定您的应用的启动器Activity</h2>
 
 <p>当用户从主屏幕选择您的应用图标时，系统会为您已声明为“启动器”（ 或“主要”）Activity的应用中的 {@link android.app.Activity} 调用 {@link
 android.app.Activity#onCreate onCreate()} 方法。
@@ -151,7 +151,7 @@
 <p>您的应用的主Activity必须使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a>（包括 {@link
 android.content.Intent#ACTION_MAIN MAIN} 操作和
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 类别）在宣示说明中声明。例如：</p> 
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 类别）在宣示说明中声明。例如：</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -214,7 +214,7 @@
 }
 </pre>
 
-<p class="caution"><strong>注意：</strong>使用 {@link android.os.Build.VERSION#SDK_INT} 
+<p class="caution"><strong>注意：</strong>使用 {@link android.os.Build.VERSION#SDK_INT}
 可防止旧版系统以这种方式仅在 Android 2.0 （API 级别5）和更高级别执行新 API 工作。
 较旧版本会遇到运行时异常。</p>
 
@@ -268,7 +268,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd
index 630817c..dd6d4a6 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本课程将向您展示如何</h2>
     <ol>
       <li><a href="#Stop">停止Activity</a></li>
       <li><a href="#Start">开始/重新开始Activity</a></li>
     </ol>
-    
+
     <h2>您还应阅读</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Activity</a>
@@ -152,13 +152,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd b/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd
index a6c9193..78fa2f3 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/data-storage/databases.jd
@@ -201,7 +201,7 @@
 </pre>
 
 <p>{@link android.database.sqlite.SQLiteDatabase#insert insert()}
-的第一个参数即为表格名称。第二个参数指定在 
+的第一个参数即为表格名称。第二个参数指定在
 {@link android.content.ContentValues} 为空的情况下框架可在其中插入 NULL 的列的名称（如果您将其设置为 {@code "null"}，
 那么框架将不会在没有值时插入行。）
 </p>
diff --git a/docs/html-intl/intl/zh-cn/training/basics/data-storage/files.jd b/docs/html-intl/intl/zh-cn/training/basics/data-storage/files.jd
index 1442275..4ec1d68 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/data-storage/files.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/data-storage/files.jd
@@ -183,7 +183,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -250,7 +250,7 @@
 
 
 
- 
+
   <p>例如，您的应用下载的其他资源或临时介质文件。</p>
   </dd>
 </dl>
@@ -265,7 +265,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -287,7 +287,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -311,7 +311,7 @@
 
 <p>无论您对于共享的文件使用 {@link
 android.os.Environment#getExternalStoragePublicDirectory
-getExternalStoragePublicDirectory()} 还是对您的应用专用文件使用 
+getExternalStoragePublicDirectory()} 还是对您的应用专用文件使用
 {@link android.content.Context#getExternalFilesDir
 getExternalFilesDir()} ，您使用诸如
 {@link android.os.Environment#DIRECTORY_PICTURES} 的 API 常数提供的目录名称非常重要。
@@ -332,7 +332,7 @@
 此信息也可用来避免填充存储卷以致超出特定阈值。
 </p>
 
-<p>但是，系统并不保证您可以写入与 {@link java.io.File#getFreeSpace} 
+<p>但是，系统并不保证您可以写入与 {@link java.io.File#getFreeSpace}
 指示的一样多的字节。如果返回的数字比您要保存的数据大小大出几 MB，或如果文件系统所占空间不到 90%，则可安全继续操作。否则，您可能不应写入存储。
 
 
@@ -366,7 +366,7 @@
 
 <div class="note">
 <p><strong>注意：</strong>当用户卸载您的应用时，Android 系统会删除以下各项：
-</p> 
+</p>
 <ul>
 <li>您保存在内部存储中的所有文件</li>
 <li>您使用 {@link
diff --git a/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd b/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd
index 51a4e27..1ef1662 100644
--- a/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd
+++ b/docs/html-intl/intl/zh-cn/training/basics/fragments/fragment-ui.jd
@@ -4,7 +4,7 @@
 @jd:body
 
     <div id="tb-wrapper">
-      <div id="tb"> 
+      <div id="tb">
         <h2>本课程所教授的内容：</h2>
     <ol>
       <li><a href="#AddAtRuntime">在运行时向 Activity 添加 Fragment</a></li>
@@ -39,7 +39,7 @@
 
 
 
-    <h2 id="AddAtRuntime">在运行时向 Activity 添加 Fragment</h2> 
+    <h2 id="AddAtRuntime">在运行时向 Activity 添加 Fragment</h2>
 
     <p>你可以在 Activity 运行时向其添加 Fragment，而不用像<a href="creating.html">上一课</a>中介绍的那样，使用 <code>&lt;fragment&gt;</code> 元素在布局文件中为 Activity 定义 Fragment。如果你打算在 Activity 运行周期内更改 Fragment，就必须这样做。</p>
 
@@ -88,11 +88,11 @@
                     return;
                 }
 
-                // 创建一个要放入 Activity 布局中的新 Fragment 
+                // 创建一个要放入 Activity 布局中的新 Fragment
                 HeadlinesFragment firstFragment = new HeadlinesFragment();
 
                 // 如果此 Activity 是通过 Intent 发出的特殊指令来启动的，
-                // 请将该 Intent 的 extras 以参数形式传递给该 Fragment 
+                // 请将该 Intent 的 extras 以参数形式传递给该 Fragment
                 firstFragment.setArguments(getIntent().getExtras());
 
                 // 将该 Fragment 添加到“fragment_container”FrameLayout 中
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
index 0e1ccb7..42b3c89 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/battery-monitoring.jd
@@ -7,8 +7,8 @@
 next.link=docking-monitoring.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>本教程将指导您</h2>
@@ -24,9 +24,9 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 <p>如果您要更改后台更新频率，从而减少更新对电池使用时间的影响，最好先查看当前的电池电量和充电状态。</p>
 
 <p>对应用进行更新会影响电池使用时间，具体取决于设备的电池电量和充电状态。如果用户正在通过交流电源为设备充电，更新应用的影响就可以忽略不计。因此，在大多数情况下，只要设备连接了充电器，您就可以最大程度地提高刷新频率。相反，如果设备在消耗电池电量，那么降低更新频率就可以延长电池使用时间。</p>
@@ -34,8 +34,8 @@
 <p>同样，您也可以查看电池电量，如果电量即将耗尽，您就可以降低更新频率，甚至停止更新。</p>
 
 
-<h2 id="DetermineChargeState">确定当前的充电状态</h2> 
- 
+<h2 id="DetermineChargeState">确定当前的充电状态</h2>
+
 <p>请先确定当前的充电状态。{@link android.os.BatteryManager} 会通过一个包含充电状态的持续 {@link android.content.Intent} 广播所有的电池详情和充电详情。</p>
 
 <p>由于这是个持续 intent，因此您无需通过将传入 {@code null} 的 {@code registerReceiver} 作为接收器直接调用（如下一代码段所示）来注册 {@link android.content.BroadcastReceiver}，系统会返回当前电池状态 intent。您可以在此处传入实际的 {@link android.content.BroadcastReceiver} 对象，不过我们会在下文中介绍如何处理更新，因此您不一定要执行此操作。</p>
@@ -58,7 +58,7 @@
 <p>通常，如果设备连接了交流充电器，您就应最大程度地提高后台更新频率；如果设备通过 USB 充电，请降低更新频率；如果电池在耗电，请进一步降低更新频率。</p>
 
 
-<h2 id="MonitorChargeState">监控充电状态的变化</h2> 
+<h2 id="MonitorChargeState">监控充电状态的变化</h2>
 
 <p>充电状态的改变就像设备连接电源那样容易，因此监控充电状态的变化并相应地调整刷新频率就很重要了。</p>
 
@@ -75,11 +75,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 == BATTERY_PLUGGED_USB;
         boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
@@ -87,7 +87,7 @@
 }</pre>
 
 
-<h2 id="CurrentLevel">确定当前的电池电量</h2> 
+<h2 id="CurrentLevel">确定当前的电池电量</h2>
 
 <p>在某些情况下，确定当前的电池电量会对您有所帮助。如果电池电量低于一定水平，您可以降低后台更新频率。</p>
 
@@ -99,7 +99,7 @@
 float batteryPct = level / (float)scale;</pre>
 
 
-<h2 id="MonitorLevel">监控电池电量的显著变化</h2> 
+<h2 id="MonitorLevel">监控电池电量的显著变化</h2>
 
 <p>您无法轻松地对电池状态进行持续监控，不过也无需这么做。</p>
 
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
index 8313e08..b5f48a9 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/connectivity-monitoring.jd
@@ -11,7 +11,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>本教程将指导您</h2>
@@ -27,7 +27,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>重复提醒和后台服务最常见的用途之一，就是为来自互联网资源的应用数据、缓存数据安排定期更新或执行长时间运行的下载任务。但是，如果您没有连接互联网，或因连接过慢而无法完成下载，那就根本没必要唤醒设备并安排更新了。</p>
@@ -35,18 +35,18 @@
 <p>您可以使用 {@link android.net.ConnectivityManager} 查看是否确实已连接互联网，如果已连接，您还可以了解当前的连接类型。</p>
 
 
-<h2 id="DetermineConnection">确定是否已连接互联网</h2> 
- 
+<h2 id="DetermineConnection">确定是否已连接互联网</h2>
+
 <p>如果设备未连接互联网，就没有必要根据互联网资源安排更新了。以下代码段说明如何使用 {@link android.net.ConnectivityManager} 查询有效网络并确定该网络是否已连接互联网。</p>
 
 <pre>ConnectivityManager cm =
         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>
 
 
-<h2 id="DetermineType">确定互联网连接的类型</h2> 
+<h2 id="DetermineType">确定互联网连接的类型</h2>
 
 <p>您也可以确定当前可用的互联网连接的类型。</p>
 
@@ -59,7 +59,7 @@
 <p>停用更新后，请务必侦听连接情况的变化，以便在建立互联网连接后恢复更新。</p>
 
 
-<h2 id="MonitorChanges">监控连接情况的变化</h2> 
+<h2 id="MonitorChanges">监控连接情况的变化</h2>
 
 <p>只要连接的具体情况发生变化，{@link android.net.ConnectivityManager} 就会广播 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code "android.net.conn.CONNECTIVITY_CHANGE"}) 操作。您可以在清单中注册广播接收器，以便侦听这些变化并相应地恢复（或暂停）后台更新。</p>
 
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
index 53b951d..c5ed38e 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/docking-monitoring.jd
@@ -10,7 +10,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>本教程将指导您</h2>
@@ -26,7 +26,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Android 设备支持几种不同类型的基座。这些类型包括车载或家用基座以及数字和模拟基座。许多基座可用于为插入的设备充电，因此基座状态通常与充电状态紧密相关。</p>
@@ -36,8 +36,8 @@
 <p>系统是以持续 {@link android.content.Intent} 的形式广播基座状态的，这样您就可以查询设备是否插入了基座，如果已插入，您还可以查询基座类型。</p>
 
 
-<h2 id="CurrentDockState">确定当前的基座状态</h2> 
- 
+<h2 id="CurrentDockState">确定当前的基座状态</h2>
+
 <p>基座状态详情是以附加信息的形式包含在 {@link android.content.Intent#ACTION_DOCK_EVENT} 操作的持续广播中的。由于这属于持续广播，因此您无需注册 {@link android.content.BroadcastReceiver}。您可以将传入 {@code null} 的 {@link android.content.Context#registerReceiver registerReceiver()} 作为广播接收器直接调用，具体如下一代码段所示。</p>
 
 <pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
@@ -49,9 +49,9 @@
 boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
 
 
-<h2 id="DockType">确定当前的基座类型</h2> 
+<h2 id="DockType">确定当前的基座类型</h2>
 
-<p>用户可以将设备插入以下四种类型的基座： 
+<p>用户可以将设备插入以下四种类型的基座：
 <ul><li>车载基座</li>
 <li>桌面基座</li>
 <li>低端（模拟）桌面基座</li>
@@ -60,12 +60,12 @@
 <p>请注意，后两种类型仅适用于 API 级别为 11 及以上的 Android，因此如果您只关注基座类型，而不在意基座究竟是数字的还是模拟的，那么比较合适的做法就是查看全部三种类型：</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">监控基座状态或类型的变化</h2> 
+<h2 id="MonitorDockState">监控基座状态或类型的变化</h2>
 
 <p>无论设备是否插入了基座，系统都会广播 {@link android.content.Intent#ACTION_DOCK_EVENT} 操作。要监控设备基座状态的变化，您只需在应用清单中注册广播接收器即可，具体如以下代码段所示：</p>
 
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd
index 308ad7b..2efed8b 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
-<h2>依存关系和前提条件</h2> 
+<h2>依存关系和前提条件</h2>
 <ul>
   <li>Android 2.0（API 级别 5）或更高版本</li>
   <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>的使用经验</li>
@@ -21,19 +21,19 @@
   <li><a href="{@docRoot}guide/components/services.html">服务</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>为了打造一个优秀的应用，您应设法降低应用对电池使用时间的影响。阅读完本教程后，您就可以让自己构建的应用根据其所在设备的状态来监控和调整自身的功能和行为。</p>
 
 <p>要确保在不影响用户体验的情况下最大程度地降低应用对电池使用时间的影响，您可以采取一些措施，例如在网络连接断开时停用后台服务更新，或在电池电量较低时降低此类更新的频率。</p>
 
-<h2>教程</h2> 
- 
+<h2>教程</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="battery-monitoring.html">监控电池电量和充电状态</a></b></dt>
   <dd>了解如何通过确定和监控当前的电池电量和充电状态的变化来相应地调整应用的更新频率。</dd>
@@ -46,4 +46,4 @@
 
   <dt><b><a href="manifest-receivers.html">根据需要操作广播接收器</a></b></dt>
   <dd>您可以在运行时切换自己在清单中声明的广播接收器，以便根据当前设备状态停用不需要的接收器。了解如何在设备未处于特定状态的情况下切换和层叠状态变化接收器和延迟操作，以便提高效率。</dd>
-</dl> 
\ No newline at end of file
+</dl>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
index 07c014f..ed1b6ce 100644
--- a/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html-intl/intl/zh-cn/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>本教程将指导您</h2>
@@ -23,7 +23,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">intent 和 intent 过滤器</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>监控设备状态变化的最简单方法就是，为您监控的每种状态创建 {@link android.content.BroadcastReceiver} 并在应用清单中逐一进行注册。然后，您只需根据当前设备状态在每个接收器中重新安排重复提醒即可。</p>
@@ -31,10 +31,10 @@
 <p>此方法的负面影响在于，只要系统触发了这些接收器中的任何一个，相关应用就会唤醒设备，其频率可能会远远超过所需的水平。</p>
 
 <p>更好的方法是在运行时停用或启用广播接收器。这样的话，您就可以将自己在清单中声明的接收器用作被动提醒，只有在需要时才会由系统事件触发。</p>
- 
 
-<h2 id="ToggleReceivers">切换和层叠状态变化接收器以提高效率 </h2> 
- 
+
+<h2 id="ToggleReceivers">切换和层叠状态变化接收器以提高效率 </h2>
+
 <p>您可以使用 {@link android.content.pm.PackageManager} 切换清单中定义的任意组件的启用状态（包括您要启用或停用的任意广播接收器），具体如以下片段所示：</p>
 
 <pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd
index 89908fe..f9e3225 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
+<div id="tb-wrapper">
+<div id="tb">
+
 <h2>本教程将指导您</h2>
 
 <ol>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">支持平板电脑和手持设备</a></li>
 </ul>
- 
+
 <h2>试试看</h2>
- 
+
 <div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>根据您的应用当前显示的布局，用户界面流程可能会有所不同。例如，如果您的应用处于双面板模式下，点击左侧面板上的项即可直接在右侧面板上显示相关内容；如果该应用处于单面板模式下，相关内容就应以其他活动的形式在同一面板上显示。</p>
 
@@ -56,7 +56,7 @@
         setContentView(R.layout.main_layout);
 
         View articleView = findViewById(R.id.article);
-        mIsDualPane = articleView != null &amp;&amp; 
+        mIsDualPane = articleView != null &amp;&amp;
                         articleView.getVisibility() == View.VISIBLE;
     }
 }
@@ -116,7 +116,7 @@
     else {
         /* use list navigation (spinner) */
         actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
-        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+        SpinnerAdapter adap = new ArrayAdapter<String>(this,
                 R.layout.headline_item, CATEGORIES);
         actionBar.setListNavigationCallbacks(adap, handler);
     }
@@ -168,7 +168,7 @@
 public class HeadlinesFragment extends ListFragment {
     ...
     &#64;Override
-    public void onItemClick(AdapterView&lt;?&gt; parent, 
+    public void onItemClick(AdapterView&lt;?&gt; parent,
                             View view, int position, long id) {
         if (null != mHeadlineSelectedListener) {
             mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd
index 02c687a..5ac0d8c 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
-<h2>依存关系和前提条件</h2> 
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>依存关系和前提条件</h2>
 
 <ul>
   <li>Android 1.6 或更高版本（示例应用则需要 2.1 或更高版本）</li>
@@ -27,17 +27,17 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/screens_support.html">支持多种屏幕</a></li>
 </ul>
- 
-<h2>试试看</h2> 
- 
-<div class="download-box"> 
+
+<h2>试试看</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
- 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
 <p>Android 支持数百种屏幕尺寸不同的设备，包括小型手机和大型电视机。因此，请务必将您的应用设计为与所有的屏幕尺寸兼容，以便让尽可能多的用户使用该应用。</p>
 
 <p>不过，与各种类型的设备兼容还远远不够。由于各种屏幕尺寸对用户互动产生的利弊有所不同，因此要真正满足用户需求并广获好评，您的应用不仅需要支持多种屏幕，还应针对各类屏幕配置的用户体验进行优化。<em></em><em></em></p>
@@ -48,17 +48,17 @@
 
 <p class="note"><strong>请注意</strong>：本教程和相关的示例使用了<a
 href="{@docRoot}tools/support-library/index.html">支持库</a>，以便在 3.0 版以下的 Android 上使用  <PH>{@link android.app.Fragment}</PH>  API。因此，您需要下载该库并将其添加到您的应用，才能使用本教程中涉及的所有 API。</p>
- 
 
-<h2>教程</h2> 
- 
-<dl> 
-  <dt><b><a href="screensizes.html">支持各种屏幕尺寸</a></b></dt> 
-    <dd>本教程将向您介绍如何设计可适应多种屏幕尺寸的布局（使用灵活的视图尺寸、 <PH>{@link android.widget.RelativeLayout}</PH>、屏幕尺寸和屏幕方向限定符、别名过滤器以及自动拉伸位图）。</dd> 
- 
-  <dt><b><a href="screendensities.html">支持各种屏幕密度</a></b></dt> 
-    <dd>本教程将向您介绍如何支持具有不同像素密度的屏幕（使用非密度制约像素并提供各种密度的相应位图）。</dd> 
- 
-  <dt><b><a href="adaptui.html">实施自适应用户界面流程</a></b></dt> 
-    <dd>本教程将向您介绍如何以可适应多种屏幕尺寸/屏幕密度组合的方式实施用户界面流程（运行时对当前布局的检测，根据当前布局做出响应，处理屏幕配置变化）。</dd> 
-</dl> 
+
+<h2>教程</h2>
+
+<dl>
+  <dt><b><a href="screensizes.html">支持各种屏幕尺寸</a></b></dt>
+    <dd>本教程将向您介绍如何设计可适应多种屏幕尺寸的布局（使用灵活的视图尺寸、 <PH>{@link android.widget.RelativeLayout}</PH>、屏幕尺寸和屏幕方向限定符、别名过滤器以及自动拉伸位图）。</dd>
+
+  <dt><b><a href="screendensities.html">支持各种屏幕密度</a></b></dt>
+    <dd>本教程将向您介绍如何支持具有不同像素密度的屏幕（使用非密度制约像素并提供各种密度的相应位图）。</dd>
+
+  <dt><b><a href="adaptui.html">实施自适应用户界面流程</a></b></dt>
+    <dd>本教程将向您介绍如何以可适应多种屏幕尺寸/屏幕密度组合的方式实施用户界面流程（运行时对当前布局的检测，根据当前布局做出响应，处理屏幕配置变化）。</dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd
index cdb9b7f..342ee95 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/screendensities.jd
@@ -12,8 +12,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>本教程将指导您</h2>
 <ol>
@@ -29,15 +29,15 @@
 </ul>
 
 <h2>试试看</h2>
- 
-<div class="download-box"> 
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>本教程将向您介绍如何通过提供不同资源和使用独立于分辨率的测量单位来支持不同屏幕密度。</p>
 
@@ -48,8 +48,8 @@
 <p>例如，请使用 <code>dp</code>（而非 <code>px</code>）指定两个视图间的间距：</p>
 
 <pre>
-&lt;Button android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+&lt;Button android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:text="&#64;string/clickme"
     android:layout_marginTop="20dp" /&gt;
 </pre>
@@ -57,8 +57,8 @@
 <p>请务必使用 <code>sp</code> 指定文字大小：</p>
 
 <pre>
-&lt;TextView android:layout_width="match_parent" 
-    android:layout_height="wrap_content" 
+&lt;TextView android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:textSize="20sp" /&gt;
 </pre>
 
diff --git a/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd b/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd
index 904d097..2d47d1d 100644
--- a/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd
+++ b/docs/html-intl/intl/zh-cn/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>本教程将指导您</h2>
 <ol>
@@ -30,26 +30,26 @@
   <li><a href="{@docRoot}guide/practices/screens_support.html">支持多种屏幕</a></li>
 </ul>
 
-<h2>试试看</h2> 
- 
-<div class="download-box"> 
+<h2>试试看</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">下载示例应用</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
 
 <p>此教程将向您介绍如何通过以下方法支持各种尺寸的屏幕：</p>
-<ul> 
-  <li>确保系统可以适当地调整您布局的尺寸以便适应屏幕</li> 
-  <li>根据屏幕配置提供合适的用户界面布局</li> 
+<ul>
+  <li>确保系统可以适当地调整您布局的尺寸以便适应屏幕</li>
+  <li>根据屏幕配置提供合适的用户界面布局</li>
   <li>确保正确的布局应用到了正确的屏幕上</li>
-  <li>提供可正确缩放的位图</li> 
-</ul> 
+  <li>提供可正确缩放的位图</li>
+</ul>
 
 
-<h2 id="TaskUseWrapMatchPar">使用“wrap_content”和“match_parent”</h2> 
+<h2 id="TaskUseWrapMatchPar">使用“wrap_content”和“match_parent”</h2>
 
 <p>要确保布局的灵活性并适应各种尺寸的屏幕，您应使用 <code>"wrap_content"</code> 和 <code>"match_parent"</code> 控制某些视图组件的宽度和高度。如果您使用 <code>"wrap_content"</code>，系统就会将视图的宽度或高度设置成所需的最小尺寸以适应视图中的内容，而 <code>"match_parent"</code>（在低于 API 级别 8 的级别中称为 <code>"fill_parent"</code>）则会展开组件以匹配其父视图的尺寸。</p>
 
@@ -65,7 +65,7 @@
 <p class="img-caption"><strong>图 1</strong>。纵向模式（左）和横向模式（右）下的新闻阅读器示例应用。</p>
 
 
-<h2 id="TaskUseRelativeLayout">使用相对布局</h2> 
+<h2 id="TaskUseRelativeLayout">使用相对布局</h2>
 
 <p>您可以使用  <PH>{@link android.widget.LinearLayout}</PH>  的嵌套实例并结合 <code>"wrap_content"</code> 和 <code>"match_parent"</code> 尺寸，以便构建相当复杂的布局。不过，您无法通过  <PH>{@link android.widget.LinearLayout}</PH>  精确控制子视图的特殊关系；系统会将  <PH>{@link android.widget.LinearLayout}</PH>  中的视图直接并排列出。如果您需要将子视图排列出各种效果而不是一条直线，通常更合适的解决方法是使用  <PH>{@link android.widget.RelativeLayout}</PH>，这样您就可以根据各组件之间的特殊关系指定布局了。例如，您可以将某个子视图对齐到屏幕左侧，同时将另一个视图对齐到屏幕右侧。</p>
 
@@ -115,8 +115,8 @@
 
 <p>请注意，虽然组件的尺寸有所变化，但它们的空间关系仍会保留，具体由  <PH>{@link android.widget.RelativeLayout.LayoutParams}</PH> 指定。</p>
 
- 
-<h2 id="TaskUseSizeQuali">使用尺寸限定符</h2> 
+
+<h2 id="TaskUseSizeQuali">使用尺寸限定符</h2>
 
 <p>上文所述的灵活布局或相对布局可以为您带来的优势就只有这么多了。虽然这些布局可以拉伸组件内外的空间以适应各种屏幕，但它们不一定能为每种屏幕都提供最佳的用户体验。因此，您的应用不仅应实施灵活布局，还应针对各种屏幕配置提供一些备用布局。要做到这一点，您可以使用<a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">配置限定符</a>，这样就可以在运行时根据当前的设备配置自动选择合适的资源了（例如根据各种屏幕尺寸选择不同的布局）。</p>
 
@@ -158,7 +158,7 @@
 <p>但 Android 版本低于 3.2 的设备不支持此技术，原因是这些设备无法将 <code>sw600dp</code> 识别为尺寸限定符，因此您仍需使用 <code>large</code> 限定符。这样一来，就会有一个名称为 <code>res/layout-large/main.xml</code> 的文件（与 <code>res/layout-sw600dp/main.xml</code> 一样）。您将在下一教程中了解到避免此类布局文件出现重复的技术。</p>
 
 
-<h2 id="TaskUseAliasFilters">使用布局别名</h2> 
+<h2 id="TaskUseAliasFilters">使用布局别名</h2>
 
 <p>最小宽度限定符仅适用于 Android 3.2 及更高版本。因此，您仍需使用与较低版本兼容的概括尺寸范围（小、正常、大和特大）。例如，如果您要将用户界面设计成在手机上显示单面板，但在 7 英寸平板电脑、电视和其他较大的设备上显示多面板，请提供以下文件：</p>
 
@@ -198,11 +198,11 @@
 </li>
 </ul></p>
 
-<p>后两个文件的内容相同，但它们并未实际定义布局。它们只是将  <PH>{@code main}</PH> 设置成了  <PH>{@code main_twopanes}</PH> 的别名。由于这些文件包含 <code>large</code> 和 <code>sw600dp</code> 选择器，因此无论 Android 版本如何，系统都会将这些文件应用到平板电脑和电视上（版本低于 3.2 的平板电脑和电视会匹配 
+<p>后两个文件的内容相同，但它们并未实际定义布局。它们只是将  <PH>{@code main}</PH> 设置成了  <PH>{@code main_twopanes}</PH> 的别名。由于这些文件包含 <code>large</code> 和 <code>sw600dp</code> 选择器，因此无论 Android 版本如何，系统都会将这些文件应用到平板电脑和电视上（版本低于 3.2 的平板电脑和电视会匹配
 <PH>{@code large}</PH>，版本低于 3.2 的平板电脑和电视则会匹配 <code>sw600dp</code>）。</p>
 
 
-<h2 id="TaskUseOriQuali">使用屏幕方向限定符</h2> 
+<h2 id="TaskUseOriQuali">使用屏幕方向限定符</h2>
 
 <p>某些布局会同时支持横向模式和纵向模式，但您可以通过调整优化其中大部分布局的效果。在新闻阅读器示例应用中，每种屏幕尺寸和屏幕方向下的布局行为方式如下所示：</p>
 
diff --git a/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd b/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd
index 6b3637b..8952a35 100644
--- a/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd
+++ b/docs/html-intl/intl/zh-tw/about/versions/android-5.0.jd
@@ -428,7 +428,7 @@
 <p>當系統偵測到適用網路時，就會自動連線並叫用 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable(android.net.Network) onAvailable()} 回呼。您可以使用回呼的 {@link android.net.Network} 物件，以取得網路的額外資訊，或是將流量導向所選的網路。</p>
 
 <h3 id="BluetoothBroadcasting">藍牙低功耗技術</h3>
-<p>Android 4.3 平台首度導入了<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">藍牙低功耗技術</a> (<em>Bluetooth LE</em>) 支援功能，讓裝置以主機角色建立連線。在 Android 5.0 中，Android 裝置則可以扮演 Bluetooth LE「周邊裝置」<em></em>的角色。應用程式可以透過這項功能，輕鬆讓附近的裝置偵測到。舉例來說，您可以打造應用程式，讓裝置化身為計步器或健康監測器，並將資料傳送給另一台 Bluetooth LE 裝置。</p> 
+<p>Android 4.3 平台首度導入了<a href="{@docRoot}guide/topics/connectivity/bluetooth-le.html">藍牙低功耗技術</a> (<em>Bluetooth LE</em>) 支援功能，讓裝置以主機角色建立連線。在 Android 5.0 中，Android 裝置則可以扮演 Bluetooth LE「周邊裝置」<em></em>的角色。應用程式可以透過這項功能，輕鬆讓附近的裝置偵測到。舉例來說，您可以打造應用程式，讓裝置化身為計步器或健康監測器，並將資料傳送給另一台 Bluetooth LE 裝置。</p>
 <p>全新的 {@link android.bluetooth.le} API 可讓您的應用程式播送廣告、掃描回應，以及與附近的 Bluetooth LE 裝置建立連線。如要使用全新的廣告和掃描功能，請在您的資訊清單中新增 {@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN} 權限。當使用者從 Play 商店更新或下載您的應用程式時，會看到以下的權限要求提示：「藍牙連線資訊：允許應用程式控制藍牙功能，包括對附近的藍牙裝置播送資訊，或是從附近的藍牙裝置取得資訊。」</p>
 
 <p>如要開始 Bluetooth LE 廣告功能，以便其他裝置發掘您的應用程式，請呼叫 {@link android.bluetooth.le.BluetoothLeAdvertiser#startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback) startAdvertising()} 並傳遞 {@link android.bluetooth.le.AdvertiseCallback} 類別實作。回呼物件會收到廣告作業成功或失敗的報告。</p>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd
index f63501f..5e0eec3 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/about.jd
@@ -6,7 +6,7 @@
 
 @jd:body
 
-<div id="qv-wrapper">           
+<div id="qv-wrapper">
   <div id="qv">
   <h2>關於 Google Play</h2>
     <ol style="list-style-type:none;">
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd
index 8fe944d..88236c1 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/auto.jd
@@ -160,4 +160,4 @@
     data-query="collection:autolanding"
     data-cardSizes="9x6, 6x3x2"
     data-maxResults="6">
-  </div> 
+  </div>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd
index a0093bb..b14095b 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/developer-console.jd
@@ -5,7 +5,7 @@
 
 @jd:body
 
-<div id="qv-wrapper">           
+<div id="qv-wrapper">
   <div id="qv">
     <h2>發行功能</h2>
     <ol>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd
index b362ae9..38c2ac1 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/about.jd
@@ -36,4 +36,4 @@
 
 <div class="paging-links" style="padding-top:.75em;">
   <a href="{@docRoot}distribute/googleplay/families/start.html" class="next-class-link">後續內容：選擇</a>
-</div> 
+</div>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd
index 6964789..057e583 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>本文件內容</h2>
@@ -106,7 +106,7 @@
   </dt>
 
   <dd>
-    在您選擇加入 Designed for Families 後，Google Play 會檢閱您的應用程式，以確認其是否適合家庭使用。若您的應用程式符合所有計劃需求，預計發行時間不會長於一般發行時間；但是，若在 Designed for Families 檢閱期間拒絕應用程式，則該應用程式的發行可能會出現延遲。 
+    在您選擇加入 Designed for Families 後，Google Play 會檢閱您的應用程式，以確認其是否適合家庭使用。若您的應用程式符合所有計劃需求，預計發行時間不會長於一般發行時間；但是，若在 Designed for Families 檢閱期間拒絕應用程式，則該應用程式的發行可能會出現延遲。
   </dd>
 
   <dt>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd
index bf7a725..ca44a28 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/families/start.jd
@@ -51,7 +51,7 @@
 </p>
 
 <p class="note">
-  <strong>注意：</strong>Designed for Families 計劃中已發行的應用程式也可供 Google Play 上的所有使用者使用。 
+  <strong>注意：</strong>Designed for Families 計劃中已發行的應用程式也可供 Google Play 上的所有使用者使用。
 </p>
 
 <p>
@@ -67,4 +67,4 @@
 
 <div class="paging-links" style="padding-top:.75em;">
   <a href="{@docRoot}distribute/googleplay/families/faq.html" class="next-class-link">後續內容：常見問題</a>
-</div> 
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd
index 0165279..e70eaa3 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/guide.jd
@@ -54,4 +54,4 @@
     data-query="collection:play_dev_guide"
     data-cardSizes="9x6"
     data-maxResults="1">
-  </div> 
\ No newline at end of file
+  </div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd
index bf7b702..d724869 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/auto.jd
@@ -431,4 +431,4 @@
 
 <p class="caution">
   <strong>重要說明：</strong>由於存在這一限制，因此您不應將生產 APK 用於 Auto 支援原型設計。
-</p> 
\ No newline at end of file
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd
index feabc20..3435ec2 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/core.jd
@@ -13,7 +13,7 @@
         <li><a href="#listing">Google Play</a></li>
 
   </ol>
-  
+
   <h2>測試</h2>
   <ol>
     <li><a href="#test-environment">設定測試環境</a></li>
@@ -25,7 +25,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">平板電腦應用程式品質</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">最佳化您的應用程式</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -70,7 +70,7 @@
     <th style="width:54px;">
       ID
     </th>
-    
+
 
     <th>
       描述
@@ -1011,4 +1011,4 @@
 
 <p>
   請確保使用{@link android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen() penaltyFlashScreen()}針對 <code>ThreadPolicy</code> 啟用政策違犯的<strong>視覺通知</strong>。
-</p> 
\ No newline at end of file
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd
index 3c16f9d..d584e53 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/tablets.jd
@@ -46,7 +46,7 @@
 
 <div class="headerLine"><h2 id="core-app-quality">1.測試基本平板電腦應用程式品質</h2></div>
 
-<p>提供平板電腦應用程式絕佳體驗的第一步，是確保其符合應用程式所針對所有裝置及尺寸規格的<em>核心應用程式品質準則</em>。如需完備資訊，請參閱<a href="{@docRoot}distribute/essentials/quality/core.html">核心應用程式品質指導方針</a>。 
+<p>提供平板電腦應用程式絕佳體驗的第一步，是確保其符合應用程式所針對所有裝置及尺寸規格的<em>核心應用程式品質準則</em>。如需完備資訊，請參閱<a href="{@docRoot}distribute/essentials/quality/core.html">核心應用程式品質指導方針</a>。
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd
index 47a2d91..6dc85e8 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/quality/wear.jd
@@ -395,4 +395,4 @@
 </p>
 <p>
   是。上述需求僅判斷在 Google Play 上是否將您的應用程式視為 Android Wear 應用程式，以及該應用程式是否可供 Android Wear 使用者更輕鬆地探尋。若未接受您的應用程式為 Wear 應用程式，仍會向其他裝置類型 (例如手機或平板電腦) 提供該應用程式，並且仍會安裝在穿戴式裝置上。
-</p> 
\ No newline at end of file
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd
index 3364e49..8bff67d 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/start.jd
@@ -134,4 +134,4 @@
   data-query="collection:distribute/googleplay/gettingstarted"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
-  data-maxResults="6"></div> 
\ No newline at end of file
+  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd
index c4f7a7c..aa2096a 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/tv.jd
@@ -173,7 +173,7 @@
 <h3 id="track_review">5.追蹤您的檢閱與核准</h3>
 
 <p>
-  若您的應用程式符合 Android 電視的技術與品質準則 (如上所述)，則會向 Android 電視的使用者提供您的應用程式。若您的應用程式不符合該準則，您將收到<strong>傳送至您開發人員帳戶地址的通知電子郵件</strong>，內含需要修正的領域的摘要。若您已進行所需調整，可以將新版本的應用程式上傳至 Developer Console。 
+  若您的應用程式符合 Android 電視的技術與品質準則 (如上所述)，則會向 Android 電視的使用者提供您的應用程式。若您的應用程式不符合該準則，您將收到<strong>傳送至您開發人員帳戶地址的通知電子郵件</strong>，內含需要修正的領域的摘要。若您已進行所需調整，可以將新版本的應用程式上傳至 Developer Console。
 </p>
 
 <p>
@@ -190,7 +190,7 @@
   </li>
 
   <li>
-    <em>已核准</em> - 已檢閱並核准您的應用程式。會直接向 Android 電視使用者提供該應用程式。 
+    <em>已核准</em> - 已檢閱並核准您的應用程式。會直接向 Android 電視使用者提供該應用程式。
   </li>
 
   <li>
@@ -207,4 +207,4 @@
     data-query="collection:tvlanding"
     data-cardSizes="9x6, 6x3x2"
     data-maxResults="6">
-  </div> 
\ No newline at end of file
+  </div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd b/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd
index 19a48f5..f4aca5c 100644
--- a/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/googleplay/wear.jd
@@ -196,4 +196,4 @@
     data-query="collection:wearlanding"
     data-cardSizes="6x2"
     data-maxResults="3">
-  </div> 
\ No newline at end of file
+  </div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd b/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd
index 6e97417..167c4f1 100644
--- a/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/tools/launch-checklist.jd
@@ -789,4 +789,4 @@
   data-query="collection:distribute/toolsreference/launchchecklist/afterlaunch"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3,9x3,9x3,9x3,9x3,9x3"
-  data-maxResults="6"></div> 
\ No newline at end of file
+  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd b/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd
index 1b95d0b..c34fcee 100644
--- a/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd
+++ b/docs/html-intl/intl/zh-tw/distribute/tools/localization-checklist.jd
@@ -713,4 +713,4 @@
   data-query="collection:distribute/toolsreference/localizationchecklist/supportlaunch"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3,9x3,6x3,9x3,9x3,9x3"
-  data-maxResults="6"></div> 
\ No newline at end of file
+  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/google/play/filters.jd b/docs/html-intl/intl/zh-tw/google/play/filters.jd
index e96b9dd..eec87ac 100644
--- a/docs/html-intl/intl/zh-tw/google/play/filters.jd
+++ b/docs/html-intl/intl/zh-tw/google/play/filters.jd
@@ -263,4 +263,4 @@
 
 <p class="caution"><strong>注意：</strong>針對同一應用程式發行多個 APK 是進階功能，<strong>多數應用程式應僅發行為諸多裝置組態提供支援的單一 APK</strong>。發行多個 APK 需要您遵循篩選器中的特定規則，並格外注意每個 APK 的版本代碼，以確保每個組態使用正確的更新路徑。</p>
 
-<p>若您需要有關如何在 Google Play 上發行多個 APK 的詳細資訊，請參閱<a href="{@docRoot}google/play/publishing/multiple-apks.html">多 APK 支援</a>。</p> 
\ No newline at end of file
+<p>若您需要有關如何在 Google Play 上發行多個 APK 的詳細資訊，請參閱<a href="{@docRoot}google/play/publishing/multiple-apks.html">多 APK 支援</a>。</p>
\ No newline at end of file
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
index da47634..e26e993 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
@@ -303,7 +303,7 @@
 }
 </pre>
 
-<p>上述範例顯示：用戶端如何使用 
+<p>上述範例顯示：用戶端如何使用
 {@link android.content.ServiceConnection} 的實作和 {@link
 android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回呼，繫結至服務。下一節提供關於繫結至服務處理程序的詳細資訊。
 </p>
@@ -334,7 +334,7 @@
 </div>
 </div>
 
-<p>如果服務要和遠端處理程序溝通，則可以使用 
+<p>如果服務要和遠端處理程序溝通，則可以使用
 {@link android.os.Messenger} 為您的服務提供介面。此技術讓您不需要使用 AIDL，就可以執行處理程序間通訊 (IPC)。
 </p>
 
@@ -636,7 +636,7 @@
 
 </p>
 
-<p>此外，如果您的服務已啟動並且接受繫結，當系統呼叫您的 {@link android.app.Service#onUnbind onUnbind()} 方法時，可以選擇傳回 
+<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
diff --git a/docs/html-intl/intl/zh-tw/guide/components/fragments.jd b/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
index e54769b..dfef8f1 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <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>
@@ -46,7 +46,7 @@
 </div>
 </div>
 
-<p>{@link android.app.Fragment} 代表一種行為或 
+<p>{@link android.app.Fragment} 代表一種行為或
 {@link android.app.Activity} 中的一部分使用者介面。您可以合併單一 Activity 中的多個片段，藉此建置
 多窗格 UI 以及在多個 Activity 中重複使用片段。您可以將片段想成是 Activity 的模組化區段，片段擁有自己的生命週期、接收自己的輸入事件，而且您可以在 Activity 執行時新增或移除片段 (有點像是您可以在不同 Activity 中重複使用的「子 Activity」)。
 
@@ -204,11 +204,11 @@
 {@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()} 提供了 
+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} 的子類別，可從 
+<p>例如，以下是 {@link android.app.Fragment} 的子類別，可從
 {@code example_fragment.xml} 檔案載入版面配置：</p>
 
 <pre>
@@ -378,7 +378,7 @@
   <li>使用 {@link
 android.app.FragmentManager#findFragmentById findFragmentById()} (針對在 Activity 版面配置中提供 UI 的片段) 或 {@link android.app.FragmentManager#findFragmentByTag
 findFragmentByTag()} (針對未提供 UI 的片段) 取得 Activity 中的現有片段。
-</li> 
+</li>
   <li>使用 {@link
 android.app.FragmentManager#popBackStack()} (模擬使用者的「返回」<em></em>命令) 將片段從返回堆疊中推出。</li>
   <li>使用 {@link
@@ -563,7 +563,7 @@
 </pre>
 
 <p>如果 Activity 並未實作介面，那麼片段會擲回
-{@link java.lang.ClassCastException}。成功擲回時，{@code mListener} 成員會保留 Activity 所實作 
+{@link java.lang.ClassCastException}。成功擲回時，{@code mListener} 成員會保留 Activity 所實作
 {@code OnArticleSelectedListener} 的參照資料，以便片段 A 呼叫 {@code OnArticleSelectedListener} 介面定義的方法與 Activity 分享事件。
 
 例如，假設片段 A 是
@@ -739,7 +739,7 @@
 這個 Activity 範例同時示範了如何根據螢幕設定提供不同的片段設定。
 </p>
 
-<p class="note"><strong>注意：</strong>如需這個 Activity 的完整原始碼，請查閱 
+<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>
 
@@ -785,7 +785,7 @@
 
 <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 來顯示項目內容。
@@ -798,7 +798,7 @@
 
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
 details_activity}
- 
+
 <p>請注意，這個 Activity 會在螢幕採用橫向版面配置的情況下自行結束，因此主要 Activity 會接續顯示 {@code TitlesFragment} 旁的 {@code DetailsFragment}。如果使用者在採用直向版面配置的裝置上執行 {@code DetailsActivity}，然後將該裝置旋轉成橫向 (這會重新執行目前的 Activity)，就可能會發生這種情況。
 
 
diff --git a/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd b/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
index d3b3c28..9e4079e 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
@@ -309,7 +309,7 @@
 </ul>
 
 <p>系統看不到您納入來源但未在宣示說明中宣告的 Activity、服務和內容供應程式，因此系統無法執行這些項目。
-不過，您可在宣示說明宣告廣播接收器，或是透過程式碼以動態方式建立廣播接收器 (將廣播接收器建立為 
+不過，您可在宣示說明宣告廣播接收器，或是透過程式碼以動態方式建立廣播接收器 (將廣播接收器建立為
 {@link android.content.BroadcastReceiver} 物件)，然後呼叫 {@link android.content.Context#registerReceiver registerReceiver()}
 向系統註冊廣播接收器。
 
@@ -379,7 +379,7 @@
 </p>
 
 <p>例如，假設您的應用程式需要相機且採用 Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 級別</a> 7) 導入的 API，建議您用下列方式在宣示說明檔案中宣告這些需求：
-</p> 
+</p>
 
 <pre>
 &lt;manifest ... >
diff --git a/docs/html-intl/intl/zh-tw/guide/components/index.jd b/docs/html-intl/intl/zh-tw/guide/components/index.jd
index f34c712..a59bcd4 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/index.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/index.jd
@@ -11,7 +11,7 @@
 
   <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>
@@ -21,7 +21,7 @@
       <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 執行緒所執行的工作數。
@@ -32,7 +32,7 @@
 
   <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 在不需要系統資源時不耗用這類資源。
diff --git a/docs/html-intl/intl/zh-tw/guide/components/loaders.jd b/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
index 89bfc80..112993a 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>重要類別</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>相關範例</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">LoaderCursor
@@ -51,7 +51,7 @@
 因此不需要重新查詢資料。
 </li>
   </ul>
- 
+
 <h2 id="summary">載入器 API 摘要</h2>
 
 <p>有多個類別和介面可能與在應用程式中使用載入器有關。
@@ -129,7 +129,7 @@
 </li>
   <li>{@link android.app.LoaderManager.LoaderCallbacks} 的實作。
 您可以在這裡建立新的載入器和管理對現有載入器的參照。
-</li> 
+</li>
 <li>顯示載入器資料的一種方式，例如 {@link
 android.widget.SimpleCursorAdapter}。</li>
   <li>使用 {@link android.content.CursorLoader} 時的資料來源，例如 {@link android.content.ContentProvider}。
@@ -140,7 +140,7 @@
 <p>{@link android.app.LoaderManager} 可在 {@link android.app.Activity} 或 {@link android.app.Fragment} 內管理一或多個 {@link
 android.content.Loader} 執行個體。
 每個 Activity 或片段只能有一個 {@link
-android.app.LoaderManager}。</p> 
+android.app.LoaderManager}。</p>
 
 <p>您通常會在 Activity 的 {@link
 android.app.Activity#onCreate onCreate()} 方法內或在片段的 {@link android.app.Fragment#onActivityCreated onActivityCreated()} 方法內，初始化 {@link android.content.Loader}，
@@ -157,13 +157,13 @@
 <ul>
   <li>可識別載入器的不重複 ID。在本範例中，此 ID 為 0。</li>
 <li>可在建構時提供給載入器的選用引數 (在本範例中為<code>null</code>)。
-</li> 
+</li>
 
 <li>{@link android.app.LoaderManager.LoaderCallbacks} 實作，
 {@link android.app.LoaderManager} 會呼叫此實作來回報載入器事件。在本範例中，本機類別會實作 {@link
 android.app.LoaderManager.LoaderCallbacks} 執行個體，以將參照傳送給它自己 ({@code this})。
 
-</li> 
+</li>
 </ul>
 <p>{@link android.app.LoaderManager#initLoader initLoader()} 呼叫可確保載入器已初始化且處於有效狀態。
 可能會有兩種結果：</p>
@@ -343,7 +343,7 @@
 <p>這個方法是在正要重設先前建立的載入器時呼叫，以便使其資料無法使用。
 此回呼方法可讓您知道即將要發佈資料，而能先行將其參照移除。
   </p>
-<p>此實作會以 <code>null</code> 的值呼叫 
+<p>此實作會以 <code>null</code> 的值呼叫
 {@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}：
 </p>
 
@@ -366,7 +366,7 @@
 android.app.Fragment} 的完整實作，
 其顯示的 {@link android.widget.ListView} 包含聯絡人內容供應程式的查詢結果。它使用 {@link
 android.content.CursorLoader} 管理對供應程式的查詢。</p>
- 
+
 <p>如本範例所示，針對要存取使用者聯絡人的應用程式，它的宣示說明必須包含 {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} 權限。
 
 </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
index 74dbb8e..56027ce 100644
--- 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
@@ -49,7 +49,7 @@
 &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>
@@ -142,7 +142,7 @@
   </li>
 
   <li><b>背景處理程序</b>
-    <p>這種處理程序會保留使用者目前看不見的 Activity (已呼叫 Activity 的 
+    <p>這種處理程序會保留使用者目前看不見的 Activity (已呼叫 Activity 的
 {@link android.app.Activity#onStop onStop()} 方法)。這些處理程序會間接影響使用者體驗，且系統能隨時將其終止，藉此回收記憶體以供前景、可見或服務處理程序使用。
 
 
@@ -319,7 +319,7 @@
     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) {
diff --git a/docs/html-intl/intl/zh-tw/guide/components/recents.jd b/docs/html-intl/intl/zh-tw/guide/components/recents.jd
index d56c12c..5ac0e26 100644
--- a/docs/html-intl/intl/zh-tw/guide/components/recents.jd
+++ b/docs/html-intl/intl/zh-tw/guide/components/recents.jd
@@ -181,7 +181,7 @@
 </dl>
 
 <p class="note"><strong>注意：</strong>如果值不是 {@code none} 與 {@code never}，則 Activity 必須使用 {@code launchMode="standard"} 定義。
-如果沒有指定此屬性，則會使用 
+如果沒有指定此屬性，則會使用
 {@code documentLaunchMode="none"}。</p>
 
 <h2 id="removing">移除工作</h2>
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
index e23301d..e3ce58f 100644
--- 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
@@ -440,13 +440,13 @@
 
 <p>在兩種情況下會用到親和性：</p>
 <ul>
-  <li>當啟動 Activity 的意圖包含 
+  <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。
 
 這通常是新工作。
@@ -455,7 +455,7 @@
 
 <p>如果此旗標導致 Activity 開始新的工作，而使用者按 [首頁] 按鈕離開它，必須要有方法可以讓使用者回來瀏覽這個工作。<em></em>
 
-有些實體 (例如，通知管理員) 總是從外部工作開始 Activity，從來不使用自己的工作，因此他們都會將 {@code FLAG_ACTIVITY_NEW_TASK} 放入傳送到 
+有些實體 (例如，通知管理員) 總是從外部工作開始 Activity，從來不使用自己的工作，因此他們都會將 {@code FLAG_ACTIVITY_NEW_TASK} 放入傳送到
 {@link android.app.Activity#startActivity startActivity()} 的意圖。
 
 如果您的 Activity 可以由外部實體呼叫且可能使用此旗標，記得要提供使用者獨立的方法回到啟動的工作，例如，透過啟動組件圖示 (工作的根 Activity 有一個 {@link android.content.Intent#CATEGORY_LAUNCHER} 意圖篩選器；請參閱下方的<a href="#Starting">開始工作</a>)。
@@ -505,7 +505,7 @@
 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>
@@ -526,8 +526,8 @@
 
 <h3 id="Starting">開始工作</h3>
 
-<p>您可以給予 Activity 一個意圖篩選器，將 
-{@code "android.intent.action.MAIN"} 設定為指定的動作， 
+<p>您可以給予 Activity 一個意圖篩選器，將
+{@code "android.intent.action.MAIN"} 設定為指定的動作，
 {@code "android.intent.category.LAUNCHER"} 設定為指定的類別，以便將該 Activity 設定為工作的進入點。
 例如：</p>
 
@@ -547,7 +547,7 @@
 </p>
 
 <p>第二項功能很重要：使用者必須能夠在離開工作後，使用此 Activity 啟動組件回到此工作。
-由於這個原因，兩個將 Activity 標示為一律啟動工作的<a href="#LaunchModes">啟動模式</a> {@code "singleTask"} 和 
+由於這個原因，兩個將 Activity 標示為一律啟動工作的<a href="#LaunchModes">啟動模式</a> {@code "singleTask"} 和
 {@code "singleInstance"}，應只能在 Activity 有 {@link android.content.Intent#ACTION_MAIN} 和 {@link android.content.Intent#CATEGORY_LAUNCHER} 篩選器時才能使用。
 
 
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
index 5e42e37..77a2b80 100644
--- 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
@@ -33,15 +33,15 @@
 
 <li>描述應用程式的元件 &mdash; 組成應用程式的 Activity、服務、廣播接收器和內容供應程式。
 
-為實作每個元件的類別命名以及發佈類別的功能 (例如，類別可處理的 {@link android.content.Intent 
+為實作每個元件的類別命名以及發佈類別的功能 (例如，類別可處理的 {@link android.content.Intent
 Intent} 訊息)。
 這些宣告可讓 Android 系統瞭解元件為何以及可在哪些情況下啟動。
 </li>
 
-<li>決定代管應用程式元件的程序。</li>  
+<li>決定代管應用程式元件的程序。</li>
 
 <li>宣告應用程式必須擁有哪些權限，才能存取 API 受保護的部分以及與其他應用程式互動。
-</li>  
+</li>
 
 <li>宣示說明亦可宣告其他項目必須擁有哪些權限，才能與應用程式的元件互動。
 </li>
@@ -66,7 +66,7 @@
 如要查看任一元素的詳細資訊，只要按一下圖表中的元素名稱、圖表後方按字母順序列出的元素清單，或在他處提及的任何元素名稱。
 
 
- 
+
 </p>
 
 <pre>
@@ -128,7 +128,7 @@
 <p>
 下方按字母順序列出可出現在宣示說明檔案中的所有元素。
 只有這些才是符合資格的元素，您無法新增自己的元素或屬性。
-  
+
 </p>
 
 <p style="margin-left: 2em">
@@ -158,7 +158,7 @@
 </p>
 
 
-    
+
 
 <h2 id="filec">檔案轉換</h2>
 
@@ -185,7 +185,7 @@
 <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/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> 元素是這項規則的例外狀況：
@@ -218,7 +218,7 @@
 
 
 
-  
+
 
 <p>
 如果您一如往常定義元件類別 ({@link android.app.Activity}、{@link android.app.Service}、
@@ -244,7 +244,7 @@
 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 屬性指定)。
 
 
-下列的指派結果會和上述相同： 
+下列的指派結果會和上述相同：
 </p>
 
 <pre>&lt;manifest package="com.example.project" . . . &gt;
@@ -375,7 +375,7 @@
 <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 和意圖篩選器的標籤。
 
 
@@ -399,7 +399,7 @@
 <p>
 單一 <i>權限</i> 是指一項限制，可限制某部分程式碼或裝置上資料的存取權。
    系統會強制實施這項限制，以保護會遭到誤用而扭曲或損害使用者體驗的重要資料與程式碼。
-  
+
 </p>
 
 <p>
@@ -427,12 +427,12 @@
 如果授予權限，該應用程式就能夠使用受保護的功能。
 
 如果不授予權限，存取相關功能的嘗試就會失敗，但使用者不會收到任何通知。
- 
+
 </p>
 
 <p>
 應用程式也能利用權限來保護自己的元件 (Activity、服務、廣播接收器和內容供應程式)。
-它能使用 Android 定義的任何權限 (列於 
+它能使用 Android 定義的任何權限 (列於
 {@link android.Manifest.permission android.Manifest.permission}) 或其他應用程式宣告的任何權限。
 
 此外，應用程式也能自行定義權限。新的權限是以
@@ -458,13 +458,13 @@
 
 <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/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>
@@ -474,7 +474,7 @@
 
 
 不過，還是必須利用
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 來要求使用。 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 來要求使用。
 </p>
 
 <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
index 42434e4..682e82d 100644
--- 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
@@ -42,7 +42,7 @@
       <li><a href="#intent-view">使用意圖檢視日曆資料</a></li>
     </ol>
   </li>
-  
+
   <li><a href="#sync-adapter">同步配接器</a></li>
 </ol>
 
@@ -86,7 +86,7 @@
 
 </p>
 
-<p>每個內容供應程式都會公開一個公用 URI (包裝為 
+<p>每個內容供應程式都會公開一個公用 URI (包裝為
 {@link android.net.Uri} 物件)，可唯一識別其資料集。
 控制多個資料集 (多個表格) 的內容供應程式會為每個資料集公開個別的 URI。
 供應程式所有 URI 的開頭字串為「content://」。
@@ -113,14 +113,14 @@
   </tr>
   <tr>
     <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-    
+
     <td>此表格內含日曆特定的資訊。
 此表格中的每一列包含單一日曆的詳細資訊，例如名稱、色彩、同步資訊等等。
 </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Events}</td>
-    
+
     <td>此表格內含活動特定的資訊。
 此表格中的每一列包含單一活動的資訊 &mdash; 例如，活動標題、位置、開始時間、結束時間等等。
 
@@ -132,7 +132,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances}</td>
-    
+
     <td>此表格內含活動每次發生的開始和結束時間。
 此表格的每一列代表單一活動發生。
 單次活動執行個體和活動的對應為 1:1。
@@ -141,7 +141,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Attendees}</td>
-    
+
     <td>此表格內含活動參與者 (邀請對象) 的資訊。
 每一列代表一個活動的單一邀請對象。
 其中會指出邀請對象類型，以及邀請對象是否出席該活動的回應。
@@ -149,17 +149,17 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Reminders}</td>
-    
+
     <td>此表格內含警示/通知資訊。
 每一列代表一個活動的單一警示。一個活動可以設定多個提醒。
-每個活動的最大數量提醒指定於 
+每個活動的最大數量提醒指定於
 {@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}，此項是由擁有指定日曆的同步配接器所設定。
 
 
 提醒是以分鐘數指定活動發生前的時間，而且有一個方法用於決定通知使用者的方式。
 </td>
   </tr>
-  
+
 </table>
 
 <p>「日曆供應程式」API 的設計具備彈性且功能強大。提供良好的使用者體驗，以及保護日曆及其資料的完整性，兩者一樣重要。
@@ -178,7 +178,7 @@
 
 
 <li><strong>同步配接器。</strong>同步配接器會將使用者裝置的日曆資料與另一台伺服器或資料來源進行同步。
-在 
+在
 {@link android.provider.CalendarContract.Calendars} 和
 {@link android.provider.CalendarContract.Events} 表格中，會保留某些欄讓同步配接器使用。供應程式和應用程式不應加以修改。
 
@@ -229,7 +229,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-    
+
     <td>指出是否選擇要顯示日曆的布林值。值 0 表示與此日曆關聯的活動不應顯示。
 
 值 1 表示與此日曆關聯的活動應顯示。
@@ -240,7 +240,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-    
+
     <td>指出日曆是否應同步，並且讓日曆的活動儲存在裝置上的布林值。
 值 0 表示不同步此日曆，並且不要在裝置上儲存其活動。
 值 1 表示同步此日曆的活動，並且在裝置上儲存其活動。
@@ -268,18 +268,18 @@
     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} 進行查詢，也必須在選項中包含 
+Calendars.ACCOUNT_NAME} 進行查詢，也必須在選項中包含
 {@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}。
 這是因為只有同時提供指定帳戶的 <code>ACCOUNT_NAME</code> 和
 <code>ACCOUNT_TYPE</code> 情況下，此帳戶才會視為唯一的。
@@ -289,7 +289,7 @@
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}。{@link
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 帳戶不會進行同步。
 
-</p> </div> </div> 
+</p> </div> </div>
 
 
 <p> 在範例的下一個部分，您將建構查詢。選項會指定查詢的條件。
@@ -308,49 +308,49 @@
 <pre>// Run query
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;   
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+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. 
+        "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 
+android.provider.BaseColumns#_ID}，可以是 URI 的附加 ID
 ({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 或以第一個選擇項目方式提供。
 
 
-選項的開頭應該是 <code>&quot;_id=?&quot;</code>，而且第一個 
+選項的開頭應該是 <code>&quot;_id=?&quot;</code>，而且第一個
 <code>selectionArg</code> 應該是日曆的 {@link
 android.provider.BaseColumns#_ID}。
-您也可以透過將 ID 編碼在 URI 中，以執行更新。此範例會使用 
+您也可以透過將 ID 編碼在 URI 中，以執行更新。此範例會使用
 ({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 方式變更日曆的顯示名稱：
 
 
@@ -434,7 +434,7 @@
   </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 週。
 
 
@@ -444,24 +444,24 @@
   </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} 一起使用，以定義週期性活動的彙總集合。
@@ -470,13 +470,13 @@
 
 如需更多討論，請參閱 <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>
@@ -494,7 +494,7 @@
 
 <h3 id="add-event">新增活動</h3>
 
-<p>您的應用程式插入新活動時，我們建議您使用 
+<p>您的應用程式插入新活動時，我們建議您使用
 {@link android.content.Intent#ACTION_INSERT INSERT} 意圖 (如同<a href="#intent-insert">使用意圖插入活動</a>所述)。不過，如果需要，您也可以直接插入活動。
 本節將描述如何執行此動作。
 </p>
@@ -514,11 +514,11 @@
 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
@@ -528,7 +528,7 @@
 
 
 </li>
-  
+
 </ul>
 
 <p>以下是插入活動的範例。為了簡化，會在 UI 執行緒中執行此示範。
@@ -539,8 +539,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -561,7 +561,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -581,11 +581,11 @@
 android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 或以第一個選擇項目方式提供。
 
 
-選項的開頭應該是 <code>&quot;_id=?&quot;</code>，而且第一個 
+選項的開頭應該是 <code>&quot;_id=?&quot;</code>，而且第一個
 <code>selectionArg</code> 應該是活動的 <code>_ID</code>。
 您也可以使用不含 ID 的選項進行更新。以下是更新活動的範例。
 
-它使用 
+它使用
 {@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()} 方式變更活動的標題：
 </p>
 
@@ -598,7 +598,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -625,19 +625,19 @@
 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);  
+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>
 
 <p>下表列出可寫入的欄位。
 插入新的參與者時，您必須包括 <code>ATTENDEE_NAME</code> 以外的所有項目。
@@ -718,8 +718,8 @@
 <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.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 會傳回指定
 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 活動的提醒清單。
 </p>
 
@@ -727,7 +727,7 @@
 <p>下表列出提醒可寫入的欄位。插入新的提醒時，必須包括所有項目。
 請注意，同步配接器會在 {@link
 android.provider.CalendarContract.Calendars} 表格中指出同步配接器支援的提醒類型。
-如需詳細資料，請參閱 
+如需詳細資料，請參閱
 {@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}。
 </p>
 
@@ -779,8 +779,8 @@
 執行個體表格無法寫入，僅供查詢活動的發生。
  </p>
 
-<p>下表列出您可以針對執行個體查詢的欄位。請注意，時區是由 
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 和 
+<p>下表列出您可以針對執行個體查詢的欄位。請注意，時區是由
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 和
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} 所定義。
 
 </p>
@@ -801,18 +801,18 @@
   </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>
@@ -820,16 +820,16 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>執行個體的凱撒曆開始日，與「日曆」的時區相關。 
+    <td>執行個體的凱撒曆開始日，與「日曆」的時區相關。
  </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-    
+
     <td>執行個體的開始分鐘，從午夜開始計算，與「日曆」的時區相關。
- 
+
 </td>
-    
+
   </tr>
 
 </table>
@@ -853,7 +853,7 @@
     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;
@@ -868,7 +868,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -883,28 +883,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -922,9 +922,9 @@
     <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>
@@ -935,11 +935,11 @@
 
      </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>
 
@@ -952,12 +952,12 @@
   <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>
 
@@ -972,11 +972,11 @@
     <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>
@@ -996,7 +996,7 @@
     <td>活動的名稱。</td>
   </tr>
   <tr>
-  
+
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
 CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
     <td>活動開始時間，以紀元元年 1 月 1 日零時起算經過的毫秒數為單位。</td>
@@ -1004,25 +1004,25 @@
   <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>指出活動為整天的布林值。值可以是 
+
+    <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>
@@ -1039,16 +1039,16 @@
     <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> 
+
+</table>
 <p>以下各節說明如何使用這些意圖。</p>
 
 
@@ -1059,14 +1059,14 @@
 
 </p>
 
-  
+
 <p>使用者執行採用此方式的應用程式時，此應用程式會將使用者
 傳送到「日曆」以完成新增活動的操作。{@link
 android.content.Intent#ACTION_INSERT INSERT} 意圖會使用額外的欄位將「日曆」中活動的詳細資訊，預先填入表單。
 然後，使用者可以取消活動、視需要編輯表單或將活動儲存到其日曆。
 
 </p>
-  
+
 
 
 <p>以下的程式碼片段會在 2012 年 1 月 19 日安排活動，此活動的期間是從上午 7:30 到上午 8:30。
@@ -1075,7 +1075,7 @@
 <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
@@ -1083,10 +1083,10 @@
 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();
@@ -1158,16 +1158,16 @@
 
 <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_NAME</code> 和
 <code>ACCOUNT_TYPE</code>。
 
 </li> </ul>
@@ -1180,5 +1180,5 @@
         .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
  }
 </pre>
-<p>如需實作同步配接器的範例 (並非與「日曆」特別相關)，請參閱 
+<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
index b5f8880..2bcc3e6 100644
--- 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
@@ -614,7 +614,7 @@
 <p>
     如要擷取內含使用者的設定檔的聯絡人列，請呼叫 {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
 ContentResolver.query()}。
-將內容 URI 設為 
+將內容 URI 設為
 {@link android.provider.ContactsContract.Profile#CONTENT_URI}，並且不要提供任何選取條件。
 您也可以使用此內容 URI 做為擷取原始聯絡人或設定檔資料的基礎 URI。
 例如，以下程式碼片段會擷取設定檔資料：
@@ -932,7 +932,7 @@
     您應該儘可能透過建立
  {@link android.content.ContentProviderOperation} 物件的{@link java.util.ArrayList}，然後呼叫
  {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}，以「批次模式」在聯絡人供應程式中進行資料的插入、更新以及刪除。
-因為聯絡人供應程式會在單一交易中執行 
+因為聯絡人供應程式會在單一交易中執行
 {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 的所有操作，所以您所做的修改不會讓聯絡人存放庫處於不一致的狀態。
 
 
@@ -1004,7 +1004,7 @@
             <code>previousResult</code>
         </dt>
         <dd>
-            
+
 {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 中的
 {@link android.content.ContentProviderResult} 物件以 0 開始的陣列索引值。套用批次操作時，每次操作結果都會儲存在結果的中繼陣列。
 
@@ -1758,7 +1758,7 @@
         <dd>
             {@link android.accounts.AccountManager} 會啟動此服以開始驗證程序。
 服務的 {@link android.app.Service#onCreate()} 方法會具現化為驗證器物件。
-系統需驗證應用程式同步配接器的使用者帳戶時，會呼叫服務的 
+系統需驗證應用程式同步配接器的使用者帳戶時，會呼叫服務的
 {@link android.app.Service#onBind(Intent) onBind()} 方法以取得驗證器的
  {@link android.os.IBinder}。
 這樣可以讓系統以跨處理程序的方式呼叫驗證器的方法。
@@ -2115,7 +2115,7 @@
         </ul>
         <code><em>activityclass</em></code> 值是 Activity 的完整類別名稱，以此 Activity 接收意圖。
 <code><em>invite_action_label</em></code> 值是顯示在裝置聯絡人應用程式內 [新增連線]<strong></strong> 選單中的文字字串。
- 
+
 
     </li>
 </ol>
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
index 7831478..a00caed 100644
--- 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
@@ -237,7 +237,7 @@
 
     {@link android.content.ContentResolver#query query()} 方法會呼叫使用者字典供應程式所定義的
 {@link android.content.ContentProvider#query ContentProvider.query()} 方法。
-以下是 
+以下是
 {@link android.content.ContentResolver#query ContentResolver.query()} 呼叫的程式碼：
 <p>
 <pre>
@@ -250,7 +250,7 @@
     mSortOrder);                        // The sort order for the returned rows
 </pre>
 <p>
-    表 2 列出 
+    表 2 列出
 {@link android.content.ContentResolver#query
 query(Uri,projection,selection,selectionArgs,sortOrder)} 的引數及相對應的 SQL SELECT 陳述式：
 </p>
@@ -284,7 +284,7 @@
     <tr>
         <td align="center"><code>selectionArgs</code></td>
         <td align="center">
-            (沒有任何相對應的關鍵字/參數。選取引數會取代選取子句中的 
+            (沒有任何相對應的關鍵字/參數。選取引數會取代選取子句中的
 <code>?</code> 預留位置。)
         </td>
     </tr>
@@ -581,7 +581,7 @@
 
 </p>
 <p>
-    如果沒有任何資料欄符合選取條件，則供應程式會傳回 {@link android.database.Cursor#getCount Cursor.getCount()} 為 0 的 
+    如果沒有任何資料欄符合選取條件，則供應程式會傳回 {@link android.database.Cursor#getCount Cursor.getCount()} 為 0 的
 {@link android.database.Cursor} 物件 (即沒有任何內容的游標)。
 
 </p>
@@ -595,7 +595,7 @@
 
 </p>
 <p>
-    以下程式碼片段是上一個程式碼片段的延伸。它會建立內含查詢所擷取 {@link android.database.Cursor} 的 
+    以下程式碼片段是上一個程式碼片段的延伸。它會建立內含查詢所擷取 {@link android.database.Cursor} 的
 {@link android.widget.SimpleCursorAdapter} 物件，並將該物件設定為 {@link android.widget.ListView} 的配接器：
 
 
@@ -674,7 +674,7 @@
 <p>
     {@link android.database.Cursor} 實作方法包含數個用於從物件擷取不同資料類型的「get」方法。
 例如，上方程式碼片段使用了 {@link android.database.Cursor#getString getString()}。
-此外，這種實作方法還包括 
+此外，這種實作方法還包括
 {@link android.database.Cursor#getType getType()} 方法，可傳回指定資料欄資料類型的值。
 
 </p>
@@ -709,7 +709,7 @@
 
 </p>
 <p>
-    以下的 
+    以下的
 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
  元素會要求使用者字典供應程式的讀取存取權：
 </p>
@@ -733,7 +733,7 @@
 </p>
 <h3 id="Inserting">插入資料</h3>
 <p>
-    如要在供應程式中插入資料，請呼叫 
+    如要在供應程式中插入資料，請呼叫
 {@link android.content.ContentResolver#insert ContentResolver.insert()} 方法。
 這個方法會在供應程式中插入新的資料列，並傳回該列的內容 URI。
     以下程式碼片段示範如何在使用者字典供應程式中插入新的字詞：
@@ -785,14 +785,14 @@
 
 </p>
 <p>
-    如要從傳回的 {@link android.net.Uri} 取得 <code>_ID</code> 的值，請呼叫 
+    如要從傳回的 {@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>。
 
@@ -901,7 +901,7 @@
 
 例如，聯絡人供應程式中的 {@link android.provider.ContactsContract.Data} 表格會使用 MIME 類型為每個資料列中儲存的聯絡人資料加上標籤。
 
-如要取得與內容 URI 相對應的 MIME 類型，請呼叫 
+如要取得與內容 URI 相對應的 MIME 類型，請呼叫
 {@link android.content.ContentResolver#getType ContentResolver.getType()}。
 </p>
 <p>
@@ -1009,13 +1009,13 @@
 
 </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 權限」。
 
@@ -1032,8 +1032,8 @@
 <ol>
     <li>
         您的應用程式使用 {@link android.app.Activity#startActivityForResult
-startActivityForResult()} 方法，傳送了內含 
-{@link android.content.Intent#ACTION_PICK} 動作的意圖以及「聯絡人」MIME 類型 
+startActivityForResult()} 方法，傳送了內含
+{@link android.content.Intent#ACTION_PICK} 動作的意圖以及「聯絡人」MIME 類型
 {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}。
 
     </li>
@@ -1043,9 +1043,9 @@
     </li>
     <li>
         在選取 Activity 中，使用者選取了要更新的聯絡人。
-一旦使用者進行這項動作，選取 Activity 便會呼叫 
+一旦使用者進行這項動作，選取 Activity 便會呼叫
 {@link android.app.Activity#setResult setResult(resultcode, intent)} 來設定要傳回您應用程式的意圖。
-該意圖包含使用者所選聯絡人的內容 URI，以及「額外」的旗標 
+該意圖包含使用者所選聯絡人的內容 URI，以及「額外」的旗標
 {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}。
 這些旗標可將 URI 權限授予您的應用程式，以便其讀取內容 URI 指向的聯絡人資料。選取 Activity 隨後會呼叫 {@link android.app.Activity#finish()} 來傳回您應用程式的控制權。
 
@@ -1053,7 +1053,7 @@
 
     </li>
     <li>
-        您的 Activity 返回前景，而系統呼叫您 Activity 的 
+        您的 Activity 返回前景，而系統呼叫您 Activity 的
 {@link android.app.Activity#onActivityResult onActivityResult()} 方法。
 這個方法可接收聯絡人應用程式中的選取 Activity 所建立的結果意圖。
 
@@ -1071,7 +1071,7 @@
 
 </p>
 <p>
-    例如，日曆應用程式接受可讓您啟用應用程式插入 UI 的 
+    例如，日曆應用程式接受可讓您啟用應用程式插入 UI 的
 {@link android.content.Intent#ACTION_INSERT} 意圖。您可以在該意圖中傳入「額外」的資料，供應用程式用於預先填入使用者介面。由於週期性活動的語法較為複雜，因此建議您利用 {@link android.content.Intent#ACTION_INSERT} 啟用日曆應用程式，然後讓使用者透過該應用程式將活動插入日曆供應程式。
 
 
@@ -1089,7 +1089,7 @@
 </p>
 <p>
     例如，使用者字典供應程式有一個內含內容 URI 和欄名稱常數的 {@link android.provider.UserDictionary} 合約類別。
-「字詞」表格的內容 URI 是在 
+「字詞」表格的內容 URI 是在
 {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI} 常數中定義。
 
     此外，{@link android.provider.UserDictionary.Words} 類別也包含欄名稱常數，可用於本指南中的程式碼片段範例。
@@ -1106,7 +1106,7 @@
 </pre>
 <p>
     聯絡人供應程式的另一個合約類別為 {@link android.provider.ContactsContract}。
-    此類別的參考文件附有程式碼片段範例。其中一個 
+    此類別的參考文件附有程式碼片段範例。其中一個
 {@link android.provider.ContactsContract.Intents.Insert} 子類別為內含意圖常數和意圖資料的合約類別。
 
 </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
index 3d46ee4..9f1ca31 100644
--- 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
@@ -239,7 +239,7 @@
         表格資料一律需包含「主索引鍵」欄，方便供應程式保存每個資料列的數值。
 您可以使用這些值將資料列連結至其他表格中的相關資料列 (也就是將這些值當作「外部索引鍵」使用)。
 事實上，您也可以使用此資料欄的任何名稱進行連結，但使用 {@link android.provider.BaseColumns#_ID BaseColumns._ID} 是最佳做法，這是因為將供應程式的查詢結果連結至
-{@link android.widget.ListView} 時需要將某個擷取出的資料列命名為 
+{@link android.widget.ListView} 時需要將某個擷取出的資料列命名為
 <code>_ID</code>。
 
 
@@ -288,14 +288,14 @@
 此外，也請針對 Android 套件名稱採取此建議做法；您可以將供應程式授權定義為內含供應程式的套件名稱的副檔名。
 
 例如，假設您 Android 套件的名稱為
- <code>com.example.&lt;appname&gt;</code>，則請將供應程式的授權定義為 
+ <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> 和 
+例如，假設您有「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>。
 
 路徑並不侷限於單一區隔，而您也不必為每個路徑層級產生表格。
@@ -350,11 +350,11 @@
         <code>content://com.example.app.provider/table1</code>：名稱為 <code>table1</code> 的表格。
     </li>
     <li>
-        <code>content://com.example.app.provider/table2/dataset1</code>：名稱為 
+        <code>content://com.example.app.provider/table2/dataset1</code>：名稱為
 <code>dataset1</code> 的表格。
     </li>
     <li>
-        <code>content://com.example.app.provider/table2/dataset2</code>：名稱為 
+        <code>content://com.example.app.provider/table2/dataset2</code>：名稱為
 <code>dataset2</code> 的表格。
     </li>
     <li>
@@ -380,7 +380,7 @@
         <code>content://com.example.app.provider/table2/*</code>：
     </dt>
     <dd>
-        與 <code>dataset1</code> 和 <code>dataset2</code> 表格的內容 URI 相符，但與 <code>table1</code> 或 
+        與 <code>dataset1</code> 和 <code>dataset2</code> 表格的內容 URI 相符，但與 <code>table1</code> 或
 <code>table3</code> 的內容 URI 不符。
 
     </dd>
@@ -393,8 +393,8 @@
 </dl>
 <p>
     以下程式碼片段說明各種方法在 {@link android.content.UriMatcher} 中的運作方式。
-    這個程式碼會以不同方式處理整個表格的 URI 以及單一資料列的 URI；針對表格使用內容 URI 模式 
-<code>content://&lt;authority&gt;/&lt;path&gt;</code>，針對單一資料列則使用 
+    這個程式碼會以不同方式處理整個表格的 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>
@@ -469,8 +469,8 @@
 </pre>
 <p>
     另一個 {@link android.content.ContentUris} 類別可提供使用內容 URI 的 <code>id</code> 部分的簡便方法。
-{@link android.net.Uri} 和 
-{@link android.net.Uri.Builder} 類別則可提供剖析現有 
+{@link android.net.Uri} 和
+{@link android.net.Uri.Builder} 類別則可提供剖析現有
 {@link android.net.Uri} 物件及建置新物件的簡便方法。
 </p>
 
@@ -485,7 +485,7 @@
 <h3 id="RequiredAccess">必要方法</h3>
 <p>
     抽象類別 {@link android.content.ContentProvider} 會定義 6 種方法，而您必須將這些方法實作成您所擁有子類別的一部分。
-嘗試存取您內容供應程式的用戶端應用程式會呼叫以下所有方法 
+嘗試存取您內容供應程式的用戶端應用程式會呼叫以下所有方法
 ({@link android.content.ContentProvider#onCreate() onCreate()} 除外)：
 
 </p>
@@ -539,7 +539,7 @@
     </dd>
 </dl>
 <p>
-    請注意，上述方法採用的簽名與同名的 
+    請注意，上述方法採用的簽名與同名的
 {@link android.content.ContentResolver} 方法相同。
 </p>
 <p>
@@ -641,7 +641,7 @@
 
 </p>
 <p>
-    例如，如果您採用 SQLite 資料庫，您可以透過 
+    例如，如果您採用 SQLite 資料庫，您可以透過
 {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 建立新的 {@link android.database.sqlite.SQLiteOpenHelper} 物件，然後在初次開啟資料庫時建立 SQL 表格。
 
 為了加快這個程序，當您初次呼叫 {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
@@ -651,10 +651,10 @@
 
 </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">
@@ -808,7 +808,7 @@
             <code>&lt;name&gt;</code> 必須是全域唯一值，而 <code>&lt;type&gt;</code> 必須為相對應 URI 模式的專屬值。
 
 建議您使用貴公司的名稱或您應用程式的部分 Android 套件名稱做為 <code>&lt;name&gt;</code>。
-針對 
+針對
 <code>&lt;type&gt;</code>，則建議您使用可識別與 URI 相關的表格的字串。
 
         </p>
@@ -816,8 +816,8 @@
     </li>
 </ul>
 <p>
-    例如，假設供應程式的授權為 
-<code>com.example.app.provider</code>，而該授權可提供 
+    例如，假設供應程式的授權為
+<code>com.example.app.provider</code>，而該授權可提供
 <code>table1</code> 這個表格，則 <code>table1</code> 中多個資料列的 MIME 類型會如下所示：
 </p>
 <pre>
@@ -940,7 +940,7 @@
 為了將權限設為僅適用於您的供應程式，請針對
  <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>
@@ -955,7 +955,7 @@
     </dt>
     <dd>
         這項權限是由 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
-        &lt;provider&gt;</a></code> 元素的 
+        &lt;provider&gt;</a></code> 元素的
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
         android:permission</a></code> 屬性所指定，可控制整個供應程式的讀取及寫入存取權。
 
@@ -967,10 +967,10 @@
         整個供應程式的讀取權限及寫入權限。您可以使用 <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> 和 
+        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>
@@ -1037,9 +1037,9 @@
 
         </p>
         <p>
-            如要將臨時存取權委派給某款應用程式，您就必須在意圖中加入 
-{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} 或 
-{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} 旗標，或是同時加入以上兩者。請使用 
+            如要將臨時存取權委派給某款應用程式，您就必須在意圖中加入
+{@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>
@@ -1187,7 +1187,7 @@
 <h2 id="Intents">意圖和資料存取權</h2>
 <p>
     應用程式可透過 {@link android.content.Intent} 以間接方式存取內容供應程式。
-    利用這種存取方式的應用程式不會呼叫 {@link android.content.ContentResolver} 或 
+    利用這種存取方式的應用程式不會呼叫 {@link android.content.ContentResolver} 或
 {@link android.content.ContentProvider} 的任何方法，而是會傳送可啟動 Activity (此 Activity 通常屬於供應程式本身的應用程式) 的意圖。
 目標 Activity 會負責擷取資料並在本身的 UI 中顯示該資料。視意圖中的動作而定，目標 Activity 也可能會提示使用者修改供應程式的資料。
 
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
index 1dc7c46..a6af758 100644
--- 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
@@ -213,7 +213,7 @@
 
  </p>
 
-<p>針對搭載 Android 4.4 以上版本的裝置，您的應用程式還可以呼叫 
+<p>針對搭載 Android 4.4 以上版本的裝置，您的應用程式還可以呼叫
 {@link android.content.Intent#ACTION_OPEN_DOCUMENT} 意圖，以顯示系統所控管的挑選器 UI，方便使用者瀏覽其他應用程式提供的所有檔案。
 
 透過這個單一 UI，使用者可以從任何受支援的應用程式挑選檔案。
@@ -560,7 +560,7 @@
 <li>供應程式的名稱 (也就是供應程式的類別名稱)，包括套件名稱。範例：<code>com.example.android.storageprovider.MyCloudProvider</code>。
 </li>
 
-<li>授權的名稱 (也就是套件的名稱；在此範例中為 
+<li>授權的名稱 (也就是套件的名稱；在此範例中為
 <code>com.example.android.storageprovider</code>) 以及內容供應程式的類型
 (<code>documents</code>)。範例：{@code com.example.android.storageprovider.documents}。</li>
 
@@ -588,7 +588,7 @@
  <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
 </ul></li>
 
-<li>內含 
+<li>內含
 {@code android.content.action.DOCUMENTS_PROVIDER} 動作的意圖篩選器，讓您的供應程式能夠在系統搜尋供應程式時顯示在挑選器中。
 </li>
 
@@ -618,7 +618,7 @@
 
 <h4 id="43">支援搭載 Android 4.3 以下版本的裝置</h4>
 
-<p>只有搭載 Android 4.4 以上版本的裝置可使用 
+<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} 意圖篩選器。
 
 
@@ -833,7 +833,7 @@
 <h4 id="openDocument">實作 openDocument</h4>
 
 <p>您必須實作 {@link android.provider.DocumentsProvider#openDocument
-openDocument()} 來傳回代表特定檔案的 
+openDocument()} 來傳回代表特定檔案的
 {@link android.os.ParcelFileDescriptor}。其他應用程式可利用傳回的 {@link android.os.ParcelFileDescriptor} 傳輸資料。
 使用者選取檔案而且用戶端應用程式呼叫
 {@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()} 要求存取該檔案後，系統就會呼叫這個方法。範例：
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
index 3a5a961..d1ac69c 100644
--- 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
@@ -101,12 +101,12 @@
 <div class="sidebox">
 <h2>存取原始檔案</h2>
 
-<p>雖然不常見，但您有時需要存取原始檔案和目錄。如果有此需求，則不能將檔案儲存在 {@code res/}，因為要從 
-{@code res/} 讀取資源的唯一方式是透過資源 ID。不過，您可以將資源儲存在 
+<p>雖然不常見，但您有時需要存取原始檔案和目錄。如果有此需求，則不能將檔案儲存在 {@code res/}，因為要從
+{@code res/} 讀取資源的唯一方式是透過資源 ID。不過，您可以將資源儲存在
 {@code assets/} 目錄。
 </p>
 <p>儲存在 {@code assets/} 目錄中的檔案「不會」<em></em>指定資源 ID，因此您無法透過 {@code R} 類別或從 XML 資源參照這些檔案。
-您可以改為查詢 {@code assets/} 目錄中的檔案，就像一般檔案系統一樣，並使用 
+您可以改為查詢 {@code assets/} 目錄中的檔案，就像一般檔案系統一樣，並使用
 {@link android.content.res.AssetManager} 讀取原始資料。
 </p>
 <p>不過，如果您只是要讀取原始資料 (例如影片或音訊檔案)，可以將檔案儲存在 {@code res/raw/} 目錄，然後使用 {@link
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
index 0938dc0..01e0d9c 100644
--- 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
@@ -510,7 +510,7 @@
 
 </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} 設定欄位，該欄位會指出螢幕為小螢幕、一般螢幕或大螢幕。
@@ -824,7 +824,7 @@
 名稱中的任何大寫只是為了方便閱讀。</li>
     <li>每個限定詞類型只支援一個值。例如，如果您想在西班牙文和法文使用相同的可繪項目檔案，則不能將目錄命名為 <em></em>
 <code>drawable-rES-rFR/</code>。
-您必須有兩個資源目錄，例如 
+您必須有兩個資源目錄，例如
 <code>drawable-rES/</code> 和 <code>drawable-rFR/</code>，這兩個目錄要包含適當的檔案。
 但是，您不需要實際將相同的檔案複製到這兩位置。您可以為資源建立別名。
 請參閱下方的
@@ -877,7 +877,7 @@
     android:src="@drawable/icon_ca" />
 </pre>
 
-<p>如果您將此檔案儲存成 {@code icon.xml} (在替代資源目錄中，像是 
+<p>如果您將此檔案儲存成 {@code icon.xml} (在替代資源目錄中，像是
 {@code res/drawable-en-rCA/})，系統會將它編譯成可當作 {@code R.drawable.icon} 參照的資源，但它實際上是 {@code
 R.drawable.icon_ca} 資源 (儲存在 {@code res/drawable/}) 的別名。
 </p>
@@ -1025,7 +1025,7 @@
 drawable-port-notouch-12key/
 </pre>
 <p class="note"><strong>例外狀況：</strong>螢幕像素密度是唯一沒有因為衝突而被排除的限定詞。
-即使裝置的螢幕密度是 hdpi 但仍然沒有排除 
+即使裝置的螢幕密度是 hdpi 但仍然沒有排除
 <code>drawable-port-ldpi/</code>，因為此刻每個螢幕密度都視為相符。
 如需詳細資訊，請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>文件。
 </p></li>
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
index 7a8b3ae..8178444 100644
--- 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
@@ -22,7 +22,7 @@
 </div>
 
 <p>有些裝置設定可以在執行階段期間進行變更 (例如，螢幕方向、鍵盤可用性和語言)。
-進行這類變更時，Android 會重新啟動執行中的 
+進行這類變更時，Android 會重新啟動執行中的
 {@link android.app.Activity} (呼叫 {@link android.app.Activity#onDestroy()}，後面加上 {@link
 android.app.Activity#onCreate(Bundle) onCreate()})。
 重新啟動行為的設計是以符合新裝置設定的替代資源自動重新載入您的應用程式，以協助您的應用程式適應新的設定。
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
index 0f27ae4..1ab66c3 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
@@ -69,7 +69,7 @@
     <tr>
         <td><a href="controls/radiobutton.html">圓形按鈕</a></td>
         <td>功用與核取方塊類似，但會限制使用者只能從一組選項中選取一個選項。</td>
-	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
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
index 7275571..580ee23 100644
--- 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
@@ -272,7 +272,7 @@
 可定義檢視在螢幕中的實際大小 (描繪期間以及版面配置之後)。
 
 這些值可能 (但未必) 會與寬度和高度測量值不同。
-您可以呼叫 
+您可以呼叫
 {@link android.view.View#getWidth()} 和 {@link android.view.View#getHeight()} 來取得尺寸描繪值。
    </p>
 
@@ -421,7 +421,7 @@
   <li>含有陣列中所有字串的 {@link android.widget.TextView} 的版面配置</li>
   <li>字串陣列</li>
 </ul>
-<p>接著，針對您的 {@link android.widget.ListView} 呼叫 
+<p>接著，針對您的 {@link android.widget.ListView} 呼叫
 {@link android.widget.ListView#setAdapter setAdapter()}：</p>
 <pre>
 ListView listView = (ListView) findViewById(R.id.listview);
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
index b0ae12e..6e6db35 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <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>
@@ -248,7 +248,7 @@
   <dt>中立</dt>
   <dd>如果使用者不想繼續進行特定動作，但並非要取消動作，請使用這種按鈕。
 這種按鈕會顯示在正面和負面按鈕之間。
-範例：[稍後提醒我] 按鈕。</dd> 
+範例：[稍後提醒我] 按鈕。</dd>
 </dl>
 
 <p>您可以將以上其中一種按鈕加入 {@link
@@ -320,7 +320,7 @@
 <p>如要加入多重選項 (核取方塊) 或單一選項 (圓形按鈕)，請使用
 {@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
 DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} 方法。
 </p>
 
@@ -346,7 +346,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -372,7 +372,7 @@
 </pre>
 
 <p>雖然傳統清單和包含圓形按鈕的清單都可提供「單選」動作，但如果您想保留使用者的選擇，請使用 {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()}。也就是說，如果您想讓對話方塊再次開啟時顯示使用者目前所選的選項，請建立包含圓形按鈕的清單。
 
 
@@ -470,7 +470,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -479,7 +479,7 @@
 <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> 宣示說明元素中將其主題設為 
+&lt;activity&gt;}</a> 宣示說明元素中將其主題設為
 {@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog} 即可：
 </p>
 
@@ -505,7 +505,7 @@
 
 <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. */
@@ -513,10 +513,10 @@
         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) {
@@ -543,7 +543,7 @@
 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();
@@ -656,7 +656,7 @@
         // 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) {
@@ -678,7 +678,7 @@
 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");
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
index be1fa7f..6f7405b 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
@@ -83,9 +83,9 @@
 </p>
   <p>請參閱<a href="#options-menu">建立選項選單</a>。</p>
     </dd>
-    
+
   <dt><strong>內容選單和內容關聯動作模式</strong></dt>
-  
+
    <dd>內容選單是會在使用者長按某元素時顯示的<a href="#FloatingContextMenu">浮動選單</a>。
 它提供的動作會影響所選取內容或內容畫面。
 
@@ -94,7 +94,7 @@
 </p>
   <p>請參閱<a href="#context-menu">建立內容關聯選單</a>。</p>
 </dd>
-    
+
   <dt><strong>彈出式選單</strong></dt>
     <dd>彈出式選單顯示的項目清單會以垂直清單的方式，錨定在呼叫該選單的檢視。
 它很適合用來提供與特定內容有關的動作溢出，或針對第二部分的命令提供選項。
@@ -135,7 +135,7 @@
   <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>。
@@ -742,8 +742,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -900,7 +900,7 @@
 <p>已選取可勾選項目時，系統會呼叫所選取個別項目的回呼方法 (例如 {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()})。
 您必須在這裡設定核取方塊的狀態，原因是核取方塊或選項按鈕並不會自動變更其狀態。
 
-您可以利用 
+您可以利用
 {@link android.view.MenuItem#isChecked()} 來查詢項目的目前狀態 (使用者選取它之前的狀態)，然後利用
 {@link android.view.MenuItem#setChecked(boolean) setChecked()} 來設定勾選狀態。例如：</p>
 
@@ -1010,7 +1010,7 @@
 <p>您也能向其他應用程式提供 Activity 的服務，這樣即可在其他應用程式的選單中包含您的應用程式 (與上述的角色顛倒)。
 </p>
 
-<p>如要包含在其他應用程式選單中，您必須照常定義意圖篩選器，但務必為意圖篩選器類別納入 
+<p>如要包含在其他應用程式選單中，您必須照常定義意圖篩選器，但務必為意圖篩選器類別納入
 {@link android.content.Intent#CATEGORY_ALTERNATIVE} 和/或 {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 值。
 
 例如：</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
index b853744..d7bf469 100644
--- 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
@@ -81,7 +81,7 @@
     <strong>圖 2.</strong>通知匣中的通知。
 </p>
 
-<p class="note"><strong>注意：</strong>除非另外註明，否則本指南參照<a href="{@docRoot}tools/support-library/index.html">支援程式庫</a> 4 版中的 
+<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) 新增。
 
 
@@ -97,10 +97,10 @@
 
 <h2 id="CreateNotification">建立通知</h2>
 
-<p>您會為 
+<p>您會為
 {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 物件中的通知指定 UI 資訊與動作。
-如要建立通知本身，您可以呼叫 
-{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()}，其傳回的 
+如要建立通知本身，您可以呼叫
+{@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>
@@ -149,7 +149,7 @@
     在 {@link android.app.Notification} 內，動作本身是由
 {@link android.app.PendingIntent} 完成定義，其中包含的
 {@link android.content.Intent} 會啟動您應用程式中的
-{@link android.app.Activity}。如要將 
+{@link android.app.Activity}。如要將
 {@link android.app.PendingIntent} 與手勢關聯，可呼叫
 {@link android.support.v4.app.NotificationCompat.Builder} 的適當方法。例如，如果當使用者按一下通知匣中的通知文字時，您希望啟動
 {@link android.app.Activity}，可呼叫
@@ -394,7 +394,7 @@
 <h2 id="NotificationResponse">啟動 Activity 時保留導覽</h2>
 <p>
     當您從通知啟動 {@link android.app.Activity} 時，您必須保留使用者預期的導覽體驗。
-按一下  <i>[返回]</i> 應可將使用者從應用程式的一般工作流程帶回主螢幕，而按一下 
+按一下  <i>[返回]</i> 應可將使用者從應用程式的一般工作流程帶回主螢幕，而按一下
  <i>[近期記錄]</i> 應會將
 {@link android.app.Activity} 顯示為個別的工作。如要保留導覽體驗，請以全新的工作啟動
 {@link android.app.Activity}。您該如何設定
@@ -466,7 +466,7 @@
                 </p>
             </li>
             <li>
-                此外您還需要新增 Android 4.1 以上版本的支援。為此，請將 
+                此外您還需要新增 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> 元素。
 
@@ -722,7 +722,7 @@
 <p>
     當操作完成時，您可以繼續顯示進度列或將其移除。不論是任何一種情況，都務必更新通知文字來指出操作已完成。
 
-    如要移除進度列，請呼叫 
+    如要移除進度列，請呼叫
 {@link android.support.v4.app.NotificationCompat.Builder#setProgress
 setProgress(0, 0, false)}。例如：
 </p>
@@ -933,7 +933,7 @@
 
 </p>
 <p>
-    如要定義自訂通知版面配置，請從具現化可擴大 XML 配置檔案的 
+    如要定義自訂通知版面配置，請從具現化可擴大 XML 配置檔案的
 {@link android.widget.RemoteViews} 物件著手。接著，改為呼叫 {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}，而不是呼叫像是 {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} 的方法。
 
 
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
index 44d05a8..0ac4002 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <p>如需建立 UI 版面配置的完整指南，請參閱 <a href="declaring-layout.html">XML 版面配置</a>。
 
 
-  
+
 <h2 id="UIComponents">使用者介面元件</h2>
 
 <p>您不必使用 {@link android.view.View} 與 {@link
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
index 91ac929..7a7ff9b 100644
--- a/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
@@ -226,7 +226,7 @@
   <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> 屬性)。
 
@@ -285,7 +285,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -293,12 +293,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -588,11 +588,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -672,15 +672,15 @@
 </p>
 
 <p>例如，下列為使用 Android 3.0及更新版本的偏好設定標頭 XML 檔案 ({@code res/xml/preference_headers.xml})：
-</p> 
+</p>
 
 <pre>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -692,18 +692,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -975,11 +975,11 @@
 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);
     }
     ...
@@ -1194,7 +1194,7 @@
     // 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);
 }
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
index 68714e8..8e009e0 100644
--- 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
@@ -187,7 +187,7 @@
     ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - 這讓 {@link
 android.view.ViewGroup} 在發送至子檢視時能監控事件。</li>
   <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
-    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - 呼叫這個父檢視以指出不應該使用 <code>{@link 
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - 呼叫這個父檢視以指出不應該使用 <code>{@link
     android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> 攔截輕觸事件。
 </li>
 </ul>
@@ -199,11 +199,11 @@
 不過，如果裝置具有輕觸功能，而且使用者透過輕觸方式開始與介面互動，就不需要再將項目反白顯示，或是對特定檢視提供焦點。
 
 因此，這就是名稱為「輕觸模式」的互動模式。
- 
+
 </p>
 <p>
 如果是具備輕觸功能的裝置，使用者輕觸螢幕之後，裝置就會進入輕觸模式。
-從這點以此類推，只有 
+從這點以此類推，只有
 {@link android.view.View#isFocusableInTouchMode} 為 true 的檢視才可設定焦點，例如文字編輯小工具。
 其他可輕觸的檢視，例如按鈕，在輕觸時不會成為焦點；按下時，只會觸發 on-click 接聽器。
 
@@ -214,7 +214,7 @@
 
 </p>
 <p>
-整個系統 (所有視窗和 Activity) 都會保留輕觸模式的狀態。如要查詢目前的狀態，您可以呼叫 
+整個系統 (所有視窗和 Activity) 都會保留輕觸模式的狀態。如要查詢目前的狀態，您可以呼叫
 {@link android.view.View#isInTouchMode} 以查看裝置目前是否處於輕觸模式。
 
 </p>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html-intl/intl/zh-tw/preview/api-overview.jd b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
index aeace5b..e5fdf8d 100644
--- a/docs/html-intl/intl/zh-tw/preview/api-overview.jd
+++ b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
@@ -414,7 +414,7 @@
 
 
 
- 
+
 </p>
 
 <p>
diff --git a/docs/html-intl/intl/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd
index a98000a..caa2a55 100644
--- a/docs/html-intl/intl/zh-tw/preview/download.jd
+++ b/docs/html-intl/intl/zh-tw/preview/download.jd
@@ -264,7 +264,7 @@
 
 
 
- 
+
 </p>
 
 <!-- You can flash by ota or system image --><p>
@@ -289,7 +289,7 @@
   如果您決定手動更新裝置後要接收 OTA 更新，您唯一要做的事是在 <a href="https://g.co/androidbeta">Android Beta 計劃</a>中註冊裝置。您可以隨時註冊裝置，以隔空傳輸方式接收下一個「Preview」更新。
 
 
- 
+
 </p>
 
 <table>
@@ -300,64 +300,73 @@
 
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
-    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
-      MD5：b5cf874021023b398f5b983b24913f5d<br>
-      SHA-1：6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
-      MD5：af183638cf34e0eb944a1957d7696f60<br>
-      SHA-1：54b13c6703d369cc79a8fd8728fe4103c6343973
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
-    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
-      MD5：bc4934ea7bd325753eee1606d3725a24<br>
-      SHA-1：85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
-      MD5：c901334c6158351e945f188167ae56f4<br>
-      SHA-1：0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
-    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
-      MD5：7bb95bebc478d7257cccb4652899d1b4<br>
-      SHA-1：1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
-      MD5：f5d3d8f75836ccfe4c70e8162e498be4<br>
-      SHA-1：7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </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><a href="#top" onclick="onDownload(this)"
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
+
   <tr id="seed">
-    <td>一般行動裝置 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>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
diff --git a/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd b/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
index d088381..123498b 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
@@ -88,7 +88,7 @@
 </p>
 
 <p>
-  在此文件中，我們將學習如何使用替代方法 (例如 
+  在此文件中，我們將學習如何使用替代方法 (例如
   {@link android.app.job.JobScheduler}) 改寫您的應用程式以配合這些新的限制。
 
 </p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd b/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
index a42ec11..7e4ea73 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
@@ -87,7 +87,7 @@
 <h2 id="access">存取裝置加密的儲存空間</h2>
 
 <p>如果要存取裝置加密的儲存空間，請透過呼叫
-<code>Context.createDeviceEncryptedStorageContext()</code> 以建立第二個 
+<code>Context.createDeviceEncryptedStorageContext()</code> 以建立第二個
 {@link android.content.Context} 實例。使用此內容建立的所有儲存 API 呼叫都可以存取裝置加密的儲存空間。
 下列範例會存取裝置加密的儲存空間並開啟現有的應用程式資料檔案：
 
diff --git a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd b/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
index 788951c..5ea247b 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
@@ -170,7 +170,7 @@
 
 <h4 id="resizeableActivity">android:resizeableActivity</h4>
 <p>
-  在宣示說明的 <code>&lt;activity&gt;</code> 或 
+  在宣示說明的 <code>&lt;activity&gt;</code> 或
   <code>&lt;application&gt;</code> 節點中，設定此屬性以啟用或停用多視窗顯示：
 
 </p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd b/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
index b0ee8b8..6b8a178 100644
--- a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
+++ b/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
@@ -150,7 +150,7 @@
 <p>當您的活動切換到 PIP 時，系統會將活動視為暫停狀態並呼叫您活動的 <code>onPause()</code> 方法。
 影片播放不應該暫停，而且活動因為 PIP 模式而暫停時，影片應該繼續播放。
 
-查看您活動的 
+查看您活動的
 <code>onPause()</code> 方法中的 PIP 並適當地處理播放，例如：
 </p>
 
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd
index 4225184..acee1d4 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/index.jd
@@ -55,7 +55,7 @@
 </p>
 
 <h2>課程</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">啟動應用行為顯示</a></b></dt>
   <dd>了解應用行為顯示生命週期的有關基本概念、使用者啟動應用程式的方式，以及建立基本應用行為顯示的執行方式。
@@ -68,5 +68,5 @@
   <dt><b><a href="recreating.html">重新建立應用行為顯示</a></b></dt>
   <dd>了解在應用行為顯示遭終結時的狀況，以及如何在需要時重新建置應用行為顯示狀態。
 </dd>
-</dl> 
+</dl>
 
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd
index 8c0843d..f47768a 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本課程示範</h2>
     <ol>
       <li><a href="#Pause">暫停您的應用行為顯示</a></li>
       <li><a href="#Resume">繼續您的應用行為顯示</a></li>
     </ol>
-    
+
     <h2>您也應該閱讀</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">應用行為顯示</a>
@@ -59,7 +59,7 @@
 
 
 <h2 id="Pause">暫停您的應用行為顯示</h2>
-      
+
 <p>若系統為您的應用行為顯示呼叫 {@link android.app.Activity#onPause()}，嚴格來說意味著您的應用行為顯示仍是部分可見，但多數情況下表示使用者離開應用行為顯示，該應用行為顯示很快將進入「已停止」狀態。
 
 通常，您應使用 {@link android.app.Activity#onPause()} 回呼執行以下操作：
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd
index 4b0efda..ad23786 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本課程示範</h2>
     <ol>
       <li><a href="#SaveState">儲存您的應用行為顯示狀態</a></li>
       <li><a href="#RestoreState">還原您的應用行為顯示狀態</a></li>
     </ol>
-    
+
     <h2>您也應該閱讀</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">支援不同的螢幕</a>
@@ -105,7 +105,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -138,7 +138,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -157,12 +157,12 @@
 只有存在要還原的已儲存狀態時，系統才會呼叫 {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}，因此您無需檢查 {@link android.os.Bundle} 是否為 null：
 </p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd
index fae2fa3..b03f22b 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本課程示範</h2>
 <ol>
   <li><a href="#lifecycle-states">了解生命週期回呼</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">建立新執行個體</a></li>
   <li><a href="#Destroy">終結應用行為顯示</a></li>
 </ol>
-    
+
     <h2>您也應該閱讀</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">應用行為顯示</a></li>
@@ -83,7 +83,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -138,7 +138,7 @@
 
 
 
-<h2 id="launching-activity">指定您應用程式的啟動器應用行為顯示</h2> 
+<h2 id="launching-activity">指定您應用程式的啟動器應用行為顯示</h2>
 
 <p>若使用者從主螢幕中選取您的應用程式圖示，系統會針對應用程式中您已宣告作為「啟動器」(或「主程式」) 應用行為顯示的 {@link android.app.Activity}，呼叫 {@link
 android.app.Activity#onCreate onCreate()} 方法。
@@ -151,7 +151,7 @@
 <p>必須在宣示說明中使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a> (包括 {@link
 android.content.Intent#ACTION_MAIN MAIN} 行為與 {@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} 類別) 宣告您應用程式的主要應用行為顯示。
-例如：</p> 
+例如：</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -200,10 +200,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -268,7 +268,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd
index a2da5ca..9d9ea5d 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>本課程示範</h2>
     <ol>
       <li><a href="#Stop">停止您的應用行為顯示</a></li>
       <li><a href="#Start">啟動/重新啟動您的應用行為顯示</a></li>
     </ol>
-    
+
     <h2>您也應該閱讀</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">應用行為顯示</a>
@@ -152,13 +152,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -169,8 +169,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html-intl/intl/zh-tw/training/basics/data-storage/files.jd b/docs/html-intl/intl/zh-tw/training/basics/data-storage/files.jd
index 8b8d0a7..cda5864 100644
--- a/docs/html-intl/intl/zh-tw/training/basics/data-storage/files.jd
+++ b/docs/html-intl/intl/zh-tw/training/basics/data-storage/files.jd
@@ -40,7 +40,7 @@
 該物件的用途很廣，例如非常適用於影像檔案或透過網路交換的項目。
 </p>
 
-<p>本課程將顯示如何在您的應用程式中執行與檔案相關的基本任務。本課程假設您已熟悉 Linux 檔案系統的基本概念，以及 
+<p>本課程將顯示如何在您的應用程式中執行與檔案相關的基本任務。本課程假設您已熟悉 Linux 檔案系統的基本概念，以及
 {@link java.io} 中的標準檔案輸入/輸出 API。
 </p>
 
@@ -183,7 +183,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -250,12 +250,12 @@
 
 
 
- 
+
   <p>例如，您的應用程式下載的附加資源，或暫存媒體檔案都是私用檔案。</p>
   </dd>
 </dl>
 
-<p>若您希望將公用檔案儲存在外部儲存空間，請使用 
+<p>若您希望將公用檔案儲存在外部儲存空間，請使用
 {@link android.os.Environment#getExternalStoragePublicDirectory
 getExternalStoragePublicDirectory()} 方法取得代表外部儲存空間內相應目錄的 {@link java.io.File}。
 該方法採用對要儲存的檔案類型進行指定 (以便能合理區分這些檔案與其他公用檔案) 的引數，諸如 {@link android.os.Environment#DIRECTORY_MUSIC} 或 {@link
@@ -265,7 +265,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -287,7 +287,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -366,7 +366,7 @@
 
 <div class="note">
 <p><strong>注意：</strong>使用者解除安裝您的應用程式時，Android 系統會刪除以下檔案：
-</p> 
+</p>
 <ul>
 <li>您在內部儲存空間儲存的所有檔案</li>
 <li>您使用 {@link
diff --git a/docs/html/_project.yaml b/docs/html/_project.yaml
new file mode 100644
index 0000000..a67469b
--- /dev/null
+++ b/docs/html/_project.yaml
@@ -0,0 +1,5 @@
+name: "Home"
+home_url: /
+description: "Android Developers website."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 11e06f1..4cfe808 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -361,6 +361,8 @@
   to: /about/dashboards/index.html
 - from: /resources/community-groups.html
   to: /support.html
+- from: /community/index.html
+  to: /support.html
 - from: /guide/tutorials/
   to: /resources/tutorials/
 - from: /resources/tutorials/views/hello-linearlayout.html
@@ -801,8 +803,8 @@
   to: http://android-developers.blogspot.com/2016/03/first-preview-of-android-n-developer.html
 - from: /reference/org/apache/http/...
   to: /about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
-- from: /shareables/
-  to: https://commondatastorage.googleapis.com/androiddevelopers/shareables/
+- from: /shareables/...
+  to: https://commondatastorage.googleapis.com/androiddevelopers/shareables/...
 - from: /downloads/
   to: https://commondatastorage.googleapis.com/androiddevelopers/
 - from: /training/performance/battery/network/action-any-traffic.html
@@ -1144,47 +1146,47 @@
 
 # Android Studio help button redirects
 - from: /r/studio-ui/vector-asset-studio.html
-  to: /studio/write/vector-asset-studio.html
+  to: /studio/write/vector-asset-studio.html?utm_medium=android-studio
 - from: /r/studio-ui/image-asset-studio.html
-  to: /studio/write/image-asset-studio.html
+  to: /studio/write/image-asset-studio.html?utm_medium=android-studio
 - from: /r/studio-ui/project-structure.html
-  to: /studio/projects/index.html
+  to: /studio/projects/index.html?utm_medium=android-studio
 - from: /r/studio-ui/android-monitor.html
-  to: /studio/profile/android-monitor.html
+  to: /studio/profile/android-monitor.html?utm_medium=android-studio
 - from: /r/studio-ui/am-logcat.html
-  to: /studio/debug/am-logcat.html
+  to: /studio/debug/am-logcat.html?utm_medium=android-studio
 - from: /r/studio-ui/am-memory.html
-  to: /studio/profile/am-memory.html
+  to: /studio/profile/am-memory.html?utm_medium=android-studio
 - from: /r/studio-ui/am-cpu.html
-  to: /studio/profile/am-cpu.html
+  to: /studio/profile/am-cpu.html?utm_medium=android-studio
 - from: /r/studio-ui/am-gpu.html
-  to: /studio/profile/am-gpu.html
+  to: /studio/profile/am-gpu.html?utm_medium=android-studio
 - from: /r/studio-ui/am-network.html
-  to: /studio/profile/am-network.html
+  to: /studio/profile/am-network.html?utm_medium=android-studio
 - from: /r/studio-ui/am-hprof.html
-  to: /studio/profile/am-hprof.html
+  to: /studio/profile/am-hprof.html?utm_medium=android-studio
 - from: /r/studio-ui/am-allocation.html
-  to: /studio/profile/am-allocation.html
+  to: /studio/profile/am-allocation.html?utm_medium=android-studio
 - from: /r/studio-ui/am-methodtrace.html
-  to: /studio/profile/am-methodtrace.html
+  to: /studio/profile/am-methodtrace.html?utm_medium=android-studio
 - from: /r/studio-ui/am-sysinfo.html
-  to: /studio/profile/am-sysinfo.html
+  to: /studio/profile/am-sysinfo.html?utm_medium=android-studio
 - from: /r/studio-ui/am-screenshot.html
-  to: /studio/debug/am-screenshot.html
+  to: /studio/debug/am-screenshot.html?utm_medium=android-studio
 - from: /r/studio-ui/am-video.html
-  to: /studio/debug/am-video.html
+  to: /studio/debug/am-video.html?utm_medium=android-studio
 - from: /r/studio-ui/avd-manager.html
-  to: /studio/run/managing-avds.html
+  to: /studio/run/managing-avds.html?utm_medium=android-studio
 - from: /r/studio-ui/rundebugconfig.html
-  to: /studio/run/rundebugconfig.html
+  to: /studio/run/rundebugconfig.html?utm_medium=android-studio
 - from: /r/studio-ui/devicechooser.html
-  to: /studio/run/emulator.html
+  to: /studio/run/emulator.html?utm_medium=android-studio
 - from: /r/studio-ui/virtualdeviceconfig.html
-  to: /studio/run/managing-avds.html
+  to: /studio/run/managing-avds.html?utm_medium=android-studio
 - from: /r/studio-ui/emulator.html
-  to: /studio/run/emulator.html
+  to: /studio/run/emulator.html?utm_medium=android-studio
 - from: /r/studio-ui/instant-run.html
-  to: /studio/run/index.html#instant-run
+  to: /studio/run/index.html?utm_medium=android-studio#instant-run
 - from: /r/studio-ui/test-recorder.html
   to: http://tools.android.com/tech-docs/test-recorder
 - from: /r/studio-ui/export-licenses.html
@@ -1192,4 +1194,10 @@
 - from: /r/studio-ui/experimental-to-stable-gradle.html
   to: http://tools.android.com/tech-docs/new-build-system/gradle-experimental/experimental-to-stable-gradle
 - from: /r/studio-ui/sdk-manager.html
-  to: https://developer.android.com/studio/intro/update.html#sdk-manager
+  to: /studio/intro/update.html?utm_medium=android-studio#sdk-manager
+- from: /r/studio-ui/newjclass.html
+  to: /studio/write/index.html?utm_medium=android-studio
+- from: /r/studio-ui/menu-help.html
+  to: /studio/intro/index.html?utm_medium=android-studio
+- from: /r/studio-ui/menu-start.html
+  to: /training/index.html?utm_medium=android-studio
diff --git a/docs/html/about/_project.yaml b/docs/html/about/_project.yaml
new file mode 100644
index 0000000..160cf55
--- /dev/null
+++ b/docs/html/about/_project.yaml
@@ -0,0 +1,5 @@
+name: "Android"
+home_url: /about/
+description: "Android, the world's most popular mobile platform"
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/about/android.jd b/docs/html/about/android.jd
index e3b6958..6e57390 100644
--- a/docs/html/about/android.jd
+++ b/docs/html/about/android.jd
@@ -26,11 +26,11 @@
 <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 
+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
-forward to bring new capabilities to users and developers. For developers, 
+forward to bring new capabilities to users and developers. For developers,
 Android innovation lets you build powerful, differentiated applications
 that use the latest mobile technologies.</p>
 
@@ -59,7 +59,7 @@
 advantage of the hardware capabilities available on each device. It
 automatically adapts your UI to look its best on each device, while giving you
 as much control as you want over your UI on different device
-types. </p> 
+types. </p>
 
 <p>For example, you can create a single app binary that's optimized for
 both phone and tablet form factors. You declare your UI in lightweight sets of XML
@@ -70,7 +70,7 @@
 and so on.</p>
 
 
-<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android 
+<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
     Developer Tools</a>
 offer a full Java IDE with advanced features for developing, debugging, and
 packaging Android apps. Using the IDE, you can develop on any available Android
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index 911e256..3cbfde9 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -59,7 +59,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on June 6, 2016.
+<p style="clear:both"><em>Data collected during a 7-day period ending on July 11, 2016.
 <br/>Any versions with less than 0.1% distribution are not shown.</em>
 </p>
 
@@ -81,7 +81,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on June 6, 2016.
+<p style="clear:both"><em>Data collected during a 7-day period ending on July 11, 2016.
 
 <br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
 
@@ -101,7 +101,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%3A48.6%2C41.8%2C9.6&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%3A47.5%2C41.9%2C10.6&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
@@ -119,21 +119,21 @@
 </tr>
 <tr>
 <td>2.0</td>
-<td>48.6%</td>
+<td>47.5%</td>
 </tr>
 <tr>
 <td>3.0</td>
-<td>41.8%</td>
+<td>41.9%</td>
 </tr>
 <tr>
 <td>3.1</td>
-<td>9.6%</td>
+<td>10.6%</td>
 </tr>
 </table>
 
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on June 6, 2016</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on July 11, 2016</em></p>
 
 
 
@@ -147,28 +147,28 @@
       "Large": {
         "hdpi": "0.5",
         "ldpi": "0.2",
-        "mdpi": "4.5",
-        "tvdpi": "2.2",
+        "mdpi": "4.4",
+        "tvdpi": "2.1",
         "xhdpi": "0.5"
       },
       "Normal": {
-        "hdpi": "41.1",
-        "mdpi": "4.2",
+        "hdpi": "40.9",
+        "mdpi": "4.1",
         "tvdpi": "0.1",
-        "xhdpi": "25.6",
-        "xxhdpi": "15.0"
+        "xhdpi": "26.3",
+        "xxhdpi": "15.1"
       },
       "Small": {
-        "ldpi": "2.0"
+        "ldpi": "1.9"
       },
       "Xlarge": {
         "hdpi": "0.3",
-        "mdpi": "3.1",
+        "mdpi": "2.9",
         "xhdpi": "0.7"
       }
     },
-    "densitychart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chco=c4df9b%2C6fad0c&chf=bg%2Cs%2C00000000&chd=t%3A2.2%2C11.8%2C2.3%2C41.9%2C26.8%2C15.0&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%3A4.1%2C7.9%2C86.0%2C2.0&chl=Xlarge%7CLarge%7CNormal%7CSmall"
+    "densitychart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chd=t%3A2.1%2C11.4%2C2.2%2C41.7%2C27.5%2C15.1&chf=bg%2Cs%2C00000000&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chs=400x250&cht=p",
+    "layoutchart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chd=t%3A3.9%2C7.7%2C86.5%2C1.9&chf=bg%2Cs%2C00000000&chl=Xlarge%7CLarge%7CNormal%7CSmall&chs=400x250&cht=p"
   }
 ];
 
@@ -176,7 +176,7 @@
 var VERSION_DATA =
 [
   {
-    "chart": "//chart.googleapis.com/chart?chs=500x250&cht=p&chco=c4df9b%2C6fad0c&chf=bg%2Cs%2C00000000&chd=t%3A0.1%2C2.0%2C1.9%2C18.9%2C31.6%2C35.4%2C10.1&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow",
+    "chart": "//chart.googleapis.com/chart?chco=c4df9b%2C6fad0c&chd=t%3A0.1%2C1.9%2C1.7%2C17.8%2C30.2%2C35.1%2C13.3&chf=bg%2Cs%2C00000000&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow&chs=500x250&cht=p",
     "data": [
       {
         "api": 8,
@@ -186,47 +186,47 @@
       {
         "api": 10,
         "name": "Gingerbread",
-        "perc": "2.0"
+        "perc": "1.9"
       },
       {
         "api": 15,
         "name": "Ice Cream Sandwich",
-        "perc": "1.9"
+        "perc": "1.7"
       },
       {
         "api": 16,
         "name": "Jelly Bean",
-        "perc": "6.8"
+        "perc": "6.4"
       },
       {
         "api": 17,
         "name": "Jelly Bean",
-        "perc": "9.4"
+        "perc": "8.8"
       },
       {
         "api": 18,
         "name": "Jelly Bean",
-        "perc": "2.7"
+        "perc": "2.6"
       },
       {
         "api": 19,
         "name": "KitKat",
-        "perc": "31.6"
+        "perc": "30.1"
       },
       {
         "api": 21,
         "name": "Lollipop",
-        "perc": "15.4"
+        "perc": "14.3"
       },
       {
         "api": 22,
         "name": "Lollipop",
-        "perc": "20.0"
+        "perc": "20.8"
       },
       {
         "api": 23,
         "name": "Marshmallow",
-        "perc": "10.1"
+        "perc": "13.3"
       }
     ]
   }
@@ -381,7 +381,7 @@
     $divtable.append($table);
     $divchart.append($chart);
     $div.append($divtable).append($divchart);
-    $("#version-chart").append($div);
+    $("#version-chart").replaceWith($div);
   });
 
 
@@ -449,7 +449,7 @@
 
     // stack up and insert the elements
     $div.append($table).append($sizechart).append($densitychart);
-    $("#screens-chart").append($div);
+    $("#screens-chart").replaceWith($div);
   });
 
   // TODO (akassay): Remove this.
diff --git a/docs/html/about/index.jd b/docs/html/about/index.jd
index 22f504e..274a511 100644
--- a/docs/html/about/index.jd
+++ b/docs/html/about/index.jd
@@ -34,11 +34,11 @@
 <blockquote>Every day more than 1 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 more than
 1.5 billion apps and games from Google Play each month. </p>
 
 <p>With its partners, Android is continuously pushing the boundaries of hardware and software
-forward to bring new capabilities to users and developers. For developers, 
+forward to bring new capabilities to users and developers. For developers,
 Android innovation lets you build powerful, differentiated applications
 that use the latest mobile technologies.</p>
 
@@ -68,7 +68,7 @@
 advantage of the hardware capabilities available on each device. It
 automatically adapts your UI to look its best on each device, while giving you
 as much control as you want over your UI on different device
-types. </p> 
+types. </p>
 
 <p>For example, you can create a single app binary that's optimized for
 both phone and tablet form factors. You declare your UI in lightweight sets of XML
@@ -79,7 +79,7 @@
 and so on.</p>
 
 
-<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android 
+<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
     Developer Tools</a>
 offer a full Java IDE with advanced features for developing, debugging, and
 packaging Android apps. Using the IDE, you can develop on any available Android
diff --git a/docs/html/about/versions/android-1.1.jd b/docs/html/about/versions/android-1.1.jd
index b2a1615..e7d059e 100644
--- a/docs/html/about/versions/android-1.1.jd
+++ b/docs/html/about/versions/android-1.1.jd
@@ -9,7 +9,7 @@
 <em>API Level:</em>&nbsp;<strong>2</strong></p>
 
 
-<p>This document provides version notes for the Android 1.1 system image included in the SDK. 
+<p>This document provides version notes for the Android 1.1 system image included in the SDK.
 
 <ul>
 <li><a href="#overview">Overview</a>
@@ -29,7 +29,7 @@
 Android-powered handsets starting in February 2009. </p>
 
 <p>The Android 1.1 system image delivers an updated version of the framework
-API. As with the Android 1.0 API, the Android 1.1 API 
+API. As with the Android 1.0 API, the Android 1.1 API
 is assigned an integer identifier &mdash; <strong>2</strong> &mdash; that is
 stored in the system itself. This identifier, called the "API Level", allows the
 system to correctly determine whether an application is compatible with
@@ -37,8 +37,8 @@
 
 <p>Applications indicate the lowest system API Level that they are compatible with by adding
 a value to the <code>android:minSdkVersion</code> attribute.
-The value of the attribute is an integer corresponding to an API Level 
-identifier. Prior to installing an application, the system checks the value of 
+The value of the attribute is an integer corresponding to an API Level
+identifier. Prior to installing an application, the system checks the value of
 <code>android:minSdkVersion</code> and allows the install only
 if the referenced integer is less than or equal to the API Level integer stored
 in the system itself. </p>
@@ -139,7 +139,7 @@
 	<li>German (de) </li>
 	</ul>
 
-<p>Localized UI strings match the locales that are displayable in 
+<p>Localized UI strings match the locales that are displayable in
 the emulator, accessible through the device Settings application.</p>
 
 <h2 id="resolved-issues">Resolved Issues</h2>
diff --git a/docs/html/about/versions/android-1.5-highlights.jd b/docs/html/about/versions/android-1.5-highlights.jd
index dd4d218..e0bae48 100644
--- a/docs/html/about/versions/android-1.5-highlights.jd
+++ b/docs/html/about/versions/android-1.5-highlights.jd
@@ -7,7 +7,7 @@
 </p>
 
 
-<p>The Android 1.5 platform introduces many new features for users and developers. 
+<p>The Android 1.5 platform introduces many new features for users and developers.
 The list below provides an overview of the changes. </p>
 
 <ul>
@@ -65,7 +65,7 @@
   <ul>
      <li>Widgets
      <ul>
-       <li>Bundled home screen widgets include: analog clock, calendar, 
+       <li>Bundled home screen widgets include: analog clock, calendar,
            music player, picture frame, and search</li>
      </ul></li>
      <li>Live folders</li>
@@ -121,7 +121,7 @@
 <li>Google applications (not available in the Android 1.5 System Image that is
 included in the Android SDK)
   <ul>
-    <li>View Google Talk friends' status in Contacts, SMS, MMS, GMail, and 
+    <li>View Google Talk friends' status in Contacts, SMS, MMS, GMail, and
         Email applications</li>
     <li>Batch actions such as archive, delete, and label on Gmail messages</li>
     <li>Upload videos to Youtube</li>
@@ -165,7 +165,7 @@
   </ul>
 </li>
 
-<li>Input Method framework 
+<li>Input Method framework
    <ul>
     <li>{@link android.inputmethodservice.InputMethodService Input Method
         Service} framework</li>
diff --git a/docs/html/about/versions/android-1.5.jd b/docs/html/about/versions/android-1.5.jd
index 775561b..45a27ee 100644
--- a/docs/html/about/versions/android-1.5.jd
+++ b/docs/html/about/versions/android-1.5.jd
@@ -55,7 +55,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>
 
 <h2 id="relnotes">Revisions</h2>
@@ -119,10 +119,10 @@
 
 <dt>Tools:</dt>
 <dd>
-<ul> 
+<ul>
 <li>Adds support for library projects in the Ant build system.</li>
 <li>Fixes test project build in the Ant build system.</li>
-</ul> 
+</ul>
 </dd>
 
 </dl>
@@ -256,8 +256,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>
 
 
@@ -300,8 +300,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;padding-bottom:0;margin-bottom:0;">
@@ -341,7 +341,7 @@
 </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>
diff --git a/docs/html/about/versions/android-1.6-highlights.jd b/docs/html/about/versions/android-1.6-highlights.jd
index 88c0f55..9179579 100644
--- a/docs/html/about/versions/android-1.6-highlights.jd
+++ b/docs/html/about/versions/android-1.6-highlights.jd
@@ -28,13 +28,13 @@
 <object width="278" height="180">
 <param name="movie" value="http://www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&"></param>
 <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
-<embed src="//www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&" type="application/x-shockwave-flash" 
+<embed src="//www.youtube.com/v/MBRFkLKRwFw&hl=en&fs=1&" type="application/x-shockwave-flash"
 allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
 </object>
 </div>
 
 
-<p>The Android 1.6 platform introduces new features for users and developers. 
+<p>The Android 1.6 platform introduces new features for users and developers.
 This page provides an overview of some new features and technologies.</p>
 
 <ul>
@@ -44,7 +44,7 @@
 </ul>
 
 
-    
+
 <h2 id="UserFeatures" style="clear:right">New User Features</h2>
 
 <!-- screenshots float right -->
@@ -53,7 +53,7 @@
 <img src="{@docRoot}sdk/images/search.png" class="screenshot" alt="" /><br/>
 Quick Search Box
 </div>
- 
+
 <div class="screenshot">
 <img src="{@docRoot}sdk/images/camera.png" class="screenshot" alt="" /><br/>
 New Camera/Camcorder UI
@@ -67,32 +67,32 @@
 
 <h3 id="QuickSearchBox">Quick Search Box for Android</h3>
 
-<p>Android 1.6  includes a redesigned search framework that provides a quick, 
-effective, and consistent way for users to search across multiple sources&mdash;such as 
-browser bookmarks &amp; history, contacts, and the web&mdash;directly from 
+<p>Android 1.6  includes a redesigned search framework that provides a quick,
+effective, and consistent way for users to search across multiple sources&mdash;such as
+browser bookmarks &amp; history, contacts, and the web&mdash;directly from
 the home screen.</p>
 
-<p>The system constantly learns which search results are more relevant based on what is 
-clicked. So popular contacts or apps that have previously been picked will bubble up to 
+<p>The system constantly learns which search results are more relevant based on what is
+clicked. So popular contacts or apps that have previously been picked will bubble up to
 the top when a user types the first few letters of a relevant query.</p>
 
-<p>The search framework also provides developers a way to easily expose relevant 
+<p>The search framework also provides developers a way to easily expose relevant
 content from their applications in Quick Search Box.</p>
 
 <h3 id="Camera">Camera, Camcorder, and Gallery</h3>
 
-<p>An updated user interface provides an integrated camera, camcorder, and gallery experience. 
-Users can quickly toggle between still and video capture modes. Additionally, the gallery 
+<p>An updated user interface provides an integrated camera, camcorder, and gallery experience.
+Users can quickly toggle between still and video capture modes. Additionally, the gallery
 enables users to select multiple photos for deletion.</p>
 
 <p>Android 1.6 also provides a much faster camera experience.
-Compared to the previous release, launching the camera is now 39% faster, 
+Compared to the previous release, launching the camera is now 39% faster,
 and there is a 28% improvement in the time from completing one shot to the next.</p>
 
 
 <h3 id="VPN">VPN, 802.1x</h3>
 
-<p>A new Virtual Private Network (VPN) control panel in Settings allows users 
+<p>A new Virtual Private Network (VPN) control panel in Settings allows users
 to configure and connect to the following types of VPNs:</p>
 
 <ul>
@@ -105,8 +105,8 @@
 
 <h3 id="Battery">Battery usage indicator</h3>
 
-<p>A new battery usage screen lets users see which apps and services are consuming 
-battery power. If the user determines that a particular service or application is 
+<p>A new battery usage screen lets users see which apps and services are consuming
+battery power. If the user determines that a particular service or application is
 using too much power, they can take action to save the battery by
 adjusting settings, stopping the application, or uninstalling the application.</p>
 
@@ -132,11 +132,11 @@
 <ul>
   <li>At the homescreen, users can choose among <em>Apps</em>, <em>Games</em>, and <em>Downloads</em>.</li>
   <li>Inside a category, users can explore titles that are <em>Top paid</em>, <em>Top free</em>, and <em>Just in</em>.</li>
-  <li>For each title, users can now see screenshots submitted by developers in addition to 
+  <li>For each title, users can now see screenshots submitted by developers in addition to
   reviews from other users.</li>
 </ul>
-    
-    
+
+
 
 
 <h2 id="PlatformTechnologies" style="clear:right">New Platform Technologies</h2>
@@ -145,44 +145,44 @@
 
 <p>The Android search framework has been redesigned and expanded to provide
 third-party applications the opportunity to surface
-content from their applications in Quick Search Box, the global search tool. 
-To do this, developers will need to make their app "searchable" and provide 
+content from their applications in Quick Search Box, the global search tool.
+To do this, developers will need to make their app "searchable" and provide
 suggestions in response to user queries.
-To enable application search suggestions, users simply select each application from which 
+To enable application search suggestions, users simply select each application from which
 they'd like to receive suggestions, under Searchable items in the Search settings.</p>
 
 
 <h3 id="TTS">Text-to-speech engine</h3>
 
-<p>Android 1.6 features a multi-lingual speech synthesis engine called Pico. 
-It allows any Android application to "speak" a string of text with an accent that matches the language. 
-The engine supports the following languages: English (American and British accents), French, 
-Italian, German and Spanish. If you're using a T-Mobile G1 or Dream device, you'll need to download the 
-SpeechSynthesis Data Installer from Google Play, which includes the "voices" needed by the 
+<p>Android 1.6 features a multi-lingual speech synthesis engine called Pico.
+It allows any Android application to "speak" a string of text with an accent that matches the language.
+The engine supports the following languages: English (American and British accents), French,
+Italian, German and Spanish. If you're using a T-Mobile G1 or Dream device, you'll need to download the
+SpeechSynthesis Data Installer from Google Play, which includes the "voices" needed by the
 text-to-speech engine.</p>
 
 
 <h3 id="Gestures">Gestures</h3>
 
-<p>A new gestures framework provides application developers with a framework for creating, storing, 
+<p>A new gestures framework provides application developers with a framework for creating, storing,
 loading, and recognizing gestures and associating them with specific actions.</p>
 
-<p>Developers can use the new GestureBuilder tool included in the Android 1.6 SDK to generate libraries 
+<p>Developers can use the new GestureBuilder tool included in the Android 1.6 SDK to generate libraries
 of gestures to include with their application.</p>
 
 
 <h3 id="A11y">Accessibility</h3>
 
-<p>Android 1.6 provides a new accessibility framework. 
-With this framework, developers can create accessibility plugins that respond to user input, 
-such as making a sound when a new window is shown, vibrating when navigating to the top of 
+<p>Android 1.6 provides a new accessibility framework.
+With this framework, developers can create accessibility plugins that respond to user input,
+such as making a sound when a new window is shown, vibrating when navigating to the top of
 a list, and providing spoken feedback.</p>
 
 
 <h3 id="Screens">Expanded support for screen densities and resolutions</h3>
 
-<p>Android 1.6 adds screen support that enables applications to be rendered properly on different 
-display resolutions and densities. Developers can also specify the types of screens supported by their 
+<p>Android 1.6 adds screen support that enables applications to be rendered properly on different
+display resolutions and densities. Developers can also specify the types of screens supported by their
 application.</p>
 
 
@@ -208,7 +208,7 @@
 
 <h3 id="DeveloperAPIs">New Framework APIs</h3>
 
-<p>For a detailed overview of new APIs, see the 
-<a href="{@docRoot}about/versions/android-1.6.html#api-changes">Version Notes</a>. 
-For a complete report of all API changes, see the 
+<p>For a detailed overview of new APIs, see the
+<a href="{@docRoot}about/versions/android-1.6.html#api-changes">Version Notes</a>.
+For a complete report of all API changes, see the
 <a href="{@docRoot}sdk/api_diff/4/changes.html">API Differences Report</a>.
diff --git a/docs/html/about/versions/android-2.0-highlights.jd b/docs/html/about/versions/android-2.0-highlights.jd
index c16088a..3f7e1c8 100644
--- a/docs/html/about/versions/android-2.0-highlights.jd
+++ b/docs/html/about/versions/android-2.0-highlights.jd
@@ -33,7 +33,7 @@
 <object width="278 height="180">
 <param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&"></param>
 <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
-<embed src="//www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash" 
+<embed src="//www.youtube.com/v/opZ69P-0Jbc&hl=en&fs=1&" type="application/x-shockwave-flash"
 allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed>
 </object>
 </div>
@@ -49,7 +49,7 @@
 </ul>
 
 
-    
+
 <h2 id="UserFeatures" style="clear:right">New User Features</h2>
 
 <!-- screenshots float right -->
@@ -99,10 +99,10 @@
 
 <!--
 <ul>
-  <li>Sync support for contacts from multiple data sources including Exchange. 
-  Handset manufacturers can choose whether or not to include Exchange support 
+  <li>Sync support for contacts from multiple data sources including Exchange.
+  Handset manufacturers can choose whether or not to include Exchange support
   in their devices.</li>
-  <li>New way to hover on a person to see more info and select communication 
+  <li>New way to hover on a person to see more info and select communication
   mode (for example, phone, SMS, email).</li>
 </ul>
 -->
@@ -150,7 +150,7 @@
 <h3 id="Browser">Browser</h3>
 
 <ul>
-  <li>Refreshed UI with actionable browser URL bar enables users to directly 
+  <li>Refreshed UI with actionable browser URL bar enables users to directly
   tap the address bar for instant searches and navigation.</li>
   <li>Bookmarks with web page thumbnails.</li>
   <li>Support for double-tap zoom.</li>
@@ -192,10 +192,10 @@
 <h3 id="DeveloperAPIs">New Framework APIs</h3>
 
 <p>Android 2.0 includes several new developer APIs.
-For an overview of new APIs, see the 
+For an overview of new APIs, see the
 <a href="{@docRoot}about/versions/android-2.0.html#api">Android 2.0 version notes</a>.</p>
 
-<p>For a complete report of all API changes, see the 
+<p>For a complete report of all API changes, see the
 <a href="{@docRoot}sdk/api_diff/5/changes.html">API Differences Report</a>.</p>
 
 
diff --git a/docs/html/about/versions/android-2.0.1.jd b/docs/html/about/versions/android-2.0.1.jd
index 48f7ae8..b0f4db6 100644
--- a/docs/html/about/versions/android-2.0.1.jd
+++ b/docs/html/about/versions/android-2.0.1.jd
@@ -162,8 +162,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> locale 
+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;padding-bottom:0;margin-bottom:0;">
@@ -203,7 +203,7 @@
 </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>
@@ -263,8 +263,8 @@
 system to correctly determine whether an application is compatible with
 the system, prior to installing the application. </p>
 
-<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> 
+<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>
 
 <p>For more information about how to use API Level, see the <a
@@ -345,10 +345,10 @@
 
 <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 
+<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
 API Level 5, see the <a
 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
-Differences Report</a>. There are very few API changes in API Level 6, 
+Differences Report</a>. There are very few API changes in API Level 6,
 so you might also be interested in reviewing the <a
 href="{@docRoot}sdk/api_diff/5/changes.html">API
 differences between 4 and 5</a>.</p>
diff --git a/docs/html/about/versions/android-2.0.jd b/docs/html/about/versions/android-2.0.jd
index 329af3c..0323686 100644
--- a/docs/html/about/versions/android-2.0.jd
+++ b/docs/html/about/versions/android-2.0.jd
@@ -50,7 +50,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>
 
 <h2 id="relnotes">Revisions</h2>
@@ -151,8 +151,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> locale 
+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;padding-bottom:0;margin-bottom:0;">
@@ -192,7 +192,7 @@
 </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>
@@ -242,14 +242,14 @@
 <h3 id="api-level">API level</h3>
 
 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of the framework
-API. As with previous versions, the Android {@sdkPlatformVersion} API 
+API. As with previous versions, the Android {@sdkPlatformVersion} API
 is assigned an integer identifier &mdash; <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
 stored in the system itself. This identifier, called the "API Level", allows the
 system to correctly determine whether an application is compatible with
 the system, prior to installing the application. </p>
 
-<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> 
+<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>
 
 <p>For more information about how to use API Level, see the <a
@@ -319,8 +319,8 @@
 <p>Android 2.0 is designed to run on devices that use virtual keys for HOME,
 MENU, BACK, and SEARCH, rather than physical keys. To support the best user
 experience on those devices, the Android platform now executes these buttons at
-key-up, for a key-down/key-up pair, rather than key-down. This helps prevent 
-accidental button events and lets the user press the button area and then drag 
+key-up, for a key-down/key-up pair, rather than key-down. This helps prevent
+accidental button events and lets the user press the button area and then drag
 out of it without generating an event. </p>
 
 <p>This change in behavior should only affect your application if it is
@@ -332,7 +332,7 @@
 however, if your application is doing so and it invokes some action on
 key-down, rather than key-up, you should modify your code. </p>
 
-<p>If your application will use APIs introduced in Android 2.0 (API Level 5), 
+<p>If your application will use APIs introduced in Android 2.0 (API Level 5),
 you can take advantage of new APIs for managing key-event pairs:</p>
 
 <ul>
@@ -363,16 +363,16 @@
 </ul>
 
 <p>If you want to update a legacy application so that its handling of the BACK
-key works properly for both Android 2.0 and older platform versions, you 
+key works properly for both Android 2.0 and older platform versions, you
 can use an approach similar to that shown above. Your code can catch the
-target button event on key-down, set a flag to track the key event, and 
-then also catch the event on key-up, executing the desired action if the tracking 
-flag is set. You'll also want to watch for focus changes and clear the tracking 
+target button event on key-down, set a flag to track the key event, and
+then also catch the event on key-up, executing the desired action if the tracking
+flag is set. You'll also want to watch for focus changes and clear the tracking
 flag when gaining/losing focus.</p>
 
 <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 
+<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>
 
diff --git a/docs/html/about/versions/android-2.1.jd b/docs/html/about/versions/android-2.1.jd
index ce6f1b2..5f8f624 100644
--- a/docs/html/about/versions/android-2.1.jd
+++ b/docs/html/about/versions/android-2.1.jd
@@ -113,10 +113,10 @@
 
 <dt>Tools:</dt>
 <dd>
-<ul> 
+<ul>
 <li>Adds support for library projects in the Ant build system.</li>
 <li>Adds improved layout rendering in ADT’s visual layout editor.</li>
-</ul> 
+</ul>
 </dd>
 
 </dl>
diff --git a/docs/html/about/versions/android-2.3.3.jd b/docs/html/about/versions/android-2.3.3.jd
index eec0735..91f1d28 100644
--- a/docs/html/about/versions/android-2.3.3.jd
+++ b/docs/html/about/versions/android-2.3.3.jd
@@ -81,7 +81,7 @@
 <code>android.nfc.action.NDEF_DISCOVERED</code> and
 <code>android.nfc.action.TECH_DISCOVERED</code>.</p>
 
-<p>The NFC API is available in the {@link android.nfc} and 
+<p>The NFC API is available in the {@link android.nfc} and
 {@link android.nfc.tech} packages. The key classes are: </p>
 
 <ul>
@@ -89,7 +89,7 @@
 <li>{@link android.nfc.NdefMessage}, which represents an NDEF data message,
 the standard format in which "records" carrying data are transmitted between
 devices and tags. An NDEF message certain many NDEF records of different types.
-Applications can receive these messages from 
+Applications can receive these messages from
 {@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED},
 {@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or
 {@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li>
@@ -124,15 +124,15 @@
 <code>&lt;uses-feature android:name="android.hardware.nfc"
 android:required="true"&gt;</code> to the application's manifest.</p>
 
-<p class="note">For more information, read the 
+<p class="note">For more information, read the
   <a href="{@docRoot}guide/topics/connectivity/nfc/index.html">NFC</a> developer guide.</p>
 
 <h3 id="bluetooth">Bluetooth</h3>
 
 <p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket
 connections. This lets applications communicate with simple devices that may not
-offer a UI for authentication. See 
-{@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and 
+offer a UI for authentication. See
+{@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and
 {@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)}
 for more information. </p>
 
@@ -183,7 +183,7 @@
 
 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
 you need compile the application against the Android library that is provided in
-the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 
+the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
 manifest. If your application is designed to run only on Android 2.3 and higher,
diff --git a/docs/html/about/versions/android-2.3.4.jd b/docs/html/about/versions/android-2.3.4.jd
index 963df9a..8705d1d 100644
--- a/docs/html/about/versions/android-2.3.4.jd
+++ b/docs/html/about/versions/android-2.3.4.jd
@@ -31,7 +31,7 @@
 
 <p>Android 2.3.4 ({@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1})
 is a maintenance release that adds several bug fixes and patches
-to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally, 
+to the Android 2.3 platform, without any API changes from Android 2.3.3. Additionally,
 Android 2.3.4 brings support for the Open Accessory API to mobile devices,
 through the optional <a href="#usb">Open Accessory Library</a>. </p>
 
diff --git a/docs/html/about/versions/android-2.3.jd b/docs/html/about/versions/android-2.3.jd
index 34fdb52..bc54903 100644
--- a/docs/html/about/versions/android-2.3.jd
+++ b/docs/html/about/versions/android-2.3.jd
@@ -240,7 +240,7 @@
 <li>Applications can obtain an instance of the {@link android.app.DownloadManager}
 class by calling {@link
 android.content.Context#getSystemService(String)} and passing
-{@link android.content.Context#DOWNLOAD_SERVICE}. Applications that request 
+{@link android.content.Context#DOWNLOAD_SERVICE}. Applications that request
 downloads through this API should register a broadcast receiver for {@link
 android.app.DownloadManager#ACTION_NOTIFICATION_CLICKED}, to appropriately
 handle when the user clicks on a running download in a notification or from the
@@ -690,7 +690,7 @@
 
 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
 you need compile the application against the Android library that is provided in
-the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 
+the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
 manifest. If your application is designed to run only on Android 2.3 and higher,
diff --git a/docs/html/about/versions/android-3.0-highlights.jd b/docs/html/about/versions/android-3.0-highlights.jd
index 21dbda6..e9d2b39 100644
--- a/docs/html/about/versions/android-3.0-highlights.jd
+++ b/docs/html/about/versions/android-3.0-highlights.jd
@@ -40,7 +40,7 @@
 
 <p>Welcome to Android 3.0!</p>
 
-<p>The Android 3.0 platform introduces many new and exciting features for users and developers. 
+<p>The Android 3.0 platform introduces many new and exciting features for users and developers.
 This document provides a glimpse of some of the new features and technologies, as delivered in
 Android 3.0. For a more detailed look at new developer APIs, see the <a
 href="{@docRoot}about/versions/android-3.0.html">Android 3.0 Platform</a> document.</p>
@@ -61,7 +61,7 @@
 
 <p>Android 3.0 is a new version of the Android platform that is specifically optimized for devices with larger screen sizes, particularly tablets. It introduces a brand new, truly virtual and “holographic” UI design, as well as an elegant, content-focused interaction model.</p>
 
-<p>Android 3.0 builds on the things people love most about Android &mdash; refined multitasking, rich notifications, Home screen customization, widgets, and more &mdash; and transforms them with a vibrant, 3D experience and deeper interactivity, making them familiar but even better than before.</p> 
+<p>Android 3.0 builds on the things people love most about Android &mdash; refined multitasking, rich notifications, Home screen customization, widgets, and more &mdash; and transforms them with a vibrant, 3D experience and deeper interactivity, making them familiar but even better than before.</p>
 
 <p>The new UI brings fresh paradigms for interaction, navigation, and customization and makes them available to all applications &mdash; even those built for earlier versions of the platform. Applications written for Android 3.0 are able to use an extended set of UI objects, powerful graphics, and media capabilities to engage users in new ways.</p>
 
diff --git a/docs/html/about/versions/android-3.0.jd b/docs/html/about/versions/android-3.0.jd
index 5184743..3175d3c 100644
--- a/docs/html/about/versions/android-3.0.jd
+++ b/docs/html/about/versions/android-3.0.jd
@@ -392,7 +392,7 @@
 <h3>Extended UI framework</h3>
 
 <ul>
-  
+
   <li><b>Multiple-choice selection for ListView and GridView</b>
 
 <p>New {@link android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL} mode for {@link
@@ -419,9 +419,9 @@
 class in the API Demos sample application.</p>
   </li>
 
-  
+
   <li><b>New APIs to transform views</b>
-  
+
     <p>New APIs allow you to easily apply 2D and 3D transformations to views in your activity
 layout. New transformations are made possible with a set of object properties that define the view's
 layout position, orientation, transparency and more.</p>
@@ -452,7 +452,7 @@
 </pre>
   </li>
 
-  
+
   <li><b>New holographic themes</b>
 
     <p>The standard system widgets and overall look have been redesigned and incorporate a new
@@ -475,55 +475,55 @@
 version</a>.</p>
 
   </li>
-  
-  
+
+
   <li><b>New widgets</b>
 
     <ul>
     <li>{@link android.widget.AdapterViewAnimator}
     <p>Base class for an {@link android.widget.AdapterView} that performs animations when switching
     between its views.</p></li>
-    
+
     <li>{@link android.widget.AdapterViewFlipper}
     <p>Simple {@link android.widget.ViewAnimator} that animates between two or more views that have
     been added to it. Only one child is shown at a time. If requested, it can automatically flip
   between
     each child at a regular interval.</p></li>
-    
+
     <li>{@link android.widget.CalendarView}
     <p>Allows users to select dates from a calendar by touching the date and can scroll or fling the
 calendar to a desired date. You can configure the range of dates available in the widget.</p></li>
-    
+
     <li>{@link android.widget.ListPopupWindow}
     <p>Anchors itself to a host view and displays a list of choices, such as for a list of
     suggestions when typing into an {@link android.widget.EditText} view.</p></li>
-    
+
     <li>{@link android.widget.NumberPicker}
     <p>Enables the user to select a number from a predefined range. The widget presents an input
 field and up and down buttons for selecting a number. Touching the input field allows the user to
 scroll through values or touch again to directly edit the current value. It also allows you to map
 positions to strings, so that the corresponding string is displayed instead of the index
 position.</p></li>
-    
+
     <li>{@link android.widget.PopupMenu}
     <p>Displays a {@link android.view.Menu} in a modal popup window that's anchored to a view. The
 popup appears below the anchor view if there is room, or above it if there is not. If the IME (soft
 keyboard) is visible, the popup does not overlap the IME it until the user touches the
 menu.</p></li>
-    
+
     <li>{@link android.widget.SearchView}
     <p>Provides a search box that you can configure to deliver search queries to a specified
 activity and display search suggestions (in the same manner as the traditional search dialog). This
 widget is particularly useful for offering a search widget in the Action Bar. For more information,
 see <a href="{@docRoot}guide/topics/search/search-dialog.html">Creating a Search Interface.</p></li>
-    
+
     <li>{@link android.widget.StackView}
     <p>A view that displays its children in a 3D stack and allows users to swipe through
   views like a rolodex.</p></li>
-    
+
     </ul>
   </li>
-  
+
 </ul>
 
 
@@ -545,7 +545,7 @@
 
 
   <li><b>View support for hardware and software layers</b>
-  
+
     <p>By default, a {@link android.view.View} has no layer specified. You can specify that the
 view be backed by either a hardware or software layer, specified by values {@link
 android.view.View#LAYER_TYPE_HARDWARE} and {@link android.view.View#LAYER_TYPE_SOFTWARE}, using
@@ -563,7 +563,7 @@
     <p>For more information, see the {@link android.view.View#LAYER_TYPE_HARDWARE} and {@link
 android.view.View#LAYER_TYPE_SOFTWARE} documentation.</p>
   </li>
-  
+
 
   <li><b>Renderscript 3D graphics engine</b>
 
@@ -591,7 +591,7 @@
 should be captured.</p></li>
 
   <li><b>Texture support for image streams</b>
-    
+
 <p>New {@link android.graphics.SurfaceTexture} allows you to capture an image stream as an OpenGL ES
 texture. By calling {@link android.hardware.Camera#setPreviewTexture setPreviewTexture()} for your
 {@link android.hardware.Camera} instance, you can specify the {@link
@@ -599,7 +599,7 @@
 camera.</p></li>
 
   <li><b>HTTP Live streaming</b>
-    
+
 <p>Applications can now pass an M3U playlist URL to the media framework to begin an HTTP Live
 streaming session. The media framework supports most of the HTTP Live streaming specification,
 including adaptive bit rate. See the <a
@@ -607,7 +607,7 @@
 more information.</p></li>
 
   <li><b>EXIF data</b>
-    
+
 <p>The {@link android.media.ExifInterface} includes new fields for photo aperture, ISO, and exposure
 time.</p></li>
 
@@ -810,7 +810,7 @@
 events by calling {@code window.addEventListener} with event type {@code "deviceorientation"}
 and register for motion events by registering the {@code "devicemotion"} event type.</p>
   </li>
-  
+
   <li><b>CSS 3D Transforms</b>
     <p>As defined by the <a href="http://www.w3.org/TR/css3-3d-transforms/">CSS 3D Transform
 Module</a> specification, the Browser allows elements rendered by CSS to be transformed in three
@@ -967,7 +967,7 @@
 
 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
 you need compile the application against the Android library that is provided in
-the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 
+the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might
 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
 manifest. If your application is designed to run only on Android 2.3 and higher,
diff --git a/docs/html/about/versions/android-3.1-highlights.jd b/docs/html/about/versions/android-3.1-highlights.jd
index 5283c2a..2a70698 100644
--- a/docs/html/about/versions/android-3.1-highlights.jd
+++ b/docs/html/about/versions/android-3.1-highlights.jd
@@ -93,7 +93,7 @@
 <p>The platform also adds new support for USB accessories &mdash; external
 hardware devices designed to attach to Android-powered devices as USB hosts. When an
 accessory is attached, the framework will look for a corresponding application
-and offer to launch it for the user.  The accessory can also present a URL 
+and offer to launch it for the user.  The accessory can also present a URL
 to the user, for downloading an appropriate application if one is not already
 installed.  Users can interact with the application to control powered accessories such
 as robotics controllers; docking stations; diagnostic and musical equipment;
@@ -215,7 +215,7 @@
 
 <div  style="padding-top:0em;">
 <div style="margin-right:1em;float:left;margin-left:0em;"><img src="{@docRoot}sdk/images/3.1/resizeable.png" alt="" width="170"  target="_android" style="margin-bottom:0;" />
-<div style="padding-left:1.4em;padding-bottom:1em;width:180px;font-size:.9em"><strong>Figure 
+<div style="padding-left:1.4em;padding-bottom:1em;width:180px;font-size:.9em"><strong>Figure
 4.</strong> Home screen widgets can now be resized.</div></div>
 
 <p><strong>Calendar</strong></p>
diff --git a/docs/html/about/versions/android-3.1.jd b/docs/html/about/versions/android-3.1.jd
index cdcf51e..e1486be 100644
--- a/docs/html/about/versions/android-3.1.jd
+++ b/docs/html/about/versions/android-3.1.jd
@@ -240,7 +240,7 @@
 android.view.MotionEvent#AXIS_HAT_Y}, {@link
 android.view.MotionEvent#AXIS_RTRIGGER}, {@link
 android.view.MotionEvent#AXIS_ORIENTATION}, {@link
-android.view.MotionEvent#AXIS_THROTTLE}, and many others. 
+android.view.MotionEvent#AXIS_THROTTLE}, and many others.
 Existing {@link android.view.MotionEvent} axes are represented by {@link
 android.view.MotionEvent#AXIS_X}, {@link android.view.MotionEvent#AXIS_Y},
 {@link android.view.MotionEvent#AXIS_PRESSURE}, {@link
@@ -299,7 +299,7 @@
 <p>Finally, since the motion events from joysticks, gamepads, mice, and
 trackballs are not touch events, the platform adds a new callback method for
 passing them to a {@link android.view.View} as "generic" motion events.
-Specifically, it reports the non-touch motion events to 
+Specifically, it reports the non-touch motion events to
 {@link android.view.View}s through a call to {@link
 android.view.View#onGenericMotionEvent(android.view.MotionEvent)
 onGenericMotionEvent()}, rather than to {@link
@@ -318,7 +318,7 @@
 
 <p class="note">To look at a sample application that uses joystick motion
 events, see <a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html">GameControllerInput</a> 
+href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html">GameControllerInput</a>
 and <a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/GameView.html">GameView</a>.</p>
 
diff --git a/docs/html/about/versions/android-3.2.jd b/docs/html/about/versions/android-3.2.jd
index 887755c..c6df7f5 100644
--- a/docs/html/about/versions/android-3.2.jd
+++ b/docs/html/about/versions/android-3.2.jd
@@ -132,7 +132,7 @@
 
 <ul>
 <li>New resource qualifiers for targeting layouts and other resources to a
-minimum smallestWidth, width, or height, and</li> 
+minimum smallestWidth, width, or height, and</li>
 <li>New manifest attributes, for specifying the app's maximum
 screen compatibility range</li>
 </ul>
@@ -201,7 +201,7 @@
 screen's smallestWidth is constant, regardless of orientation. Examples:
 <code>sw320dp</code>, <code>sw720dp</code>, <code>sw720dp</code>.</li>
 
-<li><code>wNNNdp</code> and <code>hNNNdp</code> &mdash; Specifies the minimum 
+<li><code>wNNNdp</code> and <code>hNNNdp</code> &mdash; Specifies the minimum
 width or height on which the resource should be used, measured in "dp" units. As
 mentioned above, a screen's width and height are relative to the orientation of
 the screen and change whenever the orientation changes. Examples:
@@ -214,7 +214,7 @@
 multiple resource configurations are qualified for a given screen, the system
 selects the configuration that is the closest match. For precise control over
 which resources are loaded on a given screen, you can tag resources with one
-qualifier or combine several new or existing qualifiers. 
+qualifier or combine several new or existing qualifiers.
 
 <p>Based on the typical dimensions listed earlier, here are some examples of how
 you could use the new qualifiers:</p>
diff --git a/docs/html/about/versions/android-4.0.3.jd b/docs/html/about/versions/android-4.0.3.jd
index 3be684d..bcfa35c 100644
--- a/docs/html/about/versions/android-4.0.3.jd
+++ b/docs/html/about/versions/android-4.0.3.jd
@@ -102,16 +102,16 @@
 <li>Adds the class {@link android.provider.CalendarContract.Colors} to represent
 a color table in the <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Calendar
 Provider</a>. The class provides fields for accessing
-colors available for a given account. Colors are referenced by 
+colors available for a given account. Colors are referenced by
 {@link android.provider.CalendarContract.ColorsColumns#COLOR_KEY COLOR_KEY}
 which must be unique for a given account name/type. These values can only be
 updated by the sync adapter.</li>
 <li>Adds {@link android.provider.CalendarContract.CalendarColumns#ALLOWED_AVAILABILITY ALLOWED_AVAILABILITY}
-and 
+and
 {@link android.provider.CalendarContract.CalendarColumns#ALLOWED_ATTENDEE_TYPES ALLOWED_ATTENDEE_TYPES}
 for exchange/sync support.</li>
 <li>Adds {@link android.provider.CalendarContract.AttendeesColumns#TYPE_RESOURCE}
-(such as conference rooms) for attendees and 
+(such as conference rooms) for attendees and
 {@link android.provider.CalendarContract.EventsColumns#AVAILABILITY_TENTATIVE},
 as well as {@link android.provider.CalendarContract.EventsColumns#EVENT_COLOR_KEY}
 for events.</li>
@@ -123,7 +123,7 @@
 own padding. Instead, the system now automatically adds padding for each widget,
 based the characteristics of the current screen. This leads to a more uniform,
 consistent presentation of widgets in a grid. To assist applications that host
-home screen widgets, the platform provides a new method 
+home screen widgets, the platform provides a new method
 {@link android.appwidget.AppWidgetHostView#getDefaultPaddingForWidget(android.content.Context, android.content.ComponentName, android.graphics.Rect)
 getDefaultPaddingForWidget()}. Applications can call this method to get the
 system-defined padding and account for it when computing the number of cells to
@@ -136,7 +136,7 @@
 android.view.textservice.SpellCheckerSession#cancel() cancel()} method cancels
 any pending and running spell-checker tasks in a session.</li>
 
-<li>For spell-checker services, a new suggestions flag, 
+<li>For spell-checker services, a new suggestions flag,
 {@link android.view.textservice.SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS},
 lets the services distinguish higher-confidence suggestions from
 lower-confidence ones. For example, a spell-checker could set the flag if an
@@ -206,8 +206,8 @@
 allow apps to get and set the maximum scroll offset for an
 {@link android.view.accessibility.AccessibilityRecord} object.</li>
 
-<li>When touch-exploration mode is enabled, a new secure setting 
-{@link android.provider.Settings.Secure#ACCESSIBILITY_SPEAK_PASSWORD} 
+<li>When touch-exploration mode is enabled, a new secure setting
+{@link android.provider.Settings.Secure#ACCESSIBILITY_SPEAK_PASSWORD}
 indicates whether the user requests the IME to speak text entered in password fields, even when
 a headset is not in use. By default, no password text is spoken unless a headset
 is in use.</li>
diff --git a/docs/html/about/versions/android-4.0.jd b/docs/html/about/versions/android-4.0.jd
index 4318582..48afcd4 100644
--- a/docs/html/about/versions/android-4.0.jd
+++ b/docs/html/about/versions/android-4.0.jd
@@ -99,7 +99,7 @@
 <h4>User Profile</h4>
 
 <p>Android now includes a personal profile that represents the device owner, as defined by the
-{@link android.provider.ContactsContract.Profile} table.  Social apps that maintain a user identity 
+{@link android.provider.ContactsContract.Profile} table.  Social apps that maintain a user identity
 can contribute to the user's profile data by creating a new {@link
 android.provider.ContactsContract.RawContacts} entry within the {@link
 android.provider.ContactsContract.Profile}. That is, raw contacts that represent the device user do
@@ -210,7 +210,7 @@
 them when their related events are deleted.</li>
 </ul>
 
-<p>To access a user’s calendar data with the Calendar Provider, your application must request 
+<p>To access a user’s calendar data with the Calendar Provider, your application must request
 the {@link android.Manifest.permission#READ_CALENDAR} permission (for read access) and
 {@link android.Manifest.permission#WRITE_CALENDAR} (for write access).</p>
 
@@ -850,7 +850,7 @@
 event).</li>
 
 <li>From either {@link android.view.accessibility.AccessibilityEvent} or an individual {@link
-android.view.accessibility.AccessibilityRecord}, you can call {@link 
+android.view.accessibility.AccessibilityRecord}, you can call {@link
 android.view.accessibility.AccessibilityRecord#getSource() getSource()} to retrieve a {@link
 android.view.accessibility.AccessibilityNodeInfo} object.
   <p>An {@link android.view.accessibility.AccessibilityNodeInfo} represents a single node
diff --git a/docs/html/about/versions/android-4.1.jd b/docs/html/about/versions/android-4.1.jd
index 4131c36..4d7cb85 100644
--- a/docs/html/about/versions/android-4.1.jd
+++ b/docs/html/about/versions/android-4.1.jd
@@ -103,8 +103,8 @@
 
 
 <div class="sidebox-wrapper">
-<div class="sidebox">  
-  
+<div class="sidebox">
+
 <h3 id="ApiLevel">Declare your app API Level</h3>
 
 <p>To better optimize your app for devices running Android {@sdkPlatformVersion},
@@ -117,7 +117,7 @@
 can use APIs in Android {@sdkPlatformVersion} 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>. 
+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/backward-compatible-ui/index.html">Creating Backward-Compatible
@@ -148,15 +148,15 @@
 
 <h3 id="Isolated">Isolated services</h3>
 
-<p>By specifying <a href="{@docRoot}guide/topics/manifest/service-element.html#isolated">{@code android:isolatedProcess="true"}</a> in the 
+<p>By specifying <a href="{@docRoot}guide/topics/manifest/service-element.html#isolated">{@code android:isolatedProcess="true"}</a> in the
 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code <service>}</a> tag, your {@link android.app.Service} will run under
 its own isolated user ID process that has no permissions of its own.</p>
 
 
 <h3 id="Memory">Memory management</h3>
 
-<p>New {@link android.content.ComponentCallbacks2} constants such as {@link 
-android.content.ComponentCallbacks2#TRIM_MEMORY_RUNNING_LOW} and {@link 
+<p>New {@link android.content.ComponentCallbacks2} constants such as {@link
+android.content.ComponentCallbacks2#TRIM_MEMORY_RUNNING_LOW} and {@link
 android.content.ComponentCallbacks2#TRIM_MEMORY_RUNNING_CRITICAL} provide foreground
 processes more information about
 memory state before the system calls {@link android.app.Activity#onLowMemory()}.</p>
@@ -178,7 +178,7 @@
 <h3 id="LiveWallpapers">Live Wallpapers</h3>
 
 <p>New intent protocol to directly launch the live wallpaper preview activity so you can help
-  users easily select your live wallpaper without forcing them to leave 
+  users easily select your live wallpaper without forcing them to leave
 your app and navigate through the Home wallpaper picker.</p>
 
 <p>To launch the live wallpaper picker, call {@link android.content.Context#startActivity
@@ -207,7 +207,7 @@
 
 <p>This is particularly powerful for scenarios in which the user enters one of your app's activities
 through a "deep dive" intent such as from a notification or an intent from
-different app (as described in the design guide for <a 
+different app (as described in the design guide for <a
 href="{@docRoot}design/patterns/navigation.html#between-apps">Navigating Between Apps</a>). When
 the user enters your activity this way, your app may not naturally have a back stack of
 activities that can be resumed as the user navigates up. However, when you supply the <a
@@ -216,12 +216,12 @@
  whether or not your app already contains a back stack of parent activities and, if not, constructs
 a synthetic back stack that contains all parent activities.</p>
 
-<p class="note"><strong>Note:</strong> When the user enters a deep activity in your app and 
-  it creates a new task for your app, the system actually inserts the stack of parent activities 
+<p class="note"><strong>Note:</strong> When the user enters a deep activity in your app and
+  it creates a new task for your app, the system actually inserts the stack of parent activities
   into the task. As such, pressing the Back button also navigates back through the stack of parent
   activities.</p>
 
-<p>When the system creates a synthetic back stack for your app, it builds a basic {@link 
+<p>When the system creates a synthetic back stack for your app, it builds a basic {@link
   android.content.Intent} to create a new instance of each parent activity. So there's no
   saved state for the parent activities the way you'd expect had the user naturally navigated
 through
@@ -251,9 +251,9 @@
 the length of the array with {@link android.app.TaskStackBuilder#getIntentCount()} and pass that
 value to {@link android.app.TaskStackBuilder#editIntentAt editIntentAt()}.</p>
 
-<p>If your app structure is more complex, there are several other APIs 
+<p>If your app structure is more complex, there are several other APIs
   available that allow you to handle the behavior of Up navigation and
-  fully customize the synthetic back stack. Some of the APIs that give you additional 
+  fully customize the synthetic back stack. Some of the APIs that give you additional
   control include:</p>
 <dl>
   <dt>{@link android.app.Activity#onNavigateUp}</dt>
@@ -342,7 +342,7 @@
 <!--
 <h3 id="Routing">Media routing</h3>
 
-<p>The new {@link android.media.MediaRouter} class allows you to route media channels and 
+<p>The new {@link android.media.MediaRouter} class allows you to route media channels and
   streams from the current device to external speakers and other devices. You
 can acquire an instance of {@link android.media.MediaRouter} by calling {@link
 android.content.Context#getSystemService getSystemService(}{@link
@@ -354,7 +354,7 @@
 
 <p>New method {@link android.media.AudioRecord#startRecording startRecording()} allows
 you to begin audio recording based on a cue defined by a {@link android.media.MediaSyncEvent}.
-The {@link android.media.MediaSyncEvent} specifies an audio session 
+The {@link android.media.MediaSyncEvent} specifies an audio session
 (such as one defined by {@link android.media.MediaPlayer}), which when complete, triggers
 the audio recorder to begin recording. For example, you can use this functionality to
 play an audio tone that indicates the beginning of a recording session and recording
@@ -423,7 +423,7 @@
 for changes to the auto focus movement. You can register your interface with {@link
 android.hardware.Camera#setAutoFocusMoveCallback setAutoFocusMoveCallback()}. Then when the camera
 is in a continuous autofocus mode ({@link
-android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO} or 
+android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO} or
 {@link android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_PICTURE}), you'll receive a call
 to {@link android.hardware.Camera.AutoFocusMoveCallback#onAutoFocusMoving onAutoFocusMoving()},
 which tells you whether auto focus has started moving or has stopped moving.</p>
@@ -434,7 +434,7 @@
 standard sounds made by the camera or other media actions. You should use these APIs to play
 the appropriate sound when building a custom still or video camera.</p>
 
-<p>To play a sound, simply instantiate a {@link android.media.MediaActionSound} object, call 
+<p>To play a sound, simply instantiate a {@link android.media.MediaActionSound} object, call
 {@link android.media.MediaActionSound#load load()} to pre-load the desired sound, then at the
 appropriate time, call {@link android.media.MediaActionSound#play play()}.</p>
 
@@ -483,7 +483,7 @@
 
 <p>To register your service, you must first create an {@link android.net.nsd.NsdServiceInfo}
   object and define the various properties of your service with methods such as
-  {@link android.net.nsd.NsdServiceInfo#setServiceName setServiceName()}, 
+  {@link android.net.nsd.NsdServiceInfo#setServiceName setServiceName()},
   {@link android.net.nsd.NsdServiceInfo#setServiceType setServiceType()}, and
   {@link android.net.nsd.NsdServiceInfo#setPort setPort()}.
 </p>
@@ -498,7 +498,7 @@
 
 <p>When your {@link
   android.net.nsd.NsdManager.DiscoveryListener} receives callbacks about services
-found, you need to resolve the service by calling 
+found, you need to resolve the service by calling
 {@link android.net.nsd.NsdManager#resolveService resolveService()}, passing it an
 implementation of {@link android.net.nsd.NsdManager.ResolveListener} that receives
 an {@link android.net.nsd.NsdServiceInfo} object that contains information about the
@@ -515,13 +515,13 @@
 network).</p>
 
 <p>To broadcast your app as a service over Wi-Fi so that other devices can discover
-  your app and connect to it, call {@link 
+  your app and connect to it, call {@link
   android.net.wifi.p2p.WifiP2pManager#addLocalService addLocalService()} with a
   {@link android.net.wifi.p2p.nsd.WifiP2pServiceInfo} object that describes your app services.</p>
 
 <p>To initiate discover of nearby devices over Wi-Fi, you need to first decide whether you'll
   communicate using Bonjour or Upnp. To use Bonjour, first set up some callback listeners with
-  {@link android.net.wifi.p2p.WifiP2pManager#setDnsSdResponseListeners setDnsSdResponseListeners()}, which takes both a {@link android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener} and {@link android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener}. To use Upnp, call 
+  {@link android.net.wifi.p2p.WifiP2pManager#setDnsSdResponseListeners setDnsSdResponseListeners()}, which takes both a {@link android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener} and {@link android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener}. To use Upnp, call
   {@link android.net.wifi.p2p.WifiP2pManager#setUpnpServiceResponseListener setUpnpServiceResponseListener()}, which takes a {@link android.net.wifi.p2p.WifiP2pManager.UpnpServiceResponseListener}.</p>
 
 <p>Before you can start discovering services on local devices, you also need to call {@link android.net.wifi.p2p.WifiP2pManager#addServiceRequest addServiceRequest()}. When the {@link android.net.wifi.p2p.WifiP2pManager.ActionListener} you pass to this method receives a
@@ -644,7 +644,7 @@
 <h3 id="ActivityOptions">Activity launch animations</h3>
 
 <p>You can now launch an {@link android.app.Activity} using zoom animations or
-your own custom animations. To specify the animation you want, use the {@link 
+your own custom animations. To specify the animation you want, use the {@link
 android.app.ActivityOptions} APIs to build a {@link android.os.Bundle} that you can
 then pass to any of the
 methods that start an activity, such as {@link
@@ -659,8 +659,8 @@
   Android 4.1 uses this when opening an app.</dd>
   <dt>{@link android.app.ActivityOptions#makeThumbnailScaleUpAnimation
     makeThumbnailScaleUpAnimation()}</dt>
-    <dd>Creates an animation that scales up the activity window starting from a specified 
-      position and a provided thumbnail image. For example, the Recent Apps window in 
+    <dd>Creates an animation that scales up the activity window starting from a specified
+      position and a provided thumbnail image. For example, the Recent Apps window in
       Android 4.1 uses this when returning to an app.</dd>
   <dt>{@link android.app.ActivityOptions#makeCustomAnimation
     makeCustomAnimation()}</dt>
@@ -672,7 +672,7 @@
 
 <h3 id="TimeAnimator">Time animator</h3>
 
-<p>The new {@link android.animation.TimeAnimator} provides a simple callback 
+<p>The new {@link android.animation.TimeAnimator} provides a simple callback
   mechanism with the {@link android.animation.TimeAnimator.TimeListener} that notifies
   you upon every frame of the animation. There is no duration, interpolation, or object value-setting with this Animator. The listener's callback receives information for each frame including
   total elapsed time and the elapsed time since the previous animation frame.</p>
@@ -692,7 +692,7 @@
 
 <p>The new method {@link android.app.Notification.Builder#setStyle setStyle()} allows you to specify
   one of three new styles for your notification that each offer a larger content region. To
-specify the style for your large content region, pass {@link 
+specify the style for your large content region, pass {@link
 android.app.Notification.Builder#setStyle setStyle()} one of the following objects:</p>
 <dl>
   <dt>{@link android.app.Notification.BigPictureStyle}</dt>
@@ -720,7 +720,7 @@
   order of your notification in the list by setting
 the priority with {@link android.app.Notification.Builder#setPriority setPriority()}. You
 can pass this one of five different priority levels defined by {@code PRIORITY_*} constants
-in the {@link android.app.Notification} class. The default is {@link 
+in the {@link android.app.Notification} class. The default is {@link
 android.app.Notification#PRIORITY_DEFAULT}, and there's two levels higher and two levels lower.</p>
 
 <p>High priority notifications are things that users generally want to respond to quickly,
@@ -738,17 +738,17 @@
 
 <dl>
   <dt>{@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN}</dt>
-    <dd>Hides non-critical system UI (such as the status bar). 
+    <dd>Hides non-critical system UI (such as the status bar).
       If your activity uses the action bar in overlay mode (by
       enabling <a href="{@docRoot}reference/android/R.attr.html#windowActionBarOverlay">{@code
       android:windowActionBarOverlay}</a>), then this flag also hides the action bar and does
       so with a coordinated animation when both hiding and showing the two.</dd>
-  
+
   <dt>{@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN}</dt>
     <dd>Sets your activity layout to use the same screen area that's available when you've
     enabled {@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN} even if the system UI elements
     are still visible. Although parts of your layout will be overlayed by the
-    system UI, this is useful if your app often hides and shows the system UI with 
+    system UI, this is useful if your app often hides and shows the system UI with
   {@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN}, because it avoids your layout from
   adjusting to the new layout bounds each time the system UI hides or appears.</dd>
 
@@ -779,7 +779,7 @@
 
 <h3 id="RemoteViews">Remote views</h3>
 
-<p>{@link android.widget.GridLayout} and {@link android.view.ViewStub} 
+<p>{@link android.widget.GridLayout} and {@link android.view.ViewStub}
   are now remotable views so you can use them in layouts for your
   app widgets and notification custom layouts.</p>
 
@@ -787,7 +787,7 @@
 
 <h3 id="Fonts">Font families</h3>
 
-<p>Android 4.1 adds several more variants of the Roboto font style for a total of 10 variants, 
+<p>Android 4.1 adds several more variants of the Roboto font style for a total of 10 variants,
   and they're all usable by apps. Your apps now have access to the full set of both light and
 condensed variants.</p>
 
@@ -820,14 +820,14 @@
 {@code "bold"} and {@code "italic"}. You can apply both like so: {@code
 android:textStyle="bold|italic"}.</p>
 
-<p>You can also use {@link android.graphics.Typeface#create Typeface.create()}. 
+<p>You can also use {@link android.graphics.Typeface#create Typeface.create()}.
   For example, {@code Typeface.create("sans-serif-light", Typeface.NORMAL)}.</p>
 
 
 
 
 
-    
+
 <h2 id="Input">Input Framework</h2>
 
 
@@ -864,7 +864,7 @@
 
 <dl>
   <dt>{@link android.Manifest.permission#READ_EXTERNAL_STORAGE}</dt>
-  <dd>Provides protected read access to external storage.  In Android 4.1 by 
+  <dd>Provides protected read access to external storage.  In Android 4.1 by
     default all applications still have read
 access.  This will be changed in a future release to require that applications explicitly request
 read access using this permission.  If your application already requests write access, it will
@@ -898,9 +898,9 @@
 &lt;/manifest&gt;
 </pre>
 
-<p>This feature defines "television" to be a typical living room television experience: 
-  displayed on a big screen, where the user is sitting far away and the dominant form of 
-  input is be something like a d-pad, and generally not through touch or a 
+<p>This feature defines "television" to be a typical living room television experience:
+  displayed on a big screen, where the user is sitting far away and the dominant form of
+  input is be something like a d-pad, and generally not through touch or a
   mouse/pointer-device.</p>
 
 
diff --git a/docs/html/about/versions/android-4.2.jd b/docs/html/about/versions/android-4.2.jd
index c26d4a2..34fa1d4 100755
--- a/docs/html/about/versions/android-4.2.jd
+++ b/docs/html/about/versions/android-4.2.jd
@@ -6,7 +6,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
 <h2>In this document</h2>
 <ol>
   <li><a href="#Behaviors">Important Behavior Changes</a></li>
@@ -46,8 +46,8 @@
 
 
 <div class="sidebox-wrapper">
-<div class="sidebox">  
-  
+<div class="sidebox">
+
 <h3 id="ApiLevel">Declare your app API Level</h3>
 
 <p>To better optimize your app for devices running Android {@sdkPlatformVersion},
@@ -60,7 +60,7 @@
 can use APIs in Android {@sdkPlatformVersion} 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>. 
+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/backward-compatible-ui/index.html">Creating Backward-Compatible
@@ -94,7 +94,7 @@
 android:minSdkVersion}</a> to 17 or higher. Otherwise, the default value is still {@code “true"}
 even when running on Android 4.2 and higher.</p>
   </li>
-  
+
   <li>Compared to previous versions of Android, <b>user location</b> results may be less accurate
 if your app requests the {@link android.Manifest.permission#ACCESS_COARSE_LOCATION} permission but
 does not request the {@link android.Manifest.permission#ACCESS_FINE_LOCATION} permission.
@@ -102,7 +102,7 @@
 coarse location (and not fine location), the system will not provide a user location estimate
 that’s more accurate than a city block.</p>
   </li>
-  
+
   <li>Some <b>device settings</b> defined by {@link android.provider.Settings.System} are now
   read-only. If your app attempts to write changes to settings defined in {@link
   android.provider.Settings.System} that have moved to {@link android.provider.Settings.Global},
@@ -410,7 +410,7 @@
 
 <ol>
   <li>Convert left- and right-oriented layout properties to start- and end-oriented layout
-properties.   
+properties.
     <p>For example, use {@link android.R.attr#layout_marginStart android:layout_marginStart}
 in place of {@code android:layout_marginLeft} and {@link android.R.attr#layout_marginEnd
 android:layout_marginEnd} in place of  {@code android:layout_marginRight}.
@@ -526,7 +526,7 @@
 scripts by calling {@link android.renderscript.ScriptGroup.Builder#addConnection addConnection()}.
 When you are done adding the connections, call {@link android.renderscript.ScriptGroup.Builder#create create()}
 to create the script group. Before executing the script group, specify the input
-{@link android.renderscript.Allocation} and initial script to run with the 
+{@link android.renderscript.Allocation} and initial script to run with the
 {@link android.renderscript.ScriptGroup#setInput} method and provide the output
 {@link android.renderscript.Allocation} where the result will be written to and final script to
 run with {@link android.renderscript.ScriptGroup#setOutput setOutput()}. Finally, call
diff --git a/docs/html/about/versions/android-4.4.jd b/docs/html/about/versions/android-4.4.jd
index b898fe3..cbc8e6e 100644
--- a/docs/html/about/versions/android-4.4.jd
+++ b/docs/html/about/versions/android-4.4.jd
@@ -318,7 +318,7 @@
 
 <h3 id="Ratings">Ratings from remote controllers</h3>
 
-<p>Android 4.4 builds upon the existing capabilities for remote control clients (apps that receive media control events with the {@link android.media.RemoteControlClient}) by adding the ability for users to rate the current track from the remote controller.</p> 
+<p>Android 4.4 builds upon the existing capabilities for remote control clients (apps that receive media control events with the {@link android.media.RemoteControlClient}) by adding the ability for users to rate the current track from the remote controller.</p>
 
 <p>The new {@link android.media.Rating} class encapsulates information about a user rating. A rating is defined by its rating style (either {@link android.media.Rating#RATING_HEART}, {@link android.media.Rating#RATING_THUMB_UP_DOWN}, {@link android.media.Rating#RATING_3_STARS}, {@link android.media.Rating#RATING_4_STARS}, {@link android.media.Rating#RATING_5_STARS} or {@link android.media.Rating#RATING_PERCENTAGE}) and the rating value that's appropriate for that style.</p>
 
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index 25f88e3..82cac2b 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -21,13 +21,13 @@
     link = $("#title-tabs a[href$="+sectionId+"]");
     link.parent().addClass("selected");
     link.parent().siblings().removeClass("selected");
-    
+
     sectionDiv = $(".version-section"+link.attr("href"));
     if (sectionDiv.length) {
       $(".version-section").hide();
       sectionDiv.show();
     }
-    
+
     $('html, body').animate({
          scrollTop: $(hashy).offset().top
      }, 100);
@@ -672,7 +672,7 @@
 <div style="float:left;margin:16px 24px 12px 0px;">
 <a href="" target="_android">
 <img src="{@docRoot}images/jb-nexus10-1.png" alt="10-inch tablet running Android 4.2" width="380" height="281" /></a>
-</div> 
+</div>
 
 <h2 id="42-ui" style="margin-top:2em;">Refined, refreshed UI</h2>
 
@@ -902,7 +902,7 @@
 appropriate.</p>
 
 <p>For precise control over your app UI, Android 4.2 includes new APIs that let
-you manage layout direction, text direction, text alignment, gravity, and 
+you manage layout direction, text direction, text alignment, gravity, and
 locale direction in View components. You can even create custom versions of
 layout, drawables, and other resources for display when a right-to-left script
 is in use.</p>
@@ -1005,7 +1005,7 @@
 <p>Filterscript is ideal for hardware-accelerating simple image-processing and
 computation operations such as those that might be written for OpenGL ES
 fragment shaders. Because it places a relaxed set of constraints on hardware,
-your operations are optimized and accelerated on more types of device chipsets. 
+your operations are optimized and accelerated on more types of device chipsets.
 Any app targeting API level 17 or higher can make use of Filterscript.</p>
 
 <h3 id="42-rs-intrinsics">Script intrinsics</h3>
@@ -1028,7 +1028,7 @@
 <div style="float:right;padding-top:1em;width:400px;margin-left:2em;">
 <img src="{@docRoot}images/jb-rs-chart-versions.png" alt="Renderscipt optimizations chart" width="360" height="252"
 style="border:1px solid #ddd;border-radius: 6px;" />
-<p style="image-caption">Renderscript image-processing 
+<p style="image-caption">Renderscript image-processing
 benchmarks run on different Android platform versions (Android 4.0, 4.1, and 4.2)
 in CPU only on a Galaxy Nexus device.</p>
 <img src="{@docRoot}images/jb-rs-chart-gpu.png" style="border:1px solid #ddd;border-radius: 6px; alt="" width="360" height="252" />
@@ -1143,7 +1143,7 @@
 certificates.  This protects against possible compromise of Certificate
 Authorities.</li>
 <li><strong>Improved display of Android permissions</strong> &mdash; Permissions
-have been organized into groups that are more easily understood by users. 
+have been organized into groups that are more easily understood by users.
 During review of the permissions, the user can click on the permission to see
 more detailed information about the permission.</li>
 <li><strong>installd hardening</strong> &mdash; The installd daemon does not run
@@ -1196,7 +1196,7 @@
 Android 4.2 introduces support for controllers based on the NCI standard from
 the NFC-Forum. NCI provides a standard communication protocol between an NFC
 Controller (NFCC) and a device Host, and the new NFC stack developed in
-collaboration between Google and Broadcom supports it.  
+collaboration between Google and Broadcom supports it.
 
 <h3 id="42-dalvik">Dalvik runtime optimizations</h3>
 
@@ -1248,7 +1248,7 @@
 </div>
 <p>Welcome to Android 4.1 the first version of Jelly Bean!</p>
 
-<p>Android 4.1 is the fastest and smoothest version of Android yet. We’ve made 
+<p>Android 4.1 is the fastest and smoothest version of Android yet. We’ve made
 improvements throughout the platform and added great new features
 for users and developers. This document provides a glimpse of what's new for developers.
 
@@ -1552,7 +1552,7 @@
 
 <h3 id="gps">Google Play services</h3>
 
-<p>Google Play services helps developers to <strong>integrate Google services</strong> such as authentication and Google+ into their apps delivered through Google Play.</p> 
+<p>Google Play services helps developers to <strong>integrate Google services</strong> such as authentication and Google+ into their apps delivered through Google Play.</p>
 
 <p>Google Play services is automatically provisioned to end user devices by Google Play, so all you need is a <strong>thin client library</strong> in your apps.</p>
 
diff --git a/docs/html/about/versions/kitkat.jd b/docs/html/about/versions/kitkat.jd
index 2987bd4..b73e70d 100644
--- a/docs/html/about/versions/kitkat.jd
+++ b/docs/html/about/versions/kitkat.jd
@@ -13,13 +13,13 @@
     link = $("#title-tabs a[href$="+sectionId+"]");
     link.parent().addClass("selected");
     link.parent().siblings().removeClass("selected");
-    
+
     sectionDiv = $(".version-section"+link.attr("href"));
     if (sectionDiv.length) {
       $(".version-section").hide();
       sectionDiv.show();
     }
-    
+
     $('html, body').animate({
          scrollTop: $(hashy).offset().top
      }, 100);
diff --git a/docs/html/auto/images/logos/auto/borgward.png b/docs/html/auto/images/logos/auto/borgward.png
new file mode 100644
index 0000000..90298d4
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/borgward.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/lada.png b/docs/html/auto/images/logos/auto/lada.png
new file mode 100644
index 0000000..d172460
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/lada.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/lincoln.png b/docs/html/auto/images/logos/auto/lincoln.png
new file mode 100644
index 0000000..0ade9fe
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/lincoln.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/mbenz.png b/docs/html/auto/images/logos/auto/mbenz.png
new file mode 100644
index 0000000..84deacd
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/mbenz.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/opel.png b/docs/html/auto/images/logos/auto/opel.png
index 7e25ed5..fcb7040 100644
--- a/docs/html/auto/images/logos/auto/opel.png
+++ b/docs/html/auto/images/logos/auto/opel.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/renault.png b/docs/html/auto/images/logos/auto/renault.png
index d252aa3..2970430 100644
--- a/docs/html/auto/images/logos/auto/renault.png
+++ b/docs/html/auto/images/logos/auto/renault.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/rsm.png b/docs/html/auto/images/logos/auto/rsm.png
new file mode 100644
index 0000000..fa0e56a
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/rsm.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/tata.png b/docs/html/auto/images/logos/auto/tata.png
new file mode 100644
index 0000000..dfc4a5f
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/tata.png
Binary files differ
diff --git a/docs/html/auto/index.jd b/docs/html/auto/index.jd
index 843aabf..167ed7b 100644
--- a/docs/html/auto/index.jd
+++ b/docs/html/auto/index.jd
@@ -372,6 +372,12 @@
               </a>
             </div>
             <div class="col-5">
+              <a href="http://www.borgward.com/en/">
+                  <img src="{@docRoot}auto/images/logos/auto/borgward.png"
+                      width="120" height="120" class="img-logo" />
+              </a>
+            </div>
+            <div class="col-5">
               <a href="http://www.buick.com/">
                   <img src="{@docRoot}auto/images/logos/auto/buick.png"
                       width="120" height="120" class="img-logo" />
@@ -383,15 +389,15 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+          </div>
+
+          <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.chevrolet.com/">
                   <img src="{@docRoot}auto/images/logos/auto/chevrolet.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
-
-          <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.chrysler.com/">
                   <img src="{@docRoot}auto/images/logos/auto/chrysler.png"
@@ -410,15 +416,15 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+          </div>
+
+          <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.driveds.com/">
                   <img src="{@docRoot}auto/images/logos/auto/citroen_ds.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
-
-          <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.fiat.com/">
                   <img src="{@docRoot}auto/images/logos/auto/fiat.png"
@@ -437,23 +443,20 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-
-            <div class="col-5">
-              <a href="http://www.gmc.com/">
+          </div>
+            <div class="cols cols-leftp">
+              <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">
+                </a>
+              </div>
             <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 class="col-5">
               <a href="http://www.honda.com/">
                   <img src="{@docRoot}auto/images/logos/auto/honda.png"
@@ -466,165 +469,197 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-            <div class="col-5">
-              <a href="http://www.infiniti.com/">
+          </div>
+            <div class="cols cols-leftp">
+              <div class="col-5">
+                <a href="http://www.infiniti.com/">
                   <img src="{@docRoot}auto/images/logos/auto/infinity.png"
                       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">
+                </a>
+              </div>
+              <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/">
+                </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>
+                </a>
+              </div>
 
-            <div class="col-5">
-              <a href="http://www.kia.com/worldwide/">
+              <div class="col-5">
+                <a href="http://www.kia.com/worldwide/">
                   <img src="{@docRoot}auto/images/logos/auto/kia.png"
                       width="120" height="120" class="img-logo" />
-              </a>
+                </a>
+              </div>
             </div>
-            <div class="col-5">
-              <a href=" http://www.lamborghini.com/">
+            <div class="cols cols-leftp">
+              <div class="col-5">
+                <a href="  http://www.lada.ru/en/">
+                  <img src="{@docRoot}auto/images/logos/auto/lada.png"
+                      width="120" height="120" class="img-logo" />
+                </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/">
+                </a>
+              </div>
+              <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>
+                </a>
+              </div>
+              <div class="col-5">
+                <a href=" http://www.lincoln.com/">
+                  <img src="{@docRoot}auto/images/logos/auto/lincoln.png"
+                    width="120" height="120" class="img-logo" />
+                </a>
+              </div>
             </div>
-
-            <div class="col-5">
-              <a href="http://www.mahindra.com/">
+            <div class="cols cols-leftp">
+              <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" />
-              </a>
-            </div>
-            <div class="col-5">
-              <a href="http://www.maserati.com/">
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.maserati.com/">
                   <img src="{@docRoot}auto/images/logos/auto/maserati.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            <div class="col-5">
-              <a href="http://www.mazda.com/">
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.mazda.com/">
                   <img src="{@docRoot}auto/images/logos/auto/mazda.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            </div>
+                </a>
+              </div>
 
-              <div class="cols cols-leftp">
               <div class="col-5">
-              <a href="http://www.mitsubishi-motors.com/">
+                <a href="http://www.mercedes-benz.com/">
+                  <img src="{@docRoot}auto/images/logos/auto/mbenz.png"
+                      width="120" height="120" class="img-logo" />
+                </a>
+              </div>
+          </div>
+            <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/">
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.nissan-global.com/">
                   <img src="{@docRoot}auto/images/logos/auto/nissan.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            <div class="col-5">
-              <a href="http://www.opel.com/">
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.opel.com/">
                   <img src="{@docRoot}auto/images/logos/auto/opel.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            <div class="col-5">
-              <a href="http://www.peugeot.com/">
+                </a>
+              </div>
+
+              <div class="col-5">
+                <a href="http://www.peugeot.com/">
                   <img src="{@docRoot}auto/images/logos/auto/peugeot.png"
                       width="120" height="120" class="img-logo" />
-              </a>
+                </a>
+              </div>
             </div>
-            </div>
+
             <div class="cols cols-leftp">
-            <div class="col-5">
-              <a href="http://www.ramtrucks.com/">
+              <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/">
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.renault.com/">
                   <img src="{@docRoot}auto/images/logos/auto/renault.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            <div class="col-5">
-              <a href="http://www.seat.com/">
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.renaultsamsungm.com/ ">
+                  <img src="{@docRoot}auto/images/logos/auto/rsm.png"
+                      width="120" height="120" class="img-logo" />
+                </a>
+              </div>
+           
+              <div class="col-5">
+                <a href="http://www.seat.com/">
                   <img src="{@docRoot}auto/images/logos/auto/seat.png"
                       width="120" height="120" class="img-logo" />
-              </a>
+                </a>
+              </div>
             </div>
-            <div class="col-5">
-              <a href="http://www.skoda-auto.com/">
+            <div class="cols cols-leftp">
+              <div class="col-5">
+                <a href="http://www.skoda-auto.com/">
                   <img src="{@docRoot}auto/images/logos/auto/skoda.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            </div>
-            <div class="cols cols-leftp">
-            <div class="col-5">
-              <a href="http://www.smotor.com/">
+                </a>
+              </div>
+              <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/">
+                </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>
+                </a>
+              </div>
 
-
-            <div class="col-5">
-              <a href="http://www.globalsuzuki.com/automobile/">
+              <div class="col-5">
+                <a href="http://www.globalsuzuki.com/automobile/">
                   <img src="{@docRoot}auto/images/logos/auto/suzuki.png"
                       width="120" height="120" class="img-logo" />
-              </a>
-            </div>
-            <div class="col-5">
-              <a href="http://www.vauxhall.co.uk/">
-                  <img src="{@docRoot}auto/images/logos/auto/vauxhall.png"
-                      width="120" height="120" class="img-logo" />
-              </a>
-            </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>
+                </a>
+              </div>
             </div>
 
-            <div class="col-5">
-              <a href="http://www.volvocars.com/intl">
+            <div class="cols cols-leftp">
+              <div class="col-5">
+                <a href="http://www.tatamotors.com/">
+                  <img src="{@docRoot}auto/images/logos/auto/tata.png"
+                      width="120" height="120" class="img-logo" />
+                </a>
+              </div>
+              <div class="col-5">
+                <a href="http://www.vauxhall.co.uk/">
+                  <img src="{@docRoot}auto/images/logos/auto/vauxhall.png"
+                      width="120" height="120" class="img-logo" />
+                </a>
+              </div>
+              <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>
+                </a>
+              </div>
             </div>
         </div>
       </div>
diff --git a/docs/html/community/index.html b/docs/html/community/index.html
deleted file mode 100644
index e3834ba..0000000
--- a/docs/html/community/index.html
+++ /dev/null
@@ -1,320 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=device-width" />
-
-<meta name="google-site-verification" content="sa-bIAI6GKvct3f61-WpRguHq-aNjtF7xJjMTSi79as" />
-<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
-<title>Android Developers Community</title>
-
-<!-- STYLESHEETS -->
-<link rel="stylesheet"
-href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
-<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
-
-<!-- JAVASCRIPT -->
-<script src="//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 devsite = false;
-</script>
-
-<script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-5831155-1']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-</script>
-
-<style>
-#header {
-  padding: 2.2em 0 0.2em 0;
-}
-#header-wrap h1 {
-  margin:0;
-  padding:0;
-  line-height:16px;
-}
-#body-content {
-  margin-top:20px;
-}
-#nav-x.wrap {
-  overflow:auto;
-}
-h2 {
-  border-bottom:1px solid #CCC;
-}
-</style>
-</head>
-
-
-
-
-
-
-<body>
-
-
-<!-- Header -->
-<div id="header">
-  <div class="wrap" id="header-wrap">
-    <div class="col-3 logo">
-      <a href="/index.html">
-        <img src="http://developer.android.com/assets/images/dac_logo.png" width="123" height="25" alt="Android Developers" />
-      </a>
-    </div>
-    <div class="col-8">
-      <h1>Community Outreach</h1>
-    </div>
-
-    <div class="menu-container">
-    <div class="moremenu">
-      <div id="more-btn"></div>
-    </div>
-    <div class="morehover" id="moremenu">
-      <div class="top"></div>
-      <div class="mid">
-        <div class="header">Links</div>
-        <ul style="margin-bottom:0">
-          <li><a href="https://www.youtube.com/user/androiddevelopers">Android Developers Live</a></li>
-          <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
-          <li><a href="http://developer.android.com/training/">Android Developer Training</a></li>
-          <li><a href="http://developer.android.com/samples/">Samples</a></li>
-        </ul>
-        <br class="clear-fix">
-    </div>
-      <div class="bottom"></div>
-    </div><!-- end morehover -->
-  </div><!-- end menu-container -->
-  </div><!-- end header-wrap -->
-</div>
-<!-- /Header -->
-
-<div id="nav-x" class="wrap">
-    <ul class="nav-x col-9 develop">
-  <li><a href="#News">News</a></li>
-  <li><a href="#Community">Community</a></li>
-  <li><a href="#Content">Content</a></li>
-  <li><a href="#Social">Social</a></li>
-  </ul>
-</div>
-
-
-<!-- MAIN CONTENT -->
-
-
-<div class="wrap" id="body-content">
-
-<img src="/images/community/aco1small.png" alt="" style="float:right;margin:20px 0 0 40px">
-
-<p style="clear:left">
-  Android is working with communities to 
-<ul>
-<li>Create a cooperative relationship between highly impactful communities and high performing developers</li>
-<li>Strengthen relationships between Android and coding communities so that developers have a motivation to interact with those communities</li>
-<li>Reward communities for attracting developers by providing them with resources and direct access to the Android team</li></ul>
-<p>Our IMPACT is measured by <strong>good apps</strong> and a <strong>thriving community</strong></p>
-
-<h2 id="News" style="clear:left">News</h2>
-<p>Our current theme is on the <b><em>Android 4.4 KitKat and Updated Developer Tools</em></b> release, with new ways to create beautiful apps, printing and storage frameworks, low-power sensors, new media capabilities and RenderScript in the NDK.</p>
-
-<div class="col-8" style="margin-left:0">
-<img src="/images/community/kk-hero2.jpg" alt="" height="277">
-</div>
-
-<div class="col-8" style="margin-right:0">
-<h3 style="margin-top:0"><a href="http://developer.android.com/about/versions/kitkat.html">Android 4.4 Platform Highlights</a></h3>
-<p>Android KitKat brings all of Android's most innovative, most beautiful, and most useful features to more devices everywhere.</p>
-
-<h3><a href="http://developer.android.com/about/versions/android-4.4.html">Android 4.4 APIs</a></h3>
-<p>Android 4.4 (KITKAT) is a new release for the Android platform that offers new features for users and app developers. This document provides an introduction to the most notable new APIs.</p>
-
-<h3><a href="https://play.google.com/store/devices/details?id=nexus_5_white_32gb">New Nexus 5</a></h3>
-<p>Nexus 5 helps you capture the everyday and the epic in fresh new ways. It's the slimmest and fastest Nexus phone ever made, powered by Android 4.4, KitKat.</p>
-</div>
-<p></p>
-
-<h2 id="Community" style="clear:left">Community Spotlight</h2>
-
-<div class="col-8" style="margin-left:0">
-<h3>Android Community Groups</h3>
-<h4>July 2013</h4>
-<p><a href="mailto:gtugam@gmail.com">GDG Armenia</a> held <a href="http://eca.hackathon.am/">ecaHack Yerevan</a>, an Android hackathon featuring &quot;Angry Designers vs Android Developers&quot;, where the designers had a look into developers apps and gave them some advices regarding to design. The hackathon was sponsored by Alcatel One Touch and each member of the winner team got one Alcatel One Touch Idol. Check out the <a href="https://plus.google.com/u/0/events/gallery/cgj9d39gphiephlq0e2899dv6j4?cfem=1">photos.</a></p>
-<h4>September 2013</h4>
-<p><a href="mailto:soham.mondal@gmail.com">GDG Blrdroid</a> held a <a href="http://www.meetup.com/blrdroid/events/140665852/">meetup</a> on performance optimisation.</p>
-<p><a href="mailto:baileye@gmail.com">GDG Dublin</a> held their meetup with a talk on AdMob for Android and iOS, entitled &ldquo;Admob for Android and iOS developers&rdquo;. </p>
-<p>GDG Mbale&rsquo;s <a href="mailto:nsubugahassan@gmail.com">Hassan Nsubuga</a> has been managing a university <a href="https://plus.google.com/103735976334615631393/posts/gQMWCGUhMBn">course session</a> since September. They are now through with the basics and have a firm foundation, so this month they will be doing a lot of advanced stuff including exploring the latest API enhancements with KitKat. </p>
-<p><a href="mailto:wojtek.kalicinski@gmail.com">GDG Warsaw</a> held an Android Barcamp focused on App Quality. The discussion was moderated by GDG organisers, but the talks were given by the community members, including some top Android companies and developers in Poland.</p>
-<h4>October 2013</h4>
-<p><a href="mailto:benjamin.r.m.weiss@gmail.com">GDG Berlin Android</a> held their <a href="https://berlin.ticketbud.com/devfest-berlin-2013">DevFest</a>.</p>
-<p><a href="mailto:soham.mondal@gmail.com">GDG Blrdroid</a> held their <a href="http://www.meetup.com/blrdroid/events/144457162/">meetup</a> in collaboration with GDG Bangalore, where they talked about a wider range of things from incorporating user feedback to effectively using the cell radio. David McLaughlin from the Developer Relations team also visited during the meetup and delivered the keynote. They also hit a milestone with its 4th anniversary on the 9th of October and crossed 4300 members in the past few days so its been a memorable couple of months for them.</p>
-<p><a href="mailto:hir3npatel@gmail.com">GDG Cape Town</a> held an <a href="https://plus.google.com/108309780217630451504/posts/9BTCEqnBHoQ">Android Workshop</a> where they gave away lots of branded KitKats.</p>
-<p><a href="mailto:baileye@gmail.com">GDG Dublin</a> held its DevFest, which featured a codeLab on Android titled &ldquo;Codelab: Intro to Android Development.&rdquo;</p>
-<p><a href="mailto:hugo@dutchaug.org">GDG Dutch Android User Group</a> held their <a href="http://www.devfest.nl/program">DevFest</a>. They had a bunch of Android sessions, mostly by local speakers. In addition to the Android sessions, they also ran a workshop on writing custom views.</p>
-<p><a href="mailto:hugo@dutchaug.org">Hugo Visser</a> from the Dutch Android User Group spoke at <a href="https://bitbucket.org/qbusict/cupboard">DroidCon UK barcamp</a>, where he delivered a talk on Cupboard, a simple and lightweight persistence framework, specifically for Android.</p> 
-<p><a href="mailto:prajyotmainkar@gmail.com">GDG GAUG</a> held the <a href="https://plus.google.com/110448195989468248957/posts/8doJuCpySWS">Google Devfest 2013</a>, where they had two tracks and more than 200 delegates attending. They also had a <a href="https://plus.google.com/110448195989468248957/posts/6rxLzj2Rpde">Hackathon</a> and they hit the <a href="https://plus.google.com/110448195989468248957">1000 member</a> mark this month, which makes them the second largest android community in India after GDG Blrdroid. </p>
-<p><a href="mailto:cyrilleguipie@gmail.com">GDG Miage</a> held their DevFest where they gave a talk about Intents and Services. The also held a startup Weekend Bootcamp where they talked about Activites and Layouts. They will also hold an Android Workshop in December.</p>
-<p><a href="mailto:gabriel.kb@gmail.com">GDG Uruguay</a> had their <a href="http://gdg.uy/devfest2013">DevFest</a>, where they held an Android workshop for beginners as an Android vs iOS comparison, a session on best practices using YouTube APIs in Android, and &nbsp;What's new in Google for developers (with a special section about Android). You can see pictures on <a href="https://plus.google.com/114520966453242230657/posts/dqZAuMqc12Z">the G+ page</a>. </p>
-
-<h4>November 2013</h4>
-<p><a href="mailto:yorogoule@gmail.com">Abidjandroid/GDG Côte d'Ivoire</a> held an Android Launch Party featuring the KitKat release.</p>
-<p>The <a href="mailto:hugo@dutchaug.org">Dutch Android User Group</a> had a very interactive presentation on Android Code Puzzlers and Tips &amp; tricks, where they rewarded participation by giving out books, tshirts, jelly beans and kitkats. The presentation was at the <a href="http://www.nljug.org/jfall">Dutch JFall conference</a>, organized by the NLJUG. It's a large yearly Java conference and the DAUG had the only Android session there.</p>
-<p>The <a href="mailto:benjamin.r.m.weiss@gmail.com">GDG Berlin Android</a> meetup this month  featured the KitKat release.</p>
-<p><a href="mailto:soham.mondal@gmail.com">The GDG Blrdroid</a> <a href="http://www.meetup.com/blrdroid/events/148210762/%20">meetup</a> was another focused on KitKat.</p>
-<p>At the <a href="mailto:amahdy7@gmail.com">GDG Cairo</a> <a href="https://plus.google.com/events/co59j0870in5a4kh8n5navifnm8">DevFest</a> there was a &quot;What's new in Android SDK&quot; session on day 1, and an Android workshop on day 2. Kitkat also provided interest in the sessions and the snacks bar. The KitKat <a href="http://buff.ly/HNE7yq">presentation</a>, the track organization, and everything related to it were all organized by women.</p>
-<p><a href="mailto:hir3npatel@gmail.com">GDG Cape Town</a> held an Android Workshop.</p>
-<p><a href="mailto:alessandro.gbridge@gmail.com">GDG Udine</a>  organized a talk after the release of KitKat for a school in Pordenone.</p>
-<p><a href="mailto:hugo@dutchaug.org">Hugo Visser</a> from Droidcon Netherlands  organized an Android hackathon themed &quot;Location, Location, Location&quot;. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
-<p><a href="mailto:eyal.lezmy@gmail.com">Paris Android User Group</a> welcomed <a href="https://plus.google.com/+RomainGuy">Romain Guy</a> and <a href="https://plus.google.com/+ChetHaase">Chet Haase</a> to their meetup this month. They&rsquo;ll be meeting up with other GDG leads and UG managers meet at <a href="https://plus.google.com/events/cupo201fjreo9g9t2e596gv8nd4">Devoxx</a> next Thursday.</p>
-<p><a href="mailto:wojtek.kalicinski@gmail.com">GDG Warsaw</a> had over 250 attendees at their DevFest, which featured session tracks on Android and Web and a whole day of Code Labs in Android, AngularJS and Arduino.</p>
-<h4>December 2013</h4>
-<p><a href="mailto:prajyotmainkar@gmail.com">GDG GAUG</a> are planning a codelab and hackathon.</p>
-<p><a href="mailto:psvensson@gmail.com">Peter Svensson</a> spoke at <a href="http://swdc.se/droidcon/events/stockholm-2013/">DroidCon Stockholm</a></p>
-The unstoppable <a href="mailto:bonbhel@gmail.com">Max Bonbhel</a> from the African GDG Android is hosting AAC 2014 and Android GDG Barcamp events in December. Also, in order to encourage African Java developers to move to the Android platform, he created the <a href="https://docs.google.com/spreadsheet/ccc?key=0AtFPan-z2ps-dHBtX1luY2pRQjdtRjliUGcxMVBNeVE&usp=sharing#gid=0">Africa Android Training (AAT) program</a>. The training material targets developers with different levels of experience in Java development. More than 60 developers have been taking part in the weekly sessions. The next 10 sessions will start Saturday, November 9, 2013. 260 GDG and Java User Group members have already registered from 12 Countries.
-<p>&nbsp;</p>
-</div>
-
-<div class="col-8" style="margin-right:0">
-<h3>Android Community Experts</h3>
-
-<h4>October 2013</h4>
-<p><a href="mailto:eyal.lezmy@gmail.com">Eyal Lezmy</a> presented two sessions. &ldquo;<a href="http://bit.ly/andbigfail">Play Store bashing, learn from the biggest fails</a>&rdquo; looked at several applications, mainly developed by huge companies, and analyzed why they failed to satisfy the users or the Android guidelines. &ldquo;<a href="http://bit.ly/lifeofapp">Android, the life of your app</a>&rdquo; tells a story, living the life of a user, identify the frustrations he can encounter and present ways to avoid it, as a developer.</p>
-<p><a href="mailto:mariux01@gmail.com">Mario Viviani</a> presented and recorded the next <a href="http://www.youtube.com/watch?v=jaT0bYhhaGY">Android App Clinic - Italia</a>. This episode was regarding the Cards UI and SMS app support in Android 4.4. They experimented with a short form of the video (10 minutes instead of 20) and in less than day it got almost 400+ views -- which is great considering it's in Italian! The previous episode reached 1300 views all-time and was the most successful video of GDL Italia in Q2.</p>
-<p><a href="mailto:m.kaeppler@gmail.com">Matthias Käppler</a> contributed the <a href="https://github.com/Netflix/RxJava/tree/master/rxjava-contrib/rxjava-android">first Android specific component</a> to the RxJava project, and spoke about <a href="http://uk.droidcon.com/2013/sessions/conquering-concurrency-bringing-the-reactive-extensions-to-the-android-platform/">RxJava and reactive programming on Android</a> at DroidCon UK. He has also open sourced <a href="https://github.com/mttkay/memento">Memento</a>, an Android annotation processor to replace the deprecated onRetainNonConfigurationInstance.</p>
-<p><a href="mailto:wojtek.kalicinski@gmail.com">Wojtek Kaliciński</a>&rsquo;s talk, &quot;Android - is it time for a break yet?&quot; highlights not only what's new in Android 4.4 KitKat, but also how to take your app to the next level by making sure you provide the best app experience possible to all 4.0+ users.</p>
-<a href="https://plus.sandbox.google.com/110448195989468248957/posts"><img src="/images/community/hackathon-gdgaug.jpg" alt=""  align="right"></a>
-
-</div>
-
-<h2 id="Content" style="clear:left">New Content</h2>
-<div class="col-8" style="margin-left:0">
-<p><h4>Android 4.4 What's New</h4>
-KitKat has been optimized to run on a much broader range of devices, with special focus on the millions of entry-level devices that have as little as 512MB RAM. To help, we've created new APIs, better tools, and better documentation to let you create apps that perform well on all devices.<br>
-Check out this video summary of some of the most significant developer features in the latest Android release, including  new ways to make your apps beautiful, NFC Host Card Emulation, a printing framework, the storage access framework, low-power step detector and step counter sensors, and more!<br>
-<h5><a href="http://www.youtube.com/watch?v=sONcojECWXs&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></h5>
-<i>Be sure to get the <a href="http://developer.android.com/about/versions/android-4.4.html">full Android 4.4 API Overview</a>, and take a look at our <a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">related DevBytes videos</a></i></p>
-
-<p><h4>WebView in Android 4.4</h4>
-Android 4.4 (API level 19) introduces a new version of WebView that is based on Chromium. This change upgrades WebView performance and standards support for HTML5, CSS3, and JavaScript to match the latest web browsers. Any apps using WebView will inherit these upgrades when running on Android 4.4 and higher.
-<h5><a href="http://developer.android.com/guide/webapps/migrating.html">API Guide</a></h5>
-</p>
-
-<p><h4>Android 4.4 Immersive Mode</h4>
-With Android 4.4 KitKat, your apps can now truly go full-screen with a new Immersive Mode. Immersive Mode lets your apps hide the system's status and navigation bars while capturing all touch events—ideal for rich interactive content such as books and games. This video demonstrates how to use the new API, in addition to recapping earlier full-screen APIs on Android.
-<h5><a href="http://www.youtube.com/watch?v=cBi8fjv90E4&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></h5>
-<h5><a href="http://developer.android.com/samples/ImmersiveMode/index.html">Sample</a></h5>
-</p>
-
-<p>
-<h4>Android 4.4 Storage Access Framework - Provider</h4>
-Get up to speed on the new document storage API in Android 4.4 KitKat. This video gets you up and running with your own DocumentProvider by stepping you through the making of a simple cloud storage app.
-<h5><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></h5>
-<h5><a href="http://developer.android.com/guide/topics/providers/document-provider.html">Training</a></h5>
-<h5><a href="http://developer.android.com/samples/StorageProvider/index.html">Sample</a>, <a href="https://play.google.com/store/apps/details?id=com.box.android">Box Application</a></h5>
-</blockquote>
-
-</p>
-
-
-<p><h4>Android 4.4 Storage Access Framework - Client</h4>
-Get up to speed on the new storage access framework in Android 4.4 KitKat. This video teaches you how to quickly create, edit, save and delete documents provided by other apps as a client of the storage access framework.
-<h5><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></h5>
-<h5><a href="http://developer.android.com/samples/StorageClient/index.html">Sample</a></h5>
-</p>
-
-<p><h4>Android 4.4 Closed Captioning</h4>
-Displaying closed captions in your app's videos can be quick and simple in Android 4.4 KitKat,. Learn how to attach timed text tracks to VideoView and allow users to customize how captions are displayed.
-<h5><a href="http://www.youtube.com/watch?v=hCRGc2PcmB8&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a>
-</p>
-</h5>
-</div>
-
-<div class="col-8" style="margin-right:0">
-
-<p>
-<h4>Android 4.4 Transitions</h4>
-In this episode, we introduce the new Transitions API in Android 4.4 Kitkat. This API provides a simple way for developers to provide animated segues to different scenes of their application, helping users to understand the application flow with very little code. The general approach is to tell the system that you'd like to run a transition animation, then make the necessary changes to your UI. The system figures out the differences and animates the changes.
-<h5><a href="http://www.youtube.com/watch?v=S3H7nJ4QaD8&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K&index=3">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></p>
-</h5>
-<p><h4>Android 4.4: SMS APIs</h4>
-Android 4.4 KitKat introduces the new SMS APIs as well as the new concept of a default SMS app. This video discusses these new APIs and how your app should use them to send and receive SMS and MMS messages.<br>
-<h5><a href="http://www.youtube.com/watch?v=mdq0R2WQssQ&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></h5>
-<i>See also -<br>
-<a href="http://goo.gl/sw5NdH">Android Developer Blog post on Android 4.4 KitKat SMS APIs</a><br>
-<a href="http://goo.gl/7vTx3s">Android Protip on using booleans in your AndroidManifest.xml</a></i></p>
-
-
-<p><h4>Android 4.4 Printing API</h4>
-In this video, we introduce the new Printing API in Android 4.4 KitKat. This API provides a simple way for developers to print to cloud-connected printers using Google Cloud Print. It's really easy to print bitmaps, and HTML (that you generate on the device, or just web content).<br>
-<h5><a href="http://www.youtube.com/watch?v=Iub67ic87KI&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a></h5>
-<h5><a href="http://developer.android.com/training/printing/index.html">Training</a></h5>
-<i>Some pro-tips:</i>
-<ul>
-  <li>For Webview/HTML printing, printing from javascript is not supported yet (window.print() for example). Also we are planning to address the limitations around WebView/HTML printing in future releases (eg: headers/footers, and specifying print ranges).</li>
-<li>We encourage developers to open Android Open Source bugs for features that they feel important as a feedback.</li>
-</ul>
-
-<p><h4>App Indexing</h4>
-In this episode we discuss the new App Indexing feature that we recently announced for Google Search for Android.<br>
-Currently, when you do a google search on the web, you get results that are links to websites. With App Indexing, you will be able to point Google Search users on Android directly to content within your app!
-If you’re an Android app developer who has a web presence and you want more control over how your content is accessed from search, via your website or Android app, App Indexing is a great feature for you to explore.
-Also, enabling your website and app for indexing is a way to increase engagement with your app by making the content more discoverable, and more accessible to users directly from the search results page.
-For information on App Indexing, please visit <a href="http://g.co/appindexing">http://g.co/appindexing</a>
-<h5><a href="http://www.youtube.com/watch?v=Xh_W82JgOms&list=PLWz5rJ2EKKc-2quE-o0enpILZF3nBZg_K">Video</a></h5>
-<h5><a href="https://drive.google.com/a/google.com/folderview?id=0BwhAiXVwzMoFc28wWEpyeE9qYTQ&usp=sharing">Presentation</a>
-</p>
-</h5>
-</div>
-
-<h2 id="Social" style="clear:left">Social</h2>
-<div class="col-8" style="margin-left:0">
-
-<h3 >G+</h3>
-
-<ul>
-<li><a href="https://plus.google.com/u/1/108967384991768947849/posts/1iVvwyfTM8y">What's New in Android 4.4</a>
-  <ul>
-    <li><a href="http://www.youtube.com/watch?v=HrFRY32i_sE">What's New in Android 4.4 [JAPANESE!]</a></li>
-    <li><a href="https://www.youtube.com/watch?v=U9jAcwaETD4">What's New in Android 4.4 [KOREAN!]</a></li>
-    <li><a href="https://plus.google.com/u/1/108967384991768947849/posts/WfqdvDG2Cyr">Quer saber das novidades do Android 4.4? [PORTUGUESE!]</a></li>
-  </ul>
-</li>
-<li><a href="https://plus.google.com/u/1/+AndroidDevelopers/posts/femjRbay18f">Android 4.4 and Updated Developer Tools 
-</a></li>
-<li><a href="https://plus.google.com/u/1/108967384991768947849/posts/P2q82aYN7do">Google Play Services 4.0 
-</a></li>
-</ul>
-</div>
-
-<div class="col-8" style="margin-right:0">
-<h3>Blog</h3>
-
-<ul>
-  <li><a href="http://android-developers.blogspot.hk/2013/10/android-44-kitkat-and-updated-developer.html">Android 4.4 KitKat and Updated Developer Tools</a></li>
-  <li><a href="http://android-developers.blogspot.hk/2013/10/google-play-services-40.html">Google Play Services 4.0</a></li>
-  <li><a href="http://android-developers.blogspot.hk/2013/10/making-your-app-content-more-accessible.html">Making your App Content more Accessible from Googl...</a></li>
-  <li><a href="http://android-developers.blogspot.hk/2013/10/getting-your-sms-apps-ready-for-kitkat.html">Getting Your SMS Apps Ready for KitKat</a></li>
-</ul>
-</div>
-
-</div><!-- /MAIN CONTENT 'wrap' -->
-</body>
-</html>
-
-
-
diff --git a/docs/html/design/_project.yaml b/docs/html/design/_project.yaml
new file mode 100644
index 0000000..72df4a8
--- /dev/null
+++ b/docs/html/design/_project.yaml
@@ -0,0 +1,5 @@
+name: "Design"
+home_url: /design/
+description: "Create beautiful experiences in your apps."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index b4e909f..1a0c125 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -18,7 +18,7 @@
         <h1 class="dac-hero-title">Up and running with material design</h1>
         <p class="dac-hero-description">
         Android uses a new design metaphor inspired by paper and ink that provides a reassuring
-        sense of tactility. Visit the <a href="https://www.google.com/design/spec/material-design/introduction.html">material design</a> site for more resources. 
+        sense of tactility. Visit the <a href="https://www.google.com/design/spec/material-design/introduction.html">material design</a> site for more resources.
         </p>
         <a class="dac-hero-cta" href="https://www.google.com/design/spec/material-design/introduction.html">
           <span class="dac-sprite dac-auto-chevron"></span>
diff --git a/docs/html/design/patterns/help.jd b/docs/html/design/patterns/help.jd
index 6ef155a..b5ee05e 100644
--- a/docs/html/design/patterns/help.jd
+++ b/docs/html/design/patterns/help.jd
@@ -76,7 +76,7 @@
   </div>
   <div class="col-5">
     <img src="{@docRoot}design/media/help_evenbetter.png">
-  </div>  
+  </div>
 </div>
 
 <div class="cols">
diff --git a/docs/html/develop/_project.yaml b/docs/html/develop/_project.yaml
new file mode 100644
index 0000000..40a66b3
--- /dev/null
+++ b/docs/html/develop/_project.yaml
@@ -0,0 +1,5 @@
+name: "Develop"
+home_url: /develop/
+description: "Android Studio provides the fastest tools for building apps on every type of Android device."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/distribute/_project.yaml b/docs/html/distribute/_project.yaml
new file mode 100644
index 0000000..5777333
--- /dev/null
+++ b/docs/html/distribute/_project.yaml
@@ -0,0 +1,5 @@
+name: "Distribute"
+home_url: /distribute/
+description: "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."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/distribute/analyze/_project.yaml b/docs/html/distribute/analyze/_project.yaml
new file mode 100644
index 0000000..5c77074
--- /dev/null
+++ b/docs/html/distribute/analyze/_project.yaml
@@ -0,0 +1,6 @@
+name: "Analyze"
+home_url: /distribute/analyze/
+description: "Understanding what your users do inside your app is the key to engaging and monetizing them."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/analyze/build-better-apps.jd b/docs/html/distribute/analyze/build-better-apps.jd
index 823562a..d0db392 100644
--- a/docs/html/distribute/analyze/build-better-apps.jd
+++ b/docs/html/distribute/analyze/build-better-apps.jd
@@ -108,7 +108,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/analyzebuild"
   data-sortorder="-timestamp"
   data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/google-services.jd b/docs/html/distribute/analyze/google-services.jd
index 0d82c8a..44eed8e 100644
--- a/docs/html/distribute/analyze/google-services.jd
+++ b/docs/html/distribute/analyze/google-services.jd
@@ -109,7 +109,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/analyzeact"
   data-sortorder="-timestamp"
   data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/improve-roi.jd b/docs/html/distribute/analyze/improve-roi.jd
index 6c05962..95c4db5 100644
--- a/docs/html/distribute/analyze/improve-roi.jd
+++ b/docs/html/distribute/analyze/improve-roi.jd
@@ -155,7 +155,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/analyzeimprove"
   data-sortorder="-timestamp"
   data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/measure.jd b/docs/html/distribute/analyze/measure.jd
index 5b29e95..4cb9bde 100644
--- a/docs/html/distribute/analyze/measure.jd
+++ b/docs/html/distribute/analyze/measure.jd
@@ -82,7 +82,7 @@
 <li>Analyze how far shoppers get in the shopping funnel and where they drop
 off</li>
 <li>Understand which products are viewed most, which are frequently abandoned
-in cart, and which ones convert well</li> 
+in cart, and which ones convert well</li>
 <li>Upload rich product metadata to slice and dice your data</li>
 <li>Create rich user segments to delve deeper into your users’ shopping
 behavior and the products they interact with</li>
diff --git a/docs/html/distribute/analyze/start.jd b/docs/html/distribute/analyze/start.jd
index 0221f72..0a90b4f 100644
--- a/docs/html/distribute/analyze/start.jd
+++ b/docs/html/distribute/analyze/start.jd
@@ -36,7 +36,7 @@
 <li><a href="https://accounts.google.com/SignUp?continue=https%3A%2F%2Fwww.google.com%2Fanalytics%2Fmobile%2F&hl=en">Create
 your Google Analytics account</a>.</li>
 <li>Write down your tracking ID. </li>
-<li>Initialize Google Analytics in your app to start measuring activity immediately.</li> 
+<li>Initialize Google Analytics in your app to start measuring activity immediately.</li>
 </ul>
 
 <p>
@@ -97,7 +97,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/analyzestart"
   data-sortorder="-timestamp"
   data-cardsizes="6x3"
diff --git a/docs/html/distribute/analyze/understand-user-value.jd b/docs/html/distribute/analyze/understand-user-value.jd
index 99fd11a..6bc192d 100644
--- a/docs/html/distribute/analyze/understand-user-value.jd
+++ b/docs/html/distribute/analyze/understand-user-value.jd
@@ -45,7 +45,7 @@
 </p>
 
 
-<h2 id="audiencereporting">Know your users with Audience Reporting and Demographic 
+<h2 id="audiencereporting">Know your users with Audience Reporting and Demographic
 and Interest reports</h2>
 
 <p>
@@ -230,7 +230,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/analyzeunderstand"
   data-sortorder="-timestamp"
   data-cardsizes="6x3"
diff --git a/docs/html/distribute/engage/_project.yaml b/docs/html/distribute/engage/_project.yaml
new file mode 100644
index 0000000..fd8fa44
--- /dev/null
+++ b/docs/html/distribute/engage/_project.yaml
@@ -0,0 +1,6 @@
+name: "Engage & Retain"
+home_url: /distribute/engage/
+description: "Engaging and retaining active users are the keys to success. Here are some resources to help you build an active user base."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/engage/ads.jd b/docs/html/distribute/engage/ads.jd
index 10dbea6..8cfbdf2 100644
--- a/docs/html/distribute/engage/ads.jd
+++ b/docs/html/distribute/engage/ads.jd
@@ -54,7 +54,7 @@
 
 <h2 id="related_resources">Related resources</h2>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/engage/reengage"
   data-sortorder="-timestamp"
   data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/analytics.jd b/docs/html/distribute/engage/analytics.jd
index 5f7cade..0343def 100644
--- a/docs/html/distribute/engage/analytics.jd
+++ b/docs/html/distribute/engage/analytics.jd
@@ -42,7 +42,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/engage/analytics"
   data-sortorder="-timestamp"
   data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/deep-linking.jd b/docs/html/distribute/engage/deep-linking.jd
index 713bfbb..510fa5c 100644
--- a/docs/html/distribute/engage/deep-linking.jd
+++ b/docs/html/distribute/engage/deep-linking.jd
@@ -8,7 +8,7 @@
   Users who have your app installed might overlook it as a way to get the answers
   they need. With App Indexing, deep links to your Android app appear in Google Search
   results so users can get to your native mobile experience quickly, landing exactly
-  on the right content within the app. 
+  on the right content within the app.
 </p>
 
 <p>
diff --git a/docs/html/distribute/engage/easy-signin.jd b/docs/html/distribute/engage/easy-signin.jd
index 924c5b4..5c04064 100644
--- a/docs/html/distribute/engage/easy-signin.jd
+++ b/docs/html/distribute/engage/easy-signin.jd
@@ -1,70 +1,66 @@
-page.title=Add Quick and Secure Google Sign-in
+page.title=Add Quick and Secure Google Sign-In
 page.metaDescription=Increase conversion rates while helping users minimize typing by letting users sign in with Google+.
 page.tags="google", "identity", "signin"
 page.image=images/cards/google-sign-in_2x.png
 
 @jd:body
 
-<p>Get people into your apps quickly and securely, using a registration system they
-already use and trust – their Google account. With minimal effort, you can increase
-registration and sign-in conversion by adding trusted registration system that's
-familiar to users, consistent across devices, and quick and easy to use.</p>
-
-<p>Get started <a href="https://developers.google.com/identity/sign-in/">integrating
-Google sign-in into your apps and games</a>.</p>
-
-<div class="wrap">
-  <div class="cols" style="margin-top:2em;">
-    <div class="col-3of12">
-      <h3>Quick and secure app access</h3>
-        <p>A secure authentication system that makes sign-in easy for your users by
-        letting them use their Google account, which they already use with Gmail,
-        Play, Google+, and other Google services.</p>
-    </div>
-    <div class="col-8of12 col-push-1of12">
-     <img src="{@docRoot}images/distribute/signin-secure.png" style="padding-top:1em;">
-    </div>
-  </div>
-
-  <div class="cols" style="margin-top:2em;">
-    <div class="col-3of12">
-      <h3>Seamless experience across screens</h3>
-      <p>Keep your users engaged, no matter what device they pick up or sit down at.
-      Offer a seamless app experience across devices and into your website, securely
-      from a one-time consent. </p>
-    </div>
-    <div class="col-8of12  col-push-1of12">
-      <img src="{@docRoot}images/distribute/signin-seamless.png" style="padding-top:1em;">
-    </div>
-  </div>
-
-  <div class="cols" style="margin-top:2em;">
-    <div class="col-3of12">
-      <h3>Help your users take action with Google</h3>
-        <p>Securely connect users with Google services and let them pay with Google
-        Wallet, share with Google contacts, save files to Drive, add events to
-        Calendar, and more.</p>
-    </div>
-    <div class="col-8of12 col-push-1of12">
-     <img src="{@docRoot}images/distribute/signin-apps.png" style="padding-top:1em;">
-    </div>
-  </div>
+<div class="figure">
+  <img src="{@docRoot}images/distribute/google-sign-in-banner.png" style="width:512px;">
 </div>
+<p>
+  Get customers into your apps quickly and securely using a registration system that they
+  already use and trust &ndash; their Google account. With minimal effort, you can increase
+  registration and sign-in conversion by adding a trusted registration system that's familiar
+  to users, consistent across devices, and quick and easy to use.
+</p>
 
+<h2 id="tips">Benefits</h2>
 
-<h2>Tips</h2>
+<p>These are some of the ways Sign-In can improve your app:</p>
 
 <ul>
-<li>Add <strong>over-the-air installs</strong> to your website. After signing in with Google
-  on the web, users will have the option to send your Android app to their device instantly,
-  without them ever leaving your website.</li>
-  <li>With Google sign-in, you can take advantage of other <strong>Google+ platform
-  features</strong> like adding a +1 button so users can make recommendations and the ability
-  to share rich content to the Google+ stream.</li>
+  <li>
+    <strong>Quick and secure app access</strong>: Google Sign-In is a secure authentication
+    system that makes sign-in easy for your users by letting them use their Google account,
+    which they already use with Gmail, Google Play, Google+, and other Google services.
+  </li>
+
+  <li>
+    <strong>Seamless experience across screens</strong>: Keep your users engaged, no matter
+    what device they choose. Offer a secure and seamless app experience across devices and
+    into your website, from a one-time consent.
+  </li>
+
+  <li>
+    <strong>Convenient access to Google services</strong>: Securely connect users with
+    Google services and let them pay with Google Wallet, share with Google Contacts, save files
+    to Google Drive, and add events to Google Calendar.
+  </li>
 </ul>
 
+<p>Get started integrating<a href="https://developers.google.com/identity/sign-in/">
+Google Sign-In</a> into your apps and games.</p>
 
-<h2 style="clear:both" id="related-resources">Related Resources</h2>
+<h2 id="tips">Tips</h2>
+
+<p>Here are some suggestions for enhancing the Sign-In user experience:</p>
+
+<ul>
+  <li>
+    Add <strong>over-the-air installs</strong> to your website. After signing in with Google
+    on the web, users have the option to send your Android app to their device instantly,
+    without ever leaving your website.
+  </li>
+
+  <li>
+    With Google Sign-In, you can take advantage of other <strong>Google+ platform
+    features</strong>, like adding a +1 button so users can make recommendations and have
+    the ability to share rich content to their Google+ streams.
+  </li>
+</ul>
+
+<h2 style="clear:both" id="related-resources">Related resources</h2>
 
 <div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/engage/gplus"
@@ -72,5 +68,3 @@
   data-cardsizes="9x3"
   data-maxresults="4">
 </div>
-
-
diff --git a/docs/html/distribute/engage/gcm.jd b/docs/html/distribute/engage/gcm.jd
index 55bd40a..9fa9d5f 100644
--- a/docs/html/distribute/engage/gcm.jd
+++ b/docs/html/distribute/engage/gcm.jd
@@ -43,7 +43,7 @@
 
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/engage/gcm"
   data-sortorder="-timestamp"
   data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/intents.jd b/docs/html/distribute/engage/intents.jd
index 07791e8..33ed125 100644
--- a/docs/html/distribute/engage/intents.jd
+++ b/docs/html/distribute/engage/intents.jd
@@ -1,5 +1,5 @@
 page.title=Increase Usage with Android Intents
-page.metaDescription=Use Android Intents to make your app available to users as they perform tasks in other apps. 
+page.metaDescription=Use Android Intents to make your app available to users as they perform tasks in other apps.
 page.tags="engagement, intents"
 @jd:body
 
diff --git a/docs/html/distribute/engage/notifications.jd b/docs/html/distribute/engage/notifications.jd
index 1aa0637..c38f649 100644
--- a/docs/html/distribute/engage/notifications.jd
+++ b/docs/html/distribute/engage/notifications.jd
@@ -51,7 +51,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/getusers/notifications"
   data-sortorder="-timestamp"
   data-cardsizes="9x3"
diff --git a/docs/html/distribute/engage/video.jd b/docs/html/distribute/engage/video.jd
index c5a4997..cf06ce0 100644
--- a/docs/html/distribute/engage/video.jd
+++ b/docs/html/distribute/engage/video.jd
@@ -1,5 +1,5 @@
 page.title=Delight Users with Videos
-page.metaDescription=Videos are one of the most effective ways to get users excited about your apps. 
+page.metaDescription=Videos are one of the most effective ways to get users excited about your apps.
 page.tags="engagement"
 page.image=/images/gp-engage-smule.jpg
 
diff --git a/docs/html/distribute/engage/widgets.jd b/docs/html/distribute/engage/widgets.jd
index 6adb55c..a6623ba 100644
--- a/docs/html/distribute/engage/widgets.jd
+++ b/docs/html/distribute/engage/widgets.jd
@@ -37,7 +37,7 @@
   </h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" 
+<div class="resource-widget resource-flow-layout col-13"
   data-query="collection:distribute/engage/widgets"
   data-sortorder="-timestamp"
   data-cardsizes="9x3"
diff --git a/docs/html/distribute/essentials/_project.yaml b/docs/html/distribute/essentials/_project.yaml
new file mode 100644
index 0000000..cafde8d
--- /dev/null
+++ b/docs/html/distribute/essentials/_project.yaml
@@ -0,0 +1,6 @@
+name: "Essentials"
+home_url: /distribute/essentials/
+description: "A focus on quality should be part of your entire app delivery process: from initial concept through app and UI design, coding and testing and onto a process of monitoring feedback and making improvement after launch."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/essentials/optimizing-your-app.jd b/docs/html/distribute/essentials/optimizing-your-app.jd
index 696ef53..09c52d4 100644
--- a/docs/html/distribute/essentials/optimizing-your-app.jd
+++ b/docs/html/distribute/essentials/optimizing-your-app.jd
@@ -4,7 +4,7 @@
 
 @jd:body
 
-<div id="qv-wrapper">           
+<div id="qv-wrapper">
   <div id="qv">
     <h2>Strategies</h2>
     <ol>
diff --git a/docs/html/distribute/essentials/quality/billions.jd b/docs/html/distribute/essentials/quality/billions.jd
index 7042143..2e14b37 100644
--- a/docs/html/distribute/essentials/quality/billions.jd
+++ b/docs/html/distribute/essentials/quality/billions.jd
@@ -1,5 +1,5 @@
 page.title=Building for Billions
-page.metaDescription=Best practices on how to optimize Android apps for low- and no-bandwidth and low-cost devices. 
+page.metaDescription=Best practices on how to optimize Android apps for low- and no-bandwidth and low-cost devices.
 page.image=/distribute/images/billions-guidelines.png
 
 @jd:body
@@ -18,7 +18,7 @@
   <li><a href="#compatibility">Backward compatibility</a></li>
   <li><a href="#memory">Efficient memory usage</a></li>
  </ol>
-  
+
 <h2><a href="#cost">Data Cost</a></h2>
  <ol>
   <li><a href="#appsize">Reduce app size</a></li>
@@ -42,14 +42,14 @@
 
 <!-- intro -->
 <p>Internet use—and smartphone penetration—is growing fastest in markets with
- low, intermittent, or expensive connectivity. Successful apps in these 
- markets need to perform across a variety of speeds and devices, as well as 
+ low, intermittent, or expensive connectivity. Successful apps in these
+ markets need to perform across a variety of speeds and devices, as well as
  conserve and share information about battery and data consumption.</p>
 
 <p>To help you address these important considerations, we’ve compiled the
- following checklist. These do not follow a particular order, and as 
- always it's a good idea to research particularities of any market or country 
- you're targeting. 
+ following checklist. These do not follow a particular order, and as
+ always it's a good idea to research particularities of any market or country
+ you're targeting.
 </p>
 
 <!-- connectivity -->
@@ -67,40 +67,40 @@
 <h4 id="images-format">Serve WebP images</h4>
  <ul>
   <li>Serve <a
-   href="https://developers.google.com/speed/webp/">WebP</a> files over the 
-   network. WebP reduces image load times, saves network bandwidth, and often 
-   results in smaller file sizes than its PNG and JPG counterparts, with at 
-   least the same image quality. Even at lossy settings, WebP can produce a 
-   nearly identical image. Android has had lossy <a 
-   href="{@docRoot}guide/appendix/media-formats.html">WebP support</a> since 
-   Android 4.0 (API level 14: Ice Cream Sandwich) and support for lossless / 
+   href="https://developers.google.com/speed/webp/">WebP</a> files over the
+   network. WebP reduces image load times, saves network bandwidth, and often
+   results in smaller file sizes than its PNG and JPG counterparts, with at
+   least the same image quality. Even at lossy settings, WebP can produce a
+   nearly identical image. Android has had lossy <a
+   href="{@docRoot}guide/appendix/media-formats.html">WebP support</a> since
+   Android 4.0 (API level 14: Ice Cream Sandwich) and support for lossless /
    transparent WebP since Android 4.2 (API level 17: Jelly Bean).</li>
  </ul>
 <h4 id="images-sizing">Dynamic image sizing</h4>
  <ul>
   <li>Have your apps request images at the targeted rendering size, and have
-   your server provide those images to fit; the target rendering size will 
-   vary based on device specifications. Doing this minimizes the network 
-   overhead and reduces the amount of memory needed to hold each image, 
+   your server provide those images to fit; the target rendering size will
+   vary based on device specifications. Doing this minimizes the network
+   overhead and reduces the amount of memory needed to hold each image,
    resulting in improved performance and user satisfaction.</li>
   <li>Your user experience degrades when users are waiting for images to
-   download. Using appropriate image sizes helps to address these issues. 
-   Consider making image size requests based on network type or network 
+   download. Using appropriate image sizes helps to address these issues.
+   Consider making image size requests based on network type or network
    quality; this size could be smaller than the target rendering size.</li>
   <li>Dynamic placeholders like <a
    href="{@docRoot}reference/android/support/v7/graphics/Palette.html">
-   pre-computed palette values</a> or low-resolution thumbnails can improve 
+   pre-computed palette values</a> or low-resolution thumbnails can improve
    the user experience while the image is being fetched.</li>
  </ul>
 <h4 id="images-libraries">Use image loading libraries</h4>
  <ul>
   <li>Your app should not have to fetch any image more than once. Image
-   loading libraries such as <a class="external-link" 
-   href="https://github.com/bumptech/glide">Glide</a> and  <a 
-   class="external-link" href="http://square.github.io/picasso/">Picasso</a> 
-   fetch the image, cache it, and provide hooks into your Views to show 
-   placeholder images until the actual images are ready. Because images are 
-   cached, these libraries return the local copy the next time they are 
+   loading libraries such as <a class="external-link"
+   href="https://github.com/bumptech/glide">Glide</a> and  <a
+   class="external-link" href="http://square.github.io/picasso/">Picasso</a>
+   fetch the image, cache it, and provide hooks into your Views to show
+   placeholder images until the actual images are ready. Because images are
+   cached, these libraries return the local copy the next time they are
    requested.</li>
   <li>Image-loading libraries manage their cache, holding onto the most recent
    images so that your app storage doesn’t grow indefinitely.</li>
@@ -110,59 +110,59 @@
 <h4 id="network-offline">Make your app usable offline</h4>
  <ul>
   <li>In places like subways, planes, elevators, and parking garages, it is
-   common for devices to lose network connectivity. Creating a useful offline 
-   state results in users being able to interact with the app at all times, by 
-   presenting cached information. Ensure that your app is usable offline or 
-   when network connectivity is poor by storing data locally, caching data, 
+   common for devices to lose network connectivity. Creating a useful offline
+   state results in users being able to interact with the app at all times, by
+   presenting cached information. Ensure that your app is usable offline or
+   when network connectivity is poor by storing data locally, caching data,
    and queuing outbound requests for when connectivity is restored.</li>
   <li>Where possible, apps should not notify users that connectivity has
-   been lost. It is only when the user performs an operation where connectivity 
+   been lost. It is only when the user performs an operation where connectivity
    is essential that the user needs to be notified.</li>
   <li>When a device lacks connectivity, your app should batch up network
-   requests&mdash;on behalf of the user&mdash;that can be executed when 
-   connectivity is restored. An example of this is an email client that allows 
-   users to compose, send, read, move, and delete existing mails even when the 
-   device is offline. These operations can be cached and executed when 
-   connectivity is restored. In doing so, the app is able to provide a similar 
+   requests&mdash;on behalf of the user&mdash;that can be executed when
+   connectivity is restored. An example of this is an email client that allows
+   users to compose, send, read, move, and delete existing mails even when the
+   device is offline. These operations can be cached and executed when
+   connectivity is restored. In doing so, the app is able to provide a similar
    user experience whether the device is online or offline.</li>
  </ul>
 <h4 id="network-arch">Use GcmNetworkManager and/or Content Providers</h4>
  <ul>
   <li>Ensure that your app stores all data on disk via a database or similar
-   structure so that it performs optimally regardless of network conditions 
-   (for example, via SQLite + ContentProvider). The <a 
+   structure so that it performs optimally regardless of network conditions
+   (for example, via SQLite + ContentProvider). The <a
    href="https://developers.google.com/cloud-messaging/network-manager">
-   GCM Network Manager</a> 
+   GCM Network Manager</a>
    (<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
-   <code>GcmNetworkManager</code></a>) can result in a robust mechanism to 
-   sync data with servers while <a 
-   href="{@docRoot}guide/topics/providers/content-providers.html">content 
-   providers</a> ({@link android.content.ContentProvider}) cache that data, 
+   <code>GcmNetworkManager</code></a>) can result in a robust mechanism to
+   sync data with servers while <a
+   href="{@docRoot}guide/topics/providers/content-providers.html">content
+   providers</a> ({@link android.content.ContentProvider}) cache that data,
    combining to provide an architecture that enables a useful offline state.</li>
   <li>Apps should cache content that is fetched from the network. Before making
-   subsequent requests, apps should display locally cached data. This ensures 
-   that the app is functional regardless of whether the device is offline or 
+   subsequent requests, apps should display locally cached data. This ensures
+   that the app is functional regardless of whether the device is offline or
    on a slow/unreliable network.</li>
  </ul>
 <h4 id="network-duplicate">Deduplicate network requests</h4>
  <ul>
   <li>An offline-first architecture initially tries to fetch data from local
-   storage and, failing that, requests the data from the network. After being 
-   retrieved from the network, the data is cached locally for future 
-   retrieval. This helps to ensure that network requests for the same piece of 
-   data only occur once—the rest of the requests are satisfied locally. To 
-   achieve this, use a local database for long-lived data (usually 
-   {@link android.database.sqlite} or 
+   storage and, failing that, requests the data from the network. After being
+   retrieved from the network, the data is cached locally for future
+   retrieval. This helps to ensure that network requests for the same piece of
+   data only occur once—the rest of the requests are satisfied locally. To
+   achieve this, use a local database for long-lived data (usually
+   {@link android.database.sqlite} or
    {@link android.content.SharedPreferences}).</li>
   <li>An offline-first architecture always looks for data locally first, then
-   makes the request over the network. The response is cached and then returned 
-   locally. Such an architecture simplifies an app’s flow between offline and 
-   online states as one side fetches from the network to the cache, while the 
+   makes the request over the network. The response is cached and then returned
+   locally. Such an architecture simplifies an app’s flow between offline and
+   online states as one side fetches from the network to the cache, while the
    other retrieves data from the cache to present to the user.</li>
   <li>For transitory data, use a bounded disk cache such as a <a class="external-link"
    href="https://github.com/JakeWharton/DiskLruCache"><code>DiskLruCache</code>
-   </a>. Data that doesn’t typically change should only be requested once over 
-   the network and cached for future use. Examples of such data are images and 
+   </a>. Data that doesn’t typically change should only be requested once over
+   the network and cached for future use. Examples of such data are images and
    non-temporal documents like news articles or social posts.</li>
  </ul>
 
@@ -170,29 +170,29 @@
 <h4 id="transfer-prioritize">Prioritize bandwidth</h4>
  <ul>
   <li>Writers of apps should not assume that any network that the device is
-   connected to is long-lasting or reliable. For this reason, apps should 
-   prioritize network requests to display the most useful information to the 
+   connected to is long-lasting or reliable. For this reason, apps should
+   prioritize network requests to display the most useful information to the
    user as soon as possible.</li>
   <li>Presenting users with visible and relevant information immediately is a
-   better user experience than making them wait for information that might not 
-   be necessary. This reduces the time that the user has to wait and 
+   better user experience than making them wait for information that might not
+   be necessary. This reduces the time that the user has to wait and
    increases the usefulness of the app on slow networks.</li>
   <li>To achieve this, sequence your network requests such that text is
-   fetched before rich media. Text requests tend to be smaller, compress 
-   better, and hence transfer faster, meaning that your app can display useful 
-   content quickly. For more information on managing network requests, visit 
-   the Android training on <a 
-   href="{@docRoot}training/basics/network-ops/managing.html">Managing Network 
+   fetched before rich media. Text requests tend to be smaller, compress
+   better, and hence transfer faster, meaning that your app can display useful
+   content quickly. For more information on managing network requests, visit
+   the Android training on <a
+   href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
    Usage</a>.</li>
  </ul>
 <h4 id="network-bandwidth">Use less bandwidth on slower connections</h4>
  <ul>
   <li>The ability for your app to transfer data in a timely fashion is
-   dependent on the network connection. Detecting the quality of the network 
-   and adjusting the way your app uses it can help provide an excellent user 
+   dependent on the network connection. Detecting the quality of the network
+   and adjusting the way your app uses it can help provide an excellent user
    experience.</li>
   <li>You can use the following methods to detect the underlying network
-   quality. Using the data from these methods, your app should tailor its use 
+   quality. Using the data from these methods, your app should tailor its use
    of the network to continue to provide a timely response to user actions:
     <ul>
      <li>{@link android.net.ConnectivityManager}>
@@ -206,27 +206,27 @@
     </ul>
   </li>
   <li>On slower connections, consider downloading only lower-resolution media
-   or perhaps none at all. This ensures that your users are still able to use 
-   the app on slow connections. Where you don’t have an image or the image is 
-   still loading, you should always show a placeholder. You can create a 
-   dynamic placeholder by using the <a 
+   or perhaps none at all. This ensures that your users are still able to use
+   the app on slow connections. Where you don’t have an image or the image is
+   still loading, you should always show a placeholder. You can create a
+   dynamic placeholder by using the <a
    href="{@docRoot}tools/support-library/features.html#v7-palette">
-   Palette library</a> to generate placeholder colors that match the target 
+   Palette library</a> to generate placeholder colors that match the target
    image.</li>
   <li>Prioritize network requests such that text is fetched before rich media.
-   Text requests tend to be smaller, compress better, and hence transfer 
-   faster, meaning that your app can display useful content quickly. For more 
-   information on adjusting bandwidth based on network connection, see the 
-   Android training on <a 
-   href="{@docRoot}training/basics/network-ops/managing.html">Managing Network 
+   Text requests tend to be smaller, compress better, and hence transfer
+   faster, meaning that your app can display useful content quickly. For more
+   information on adjusting bandwidth based on network connection, see the
+   Android training on <a
+   href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
    Usage</a>.</li>
  </ul>
 <h4 id="network-behavior">Detect network changes, then change app behavior</h4>
  <ul>
   <li>Network quality is not static; it changes based on location, network
-   traffic, and local population density. Apps should detect changes in 
-   network and adjust bandwidth accordingly. By doing so, your app can tailor 
-   the user experience to the network quality. Detect network state using 
+   traffic, and local population density. Apps should detect changes in
+   network and adjust bandwidth accordingly. By doing so, your app can tailor
+   the user experience to the network quality. Detect network state using
    these methods:
     <ul>
      <li>{@link android.net.ConnectivityManager}>
@@ -238,26 +238,26 @@
     </ul>
   </li>
   <li>As the network quality degrades, scale down the number and size of
-   requests. As the connection quality improves, you can scale up your 
+   requests. As the connection quality improves, you can scale up your
    requests to optimal levels.</li>
   <li>On higher quality, unmetered networks, consider <a
    href="{@docRoot}training/efficient-downloads/efficient-network-access.html#PrefetchData">
-   prefetching data</a> to make it available ahead of time. From a user 
-   experience standpoint, this might mean that news reader apps only fetch 
-   three articles at a time on 2G but fetch twenty articles at a time on 
-   Wi-Fi. For more information on adjusting app behavior based on network changes, 
-   visit the Android training on <a 
+   prefetching data</a> to make it available ahead of time. From a user
+   experience standpoint, this might mean that news reader apps only fetch
+   three articles at a time on 2G but fetch twenty articles at a time on
+   Wi-Fi. For more information on adjusting app behavior based on network changes,
+   visit the Android training on <a
    href="{@docRoot}training/monitoring-device-state/connectivity-monitoring.html">
    Monitoring the Connectivity Status</a>.</li>
   <li>The broadcast <a
    href="{@docRoot}reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION">
-   <code>CONNECTIVITY_CHANGE</code></a> is sent when a change in network 
-   connectivity occurs. When your app is in the foreground, you can call <a 
+   <code>CONNECTIVITY_CHANGE</code></a> is sent when a change in network
+   connectivity occurs. When your app is in the foreground, you can call <a
    href="{@docRoot}reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter)">
-   <code>registerReceiver</code></a> to receive this broadcast. After receiving 
-   the broadcast, you should reevaluate the current network state and adjust 
-   your UI and network usage appropriately. You should not declare this receiver 
-   in your manifest, as it will no longer function beginning with Android N. 
+   <code>registerReceiver</code></a> to receive this broadcast. After receiving
+   the broadcast, you should reevaluate the current network state and adjust
+   your UI and network usage appropriately. You should not declare this receiver
+   in your manifest, as it will no longer function beginning with Android N.
    For more details see <a href="{@docRoot}preview/behavior-changes.html">
    Android N behavior changes</a>.</li>
  </ul>
@@ -274,55 +274,55 @@
   <h2 id="capability">Device Capability</h2>
 </div>
 <p>Reaching new users means supporting an increasing variety of Android
- platform versions and device specifications. Optimize for common RAM and 
+ platform versions and device specifications. Optimize for common RAM and
  screen sizes and resolutions to improve the user experience. </p>
 
 <h3 id="screens">Support varying screen sizes</h3>
 <h4 id="screens-dp">Use density-independent pixels (dp)</h4>
  <ul>
   <li>Defining layout dimensions with pixels is a problem because different
-   screens have different pixel densities, so the same number of pixels may 
-   correspond to different physical sizes on different devices. The 
-   density-independent pixel (dp) corresponds to the physical size of a pixel 
+   screens have different pixel densities, so the same number of pixels may
+   correspond to different physical sizes on different devices. The
+   density-independent pixel (dp) corresponds to the physical size of a pixel
    at 160 dots per inch (mdpi density).</li>
   <li>Defining layouts with dp ensures that the physical size of your user
-   interface is consistent regardless of device. Visit the Android 
-   guide on <a 
+   interface is consistent regardless of device. Visit the Android
+   guide on <a
    href="https://developer.android.com/guide/practices/screens_support.html">
-   Supporting Multiple Screens</a> for best practices using 
+   Supporting Multiple Screens</a> for best practices using
    density-independent pixels.</li>
  </ul>
 <h4 id="screens-density">Test graphics on ldpi/mdpi screen densities</h4>
  <ul>
   <li>Ensure that your app layouts work well on low- and medium-density
-   (ldpi/mdpi) screens because these are <a 
+   (ldpi/mdpi) screens because these are <a
    href="https://developer.android.com/about/dashboards/index.html#Screens">
-   common densities</a>, especially in lower-cost devices. Testing on 
-   lower-density screens helps to validate that your layouts are legible on 
+   common densities</a>, especially in lower-cost devices. Testing on
+   lower-density screens helps to validate that your layouts are legible on
    lower-density screens.</li>
   <li>Lower-density screens can result in unclear text where the finer details
-   aren't visible. The Material Design guidelines describe <a 
+   aren't visible. The Material Design guidelines describe <a
    class="external-link" href="https://www.google.com/design/spec/layout/metrics-keylines.html">
-   metrics and keylines</a> to ensure that your layouts can scale across 
+   metrics and keylines</a> to ensure that your layouts can scale across
    screen densities.</li>
   <li>Devices with lower-density screens tend to have lower hardware
-   specifications. To ensure that your app performs well on these devices, 
-   consider reducing or eliminating heavy loads, such as animations and 
-   transitions. For more information on supporting different densities, see 
-   the Android training on <a 
+   specifications. To ensure that your app performs well on these devices,
+   consider reducing or eliminating heavy loads, such as animations and
+   transitions. For more information on supporting different densities, see
+   the Android training on <a
    href="https://developer.android.com/training/multiscreen/screendensities.html">
    Supporting Different Densities</a>.</li>
  </ul>
 <h4 id="screens-sizes">Test layouts on small/medium screen sizes</h4>
  <ul>
   <li>Validate that your layouts scale down by testing on smaller screens. As
-   screen sizes shrink, be very selective about visible UI elements, because 
+   screen sizes shrink, be very selective about visible UI elements, because
    there is limited space for them.</li>
   <li>Devices with smaller screens tend to have lower hardware specifications.
-   To ensure that your app performs well on these devices, try reducing or 
-   eliminating heavy loads, such as animations or transitions. For more 
-   information on supporting different screen sizes, see the Android 
-   training on <a 
+   To ensure that your app performs well on these devices, try reducing or
+   eliminating heavy loads, such as animations or transitions. For more
+   information on supporting different screen sizes, see the Android
+   training on <a
    href="https://developer.android.com/training/multiscreen/screendensities.html">
    Supporting Different Screen Sizes</a>.</li>
  </ul>
@@ -332,57 +332,57 @@
  appropriately</h4>
  <ul>
   <li>Apps should build and target a recent version of Android to ensure most
-   current behavior across a broad range of devices; this still provides 
-   backward compatibility to older versions. Here are the best practices for 
+   current behavior across a broad range of devices; this still provides
+   backward compatibility to older versions. Here are the best practices for
    targeting API levels appropriately:
     <ul>
      <li><a
       href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">
-      {@code targetSdkVersion}</a> should be the latest version of Android. 
-      Targeting the most recent version ensures that your app inherits newer 
-      runtime behaviors when running newer versions of Android. Be sure to 
-      test your app on newer Android versions when updating the 
+      {@code targetSdkVersion}</a> should be the latest version of Android.
+      Targeting the most recent version ensures that your app inherits newer
+      runtime behaviors when running newer versions of Android. Be sure to
+      test your app on newer Android versions when updating the
       targetSdkVersion as it can affect app behavior.</li>
      <li><a
       href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">
-      {@code minSdkVersion}</a> sets the minimum supported Android version. 
-      Use Android 4.0 (API level 14: Ice Cream Sandwich) or Android 4.1 (API 
-      level 16: Jelly Bean)—these versions give maximum coverage for modern 
-      devices. Setting {@code minSdkVersion} also results in the Android build 
-      tools reporting incorrect use of new APIs that might not be available in 
-      older versions of the platform. By doing so, developers are protected 
+      {@code minSdkVersion}</a> sets the minimum supported Android version.
+      Use Android 4.0 (API level 14: Ice Cream Sandwich) or Android 4.1 (API
+      level 16: Jelly Bean)—these versions give maximum coverage for modern
+      devices. Setting {@code minSdkVersion} also results in the Android build
+      tools reporting incorrect use of new APIs that might not be available in
+      older versions of the platform. By doing so, developers are protected
       from inadvertently breaking backward compatibility.</li>
     </ul>
   </li>
   <li>Consult the <a
    href="https://developer.android.com/about/dashboards/index.html#Platform">
-   Android dashboards</a>, the <a class="external-link" 
-   href="https://play.google.com/apps/publish/">Google Play Developer 
-   Console</a> for your app, and industry research in your target markets to 
+   Android dashboards</a>, the <a class="external-link"
+   href="https://play.google.com/apps/publish/">Google Play Developer
+   Console</a> for your app, and industry research in your target markets to
    gauge which versions of Android to target, based on your target users.</li>
  </ul>
 <h4 id="compatibility-libraries">Use the Android Support libraries</h4>
  <ul>
   <li>Ensure your app provides a consistent experience across OS versions by
    using the Google-provided support libraries such as AppCompat and the Design
-    Support Library. The Android Support Library package is a set of code 
-    libraries that provides backward-compatible versions of Android framework 
+    Support Library. The Android Support Library package is a set of code
+    libraries that provides backward-compatible versions of Android framework
     APIs as well as features that are only available through the library APIs.
     </li>
   <li>Some of the the highlights include:
   <ul>
    <li>v4 & v7 support library: Many framework APIs for older versions of
-    Android such as {@link android.support.v4.view.ViewPager}, 
-    {@link android.app.ActionBar}, 
-    {@link android.support.v7.widget.RecyclerView}, and 
+    Android such as {@link android.support.v4.view.ViewPager},
+    {@link android.app.ActionBar},
+    {@link android.support.v7.widget.RecyclerView}, and
     {@link android.support.v7.graphics.Palette}.</li>
    <li><a href="{@docRoot}tools/support-library/features.html#design">Design
-    Support</a> library: APIs to support adding Material Design components 
+    Support</a> library: APIs to support adding Material Design components
     and patterns to your apps.</li>
    <li><a href="{@docRoot}tools/support-library/features.html#multidex">
-    Multidex Support</a> library: provides support for large apps that have 
-    more than 65K methods. This can happen if your app is using many 
-    libraries.</li> 
+    Multidex Support</a> library: provides support for large apps that have
+    more than 65K methods. This can happen if your app is using many
+    libraries.</li>
   </ul>
   </li>
   <li>For more information on the available support libraries, see the <a
@@ -392,14 +392,14 @@
 <h4 id="compatibility-playservices">Use Google Play services</h4>
  <ul>
   <li>Google Play services brings the best of Google APIs independent of
-   Android platform version. Consider using features from Google Play services 
+   Android platform version. Consider using features from Google Play services
    to offer the most streamlined Google experience on Android devices.</li>
-  <li>Google Play services also include useful APIs such as <a 
+  <li>Google Play services also include useful APIs such as <a
    href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
-   <code>GcmNetworkManager</code></a>, which provides much of Android 5.0’s 
+   <code>GcmNetworkManager</code></a>, which provides much of Android 5.0’s
    {@link android.app.job.JobScheduler} API for older versions of Android. </li>
   <li>Updates to Google Play services are distributed automatically by the
-   Google Play Store, and new versions of the client library are delivered 
+   Google Play Store, and new versions of the client library are delivered
    through the Android SDK Manager. </li>
  </ul>
 <h3 id="memory">Efficient memory usage</h3>
@@ -408,44 +408,44 @@
   <li>Adjusting your memory footprint dynamically helps to ensure compatibility
    across devices with different RAM configurations.</li>
   <li>Methods such as {@link android.app.ActivityManager#isLowRamDevice} and
-   {@link android.app.ActivityManager#getMemoryClass()} help determine memory 
-   constraints at runtime. Based on this information, you can scale down your 
-   memory usage. As an example, you can use lower resolution images on low memory 
+   {@link android.app.ActivityManager#getMemoryClass()} help determine memory
+   constraints at runtime. Based on this information, you can scale down your
+   memory usage. As an example, you can use lower resolution images on low memory
    devices.</li>
   <li>For more information on managing your app’s memory, see the Android
-   training on <a href="{@docRoot}training/articles/memory.html">Managing 
+   training on <a href="{@docRoot}training/articles/memory.html">Managing
    Your App's Memory</a>.</li>
  </ul>
 <h4 id="memory-longprocesses">Avoid long-running processes</h4>
  <ul>
   <li>Long-running processes stay resident in memory and can result in slowing
-   down the device. In most situations, your app should wake up for a given 
-   event, process data, and shut down. You should use <a 
-   href="https://developers.google.com/cloud-messaging">Google Cloud Messaging 
-   (GCM)</a> and/or <a 
+   down the device. In most situations, your app should wake up for a given
+   event, process data, and shut down. You should use <a
+   href="https://developers.google.com/cloud-messaging">Google Cloud Messaging
+   (GCM)</a> and/or <a
    href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
-   <code>GcmNetworkManager</code></a> to avoid long running background 
+   <code>GcmNetworkManager</code></a> to avoid long running background
    services and reduce memory pressure on the user’s device.</li>
  </ul>
 <h4 id="memory-benchmark">Benchmark memory usage</h4>
  <ul>
   <li>Android Studio provides memory benchmarking and profiling tools, enabling
    you to measure memory usage at run time. Benchmarking your app’s memory
-    footprint enables you to monitor memory usage over multiple versions of 
-    the app. This can help catch unintentional memory footprint growth. These 
+    footprint enables you to monitor memory usage over multiple versions of
+    the app. This can help catch unintentional memory footprint growth. These
     tools can be used in the following ways:
   <ul>
    <li>Use the <a
-    href="{@docRoot}tools/performance/memory-monitor/index.html">Memory 
-    Monitor</a> tool to find out whether undesirable garbage collection (GC) 
-    event patterns might be causing performance problems.</li> 
+    href="{@docRoot}tools/performance/memory-monitor/index.html">Memory
+    Monitor</a> tool to find out whether undesirable garbage collection (GC)
+    event patterns might be causing performance problems.</li>
    <li>Run <a
     href="{@docRoot}tools/performance/heap-viewer/index.html">Heap Viewer</a>
-    to identify object types that get or stay allocated unexpectedly or 
+    to identify object types that get or stay allocated unexpectedly or
     unnecessarily.</li>
    <li>Use <a
    href="{@docRoot}tools/performance/allocation-tracker/index.html">
-   Allocation Tracker</a> to identify where in your code the problem might 
+   Allocation Tracker</a> to identify where in your code the problem might
    be.</li>
   </ul>
   </li>
@@ -466,35 +466,35 @@
   <h2 id="cost">Data Cost</h2>
 </div>
 <p>Data plans in some countries can cost upwards of 10% of monthly income.
- Conserve data and give control to optimize user experience. Reduce data 
+ Conserve data and give control to optimize user experience. Reduce data
  consumption and give users control over your app’s use of data.</p>
 
 <h3 id="appsize">Reduce app size</h3>
 <h4 id="appsize-graphics">Reduce APK graphical asset size</h4>
  <ul>
   <li>Graphical assets are often the largest contributor to the size of the
-   APK. Optimizing these can result in smaller downloads and thus faster 
+   APK. Optimizing these can result in smaller downloads and thus faster
    installation times for users.</li>
   <li>For graphical assets like icons, use Scalable Vector Graphics (SVG)
-   format. SVG images are relatively tiny in size and can be rendered at 
-   runtime to any resolution. The <a 
-   href="{@docRoot}tools/support-library/index.html">Android Support</a> 
-   library provides a backward-compatible implementation for vector resources as 
-   far back as Android 2.1 (API level 7). Get started with vectors with <a 
-   class="external-link" 
+   format. SVG images are relatively tiny in size and can be rendered at
+   runtime to any resolution. The <a
+   href="{@docRoot}tools/support-library/index.html">Android Support</a>
+   library provides a backward-compatible implementation for vector resources as
+   far back as Android 2.1 (API level 7). Get started with vectors with <a
+   class="external-link"
    href="https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88">
    this Medium post</a>. </li>
   <li>For non-vector images, like photos, use <a
-   href="https://developers.google.com/speed/webp/">WebP</a>. WebP reduces 
-   image load times, saves network bandwidth, and is proven to result in 
-   smaller file sizes than its PNG and JPG counterparts, with at least the 
-   same image quality. Even at lossy settings, WebP can produce a nearly 
-   identical image. Android has had lossy WebP support since Android 4.0 (API 
+   href="https://developers.google.com/speed/webp/">WebP</a>. WebP reduces
+   image load times, saves network bandwidth, and is proven to result in
+   smaller file sizes than its PNG and JPG counterparts, with at least the
+   same image quality. Even at lossy settings, WebP can produce a nearly
+   identical image. Android has had lossy WebP support since Android 4.0 (API
    level 14: Ice Cream Sandwich) and support for lossless / transparent WebP since Android 4.2 (API level 17: Jelly Bean).</li>
   <li>If you have many large images across multiple densities, consider
-   using <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple 
-   APK support</a> to split your APK by density. This results in builds 
-   targeted for specific densities, meaning users with low-density devices 
+   using <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple
+   APK support</a> to split your APK by density. This results in builds
+   targeted for specific densities, meaning users with low-density devices
    won’t have to incur the penalty of unused high-density assets.</li>
   <li>A detailed guide on reducing your APK size can be found in <a
    class="external-link" href="https://medium.com/@wkalicinski/smallerapk-part-4-multi-apk-through-abi-and-density-splits-477083989006">
@@ -503,84 +503,84 @@
 <h4 id="appsize-code">Reduce code size</h4>
  <ul>
   <li>Be careful about using external libraries because not all libraries are
-   meant to be used in mobile apps. Ensure that the libraries your app is 
+   meant to be used in mobile apps. Ensure that the libraries your app is
    using are optimized for mobile use.</li>
   <li>Every library in your Android project is adding potentially unused code
-   to your APK. There are also some libraries that aren’t designed with mobile 
-   development in mind. These libraries can end up contributing to significant 
+   to your APK. There are also some libraries that aren’t designed with mobile
+   development in mind. These libraries can end up contributing to significant
    APK bloat.</li>
   <li>Consider optimizing your compiled code using a tool such as <a
-   href="{@docRoot}tools/help/proguard.html">ProGuard</a>. ProGuard identifies 
-   code that isn’t being used and removes it from your APK. Also <a 
-   class="external-link" 
+   href="{@docRoot}tools/help/proguard.html">ProGuard</a>. ProGuard identifies
+   code that isn’t being used and removes it from your APK. Also <a
+   class="external-link"
    href="http://tools.android.com/tech-docs/new-build-system/resource-shrinking">
-   enable resource shrinking</a> at build time by setting 
-   <code>minifyEnabled=true</code>, <code>shrinkResources=true</code> in 
-   <code>build.gradle</code>—this automatically removes unused resources from 
+   enable resource shrinking</a> at build time by setting
+   <code>minifyEnabled=true</code>, <code>shrinkResources=true</code> in
+   <code>build.gradle</code>—this automatically removes unused resources from
    your APK.</li>
   <li>When using Google Play services, you should <a
    href="{@docRoot}google/play-services/setup.html#add_google_play_services_to_your_project">
    selectively include</a> only the necessary APIs into your APK.</li>
   <li>For more information on reducing code size in your APK, see the Android
-   training on how to <a 
-   href="{@docRoot}training/articles/memory.html#DependencyInjection">Avoid 
+   training on how to <a
+   href="{@docRoot}training/articles/memory.html#DependencyInjection">Avoid
    dependency injection frameworks</a>.</li>
  </ul>
 <h4 id="appsize-external">Allow app to be moved to external (SD) storage</h4>
  <ul>
   <li>Low-cost devices often come with little on-device storage. Users can
-   extend this with SD cards; however, apps need to explicitly declare that 
+   extend this with SD cards; however, apps need to explicitly declare that
    they support being installed to external storage before users can move them.
   </li>
   <li>Allow your app to be installed to external storage using the <a
    href="{@docRoot}guide/topics/manifest/manifest-element.html#install"><code>
-   android:installLocation</code></a> flag in your AndroidManifest. For more 
-   information on enabling your app to be moved to external storage, see the 
-   Android guide on <a 
-   href="{@docRoot}guide/topics/data/install-location.html">App Install 
+   android:installLocation</code></a> flag in your AndroidManifest. For more
+   information on enabling your app to be moved to external storage, see the
+   Android guide on <a
+   href="{@docRoot}guide/topics/data/install-location.html">App Install
    Location</a>.</li>
  </ul>
 
 <h4 id="appsize-postinstall">Reduce post-install app disk usage</h4>
  <ul>
   <li>Keeping your app’s disk usage low means that users are less likely to
-   uninstall your app when the device is low on free space. When using caches, 
-   it’s important to apply bounds around your caches—this prevents your app’s 
-   disk usage from growing indefinitely. Be sure you put your cached data in 
-   {@link android.content.Context#getCacheDir()}—the system can delete files 
-   placed here as needed, so they won’t show up as storage committed to the 
+   uninstall your app when the device is low on free space. When using caches,
+   it’s important to apply bounds around your caches—this prevents your app’s
+   disk usage from growing indefinitely. Be sure you put your cached data in
+   {@link android.content.Context#getCacheDir()}—the system can delete files
+   placed here as needed, so they won’t show up as storage committed to the
    app.</li>
  </ul>
 
 <h3 id="configurablenetwork">Offer configurable network usage</h3>
-<h4 id="configurablenetwork-onboarding">Provide onboarding experiences for 
+<h4 id="configurablenetwork-onboarding">Provide onboarding experiences for
 subjective user choices</h4>
  <ul>
   <li>Apps that allow users to reduce data usage are well received, even if
-   they demand heavy data requirements. If your app uses a considerable amount 
-   of bandwidth (for example, video streaming apps), you can provide an 
-   onboarding experience for users to configure network usage. For example, 
-   you could allow the user to force lower-bitrate video streams on cellular 
+   they demand heavy data requirements. If your app uses a considerable amount
+   of bandwidth (for example, video streaming apps), you can provide an
+   onboarding experience for users to configure network usage. For example,
+   you could allow the user to force lower-bitrate video streams on cellular
    networks. </li>
   <li>Additional settings for users to control data syncing, prefetching, and
-   network usage behavior (for example, prefetch all starred news categories on 
+   network usage behavior (for example, prefetch all starred news categories on
    Wi-Fi only), also help users tailor your app’s behavior to their needs.</li>
   <li>For more information on managing network usage, see the Android training
-   on <a href="{@docRoot}training/basics/network-ops/managing.html">Managing 
+   on <a href="{@docRoot}training/basics/network-ops/managing.html">Managing
    Network Usage</a>.</li>
  </ul>
-<h4 id="configurablenetwork-preferences">Provide a network preferences 
+<h4 id="configurablenetwork-preferences">Provide a network preferences
 screen</h4>
  <ul>
   <li>You can navigate to the app’s network settings from outside the app by
-   means of a network preferences screen. You can invoke this screen from 
+   means of a network preferences screen. You can invoke this screen from
    either the system settings screen or the system data usage screen.</li>
   <li>To provide a network preferences screen that users can access from within
-   your app as well as from the system settings, in your app include an 
-   activity that supports the 
+   your app as well as from the system settings, in your app include an
+   activity that supports the
    {@link android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} action.</li>
   <li>For further information on adding a network preferences screen, see the
-   Android training on <a 
+   Android training on <a
    href="{@docRoot}training/basics/network-ops/managing.html#prefs">
    Implementing a Preferences Activity</a>.</li>
  </ul>
@@ -599,57 +599,57 @@
 <div class="headerLine">
   <h2 id="consumption">Battery Consumption</h2>
 </div>
-<p>Access to reliable power supplies varies, and outages can disrupt planned 
-charges. Defend your users' batteries against unnecessary drain by benchmarking 
-your battery use,  avoiding wakelocks, scheduling tasks, and monitoring sensor 
+<p>Access to reliable power supplies varies, and outages can disrupt planned
+charges. Defend your users' batteries against unnecessary drain by benchmarking
+your battery use,  avoiding wakelocks, scheduling tasks, and monitoring sensor
 requests.</p>
 <h3 id="consumption-reduce">Reduce battery consumption</h3>
  <ul>
   <li>Your app should do minimal activity when in the background and when the
    device is running on battery power.</li>
   <li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Wake
-   locks</a> are mechanisms to keep devices on so that they can perform 
-   background activities. Avoid using wake locks because they prevent the 
+   locks</a> are mechanisms to keep devices on so that they can perform
+   background activities. Avoid using wake locks because they prevent the
    device from going into low-power states.</li>
   <li>To reduce the number of device wake-ups, batch network activity. For more
-   information on batching, see the Android training on <a 
+   information on batching, see the Android training on <a
    href="{@docRoot}training/efficient-downloads/efficient-network-access.html">
    Optimizing Downloads for Efficient Network Access</a>.</li>
-  <li><a 
+  <li><a
    href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
-   <code>GcmNetworkManager</code></a> schedules tasks and lets Google Play 
-   services batch operations across the system. This greatly 
-   simplifies the implementation of common patterns, such as waiting for 
-   network connectivity, device charging state, retries, and backoff. Use 
-   <code>GcmNetworkManager</code> to perform non-essential background activity 
+   <code>GcmNetworkManager</code></a> schedules tasks and lets Google Play
+   services batch operations across the system. This greatly
+   simplifies the implementation of common patterns, such as waiting for
+   network connectivity, device charging state, retries, and backoff. Use
+   <code>GcmNetworkManager</code> to perform non-essential background activity
    when the device is charging and is connected to an unmetered network.</li>
   <li>Sensors, like GPS, can also have a significant drain on the battery. The
-   recommended way to request location is to use the FusedLocationProvider API. 
-   The <a 
-   href="https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi">FusedLocationProvider</a> API manages the 
-   underlying location technology and provides a simple API so that you can 
-   specify requirements&mdash;like high accuracy or low power&mdash;at a high 
-   level. It also optimizes the device's use of battery power by caching 
-   locations and batching requests across apps. For  more information on the 
-   ideal ways to request location, see the <a 
-   href="{@docRoot}training/location/retrieve-current.html">Getting the Last 
+   recommended way to request location is to use the FusedLocationProvider API.
+   The <a
+   href="https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi">FusedLocationProvider</a> API manages the
+   underlying location technology and provides a simple API so that you can
+   specify requirements&mdash;like high accuracy or low power&mdash;at a high
+   level. It also optimizes the device's use of battery power by caching
+   locations and batching requests across apps. For  more information on the
+   ideal ways to request location, see the <a
+   href="{@docRoot}training/location/retrieve-current.html">Getting the Last
    Known Location</a> training guide.
   </li>
  </ul>
 <h3 id="consumption-benchmark">Benchmark battery usage</h3>
  <ul>
   <li>Benchmarking your app’s usage in a controlled environment helps you
-   understand the battery-heavy tasks in your app. It is a good practice to 
-   benchmark your app’s battery usage to gauge efficiency and track changes 
+   understand the battery-heavy tasks in your app. It is a good practice to
+   benchmark your app’s battery usage to gauge efficiency and track changes
    over time.
 </li>
   <li><a
    href="{@docRoot}tools/performance/batterystats-battery-historian/index.html">
-   Batterystats</a> collects battery data about your apps, and <a 
+   Batterystats</a> collects battery data about your apps, and <a
    href="{@docRoot}tools/performance/batterystats-battery-historian/index.html">
-   Battery Historian</a> converts that data into an HTML visualization. For 
-   more information on reducing battery usage, see the Android training on <a 
-   href="{@docRoot}training/monitoring-device-state/index.html">Optimizing 
+   Battery Historian</a> converts that data into an HTML visualization. For
+   more information on reducing battery usage, see the Android training on <a
+   href="{@docRoot}training/monitoring-device-state/index.html">Optimizing
    Battery Life</a>.</li>
  </ul>
 
@@ -665,55 +665,55 @@
   <h2 id="contentsection">Content</h2>
 </div>
 <p>Make sure that your app works well on a variety of screens: offering good,
- crisp graphics and appropriate layouts on low resolution and physically small 
- screens. Ensure that your app is designed to be easily localized by 
- accommodating the variations between languages: allow for spacing, density, 
- order, emphasis, and wording variations. Also make sure that date, time, and 
- the like are internationalized and displayed according to the phone’s 
+ crisp graphics and appropriate layouts on low resolution and physically small
+ screens. Ensure that your app is designed to be easily localized by
+ accommodating the variations between languages: allow for spacing, density,
+ order, emphasis, and wording variations. Also make sure that date, time, and
+ the like are internationalized and displayed according to the phone’s
  settings.</p>
 
 <h3 id="content-responsive">Fast and responsive UI</h3>
 <h4 id="content-feedback">Touch feedback on all touchable items</h4>
  <ul>
   <li>Touch feedback adds a tactile feeling to the user interface. You should
-   ensure your app provides touch feedback on all touchable elements to reduce 
+   ensure your app provides touch feedback on all touchable elements to reduce
    the perceived app latency as much as possible.
 </li>
   <li><a
    href="https://www.google.com/design/spec/animation/responsive-interaction.html">
-   Responsive interaction</a> encourages deeper exploration of an app by 
-   creating timely, logical, and delightful screen reactions to user input. 
-   Responsive interaction elevates an app from an information-delivery service 
-   to an experience that communicates using multiple visual and tactile 
+   Responsive interaction</a> encourages deeper exploration of an app by
+   creating timely, logical, and delightful screen reactions to user input.
+   Responsive interaction elevates an app from an information-delivery service
+   to an experience that communicates using multiple visual and tactile
    responses.</li>
   <li>For more information, see the Android training on <a
-   href="{@docRoot}training/material/animations.html#Touch">Customizing Touch 
+   href="{@docRoot}training/material/animations.html#Touch">Customizing Touch
    Feedback</a>.</li>
  </ul>
 <h4 id="content-interactive">UI should always be interactive</h4>
  <ul>
   <li>Apps that are unresponsive when performing background activity feel slow
-   and reduce user satisfaction. Ensure your app always has a responsive UI 
-   regardless of any background activity. Achieve this by performing network 
-   operations or any heavy-duty operations in a background thread—keep the UI 
+   and reduce user satisfaction. Ensure your app always has a responsive UI
+   regardless of any background activity. Achieve this by performing network
+   operations or any heavy-duty operations in a background thread—keep the UI
    thread as idle as you can.</li>
   <li>Material Design apps use minimal visual changes when your app is loading
-   content by representing each operation with a single activity indicator. 
-   Avoid blocking dialogs with <a  
+   content by representing each operation with a single activity indicator.
+   Avoid blocking dialogs with <a
    href="https://www.google.com/design/spec/components/progress-activity.html">
    loading indicators</a>.</li>
   <li><a
-   href="http://www.google.com/design/spec/patterns/empty-states.html">Empty 
-   states</a> occur when the regular content of a view can’t be shown. It might 
-   be a list that has no items or a search that returns no results. Avoid 
-   completely empty states. The most basic empty state displays a 
-   non-interactive image and a text tagline. Where you don’t have an image, or 
-   the image is still loading, you should always show either a static 
-   placeholder, or create a dynamic placeholder by using the <a 
-   href="{@docRoot}tools/support-library/features.html#v7-palette">Palette 
+   href="http://www.google.com/design/spec/patterns/empty-states.html">Empty
+   states</a> occur when the regular content of a view can’t be shown. It might
+   be a list that has no items or a search that returns no results. Avoid
+   completely empty states. The most basic empty state displays a
+   non-interactive image and a text tagline. Where you don’t have an image, or
+   the image is still loading, you should always show either a static
+   placeholder, or create a dynamic placeholder by using the <a
+   href="{@docRoot}tools/support-library/features.html#v7-palette">Palette
    library</a> to generate placeholder colors that match the target image.</li>
   <li>For more information, see the Android training on <a
-   href="{@docRoot}training/articles/perf-anr.html">Keeping Your App 
+   href="{@docRoot}training/articles/perf-anr.html">Keeping Your App
    Responsive</a>.</li>
  </ul>
 <h4 id="content-60fps">Target 60 frames per second on low-cost devices</h4>
@@ -721,34 +721,34 @@
   <li>Ensure that your app always runs fast and smoothly, even on low-cost
    devices.</li>
   <li>Overdraw can significantly slow down your app—it occurs when the pixels
-   are being drawn more than once per pass. An example of this is when you have 
-   an image with a button placed on top of it. While some overdraw is 
-   unavoidable, it should be minimized to ensure a smooth frame rate. Perform 
-   <a href="{@docRoot}tools/performance/debug-gpu-overdraw/index.html">Debug 
+   are being drawn more than once per pass. An example of this is when you have
+   an image with a button placed on top of it. While some overdraw is
+   unavoidable, it should be minimized to ensure a smooth frame rate. Perform
+   <a href="{@docRoot}tools/performance/debug-gpu-overdraw/index.html">Debug
    GPU overdraw</a> on your app to ensure it is minimized.</li>
   <li>Android devices refresh the screen at 60 frames per second (fps), meaning
-   your app has to update the screen within roughly 16 milliseconds. <a 
-   href="{@docRoot}tools/performance/profile-gpu-rendering/index.html">Profile 
-   your app</a> using on-device tools to see if and when your app is not 
+   your app has to update the screen within roughly 16 milliseconds. <a
+   href="{@docRoot}tools/performance/profile-gpu-rendering/index.html">Profile
+   your app</a> using on-device tools to see if and when your app is not
    meeting this 16-ms average.</li>
   <li>Reduce or remove animations on low-cost devices to lessen the burden on
-   the device’s CPU and GPU.  For more information, see the Android training on 
-   <a href="{@docRoot}training/improving-layouts/index.html">Improving Layout 
+   the device’s CPU and GPU.  For more information, see the Android training on
+   <a href="{@docRoot}training/improving-layouts/index.html">Improving Layout
    Performance</a>. </li>
  </ul>
-<h4 id="content-firstload">If anticipated start speed is low, use launch screen 
+<h4 id="content-firstload">If anticipated start speed is low, use launch screen
 on first load</h4>
  <ul>
   <li>The launch screen is a user’s first experience of your application.
-   Launching your app while displaying a blank canvas increases its perceived 
-   loading time, so consider using a placeholder UI or a branded launch screen 
+   Launching your app while displaying a blank canvas increases its perceived
+   loading time, so consider using a placeholder UI or a branded launch screen
    to reduce the perceived loading time.</li>
   <li>A<a href="https://www.google.com/design/spec/patterns/launch-screens.html#launch-screens-types-of-launch-screens">
-   placeholder UI</a> is the most seamless launch transition, appropriate for 
+   placeholder UI</a> is the most seamless launch transition, appropriate for
    both app launches and in-app activity transitions.</li>
   <li><a
    href="https://www.google.com/design/spec/patterns/launch-screens.html#launch-screens-placeholder-ui">
-   Branded launch screens</a> provide momentary brand exposure, freeing the UI 
+   Branded launch screens</a> provide momentary brand exposure, freeing the UI
    to focus on content.</li>
   <li>For more information on implementing splash screens, see the <a
    href="https://www.google.com/design/spec/patterns/launch-screens.html">
@@ -758,24 +758,24 @@
  <ul>
   <li><a
    href="https://www.google.com/design/spec/material-design/introduction.html">
-   Material Design</a> is a visual language that synthesizes the classic 
-   principles of good design with the innovation and possibility of technology 
-   and science. Material Design aims to develop a single underlying system that 
-   allows for a unified experience across platforms and device sizes. Consider 
-   using key Material Design components so that users intuitively know how to 
+   Material Design</a> is a visual language that synthesizes the classic
+   principles of good design with the innovation and possibility of technology
+   and science. Material Design aims to develop a single underlying system that
+   allows for a unified experience across platforms and device sizes. Consider
+   using key Material Design components so that users intuitively know how to
    use your app.</li>
   <li>Ready-to-use Material Design components are available via the <a
-   href="{@docRoot}tools/support-library/features.html#design">Design Support 
-   library</a>. These components are supported in Android 2.1 (API level 7) and 
+   href="{@docRoot}tools/support-library/features.html#design">Design Support
+   library</a>. These components are supported in Android 2.1 (API level 7) and
    above.</li>
  </ul>
 <h3 id="localization">Localization</h3>
  <ul>
   <li>Your users could be from any part of the world and their first language
-   may not be yours. If you don’t present your app in a language that your 
-   users can read, it is a missed opportunity. You should therefore 
+   may not be yours. If you don’t present your app in a language that your
+   users can read, it is a missed opportunity. You should therefore
    localize your app for key regional languages.</li>
-  <li>To learn more, visit the Android training on <a 
+  <li>To learn more, visit the Android training on <a
  href="{@docRoot}training/basics/supporting-devices/languages.html">
  Supporting Different Languages</a>.</li>
  </ul>
diff --git a/docs/html/distribute/essentials/quality/core.jd b/docs/html/distribute/essentials/quality/core.jd
index 0ff44eb..637eaac 100644
--- a/docs/html/distribute/essentials/quality/core.jd
+++ b/docs/html/distribute/essentials/quality/core.jd
@@ -12,7 +12,7 @@
         <li><a href="#listing">Google Play</a></li>
 
   </ol>
-  
+
   <h2>Testing</h2>
   <ol>
     <li><a href="#test-environment">Setting Up a Test Environment</a></li>
@@ -24,7 +24,7 @@
     <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Tablet App Quality</a></li>
         <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Optimize Your App</a></li>
   </ol>
-  
+
 
 </div>
 </div>
@@ -85,7 +85,7 @@
     <th style="width:54px;">
       ID
     </th>
-    
+
 
     <th>
       Description
diff --git a/docs/html/distribute/essentials/quality/tablets.jd b/docs/html/distribute/essentials/quality/tablets.jd
index 2b2a5ae..3ff35f7 100644
--- a/docs/html/distribute/essentials/quality/tablets.jd
+++ b/docs/html/distribute/essentials/quality/tablets.jd
@@ -57,7 +57,7 @@
 <p>The first step in delivering a great tablet app experience is making sure
 that it meets the <em>core app quality criteria</em> for all of the devices
 and form factors that the app is targeting. For complete information, see the <a
-href="{@docRoot}distribute/essentials/quality/core.html">Core App Quality Guidelines</a>. 
+href="{@docRoot}distribute/essentials/quality/core.html">Core App Quality Guidelines</a>.
 </p>
 
 <p>
@@ -73,7 +73,7 @@
 </ul>
 
 <p>If your app is already uploaded to the Google Play Developer Console, you
-  can see how it is doing against these checks  
+  can see how it is doing against these checks
   by visiting the <a href="#google-play-optimization-tips">Optimization
   Tips page</a>.</p>
 
@@ -505,7 +505,7 @@
 
 <pre>&lt;uses-feature android:name="android.hardware.telephony" android:required="false" /&gt;</pre></li>
 
-<li>Similarly, check the manifest for <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> elements that 
+<li>Similarly, check the manifest for <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code>&lt;permission&gt;</code></a> elements that
 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply hardware
 feature requirements</a> that not be appropriate for tablets. If you find such
 permissions, make sure to explicitly declare a corresponding
diff --git a/docs/html/distribute/googleplay/_project.yaml b/docs/html/distribute/googleplay/_project.yaml
new file mode 100644
index 0000000..2dfded3
--- /dev/null
+++ b/docs/html/distribute/googleplay/_project.yaml
@@ -0,0 +1,6 @@
+name: "Google Play"
+home_url: /distribute/googleplay/
+description: "The premier store for distributing Android apps and games, with global reach and tools to help you gain traction in the marketplace."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/googleplay/cast.jd b/docs/html/distribute/googleplay/cast.jd
index 937ab58..3112f81 100644
--- a/docs/html/distribute/googleplay/cast.jd
+++ b/docs/html/distribute/googleplay/cast.jd
@@ -26,7 +26,7 @@
 
 <p>
   <a href="https://developers.google.com/cast/">Find out how to get your app Google
-  Cast-ready</a>. 
+  Cast-ready</a>.
 </p>
 
 <h2 id="tips">Tips</h2>
diff --git a/docs/html/distribute/googleplay/families/faq.jd b/docs/html/distribute/googleplay/families/faq.jd
index 363dc91..663850f 100644
--- a/docs/html/distribute/googleplay/families/faq.jd
+++ b/docs/html/distribute/googleplay/families/faq.jd
@@ -10,7 +10,7 @@
     font-weight:bold;
   }
   </style>
-  
+
 <div id="qv-wrapper">
 <ol id="qv">
 <h2>In this document</h2>
@@ -84,7 +84,7 @@
   <dd>
     No, you do not need to translate your privacy policy. However, if you
     distribute your apps in a few select countries, it is advised that you do
-    translate your privacy policy. 
+    translate your privacy policy.
   </dd>
 
   <dt>
@@ -173,7 +173,7 @@
     confirm that it is appropriate for families. Assuming your app complies with all program
     requirements, we expect that publishing time should not take any longer
     than normal; however, there may be a delay in publishing the app if it is
-    rejected during the Designed for Families review. 
+    rejected during the Designed for Families review.
   </dd>
 
   <dt>
@@ -301,7 +301,7 @@
 
   <dd>
     House ads are allowed, but they must comply with <a
-    href="https://support.google.com/googleplay/android-developer/answer/6184502#ads">ads policies</a>. 
+    href="https://support.google.com/googleplay/android-developer/answer/6184502#ads">ads policies</a>.
   </dd>
 
   <dt>
diff --git a/docs/html/distribute/googleplay/families/start.jd b/docs/html/distribute/googleplay/families/start.jd
index 0e773bd..f174dae 100644
--- a/docs/html/distribute/googleplay/families/start.jd
+++ b/docs/html/distribute/googleplay/families/start.jd
@@ -86,7 +86,7 @@
 
 <p class="note">
   <strong>Note</strong>: Published apps in the Designed for Families program
-  are also available to all users on Google Play. 
+  are also available to all users on Google Play.
 </p>
 
 <p>
diff --git a/docs/html/distribute/googleplay/tv.jd b/docs/html/distribute/googleplay/tv.jd
index a35edbc..981ba51 100644
--- a/docs/html/distribute/googleplay/tv.jd
+++ b/docs/html/distribute/googleplay/tv.jd
@@ -275,7 +275,7 @@
   the criteria, you’ll receive a <strong>notification email sent to your developer account
   address</strong>, with a summary of the areas that you need to address. When you’ve made
   the necessary adjustments, you can upload a new version of your app to the Developer
-  Console. 
+  Console.
 </p>
 
 <p>
@@ -296,7 +296,7 @@
 
   <li>
     <em>Approved</em> — Your app was reviewed and approved. The app will be
-    made available directly to Android TV users. 
+    made available directly to Android TV users.
   </li>
 
   <li>
diff --git a/docs/html/distribute/monetize/_project.yaml b/docs/html/distribute/monetize/_project.yaml
new file mode 100644
index 0000000..1936be2
--- /dev/null
+++ b/docs/html/distribute/monetize/_project.yaml
@@ -0,0 +1,6 @@
+name: "Earn"
+home_url: /distribute/monetize/
+description: "There are many ways to make money with your apps on Google Play, and we offer a variety of tools to make it easy."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/stories/_project.yaml b/docs/html/distribute/stories/_project.yaml
new file mode 100644
index 0000000..1c242bb
--- /dev/null
+++ b/docs/html/distribute/stories/_project.yaml
@@ -0,0 +1,6 @@
+name: "Stories"
+home_url: /distribute/stories/
+description: "Android developers, their apps, and their successes with Android and Google Play."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/stories/apps.jd b/docs/html/distribute/stories/apps.jd
index 9a642dc..76e9f5a 100644
--- a/docs/html/distribute/stories/apps.jd
+++ b/docs/html/distribute/stories/apps.jd
@@ -1,5 +1,4 @@
 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.
@@ -30,5 +29,5 @@
       data-sortOrder="-timestamp"
       data-cardSizes="6x6"
       data-items-per-page="15"
-      data-initial-results="3"></div>
+      data-initial-results="6"></div>
 </div></section>
\ No newline at end of file
diff --git a/docs/html/distribute/stories/apps/aftenposten.jd b/docs/html/distribute/stories/apps/aftenposten.jd
new file mode 100644
index 0000000..f1f388e
--- /dev/null
+++ b/docs/html/distribute/stories/apps/aftenposten.jd
@@ -0,0 +1,80 @@
+page.title=Aftenposten Improves Retention by Allowing Readers to Customize Notifications
+page.metaDescription=Aftenposten upgraded their app and improved user retention.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/aftenposten.png
+page.timestamp=1468270114
+
+@jd:body
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/aftenposten-icon.png" height=
+  "106">
+</div>
+
+<h3>
+  Background
+</h3>
+
+<p>
+  Aftenposten is one of the largest newspapers in Norway. Their <a class=
+  "external-link" href=
+  "https://play.google.com/store/apps/details?id=no.cita&amp;e=-EnableAppDetailsPageRedesign">
+  news app</a> was released on Android in 2013.
+</p>
+
+<p>
+  Aftenposten found that sending too many notifications, with no user control
+  over the default <em>on</em> setting or differentiation between general and
+  breaking news, caused many people to uninstall their app. They changed the
+  user controls for notifications and used the native Android share button in
+  the app, <strong>which reduced user uninstalls</strong>.
+</p>
+
+<h3>
+  What they did
+</h3>
+
+<p>
+  Aftenposten created a new onboarding flow that explained what notifications
+  were available, allowing readers to manage their preferences and customize up
+  to three topics. They also changed their custom share icon for the native
+  Android app.
+</p>
+
+<h3>
+  Results
+</h3>
+
+<p>
+  The results showed that with the new notifications management onboarding
+  screen, <strong>uninstalls decreased by 9.2% over 60 days</strong>. And with
+  the option to customize notifications, 51% of readers decided to keep two out
+  of three topics turned on. This led to a <strong>28% decrease over 60 days in
+  the number of users muting notifications completely</strong>. It also
+  provided insight into users’ content preferences, with <em>Sport</em> being
+  the least-favored notification.
+</p>
+
+<p>
+  Aftenposten also increased share interactions by 17% just by replacing their
+  custom share icon with the native Android share icon.
+</p>
+
+<p>
+  Aftenposten commented that: <em>Many of our users who see the onboarding
+  screen interact with it by turning off at least one notification topic. This
+  means that users are accepting push from one or more topics, instead of
+  turning it off completely. Moreover, readers are sharing more articles since
+  we added the standard share Android icon.</em>
+</p>
+
+<h3>
+  Get started
+</h3>
+
+<p>
+  Find out more about best practices for <a href=
+  "{@docRoot}design/patterns/notifications.html">Notifications</a> and <a href=
+  "{@docRoot}training/building-content-sharing.html">Building Apps with Content
+  Sharing</a>.
+</p>
diff --git a/docs/html/distribute/stories/apps/el-mundo.jd b/docs/html/distribute/stories/apps/el-mundo.jd
new file mode 100644
index 0000000..2ee813d
--- /dev/null
+++ b/docs/html/distribute/stories/apps/el-mundo.jd
@@ -0,0 +1,73 @@
+page.title=El Mundo Improves User Ratings and Engagement with Material Design
+page.metaDescription=El Mundo uses Material Design principles to enhance their app's user experience.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/el-mundo.png
+page.timestamp=1468270112
+
+@jd:body
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/el-mundo-icon.png" height=
+  "113">
+</div>
+
+<h3>
+  Background
+</h3>
+
+<p>
+  <a class="external-link" href=
+  "https://play.google.com/store/apps/details?id=com.gi.elmundo.main">El
+  Mundo</a>, one of Spain’s largest newspapers, integrated material design
+  principles into their app, which helped increase their Google Play Store
+  rating and improve user engagement.
+</p>
+
+<h3>
+  What they did
+</h3>
+
+<p>
+  El Mundo decided to completely redesign their app to provide a higher quality
+  user experience, making it easier for their readers to engage with news
+  content. By implementing material design guidelines, they created a
+  consistent look and feel throughout their app.
+</p>
+
+<p>
+  After analyzing user comments, El Mundo discovered that readers considered
+  their app to be complicated and out-of-date. Therefore, they decided to
+  simplify the app’s functionality by removing features that were redundant.
+  They also removed sections of their app that were less relevant to their
+  readers, such as weather updates and movie trailers. Finally, they applied a
+  brand new internal development framework that they now use consistently
+  across all of their apps.
+</p>
+
+<h3>
+  Results
+</h3>
+
+<p>
+  Following the re-launch of their material design app, El Mundo saw a
+  <strong>45% increase in the weekly install rate</strong>. Readers now spend
+  more time in the app, with the average time spent in-app increasing from one
+  to three minutes.
+</p>
+
+<p>
+  Additionally, this redesign resulted in more readers providing positive
+  feedback around the new experience, increasing the app rating in the Google
+  Play store by 25.8%, from 3.1 to 3.9.
+</p>
+
+<h3>
+  Get started
+</h3>
+
+<p>
+  Learn how to integrate <a class="external-link" href=
+  "https://material.google.com">Material Design</a> guidelines and follow
+  <a class="external-link" href="https://design.google.com">design
+  principles</a> for your app.
+</p>
diff --git a/docs/html/distribute/stories/apps/segundamano.jd b/docs/html/distribute/stories/apps/segundamano.jd
new file mode 100644
index 0000000..4cbf817
--- /dev/null
+++ b/docs/html/distribute/stories/apps/segundamano.jd
@@ -0,0 +1,63 @@
+page.title=Segundamano Develops Android-First as Its Fastest Channel for Growth
+page.metaDescription=Segundamano developed Android app to increase potential for growth.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/segundamano.png
+page.timestamp=1468270110
+
+@jd:body
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/segundamano-icon.png" height=
+  "113">
+</div>
+
+<h3>
+  Background
+</h3>
+
+<p>
+  <a class="external-link" href=
+  "https://play.google.com/store/apps/details?id=mx.segundamano.android">Segundamano</a>
+  is a leading shopping application in Mexico for second-hand products. They
+  started by placing classified ads in newspapers, progressed to desktop, and
+  over the past year have seen significant growth in mobile, which now accounts
+  for 70% of their business. They have also seen <strong>270% year-over-year
+  growth on the Android platform alone</strong>.
+</p>
+
+<h3>
+  What they did
+</h3>
+
+<p>
+  Segundamano shifted focus to mobile with their Android app because of the
+  high potential for growth. From July 2015 to January 2016, they saw an
+  increase of 55% in the number of classified ads on Android, higher than any
+  other platform. To leverage this momentum, Segundamano implemented two new
+  features on Android: premium offers and push notifications. Segundamano also
+  decided to implement material design in order to improve the in-app
+  experience and streamline the sales process for users.
+</p>
+
+<h3>
+  Results
+</h3>
+
+<p>
+  Following Segundamano’s enhancements to the user experience, they've seen an
+  increase in their star rating, a 4.7% lift in monthly active users, and a 7%
+  increase in sales of premium listings. Additionally, year-to-date, their
+  <strong>installs are over seven times higher on Android than on other
+  platforms</strong>.
+</p>
+
+<h3>
+  Get started
+</h3>
+
+<p>
+  Learn more about simplifying your in-app experience with <a href=
+  "{@docRoot}guide/topics/ui/notifiers/notifications.html">Notifications</a>
+  and the <a href="{@docRoot}design/material/index.html">material design
+  guidelines</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/distribute/stories/apps/tapps.jd b/docs/html/distribute/stories/apps/tapps.jd
new file mode 100644
index 0000000..1292139
--- /dev/null
+++ b/docs/html/distribute/stories/apps/tapps.jd
@@ -0,0 +1,366 @@
+page.title=Tapps Games Increases Installs by More Than 20% with Store Listing Experiments
+page.metaDescription=Tapps Games increased their use of store listing experiments in the Developer Console, with impressive results.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/tapps.png
+page.timestamp=1468270108
+
+@jd:body
+
+<style type="text/css">
+  span.positive{
+    color:green;
+    font-size: 125%;
+    font-weight:bold;">
+  }
+  span.negative{
+    color:red;
+    font-size: 125%;
+    font-weight:bold;">
+  }
+</style>
+
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/distribute/stories/tapps-logo.png" height="65">
+</div>
+
+<h3>
+  Background
+</h3>
+
+<p>
+  <a class="external-link" href=
+  "https://play.google.com/store/apps/dev?id=6615809648420562690">Tapps</a> is
+  a mobile game publisher in São Paulo, Brazil. With a mission of <em>creating
+  fun for everyone</em>, Tapps has a portfolio of over 200 titles on the Google
+  Play Store, with roughly 70% of their installs coming from Android. Store
+  listing experiments have provided invaluable metrics to help their growing
+  team understand what makes the most effective product listings.
+</p>
+
+<h3>
+  What they did
+</h3>
+
+<p>
+  Tapps has increased their use of store listing experiments in the Developer
+  Console. They recently expanded their marketing team to allocate greater time
+  and designated resources to the Developer Console tools. <strong>"We can’t
+  stress enough how much value the store listing experiments have brought us
+  over the past months. Right now, our marketing team has a substantial time
+  allocated to these tests every week,"</strong> said Felipe Watanabe, head of
+  marketing at Tapps. With icons and screenshots, Tapps tested variations in
+  color, character positioning, and the overall amount of graphic detail. In
+  the description tests, they found that shorter messages with clear calls to
+  action and appropriate language localizations were most successful.
+</p>
+
+<h3>
+  Results
+</h3>
+
+<p>
+  By frequently conducting store listing experiments, Tapps gained valuable
+  insights that they have applied across their greater portfolio of games.
+  Results showed that shortening messaging, using contrasting colors,
+  reordering screenshots, and simplifying graphics often led to variant results
+  representing an average increase in performance between 5% and 50%. After
+  making changes based on the test results, Tapps saw <strong>install rates
+  increase beyond 20-30%</strong>.
+</p>
+
+<h4>
+  Screen tests
+</h4>
+
+<p>
+  The following table compares the install rates for three apps based on
+  changes to each app's screenshot.
+</p>
+
+<p class="table-caption">
+  <strong>Table 1</strong>. Screen test results
+</p>
+
+<table>
+  <tr>
+    <th>
+      Original
+    </th>
+    <th>
+      Variant
+    </th>
+    <th>
+      Variant results
+    </th>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-screen-orig-3.png"
+      width="240">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-screen-var-3.png"
+      width="240">
+    </td>
+    <td>
+      <span class="positive">+25%</span>
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-screen-orig-1.png"
+      width="240">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-screen-var-1.png"
+      width="240">
+    </td>
+    <td>
+      <span class="positive">+17.1%</span>
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-screen-orig-2.png"
+      width="240">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-screen-var-2.png"
+      width="240">
+    </td>
+    <td>
+      <span class="positive">+7.4%</span>
+    </td>
+  </tr>
+
+</table>
+
+<h4>
+  Icon tests
+</h4>
+
+<p>
+  The following tables compare install rates for three apps based on changes
+  to each app's icon.
+</p>
+
+<p class="table-caption">
+  <strong>Table 2</strong>. Icon 1 test results
+</p>
+
+<table>
+  <tr>
+    <th>
+      Original
+    </th>
+    <th>
+      Variant 1
+    </th>
+    <th>
+      Variant 2
+    </th>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-orig-1.png">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-var-1.png">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-var-1-2.png">
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      ---
+    </td>
+    <td>
+      <span class="negative">-29.6%</span>
+    </td>
+    <td>
+      <span class="positive">+20.8%</span>
+    </td>
+  </tr>
+</table>
+
+<p class="table-caption">
+  <strong>Table 3</strong>. Icon 2 test results
+</p>
+
+<table>
+  <tr>
+    <th>
+      Original
+    </th>
+    <th>
+      Variant 1
+    </th>
+    <th>
+      Variant 2
+    </th>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-orig-2.png">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-var-2.png">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-var-2-2.png">
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      ---
+    </td>
+    <td>
+      <span class="positive">+5.1%</span>
+    </td>
+    <td>
+      <span class="positive">+19.7%</span>
+    </td>
+  </tr>
+</table>
+
+<p class="table-caption">
+  <strong>Table 4</strong>. Icon 3 test results
+</p>
+
+<table>
+  <tr>
+    <th>
+      Original
+    </th>
+    <th>
+      Variant 1
+    </th>
+    <th>
+      Variant 2
+    </th>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-orig-3.png">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-var-3.png">
+    </td>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-icon-var-3-2.png">
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      ---
+    </td>
+    <td>
+      <span class="negative">-17.7%</span>
+    </td>
+    <td>
+      <span class="positive">+50.7%</span>
+    </td>
+  </tr>
+</table>
+
+<h4>
+  Description tests
+</h4>
+
+<p>
+  The following table compares install rates for three apps based on changes to
+  each app's description text.
+</p>
+
+<p class="table-caption">
+  <strong>Table 5</strong>. Description test results
+</p>
+
+<table>
+  <tr>
+    <th>
+      Game
+    </th>
+    <th>
+      Original
+    </th>
+    <th>
+      Variant
+    </th>
+    <th>
+      Variant results
+    </th>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-logic-pic.png">
+      <strong>Logic Pic</strong>
+    </td>
+    <td>
+      <em>"Use logic to solve fun puzzles and discover hidden pictures! Logic
+      Pic is free!"</em>
+    </td>
+    <td>
+      <strong><em>"Discover all the hidden pictures in this challenging classic
+      japanese puzzle!"</em></strong>
+    </td>
+    <td>
+      <span class="positive">+10.7%</span>
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-candy-hills.png"
+      width="96"> <strong>Candy Hills</strong>
+    </td>
+    <td>
+      <em>"What will your candy park look like? Build it now in Candy
+      Hills!"</em>
+    </td>
+    <td>
+      <strong><em>"Build your own sweet candy park in Candy
+      Hills!"</em></strong>
+    </td>
+    <td>
+      <span class="positive">+8.2%</span>
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <img src="{@docRoot}images/distribute/stories/tapps-villains-corp.png"
+      width="96"> <strong>Villains Corp.</strong>
+    </td>
+    <td>
+      <em>"Be a real villain and CONQUER THE WORLD!"</em>
+    </td>
+    <td>
+      <strong><em>"Mwahahaha! Be a real villain and CONQUER THE
+      WORLD!"</em></strong>
+    </td>
+    <td>
+      <span class="positive">+6.8%</span>
+    </td>
+  </tr>
+</table>
+
+<h3>
+  Get started
+</h3>
+
+<p>
+  Find out more about <a href=
+  "{@docRoot}distribute/users/experiments.html">store listing experiments</a>.
+</p>
diff --git a/docs/html/distribute/stories/apps/upbeat-games.jd b/docs/html/distribute/stories/apps/upbeat-games.jd
new file mode 100644
index 0000000..02222d3
--- /dev/null
+++ b/docs/html/distribute/stories/apps/upbeat-games.jd
@@ -0,0 +1,69 @@
+page.title=Witch Puzzle Achieves 98% of International Installs on Android
+page.metaDescription=Witch Puzzle localized their app into 12 languages.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/witch-puzzle.png
+page.timestamp=1468270106
+
+@jd:body
+
+
+<div class="figure">
+  <img src="{@docRoot}images/distribute/stories/witch-puzzle-icon.png"
+  width="113">
+</div>
+
+<h3>
+  Background
+</h3>
+
+<p>
+  Located in São Paulo, Brazil, <a class="external-link" href=
+  "https://play.google.com/store/apps/dev?id=8995071809141037139">Upbeat
+  Games</a> is an indie game developer with a mission to build fun and easy
+  games that anyone can play. As a small team, the Upbeat crew reacted quickly
+  to their game’s growing installs in Asian countries, and is now seeing strong
+  international growth with their game <a class="external-link" href=
+  "https://play.google.com/store/apps/details?id=com.upbeatgames.witchpuzzle">Witch
+  Puzzle</a>.
+</p>
+
+<h3>
+  What they did
+</h3>
+
+<p>
+  After noticing that Witch Puzzle was gaining traction throughout Asia, Upbeat
+  localized their game into 12 languages, prioritizing countries with an
+  existing user base and high gross national income (GNI). This led to a direct
+  increase in installs.
+</p>
+
+<div class="figure">
+  <img src="{@docRoot}images/distribute/stories/japanese-witch-puzzle.png"
+  width="214">
+  <p class="img-caption">
+    Japanese version of Witch Puzzle
+  </p>
+</div>
+
+<h3>
+  Results
+</h3>
+
+<p>
+  “In the last three months, 98% of our international installs for Witch Puzzle
+  came from Android,” said Vinicius Sormani Heimbeck, Upbeat’s founder. Upbeat
+  applied these learnings across their portfolio of games. Now, <strong>75% of
+  their portfolio’s revenue is driven by Android</strong>.
+</p>
+
+<h3>
+  Get started
+</h3>
+
+<p>
+  Use the <a href=
+  "{@docRoot}distribute/tools/localization-checklist.html">Localization
+  Checklist</a> to learn more about tailoring your app for different markets to
+  drive installs and revenue, and to create a better overall user experience.
+</p>
diff --git a/docs/html/distribute/stories/games.jd b/docs/html/distribute/stories/games.jd
index fe059eb..daaac0d 100644
--- a/docs/html/distribute/stories/games.jd
+++ b/docs/html/distribute/stories/games.jd
@@ -1,5 +1,4 @@
 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.
diff --git a/docs/html/distribute/tools/_project.yaml b/docs/html/distribute/tools/_project.yaml
new file mode 100644
index 0000000..a034ede
--- /dev/null
+++ b/docs/html/distribute/tools/_project.yaml
@@ -0,0 +1,6 @@
+name: "Tools & Reference"
+home_url: /distribute/tools/
+description: "Here you'll find resources to help you publish your apps and games, acquire users, and monetize your investment."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/distribute/tools/promote/device-art.jd b/docs/html/distribute/tools/promote/device-art.jd
index 9b4dd14..7fef02f 100644
--- a/docs/html/distribute/tools/promote/device-art.jd
+++ b/docs/html/distribute/tools/promote/device-art.jd
@@ -221,7 +221,7 @@
       landOffset: [489,327],
       portRes: ['shadow', 'back', 'fore'],
       portOffset: [327,489],
-      portSize: [1440, 2560], 
+      portSize: [1440, 2560],
       archived: true
     },
     {
diff --git a/docs/html/distribute/tools/promote/linking.jd b/docs/html/distribute/tools/promote/linking.jd
index 025480b..13b1574 100644
--- a/docs/html/distribute/tools/promote/linking.jd
+++ b/docs/html/distribute/tools/promote/linking.jd
@@ -18,7 +18,7 @@
 
 <p>Google Play provides several link formats that let you bring users to your
 products in the way you want, from Android apps, web pages, ads, reviews,
-articles, social media posts, and more.</p> 
+articles, social media posts, and more.</p>
 
 <p>The link formats let you:</p>
 <ul>
diff --git a/docs/html/distribute/users/_project.yaml b/docs/html/distribute/users/_project.yaml
new file mode 100644
index 0000000..cd7083e
--- /dev/null
+++ b/docs/html/distribute/users/_project.yaml
@@ -0,0 +1,6 @@
+name: "Get Users"
+home_url: /distribute/users/
+description: "There are some common themes from successful Google Play developers. These best practices are critical to your app or game's success."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /distribute/_project.yaml
diff --git a/docs/html/google/_project.yaml b/docs/html/google/_project.yaml
new file mode 100644
index 0000000..051e6bc
--- /dev/null
+++ b/docs/html/google/_project.yaml
@@ -0,0 +1,5 @@
+name: "Google Services"
+home_url: /google/
+description: "Take advantage of the latest Google technologies through a single set of APIs, delivered across Android devices worldwide as part of Google Play services."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/google/backup/signup.jd b/docs/html/google/backup/signup.jd
index 598003d..86518b6 100644
--- a/docs/html/google/backup/signup.jd
+++ b/docs/html/google/backup/signup.jd
@@ -105,7 +105,7 @@
 8.4 You agree that you shall not remove, obscure, or alter any proprietary rights notices (including copyright, trade mark notices) which may be affixed to or contained within the Service.
 
 <h3>9. License from Google</h3>
-9.1 Subject to terms and conditions of these Terms, Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the Service as provided to you by Google. This license is for the sole purpose of enabling you to use and enjoy the benefit of the Service as provided by Google, in the manner permitted by the Terms. 
+9.1 Subject to terms and conditions of these Terms, Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the Service as provided to you by Google. This license is for the sole purpose of enabling you to use and enjoy the benefit of the Service as provided by Google, in the manner permitted by the Terms.
 
 9.2 You may not (and you may not permit anyone else to) copy, modify, create a derivative work of, reverse engineer, decompile or otherwise attempt to extract the source code from the Service or any part thereof, unless this is expressly permitted or required by law, or unless you have been specifically told that you may do so by Google, in writing.
 
@@ -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="dac-button dac-raised dac-primary disabled ndk" 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>
 
@@ -234,7 +234,7 @@
       );
     }
   }
-  
+
   function boxFocusChanged(obj, focused) {
     if (focused) {
       if(obj.value == DEFAULT_TEXT){
@@ -248,14 +248,14 @@
       }
     }
   }
-  
-  
+
+
   function onFormInput() {
     /* verify that the TOS is agreed and a bit version is chosen */
     var packagename = $("#pname").val();
     if ($("input#agree").is(":checked")
         && packagename.length
-        && packagename != DEFAULT_TEXT) {      
+        && packagename != DEFAULT_TEXT) {
       /* reveal the button */
       $("a#registerButton").removeClass('disabled');
     } else {
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd
index 027ba23..9b7ff0b 100644
--- a/docs/html/google/index.jd
+++ b/docs/html/google/index.jd
@@ -53,7 +53,7 @@
 <section class="dac-section dac-invert dac-darken-bg" style="background-image: url(/images/distribute/google-play-bg.jpg)"><div class="wrap">
   <h1 class="dac-section-title">Google Play developer tools</h1>
   <div class="dac-section-subtitle">
-    Scale your publishing, manage your catalog, build revenue using Google Play developer tools. 
+    Scale your publishing, manage your catalog, build revenue using Google Play developer tools.
   </div>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="collection:google/landing/googleplay"
diff --git a/docs/html/google/play/billing/api.jd b/docs/html/google/play/billing/api.jd
index 6816ff1..62f3367 100644
--- a/docs/html/google/play/billing/api.jd
+++ b/docs/html/google/play/billing/api.jd
@@ -34,7 +34,7 @@
  <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>
 
diff --git a/docs/html/google/play/billing/billing_admin.jd b/docs/html/google/play/billing/billing_admin.jd
index 05f3ad5..292cfcc 100644
--- a/docs/html/google/play/billing/billing_admin.jd
+++ b/docs/html/google/play/billing/billing_admin.jd
@@ -748,10 +748,9 @@
 intent.</p>
 
 <p class="note">
-  <strong>Note:</strong> When a user completes a test purchase, the
-  <code>orderId</code> field remains blank. To track test transactions, use
-  the <code>purchaseToken</code> field instead. For more information about
-  working with test purchases, see <a
+  <strong>Note:</strong> Test purchases don't have an <code>orderId</code>
+  field. To track test transactions, you use the <code>purchaseToken</code>
+  field instead. For more information about working with test purchases, see <a
   href="{@docRoot}google/play/billing/billing_testing.html">Testing In-app
   Billing</a>.
 </p>
@@ -766,14 +765,14 @@
 
 <p>For transactions dated 5 December 2012 or later, Google payments assigns a
 Merchant Order Number (rather than a Google Order Number) and reports the Merchant
-Order Number as the value of <code>orderID</code>. Here's an
+Order Number as the value of <code>orderId</code>. Here's an
 example:</p>
 
 <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
-<code>orderID</code>. Here's an example of an <code>orderID</code> holding a
+<code>orderId</code>. Here's an example of an <code>orderId</code> holding a
 Google Order Number:</p>
 
 <pre>"orderId" : "556515565155651"</pre>
diff --git a/docs/html/google/play/billing/billing_testing.jd b/docs/html/google/play/billing/billing_testing.jd
index 755f3ff..44b7ad3 100644
--- a/docs/html/google/play/billing/billing_testing.jd
+++ b/docs/html/google/play/billing/billing_testing.jd
@@ -81,8 +81,8 @@
 
 <p>
   Once authorized for testing access, those users can make purchases without
-  being charged. The <code>orderId</code> field for test purchases remains
-  blank, ensuring that there are no actual charges to user accounts.
+  being charged. Test purchases don't have an <code>orderId</code> field, which
+  ensures that there are no actual charges to user accounts.
 </p>
 
 <p class="note">
@@ -127,11 +127,11 @@
 purchase dialog.</p>
 
 <p class="note">
-  <strong>Note:</strong> For test purchases, leave the {@code orderId} field
-  blank. You can use the {@code purchaseToken} field to identify test purchases.
+  <strong>Note:</strong> Test purchases don't have an <code>orderId</code>
+  field. To track test purchases, you use the <code>purchaseToken</code> field
+  instead.
 </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
diff --git a/docs/html/google/play/licensing/adding-licensing.jd b/docs/html/google/play/licensing/adding-licensing.jd
index 3bf4c1a..bfd4f91 100644
--- a/docs/html/google/play/licensing/adding-licensing.jd
+++ b/docs/html/google/play/licensing/adding-licensing.jd
@@ -7,7 +7,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
   <h2>In this document</h2>
   <ol>
   <li><a href="#manifest-permission">Adding the Licensing Permission</a></li>
@@ -42,7 +42,7 @@
   <li><a href="#app-publishing">Publishing a Licensed Application</a></li>
   <li><a href="#support">Where to Get Support</a></li>
 </ol>
-  
+
 </div>
 </div>
 
@@ -572,7 +572,7 @@
 </li>
 <li>In case of a recoverable local or server error, such as when the network is
 not available to send the request, {@code LicenseChecker} passes a {@code RETRY} response to
-your {@code Policy} object's <code>processServerResponse()</code> method. 
+your {@code Policy} object's <code>processServerResponse()</code> method.
   <p>Also, both the {@code allow()} and {@code dontAllow()} callback methods receive a
 <code>reason</code> argument. The {@code allow()} method's reason is usually {@code
 Policy.LICENSED} or {@code Policy.RETRY} and the {@code dontAllow()} reason is usually {@code
@@ -672,7 +672,7 @@
             return;
         }
         displayResult(getString(R.string.dont_allow));
-        
+
         if (reason == Policy.RETRY) {
             // If the reason received from the policy is RETRY, it was probably
             // due to a loss of connection with the service, so we should give the
@@ -854,9 +854,9 @@
 <h3 id="account-key">Embed your public key for licensing</h3>
 
 <p>For each application, the Google Play service automatically
-generates a  2048-bit RSA public/private key pair that is used for 
-licensing and in-app billing. The key pair is uniquely associated with the 
-application. Although associated with the application, the key pair is 
+generates a  2048-bit RSA public/private key pair that is used for
+licensing and in-app billing. The key pair is uniquely associated with the
+application. Although associated with the application, the key pair is
 <em>not</em> the same as the key that you use to sign your applications (or derived from it).</p>
 
 <p>The Google Play Developer Console exposes the public key for licensing to any
@@ -876,11 +876,11 @@
 href="http://play.google.com/apps/publish">Developer Console</a> and sign in.
 Make sure that you sign in to the account from which the application you are
 licensing is published (or will be published). </li>
-<li>In the application details page, locate the <strong>Services & APIs</strong> 
+<li>In the application details page, locate the <strong>Services & APIs</strong>
 link and click it. </li>
-<li>In the <strong>Services & APIs</strong> page, locate the 
-<strong>Licensing & In-App Billing</strong> section. Your public key for 
-licensing is given in the 
+<li>In the <strong>Services & APIs</strong> page, locate the
+<strong>Licensing & In-App Billing</strong> section. Your public key for
+licensing is given in the
 <strong>Your License Key For This Application</strong> field. </li>
 </ol>
 
diff --git a/docs/html/google/play/licensing/licensing-reference.jd b/docs/html/google/play/licensing/licensing-reference.jd
index d4ca79a..2b16299 100644
--- a/docs/html/google/play/licensing/licensing-reference.jd
+++ b/docs/html/google/play/licensing/licensing-reference.jd
@@ -7,7 +7,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
   <h2>In this document</h2>
   <ol>
     <li><a href="#lvl-summary">LVL Classes and Interfaces</a></li>
@@ -418,7 +418,7 @@
 maintained in the <code>processServerResponse()</code> method, not shown. </p>
 
 
-<pre>    
+<pre>
 public boolean allowAccess() {
     long ts = System.currentTimeMillis();
     if (mLastResponse == LicenseResponse.LICENSED) {
diff --git a/docs/html/google/play/licensing/overview.jd b/docs/html/google/play/licensing/overview.jd
index ecb384d..8d7977e 100755
--- a/docs/html/google/play/licensing/overview.jd
+++ b/docs/html/google/play/licensing/overview.jd
@@ -6,14 +6,14 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
   <h2>Quickview</h2>
   <ul>
     <li>Licensing allows you to verify your app was purchased from Google Play</li>
     <li>Your app maintains control of how it enforces its licensing status</li>
     <li>The service is free for all developers who publish on Google Play</li>
   </ul>
-  
+
   <h2>In this document</h2>
   <ol>
   <li><a href="#Secure">License Responses are Secure</a></li>
@@ -21,7 +21,7 @@
   <li><a href="#Reqs">Requirements and Limitations</a></li>
   <li><a href="#CopyProtection">Replacement for Copy Protection</a></li>
 </ol>
-  
+
 </div>
 </div>
 
@@ -107,10 +107,10 @@
 server and you.</p>
 
 <p>The licensing service generates a single licensing key pair for each
-application and exposes the public key in your application's 
-<strong>Services & APIs</strong> page in the Developer Console. You must copy 
-the public key from the Developer Console and embed it in your application 
-source code. The server retains the private key internally and uses it to sign 
+application and exposes the public key in your application's
+<strong>Services & APIs</strong> page in the Developer Console. You must copy
+the public key from the Developer Console and embed it in your application
+source code. The server retains the private key internally and uses it to sign
 license responses for the applications you publish with that account.</p>
 
 <p>When your application receives a signed response, it uses the embedded public
@@ -209,7 +209,7 @@
 secure.</li>
 <li>Adding licensing to an application does not affect the way the application
 functions when run on a device that does not offer Google Play.</li>
-<li>You can implement licensing controls for a free app, but only if you're using the service to 
+<li>You can implement licensing controls for a free app, but only if you're using the service to
 provide <a
 href="{@docRoot}google/play/expansion-files.html">APK expansion files</a>.</li>
 </ul>
diff --git a/docs/html/google/play/publishing/multiple-apks.jd b/docs/html/google/play/publishing/multiple-apks.jd
index fd4481d..a878fb3 100644
--- a/docs/html/google/play/publishing/multiple-apks.jd
+++ b/docs/html/google/play/publishing/multiple-apks.jd
@@ -250,11 +250,11 @@
   </li>
 
   <li><strong>Device feature sets</strong>
-    <p>This is based on your manifest file's <a 
+    <p>This is based on your manifest file's <a
 href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a>
 element(s).</p>
     <p>For example, you can provide one APK for devices that support multitouch and another
-APK for devices that do not support multitouch. See 
+APK for devices that do not support multitouch. See
 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#features-reference">Features
 Reference</a> for a list of features supported by the platform.</p>
   <br/>
diff --git a/docs/html/guide/_project.yaml b/docs/html/guide/_project.yaml
new file mode 100644
index 0000000..d1f8e5e
--- /dev/null
+++ b/docs/html/guide/_project.yaml
@@ -0,0 +1,6 @@
+name: "API Guides"
+home_url: /guide/
+description: "Android provides a rich application framework that allows you to build innovative apps and games for mobile devices in a Java language environment."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/guide/appendix/app-intents.jd b/docs/html/guide/appendix/app-intents.jd
index 8898927..5fb004f 100644
--- a/docs/html/guide/appendix/app-intents.jd
+++ b/docs/html/guide/appendix/app-intents.jd
@@ -89,13 +89,13 @@
        <tr><td>pitch</td><td>Panorama center-of-view in degrees from
            -90 (look straight up) to 90 (look straight down.)</td></tr>
        <tr><td>zoom</td><td>Panorama zoom. 1.0 = normal zoom, 2.0 = zoomed in 2x, 3.0 = zoomed in 4x, and so on.<br />
-       A zoom of 1.0 is 90 degree horizontal FOV for a nominal                                             
-       landscape mode 4 x 3 aspect ratio display.                                                          
-       Android phones in portrait mode will adjust the zoom so that                                        
-       the vertical FOV is approximately the same as the landscape vertical                                
-       FOV. This means that the horizontal FOV of an Android phone in portrait                             
-       mode is much narrower than in landscape mode. This is done to minimize                              
-       the fisheye lens effect that would be present if a 90 degree horizontal                             
+       A zoom of 1.0 is 90 degree horizontal FOV for a nominal
+       landscape mode 4 x 3 aspect ratio display.
+       Android phones in portrait mode will adjust the zoom so that
+       the vertical FOV is approximately the same as the landscape vertical
+       FOV. This means that the horizontal FOV of an Android phone in portrait
+       mode is much narrower than in landscape mode. This is done to minimize
+       the fisheye lens effect that would be present if a 90 degree horizontal
        FOV was used in portrait mode.</td></tr>
        <tr><td>mapZoom</td><td>The map zoom of the map location associated with this panorama. This value is passed on to the
        Maps activity when the Street View "Go to Maps" menu item is chosen. It corresponds to the <em>z</em> parameter in
diff --git a/docs/html/guide/appendix/g-app-intents.jd b/docs/html/guide/appendix/g-app-intents.jd
index 9ec72db..21c927b 100644
--- a/docs/html/guide/appendix/g-app-intents.jd
+++ b/docs/html/guide/appendix/g-app-intents.jd
@@ -83,7 +83,7 @@
           </td>
       </tr>
       <tr>
-          <td>Google Streetview</td>          
+          <td>Google Streetview</td>
 <td>google.streetview:cbll=<em>lat</em>,<em>lng</em>&amp;cbp=1,<em>yaw</em>,,<em>pitch</em>,<em>zoom</em>&amp;mz=<em>mapZoom</em>
           </td>
           <td>VIEW</td>
diff --git a/docs/html/guide/appendix/glossary.jd b/docs/html/guide/appendix/glossary.jd
index a200a6c..75a533a 100755
--- a/docs/html/guide/appendix/glossary.jd
+++ b/docs/html/guide/appendix/glossary.jd
@@ -15,7 +15,7 @@
 </dd>
 
     <dt id="dex">.dex file </dt>
-    <dd>Compiled Android application code file. 
+    <dd>Compiled Android application code file.
        <p>Android programs are compiled into .dex (Dalvik Executable) files, which
         are in turn zipped into a single .apk file on the device. .dex files can
         be created by automatically translating compiled applications written in
@@ -26,7 +26,7 @@
         a string value assigned to an Intent. Action strings can be defined by Android
         or by a third-party developer. For example, android.intent.action.VIEW
         for a Web URL, or com.example.rumbler.SHAKE_PHONE for a custom application
-        to vibrate the phone. 
+        to vibrate the phone.
     <p>Related: <a href="#intent">Intent</a>.</p>
     </dd>
 
@@ -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 Android Studio, 
-        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,7 +90,7 @@
     <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 Android Studio, 
+    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>
 
@@ -100,7 +100,7 @@
     is not intended to persist in the history stack, contain complex layout,
     or perform complex actions. Android provides a default simple dialog for
     you with optional buttons, though you can define your own dialog layout.
-    The base class for dialogs is {@link android.app.Dialog Dialog}. 
+    The base class for dialogs is {@link android.app.Dialog Dialog}.
     <p>Related: <a href="#activity">Activity</a>.</p></dd>
 
     <dt id="drawable">Drawable</dt>
@@ -113,7 +113,7 @@
     &mdash; xml or bitmap files that describe the image. Drawable resources
     are compiled into subclasses of {@link android.graphics.drawable}. For
     more information about drawables and other resources, see <a
-    href="{@docRoot}guide/topics/resources/resources-i18n.html">Resources</a>. 
+    href="{@docRoot}guide/topics/resources/resources-i18n.html">Resources</a>.
     <p>Related: <a href="#resources">Resources</a>, <a href="#canvas">Canvas
     </a></p></dd>
 
@@ -133,7 +133,7 @@
     based on the criteria supplied in the Intent and the Intent Filters
     defined by other applications. For more information, see <a
     href="{@docRoot}guide/components/intents-filters.html">Intents and
-    Intent Filters</a>. 
+    Intent Filters</a>.
     <p>Related: <a href="#intentfilter">Intent Filter</a>, <a
     href="#broadcastreceiver">Broadcast Receiver</a>.</p></dd>
 
@@ -147,7 +147,7 @@
     application/activity that best matches the Intent and criteria. For more
     information, see <a
     href="{@docRoot}guide/components/intents-filters.html">Intents and
-    Intent Filters</a>. 
+    Intent Filters</a>.
     <p>Related: <a href="#intent">Intent</a>, <a
     href="#broadcastreceiver">Broadcast Receiver</a>.</p></dd>
 
@@ -155,12 +155,12 @@
     <dd>An application class that listens for Intents that are broadcast,
     rather than being sent to a single target application/activity. The system
     delivers a broadcast Intent to all interested broadcast receivers, which
-    handle the Intent sequentially. 
-    <p>Related: <a href="#intent">Intent</a>, <a href="#intentfilter">Intent 
+    handle the Intent sequentially.
+    <p>Related: <a href="#intent">Intent</a>, <a href="#intentfilter">Intent
     Filter</a>.</p> </dd>
-	
+
     <dt id="layoutresource">Layout Resource</dt>
-    <dd>An XML file that describes the layout of an Activity screen. 
+    <dd>An XML file that describes the layout of an Activity screen.
     <p>Related: <a href="#resources">Resources</a></p></dd>
 
     <dt id="manifest">Manifest File</dt>
@@ -175,15 +175,15 @@
     <dd>A resizeable bitmap resource that can be used for backgrounds or other
     images on the device. See <a
     href="{@docRoot}guide/topics/resources/available-resources.html#ninepatch">
-    Nine-Patch Stretchable Image</a> for more information. 
+    Nine-Patch Stretchable Image</a> for more information.
     <p>Related: <a href="#resources">Resources</a>.</p></dd>
 
     <dt id="opengles">OpenGL ES</dt>
     <dd> Android provides OpenGL ES libraries that you can use for fast,
     complex 3D images. It is harder to use than a Canvas object, but
-    better for 3D objects. The {@link android.opengl} and 
-    {@link javax.microedition.khronos.opengles} packages expose 
-    OpenGL ES functionality. 
+    better for 3D objects. The {@link android.opengl} and
+    {@link javax.microedition.khronos.opengles} packages expose
+    OpenGL ES functionality.
     <p>Related: <a href="#canvas">Canvas</a>, <a href="#surface">Surface</a></p></dd>
 
     <dt id="resources">Resources</dt>
@@ -205,15 +205,15 @@
     <dt id="service">Service</dt>
     <dd>An object of class {@link android.app.Service} that runs in the
     background (without any UI presence) to perform various persistent
-    actions, such as playing music or monitoring network activity. 
+    actions, such as playing music or monitoring network activity.
     <p>Related: <a href="#activity">Activity</a></p></dd>
 
     <dt id="surface">Surface</dt>
     <dd>An object of type {@link android.view.Surface} representing a block of
     memory that gets composited to the screen. A Surface holds a Canvas object
     for drawing, and provides various helper methods to draw layers and resize
-    the surface. You should not use this class directly; use 
-    {@link android.view.SurfaceView} instead. 
+    the surface. You should not use this class directly; use
+    {@link android.view.SurfaceView} instead.
     <p>Related: <a href="#canvas">Canvas</a></p></dd>
 
     <dt id="surfaceview">SurfaceView</dt>
@@ -249,7 +249,7 @@
     windows, and so on). It receives calls from its parent object (see
     viewgroup, below)to draw itself, and informs its parent object about where
     and how big it would like to be (which may or may not be respected by the
-    parent). For more information, see {@link android.view.View}. 
+    parent). For more information, see {@link android.view.View}.
     <p>Related: <a href="#viewgroup">Viewgroup</a>, <a href="#widget">Widget
     </a></p></dd>
 
@@ -259,18 +259,18 @@
     they can be, as well as for calling each to draw itself when appropriate.
     Some viewgroups are invisible and are for layout only, while others have
     an intrinsic UI (for instance, a scrolling list box). Viewgroups are all
-    in the {@link android.widget widget} package, but extend 
-    {@link android.view.ViewGroup ViewGroup}. 
+    in the {@link android.widget widget} package, but extend
+    {@link android.view.ViewGroup ViewGroup}.
     <p>Related: <a href="#view">View</a></p></dd>
 
     <dt id="widget">Widget</dt>
     <dd>One of a set of fully implemented View subclasses that render form
     elements and other UI components, such as a text box or popup menu.
     Because a widget is fully implemented, it handles measuring and drawing
-    itself and responding to screen events. Widgets are all in the 
+    itself and responding to screen events. Widgets are all in the
     {@link android.widget} package. </dd>
 
- <!-- 
+ <!--
     <dt id="panel">Panel</dt>
     <dd> A panel is a concept not backed by a specific class. It is a View of
     some sort that is tied in closely to a parent window, but can handle
diff --git a/docs/html/guide/components/activities.jd b/docs/html/guide/components/activities.jd
index 070154d..e757288 100644
--- a/docs/html/guide/components/activities.jd
+++ b/docs/html/guide/components/activities.jd
@@ -622,7 +622,7 @@
 
 <p>The system calls {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
 before making the activity vulnerable to destruction. The system passes this method
-a {@link android.os.Bundle} in which you can save 
+a {@link android.os.Bundle} in which you can save
 state information about the activity as name-value pairs, using methods such as {@link
 android.os.Bundle#putString putString()} and {@link
 android.os.Bundle#putInt putInt()}. Then, if the system kills your application
diff --git a/docs/html/guide/components/fragments.jd b/docs/html/guide/components/fragments.jd
index f9c2a26..951d042 100644
--- a/docs/html/guide/components/fragments.jd
+++ b/docs/html/guide/components/fragments.jd
@@ -36,7 +36,7 @@
     <li>{@link android.app.FragmentManager}</li>
     <li>{@link android.app.FragmentTransaction}</li>
   </ol>
-  
+
   <h2>See also</h2>
   <ol>
     <li><a href="{@docRoot}training/basics/fragments/index.html">Building a Dynamic UI with Fragments</a></li>
@@ -306,7 +306,7 @@
   <ul>
     <li>Supply the {@code android:id} attribute with a unique ID.</li>
     <li>Supply the {@code android:tag} attribute with a unique string.</li>
-    <li>If you provide neither of the previous two, the system uses the ID of the container 
+    <li>If you provide neither of the previous two, the system uses the ID of the container
 view.</li>
   </ul>
 </div>
@@ -365,7 +365,7 @@
 
 <p>For an example activity that uses a fragment as a background worker, without a UI, see the {@code
 FragmentRetainInstance.java} sample, which is included in the SDK samples (available through the
-Android SDK Manager) and located on your system as 
+Android SDK Manager) and located on your system as
 <code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
 
 
@@ -381,7 +381,7 @@
   <li>Get fragments that exist in the activity, with {@link
 android.app.FragmentManager#findFragmentById findFragmentById()} (for fragments that provide a UI in
 the activity layout) or {@link android.app.FragmentManager#findFragmentByTag
-findFragmentByTag()} (for fragments that do or don't provide a UI).</li> 
+findFragmentByTag()} (for fragments that do or don't provide a UI).</li>
   <li>Pop fragments off the back stack, with {@link
 android.app.FragmentManager#popBackStack()} (simulating a <em>Back</em> command by the user).</li>
   <li>Register a listener for changes to the back stack, with {@link
@@ -568,7 +568,7 @@
 
 <p>If the activity has not implemented the interface, then the fragment throws a
 {@link java.lang.ClassCastException}.
-On success, the {@code mListener} member holds a reference to activity's implementation of 
+On success, the {@code mListener} member holds a reference to activity's implementation of
 {@code OnArticleSelectedListener}, so that fragment A can share events with the activity by calling
 methods defined by the {@code OnArticleSelectedListener} interface. For example, if fragment A is an
 extension of {@link android.app.ListFragment}, each time
@@ -798,7 +798,7 @@
 
 <p>The second fragment, {@code DetailsFragment} shows the play summary for the item selected from
 the list from {@code TitlesFragment}:</p>
- 
+
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
 
 <p>Recall from the {@code TitlesFragment} class, that, if the user clicks a list item and the
@@ -811,7 +811,7 @@
 
 {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
 details_activity}
- 
+
 <p>Notice that this activity finishes itself if the configuration is landscape, so that the main
 activity can take over and display the {@code DetailsFragment} alongside the {@code TitlesFragment}.
 This can happen if the user begins the {@code DetailsActivity} while in portrait orientation, but
diff --git a/docs/html/guide/components/index.jd b/docs/html/guide/components/index.jd
index 811d015..d596b3b 100644
--- a/docs/html/guide/components/index.jd
+++ b/docs/html/guide/components/index.jd
@@ -1,7 +1,7 @@
 page.title=App Components
 page.landing=true
-page.landing.intro=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents. 
-page.metaDescription=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents. 
+page.landing.intro=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents.
+page.metaDescription=Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your app and how to connect them together using intents.
 page.landing.image=images/develop/app_components.png
 page.image=images/develop/app_components.png
 
@@ -11,7 +11,7 @@
 
   <div class="col-6">
     <h3>Blog Articles</h3>
-    
+
     <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
       <h4>Using DialogFragments</h4>
       <p>In this post, I’ll show how to use DialogFragments with the v4 support library (for backward compatibility on pre-Honeycomb devices) to show a simple edit dialog and return a result to the calling Activity using an interface.</p>
@@ -21,7 +21,7 @@
       <h4>Fragments For All</h4>
       <p>Today we’ve released a static library that exposes the same Fragments API (as well as the new LoaderManager and a few other classes) so that applications compatible with Android 1.6 or later can use fragments to create tablet-compatible user interfaces. </p>
     </a>
-    
+
     <a
 href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
       <h4>Multithreading for Performance</h4>
@@ -33,7 +33,7 @@
 
   <div class="col-6">
     <h3>Training</h3>
-    
+
     <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
       <h4>Managing the Activity Lifecycle</h4>
       <p>This class explains important lifecycle callback methods that each Activity
diff --git a/docs/html/guide/components/loaders.jd b/docs/html/guide/components/loaders.jd
index ddd513b..7c4baa8 100644
--- a/docs/html/guide/components/loaders.jd
+++ b/docs/html/guide/components/loaders.jd
@@ -21,14 +21,14 @@
         </ol>
     </li>
   </ol>
-    
+
   <h2>Key classes</h2>
     <ol>
       <li>{@link android.app.LoaderManager}</li>
       <li>{@link android.content.Loader}</li>
 
-    </ol>   
-    
+    </ol>
+
     <h2>Related samples</h2>
    <ol>
      <li> <a
@@ -53,7 +53,7 @@
 recreated after a configuration change. Thus, they don't need to re-query their
 data.</li>
   </ul>
- 
+
 <h2 id="summary">Loader API Summary</h2>
 
 <p>There are multiple classes and interfaces that may be involved in using
@@ -131,10 +131,10 @@
 load data from some other source.</li>
   <li>An implementation for {@link android.app.LoaderManager.LoaderCallbacks}.
 This is where you create new loaders and manage your references to existing
-loaders.</li> 
+loaders.</li>
 <li>A way of displaying the loader's data, such as a {@link
 android.widget.SimpleCursorAdapter}.</li>
-  <li>A data source, such as a {@link android.content.ContentProvider}, when using a 
+  <li>A data source, such as a {@link android.content.ContentProvider}, when using a
 {@link android.content.CursorLoader}.</li>
 </ul>
 <h3 id="starting">Starting a Loader</h3>
@@ -142,7 +142,7 @@
 <p>The {@link android.app.LoaderManager} manages one or more {@link
 android.content.Loader} instances within an {@link android.app.Activity} or
 {@link android.app.Fragment}. There is only one {@link
-android.app.LoaderManager} per activity or fragment.</p> 
+android.app.LoaderManager} per activity or fragment.</p>
 
 <p>You typically
 initialize a {@link android.content.Loader} within the activity's {@link
@@ -159,13 +159,13 @@
 <ul>
   <li>A unique ID that identifies the loader. In this example, the ID is 0.</li>
 <li>Optional arguments to supply to the loader at
-construction (<code>null</code> in this example).</li> 
+construction (<code>null</code> in this example).</li>
 
 <li>A {@link android.app.LoaderManager.LoaderCallbacks} implementation, which
 the {@link android.app.LoaderManager} calls to report loader events. In this
 example, the local class implements the {@link
 android.app.LoaderManager.LoaderCallbacks} interface, so it passes a reference
-to itself, {@code this}.</li> 
+to itself, {@code this}.</li>
 </ul>
 <p>The {@link android.app.LoaderManager#initLoader initLoader()} call ensures that a loader
 is initialized and active. It has two possible outcomes:</p>
@@ -196,7 +196,7 @@
 starts and stops loading when necessary, and maintains the state of the loader
 and its associated content. As this implies, you rarely interact with loaders
 directly (though for an example of using loader methods to fine-tune a loader's
-behavior, see the <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> sample). 
+behavior, see the <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> sample).
 You most commonly use the {@link
 android.app.LoaderManager.LoaderCallbacks} methods to intervene in the loading
 process when particular events occur. For more discussion of this topic, see <a
@@ -249,7 +249,7 @@
 &#8212; Called when a previously created loader has finished its load.
 </li></ul>
 <ul>
-  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}  
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
     &#8212; Called when a previously created loader is being reset,  thus  making its
 data unavailable.
 </li>
@@ -344,11 +344,11 @@
 
 <h4 id="onLoaderReset">onLoaderReset</h4>
 
-<p>This method is called when a previously created loader is being reset,  thus 
+<p>This method is called when a previously created loader is being reset,  thus
 making its data unavailable. This callback lets you find  out when the data is
 about to be released so you can remove your  reference to it.  </p>
-<p>This implementation calls 
-{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}  
+<p>This implementation calls
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
 with a value of <code>null</code>:</p>
 
 <pre>
@@ -370,7 +370,7 @@
 android.app.Fragment} that displays a {@link android.widget.ListView} containing
 the results of a query against the contacts content provider. It uses a {@link
 android.content.CursorLoader} to manage the query on the provider.</p>
- 
+
 <p>For an application to access a user's contacts, as shown in this example, its
 manifest must include the permission
 {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
diff --git a/docs/html/guide/components/processes-and-threads.jd b/docs/html/guide/components/processes-and-threads.jd
index 7bb3c65..2507998 100644
--- a/docs/html/guide/components/processes-and-threads.jd
+++ b/docs/html/guide/components/processes-and-threads.jd
@@ -121,7 +121,7 @@
 
       <ul>
         <li>It hosts an {@link android.app.Activity} that is not in the foreground, but is still
-visible to the user (its {@link android.app.Activity#onPause onPause()} method has been called). 
+visible to the user (its {@link android.app.Activity#onPause onPause()} method has been called).
 This might occur, for example, if the foreground activity started a dialog, which allows the
 previous activity to be seen behind it.</li>
 
diff --git a/docs/html/guide/practices/index.jd b/docs/html/guide/practices/index.jd
index b61272b..f34a6ba 100644
--- a/docs/html/guide/practices/index.jd
+++ b/docs/html/guide/practices/index.jd
@@ -1,7 +1,7 @@
 page.title=Best Practices
 excludeFromSuggestions=true
 page.landing=true
-page.landing.intro=Design and build apps the right way. Learn how to create apps that look great and perform well on as many devices as possible, from phones to tablets and more.  
+page.landing.intro=Design and build apps the right way. Learn how to create apps that look great and perform well on as many devices as possible, from phones to tablets and more.
 page.landing.image=
 
 @jd:body
@@ -10,20 +10,20 @@
 
   <div class="col-12">
     <h3>Blog Articles</h3>
-    
+
     <a href="http://android-developers.blogspot.com/2010/10/improving-app-quality.html">
       <h4>Improving App Quality</h4>
       <p>One way of improving your app’s visibility in the ecosystem is by deploying well-targeted
 mobile advertising campaigns and cross-app promotions. However, there’s another time-tested method
 of fueling the impression-install-ranking cycle: improve the product!</p>
     </a>
-    
+
     <a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">
       <h4>Say Goodbye to the Menu Button</h4>
       <p>As Ice Cream Sandwich rolls out to more devices, it's important that you begin to migrate
 your designs to the action bar in order to promote a consistent Android user experience.</p>
     </a>
-    
+
     <a href="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.
@@ -31,14 +31,14 @@
 tablet. This release also offers several new APIs to simplify developers’ work in adjusting to
 different screen sizes.</p>
     </a>
-    
+
     <a href="http://android-developers.blogspot.com/2011/03/identifying-app-installations.html">
       <h4>Identifying App Installations</h4>
       <p>It is very common, and perfectly reasonable, for a developer to want to track individual
 installations of their apps. It sounds plausible just to call TelephonyManager.getDeviceId() and use
 that value to identify the installation. There are problems with this</p>
     </a>
-    
+
     <a
 href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">
       <h4>Making Android Games that Play Nice</h4>
@@ -46,7 +46,7 @@
 often multi-core, multi-purpose system like Android is trickier. Even the best developers frequently
 make mistakes in the way they interact with the Android system and with other applications</p>
     </a>
-    
+
   </div>
 
 
diff --git a/docs/html/guide/practices/optimizing-for-3.0.jd b/docs/html/guide/practices/optimizing-for-3.0.jd
index 8d07eb9..db45e19 100644
--- a/docs/html/guide/practices/optimizing-for-3.0.jd
+++ b/docs/html/guide/practices/optimizing-for-3.0.jd
@@ -4,7 +4,7 @@
 
 
 <div id="deprecatedSticker">
-  <a href="#" 
+  <a href="#"
      onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
     <strong>This doc is deprecated</strong></a>
 </div>
@@ -181,7 +181,7 @@
       <li>Perform your usual tests to be sure everything works and looks as expected.</li>
     </ol>
   </li>
-  
+
   <li><b>Apply the new "holographic" theme to your application</b>
     <ol>
       <li>Open your manifest file and update the <a
@@ -191,7 +191,7 @@
 android:targetSdkVersion}</a> to {@code "11"}. For example:
 <pre>
 &lt;manifest ... >
-    &lt;uses-sdk android:minSdkVersion="4" 
+    &lt;uses-sdk android:minSdkVersion="4"
               android:targetSdkVersion="11" /&gt;
     &lt;application ... >
         ...
@@ -446,7 +446,7 @@
 GridView.</li>
   <li><a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
-Content Loaders</a>: An example using new Loader APIs to asynchronously load data.</li>      
+Content Loaders</a>: An example using new Loader APIs to asynchronously load data.</li>
   <li><a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html">
 Property Animation</a>: Several samples using the new animation APIs to animate object
@@ -624,7 +624,7 @@
 application can function in landscape. Even if you want to avoid rotating the screen while your
 application is running, you should not assume that portrait is the device's default orientation. You
 should either ensure that your layout is usable in both portrait and landscape orientations or
-provide an <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources" 
+provide an <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"
 >alternative layout resource</a> for landscape orientation.</p>
 
 <p>If you believe your application or game provides its best experience when the screen is tall,
diff --git a/docs/html/guide/practices/screen-compat-mode.jd b/docs/html/guide/practices/screen-compat-mode.jd
index 34580ba..18a089e 100644
--- a/docs/html/guide/practices/screen-compat-mode.jd
+++ b/docs/html/guide/practices/screen-compat-mode.jd
@@ -75,7 +75,7 @@
 href="{@docRoot}guide/topics/manifest/supports-screens-element.html#resizeable">{@code
 android:resizeable}</a> to {@code "true"}.</p>
   </dd>
-  
+
   <dt>Version 2 (Android 3.2 and greater)</dt>
   <dd>The system draws the application's layout the same as
 it would on a normal size handset (approximately emulating a 320dp x 480dp screen), then scales it
@@ -151,9 +151,9 @@
 system will always resize your layout to fit the screen. This works regardless of what values
 you've set in the <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a>
-attributes.</p> 
+attributes.</p>
   </li>
-  
+
   <li><strong>Easy but has other effects:</strong>
     <p>In your manifest's <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a>
diff --git a/docs/html/guide/practices/screens_support.jd b/docs/html/guide/practices/screens_support.jd
index 2223dbf..ea9f988 100644
--- a/docs/html/guide/practices/screens_support.jd
+++ b/docs/html/guide/practices/screens_support.jd
@@ -139,7 +139,7 @@
   <p>The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is
 the baseline density assumed by the system for a "medium" density screen. At runtime, the system
 transparently handles any scaling of the dp units, as necessary, based on the actual density of the
-screen in use. The conversion of dp units to screen pixels is simple: 
+screen in use. The conversion of dp units to screen pixels is simple:
 <nobr><code>px = dp * (dpi / 160)</code></nobr>.
 For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units
 when defining your application's UI, to ensure proper display of your UI on screens with different
@@ -214,7 +214,7 @@
 </ul>
 
 <p class="note"><strong>Note:</strong> These minimum screen sizes were not as well defined prior to
-Android 3.0, so you may encounter some devices that are mis-classified between normal and large. 
+Android 3.0, so you may encounter some devices that are mis-classified between normal and large.
 These are also based on the physical resolution of the screen, so may vary across devices&mdash;for
 example a 1024x720 tablet with a system bar actually has a bit less space available to the
 application due to it being used by the system bar.</p>
@@ -904,7 +904,7 @@
 manifest element:</p>
 
 <dl>
-  
+
   <dt><a
 href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">
 {@code android:requiresSmallestWidthDp}</a></dt>
diff --git a/docs/html/guide/practices/tablets-and-handsets.jd b/docs/html/guide/practices/tablets-and-handsets.jd
index 85327b6..a1bafd3 100644
--- a/docs/html/guide/practices/tablets-and-handsets.jd
+++ b/docs/html/guide/practices/tablets-and-handsets.jd
@@ -89,7 +89,7 @@
 </li>
 
 
-  <li><strong>Use the action bar</strong>, but follow best practices and ensure your design 
+  <li><strong>Use the action bar</strong>, but follow best practices and ensure your design
 is flexible enough for the system to adjust the action bar layout based on the screen size.
 
 <p>The {@link android.app.ActionBar} is a UI component for activities that replaces the traditional
diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
index f6669e4..b66fdd4 100644
--- a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
@@ -8,7 +8,7 @@
 
 
 <div id="deprecatedSticker">
-  <a href="#" 
+  <a href="#"
      onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
     <strong>This doc is deprecated</strong></a>
 </div>
@@ -105,7 +105,7 @@
 <p>
   It illustrates activities and tasks with examples, and describes some
   of their underlying principles and mechanisms, such as navigation,
-  multitasking, activity re-use, intents, and the activity stack. 
+  multitasking, activity re-use, intents, and the activity stack.
   The document also highlights design decisions that are available to you
   and what control they give you over the UI of your application.
 </p>
@@ -146,7 +146,7 @@
 
 <p>
   An Android <em>application</em> typically consists of one or more
-  related, loosely bound activities <!--(and possibly 
+  related, loosely bound activities <!--(and possibly
   <a href=#services_broadcast_receivers title="other components">other
   components</a>)--> for the user to interact with, typically bundled up
   in a single file (with an .apk suffix). Android ships with a rich set
@@ -186,10 +186,10 @@
   seamless, activity after activity, <a href="#tasks">task</a> after
   task.
 </p>
-  
+
 <p>
   An activity handles a particular type of content (data) and accepts a
-  set of related user actions. Each activity has a 
+  set of related user actions. Each activity has a
   <a href="{@docRoot}guide/components/activities.html#Lifecycle">lifecycle</a> that is
 independent of the other
   activities in its application or task &mdash; each activity is
@@ -283,7 +283,7 @@
   to the activity stack, so that pressing <em>Back</em> displays the previous
   activity on the stack. However, the user cannot use the <em>Back</em> button to go
   back further than the last visit to Home. The adding of an activity to
-  the current stack happens whether or not that activity begins a new 
+  the current stack happens whether or not that activity begins a new
   <a href=#tasks title=task>task</a> (as long as that task was started
   without going Home), so going back can let the user go back to
   activities in previous tasks. The user can get to tasks earlier than
@@ -297,7 +297,7 @@
   designing the navigation, if you have screen A and you want the user
   to be able go to a subsequent screen B and then use the <em>Back</em> button to go
   back to screen A, then the screen A needs to be implemented as an
-  activity. The one exception to this rule is if your application 
+  activity. The one exception to this rule is if your application
   <a href="#taking_over_back_key">takes control of the <em>Back</em> button</a> and manages the
 navigation
 itself.
@@ -340,7 +340,7 @@
         Send a text message with an attachment
       </li>
       <li>
-        View a YouTube video and share it by email with someone else 
+        View a YouTube video and share it by email with someone else
       </li>
     </ul>
 
@@ -666,7 +666,7 @@
   mailto:info@example.com link, they are actually initiating an Intent
   object, or just an <em>intent</em>,  which then gets resolved to a
   particular component (we consider only activity components here).
-  So, the result of a user touching a mailto: link is an Intent object 
+  So, the result of a user touching a mailto: link is an Intent object
   that the system tries to match to an activity. If that Intent object was
   written explicitly naming an activity (an <em>explicit intent</em>),
   then the system immediately launches that activity in response to the user
@@ -925,7 +925,7 @@
   For instance, you could disable the user control that initiates
   the Intent object, or display a message to the user that lets them go
   to a location, such as Google Play, to download its application.
-  In this way, your code can start the activity (using either startActivity() 
+  In this way, your code can start the activity (using either startActivity()
   or startActivityForResult()) only if the intent has tested to resolve
   to an activity that is actually present.
 </p>
@@ -947,7 +947,7 @@
         launcher</em> (typically implemented as a sliding drawer on the
         Home screen), or from a shortcut icon on the Home screen, or
         from the task switcher.  (The mechanism for this is for the
-        activity to have an 
+        activity to have an
         <a href={@docRoot}guide/components/intents-filters.html>intent filter</a> with action
 MAIN and
         category LAUNCHER.)
@@ -1103,7 +1103,7 @@
   activity to be run.
 </p>
 
-    
+
 <h3 id="notifications_get_back_tip">Notifications and App Widgets should provide consistent back behavior</h3>
 <p>
   Notifications and app widgets are two common ways that a user can launch
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design.jd b/docs/html/guide/practices/ui_guidelines/icon_design.jd
index 0726660..6b546c9 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design.jd
@@ -58,7 +58,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
@@ -72,13 +72,13 @@
 
 <p>This document provides information to help you create icons for various parts
 of your application’s user interface that match the general styles used by the
-Android 2.x framework. Following these guidelines will help you to create a 
+Android 2.x framework. Following these guidelines will help you to create a
 polished and unified experience for the user.</p>
 
 <p>The following documents discuss detailed guidelines for the common types of
 icons used throughout Android applications:</p>
 
-<dl> 
+<dl>
   <dt><strong><a href="icon_design_launcher.html">Launcher Icons</a></strong></dt>
   <dd>A Launcher icon is a graphic that represents your application on the
   device's Home screen and in the Launcher window.</dd>
@@ -103,7 +103,7 @@
   graphically represent list items. An example is the Settings application.</dd>
 </dl>
 
-<p>To get started creating your icons more quickly, you can download 
+<p>To get started creating your icons more quickly, you can download
 the Android Icon Templates Pack.</p>
 
 
@@ -142,7 +142,7 @@
 <p>Android is designed to run on a variety of devices that offer a range of
 screen sizes and resolutions. When you design the icons for your application,
 it's important keep in mind that your application may be installed on any of
-those devices. As described in the <a 
+those devices. As described in the <a
 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
 Screens</a> document, the Android platform makes it straightforward for you to
 provide icons in such a way that they will be displayed properly on any device,
@@ -158,7 +158,7 @@
 href="{@docRoot}guide/practices/screens_support.html#qualifiers">Resource
 directory qualifiers for screen size and density</a>. </p>
 
-<p>For tips on how to create and manage icon sets for multiple densities, see 
+<p>For tips on how to create and manage icon sets for multiple densities, see
 <a href="#design-tips">Tips for Designers</a>.</p>
 
 
@@ -290,7 +290,7 @@
 cleaner to tweak the icons when you scale the artboard down to the target
 sizes for final asset creation.</p>
 
-  
+
 
 <h3>When scaling, redraw bitmap layers as needed</h3>
 
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd b/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd
index 831de45..37657f4 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_action_bar.jd
@@ -31,7 +31,7 @@
 </div>
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd b/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd
index c958ed9..a7ee73f 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_dialog.jd
@@ -29,7 +29,7 @@
 </div>
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
index f47e186..3bb1a62 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher.jd
@@ -28,7 +28,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
index 2df3a22..483e076 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_launcher_archive.jd
@@ -95,7 +95,7 @@
 share with others on the device. Figure 1, at right, provides examples.  </p>
 
 <div class="figure">
-  <img src="{@docRoot}images/icon_design/IconGraphic_Icons_i.png" 
+  <img src="{@docRoot}images/icon_design/IconGraphic_Icons_i.png"
     width="340">
   <p class="img-caption">
     <strong>Figure 1.</strong> Example launcher icons for Android 2.0 and
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_list.jd b/docs/html/guide/practices/ui_guidelines/icon_design_list.jd
index 29e1a93..fa350bc 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_list.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_list.jd
@@ -30,7 +30,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd b/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd
index a5b3597..25b23d0 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_menu.jd
@@ -34,7 +34,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
@@ -267,7 +267,7 @@
 appropriate. For example, in Figure 3 the logical place for rounded corners is
 the roof and not the rest of the building.</span></li>
 
-<li>All dimensions specified on this page are based on a 48x48 pixel artboard 
+<li>All dimensions specified on this page are based on a 48x48 pixel artboard
 size with a 6 pixel safeframe.</li>
 
 <li>The menu icon effect (the outer glow) described in <a
@@ -277,7 +277,7 @@
 
 <li><strong>Final art must be exported as a transparent PNG file.</strong></li>
 
-<li>Templates for creating menu icons in Adobe Photoshop are available in the 
+<li>Templates for creating menu icons in Adobe Photoshop are available in the
 Icon Templates Pack.</li>
 </ul>
 
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd b/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd
index 4993adb..27df450 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_status_bar.jd
@@ -42,7 +42,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd b/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd
index cbe6706..308e6d0 100644
--- a/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd
+++ b/docs/html/guide/practices/ui_guidelines/icon_design_tab.jd
@@ -34,7 +34,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>, including more guidelines
 for <a href="{@docRoot}design/style/iconography.html">Iconography</a>.</p>
@@ -291,10 +291,10 @@
 the Android platform.</p>
 
 <p class="warning"><strong>Warning:</strong>
-Because these resources can change between platform versions, you 
+Because these resources can change between platform versions, you
 should not reference the system's copy of the resources. If you want to
 use any icons or other internal drawable resources, you should store a
-local copy of those icons or drawables in your application resources, 
+local copy of those icons or drawables in your application resources,
 then reference the local copy from your application code. In that way, you can
 maintain control over the appearance of your icons, even if the system's
 copy changes. Note that the grid below is not intended to be complete.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/index.jd b/docs/html/guide/practices/ui_guidelines/index.jd
index 91a0725..713109c 100644
--- a/docs/html/guide/practices/ui_guidelines/index.jd
+++ b/docs/html/guide/practices/ui_guidelines/index.jd
@@ -7,7 +7,7 @@
 <div class="note design" style="background:none;overflow:auto;padding:10px 5px">
   <a href="{@docRoot}design/index.html"><img src="{@docRoot}images/home/android-design.png" alt=""
 style="float:left;margin:0 1em 0 0;"/></a>
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>The Android UX team has put together a set of guidelines for the interaction and
 visual design of Android applications. The new collection provides an overview of
 Android styles, design patterns, building blocks for exceptional Android designs, and more.</p>
diff --git a/docs/html/guide/practices/ui_guidelines/menu_design.jd b/docs/html/guide/practices/ui_guidelines/menu_design.jd
index bf87bdd..9497525 100644
--- a/docs/html/guide/practices/ui_guidelines/menu_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/menu_design.jd
@@ -8,7 +8,7 @@
 
 
 <div id="deprecatedSticker">
-  <a href="#" 
+  <a href="#"
      onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
     <strong>This doc is deprecated</strong></a>
 </div>
@@ -16,7 +16,7 @@
 
 <div id="naMessage" style="display:block">
 <div><p><strong>This document has been deprecated.</strong></p>
- <p>For design guidelines about adding user actions and other options, read the design guidelines 
+ <p>For design guidelines about adding user actions and other options, read the design guidelines
 for <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a> or the developer guide about
 <a href="{@docRoot}guide/topics/ui/menus.html">Menus</a>.</p>
 
@@ -25,7 +25,7 @@
 onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
 </div>
 </div>
-	
+
 
 
 
@@ -37,7 +37,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-			
+
 <h2>Quickview</h2>
 
 <ul>
@@ -85,15 +85,15 @@
 </ol>
 
 </div>
-</div>       
+</div>
 
 <p>
   A menu holds a set of commands (user actions) that are normally hidden, and
   are accessible by a button, key, or gesture.  Menu commands provide a means
-  for performing operations and for navigating to other parts of your 
+  for performing operations and for navigating to other parts of your
   application or other applications.  Menus are useful for freeing screen space,
   as an alternative to placing functionality and navigation, in buttons or other
-  user controls in the content area of your application. 
+  user controls in the content area of your application.
 </p>
 
 <p>
@@ -102,7 +102,7 @@
   the functionality and navigation for your application.  Briefly:
   <ul>
     <li>The <em>Options menu</em> contains primary functionality that applies
-        globally to the current activity or starts a related activity. 
+        globally to the current activity or starts a related activity.
         It is typically invoked by a user pressing a hard button, often labeled <em>Menu</em>.</li>
     <li>The <em>Context menu</em> contains secondary functionality for the currently
         selected item.  It is typically invoked by a user's touch &amp; hold
@@ -113,11 +113,11 @@
 
 <p>
   All but the simplest applications have menus.  The system automatically
-  lays the menus out and provides standard ways for users to access them.  
+  lays the menus out and provides standard ways for users to access them.
   In this sense, they are familiar and dependable ways for users to access
   functionality across all applications.  All menus are panels that "float"
   on top of the activity screen and are smaller than full screen, so that the
-  application is still visible around its edges.  This is a visual reminder 
+  application is still visible around its edges.  This is a visual reminder
   that a menu is an intermediary operation that disappears once it's used.
 </p>
 
@@ -127,8 +127,8 @@
 
 <h2 id="tour_of_the_menus">Tour of the Menus</h2>
 
-<p class="note"><strong>Note:</strong> Your menus and screens might not look 
-like those shown in this document; they may vary from one version of Android 
+<p class="note"><strong>Note:</strong> Your menus and screens might not look
+like those shown in this document; they may vary from one version of Android
 or device to another.
 </p>
 
@@ -137,13 +137,13 @@
 <p>
   The Options menu contains commands that apply globally across the current
   activity, or can start another activity. They do not apply to a selected
-  item in the content (a <a href="#context_menu">Context menu</a> does that).  
+  item in the content (a <a href="#context_menu">Context menu</a> does that).
 </p>
 
 <p>
-  On most devices, a user presses the <em>Menu</em> button to access the Options menu, 
-  as shown in the screenshot below.  To close the menu, the user presses 
-  <em>Menu</em> again, or presses the <em>Back</em> button. 
+  On most devices, a user presses the <em>Menu</em> button to access the Options menu,
+  as shown in the screenshot below.  To close the menu, the user presses
+  <em>Menu</em> again, or presses the <em>Back</em> button.
   In fact, to cancel out of any menu, press the <em>Back</em> button.  (Pressing the <em>Menu</em>
   button or touching outside the menu also works.)  Note that how to invoke this
   menu may be different on different devices.
@@ -153,15 +153,15 @@
   Each
   <a href="{@docRoot}guide/practices/ui_guidelines/activity_task_design.html#activities">activity</a>
   activity has its own set of operations and therefore its own Options menu.
-  An application with multiple activities would have a different Options menu 
-  for each activity. 
+  An application with multiple activities would have a different Options menu
+  for each activity.
 </p>
 
 <p>
   For example, in the message list view of an email program, the Options menu
-  might let you search the messages, compose a new message, refresh the list, 
-  or change the email settings.  The compose view of an email program would 
-  have a different Options menu, such as adding a CC field, attaching a file, 
+  might let you search the messages, compose a new message, refresh the list,
+  or change the email settings.  The compose view of an email program would
+  have a different Options menu, such as adding a CC field, attaching a file,
   or discarding the message.
 </p>
 
@@ -179,7 +179,7 @@
   <li>
     <b>Options expanded menu</b> - If the activity has more menu items than will
     fit on the icon menu, then the last icon is labeled "More" &mdash; selecting it
-    displays a list that can contain any number of menu items and will scroll 
+    displays a list that can contain any number of menu items and will scroll
     as necessary.
   </li>
 </ul>
@@ -202,18 +202,18 @@
 
 <p>
   A user can touch &amp; hold on content on the screen to
-  access a Context menu (if one exists), as shown in the screenshot below. 
+  access a Context menu (if one exists), as shown in the screenshot below.
   A Context menu is a list of menu items (commands) that can operate
   on the selected content.  The command can either be part of the current
-  activity, or the system can pass the selected content along to 
-  an operation in another activity (by way of an 
+  activity, or the system can pass the selected content along to
+  an operation in another activity (by way of an
   <a href="{@docRoot}guide/practices/ui_guidelines/activity_task_design.html#intents">intent</a>).
 </p>
 
 <p>
   For example, in an email message list, a user can touch &amp; hold on
   an email message to open a Context menu containing commands to read,
-  archive, or delete the message. 
+  archive, or delete the message.
 </p>
 
 <p id="location">
@@ -231,7 +231,7 @@
   In the above example, if the user performs touch &amp; hold on the contact
   "Obi Wan Kenobi", a Context menu opens.  The commands provided in
   this Context menu are the complete set of actions that can be performed
-  on this contact. 
+  on this contact.
 </p>
 
 <p>
@@ -246,7 +246,7 @@
 <p>
   Also note, as shown in the following screenshot, the Context menu and the
   next screen both hold the same complete set of commands that can be performed
-  on this contact.  The Context menu displays the commands in a list, 
+  on this contact.  The Context menu displays the commands in a list,
   while the "View contact" activity splits them into various items in the
   Options menu, icon buttons and list items.
 </p>
@@ -268,10 +268,10 @@
 <h4>Text Commands in Context Menu</h4>
 
 <p>
-  Text links and text fields in the content both have system-provided operations 
+  Text links and text fields in the content both have system-provided operations
   that are common across all applications: operations such as "Select all", "Select text",
-  "Copy all", and "Add to dictionary".  If the text field is editable, it also 
-  has  other operations, such as "Cut all" and "Input Method", and if text 
+  "Copy all", and "Add to dictionary".  If the text field is editable, it also
+  has  other operations, such as "Cut all" and "Input Method", and if text
   is also on the clipboard, it has "Paste".  The system automatically inserts
   the appropriate menu items into the Context menu of text links and text
   fields, as shown in the following screenshot.
@@ -342,7 +342,7 @@
   An example of a selection-specific Context menu is when a user performs a
   touch &amp; hold on a person's name in a list view of a contacts application.
   The Context menu would typically contain commands "View contact", "Call contact",
-  and "Edit contact".  
+  and "Edit contact".
 </p>
 
 <h3 id="most_frequently_used">Place the most frequently used operations first</h3>
@@ -365,7 +365,7 @@
 
 <h3 id="dont_put_commands">Don't put commands <em>only</em> in a Context menu</h3>
 <p>
-  If a user can fully access your application without using Context menus, 
+  If a user can fully access your application without using Context menus,
   then it's designed properly!  In general, if part of your application is inaccessible
   without using Context menus, then you need to duplicate those commands elsewhere.
 </p>
@@ -373,8 +373,8 @@
 <p>
   Before opening a Context menu, it has no visual representation that identifies
   its presence (whereas the Options menu has the <em>Menu</em> button), and so is not
-  particularly discoverable. 
-  Therefore, in general, a Context menu should <em>duplicate</em> commands 
+  particularly discoverable.
+  Therefore, in general, a Context menu should <em>duplicate</em> commands
   found in the corresponding activity screen.  For example, while it's useful to
   let the user call a phone number from a Context menu invoked by touch
   &amp; hold on a name in a list of contacts, that operation should <em>also</em>
@@ -388,7 +388,7 @@
   As described under <a href="#context_menu_shortcut">shortcut</a>,
   touching on an item in the content should activate the same command as touching
   the first item in the Context menu.  Both cases should be the most intuitive
-  operation for that item.  
+  operation for that item.
 </p>
 
 <h3 id="selecting_content_item">Selecting an item in the content should perform the most intuitive operation</h3>
@@ -427,13 +427,13 @@
 <h3 id="context_menu_should_identify">A Context menu should identify the selected item</h3>
 
 <p>
-  When a user does touch &amp; hold on an item, the Context menu should 
-  contain the name of the selected item.  Therefore, 
+  When a user does touch &amp; hold on an item, the Context menu should
+  contain the name of the selected item.  Therefore,
   when creating a Context menu, be sure to include a title and the name of the
-  selected item so that it's clear to the user what the context is.  
+  selected item so that it's clear to the user what the context is.
   For example, if a user selects a contact "Joan of Arc", put that name in the
   title of the Context menu (using
-  {@link android.view.ContextMenu#setHeaderTitle(java.lang.CharSequence) setHeaderTitle}). 
+  {@link android.view.ContextMenu#setHeaderTitle(java.lang.CharSequence) setHeaderTitle}).
   Likewise, a command to edit the contact should be called "Edit contact",
   not just "Edit".
 </p>
@@ -442,7 +442,7 @@
 <h3 id="most_important_commands">Put only the most important commands fixed on the screen</h3>
 
 <p>
-  By putting commands in menus, you free up the screen to hold more content. 
+  By putting commands in menus, you free up the screen to hold more content.
   On the other hand, fixing commands in the content area of an activity
   makes them more prominent and easy to use.
 </p>
@@ -456,7 +456,7 @@
       To give a command the highest prominence, ensuring the command is obvious and won't be overlooked.<br>
       Example: A "Buy" button in a store application.
     </li>
-    <li> 
+    <li>
       When quick access to the command is important and going to the menu would be
       tedious or slow.<br>
       Example: Next/Previous buttons or Zoom In/Out buttons in an image viewing application.
@@ -494,7 +494,7 @@
   When a dialog is displayed, pressing the <em>Menu</em> button should do nothing.  This also holds
 true
   for activities that look like dialogs.  A dialog box is recognizable by being
-  smaller than full-screen, having zero to three buttons, is non-scrollable, and 
+  smaller than full-screen, having zero to three buttons, is non-scrollable, and
   possibly a list of selectable items that can include checkboxes or radio buttons.
   <!--For examples of dialogs, see Text Guidelines.-->
 </p>
@@ -520,12 +520,12 @@
 
 <p>
   Sometimes a menu item's action cannot be performed &mdash; for example,
-  the "Forward" button in a browser cannot work until after the "Back" 
+  the "Forward" button in a browser cannot work until after the "Back"
   button has been pressed. We recommend:
 </p>
 
 <ul>
-  <li> 	
+  <li>
     <b>In Options menu</b> - disable the menu item, which dims the text and icon,
     turning it gray.  This applies to menu items in both the icon menu and the
     "More" menu.  It would be disorienting for the icon menu to change from 6
diff --git a/docs/html/guide/practices/ui_guidelines/widget_design.jd b/docs/html/guide/practices/ui_guidelines/widget_design.jd
index cf2cd64..95c594d 100644
--- a/docs/html/guide/practices/ui_guidelines/widget_design.jd
+++ b/docs/html/guide/practices/ui_guidelines/widget_design.jd
@@ -46,7 +46,7 @@
 
 
 <div class="note design">
-<p><strong>New Guides for App Designers!</strong></p> 
+<p><strong>New Guides for App Designers!</strong></p>
 <p>Check out the new documents for designers at <strong><a
 href="{@docRoot}design/index.html">Android Design</a></strong>.</p>
 </div>
diff --git a/docs/html/guide/topics/admin/device-admin.jd b/docs/html/guide/topics/admin/device-admin.jd
index e2fef04..2a8583a 100644
--- a/docs/html/guide/topics/admin/device-admin.jd
+++ b/docs/html/guide/topics/admin/device-admin.jd
@@ -135,60 +135,60 @@
 combination of letters and numbers. They may include symbolic characters.
     </td>
   </tr>
-  
+
   <tr>
     <td>Complex password required</td>
     <td>Requires that passwords must contain at least a letter, a numerical digit, and a special symbol. Introduced in Android 3.0.
     </td>
   </tr>
-  
-<tr> 
+
+<tr>
   <td>Minimum letters required in password</td> <td>The minimum number of
-letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td> 
+letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
 </tr>
-  
-  
-  <tr> 
-  <td>Minimum lowercase letters required in password</td> 
-  <td>The minimum number of lowercase 
-letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td> 
+
+
+  <tr>
+  <td>Minimum lowercase letters required in password</td>
+  <td>The minimum number of lowercase
+letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
 </tr>
-  
-  <tr> 
-  <td>Minimum non-letter characters required in password</td> 
+
+  <tr>
+  <td>Minimum non-letter characters required in password</td>
   <td>The minimum number of
-non-letter characters required in the password for all admins or a particular one. Introduced in Android 3.0.</td> 
-</tr>
-  
-<tr> 
-  <td>Minimum numerical digits required in password</td> 
-  <td>The minimum number of numerical digits required in the password for all admins or a particular one. Introduced in Android 3.0.</td> 
+non-letter characters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
 </tr>
 
-<tr> 
-  <td>Minimum symbols required in password</td> 
-  <td>The minimum number of symbols required in the password for all admins or a particular one. Introduced in Android 3.0.</td> 
+<tr>
+  <td>Minimum numerical digits required in password</td>
+  <td>The minimum number of numerical digits required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
 </tr>
 
-<tr> 
-  <td>Minimum uppercase letters required in password</td> 
-  <td>The minimum number of uppercase letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td> 
+<tr>
+  <td>Minimum symbols required in password</td>
+  <td>The minimum number of symbols required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
 </tr>
 
-<tr> 
-  <td>Password expiration timeout</td> 
-  <td>When the password will expire, expressed as a delta in milliseconds from when a device admin sets the expiration timeout. Introduced in Android 3.0.</td> 
+<tr>
+  <td>Minimum uppercase letters required in password</td>
+  <td>The minimum number of uppercase letters required in the password for all admins or a particular one. Introduced in Android 3.0.</td>
 </tr>
 
-<tr> 
-  <td>Password history restriction</td> 
+<tr>
+  <td>Password expiration timeout</td>
+  <td>When the password will expire, expressed as a delta in milliseconds from when a device admin sets the expiration timeout. Introduced in Android 3.0.</td>
+</tr>
+
+<tr>
+  <td>Password history restriction</td>
   <td>This policy prevents users from reusing the last <em>n</em> unique passwords.
  This policy is typically used in conjunction with
 {@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()}, which forces
 users to update their passwords after a specified amount of time has elapsed.
-Introduced in Android 3.0.</td> 
+Introduced in Android 3.0.</td>
 </tr>
-  
+
   <tr>
     <td>Maximum failed password attempts </td>
     <td>Specifies how many times a user can enter the wrong password before the
@@ -203,18 +203,18 @@
 need to enter their PIN or passwords again before they can use their devices and
 access data.  The value can be between 1 and 60 minutes.</td> </tr>
 
-<tr> 
-<td>Require storage encryption</td> 
-<td>Specifies that the storage area should be encrypted, if the device supports it. 
+<tr>
+<td>Require storage encryption</td>
+<td>Specifies that the storage area should be encrypted, if the device supports it.
 Introduced in Android 3.0.</td> </tr>
 
 <tr>
   <td>Disable camera</td>
-  
+
   <td>Specifies that the camera should be disabled. Note that this doesn't have
 to be a permanent disabling. The camera can be enabled/disabled dynamically
 based on context, time, and so on. Introduced in Android 4.0.</td>
-  
+
 </tr>
 
 
@@ -234,7 +234,7 @@
 
 <p>The examples used in this document are based on the Device Administration API
 sample, which is included in the SDK samples (available through the
-Android SDK Manager) and located on your system as 
+Android SDK Manager) and located on your system as
 <code>&lt;sdk_root&gt;/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java</code>.</p>
 
 <p>The sample application offers a demo of device admin features. It presents users
@@ -250,8 +250,8 @@
   <li>Set how many failed password attempts can occur before the device is wiped
 (that is, restored to factory settings).</li>
 <li>Set how long from now the password will expire.</li>
-<li>Set the password history length (<em>length</em> refers to number of old passwords stored in the history). 
-This prevents users from reusing 
+<li>Set the password history length (<em>length</em> refers to number of old passwords stored in the history).
+This prevents users from reusing
 one of the last <em>n</em> passwords they previously used.</li>
 <li>Specify that the storage area should be encrypted, if the device supports it.</li>
   <li>Set the maximum amount of inactive time that can elapse before the device
@@ -259,7 +259,7 @@
   <li>Make the device lock immediately.</li>
   <li>Wipe the device's data (that is, restore factory settings).</li>
   <li>Disable the camera.</li>
-  
+
 </ul>
 
 
@@ -454,8 +454,8 @@
 <img src="{@docRoot}images/admin/device-admin-activate-prompt.png"/>
 <p class="img-caption"><strong>Figure 2.</strong> Sample Application: Activating the Application</p>
 
-<p>Below  is the code that gets executed when the user clicks the <strong>Enable Admin</strong> checkbox. This has the effect of triggering the 
-{@link android.preference.Preference.OnPreferenceChangeListener#onPreferenceChange(android.preference.Preference, java.lang.Object) onPreferenceChange()} 
+<p>Below  is the code that gets executed when the user clicks the <strong>Enable Admin</strong> checkbox. This has the effect of triggering the
+{@link android.preference.Preference.OnPreferenceChangeListener#onPreferenceChange(android.preference.Preference, java.lang.Object) onPreferenceChange()}
 callback. This callback is invoked when the value of this  {@link android.preference.Preference} has been changed by the user and is about to be set and/or persisted. If the user is enabling the application, the display
 changes to prompt the user to activate the device admin application, as shown in figure
 2. Otherwise, the device admin application is disabled. </p>
@@ -556,7 +556,7 @@
 <dt>{@link
 android.app.admin.DevicePolicyManager#PASSWORD_QUALITY_COMPLEX}</dt><dd>The user
 must have entered a password containing at least a letter, a numerical digit and
-a special symbol.</dd> 
+a special symbol.</dd>
 <dt>{@link
 android.app.admin.DevicePolicyManager#PASSWORD_QUALITY_SOMETHING}</dt><dd>The
 policy requires some kind
@@ -581,7 +581,7 @@
 contents:</p>
 <ul>
 
-<li>{@link android.app.admin.DevicePolicyManager#setPasswordMinimumLetters(android.content.ComponentName,int) setPasswordMinimumLetters()}</li> 
+<li>{@link android.app.admin.DevicePolicyManager#setPasswordMinimumLetters(android.content.ComponentName,int) setPasswordMinimumLetters()}</li>
 
 <li>{@link android.app.admin.DevicePolicyManager#setPasswordMinimumLowerCase(android.content.ComponentName,int) setPasswordMinimumLowerCase()}</li>
 
@@ -622,8 +622,8 @@
 mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);</pre>
 
 <h5 id="expiration">Set password expiration timeout</h5>
-<p>Beginning with Android 3.0, you can use the 
-{@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()} 
+<p>Beginning with Android 3.0, you can use the
+{@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()}
 method to set when a password will expire, expressed as a delta in milliseconds from when a device admin sets the expiration timeout. For example:</p>
 
 <pre>DevicePolicyManager mDPM;
@@ -632,18 +632,18 @@
 ...
 mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, pwExpiration);
 </pre>
-    
+
 <h5 id="history">Restrict password based on history</h5>
 
-<p>Beginning with Android 3.0, you can use the 
-{@link android.app.admin.DevicePolicyManager#setPasswordHistoryLength(android.content.ComponentName,int) setPasswordHistoryLength()} 
+<p>Beginning with Android 3.0, you can use the
+{@link android.app.admin.DevicePolicyManager#setPasswordHistoryLength(android.content.ComponentName,int) setPasswordHistoryLength()}
 method to limit users'
 ability to reuse old passwords. This method takes a <em>length</em>
 parameter, which specifies how many old
 passwords are stored. When this policy is active, users cannot enter a new
 password that matches the last <em>n</em> passwords. This prevents
 users from using the same password over and over. This policy is typically used
-in conjunction with 
+in conjunction with
 {@link android.app.admin.DevicePolicyManager#setPasswordExpirationTimeout(android.content.ComponentName,long) setPasswordExpirationTimeout()},
 which forces users
 to update their passwords after a specified amount of time has elapsed. </p>
@@ -705,7 +705,7 @@
 
 <h4 id="storage">Storage encryption</h4>
 <p>Beginning with Android 3.0, you can use the
-{@link android.app.admin.DevicePolicyManager#setStorageEncryption(android.content.ComponentName,boolean) setStorageEncryption()} 
+{@link android.app.admin.DevicePolicyManager#setStorageEncryption(android.content.ComponentName,boolean) setStorageEncryption()}
 method to set a policy requiring encryption of the storage area, where supported.</p>
 
 <p>For example:</p>
diff --git a/docs/html/guide/topics/appwidgets/host.jd b/docs/html/guide/topics/appwidgets/host.jd
index 169e388..7b00019 100644
--- a/docs/html/guide/topics/appwidgets/host.jd
+++ b/docs/html/guide/topics/appwidgets/host.jd
@@ -4,7 +4,7 @@
 
 <div id="qv-wrapper">
   <div id="qv">
-    
+
     <h2>In this document</h2>
         <ol>
           <li><a href="#host-binding">Binding App Widgets</a>
@@ -32,58 +32,58 @@
 access to content. If you're building a Home replacement or a similar app,
 you can also allow the user to embed app widgets by implementing an
 {@link android.appwidget.AppWidgetHost}.
-This is not something that most apps will ever need to do, but if you are 
-creating your own host, it's important to understand the contractual obligations 
+This is not something that most apps will ever need to do, but if you are
+creating your own host, it's important to understand the contractual obligations
 a host implicitly agrees to.</p>
 
-<p>This document focuses on the responsibilities involved in implementing a custom 
-{@link android.appwidget.AppWidgetHost}. For an example of how to implement an 
+<p>This document focuses on the responsibilities involved in implementing a custom
+{@link android.appwidget.AppWidgetHost}. For an example of how to implement an
 {@link android.appwidget.AppWidgetHost}, see the source code for the
-Android Home screen 
+Android Home screen
 <a href="https://android.googlesource.com/platform/packages/apps/Launcher2/+/master/src/com/android/launcher2/Launcher.java">
-Launcher</a>. 
+Launcher</a>.
 
 
-<p>Here is an overview of key classes and concepts involved in implementing a custom 
+<p>Here is an overview of key classes and concepts involved in implementing a custom
 {@link android.appwidget.AppWidgetHost}:</p>
 <ul>
-    <li><strong>App Widget Host</strong>&mdash;  
-    The {@link android.appwidget.AppWidgetHost} provides the interaction 
-with the AppWidget service for apps, like the home screen, that want to embed 
-app widgets in their UI. An {@link android.appwidget.AppWidgetHost} must have 
-an ID that is unique within the host's own package. This ID remains persistent 
+    <li><strong>App Widget Host</strong>&mdash;
+    The {@link android.appwidget.AppWidgetHost} provides the interaction
+with the AppWidget service for apps, like the home screen, that want to embed
+app widgets in their UI. An {@link android.appwidget.AppWidgetHost} must have
+an ID that is unique within the host's own package. This ID remains persistent
 across all uses of the host. The ID is typically a hard-coded value that you assign
 in your application.</li>
-  
+
     <li><strong>App Widget ID</strong>&mdash;
-    Each app widget instance is assigned a unique ID at the time of binding 
-(see {@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()}, 
-discussed in more detail in <a href="#binding">Binding app widgets</a>). 
-The unique ID is obtained by the host using {@link android.appwidget.AppWidgetHost#allocateAppWidgetId() allocateAppWidgetId()}. This ID is persistent across the lifetime of the widget, 
-that is, until it is deleted from the host. Any host-specific state (such as the 
-size and location of the widget) should be persisted by the hosting package and 
+    Each app widget instance is assigned a unique ID at the time of binding
+(see {@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()},
+discussed in more detail in <a href="#binding">Binding app widgets</a>).
+The unique ID is obtained by the host using {@link android.appwidget.AppWidgetHost#allocateAppWidgetId() allocateAppWidgetId()}. This ID is persistent across the lifetime of the widget,
+that is, until it is deleted from the host. Any host-specific state (such as the
+size and location of the widget) should be persisted by the hosting package and
 associated with the app widget ID.
 </li>
-  
-    <li><strong>App Widget Host View</strong>&mdash;  
-    {@link android.appwidget.AppWidgetHostView} can be thought of as a frame 
-that the widget is wrapped in whenever it needs to be displayed. An app widget 
-is assigned to an {@link android.appwidget.AppWidgetHostView} every time the 
+
+    <li><strong>App Widget Host View</strong>&mdash;
+    {@link android.appwidget.AppWidgetHostView} can be thought of as a frame
+that the widget is wrapped in whenever it needs to be displayed. An app widget
+is assigned to an {@link android.appwidget.AppWidgetHostView} every time the
 widget is inflated by the host. </li>
     <li><strong>Options Bundle</strong>&mdash;
-The {@link android.appwidget.AppWidgetHost} uses the options bundle to communicate 
-information to the {@link android.appwidget.AppWidgetProvider} about how the 
-widget is being displayed (for example, size range, and whether the widget is on 
-a lockscreen or the home screen). This information allows the 
-{@link android.appwidget.AppWidgetProvider} to tailor the widget's contents 
+The {@link android.appwidget.AppWidgetHost} uses the options bundle to communicate
+information to the {@link android.appwidget.AppWidgetProvider} about how the
+widget is being displayed (for example, size range, and whether the widget is on
+a lockscreen or the home screen). This information allows the
+{@link android.appwidget.AppWidgetProvider} to tailor the widget's contents
 and appearance based on how and where it is  displayed.
-You use 
+You use
 {@link android.appwidget.AppWidgetHostView#updateAppWidgetOptions(android.os.Bundle) updateAppWidgetOptions()}
-and 
+and
 {@link android.appwidget.AppWidgetHostView#updateAppWidgetSize updateAppWidgetSize()}
 
-to modify an app widget's 
-bundle. Both of these methods trigger a callback to the 
+to modify an app widget's
+bundle. Both of these methods trigger a callback to the
 {@link android.appwidget.AppWidgetProvider}.</p></li>
 </ul>
 
@@ -98,15 +98,15 @@
 
 <h3 id="binding-pre">Binding app widgets on Android 4.0 and lower</h3>
 
-<p>On devices running Android version 4.0 and lower, users add app widgets 
-via a system activity that allows users to select a widget. This implicitly 
-does a permission check&mdash;that is, by adding the app widget, the user is 
-implicitly granting permission to your app to add app widgets to the host. 
-Here is an example that illustrates 
-this approach, taken from the original 
-<a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">Launcher</a>. In this snippet, an event handler invokes 
-{@link android.app.Activity#startActivityForResult(android.content.Intent,int) startActivityForResult()} 
-with the request code {@code REQUEST_PICK_APPWIDGET} in response to a 
+<p>On devices running Android version 4.0 and lower, users add app widgets
+via a system activity that allows users to select a widget. This implicitly
+does a permission check&mdash;that is, by adding the app widget, the user is
+implicitly granting permission to your app to add app widgets to the host.
+Here is an example that illustrates
+this approach, taken from the original
+<a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">Launcher</a>. In this snippet, an event handler invokes
+{@link android.app.Activity#startActivityForResult(android.content.Intent,int) startActivityForResult()}
+with the request code {@code REQUEST_PICK_APPWIDGET} in response to a
 user action:</p>
 
 <pre>
@@ -118,9 +118,9 @@
     ...
         case AddAdapter.ITEM_APPWIDGET: {
             ...
-            int appWidgetId = 
+            int appWidgetId =
                     Launcher.this.mAppWidgetHost.allocateAppWidgetId();
-            Intent pickIntent = 
+            Intent pickIntent =
                     new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
             pickIntent.putExtra
                     (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
@@ -135,7 +135,7 @@
 app widget to your activity. In the following example, the activity responds
 by calling {@code addAppWidget()} to add the app widget:</p>
 
-<pre>public final class Launcher extends Activity 
+<pre>public final class Launcher extends Activity
         implements View.OnClickListener, OnLongClickListener {
     ...
     &#64;Override
@@ -152,7 +152,7 @@
                     completeAddAppWidget(data, mAddItemCellInfo, !mDesktopLocked);
                     break;
                 }
-        } 
+        }
         ...
     }
 }</pre>
@@ -164,7 +164,7 @@
     int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
 
     String customWidget = data.getStringExtra(EXTRA_CUSTOM_WIDGET);
-    AppWidgetProviderInfo appWidget = 
+    AppWidgetProviderInfo appWidget =
             mAppWidgetManager.getAppWidgetInfo(appWidgetId);
 
     if (appWidget.configure != null) {
@@ -183,7 +183,7 @@
 App Widget Configuration Activity</a>.</p>
 
 <p>Once the app widget is ready, the next step is to do the
-actual work of adding it to the workspace. The 
+actual work of adding it to the workspace. The
 <a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">original Launcher</a> uses a method called {@code completeAddAppWidget()}
 to do this.</p>
 
@@ -201,12 +201,12 @@
 <p>But this is just the first step. At runtime the user must
 explicitly grant permission to your app to allow it to add app widgets
 to the host. To test whether your app has permission to add the widget,
-you use the 
-{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()} 
-method. 
+you use the
+{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()}
+method.
 If {@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed bindAppWidgetIdIfAllowed()}
 returns {@code false}, your app must display a dialog prompting the
-user to grant permission 
+user to grant permission
 ("allow" or "always allow," to cover all future app widget additions).
 This snippet gives an example of how to display the dialog:</p>
 
@@ -218,9 +218,9 @@
 startActivityForResult(intent, REQUEST_BIND_APPWIDGET);
 </pre>
 
-<p>The host also has to check whether the user added 
+<p>The host also has to check whether the user added
 an app widget that needs configuration. For more discussion of this topic,
-see 
+see
 <a href="{@docRoot}guide/topics/appwidgets/index.html#Configuring">Creating
 an App Widget Configuration Activity</a>.</p>
 
@@ -229,23 +229,23 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <h2>What Version are You Targeting?</h2>
-  <p>The approach you use in implementing your host should depend on what Android version  
-you're targeting. Many of the features described in this section were introduced 
+  <p>The approach you use in implementing your host should depend on what Android version
+you're targeting. Many of the features described in this section were introduced
 in 3.0 or later. For example:</p>
 <ul>
 <li>Android 3.0 (API Level 11) introduces auto-advance behavior for widgets.</li>
 <li>Android 3.1 (API Level 12) introduces the ability to resize widgets.</li>
 <li>Android 4.0 (API Level 15) introduces a change in padding policy that
-puts the responsibility on the 
+puts the responsibility on the
 host to manage padding.</li>
 <li>Android 4.1 (API Level 16) adds an API that allows the widget provider
 to get more detailed information about the environment in which its
 widget instances are being hosted.</li>
-<li>Android 4.2 (API Level 17) introduces the options bundle and the 
-{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed(int,android.content.ComponentName,android.os.Bundle) bindAppWidgetIdIfAllowed()} 
+<li>Android 4.2 (API Level 17) introduces the options bundle and the
+{@link android.appwidget.AppWidgetManager#bindAppWidgetIdIfAllowed(int,android.content.ComponentName,android.os.Bundle) bindAppWidgetIdIfAllowed()}
 method. It also introduces lockscreen widgets.</li>
 </ul>
-<p>If you are targeting earlier devices, refer to the original 
+<p>If you are targeting earlier devices, refer to the original
 <a href="https://android.googlesource.com/platform/packages/apps/Launcher/+/master/src/com/android/launcher/Launcher.java">Launcher</a> as an example.
 </div>
 </div>
@@ -273,7 +273,7 @@
 they can be properly displayed.</li>
 
 <li>Every app widget specifies a minimum width and height in dps, as defined in the {@link android.appwidget.AppWidgetProviderInfo} metadata
-(using {@link android.appwidget.AppWidgetProviderInfo#minWidth android:minWidth} and 
+(using {@link android.appwidget.AppWidgetProviderInfo#minWidth android:minWidth} and
 {@link android.appwidget.AppWidgetProviderInfo#minHeight android:minHeight}).
 Make sure that the widget is laid out with at least this many dps.
 For example, many hosts align icons and widgets in a grid. In this scenario,
@@ -379,7 +379,7 @@
 for your app&mdash;for example, if your host is a home screen, ensure
 that the
 {@link android.appwidget.AppWidgetProviderInfo#widgetCategory android:widgetCategory}
-attribute in the 
+attribute in the
 {@link android.appwidget.AppWidgetProviderInfo} metadata includes
 the flag {@link android.appwidget.AppWidgetProviderInfo#WIDGET_CATEGORY_HOME_SCREEN}.
 Similarly, for the lockscreen, ensure that field includes the flag  {@link android.appwidget.AppWidgetProviderInfo#WIDGET_CATEGORY_KEYGUARD}. For more
diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd
index c9575e0..7d555ed 100644
--- a/docs/html/guide/topics/appwidgets/index.jd
+++ b/docs/html/guide/topics/appwidgets/index.jd
@@ -4,7 +4,7 @@
 
 <div id="qv-wrapper">
   <div id="qv">
-    
+
     <h2>In this document</h2>
     <ol>
       <li><a href="#Basics">The Basics</a></li>
@@ -21,7 +21,7 @@
 Activity</a>
         <ol>
           <li><a href="#UpdatingFromTheConfiguration">Updating the App Widget
-from 
+from
             the Configuration Activity</a></li>
         </ol>
       </li>
@@ -33,7 +33,7 @@
 collections
 </a></li>
           <li><a href="#fresh">Keeping Collection Data Fresh</a></li>
-        </ol>   
+        </ol>
       </li>
     </ol>
 
@@ -50,10 +50,10 @@
 <p>App Widgets are miniature application views that can be embedded in other
 applications
 (such as the Home screen) and receive periodic updates. These views are
-referred 
+referred
 to as Widgets in the user interface,
 and you can publish one with an App Widget provider. An application component
-that is 
+that is
 able to hold other App Widgets is called an App Widget host. The screenshot
 below shows
 the Music App Widget.</p>
@@ -85,14 +85,14 @@
   <dd>Defines the basic methods that allow you to programmatically interface
 with the App Widget,
     based on broadcast events. Through it, you will receive broadcasts when the
-App Widget is updated, 
+App Widget is updated,
     enabled, disabled and deleted.</dd>
   <dt>View layout</dt>
   <dd>Defines the initial layout for the App Widget, defined in XML.</dd>
 </dl>
 
 <p>Additionally, you can implement an App Widget configuration Activity. This is
-an optional 
+an optional
 {@link android.app.Activity} that launches when the user adds your App Widget
 and allows him or her
 to modify App Widget settings at create-time.</p>
@@ -117,7 +117,7 @@
 </pre>
 
 <p>The <code>&lt;receiver&gt;</code> element requires the
-<code>android:name</code> 
+<code>android:name</code>
 attribute, which specifies the {@link android.appwidget.AppWidgetProvider} used
 by the App Widget.</p>
 
@@ -133,7 +133,7 @@
 necessary.</p>
 
 <p>The <code>&lt;meta-data&gt;</code> element specifies the
-{@link android.appwidget.AppWidgetProviderInfo} resource and requires the 
+{@link android.appwidget.AppWidgetProviderInfo} resource and requires the
 following attributes:</p>
 <ul>
   <li><code>android:name</code> - Specifies the metadata name. Use
@@ -141,21 +141,21 @@
     to identify the data as the {@link android.appwidget.AppWidgetProviderInfo}
 descriptor.</li>
   <li><code>android:resource</code> - Specifies the {@link
-android.appwidget.AppWidgetProviderInfo} 
+android.appwidget.AppWidgetProviderInfo}
     resource location.</li>
 </ul>
 
 
 <h2 id="MetaData">Adding the AppWidgetProviderInfo Metadata</h2>
 
-<p>The {@link android.appwidget.AppWidgetProviderInfo} defines the essential 
+<p>The {@link android.appwidget.AppWidgetProviderInfo} defines the essential
 qualities of an App Widget, such as its minimum layout dimensions, its initial
 layout resource,
 how often to update the App Widget, and (optionally) a configuration Activity to
 launch at create-time.
 Define the AppWidgetProviderInfo object in an XML resource using a single
 <code>&lt;appwidget-provider></code> element and save it in the project's
-<code>res/xml/</code> 
+<code>res/xml/</code>
 folder.</p>
 
 <p>For example:</p>
@@ -167,7 +167,7 @@
     android:updatePeriodMillis="86400000"
     android:previewImage="@drawable/preview"
     android:initialLayout="@layout/example_appwidget"
-    android:configure="com.example.android.ExampleAppWidgetConfigure" 
+    android:configure="com.example.android.ExampleAppWidgetConfigure"
     android:resizeMode="horizontal|vertical"
     android:widgetCategory="home_screen">
 &lt;/appwidget-provider>
@@ -206,33 +206,33 @@
 
   <li>The <code>updatePeriodMillis</code> attribute defines how often the App
 Widget framework should request an update from the {@link
-android.appwidget.AppWidgetProvider} by calling the 
-{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()} 
+android.appwidget.AppWidgetProvider} by calling the
+{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()}
 callback method. The actual update
 is not guaranteed to occur exactly on time with this value and we suggest
 updating as infrequently as possible&mdash;perhaps no more than once an hour to
 conserve the battery. You might also allow the user to adjust the frequency in a
 configuration&mdash;some people might want a stock ticker to update every 15
-minutes, or maybe only four times a day. 
+minutes, or maybe only four times a day.
     	<p class="note"><strong>Note:</strong> If the device is asleep when it
-is time for an update 
+is time for an update
     	(as defined by <code>updatePeriodMillis</code>), then the device will
-wake up in order 
+wake up in order
     	to perform the update. If you don't update more than once per hour, this
-probably won't 
+probably won't
     	cause significant problems for the battery life. If, however, you need
-to update more 
+to update more
     	frequently and/or you do not need to update while the device is asleep,
-then you can instead 
+then you can instead
     	perform updates based on an alarm that will not wake the device. To do
-so, set an alarm with 
+so, set an alarm with
     	an Intent that your AppWidgetProvider receives, using the	{@link
-android.app.AlarmManager}. 
+android.app.AlarmManager}.
     	Set the alarm type to either {@link
-android.app.AlarmManager#ELAPSED_REALTIME} or 
+android.app.AlarmManager#ELAPSED_REALTIME} or
     	{@link android.app.AlarmManager#RTC}, which will only
     	deliver the alarm when the device is awake. Then set
-<code>updatePeriodMillis</code> to 
+<code>updatePeriodMillis</code> to
     	zero (<code>"0"</code>).</p>
   </li>
   <li>The <code>initialLayout</code> attribute points to the layout resource
@@ -244,7 +244,7 @@
 Widget properties. This is optional
     (read <a href="#Configuring">Creating an App Widget Configuration
 Activity</a> below).</li>
-    
+
    <li>The <code>previewImage</code> attribute specifies a preview of what the
 app widget will look like after it's configured, which the user sees when
 selecting the app widget. If not supplied, the user instead sees your
@@ -255,7 +255,7 @@
 Image</a>. Introduced in Android 3.0.</li>
 
    <li>The <code>autoAdvanceViewId</code> attribute specifies the view ID of the
-app widget subview that should be auto-advanced by the widget's host. Introduced in Android 3.0.</li> 
+app widget subview that should be auto-advanced by the widget's host. Introduced in Android 3.0.</li>
 
 <li>The <code>resizeMode</code> attribute specifies the rules by which a widget
 can be resized. You use this attribute to make homescreen widgets
@@ -264,7 +264,7 @@
 handles to change the size on the layout grid. Values for the
 <code>resizeMode</code> attribute include "horizontal", "vertical", and "none".
 To declare a widget as resizeable horizontally and vertically, supply the value
-"horizontal|vertical". Introduced in Android 3.1.</li> 
+"horizontal|vertical". Introduced in Android 3.1.</li>
 
 <li>The <code>minResizeHeight</code> attribute specifies the minimum height (in dps) to which
 the widget can be resized. This field has no effect if it is greater than {@code minHeight} or if
@@ -296,7 +296,7 @@
 below, but before you begin designing your App Widget, please read and
 understand the
 <a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">App Widget
-Design 
+Design
 Guidelines</a>.</p>
 
 <p>Creating the App Widget layout is simple if you're
@@ -306,7 +306,7 @@
 android.widget.RemoteViews},
 which do not support every kind of layout or view widget.</p>
 
-<p>A RemoteViews object (and, consequently, an App Widget) can support the 
+<p>A RemoteViews object (and, consequently, an App Widget) can support the
 following layout classes:</p>
 
 <ul class="nolist">
@@ -334,7 +334,7 @@
 
 <p>Descendants of these classes are not supported.</p>
 
-<p>RemoteViews also supports {@link android.view.ViewStub}, which is an invisible, zero-sized View you can use 
+<p>RemoteViews also supports {@link android.view.ViewStub}, which is an invisible, zero-sized View you can use
 to lazily inflate layout resources at runtime.</p>
 
 
@@ -386,7 +386,7 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
     <p>You must declare your AppWidgetProvider class implementation as a
-broadcast receiver 
+broadcast receiver
     using the <code>&lt;receiver></code> element in the AndroidManifest (see
     <a href="#Manifest">Declaring an App Widget in the Manifest</a> above).</p>
   </div>
@@ -403,11 +403,11 @@
 
 <dl>
   <dt>
-  {@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()} 
+  {@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context,android.appwidget.AppWidgetManager,int[]) onUpdate()}
 </dt>
     <dd>This is called to update the App Widget at intervals defined by the
 <code>updatePeriodMillis</code>
-    attribute in the AppWidgetProviderInfo (see <a href="#MetaData">Adding the 
+    attribute in the AppWidgetProviderInfo (see <a href="#MetaData">Adding the
     AppWidgetProviderInfo Metadata</a> above). This method is also called
     when the user adds the App Widget, so it should perform the essential setup,
     such as define event handlers for Views and start a temporary
@@ -415,25 +415,25 @@
 configuration
     Activity, <strong>this method is not called</strong> when the user adds the
 App Widget,
-    but is called for the subsequent updates. It is the responsibility of the 
+    but is called for the subsequent updates. It is the responsibility of the
     configuration Activity to perform the first update when configuration is
 done.
     (See <a href="#Configuring">Creating an App Widget Configuration
-Activity</a> below.)</dd> 
+Activity</a> below.)</dd>
 
 <dt>
-  {@link android.appwidget.AppWidgetProvider#onAppWidgetOptionsChanged onAppWidgetOptionsChanged()} 
+  {@link android.appwidget.AppWidgetProvider#onAppWidgetOptionsChanged onAppWidgetOptionsChanged()}
 </dt>
 <dd>
 This is called when the widget is first placed and any time the widget is resized. You can use this callback to show or hide content based on the widget's size ranges. You get the size ranges by calling {@link android.appwidget.AppWidgetManager#getAppWidgetOptions getAppWidgetOptions()}, which returns a  {@link android.os.Bundle} that includes the following:<br /><br />
 <ul>
-  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_WIDTH}&mdash;Contains 
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_WIDTH}&mdash;Contains
 the lower bound on the current width, in dp units, of a widget instance.</li>
-  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_HEIGHT}&mdash;Contains 
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MIN_HEIGHT}&mdash;Contains
 the lower bound on the current height, in dp units, of a widget instance.</li>
   <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_WIDTH}&mdash;Contains
  the upper bound on the current width, in dp units, of a widget instance.</li>
-  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_HEIGHT}&mdash;Contains 
+  <li>{@link android.appwidget.AppWidgetManager#OPTION_APPWIDGET_MAX_HEIGHT}&mdash;Contains
 the upper bound on the current width, in dp units, of a widget instance.</li>
 </ul>
 
@@ -444,34 +444,34 @@
 host.</dd>
   <dt>{@link android.appwidget.AppWidgetProvider#onEnabled(Context)}</dt>
     <dd>This is called when an instance the App Widget is created for the first
-time. For example, if the user 
+time. For example, if the user
     adds two instances of your App Widget, this is only called the first time.
     If you need to open a new database or perform other setup that only needs to
-occur once 
-    for all App Widget instances, then this is a good place to do it.</dd> 
+occur once
+    for all App Widget instances, then this is a good place to do it.</dd>
   <dt>{@link android.appwidget.AppWidgetProvider#onDisabled(Context)}</dt>
     <dd>This is called when the last instance of your App Widget is deleted from
-the App Widget host. 
-    This is where you should clean up any work done in 
-    {@link android.appwidget.AppWidgetProvider#onEnabled(Context)}, 
-    such as delete a temporary database.</dd> 
+the App Widget host.
+    This is where you should clean up any work done in
+    {@link android.appwidget.AppWidgetProvider#onEnabled(Context)},
+    such as delete a temporary database.</dd>
   <dt>{@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)}</dt>
     <dd>This is called for every broadcast and before each of the above callback
 methods.
     You normally don't need to implement this method because the default
-AppWidgetProvider 
-    implementation filters all App Widget broadcasts and calls the above 
-    methods as appropriate.</dd> 
+AppWidgetProvider
+    implementation filters all App Widget broadcasts and calls the above
+    methods as appropriate.</dd>
 </dl>
 
-<p>The most important AppWidgetProvider callback is 
-{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()} 
+<p>The most important AppWidgetProvider callback is
+{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
 because it is called when
 each App Widget is added to a host (unless you use a configuration Activity). If
 your App Widget accepts any user interaction events, then you need to register
 the event handlers in this callback. If your App Widget doesn't create temporary
-files or databases, or perform other work that requires clean-up, then 
-{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()} 
+files or databases, or perform other work that requires clean-up, then
+{@link android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
 may be the only callback
 method you need to define. For example, if you want an App Widget with a button
 that launches an Activity when clicked, you could use the following
@@ -503,9 +503,9 @@
 }
 </pre>
 
-<p>This AppWidgetProvider defines only the 
+<p>This AppWidgetProvider defines only the
 {@link
-android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()} 
+android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[]) onUpdate()}
 method for the purpose of
 defining a {@link android.app.PendingIntent} that launches an {@link
 android.app.Activity} and attaching it to the App Widget's button with {@link
@@ -528,8 +528,8 @@
 android.content.BroadcastReceiver} for information about the broadcast
 lifecycle). If your App Widget setup process can take several seconds (perhaps
 while performing web requests) and you require that your process continues,
-consider starting a {@link android.app.Service} in the 
-{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()} 
+consider starting a {@link android.app.Service} in the
+{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
 method. From within the Service, you can perform your own updates
 to the App Widget without worrying about the AppWidgetProvider closing down due
 to an <a href="{@docRoot}guide/practices/responsiveness.html">Application
@@ -537,7 +537,7 @@
 href="http://code.google.com/p/wiktionary-android/source/browse/trunk/Wiktionary/src/com/example/android/wiktionary/WordWidget.java">Wiktionary sample's AppWidgetProvider</a> for an example of an App Widget running a {@link
 android.app.Service}.</p>
 
-<p>Also see the <a 
+<p>Also see the <a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html">ExampleAppWidgetProvider.java</a>
 sample class.</p>
 
@@ -546,9 +546,9 @@
 
 <p>{@link android.appwidget.AppWidgetProvider} is just a convenience class.  If
 you would like
-to receive the App Widget broadcasts directly, you can implement your own 
-{@link android.content.BroadcastReceiver} or override the 
-{@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)} callback. 
+to receive the App Widget broadcasts directly, you can implement your own
+{@link android.content.BroadcastReceiver} or override the
+{@link android.appwidget.AppWidgetProvider#onReceive(Context,Intent)} callback.
 The Intents you need to care about are as follows:</p>
 <ul>
   <li>{@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE}</li>
@@ -565,11 +565,11 @@
 <p>If you would like the user to configure settings when he or she adds a new
 App Widget,
 you can create an App Widget configuration Activity. This {@link
-android.app.Activity} 
+android.app.Activity}
 will be automatically launched by the App Widget host and allows the user to
 configure
 available settings for the App Widget at create-time, such as the App Widget
-color, size, 
+color, size,
 update period or other functionality settings.</p>
 
 <p>The configuration Activity should be declared as a normal Activity in the
@@ -588,8 +588,8 @@
 </pre>
 
 <p>Also, the Activity must be declared in the AppWidgetProviderInfo XML file,
-with the 
-<code>android:configure</code> attribute (see <a href="#MetaData">Adding 
+with the
+<code>android:configure</code> attribute (see <a href="#MetaData">Adding
 the AppWidgetProviderInfo Metadata</a> above). For example, the configuration
 Activity
 can be declared like this:</p>
@@ -597,13 +597,13 @@
 <pre>
 &lt;appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
     ...
-    android:configure="com.example.android.ExampleAppWidgetConfigure" 
+    android:configure="com.example.android.ExampleAppWidgetConfigure"
     ... >
 &lt;/appwidget-provider>
 </pre>
 
 <p>Notice that the Activity is declared with a fully-qualified namespace,
-because 
+because
 it will be referenced from outside your package scope.</p>
 
 <p>That's all you need to get started with a configuration Activity. Now all you
@@ -612,21 +612,21 @@
 implement the Activity:</p>
 <ul>
   <li>The App Widget host calls the configuration Activity and the configuration
-Activity should always 
+Activity should always
     return a result. The result should include the App Widget ID
     passed by the Intent that launched the Activity (saved in the Intent extras
 as
     {@link android.appwidget.AppWidgetManager#EXTRA_APPWIDGET_ID}).</li>
-  <li>The 
-  {@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()} 
+  <li>The
+  {@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
     method <strong>will not be called</strong> when the App Widget
 is created
     (the system will not send the ACTION_APPWIDGET_UPDATE broadcast when a
 configuration Activity
     is launched). It is the responsibility of the configuration Activity to
-request an update from the 
-    AppWidgetManager when the App Widget is first created. However, 
-{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()} 
+request an update from the
+    AppWidgetManager when the App Widget is first created. However,
+{@link android.appwidget.AppWidgetProvider#onUpdate(Context,AppWidgetManager,int[]) onUpdate()}
     will be called for subsequent updates&mdash;it is only skipped
 the first time.</li>
 </ul>
@@ -641,8 +641,8 @@
 
 <p>When an App Widget uses a configuration Activity, it is the responsibility of
 the Activity
-to update the App Widget when configuration is complete. 
-You can do so by requesting an update directly from the 
+to update the App Widget when configuration is complete.
+You can do so by requesting an update directly from the
 {@link android.appwidget.AppWidgetManager}.</p>
 
 <p>Here's a summary of the procedure to properly update the App Widget and close
@@ -655,7 +655,7 @@
 Bundle extras = intent.getExtras();
 if (extras != null) {
     mAppWidgetId = extras.getInt(
-            AppWidgetManager.EXTRA_APPWIDGET_ID, 
+            AppWidgetManager.EXTRA_APPWIDGET_ID,
             AppWidgetManager.INVALID_APPWIDGET_ID);
 }
 </pre>
@@ -696,7 +696,7 @@
 cancelled and the
 App Widget will not be added.</p>
 
-<p>See the <a 
+<p>See the <a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html">ExampleAppWidgetConfigure.java</a>
 sample class in ApiDemos for an example.</p>
 
@@ -708,7 +708,7 @@
 android.appwidget.AppWidgetProviderInfo#previewImage} field, which specifies a
 preview of what the app widget looks like. This preview is shown to the user from the
 widget picker. If this field is not supplied, the app widget's icon is used for
-the preview.</p> 
+the preview.</p>
 
 <p>This is how you specify this setting in XML:</p>
 
@@ -742,12 +742,12 @@
 <dt>{@link android.widget.GridView}</dt>
 <dd>A view that shows items in
 two-dimensional scrolling grid. For an example, see the Bookmarks app
-widget.</dd> 
+widget.</dd>
 <dt>{@link android.widget.StackView}</dt>
 <dd>A
 stacked card view (kind of like a rolodex), where the user can flick the  front
 card up/down to see the previous/next card, respectively.  Examples include
-the YouTube and Books app widgets. </dd> 
+the YouTube and Books app widgets. </dd>
 <dt>{@link android.widget.AdapterViewFlipper}</dt>
 <dd>An adapter-backed simple
 {@link
@@ -764,7 +764,7 @@
 context of an app widget, the {@link android.widget.Adapter} is replaced by a
 {@link android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory},
 which is simply a thin wrapper around  the {@link android.widget.Adapter}
-interface. 
+interface.
  When
 requested for a specific item in the collection, the {@link
 android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory} creates
@@ -782,7 +782,7 @@
 android.widget.ListView}, {@link android.widget.GridView}, and so on) and the
 underlying data for that view. From the  <a
 href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget
-sample</a>, here is an example of the boilerplate code you use to implement 
+sample</a>, here is an example of the boilerplate code you use to implement
 this service and interface:
 </p>
 
@@ -813,13 +813,13 @@
 
 <p>This sample consists of a stack of 10 views, which  display the values
 <code>&quot;0!&quot;</code> through <code>&quot;9!&quot;</code> The sample
-app widget has these primary behaviors:</p> 
+app widget has these primary behaviors:</p>
 
 <ul>
 
   <li>The user can vertically fling the top view in the
 app widget to display the next or previous view. This is a built-in StackView
-behavior.</li> 
+behavior.</li>
 
   <li>Without any user interaction, the app widget automatically advances
 through
@@ -828,17 +828,17 @@
 <code>res/xml/stackwidgetinfo.xml</code> file. This setting applies to the view
 ID,
 which in this case is the view ID of the stack view.</li>
-  
+
   <li>If the user touches the top view, the app widget displays the {@link
 android.widget.Toast} message &quot;Touched view <em>n</em>,&quot; where
 <em>n</em> is the index (position) of the touched view. For more discussion of
-how this is implemented, see  
+how this is implemented, see
 <a href="#behavior">Adding behavior to individual items</a>.</li>
 
 </ul>
 <h3 id="implementing_collections">Implementing app widgets with collections</h3>
 
-<p>To implement an app widget with collections, you follow the same basic steps 
+<p>To implement an app widget with collections, you follow the same basic steps
 you would use to implement any app widget. The following sections  describe the
 additional steps you need to perform to implement an app widget with
 collections.</p>
@@ -940,7 +940,7 @@
 int[] appWidgetIds) {
     // update each of the app widgets with the remote adapter
     for (int i = 0; i &lt; appWidgetIds.length; ++i) {
-        
+
         // Set up the intent that starts the StackViewService, which will
         // provide the views for this collection.
         Intent intent = new Intent(context, StackWidgetService.class);
@@ -949,13 +949,13 @@
         intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
         // Instantiate the RemoteViews object for the app widget layout.
         RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
-        // Set up the RemoteViews object to use a RemoteViews adapter. 
+        // Set up the RemoteViews object to use a RemoteViews adapter.
         // This adapter connects
         // to a RemoteViewsService  through the specified intent.
         // This is how you populate the data.
         rv.setRemoteAdapter(appWidgetIds[i], R.id.stack_view, intent);
-        
-        // The empty view is displayed when the collection has no items. 
+
+        // The empty view is displayed when the collection has no items.
         // It should be in the same layout used to instantiate the RemoteViews
         // object above.
         rv.setEmptyView(R.id.stack_view, R.id.empty_view);
@@ -963,12 +963,12 @@
         //
         // Do additional processing specific to this app widget...
         //
-        
-        appWidgetManager.updateAppWidget(appWidgetIds[i], rv);   
+
+        appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
     }
     super.onUpdate(context, appWidgetManager, appWidgetIds);
 }</pre>
-            
+
 <h4>RemoteViewsService class</h4>
 
 <div class="sidebox-wrapper">
@@ -984,7 +984,7 @@
 
 <p>As described above, your {@link android.widget.RemoteViewsService} subclass
 provides the {@link android.widget.RemoteViewsService.RemoteViewsFactory
-RemoteViewsFactory} used to  populate the remote collection view.</p> 
+RemoteViewsFactory} used to  populate the remote collection view.</p>
 
 <p>Specifically, you need to
 perform these steps:</p>
@@ -993,7 +993,7 @@
   <li>Subclass {@link android.widget.RemoteViewsService}. {@link
 android.widget.RemoteViewsService} is the service through which
 a remote adapter can request {@link android.widget.RemoteViews}.  </li>
-  
+
   <li>In your {@link android.widget.RemoteViewsService} subclass, include a
 class that implements the {@link
 android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory}
@@ -1027,12 +1027,12 @@
 <p>The two most important methods you need to implement for your
 
 {@link android.widget.RemoteViewsService.RemoteViewsFactory RemoteViewsFactory}
-subclass are 
+subclass are
 {@link android.widget.RemoteViewsService.RemoteViewsFactory#onCreate()
 onCreate()} and
 {@link android.widget.RemoteViewsService.RemoteViewsFactory#getViewAt(int)
 getViewAt()}
-.</p> 
+.</p>
 
 <p>The system calls {@link
 android.widget.RemoteViewsService.RemoteViewsFactory#onCreate() onCreate()} when
@@ -1047,7 +1047,7 @@
 
 <p>Here is an excerpt from the <a
 href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget</a>
-sample's 
+sample's
 {@link android.widget.RemoteViewsService.RemoteViewsFactory
 RemoteViewsFactory} implementation that shows portions of the {@link
 android.widget.RemoteViewsService.RemoteViewsFactory#onCreate() onCreate()}
@@ -1081,7 +1081,7 @@
 RemoteViewsFactory} method {@link
 android.widget.RemoteViewsService.RemoteViewsFactory#getViewAt(int) getViewAt()}
 returns a {@link android.widget.RemoteViews} object corresponding to the data at
-the specified <code>position</code> in the data set. Here is an excerpt from 
+the specified <code>position</code> in the data set. Here is an excerpt from
 the <a
 href="http://developer.android.com/resources/samples/StackWidget/index.html">
 StackView Widget</a> sample's {@link
@@ -1089,8 +1089,8 @@
 implementation:</p>
 
 <pre>public RemoteViews getViewAt(int position) {
-   
-    // Construct a remote views item based on the app widget item XML file, 
+
+    // Construct a remote views item based on the app widget item XML file,
     // and set the text based on the position.
     RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
     rv.setTextViewText(R.id.widget_item, mWidgetItems.get(position).text);
@@ -1104,7 +1104,7 @@
 
 <p>The above sections show you how to bind your data to your app widget
 collection. But what if you want to add dynamic behavior to the individual items
-in your collection view?</p> 
+in your collection view?</p>
 
 <p> As described in <a href="#AppWidgetProvider">Using the AppWidgetProvider
 Class</a>, you  normally use {@link
@@ -1122,7 +1122,7 @@
 setOnClickFillInIntent()}. This entails setting up up a pending intent template
 for your collection view, and then setting a fill-in intent on each item in the
 collection via your {@link android.widget.RemoteViewsService.RemoteViewsFactory
-RemoteViewsFactory}.</p> 
+RemoteViewsFactory}.</p>
 <p>This section uses the <a
 href="{@docRoot}resources/samples/StackWidget/index.html">StackView Widget
 sample</a> to describe how to add behavior to individual items. In the <a
@@ -1138,7 +1138,7 @@
 a custom action called <code>TOAST_ACTION</code>.</li>
   <li>When the user touches a view, the intent is fired and it broadcasts
 <code>TOAST_ACTION</code>.</li>
-  
+
   <li>This broadcast is intercepted by the <code>StackWidgetProvider</code>'s
 {@link android.appwidget.AppWidgetProvider#onReceive(android.content.Context,
 android.content.Intent) onReceive()} method, and the app widget displays the
@@ -1154,7 +1154,7 @@
 sample</a> uses a broadcast, but typically an app widget would simply launch an
 activity in a scenario like this one.</p>
 
-<h5>Setting up the pending intent template</h5> 
+<h5>Setting up the pending intent template</h5>
 
 <p>The <code>StackWidgetProvider</code> ({@link
 android.appwidget.AppWidgetProvider} subclass) sets up a pending intent.
@@ -1162,7 +1162,7 @@
 Instead, the collection as a whole sets up a pending intent template, and the
 individual items set a fill-in intent to create unique behavior on an
 item-by-item
-basis.</p> 
+basis.</p>
 
 <p>This class  also receives the broadcast that is sent when the user touches a
 view. It processes this event in its {@link
@@ -1179,7 +1179,7 @@
     ...
 
     // Called when the BroadcastReceiver receives an Intent broadcast.
-    // Checks to see whether the intent's action is TOAST_ACTION. If it is, the app widget 
+    // Checks to see whether the intent's action is TOAST_ACTION. If it is, the app widget
     // displays a Toast message for the current item.
     &#64;Override
     public void onReceive(Context context, Intent intent) {
@@ -1192,12 +1192,12 @@
         }
         super.onReceive(context, intent);
     }
-    
+
     &#64;Override
     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
         // update each of the app widgets with the remote adapter
         for (int i = 0; i &lt; appWidgetIds.length; ++i) {
-    
+
             // Sets up the intent that points to the StackViewService that will
             // provide the views for this collection.
             Intent intent = new Intent(context, StackWidgetService.class);
@@ -1207,7 +1207,7 @@
             intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
             RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
             rv.setRemoteAdapter(appWidgetIds[i], R.id.stack_view, intent);
-    
+
             // The empty view is displayed when the collection has no items. It should be a sibling
             // of the collection view.
             rv.setEmptyView(R.id.stack_view, R.id.empty_view);
@@ -1227,13 +1227,13 @@
             PendingIntent toastPendingIntent = PendingIntent.getBroadcast(context, 0, toastIntent,
                 PendingIntent.FLAG_UPDATE_CURRENT);
             rv.setPendingIntentTemplate(R.id.stack_view, toastPendingIntent);
-            
+
             appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
         }
     super.onUpdate(context, appWidgetManager, appWidgetIds);
     }
 }</pre>
-            
+
 <h5><strong>Setting the fill-in Intent</strong></h5>
 
 <p>Your {@link android.widget.RemoteViewsService.RemoteViewsFactory
@@ -1274,17 +1274,17 @@
            ...
         }
         ...
-    
-        // Given the position (index) of a WidgetItem in the array, use the item's text value in 
+
+        // Given the position (index) of a WidgetItem in the array, use the item's text value in
         // combination with the app widget item XML file to construct a RemoteViews object.
         public RemoteViews getViewAt(int position) {
             // position will always range from 0 to getCount() - 1.
-    
+
             // Construct a RemoteViews item based on the app widget item XML file, and set the
             // text based on the position.
             RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
             rv.setTextViewText(R.id.widget_item, mWidgetItems.get(position).text);
-    
+
             // Next, set a fill-intent, which will be used to fill in the pending intent template
             // that is set on the collection view in StackWidgetProvider.
             Bundle extras = new Bundle();
@@ -1294,9 +1294,9 @@
             // Make it possible to distinguish the individual on-click
             // action of a given item
             rv.setOnClickFillInIntent(R.id.widget_item, fillInIntent);
-        
+
             ...
-        
+
             // Return the RemoteViews object.
             return rv;
         }
diff --git a/docs/html/guide/topics/connectivity/bluetooth-le.jd b/docs/html/guide/topics/connectivity/bluetooth-le.jd
index 3d60686..ba742ee 100644
--- a/docs/html/guide/topics/connectivity/bluetooth-le.jd
+++ b/docs/html/guide/topics/connectivity/bluetooth-le.jd
@@ -171,7 +171,7 @@
 </pre>
 
 <p>However, if you want to make your app available to devices that don't support BLE,
-you should still include this element in your app's manifest, but set {@code required="false"}. 
+you should still include this element in your app's manifest, but set {@code required="false"}.
 Then at run-time you can determine BLE availability by using
 {@link android.content.pm.PackageManager#hasSystemFeature PackageManager.hasSystemFeature()}:
 
diff --git a/docs/html/guide/topics/connectivity/bluetooth.jd b/docs/html/guide/topics/connectivity/bluetooth.jd
index 96008c5..07fcd09 100644
--- a/docs/html/guide/topics/connectivity/bluetooth.jd
+++ b/docs/html/guide/topics/connectivity/bluetooth.jd
@@ -4,55 +4,55 @@
 
 <div id="qv-wrapper">
 <div id="qv">
- 
+
   <h2>In this document</h2>
-  <ol> 
+  <ol>
     <li><a href="#TheBasics">The Basics</a></li>
     <li><a href="#Permissions">Bluetooth Permissions</a></li>
-    <li><a href="#SettingUp">Setting Up Bluetooth</a></li> 
-    <li><a href="#FindingDevices">Finding Devices</a> 
-      <ol> 
-        <li><a href="#QueryingPairedDevices">Querying paired devices</a></li> 
-        <li><a href="#DiscoveringDevices">Discovering devices</a></li> 
-      </ol></li> 
-    <li><a href="#ConnectingDevices">Connecting Devices</a> 
-      <ol> 
-        <li><a href="#ConnectingAsAServer">Connecting as a server</a></li> 
-        <li><a href="#ConnectingAsAClient">Connecting as a client</a></li> 
-      </ol></li> 
+    <li><a href="#SettingUp">Setting Up Bluetooth</a></li>
+    <li><a href="#FindingDevices">Finding Devices</a>
+      <ol>
+        <li><a href="#QueryingPairedDevices">Querying paired devices</a></li>
+        <li><a href="#DiscoveringDevices">Discovering devices</a></li>
+      </ol></li>
+    <li><a href="#ConnectingDevices">Connecting Devices</a>
+      <ol>
+        <li><a href="#ConnectingAsAServer">Connecting as a server</a></li>
+        <li><a href="#ConnectingAsAClient">Connecting as a client</a></li>
+      </ol></li>
     <li><a href="#ManagingAConnection">Managing a Connection</a></li>
-    <li><a href="#Profiles">Working with Profiles</a> 
+    <li><a href="#Profiles">Working with Profiles</a>
       <ol>
         <li><a href="#AT-Commands">Vendor-specific AT commands</a>
         <li><a href="#HDP">Health Device Profile</a>
       </ol></li>
-  </ol> 
- 
-  <h2>Key classes</h2> 
-  <ol> 
-    <li>{@link android.bluetooth.BluetoothAdapter}</li> 
-    <li>{@link android.bluetooth.BluetoothDevice}</li> 
-    <li>{@link android.bluetooth.BluetoothSocket}</li> 
-    <li>{@link android.bluetooth.BluetoothServerSocket}</li> 
-  </ol> 
- 
-  <h2>Related samples</h2> 
-  <ol> 
-    <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat</a></li> 
+  </ol>
+
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.bluetooth.BluetoothAdapter}</li>
+    <li>{@link android.bluetooth.BluetoothDevice}</li>
+    <li>{@link android.bluetooth.BluetoothSocket}</li>
+    <li>{@link android.bluetooth.BluetoothServerSocket}</li>
+  </ol>
+
+  <h2>Related samples</h2>
+  <ol>
+    <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat</a></li>
     <li><a href="{@docRoot}resources/samples/BluetoothHDP/index.html">Bluetooth HDP (Health Device Profile)</a></li>
-  </ol> 
- 
-</div> 
-</div> 
- 
- 
+  </ol>
+
+</div>
+</div>
+
+
 <p>The Android platform includes support for the Bluetooth network stack,
 which allows a device to wirelessly exchange data with other Bluetooth devices.
 The application framework provides access to the Bluetooth functionality through
 the Android Bluetooth APIs. These APIs let applications wirelessly
 connect to other Bluetooth devices, enabling point-to-point and multipoint
-wireless features.</p> 
- 
+wireless features.</p>
+
 <p>Using the Bluetooth APIs, an Android application can perform the
 following:</p>
 <ul>
@@ -75,14 +75,14 @@
 <p>This document describes how to use the Android Bluetooth APIs to accomplish
 the four major tasks necessary to communicate using Bluetooth: setting up
 Bluetooth, finding devices that are either paired or available in the local
-area, connecting devices, and transferring data between devices.</p> 
- 
+area, connecting devices, and transferring data between devices.</p>
+
 <p>All of the Bluetooth APIs are available in the {@link android.bluetooth}
 package. Here's a summary of the classes and interfaces you will need to create Bluetooth
-connections:</p> 
- 
-<dl> 
-<dt>{@link android.bluetooth.BluetoothAdapter}</dt> 
+connections:</p>
+
+<dl>
+<dt>{@link android.bluetooth.BluetoothAdapter}</dt>
 <dd>Represents the local Bluetooth adapter (Bluetooth radio). The
 {@link android.bluetooth.BluetoothAdapter} is the entry-point for all Bluetooth
 interaction. Using this,
@@ -90,49 +90,49 @@
 devices, instantiate a {@link android.bluetooth.BluetoothDevice} using a known
 MAC address, and create a {@link android.bluetooth.BluetoothServerSocket} to
 listen for communications
-from other devices.</dd> 
- 
-<dt>{@link android.bluetooth.BluetoothDevice}</dt> 
+from other devices.</dd>
+
+<dt>{@link android.bluetooth.BluetoothDevice}</dt>
 <dd>Represents a remote Bluetooth device. Use this to request a connection
 with a remote device through a {@link android.bluetooth.BluetoothSocket} or
 query information about the
-device such as its name, address, class, and bonding state.</dd> 
- 
-<dt>{@link android.bluetooth.BluetoothSocket}</dt> 
+device such as its name, address, class, and bonding state.</dd>
+
+<dt>{@link android.bluetooth.BluetoothSocket}</dt>
 <dd>Represents the interface for a Bluetooth socket (similar to a TCP
 {@link java.net.Socket}). This is the connection point that allows
 an application to exchange data with another Bluetooth device via InputStream
-and OutputStream.</dd> 
- 
-<dt>{@link android.bluetooth.BluetoothServerSocket}</dt> 
+and OutputStream.</dd>
+
+<dt>{@link android.bluetooth.BluetoothServerSocket}</dt>
 <dd>Represents an open server socket that listens for incoming requests
 (similar to a TCP {@link java.net.ServerSocket}). In order to connect two
 Android devices, one device must open a server socket with this class. When a
 remote Bluetooth device makes a connection request to the this device, the
 {@link android.bluetooth.BluetoothServerSocket} will return a connected {@link
 android.bluetooth.BluetoothSocket} when the
-connection is accepted.</dd> 
- 
-<dt>{@link android.bluetooth.BluetoothClass}</dt> 
+connection is accepted.</dd>
+
+<dt>{@link android.bluetooth.BluetoothClass}</dt>
 <dd>Describes the general characteristics and capabilities of a Bluetooth
 device. This is a read-only set of properties that define the device's major and
 minor device classes and its services. However, this does not reliably describe
 all Bluetooth profiles and services supported by the device, but is useful as a
-hint to the device type.</dd> 
- 
+hint to the device type.</dd>
+
 <dt>{@link android.bluetooth.BluetoothProfile}</dt> <dd>An interface that
 represents a Bluetooth profile. A <em>Bluetooth profile</em> is a wireless
 interface specification for Bluetooth-based communication between devices. An
 example is the Hands-Free profile.  For more discussion of profiles, see <a
-href="#Profiles">Working with Profiles</a></dd> 
+href="#Profiles">Working with Profiles</a></dd>
 
 <dt>{@link android.bluetooth.BluetoothHeadset}</dt> <dd>Provides support for
 Bluetooth headsets to be used with mobile phones. This includes both  Bluetooth
-Headset and Hands-Free (v1.5) profiles.</dd> 
+Headset and Hands-Free (v1.5) profiles.</dd>
 
 <dt>{@link android.bluetooth.BluetoothA2dp}</dt> <dd> Defines how high quality
 audio can be streamed from one device to another over a Bluetooth connection.
-"A2DP" stands for Advanced Audio Distribution Profile.</dd> 
+"A2DP" stands for Advanced Audio Distribution Profile.</dd>
 
 <dt>{@link android.bluetooth.BluetoothHealth}</dt>
 <dd> Represents a Health Device Profile proxy that controls the Bluetooth service.</dd>
@@ -146,23 +146,23 @@
 
 <dt>{@link android.bluetooth.BluetoothHealthAppConfiguration}</dt>
 
-<dd>Represents an application configuration that the Bluetooth Health third-party 
+<dd>Represents an application configuration that the Bluetooth Health third-party
 application registers to communicate with a remote Bluetooth health
-device.</dd> 
+device.</dd>
 
 <dt>{@link android.bluetooth.BluetoothProfile.ServiceListener}</dt>
 
 <dd>An interface that notifies {@link android.bluetooth.BluetoothProfile} IPC
 clients when they have  been connected to or disconnected from the service (that
 is, the internal service that runs a particular profile). </dd>
- 
-</dl> 
- 
- 
- 
- 
-<h2 id="Permissions">Bluetooth Permissions</h2> 
- 
+
+</dl>
+
+
+
+
+<h2 id="Permissions">Bluetooth Permissions</h2>
+
 <p>In order to use Bluetooth features in your application, you must declare
 the Bluetooth permission {@link android.Manifest.permission#BLUETOOTH}.
 You need this permission to perform any Bluetooth communication,
@@ -175,40 +175,40 @@
 permission should not be used, unless the application is a "power manager" that
 will modify Bluetooth settings upon user request. <strong>Note:</strong> If you
 use {@link android.Manifest.permission#BLUETOOTH_ADMIN} permission, then you must
-also have the {@link android.Manifest.permission#BLUETOOTH} permission.</p> 
- 
+also have the {@link android.Manifest.permission#BLUETOOTH} permission.</p>
+
 <p>Declare the Bluetooth permission(s) in your application manifest file. For
-example:</p> 
- 
-<pre> 
+example:</p>
+
+<pre>
 &lt;manifest ... >
   &lt;uses-permission android:name="android.permission.BLUETOOTH" />
   ...
 &lt;/manifest>
-</pre> 
- 
+</pre>
+
 <p>See the <a
-href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission></a> 
-reference for more information about declaring application permissions.</p> 
- 
- 
-<h2 id="SettingUp">Setting Up Bluetooth</h2> 
- 
-<div class="figure" style="width:200px"> 
-<img src="{@docRoot}images/bt_enable_request.png" /> 
+href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission></a>
+reference for more information about declaring application permissions.</p>
+
+
+<h2 id="SettingUp">Setting Up Bluetooth</h2>
+
+<div class="figure" style="width:200px">
+<img src="{@docRoot}images/bt_enable_request.png" />
 <strong>Figure 1:</strong> The enabling Bluetooth dialog.
-</div> 
- 
+</div>
+
 <p>Before your application can communicate over Bluetooth, you need to verify
-that Bluetooth is supported on the device, and if so, ensure that it is enabled.</p> 
- 
+that Bluetooth is supported on the device, and if so, ensure that it is enabled.</p>
+
 <p>If Bluetooth is not supported, then you should gracefully disable any
 Bluetooth features. If Bluetooth is supported, but disabled, then you can request that the
 user enable Bluetooth without leaving your application. This setup is
-accomplished in two steps, using the {@link android.bluetooth.BluetoothAdapter}.</p> 
- 
- 
-<ol> 
+accomplished in two steps, using the {@link android.bluetooth.BluetoothAdapter}.</p>
+
+
+<ol>
 <li>Get the {@link android.bluetooth.BluetoothAdapter}
 <p>The {@link android.bluetooth.BluetoothAdapter} is required for any and all Bluetooth
 activity. To get the {@link android.bluetooth.BluetoothAdapter}, call the static {@link
@@ -217,15 +217,15 @@
 Bluetooth adapter (the Bluetooth radio). There's one Bluetooth adapter for the
 entire system, and your application can interact with it using this object. If
 {@link android.bluetooth.BluetoothAdapter#getDefaultAdapter()} returns null,
-then the device does not support Bluetooth and your story ends here. For example:</p> 
-<pre> 
+then the device does not support Bluetooth and your story ends here. For example:</p>
+<pre>
 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
 if (mBluetoothAdapter == null) {
     // Device does not support Bluetooth
 }
-</pre> 
-</li> 
- 
+</pre>
+</li>
+
 <li>Enable Bluetooth
 <p>Next, you need to ensure that Bluetooth is enabled. Call {@link
 android.bluetooth.BluetoothAdapter#isEnabled()} to check whether Bluetooth is
@@ -234,17 +234,17 @@
 android.app.Activity#startActivityForResult(Intent,int) startActivityForResult()}
 with the {@link android.bluetooth.BluetoothAdapter#ACTION_REQUEST_ENABLE} action Intent.
 This will issue a request to enable Bluetooth through the system settings (without
-stopping your application). For example:</p> 
-<pre> 
+stopping your application). For example:</p>
+<pre>
 if (!mBluetoothAdapter.isEnabled()) {
     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
     startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
 }
-</pre> 
- 
+</pre>
+
 <p>A dialog will appear requesting user permission to enable Bluetooth, as shown
 in Figure 1. If the user responds "Yes," the system will begin to enable Bluetooth
-and focus will return to your application once the process completes (or fails).</p> 
+and focus will return to your application once the process completes (or fails).</p>
 
 <p>The {@code REQUEST_ENABLE_BT} constant passed to {@link
 android.app.Activity#startActivityForResult(Intent,int) startActivityForResult()} is a locally
@@ -259,9 +259,9 @@
 callback. If Bluetooth was not enabled
 due to an error (or the user responded "No") then the result code is {@link
 android.app.Activity#RESULT_CANCELED}.</p>
-</li> 
-</ol> 
- 
+</li>
+</ol>
+
 <p>Optionally, your application can also listen for the
 {@link android.bluetooth.BluetoothAdapter#ACTION_STATE_CHANGED} broadcast Intent, which
 the system will broadcast whenever the Bluetooth state has changed. This broadcast contains
@@ -273,21 +273,21 @@
 android.bluetooth.BluetoothAdapter#STATE_TURNING_OFF}, and {@link
 android.bluetooth.BluetoothAdapter#STATE_OFF}. Listening for this
 broadcast can be useful to detect changes made to the Bluetooth state while your
-app is running.</p> 
- 
+app is running.</p>
+
 <p class="note"><strong>Tip:</strong> Enabling discoverability will automatically
 enable Bluetooth. If you plan to consistently enable device discoverability before
 performing Bluetooth activity, you can skip
 step 2 above. Read about <a href="#EnablingDiscoverability">enabling discoverability</a>,
-below.</p> 
- 
- 
-<h2 id="FindingDevices">Finding Devices</h2> 
- 
+below.</p>
+
+
+<h2 id="FindingDevices">Finding Devices</h2>
+
 <p>Using the {@link android.bluetooth.BluetoothAdapter}, you can find remote Bluetooth
 devices either through device discovery or by querying the list of paired (bonded)
-devices.</p> 
- 
+devices.</p>
+
 <p>Device discovery is a scanning procedure that searches the local area for
 Bluetooth enabled devices and then requesting some information about each one
 (this is sometimes referred to as "discovering," "inquiring" or "scanning").
@@ -296,15 +296,15 @@
 discoverable, it will respond to the discovery request by sharing some
 information, such as the device name, class, and its unique MAC address. Using
 this information, the device performing discovery can then choose to initiate a
-connection to the discovered device.</p> 
- 
+connection to the discovered device.</p>
+
 <p>Once a connection is made with a remote device for the first time, a pairing
 request is automatically presented to the user. When a device is
 paired, the basic information about that device (such as the device name, class,
 and MAC address) is saved and can be read using the Bluetooth APIs. Using the
 known MAC address for a remote device, a connection can be initiated with it at
-any time without performing discovery (assuming the device is within range).</p> 
- 
+any time without performing discovery (assuming the device is within range).</p>
+
 <p>Remember there is a difference between being paired and being connected. To
 be paired means that two devices are aware of each other's existence, have a
 shared link-key that can be used for authentication, and are capable of
@@ -312,28 +312,28 @@
 the devices currently share an RFCOMM channel and are able to transmit data with
 each other. The current Android Bluetooth API's require devices to be paired
 before an RFCOMM connection can be established. (Pairing is automatically performed
-when you initiate an encrypted connection with the Bluetooth APIs.)</p> 
- 
+when you initiate an encrypted connection with the Bluetooth APIs.)</p>
+
 <p>The following sections describe how to find devices that have been paired, or
-discover new devices using device discovery.</p> 
- 
+discover new devices using device discovery.</p>
+
 <p class="note"><strong>Note:</strong> Android-powered devices are not
 discoverable by default. A user can make
 the device discoverable for a limited time through the system settings, or an
 application can request that the user enable discoverability without leaving the
-application. How to <a href="#EnablingDiscoverability">enable discoverability</a> 
-is discussed below.</p> 
- 
- 
-<h3 id="QueryingPairedDevices">Querying paired devices</h3> 
- 
+application. How to <a href="#EnablingDiscoverability">enable discoverability</a>
+is discussed below.</p>
+
+
+<h3 id="QueryingPairedDevices">Querying paired devices</h3>
+
 <p>Before performing device discovery, its worth querying the set
 of paired devices to see if the desired device is already known. To do so,
 call {@link android.bluetooth.BluetoothAdapter#getBondedDevices()}. This
 will return a Set of {@link android.bluetooth.BluetoothDevice}s representing
 paired devices. For example, you can query all paired devices and then
-show the name of each device to the user, using an ArrayAdapter:</p> 
-<pre> 
+show the name of each device to the user, using an ArrayAdapter:</p>
+<pre>
 Set&lt;BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
 // If there are paired devices
 if (pairedDevices.size() > 0) {
@@ -343,24 +343,24 @@
         mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
     }
 }
-</pre> 
- 
+</pre>
+
 <p>All that's needed from the {@link android.bluetooth.BluetoothDevice} object
 in order to initiate a connection is the MAC address. In this example, it's saved
 as a part of an ArrayAdapter that's shown to the user. The MAC address can later
 be extracted in order to initiate the connection. You can learn more about creating
-a connection in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p> 
- 
- 
-<h3 id="DiscoveringDevices">Discovering devices</h3> 
- 
+a connection in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p>
+
+
+<h3 id="DiscoveringDevices">Discovering devices</h3>
+
 <p>To start discovering devices, simply call {@link
 android.bluetooth.BluetoothAdapter#startDiscovery()}. The
 process is asynchronous and the method will immediately return with a boolean
 indicating whether discovery has successfully started. The discovery process
 usually involves an inquiry scan of about 12 seconds, followed by a page scan of
-each found device to retrieve its Bluetooth name.</p> 
- 
+each found device to retrieve its Bluetooth name.</p>
+
 <p>Your application must register a BroadcastReceiver for the
 {@link android.bluetooth.BluetoothDevice#ACTION_FOUND} Intent in
 order to receive information about each
@@ -371,8 +371,8 @@
 {@link android.bluetooth.BluetoothDevice#EXTRA_CLASS}, containing a
 {@link android.bluetooth.BluetoothDevice} and a {@link
 android.bluetooth.BluetoothClass}, respectively. For example, here's how you can
-register to handle the broadcast when devices are discovered:</p> 
-<pre> 
+register to handle the broadcast when devices are discovered:</p>
+<pre>
 // Create a BroadcastReceiver for ACTION_FOUND
 private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
     public void onReceive(Context context, Intent intent) {
@@ -389,15 +389,15 @@
 // Register the BroadcastReceiver
 IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
 registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy
-</pre> 
- 
+</pre>
+
 <p>All that's needed from the {@link android.bluetooth.BluetoothDevice} object
 in order to initiate a
 connection is the MAC address. In this example, it's saved as a part of an
 ArrayAdapter that's shown to the user. The MAC address can later be extracted in
 order to initiate the connection. You can learn more about creating a connection
-in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p> 
- 
+in the section about <a href="#ConnectingDevices">Connecting Devices</a>.</p>
+
 <p class="caution"><strong>Caution:</strong> Performing device discovery is
 a heavy procedure for the Bluetooth
 adapter and will consume a lot of its resources. Once you have found a device to
@@ -406,10 +406,10 @@
 attempting a connection. Also, if you
 already hold a connection with a device, then performing discovery can
 significantly reduce the bandwidth available for the connection, so you should
-not perform discovery while connected.</p> 
- 
-<h4 id="EnablingDiscoverability">Enabling discoverability</h4> 
- 
+not perform discovery while connected.</p>
+
+<h4 id="EnablingDiscoverability">Enabling discoverability</h4>
+
 <p>If you would like to make the local device discoverable to other devices,
 call {@link android.app.Activity#startActivityForResult(Intent,int)} with the
 {@link android.bluetooth.BluetoothAdapter#ACTION_REQUEST_DISCOVERABLE} action
@@ -420,30 +420,30 @@
 extra. The maximum duration an app can set is 3600 seconds, and a value of 0
 means the device is always discoverable. Any value below 0 or above 3600 is
 automatically set to 120 secs). For example, this snippet sets the duration to
-300:</p> 
+300:</p>
 
 <pre>Intent discoverableIntent = new
 Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
 discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
 startActivity(discoverableIntent);
-</pre> 
- 
-<div class="figure" style="width:200px"> 
-<img src="{@docRoot}images/bt_enable_discoverable.png" /> 
+</pre>
+
+<div class="figure" style="width:200px">
+<img src="{@docRoot}images/bt_enable_discoverable.png" />
 <strong>Figure 2:</strong> The enabling discoverability dialog.
-</div> 
- 
+</div>
+
 <p>A dialog will be displayed, requesting user permission to make the device
 discoverable, as shown in Figure 2. If the user responds "Yes," then the device
 will become discoverable for the specified amount of time. Your activity will
 then receive a call to the {@link android.app.Activity#onActivityResult(int,int,Intent)
 onActivityResult())} callback, with the result code equal to the duration that the device
 is discoverable. If the user responded "No" or if an error occurred, the result code will
-be {@link android.app.Activity#RESULT_CANCELED}.</p> 
- 
+be {@link android.app.Activity#RESULT_CANCELED}.</p>
+
 <p class="note"><strong>Note:</strong> If Bluetooth has not been enabled on the device,
-then enabling device discoverability will automatically enable Bluetooth.</p> 
- 
+then enabling device discoverability will automatically enable Bluetooth.</p>
+
 <p>The device will silently remain in discoverable mode for the allotted time.
 If you would like to be notified when the discoverable mode has changed, you can
 register a BroadcastReceiver for the {@link
@@ -457,18 +457,18 @@
 android.bluetooth.BluetoothAdapter#SCAN_MODE_NONE},
 which indicate that the device is either in discoverable mode, not in
 discoverable mode but still able to receive connections, or not in discoverable
-mode and unable to receive connections, respectively.</p> 
- 
+mode and unable to receive connections, respectively.</p>
+
 <p>You do not need to enable device discoverability if you will be initiating
 the connection to a remote device. Enabling discoverability is only necessary when
 you want your application to host a server socket that will accept incoming
 connections, because the remote devices must be able to discover the device
-before it can initiate the connection.</p> 
- 
- 
- 
-<h2 id="ConnectingDevices">Connecting Devices</h2> 
- 
+before it can initiate the connection.</p>
+
+
+
+<h2 id="ConnectingDevices">Connecting Devices</h2>
+
 <p>In order to create a connection between your application on two devices, you
 must implement both the server-side and client-side mechanisms, because one
 device must open a server socket and the other one must initiate the connection
@@ -478,36 +478,36 @@
 point, each device can obtain input and output streams and data transfer can
 begin, which is discussed in the section about <a
 href="#ManagingAConnection">Managing a Connection</a>. This section describes how
-to initiate the connection between two devices.</p> 
- 
+to initiate the connection between two devices.</p>
+
 <p>The server device and the client device each obtain the required {@link
 android.bluetooth.BluetoothSocket} in different ways. The server will receive it
 when an incoming connection is accepted. The client will receive it when it
-opens an RFCOMM channel to the server.</p> 
- 
-<div class="figure" style="width:200px"> 
-<img src="{@docRoot}images/bt_pairing_request.png" /> 
+opens an RFCOMM channel to the server.</p>
+
+<div class="figure" style="width:200px">
+<img src="{@docRoot}images/bt_pairing_request.png" />
 <strong>Figure 3:</strong> The Bluetooth pairing dialog.
-</div> 
- 
+</div>
+
 <p>One implementation technique is to automatically prepare each device as a
 server, so that each one has a server socket open and listening for connections.
 Then either device can initiate a connection with the other and become the
 client. Alternatively, one device can explicitly "host" the connection and open
 a server socket on demand and the other device can simply initiate the
-connection.</p> 
- 
+connection.</p>
+
 <p class="note"><strong>Note:</strong> If the two devices have not been previously paired,
 then the Android framework will automatically show a pairing request notification or
 dialog to the user during the connection procedure, as shown in Figure 3. So
 when attempting to connect devices,
 your application does not need to be concerned about whether or not the devices are
 paired. Your RFCOMM connection attempt will block until the user has successfully paired,
-or will fail if the user rejects pairing, or if pairing fails or times out. </p> 
- 
- 
-<h3 id="ConnectingAsAServer">Connecting as a server</h3> 
- 
+or will fail if the user rejects pairing, or if pairing fails or times out. </p>
+
+
+<h3 id="ConnectingAsAServer">Connecting as a server</h3>
+
 <p>When you want to connect two devices, one must act as a server by holding an
 open {@link android.bluetooth.BluetoothServerSocket}. The purpose of the server
 socket is to listen for incoming connection requests and when one is accepted,
@@ -515,26 +515,26 @@
 android.bluetooth.BluetoothSocket} is acquired from the {@link
 android.bluetooth.BluetoothServerSocket},
 the {@link android.bluetooth.BluetoothServerSocket} can (and should) be
-discarded, unless you want to accept more connections.</p> 
- 
-<div class="sidebox-wrapper"> 
-<div class="sidebox"> 
-<h2>About UUID</h2> 
- 
+discarded, unless you want to accept more connections.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>About UUID</h2>
+
 <p>A Universally Unique Identifier (UUID) is a standardized 128-bit format for a string
 ID used to uniquely identify information. The point of a UUID is that it's big
 enough that you can select any random and it won't clash. In this case, it's
 used to uniquely identify your application's Bluetooth service. To get a UUID to
 use with your application, you can use one of the many random UUID generators on
 the web, then initialize a {@link java.util.UUID} with {@link
-java.util.UUID#fromString(String)}.</p> 
-</div> 
-</div> 
- 
+java.util.UUID#fromString(String)}.</p>
+</div>
+</div>
+
 <p>Here's the basic procedure to set up a server socket and accept a
-connection:</p> 
- 
-<ol> 
+connection:</p>
+
+<ol>
 <li>Get a {@link android.bluetooth.BluetoothServerSocket} by calling the
 {@link
 android.bluetooth.BluetoothAdapter#listenUsingRfcommWithServiceRecord(String,
@@ -546,9 +546,9 @@
 agreement with the client device. That is, when the client attempts to connect
 with this device, it will carry a UUID that uniquely identifies the service with
 which it wants to connect. These UUIDs must match in order for the connection to
-be accepted (in the next step).</p> 
-</li> 
- 
+be accepted (in the next step).</p>
+</li>
+
 <li>Start listening for connection requests by calling
 {@link android.bluetooth.BluetoothServerSocket#accept()}.
 <p>This is a blocking call. It will return when either a connection has been
@@ -556,9 +556,9 @@
 remote device has sent a connection request with a UUID matching the one
 registered with this listening server socket. When successful, {@link
 android.bluetooth.BluetoothServerSocket#accept()} will
-return a connected {@link android.bluetooth.BluetoothSocket}.</p> 
-</li> 
- 
+return a connected {@link android.bluetooth.BluetoothSocket}.</p>
+</li>
+
 <li>Unless you want to accept additional connections, call
 {@link android.bluetooth.BluetoothServerSocket#close()}.
 <p>This releases the server socket and all its resources, but does <em>not</em> close the
@@ -567,10 +567,10 @@
 connected client per channel at a time, so in most cases it makes sense to call {@link
 android.bluetooth.BluetoothServerSocket#close()} on the {@link
 android.bluetooth.BluetoothServerSocket} immediately after accepting a connected
-socket.</p> 
-</li> 
-</ol> 
- 
+socket.</p>
+</li>
+</ol>
+
 <p>The {@link android.bluetooth.BluetoothServerSocket#accept()} call should not
 be executed in the main activity UI thread because it is a blocking call and
 will prevent any other interaction with the application. It usually makes
@@ -583,16 +583,16 @@
 android.bluetooth.BluetoothSocket}) from another thread and the blocked call will
 immediately return. Note that all methods on a {@link
 android.bluetooth.BluetoothServerSocket} or {@link android.bluetooth.BluetoothSocket}
-are thread-safe.</p> 
- 
-<h4>Example</h4> 
- 
+are thread-safe.</p>
+
+<h4>Example</h4>
+
 <p>Here's a simplified thread for the server component that accepts incoming
-connections:</p> 
-<pre> 
+connections:</p>
+<pre>
 private class AcceptThread extends Thread {
     private final BluetoothServerSocket mmServerSocket;
- 
+
     public AcceptThread() {
         // Use a temporary object that is later assigned to mmServerSocket,
         // because mmServerSocket is final
@@ -603,7 +603,7 @@
         } catch (IOException e) { }
         mmServerSocket = tmp;
     }
- 
+
     public void run() {
         BluetoothSocket socket = null;
         // Keep listening until exception occurs or a socket is returned
@@ -622,7 +622,7 @@
             }
         }
     }
- 
+
     /** Will cancel the listening socket, and cause the thread to finish */
     public void cancel() {
         try {
@@ -630,37 +630,37 @@
         } catch (IOException e) { }
     }
 }
-</pre> 
- 
+</pre>
+
 <p>In this example, only one incoming connection is desired, so as soon as a
 connection is accepted and the {@link android.bluetooth.BluetoothSocket} is
 acquired, the application
 sends the acquired {@link android.bluetooth.BluetoothSocket} to a separate
 thread, closes the
-{@link android.bluetooth.BluetoothServerSocket} and breaks the loop.</p> 
- 
+{@link android.bluetooth.BluetoothServerSocket} and breaks the loop.</p>
+
 <p>Note that when {@link android.bluetooth.BluetoothServerSocket#accept()}
 returns the {@link android.bluetooth.BluetoothSocket}, the socket is already
 connected, so you should <em>not</em> call {@link
 android.bluetooth.BluetoothSocket#connect()} (as you do from the
-client-side).</p> 
- 
+client-side).</p>
+
 <p><code>manageConnectedSocket()</code> is a fictional method in the application
 that will
 initiate the thread for transferring data, which is discussed in the section
-about <a href="#ManagingAConnection">Managing a Connection</a>.</p> 
- 
+about <a href="#ManagingAConnection">Managing a Connection</a>.</p>
+
 <p>You should usually close your {@link android.bluetooth.BluetoothServerSocket}
 as soon as you are done listening for incoming connections. In this example, {@link
 android.bluetooth.BluetoothServerSocket#close()} is called as soon
 as the {@link android.bluetooth.BluetoothSocket} is acquired. You may also want
 to provide a public method in your thread that can close the private {@link
 android.bluetooth.BluetoothSocket} in the event that you need to stop listening on the
-server socket.</p> 
- 
- 
-<h3 id="ConnectingAsAClient">Connecting as a client</h3> 
- 
+server socket.</p>
+
+
+<h3 id="ConnectingAsAClient">Connecting as a client</h3>
+
 <p>In order to initiate a connection with a remote device (a device holding an
 open
 server socket), you must first obtain a {@link
@@ -669,11 +669,11 @@
 section about <a
 href="#FindingDevices">Finding Devices</a>.) You must then use the
 {@link android.bluetooth.BluetoothDevice} to acquire a {@link
-android.bluetooth.BluetoothSocket} and initiate the connection.</p> 
- 
-<p>Here's the basic procedure:</p> 
- 
-<ol> 
+android.bluetooth.BluetoothSocket} and initiate the connection.</p>
+
+<p>Here's the basic procedure:</p>
+
+<ol>
 <li>Using the {@link android.bluetooth.BluetoothDevice}, get a {@link
 android.bluetooth.BluetoothSocket} by calling {@link
 android.bluetooth.BluetoothDevice#createRfcommSocketToServiceRecord(UUID)}.
@@ -684,9 +684,9 @@
 android.bluetooth.BluetoothAdapter#listenUsingRfcommWithServiceRecord(String,
 UUID)}). Using the same UUID is simply a matter of hard-coding the UUID string
 into your application and then referencing it from both the server and client
-code.</p> 
-</li> 
- 
+code.</p>
+</li>
+
 <li>Initiate the connection by calling {@link
 android.bluetooth.BluetoothSocket#connect()}.
 <p>Upon this call, the system will perform an SDP lookup on the remote device in
@@ -697,34 +697,34 @@
 blocking call. If, for
 any reason, the connection fails or the {@link
 android.bluetooth.BluetoothSocket#connect()} method times out (after about
-12 seconds), then it will throw an exception.</p> 
+12 seconds), then it will throw an exception.</p>
 <p>Because {@link
 android.bluetooth.BluetoothSocket#connect()} is a blocking call, this connection
 procedure should always be performed in a thread separate from the main activity
-thread.</p> 
+thread.</p>
 <p class="note">Note: You should always ensure that the device is not performing
 device discovery when you call {@link
 android.bluetooth.BluetoothSocket#connect()}. If discovery is in progress, then
 the
-connection attempt will be significantly slowed and is more likely to fail.</p> 
-</li> 
-</ol> 
- 
-<h4>Example</h4> 
- 
+connection attempt will be significantly slowed and is more likely to fail.</p>
+</li>
+</ol>
+
+<h4>Example</h4>
+
 <p>Here is a basic example of a thread that initiates a Bluetooth
-connection:</p> 
-<pre> 
+connection:</p>
+<pre>
 private class ConnectThread extends Thread {
     private final BluetoothSocket mmSocket;
     private final BluetoothDevice mmDevice;
- 
+
     public ConnectThread(BluetoothDevice device) {
         // Use a temporary object that is later assigned to mmSocket,
         // because mmSocket is final
         BluetoothSocket tmp = null;
         mmDevice = device;
- 
+
         // Get a BluetoothSocket to connect with the given BluetoothDevice
         try {
             // MY_UUID is the app's UUID string, also used by the server code
@@ -732,11 +732,11 @@
         } catch (IOException e) { }
         mmSocket = tmp;
     }
- 
+
     public void run() {
         // Cancel discovery because it will slow down the connection
         mBluetoothAdapter.cancelDiscovery();
- 
+
         try {
             // Connect the device through the socket. This will block
             // until it succeeds or throws an exception
@@ -748,11 +748,11 @@
             } catch (IOException closeException) { }
             return;
         }
- 
+
         // Do work to manage the connection (in a separate thread)
         manageConnectedSocket(mmSocket);
     }
- 
+
     /** Will cancel an in-progress connection, and close the socket */
     public void cancel() {
         try {
@@ -760,42 +760,42 @@
         } catch (IOException e) { }
     }
 }
-</pre> 
- 
+</pre>
+
 <p>Notice that {@link android.bluetooth.BluetoothAdapter#cancelDiscovery()} is called
 before the connection is made. You should always do this before connecting and it is safe
 to call without actually checking whether it is running or not (but if you do want to
-check, call {@link android.bluetooth.BluetoothAdapter#isDiscovering()}).</p> 
- 
+check, call {@link android.bluetooth.BluetoothAdapter#isDiscovering()}).</p>
+
 <p><code>manageConnectedSocket()</code> is a fictional method in the application
 that will initiate the thread for transferring data, which is discussed in the section
-about <a href="#ManagingAConnection">Managing a Connection</a>.</p> 
- 
+about <a href="#ManagingAConnection">Managing a Connection</a>.</p>
+
 <p>When you're done with your {@link android.bluetooth.BluetoothSocket}, always
 call {@link android.bluetooth.BluetoothSocket#close()} to clean up.
 Doing so will immediately close the connected socket and clean up all internal
-resources.</p> 
- 
- 
-<h2 id="ManagingAConnection">Managing a Connection</h2> 
- 
+resources.</p>
+
+
+<h2 id="ManagingAConnection">Managing a Connection</h2>
+
 <p>When you have successfully connected two (or more) devices, each one will
 have a connected {@link android.bluetooth.BluetoothSocket}. This is where the fun
 begins because you can share data between devices. Using the {@link
 android.bluetooth.BluetoothSocket}, the general procedure to transfer arbitrary data is
-simple:</p> 
-<ol> 
+simple:</p>
+<ol>
 <li>Get the {@link java.io.InputStream} and {@link java.io.OutputStream} that
 handle transmissions through the socket, via {@link
 android.bluetooth.BluetoothSocket#getInputStream()} and
-{@link android.bluetooth.BluetoothSocket#getOutputStream}, respectively.</li> 
- 
+{@link android.bluetooth.BluetoothSocket#getOutputStream}, respectively.</li>
+
 <li>Read and write data to the streams with {@link
-java.io.InputStream#read(byte[])} and {@link java.io.OutputStream#write(byte[])}.</li> 
-</ol> 
- 
-<p>That's it.</p> 
- 
+java.io.InputStream#read(byte[])} and {@link java.io.OutputStream#write(byte[])}.</li>
+</ol>
+
+<p>That's it.</p>
+
 <p>There are, of course, implementation details to consider. First and foremost,
 you should use a dedicated thread for all stream reading and writing. This is
 important because both {@link java.io.InputStream#read(byte[])} and {@link
@@ -806,37 +806,37 @@
 java.io.InputStream#read(byte[])} quickly enough and the intermediate buffers are full.
 So, your main loop in the thread should be dedicated to reading from the {@link
 java.io.InputStream}. A separate public method in the thread can be used to initiate
-writes to the {@link java.io.OutputStream}.</p> 
- 
-<h4>Example</h4> 
- 
-<p>Here's an example of how this might look:</p> 
-<pre> 
+writes to the {@link java.io.OutputStream}.</p>
+
+<h4>Example</h4>
+
+<p>Here's an example of how this might look:</p>
+<pre>
 private class ConnectedThread extends Thread {
     private final BluetoothSocket mmSocket;
     private final InputStream mmInStream;
     private final OutputStream mmOutStream;
- 
+
     public ConnectedThread(BluetoothSocket socket) {
         mmSocket = socket;
         InputStream tmpIn = null;
         OutputStream tmpOut = null;
- 
+
         // Get the input and output streams, using temp objects because
         // member streams are final
         try {
             tmpIn = socket.getInputStream();
             tmpOut = socket.getOutputStream();
         } catch (IOException e) { }
- 
+
         mmInStream = tmpIn;
         mmOutStream = tmpOut;
     }
- 
+
     public void run() {
         byte[] buffer = new byte[1024];  // buffer store for the stream
         int bytes; // bytes returned from read()
- 
+
         // Keep listening to the InputStream until an exception occurs
         while (true) {
             try {
@@ -850,14 +850,14 @@
             }
         }
     }
- 
+
     /* Call this from the main activity to send data to the remote device */
     public void write(byte[] bytes) {
         try {
             mmOutStream.write(bytes);
         } catch (IOException e) { }
     }
- 
+
     /* Call this from the main activity to shutdown the connection */
     public void cancel() {
         try {
@@ -865,44 +865,44 @@
         } catch (IOException e) { }
     }
 }
-</pre> 
- 
+</pre>
+
 <p>The constructor acquires the necessary streams and once executed, the thread
 will wait for data to come through the InputStream. When {@link
 java.io.InputStream#read(byte[])} returns with
 bytes from the stream, the data is sent to the main activity using a member
 Handler from the parent class. Then it goes back and waits for more bytes from
-the stream.</p> 
- 
+the stream.</p>
+
 <p>Sending outgoing data is as simple as calling the thread's
 <code>write()</code> method from the main activity and passing in the bytes to
 be sent. This method then simply calls {@link
-java.io.OutputStream#write(byte[])} to send the data to the remote device.</p> 
- 
+java.io.OutputStream#write(byte[])} to send the data to the remote device.</p>
+
 <p>The thread's <code>cancel()</code> method is important so that the connection
 can be
 terminated at any time by closing the {@link android.bluetooth.BluetoothSocket}.
 This should always be called when you're done using the Bluetooth
-connection.</p> 
- 
-<div class="special"> 
-<p>For a  demonstration of using the Bluetooth APIs, see the <a
-href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample app</a>.</p> 
-</div> 
+connection.</p>
 
-<h2 id="Profiles">Working with Profiles</h2> 
+<div class="special">
+<p>For a  demonstration of using the Bluetooth APIs, see the <a
+href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample app</a>.</p>
+</div>
+
+<h2 id="Profiles">Working with Profiles</h2>
 
 <p>Starting in Android 3.0, the Bluetooth API includes support for working with
 Bluetooth profiles. A <em>Bluetooth profile</em> is a wireless interface
 specification for Bluetooth-based communication between devices. An example
 is the Hands-Free profile. For a mobile phone to connect to a wireless headset,
-both devices must support the Hands-Free profile. </p> 
+both devices must support the Hands-Free profile. </p>
 
 <p>You can implement the interface {@link android.bluetooth.BluetoothProfile} to write
 your own classes to support a particular Bluetooth profile. The Android
 Bluetooth API provides implementations for the following Bluetooth
-profiles:</p> 
-<ul> 
+profiles:</p>
+<ul>
 
   <li><strong>Headset</strong>. The Headset profile provides support for
 Bluetooth headsets to be used with mobile phones. Android provides the {@link
@@ -917,7 +917,7 @@
 profile defines how high quality audio can be streamed from one device to
 another over a Bluetooth connection. Android provides the {@link
 android.bluetooth.BluetoothA2dp} class, which is a proxy for controlling
-the Bluetooth A2DP  Service via IPC.</li> 
+the Bluetooth A2DP  Service via IPC.</li>
 
  <li><strong>Health Device</strong>. Android 4.0 (API level 14) introduces
 support for the Bluetooth Health Device Profile (HDP). This lets you create
@@ -928,50 +928,50 @@
 href="http://www.bluetooth.org">www.bluetooth.org</a>. Note that these values
 are also referenced in the ISO/IEEE 11073-20601 [7] specification as
 MDC_DEV_SPEC_PROFILE_* in the Nomenclature Codes Annex. For more discussion of
-HDP, see <a href="#HDP">Health Device Profile</a>.</li> 
+HDP, see <a href="#HDP">Health Device Profile</a>.</li>
 
-</ul> 
+</ul>
 
-<p>Here are the basic steps for working with a profile:</p> 
-<ol> 
+<p>Here are the basic steps for working with a profile:</p>
+<ol>
 
   <li>Get the default adapter, as described in
     <a href="{@docRoot}guide/topics/connectivity/bluetooth.html#SettingUp">Setting Up
-      Bluetooth</a>.</li> 
+      Bluetooth</a>.</li>
 
   <li>Use {@link
 android.bluetooth.BluetoothAdapter#getProfileProxy(android.content.Context,
 android.bluetooth.BluetoothProfile.ServiceListener, int) getProfileProxy()} to
 establish a connection to the profile proxy object associated with the profile.
 In the example below, the profile proxy object is an instance of {@link
-android.bluetooth.BluetoothHeadset}. </li> 
+android.bluetooth.BluetoothHeadset}. </li>
 
   <li>Set up a  {@link android.bluetooth.BluetoothProfile.ServiceListener}. This
 listener notifies {@link android.bluetooth.BluetoothProfile} IPC clients when
-they have been connected to or disconnected from the service.</li> 
+they have been connected to or disconnected from the service.</li>
 
   <li>In {@link
 android.bluetooth.BluetoothProfile.ServiceListener#onServiceConnected(int,
 android.bluetooth.BluetoothProfile) onServiceConnected()}, get a handle
-to the profile proxy object.</li> 
+to the profile proxy object.</li>
 
   <li>Once you have the profile proxy object, you can use it to monitor the
 state of the connection and perform other operations that are relevant to that
-profile.</li> 
-</ol> 
+profile.</li>
+</ol>
 
 <p> For example, this code snippet shows how to connect to a {@link
 android.bluetooth.BluetoothHeadset} proxy object so that you can control the
-Headset profile:</p> 
+Headset profile:</p>
 
 <pre>BluetoothHeadset mBluetoothHeadset;
- 
+
 // Get the default adapter
 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
- 
+
 // Establish connection to the proxy.
 mBluetoothAdapter.getProfileProxy(context, mProfileListener, BluetoothProfile.HEADSET);
- 
+
 private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
     public void onServiceConnected(int profile, BluetoothProfile proxy) {
         if (profile == BluetoothProfile.HEADSET) {
@@ -984,16 +984,16 @@
         }
     }
 };
- 
+
 // ... call functions on mBluetoothHeadset
- 
+
 // Close proxy connection after use.
 mBluetoothAdapter.closeProfileProxy(mBluetoothHeadset);
-</pre> 
+</pre>
 
 
 
-<h3 id="AT-Commands">Vendor-specific AT commands</h3> 
+<h3 id="AT-Commands">Vendor-specific AT commands</h3>
 
 <p>Starting in Android 3.0, applications can register to receive system
 broadcasts of pre-defined vendor-specific AT commands sent by headsets (such as
@@ -1060,7 +1060,7 @@
 establish a connection with the profile proxy object.</p> </li>
 
   <li>Create a {@link android.bluetooth.BluetoothHealthCallback} and register an
-application configuration 
+application configuration
 ({@link android.bluetooth.BluetoothHealthAppConfiguration})
 that acts as a health
 sink.</li>
diff --git a/docs/html/guide/topics/connectivity/nfc/index.jd b/docs/html/guide/topics/connectivity/nfc/index.jd
index f12facf..bc4f075 100644
--- a/docs/html/guide/topics/connectivity/nfc/index.jd
+++ b/docs/html/guide/topics/connectivity/nfc/index.jd
@@ -17,12 +17,12 @@
 <p>Android-powered devices with NFC simultaneously support three main modes of operation:</p>
 
 <ol>
-<li><strong>Reader/writer mode</strong>, allowing the NFC device to read and/or write 
+<li><strong>Reader/writer mode</strong>, allowing the NFC device to read and/or write
 passive NFC tags and stickers.</li>
-<li><strong>P2P mode</strong>, allowing the NFC device to exchange data with other NFC 
+<li><strong>P2P mode</strong>, allowing the NFC device to exchange data with other NFC
 peers; this operation mode is used by Android Beam.</li>
-<li><strong>Card emulation mode</strong>, allowing the NFC device itself to act as an NFC 
-card. The emulated NFC card can then be accessed by an external NFC reader, 
+<li><strong>Card emulation mode</strong>, allowing the NFC device itself to act as an NFC
+card. The emulated NFC card can then be accessed by an external NFC reader,
 such as an NFC point-of-sale terminal.</li>
 </ol>
 
diff --git a/docs/html/guide/topics/connectivity/sip.jd b/docs/html/guide/topics/connectivity/sip.jd
index d754894..d8d6d27 100755
--- a/docs/html/guide/topics/connectivity/sip.jd
+++ b/docs/html/guide/topics/connectivity/sip.jd
@@ -12,10 +12,10 @@
       <li><a href="#manager">Creating a SIP Manager</a></li>
       <li><a href="#profiles">Registering with a SIP Server</a></li>
       <li><a href="#audio">Making an Audio Call</a></li>
-      <li><a href="#receiving">Receiving Calls</a></li>   
+      <li><a href="#receiving">Receiving Calls</a></li>
       <li><a href="#testing">Testing SIP Applications</a></li>
     </ol>
-    
+
   <h2>Key classes</h2>
     <ol>
       <li>{@link android.net.sip.SipManager}</li>
@@ -23,7 +23,7 @@
       <li>{@link android.net.sip.SipAudioCall}</li>
 
     </ol>
-    
+
    <h2>Related samples</h2>
    <ol>
      <li> <a href="{@docRoot}resources/samples/SipDemo/index.html"> SipDemo</a></li>
@@ -46,9 +46,9 @@
 <h2 id="requirements">Requirements and Limitations</h2>
 <p>Here are the requirements for developing a SIP application:</p>
 <ul>
-  
+
   <li>You must have a mobile device that is running Android 2.3 or higher. </li>
-  
+
   <li>SIP runs over a wireless data connection, so your device must have a data
 connection (with a mobile data service or Wi-Fi)</span>. This means that you
 can't test on AVD&#8212;you can only test on a physical device. For details, see
@@ -139,7 +139,7 @@
 manifest:</p>
 
 <ul>
-  <li><code>&lt;uses-sdk android:minSdkVersion=&quot;9&quot; /&gt;</code>. This 
+  <li><code>&lt;uses-sdk android:minSdkVersion=&quot;9&quot; /&gt;</code>. This
  indicates that your application requires   Android 2.3 or higher. For more
 information, see <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API
 Levels</a> and the documentation for the <a
@@ -162,7 +162,7 @@
 see the   documentation for the <a
 href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-
 feature&gt;</a> element.</li>
-  
+
 </ul>
 <p>If your application is designed to receive calls, you must also define a receiver ({@link android.content.BroadcastReceiver} subclass) in the application's manifest: </p>
 
@@ -261,7 +261,7 @@
 public void onRegistrationDone(String localProfileUri, long expiryTime) {
     updateStatus(&quot;Ready&quot;);
 }
-   
+
 public void onRegistrationFailed(String localProfileUri, int errorCode,
     String errorMessage) {
     updateStatus(&quot;Registration failed.  Please check settings.&quot;);
@@ -291,8 +291,8 @@
 
   <li>A {@link android.net.sip.SipProfile} that is making the call (the
 &quot;local profile&quot;), and a valid SIP address to receive the call (the
-&quot;peer profile&quot;). 
-  
+&quot;peer profile&quot;).
+
   <li>A {@link android.net.sip.SipManager} object. </li>
 </ul>
 
@@ -304,7 +304,7 @@
 
 <pre>
 SipAudioCall.Listener listener = new SipAudioCall.Listener() {
-  
+
    &#64;Override
    public void onCallEstablished(SipAudioCall call) {
       call.startAudio();
@@ -312,7 +312,7 @@
       call.toggleMute();
          ...
    }
-   
+
    &#64;Override
    public void onCallEnded(SipAudioCall call) {
       // Do something.
@@ -326,12 +326,12 @@
 <ul>
   <li>A local SIP profile (the caller).</li>
   <li>A peer SIP profile (the user being called).</li>
-  
+
   <li>A {@link android.net.sip.SipAudioCall.Listener} to listen to the call
 events from {@link android.net.sip.SipAudioCall}. This can be <code>null</code>,
 but as shown above, the listener is used to set things up once the call is
 established.</li>
-  
+
   <li>The timeout value, in seconds.</li>
 </ul>
 <p>For example:</p>
@@ -349,15 +349,15 @@
 <code>&lt;receiver&gt;</code>. In <strong>SipDemo</strong>, this is
 <code>&lt;receiver android:name=&quot;.IncomingCallReceiver&quot;
 android:label=&quot;Call Receiver&quot;/&gt;</code>.</li>
-  
+
   <li>Implement the receiver, which is a subclass of {@link
 android.content.BroadcastReceiver}. In <strong>SipDemo</strong>, this is
 <code>IncomingCallReceiver</code>.</li>
-  
+
   <li>Initialize the local profile ({@link android.net.sip.SipProfile}) with a
 pending intent that fires your receiver when someone calls the local profile.
 </li>
-  
+
   <li>Set up an intent filter that filters by the action that represents an
 incoming call. In <strong>SipDemo</strong>, this action is
 <code>android.SipDemo.INCOMING_CALL</code>. </li>
@@ -427,16 +427,16 @@
 android.net.sip.SipProfile} object gets created with a pending intent based on
 the action string <code>android.SipDemo.INCOMING_CALL</code>. The
 <code>PendingIntent</code> object   will perform a broadcast when the {@link
-android.net.sip.SipProfile}  receives a call:</p> 
+android.net.sip.SipProfile}  receives a call:</p>
 
 <pre>
 public SipManager mSipManager = null;
 public SipProfile mSipProfile = null;
 ...
 
-Intent intent = new Intent(); 
-intent.setAction(&quot;android.SipDemo.INCOMING_CALL&quot;); 
-PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA); 
+Intent intent = new Intent();
+intent.setAction(&quot;android.SipDemo.INCOMING_CALL&quot;);
+PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA);
 mSipManager.open(mSipProfile, pendingIntent, null);</pre>
 
 <p>The broadcast will be intercepted by the intent filter, which will then fire
@@ -485,8 +485,8 @@
 href="{@docRoot}tools/device.html">Developing on a Device</a>.</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: 
+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.
diff --git a/docs/html/guide/topics/connectivity/usb/accessory.jd b/docs/html/guide/topics/connectivity/usb/accessory.jd
index a217767..3942b3a 100644
--- a/docs/html/guide/topics/connectivity/usb/accessory.jd
+++ b/docs/html/guide/topics/connectivity/usb/accessory.jd
@@ -169,7 +169,7 @@
     include a <code>&lt;uses-feature&gt;</code> element that declares that your application uses
     the <code>android.hardware.usb.accessory</code> feature.</li>
 
-    <li>If you are using the 
+    <li>If you are using the
     <a href="http://code.google.com/android/add-ons/google-apis/index.html">add-on library</a>,
     add the <code>&lt;uses-library&gt;</code> element specifying
     <code>com.android.future.usb.accessory</code> for the library.</li>
@@ -347,7 +347,7 @@
 private static final String ACTION_USB_PERMISSION =
     "com.android.example.USB_PERMISSION";
 private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
- 
+
     public void onReceive(Context context, Intent intent) {
         String action = intent.getAction();
         if (ACTION_USB_PERMISSION.equals(action)) {
@@ -444,7 +444,7 @@
   <pre>
 BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
     public void onReceive(Context context, Intent intent) {
-        String action = intent.getAction(); 
+        String action = intent.getAction();
 
         if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) {
             UsbAccessory accessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
diff --git a/docs/html/guide/topics/connectivity/usb/host.jd b/docs/html/guide/topics/connectivity/usb/host.jd
index d2194e6..856027d 100644
--- a/docs/html/guide/topics/connectivity/usb/host.jd
+++ b/docs/html/guide/topics/connectivity/usb/host.jd
@@ -263,7 +263,7 @@
   obtain a device from the map.</p>
   <pre>
 UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
-...  
+...
 HashMap&lt;String, UsbDevice&gt; deviceList = manager.getDeviceList();
 UsbDevice device = deviceList.get("deviceName");
 </pre>
@@ -317,7 +317,7 @@
                     if(device != null){
                       //call method to set up device communication
                    }
-                } 
+                }
                 else {
                     Log.d(TAG, "permission denied for device " + device);
                 }
@@ -396,7 +396,7 @@
 
 UsbInterface intf = device.getInterface(0);
 UsbEndpoint endpoint = intf.getEndpoint(0);
-UsbDeviceConnection connection = mUsbManager.openDevice(device); 
+UsbDeviceConnection connection = mUsbManager.openDevice(device);
 connection.claimInterface(intf, forceClaim);
 connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); //do in another thread
 </pre>
@@ -422,7 +422,7 @@
   <pre>
 BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
     public void onReceive(Context context, Intent intent) {
-        String action = intent.getAction(); 
+        String action = intent.getAction();
 
       if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
             UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
diff --git a/docs/html/guide/topics/connectivity/wifip2p.jd b/docs/html/guide/topics/connectivity/wifip2p.jd
index d7e1269..b8eb40e 100644
--- a/docs/html/guide/topics/connectivity/wifip2p.jd
+++ b/docs/html/guide/topics/connectivity/wifip2p.jd
@@ -66,7 +66,7 @@
   methods. A {@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent is
   also broadcast if the {@link android.net.wifi.p2p.WifiP2pManager#discoverPeers discoverPeers()}
   method discovers that the peers list has changed.</p>
-  
+
   <h2 id="api">API Overview</h2>
 
 <p>The {@link android.net.wifi.p2p.WifiP2pManager} class provides methods to allow you to interact with
@@ -135,7 +135,7 @@
   are described in the following table:</p>
 
  <p class="table-caption"><strong>Table 2.</strong> Wi-Fi P2P Listeners</p>
- 
+
  <table>
     <tr>
       <th>Listener interface</th>
@@ -395,7 +395,7 @@
   available peers that are in range. The call to this function is asynchronous and a success or
   failure is communicated to your application with {@link
   android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess onSuccess()} and {@link
-  android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure onFailure()} if you created a 
+  android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure onFailure()} if you created a
   {@link android.net.wifi.p2p.WifiP2pManager.ActionListener}. The
   {@link android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess onSuccess()} method only notifies you
   that the discovery process succeeded and does not provide any information about the actual peers
diff --git a/docs/html/guide/topics/data/index.jd b/docs/html/guide/topics/data/index.jd
index 1e082b3..169fc22 100644
--- a/docs/html/guide/topics/data/index.jd
+++ b/docs/html/guide/topics/data/index.jd
@@ -1,6 +1,6 @@
 page.title=Data Storage
 page.landing=true
-page.landing.intro=Store application data in databases, files, or preferences, in internal or removeable storage. You can also add a data backup service to let users store and recover application and system data.  
+page.landing.intro=Store application data in databases, files, or preferences, in internal or removeable storage. You can also add a data backup service to let users store and recover application and system data.
 page.landing.image=
 
 @jd:body
@@ -10,14 +10,14 @@
 
   <div class="col-12">
     <h3>Training</h3>
-    
+
     <a href="http://developer.android.com/training/cloudsync/index.html">
       <h4>Syncing to the Cloud</h4>
       <p>This class covers different strategies for cloud enabled applications. It covers syncing
 data with the cloud using your own back-end web application, and backing up data using the cloud so
 that users can restore their data when installing your application on a new device.</p>
     </a>
-    
+
   </div>
 
 </div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/index.jd b/docs/html/guide/topics/graphics/index.jd
index 17f6309..a87e404 100644
--- a/docs/html/guide/topics/graphics/index.jd
+++ b/docs/html/guide/topics/graphics/index.jd
@@ -17,7 +17,7 @@
 by the UI toolkit are carried out using the GPU. You’ll be happy to hear that Android 4.0, Ice Cream
 Sandwich, brings an improved version of the hardware-accelerated 2D rendering pipeline.</p>
       </a>
-  
+
       <a
 href="http://android-developers.blogspot.com/2011/05/introducing-viewpropertyanimator.html">
         <h4>Introducing ViewPropertyAnimator</h4>
@@ -25,7 +25,7 @@
 including the new properties added to the View class in 3.0. In the 3.1 release, we added a small
 utility class that makes animating these properties even easier.</p>
       </a>
-      
+
       <a
 href="http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html">
         <h4>Android 3.0 Hardware Acceleration</h4>
@@ -43,7 +43,7 @@
 that keeps your user interface (UI) components responsive and avoids exceeding your application
 memory limit.</p>
     </a>
-    
+
 
   </div>
 </div>
\ No newline at end of file
diff --git a/docs/html/guide/topics/graphics/overview.jd b/docs/html/guide/topics/graphics/overview.jd
index 66a675d..98d80a0 100644
--- a/docs/html/guide/topics/graphics/overview.jd
+++ b/docs/html/guide/topics/graphics/overview.jd
@@ -6,7 +6,7 @@
   and help you decide with approach is best for your needs.</p>
 
   <h3 id="animation">Animation</h3>
-  
+
   <p>The Android framework provides two animation systems: property animation
   and view animation. Both animation systems are viable options,
   but the property animation system, in general, is the preferred method to use, because it
diff --git a/docs/html/guide/topics/graphics/prop-animation.jd b/docs/html/guide/topics/graphics/prop-animation.jd
index aed533d..2be2b09 100755
--- a/docs/html/guide/topics/graphics/prop-animation.jd
+++ b/docs/html/guide/topics/graphics/prop-animation.jd
@@ -165,9 +165,9 @@
   "{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html">API
   Demos</a> sample project provides many examples on how to use the property
   animation system.</p>
-  
+
   <h2 id="property-vs-view">How Property Animation Differs from View Animation</h2>
-  
+
   <p>The view animation system provides the capability to only animate {@link android.view.View}
   objects, so if you wanted to animate non-{@link android.view.View} objects, you have to implement
   your own code to do so. The view animation system is also constrained in the fact that it only
@@ -594,7 +594,7 @@
   for just the {@link android.animation.Animator.AnimatorListener#onAnimationEnd onAnimationEnd()}
   callback:</p>
   <pre>
-ValueAnimatorAnimator fadeAnim = ObjectAnimator.ofFloat(newBall, "alpha", 1f, 0f);
+ValueAnimator fadeAnim = ObjectAnimator.ofFloat(newBall, "alpha", 1f, 0f);
 fadeAnim.setDuration(250);
 fadeAnim.addListener(new AnimatorListenerAdapter() {
 public void onAnimationEnd(Animator animation) {
diff --git a/docs/html/guide/topics/location/strategies.jd b/docs/html/guide/topics/location/strategies.jd
index 32be463..2dfed2c 100755
--- a/docs/html/guide/topics/location/strategies.jd
+++ b/docs/html/guide/topics/location/strategies.jd
@@ -411,12 +411,12 @@
 <h3 id="MockAVD">Using Android Studio</h3>
 
 <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 
+Device Manager window, choose your AVD and launch it in the emulator by selecting the green
 play arrow in the Actions column.</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, 
+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>
 
diff --git a/docs/html/guide/topics/manifest/action-element.jd b/docs/html/guide/topics/manifest/action-element.jd
index fc6ce44..f3b340e 100644
--- a/docs/html/guide/topics/manifest/action-element.jd
+++ b/docs/html/guide/topics/manifest/action-element.jd
@@ -13,10 +13,10 @@
 <p>
 <dt>description:</dt>
 <dd itemprop="description">Adds an action to an intent filter.
-An <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element must contain 
+An <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element must contain
 one or more {@code <action>} elements.  If it doesn't contain any, no
-Intent objects will get through the filter.  See 
-<a href="{@docRoot}guide/components/intents-filters.html">Intents and 
+Intent objects will get through the filter.  See
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and
 Intent Filters</a> for details on intent filters and the role of action
 specifications within a filter.
 </dd>
@@ -25,16 +25,16 @@
 <dd><dl class="attr">
 <dt><a name="nm"></a>{@code android:name}</dt>
 <dd>The name of the action.  Some standard actions are defined in the
-{@link android.content.Intent#ACTION_CHOOSER Intent} class as 
+{@link android.content.Intent#ACTION_CHOOSER Intent} class as
 <code>ACTION_<i>string</i></code> constants.  To assign one of these actions to
-this attribute, prepend "{@code android.intent.action.}" to the 
+this attribute, prepend "{@code android.intent.action.}" to the
 <code><i>string</i></code> that follows {@code ACTION_}.
 For example, for {@code ACTION_MAIN}, use "{@code android.intent.action.MAIN}"
 and for {@code ACTION_WEB_SEARCH}, use "{@code android.intent.action.WEB_SEARCH}".
 
 <p>
 For actions you define, it's best to use the package name as a prefix to
-ensure uniqueness.  For example, a {@code TRANSMOGRIFY} action might be specified 
+ensure uniqueness.  For example, a {@code TRANSMOGRIFY} action might be specified
 as follows:
 </p>
 
diff --git a/docs/html/guide/topics/manifest/activity-alias-element.jd b/docs/html/guide/topics/manifest/activity-alias-element.jd
index 1427b55..adb9937 100644
--- a/docs/html/guide/topics/manifest/activity-alias-element.jd
+++ b/docs/html/guide/topics/manifest/activity-alias-element.jd
@@ -29,62 +29,62 @@
 
 <p>
 The alias presents the target activity as a independent entity.
-It can have its own set of intent filters, and they, rather than the 
-intent filters on the target activity itself, determine which intents 
+It can have its own set of intent filters, and they, rather than the
+intent filters on the target activity itself, determine which intents
 can activate the target through the alias and how the system
-treats the alias.  For example, the intent filters on the alias may 
-specify the "<code>{@link android.content.Intent#ACTION_MAIN 
-android.intent.action.MAIN}</code>" 
-and "<code>{@link android.content.Intent#CATEGORY_LAUNCHER 
-android.intent.category.LAUNCHER}</code>" flags, causing it to be 
-represented in the application launcher, even though none of the 
+treats the alias.  For example, the intent filters on the alias may
+specify the "<code>{@link android.content.Intent#ACTION_MAIN
+android.intent.action.MAIN}</code>"
+and "<code>{@link android.content.Intent#CATEGORY_LAUNCHER
+android.intent.category.LAUNCHER}</code>" flags, causing it to be
+represented in the application launcher, even though none of the
 filters on the target activity itself set these flags.
 </p>
 
 <p>
 With the exception of {@code targetActivity}, {@code <activity-alias>}
-attributes are a subset of <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> attributes.  
+attributes are a subset of <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> attributes.
 For attributes in the subset, none of the values set for the target carry over
-to the alias.  However, for attributes not in the subset, the values set for 
+to the alias.  However, for attributes not in the subset, the values set for
 the target activity also apply to the alias.
 </p></dd>
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="enabled"></a>{@code android:enabled}</dt>
-<dd>Whether or not the target activity can be instantiated by the system through 
-this alias &mdash; "{@code true}" if it can be, and "{@code false}" if not.  
+<dd>Whether or not the target activity can be instantiated by the system through
+this alias &mdash; "{@code true}" if it can be, and "{@code false}" if not.
 The default value is "{@code true}".
 
 <p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all 
-application components, including activity aliases.  The 
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including activity aliases.  The
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and {@code <activity-alias>}
-attributes must both be "{@code true}" for the system to be able to instantiate 
-the target activity through the alias.  If either is "{@code false}", the alias 
+attributes must both be "{@code true}" for the system to be able to instantiate
+the target activity through the alias.  If either is "{@code false}", the alias
 does not work.
 </p></dd>
 
 <dt><a name="exported"></a>{@code android:exported}</dt>
-<dd>Whether or not components of other applications can launch the target activity 
-through this alias &mdash; "{@code true}" if they can, and "{@code false}" if not.  
-If "{@code false}", the target activity can be launched through the alias only by 
-components of the same application as the alias or applications with the same user ID.  
+<dd>Whether or not components of other applications can launch the target activity
+through this alias &mdash; "{@code true}" if they can, and "{@code false}" if not.
+If "{@code false}", the target activity can be launched through the alias only by
+components of the same application as the alias or applications with the same user ID.
 
 <p>
-The default value depends on whether the alias contains intent filters.  The 
+The default value depends on whether the alias contains intent filters.  The
 absence of any filters means that the activity can be invoked through the alias
-only by specifying the exact name of the alias.  This implies that the alias 
-is intended only for application-internal use (since others would not know its name)  
+only by specifying the exact name of the alias.  This implies that the alias
+is intended only for application-internal use (since others would not know its name)
 &mdash; so the default value is "{@code false}".
-On the other hand, the presence of at least one filter implies that the alias 
+On the other hand, the presence of at least one filter implies that the alias
 is intended for external use &mdash; so the default value is "{@code true}".
 </p></dd>
 
 <dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon for the target activity when presented to users through the alias.  
-See the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element's 
+<dd>An icon for the target activity when presented to users through the alias.
+See the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#icon">icon</a></code> attribute for more information.
 
 <dt><a name="label"></a>{@code android:label}</dt>
@@ -95,31 +95,31 @@
 
 <dt><a name="nm">{@code android:name}</dt>
 <dd>A unique name for the alias.  The name should resemble a fully
-qualified class name.  But, unlike the name of the target activity, 
-the alias name is arbitrary; it does not refer to an actual class.  
+qualified class name.  But, unlike the name of the target activity,
+the alias name is arbitrary; it does not refer to an actual class.
 </p></dd>
 
 <dt><a name="prmsn"></a>{@code android:permission}</dt>
-<dd>The name of a permission that clients must have to launch the target activity 
-or get it to do something via the alias.  If a caller of 
+<dd>The name of a permission that clients must have to launch the target activity
+or get it to do something via the alias.  If a caller of
 <code>{@link android.content.Context#startActivity startActivity()}</code> or
 <code>{@link android.app.Activity#startActivityForResult startActivityForResult()}</code>
 has not been granted the specified permission, the target activity will not be
-activated. 
+activated.
 
 <p>This attribute supplants any permission set for the target activity itself.  If
 it is not set, a permission is not needed to activate the target through the alias.
 </p>
 
 <p>
-For more information on permissions, see the 
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a> 
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
 section in the introduction.
 </p></dd>
 
 <dt><a name="trgt"></a>{@code android:targetActivity}</dt>
 <dd>The name of the activity that can be activated through the alias.
-This name must match the {@code name} attribute of an 
+This name must match the {@code name} attribute of an
 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element that precedes
 the alias in the manifest.
 </p></dd>
diff --git a/docs/html/guide/topics/manifest/category-element.jd b/docs/html/guide/topics/manifest/category-element.jd
index 0034119..d0f0edf 100644
--- a/docs/html/guide/topics/manifest/category-element.jd
+++ b/docs/html/guide/topics/manifest/category-element.jd
@@ -12,19 +12,19 @@
 
 <dt>description:</dt>
 <dd itemprop="description">Adds a category name to an intent filter.  See
-<a href="{@docRoot}guide/components/intents-filters.html">Intents and 
+<a href="{@docRoot}guide/components/intents-filters.html">Intents and
 Intent Filters</a> for details on intent filters and the role of category
 specifications within a filter.</dd>
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the category.  Standard categories are defined in the 
+<dd>The name of the category.  Standard categories are defined in the
 {@link android.content.Intent} class as <code>CATEGORY_<i>name</i></code>
-constants.  The name assigned here can be derived from those constants 
-by prefixing "{@code android.intent.category.}" to the 
+constants.  The name assigned here can be derived from those constants
+by prefixing "{@code android.intent.category.}" to the
 <code><i>name</i></code> that follows {@code CATEGORY_}.  For example,
-the string value for {@code CATEGORY_LAUNCHER} is 
+the string value for {@code CATEGORY_LAUNCHER} is
 "{@code android.intent.category.LAUNCHER}".
 
 <p class="note"><strong>Note:</strong> In order to receive implicit intents, you must include the
@@ -39,7 +39,7 @@
 Custom categories should use the package name as a prefix, to ensure
 that they are unique.
 </p></dd>
-</dl></dd> 
+</dl></dd>
 
 <!-- ##api level indication## -->
 <dt>introduced in:</dt>
diff --git a/docs/html/guide/topics/manifest/grant-uri-permission-element.jd b/docs/html/guide/topics/manifest/grant-uri-permission-element.jd
index b2d9bb7..a464e55 100644
--- a/docs/html/guide/topics/manifest/grant-uri-permission-element.jd
+++ b/docs/html/guide/topics/manifest/grant-uri-permission-element.jd
@@ -14,24 +14,24 @@
 
 <dt>description:</dt>
 <dd itemprop="description">Specifies which data subsets of the parent content provider permission
-can be granted for.  Data subsets are indicated by the path part of a 
+can be granted for.  Data subsets are indicated by the path part of a
 {@code content:} URI.  (The authority part of the URI identifies the
-content provider.)  
-Granting permission is a way of enabling clients of the provider that don't 
-normally have permission to access its data to overcome that restriction on 
+content provider.)
+Granting permission is a way of enabling clients of the provider that don't
+normally have permission to access its data to overcome that restriction on
 a one-time basis.
 
-<p> 
-If a content provider's <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code> 
-attribute is "{@code true}", permission can be granted for any the data under 
-the provider's purview.  However, if that attribute is "{@code false}", permission 
-can be granted only to data subsets that are specified by this element.  
+<p>
+If a content provider's <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code>
+attribute is "{@code true}", permission can be granted for any the data under
+the provider's purview.  However, if that attribute is "{@code false}", permission
+can be granted only to data subsets that are specified by this element.
 A provider can contain any number of {@code <grant-uri-permission>} elements.
 Each one can specify only one path (only one of the three possible attributes).
 </p>
 
 <p>
-For information on how permission is granted, see the 
+For information on how permission is granted, see the
 <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">grantUriPermissions</a></code> attribute.
 </p></dd>
@@ -41,34 +41,34 @@
 <dt><a name="path"></a>{@code android:path}
 <br/>{@code android:pathPrefix}
 <br/>{@code android:pathPattern}</dt>
-<dd>A path identifying the data subset or subsets that permission can be 
-granted for.  The {@code path} attribute specifies a complete path; 
-permission can be granted only to the particular data subset identified 
-by that path.  
-The {@code pathPrefix} attribute specifies the initial part of a path; 
-permission can be granted to all data subsets with paths that share that 
-initial part.   
-The {@code pathPattern} attribute specifies a complete path, but one 
+<dd>A path identifying the data subset or subsets that permission can be
+granted for.  The {@code path} attribute specifies a complete path;
+permission can be granted only to the particular data subset identified
+by that path.
+The {@code pathPrefix} attribute specifies the initial part of a path;
+permission can be granted to all data subsets with paths that share that
+initial part.
+The {@code pathPattern} attribute specifies a complete path, but one
 that can contain the following wildcards:
 
 <ul>
 <li>An asterisk ('{@code *}') matches a sequence of 0 to many occurrences of
 the immediately preceding character.</li>
 
-<li><p>A period followed by an asterisk ("{@code .*}") matches any sequence of 
+<li><p>A period followed by an asterisk ("{@code .*}") matches any sequence of
 0 to many characters.</p></li>
 </ul>
 
 <p>
-Because '{@code \}' is used as an escape character when the string is read 
-from XML (before it is parsed as a pattern), you will need to double-escape:  
-For example, a literal '{@code *}' would be written as "{@code \\*}" and a 
-literal '{@code \}' would be written as "{@code \\\\}".  This is basically 
+Because '{@code \}' is used as an escape character when the string is read
+from XML (before it is parsed as a pattern), you will need to double-escape:
+For example, a literal '{@code *}' would be written as "{@code \\*}" and a
+literal '{@code \}' would be written as "{@code \\\\}".  This is basically
 the same as what you would need to write if constructing the string in Java code.
 </p>
 
 <p>
-For more information on these types of patterns, see the descriptions of 
+For more information on these types of patterns, see the descriptions of
 {@link android.os.PatternMatcher#PATTERN_LITERAL},
 {@link android.os.PatternMatcher#PATTERN_PREFIX}, and
 {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB} in the
@@ -81,10 +81,10 @@
 <dd>API Level 1</dd>
 
 <dt>see also:</dt>
-<dd>the 
+<dd>the
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code>
-attribute of the 
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 
+attribute of the
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
 element</dd>
 
 
diff --git a/docs/html/guide/topics/manifest/instrumentation-element.jd b/docs/html/guide/topics/manifest/instrumentation-element.jd
index 74be559..a476be3 100644
--- a/docs/html/guide/topics/manifest/instrumentation-element.jd
+++ b/docs/html/guide/topics/manifest/instrumentation-element.jd
@@ -23,15 +23,15 @@
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="ftest"></a>{@code android:functionalTest}</dt>
-<dd>Whether or not the Instrumentation class should run as a functional test 
+<dd>Whether or not the Instrumentation class should run as a functional test
 &mdash; "{@code true}" if it should, and "{@code false}" if not.  The
 default value is "{@code false}".</dd>
 
 <dt><a name="hprof"></a>{@code android:handleProfiling}</dt>
-<dd>Whether or not the Instrumentation object will turn profiling on and 
-off &mdash; "{@code true}" if it determines when profiling starts and 
-stops, and "{@code false}" if profiling continues the entire time it is 
-running.  A value of "{@code true}" enables the object to target profiling 
+<dd>Whether or not the Instrumentation object will turn profiling on and
+off &mdash; "{@code true}" if it determines when profiling starts and
+stops, and "{@code false}" if profiling continues the entire time it is
+running.  A value of "{@code true}" enables the object to target profiling
 at a specific set of operations.  The default value is "{@code false}".</dd>
 
 <dt><a name="icon"></a>{@code android:icon}</dt>
@@ -43,11 +43,11 @@
 be set as a raw string or a reference to a string resource.</dd>
 
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the {@link android.app.Instrumentation} subclass.  
-This should be a fully qualified class name (such as, 
-"{@code com.example.project.StringInstrumentation}").  However, as a shorthand, 
-if the first character of the name is a period, it is appended to the package 
-name specified in the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.  
+<dd>The name of the {@link android.app.Instrumentation} subclass.
+This should be a fully qualified class name (such as,
+"{@code com.example.project.StringInstrumentation}").  However, as a shorthand,
+if the first character of the name is a period, it is appended to the package
+name specified in the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
 
 <p>
 There is no default.  The name must be specified.
diff --git a/docs/html/guide/topics/manifest/intent-filter-element.jd b/docs/html/guide/topics/manifest/intent-filter-element.jd
index 14b4e03..13956c9 100644
--- a/docs/html/guide/topics/manifest/intent-filter-element.jd
+++ b/docs/html/guide/topics/manifest/intent-filter-element.jd
@@ -27,23 +27,23 @@
 <dt>description:</dt>
 <dd itemprop="description">Specifies the types of intents that an activity, service, or broadcast
 receiver can respond to.  An intent filter declares the capabilities of its
-parent component &mdash; what an activity or service can do and what types 
-of broadcasts a receiver can handle.  It opens the component to receiving 
-intents of the advertised type, while filtering out those that are not 
+parent component &mdash; what an activity or service can do and what types
+of broadcasts a receiver can handle.  It opens the component to receiving
+intents of the advertised type, while filtering out those that are not
 meaningful for the component.
 
 <p>
-Most of the contents of the filter are described by its 
-<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>, 
+Most of the contents of the filter are described by its
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>,
 <code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>, and
 <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code> subelements.
 </p>
 
 <p>
-For a more detailed discussion of filters, see the separate  
-<a href="{@docRoot}guide/components/intents-filters.html">Intents 
-and Intent Filters</a> document, as well as the 
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#ifs">Intents Filters</a> 
+For a more detailed discussion of filters, see the separate
+<a href="{@docRoot}guide/components/intents-filters.html">Intents
+and Intent Filters</a> document, as well as the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#ifs">Intents Filters</a>
 section in the introduction.
 </p></dd>
 
@@ -51,19 +51,19 @@
 <dd><dl class="attr">
 <dt><a name="icon"></a>{@code android:icon}</dt>
 <dd>An icon that represents the parent activity, service, or broadcast
-receiver when that component is presented to the user as having the 
+receiver when that component is presented to the user as having the
 capability described by the filter.
 
 <p>
-This attribute must be set as a reference to a drawable resource 
-containing the image definition.  The default value is the icon set 
-by the parent component's {@code icon} attribute.  If the parent 
+This attribute must be set as a reference to a drawable resource
+containing the image definition.  The default value is the icon set
+by the parent component's {@code icon} attribute.  If the parent
 does not specify an icon, the default is the icon set by the
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element.
 </p>
 
 <p>
-For more on intent filter icons, see 
+For more on intent filter icons, see
 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html#iconlabel">Icons and Labels</a>
 in the introduction.
 </p></dd>
@@ -75,44 +75,44 @@
 
 <p>
 The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.  
-However, as a convenience while you're developing the application, 
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
 it can also be set as a raw string.
 </p>
 
 <p>
-The default value is the label set by the parent component.  If the 
+The default value is the label set by the parent component.  If the
 parent does not specify a label, the default is the label set by the
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html#label"> label</a></code> attribute.
 </p>
 
 <p>
-For more on intent filter labels, see 
+For more on intent filter labels, see
 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html#iconlabel">Icons and Labels</a>
 in the introduction.
 </p></dd>
 
 <dt><a name="priority"></a>{@code android:priority}</dt>
 <dd>The priority that should be given to the parent component with regard
-to handling intents of the type described by the filter.  This attribute has 
+to handling intents of the type described by the filter.  This attribute has
 meaning for both activities and broadcast receivers:
 
 <ul>
-<li>It provides information about how able an activity is to respond to 
+<li>It provides information about how able an activity is to respond to
 an intent that matches the filter, relative to other activities that could
-also respond to the intent.  When an intent could be handled by multiple 
+also respond to the intent.  When an intent could be handled by multiple
 activities with different priorities, Android will consider only those with
 higher priority values as potential targets for the intent.</li>
 
 <li><p>It controls the order in which broadcast receivers are executed to
-receive broadcast messages.  Those with higher priority 
-values are called before those with lower values.  (The order applies only 
+receive broadcast messages.  Those with higher priority
+values are called before those with lower values.  (The order applies only
 to synchronous messages; it's ignored for asynchronous messages.)</p></li>
 </ul>
 
 <p>
-Use this attribute only if you really need to impose a specific order in 
+Use this attribute only if you really need to impose a specific order in
 which the broadcasts are received, or want to force Android to prefer
 one activity over others.
 </p>
diff --git a/docs/html/guide/topics/manifest/meta-data-element.jd b/docs/html/guide/topics/manifest/meta-data-element.jd
index d3b41c3..2d1bdfe 100644
--- a/docs/html/guide/topics/manifest/meta-data-element.jd
+++ b/docs/html/guide/topics/manifest/meta-data-element.jd
@@ -19,18 +19,18 @@
 
 <dt>description:</dt>
 <dd itemprop="description">A name-value pair for an item of additional, arbitrary data that can
-be supplied to the parent component.  A component element can contain any 
+be supplied to the parent component.  A component element can contain any
 number of {@code <meta-data>} subelements.  The values from all of
-them are collected in a single {@link android.os.Bundle} object and made 
-available to the component as the 
-{@link android.content.pm.PackageItemInfo#metaData 
+them are collected in a single {@link android.os.Bundle} object and made
+available to the component as the
+{@link android.content.pm.PackageItemInfo#metaData
 PackageItemInfo.metaData} field.
 
 <p>
-Ordinary values are specified through the <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#value">value</a></code> 
-attribute.  However, to assign a resource ID as the value, use the 
-<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#resource">resource</a></code> attribute instead.  For example, 
-the following code assigns whatever value is stored in the {@code @string/kangaroo} 
+Ordinary values are specified through the <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#value">value</a></code>
+attribute.  However, to assign a resource ID as the value, use the
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#resource">resource</a></code> attribute instead.  For example,
+the following code assigns whatever value is stored in the {@code @string/kangaroo}
 resource to the "{@code zoo}" name:
 </p>
 
@@ -44,22 +44,22 @@
 <pre>&lt;meta-data android:name="zoo" android:resource="@string/kangaroo" /&gt;</pre>
 
 <p>
-It is highly recommended that you avoid supplying related data as 
+It is highly recommended that you avoid supplying related data as
 multiple separate {@code <meta-data>} entries. Instead, if you
-have complex data to associate with a component, store it as a resource and 
+have complex data to associate with a component, store it as a resource and
 use the {@code resource} attribute to inform the component of its ID.
 </p></dd>
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>A unique name for the item.  To ensure that the name is unique, use a 
-Java-style naming convention &mdash; for example, 
+<dd>A unique name for the item.  To ensure that the name is unique, use a
+Java-style naming convention &mdash; for example,
 "{@code com.example.project.activity.fred}".</dd>
 
 <dt><a name="rsrc"></a>{@code android:resource}</dt>
-<dd>A reference to a resource.  The ID of the resource is the value assigned 
-to the item.  The ID can be retrieved from the meta-data Bundle by the 
+<dd>A reference to a resource.  The ID of the resource is the value assigned
+to the item.  The ID can be retrieved from the meta-data Bundle by the
 {@link android.os.Bundle#getInt Bundle.getInt()} method.</dd>
 
 <dt><a name="val"></a>{@code android:value}</dt>
@@ -70,7 +70,7 @@
   <th>Type</th>
   <th>Bundle method</th>
 </tr><tr>
-  <td>String value, using double backslashes ({@code \\}) to escape characters 
+  <td>String value, using double backslashes ({@code \\}) to escape characters
       &mdash; such as "{@code \\n}" and "{@code \\uxxxxx}" for a Unicode character.</td>
   <td>{@link android.os.Bundle#getString(String) getString()}</td>
 </tr><tr>
@@ -80,7 +80,7 @@
   <td>Boolean value, either "{@code true}" or "{@code false}"</td>
   <td>{@link android.os.Bundle#getBoolean(String) getBoolean()}</td>
 </tr><tr>
-  <td>Color value, in the form "{@code #rgb}", "{@code #argb}", 
+  <td>Color value, in the form "{@code #rgb}", "{@code #argb}",
       "{@code #rrggbb}", or "{@code #aarrggbb}"</td>
   <td>{@link android.os.Bundle#getInt(String) getInt()}</td>
 </tr><tr>
diff --git a/docs/html/guide/topics/manifest/path-permission-element.jd b/docs/html/guide/topics/manifest/path-permission-element.jd
index cdaf82b..4774707 100644
--- a/docs/html/guide/topics/manifest/path-permission-element.jd
+++ b/docs/html/guide/topics/manifest/path-permission-element.jd
@@ -33,9 +33,9 @@
 
 <dd><dl class="attr">
 <dt><a name="path"></a>{@code android:path}</dt>
-<dd>A complete URI path for a subset of content provider data. 
-Permission can be granted only to the particular data identified by this path. 
-When used to provide search suggestion content, it must be appended 
+<dd>A complete URI path for a subset of content provider data.
+Permission can be granted only to the particular data identified by this path.
+When used to provide search suggestion content, it must be appended
 with "/search_suggest_query".
 </dd>
 
@@ -47,24 +47,24 @@
 <dt><a name="pathPattern"></a>{@code android:pathPattern}</dt>
 <dd>A complete URI path for a subset of content provider data,
 but one that can use the following wildcards:
- 
-<ul> 
+
+<ul>
 <li>An asterisk ('<code class="Code prettyprint">*</code>'). This matches a sequence of 0 to many occurrences of
-the immediately preceding character.</li> 
- 
-<li>A period followed by an asterisk ("<code class="Code prettyprint">.*</code>"). This matches any sequence of 
-0 or more characters.</li> 
-</ul> 
- 
-<p> 
-Because '<code class="Code prettyprint">\</code>' is used as an escape character when the string is read 
+the immediately preceding character.</li>
+
+<li>A period followed by an asterisk ("<code class="Code prettyprint">.*</code>"). This matches any sequence of
+0 or more characters.</li>
+</ul>
+
+<p>
+Because '<code class="Code prettyprint">\</code>' is used as an escape character when the string is read
 from XML (before it is parsed as a pattern), you will need to double-escape.
-For example, a literal '<code class="Code prettyprint">*</code>' would be written as "<code class="Code prettyprint">\\*</code>" and a 
-literal '<code class="Code prettyprint">\</code>' would be written as "<code class="Code prettyprint">\\</code>".  This is basically 
+For example, a literal '<code class="Code prettyprint">*</code>' would be written as "<code class="Code prettyprint">\\*</code>" and a
+literal '<code class="Code prettyprint">\</code>' would be written as "<code class="Code prettyprint">\\</code>".  This is basically
 the same as what you would need to write if constructing the string in Java code.
-</p> 
-<p> 
-For more information on these types of patterns, see the descriptions of 
+</p>
+<p>
+For more information on these types of patterns, see the descriptions of
 <a href="/reference/android/os/PatternMatcher.html#PATTERN_LITERAL">PATTERN_LITERAL</a>,
 <a href="/reference/android/os/PatternMatcher.html#PATTERN_PREFIX">PATTERN_PREFIX</a>, and
 <a href="/reference/android/os/PatternMatcher.html#PATTERN_SIMPLE_GLOB">PATTERN_SIMPLE_GLOB</a> in the
@@ -74,20 +74,20 @@
 
 <dt><a name="permission"></a>{@code android:permission}</dt>
 <dd>The name of a permission that clients must have in order to read or write the
-content provider's data.  This attribute is a convenient way of setting a 
-single permission for both reading and writing.  However, the 
-<code>readPermission</code> and 
+content provider's data.  This attribute is a convenient way of setting a
+single permission for both reading and writing.  However, the
+<code>readPermission</code> and
 <code>writePermission</code> attributes take precedence
 over this one.
-</dd> 
+</dd>
 
 <dt><a name="readPermission"></a>{@code android:readPermission}</dt>
 <dd>A permission that clients must have in order to query the content provider.
-</dd> 
+</dd>
 
 <dt><a name="writePermission"></a>{@code android:writePermission}</dt>
 <dd>A permission that clients must have in order to make changes to the data controlled by the content provider.
-</dd> 
+</dd>
 
 
 
diff --git a/docs/html/guide/topics/manifest/permission-group-element.jd b/docs/html/guide/topics/manifest/permission-group-element.jd
index 3221d4b..85452b5 100644
--- a/docs/html/guide/topics/manifest/permission-group-element.jd
+++ b/docs/html/guide/topics/manifest/permission-group-element.jd
@@ -20,17 +20,17 @@
 presented together in the user interface.
 
 <p>
-Note that this element does not declare a permission itself, only a category in 
-which permissions can be placed.  See the 
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> element for element for information 
+Note that this element does not declare a permission itself, only a category in
+which permissions can be placed.  See the
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> element for element for information
 on declaring permissions and assigning them to groups.
 </p></dd>
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="desc"></a>{@code android:description}</dt>
-<dd>User-readable text that describes the group.  The text should be 
-longer and more explanatory than the label.  This attribute must be 
+<dd>User-readable text that describes the group.  The text should be
+longer and more explanatory than the label.  This attribute must be
 set as a reference to a string resource.  Unlike the {@code label}
 attribute, it cannot be a raw string.</dd>
 
@@ -39,10 +39,10 @@
 as a reference to a drawable resource containing the image definition.</dd>
 
 <dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable name for the group.  As a convenience, the label can 
-be directly set as a raw string while you're developing the application.  
-However, when the application is ready to be published, it should be set 
-as a reference to a string resource, so that it can be localized like other 
+<dd>A user-readable name for the group.  As a convenience, the label can
+be directly set as a raw string while you're developing the application.
+However, when the application is ready to be published, it should be set
+as a reference to a string resource, so that it can be localized like other
 strings in the user interface.</dd>
 
 <dt><a name="nm"></a>{@code android:name}</dt>
diff --git a/docs/html/guide/topics/manifest/permission-tree-element.jd b/docs/html/guide/topics/manifest/permission-tree-element.jd
index 21d7352..cbfd72cd 100644
--- a/docs/html/guide/topics/manifest/permission-tree-element.jd
+++ b/docs/html/guide/topics/manifest/permission-tree-element.jd
@@ -14,7 +14,7 @@
 
 <dt>description:</dt>
 <dd itemprop="description">Declares the base name for a tree of permissions.  The application takes
-ownership of all names within the tree.  It can dynamically add new permissions 
+ownership of all names within the tree.  It can dynamically add new permissions
 to the tree by calling <code>{@link android.content.pm.PackageManager#addPermission PackageManager.addPermission()}</code>.  Names within the tree are separated by
 periods ('{@code .}').  For example, if the base name is
 {@code com.example.project.taxes}, permissions like the following might be
@@ -25,30 +25,30 @@
 <br/>{@code com.example.project.taxes.deductions.EXAGGERATE}</p>
 
 <p>
-Note that this element does not declare a permission itself, only a 
-namespace in which further permissions can be placed.  See the 
-<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+Note that this element does not declare a permission itself, only a
+namespace in which further permissions can be placed.  See the
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
 element for information on declaring permissions.
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing all the permissions in the tree.  This attribute 
-must be set as a reference to a drawable resource containing the image 
+<dd>An icon representing all the permissions in the tree.  This attribute
+must be set as a reference to a drawable resource containing the image
 definition.</dd>
 
 <dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable name for the group.  As a convenience, the label can 
-be directly set as a raw string for quick and dirty programming.  However, 
-when the application is ready to be published, it should be set as a 
-reference to a string resource, so that it can be localized like other 
+<dd>A user-readable name for the group.  As a convenience, the label can
+be directly set as a raw string for quick and dirty programming.  However,
+when the application is ready to be published, it should be set as a
+reference to a string resource, so that it can be localized like other
 strings in the user interface.</dd>
 
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name that's at the base of the permission tree.  It serves as 
-a prefix to all permission names in the tree.  Java-style scoping should 
-be used to ensure that the name is unique.  The name must have more than 
-two period-separated segments in its path &mdash; for example, 
+<dd>The name that's at the base of the permission tree.  It serves as
+a prefix to all permission names in the tree.  Java-style scoping should
+be used to ensure that the name is unique.  The name must have more than
+two period-separated segments in its path &mdash; for example,
 {@code com.example.base} is OK, but {@code com.example} is not.</dd>
 
 </dl></dd>
diff --git a/docs/html/guide/topics/manifest/provider-element.jd b/docs/html/guide/topics/manifest/provider-element.jd
index 4b5c0c3..1947849 100644
--- a/docs/html/guide/topics/manifest/provider-element.jd
+++ b/docs/html/guide/topics/manifest/provider-element.jd
@@ -37,41 +37,41 @@
 
 <dt>description:</dt>
 <dd itemprop="description">
-    Declares a content provider component. A content provider is a subclass of 
-    {@link android.content.ContentProvider} that supplies structured access to data managed by the 
-    application.  All content providers in your application must be defined in a 
+    Declares a content provider component. A content provider is a subclass of
+    {@link android.content.ContentProvider} that supplies structured access to data managed by the
+    application.  All content providers in your application must be defined in a
     {@code <provider>} element in the manifest file; otherwise, the system is unaware of them
     and doesn't run them.
     <p>
         You only declare content providers that are part of your application. Content providers in
         other applications that you use in your application should not be declared.
-    </p>  
+    </p>
     <p>
         The Android system stores references to content providers according to an <b>authority</b>
-        string, part of the provider's <b>content URI</b>. For example, suppose you want to 
+        string, part of the provider's <b>content URI</b>. For example, suppose you want to
         access a content provider that stores information about health care professionals. To do
-        this, you call the method 
+        this, you call the method
         {@link android.content.ContentResolver#query ContentResolver.query()}, which among other
         arguments takes a URI that identifies the provider:
-    </p> 
+    </p>
 <pre>
 content://com.example.project.healthcareprovider/nurses/rn
 </pre>
     <p>
         The <code>content:</code> <b>scheme</b> identifies the URI as a content URI pointing to
-        an Android content provider. The authority 
+        an Android content provider. The authority
         <code>com.example.project.healthcareprovider</code> identifies the provider itself; the
-        Android system looks up the authority in its list of known providers and their authorities. 
-        The substring <code>nurses/rn</code> is a <b>path</b>, which the content provider can use 
+        Android system looks up the authority in its list of known providers and their authorities.
+        The substring <code>nurses/rn</code> is a <b>path</b>, which the content provider can use
         to identify subsets of the provider data.
     </p>
     <p>
-        Notice that when you define your provider in the <code>&lt;provider&gt;</code> element, you 
+        Notice that when you define your provider in the <code>&lt;provider&gt;</code> element, you
         don't include the scheme or the path in the <code>android:name</code> argument, only the
-        authority.    
+        authority.
     </p>
     <p>
-        For information on using and developing content providers, see the API Guide, 
+        For information on using and developing content providers, see the API Guide,
         <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
     </p>
 </dd>
@@ -82,8 +82,8 @@
         <dt><a name="auth"></a>{@code android:authorities}</dt>
         <dd>
         A list of one or more URI authorities that identify data offered by the content provider.
-        Multiple authorities are listed by separating their names with a semicolon. 
-        To avoid conflicts, authority names should use a Java-style naming convention 
+        Multiple authorities are listed by separating their names with a semicolon.
+        To avoid conflicts, authority names should use a Java-style naming convention
         (such as {@code com.example.provider.cartoonprovider}).  Typically, it's the name
         of the {@link android.content.ContentProvider} subclass that implements the provider
         <p>
@@ -92,92 +92,92 @@
         </dd>
 
         <dt><a name="enabled"></a>{@code android:enabled}</dt>
-        <dd>Whether or not the content provider can be instantiated by the system &mdash; 
-        "{@code true}" if it can be, and "{@code false}" if not.  The default value 
+        <dd>Whether or not the content provider can be instantiated by the system &mdash;
+        "{@code true}" if it can be, and "{@code false}" if not.  The default value
         is "{@code true}".
 
         <p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all 
-application components, including content providers.  The 
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including content providers.  The
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and {@code <provider>}
 attributes must both be "{@code true}" (as they both
-are by default) for the content provider to be enabled.  If either is 
+are by default) for the content provider to be enabled.  If either is
 "{@code false}", the provider is disabled; it cannot be instantiated.
 </p></dd>
 
 <dt><a name="exported"></a>{@code android:exported}</dt>
 <dd>
     Whether the content provider is available for other applications to use:
-    <ul> 
+    <ul>
         <li>
             <code>true</code>: The provider is available to other applications. Any application can
             use the provider's content URI to access it, subject to the permissions specified for
             the provider.
         </li>
         <li>
-            <code>false</code>: The provider is not available to other applications. Set 
+            <code>false</code>: The provider is not available to other applications. Set
             <code>android:exported="false"</code> to limit access to the provider to your
             applications. Only applications that have the same user ID (UID) as the provider will
             have access to it.
         </li>
     </ul>
     <p>
-        The default value is <code>"true"</code> for applications that set either 
+        The default value is <code>"true"</code> for applications that set either
 <code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">android:minSdkVersion</a></code>
-        or 
-<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">android:targetSdkVersion</a></code> to 
+        or
+<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">android:targetSdkVersion</a></code> to
         <code>"16"</code> or lower. For applications that
-        set either of these attributes to <code>"17"</code> or higher, the default is 
+        set either of these attributes to <code>"17"</code> or higher, the default is
         <code>"false"</code>.
     </p>
     <p>
         You can set <code>android:exported="false"</code> and still limit access to your
-        provider by setting permissions with the 
+        provider by setting permissions with the
    <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code>
         attribute.
     </p>
-</dd> 
+</dd>
 
 <dt><a name="gprmsn"></a>{@code android:grantUriPermissions}</dt>
-<dd>Whether or not those who ordinarily would not have permission to 
+<dd>Whether or not those who ordinarily would not have permission to
 access the content provider's data can be granted permission to do so,
 temporarily overcoming the restriction imposed by the
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">readPermission</a></code>,
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">writePermission</a></code>, and 
-<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code> attributes 
-&mdash; 
-"{@code true}" if permission can be granted, and "{@code false}" if not.  
-If "{@code true}", permission can be granted to any of the content 
-provider's data.  If "{@code false}", permission can be granted only 
-to the data subsets listed in 
-<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code> subelements, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">writePermission</a></code>, and
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code> attributes
+&mdash;
+"{@code true}" if permission can be granted, and "{@code false}" if not.
+If "{@code true}", permission can be granted to any of the content
+provider's data.  If "{@code false}", permission can be granted only
+to the data subsets listed in
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code> subelements,
 if any.  The default value is "{@code false}".
 
 <p>
-Granting permission is a way of giving an application component one-time 
-access to data protected by a permission.  For example, when an e-mail 
-message contains an attachment, the mail application may call upon the 
-appropriate viewer to open it, even though the viewer doesn't have general 
-permission to look at all the content provider's data. 
+Granting permission is a way of giving an application component one-time
+access to data protected by a permission.  For example, when an e-mail
+message contains an attachment, the mail application may call upon the
+appropriate viewer to open it, even though the viewer doesn't have general
+permission to look at all the content provider's data.
 </p>
 
-<p>  
-In such cases, permission is granted by 
-<code>{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}</code> 
-and <code>{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}</code> 
-flags in the Intent object that activates the component.  For example, the 
-mail application might put {@code FLAG_GRANT_READ_URI_PERMISSION} in the 
-Intent passed to {@code Context.startActivity()}.  The permission is specific 
-to the URI in the Intent.  
+<p>
+In such cases, permission is granted by
+<code>{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}</code>
+and <code>{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}</code>
+flags in the Intent object that activates the component.  For example, the
+mail application might put {@code FLAG_GRANT_READ_URI_PERMISSION} in the
+Intent passed to {@code Context.startActivity()}.  The permission is specific
+to the URI in the Intent.
 </p>
 
 <p>
 If you enable this feature, either by setting this attribute to "{@code true}"
-or by defining <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code> 
-subelements, you must call 
-<code>{@link android.content.Context#revokeUriPermission 
-Context.revokeUriPermission()}</code> when a covered URI is deleted from 
+or by defining <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+subelements, you must call
+<code>{@link android.content.Context#revokeUriPermission
+Context.revokeUriPermission()}</code> when a covered URI is deleted from
 the provider.
 </p>
 
@@ -187,52 +187,52 @@
 </p></dd>
 
 <dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing the content provider. 
-This attribute must be set as a reference to a drawable resource containing 
-the image definition.  If it is not set, the icon specified for the application 
-as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+<dd>An icon representing the content provider.
+This attribute must be set as a reference to a drawable resource containing
+the image definition.  If it is not set, the icon specified for the application
+as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
 element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).</dd>
 
 <dt><a name="init"></a>{@code android:initOrder}</dt>
-<dd>The order in which the content provider should be instantiated, 
-relative to other content providers hosted by the same process.  
-When there are dependencies among content providers, setting this 
-attribute for each of them ensures that they are created in the order 
-required by those dependencies.  The value is a simple integer, 
+<dd>The order in which the content provider should be instantiated,
+relative to other content providers hosted by the same process.
+When there are dependencies among content providers, setting this
+attribute for each of them ensures that they are created in the order
+required by those dependencies.  The value is a simple integer,
 with higher numbers being initialized first.</dd>
 
 <dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable label for the content provided.  
-If this attribute is not set, the label set for the application as a whole is 
-used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
+<dd>A user-readable label for the content provided.
+If this attribute is not set, the label set for the application as a whole is
+used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
 
 <p>
 The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.  
-However, as a convenience while you're developing the application, 
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
 it can also be set as a raw string.
 </p></dd>
 
 <dt><a name="multi"></a>{@code android:multiprocess}</dt>
-<dd>Whether or not an instance of the content provider can be created in 
+<dd>Whether or not an instance of the content provider can be created in
 every client process &mdash; "{@code true}" if instances can run in multiple
 processes, and "{@code false}" if not.  The default value is "{@code false}".
 
 <p>
-Normally, a content provider is instantiated in the process of the 
-application that defined it.  However, if this flag is set to "{@code true}", 
-the system can create an instance in every process where there's a client 
-that wants to interact with it, thus avoiding the overhead of interprocess 
+Normally, a content provider is instantiated in the process of the
+application that defined it.  However, if this flag is set to "{@code true}",
+the system can create an instance in every process where there's a client
+that wants to interact with it, thus avoiding the overhead of interprocess
 communication.
 </p></dd>
 
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the class that implements the content provider, a subclass of 
-{@link android.content.ContentProvider}.  This should be a fully qualified 
-class name (such as, "{@code com.example.project.TransportationProvider}").  
-However, as a shorthand, if the first character of the name is a period, 
-it is appended to the package name specified in the 
+<dd>The name of the class that implements the content provider, a subclass of
+{@link android.content.ContentProvider}.  This should be a fully qualified
+class name (such as, "{@code com.example.project.TransportationProvider}").
+However, as a shorthand, if the first character of the name is a period,
+it is appended to the package name specified in the
 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
 
 <p>
@@ -242,58 +242,58 @@
 
 <dt><a name="prmsn"></a>{@code android:permission}</dt>
 <dd>The name of a permission that clients must have to read or write the
-content provider's data.  This attribute is a convenient way of setting a 
-single permission for both reading and writing.  However, the 
-<code><a href="#rprmsn">readPermission</a></code> and 
+content provider's data.  This attribute is a convenient way of setting a
+single permission for both reading and writing.  However, the
+<code><a href="#rprmsn">readPermission</a></code> and
 <code><a href="#wprmsn">writePermission</a></code> attributes take precedence
-over this one.  If the <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">readPermission</a></code> 
+over this one.  If the <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">readPermission</a></code>
 attribute is also set, it controls access for querying the content provider.
 And if the <code><a href="#wprmsn">writePermission</a></code> attribute is set,
 it controls access for modifying the provider's data.
 
 <p>
-For more information on permissions, see the 
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a> 
-section in the introduction and a separate document, 
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
+section in the introduction and a separate document,
 <a href="{@docRoot}guide/topics/security/security.html">Security and
 Permissions</a>.
 </p></dd>
 
 <dt><a name="proc"></a>{@code android:process}</dt>
-<dd>The name of the process in which the content provider should run.  Normally, 
-all components of an application run in the default process created for the 
-application.  It has the same name as the application package.  The 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> 
-attribute can set a different 
+<dd>The name of the process in which the content provider should run.  Normally,
+all components of an application run in the default process created for the
+application.  It has the same name as the application package.  The
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code>
+attribute can set a different
 default for all components.  But each component can override the default
-with its own {@code process} attribute, allowing you to spread your 
+with its own {@code process} attribute, allowing you to spread your
 application across multiple processes.
 
 <p>
-If the name assigned to this attribute begins with a colon (':'), a new 
-process, private to the application, is created when it's needed and 
+If the name assigned to this attribute begins with a colon (':'), a new
+process, private to the application, is created when it's needed and
 the activity runs in that process.
-If the process name begins with a lowercase character, the activity will run 
+If the process name begins with a lowercase character, the activity will run
 in a global process of that name, provided that it has permission to do so.
-This allows components in different applications to share a process, reducing 
+This allows components in different applications to share a process, reducing
 resource usage.
 </p></dd>
 
 <dt><a name="rprmsn"></a>{@code android:readPermission}</dt>
-<dd>A permission that clients must have to query the content provider.  
-See also the <code><a href="#prmsn">permission</a></code> and 
+<dd>A permission that clients must have to query the content provider.
+See also the <code><a href="#prmsn">permission</a></code> and
 <code><a href="#wprmsn">writePermission</a></code> attributes.</dd>
 
 <dt><a name="sync"></a>{@code android:syncable}</dt>
-<dd>Whether or not the data under the content provider's control 
-is to be synchronized with data on a server &mdash; "{@code true}" 
+<dd>Whether or not the data under the content provider's control
+is to be synchronized with data on a server &mdash; "{@code true}"
 if it is to be synchronized, and "{@code false}" if not.</dd>
 
 <dt><a name="wprmsn"></a>{@code android:writePermission}</dt>
-<dd>A permission that clients must have to make changes to the data 
-controlled by the content provider.  
-See also the <code><a href="#prmsn">permission</a></code> and 
+<dd>A permission that clients must have to make changes to the data
+controlled by the content provider.
+See also the <code><a href="#prmsn">permission</a></code> and
 <code><a href="#rprmsn">readPermission</a></code> attributes.</dd>
 
 </dl></dd>
diff --git a/docs/html/guide/topics/manifest/receiver-element.jd b/docs/html/guide/topics/manifest/receiver-element.jd
index 081a191..800ee8a 100644
--- a/docs/html/guide/topics/manifest/receiver-element.jd
+++ b/docs/html/guide/topics/manifest/receiver-element.jd
@@ -24,14 +24,14 @@
 
 <dt>description:</dt>
 <dd itemprop="description">Declares a broadcast receiver (a {@link android.content.BroadcastReceiver}
-subclass) as one of the application's components.  Broadcast receivers enable 
-applications to receive intents that are broadcast by the system or by other 
+subclass) as one of the application's components.  Broadcast receivers enable
+applications to receive intents that are broadcast by the system or by other
 applications, even when other components of the application are not running.
 
 <p>
 There are two ways to make a broadcast receiver known to the system:  One is
 declare it in the manifest file with this element.  The other is to create
-the receiver dynamically in code and register it with the <code>{@link 
+the receiver dynamically in code and register it with the <code>{@link
 android.content.Context#registerReceiver Context.registerReceiver()}</code>
 method.  See the {@link android.content.BroadcastReceiver} class description
 for more on dynamically created receivers.
@@ -40,14 +40,14 @@
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="enabled"></a>{@code android:enabled}</dt>
-<dd>Whether or not the broadcast receiver can be instantiated by the system &mdash; 
-"{@code true}" if it can be, and "{@code false}" if not.  The default value 
+<dd>Whether or not the broadcast receiver can be instantiated by the system &mdash;
+"{@code true}" if it can be, and "{@code false}" if not.  The default value
 is "{@code true}".
 
 <p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all 
-application components, including broadcast receivers.  The 
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including broadcast receivers.  The
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and
 {@code <receiver>} attributes must both be "{@code true}" for
 the broadcast receiver to be enabled.  If either is "{@code false}", it is
@@ -55,72 +55,72 @@
 </p></dd>
 
 <dt><a name="exported"></a>{@code android:exported}</dt>
-<dd>Whether or not the broadcast receiver can receive messages from sources 
-outside its application  &mdash; "{@code true}" if it can, and "{@code false}" 
-if not.  If "{@code false}", the only messages the broadcast receiver can 
-receive are those sent by components of the same application or applications 
-with the same user ID.  
+<dd>Whether or not the broadcast receiver can receive messages from sources
+outside its application  &mdash; "{@code true}" if it can, and "{@code false}"
+if not.  If "{@code false}", the only messages the broadcast receiver can
+receive are those sent by components of the same application or applications
+with the same user ID.
 
 <p>
-The default value depends on whether the broadcast receiver contains intent filters.  
+The default value depends on whether the broadcast receiver contains intent filters.
 The absence of any filters means that it can be invoked only by Intent objects that
-specify its exact class name.  This implies that the receiver is intended only for 
-application-internal use (since others would not normally know the class name).  
+specify its exact class name.  This implies that the receiver is intended only for
+application-internal use (since others would not normally know the class name).
 So in this case, the default value is "{@code false}".
-On the other hand, the presence of at least one filter implies that the broadcast 
-receiver is intended to receive intents broadcast by the system or other applications, 
+On the other hand, the presence of at least one filter implies that the broadcast
+receiver is intended to receive intents broadcast by the system or other applications,
 so the default value is "{@code true}".
 </p>
 
 <p>
-This attribute is not the only way to limit a broadcast receiver's external exposure.  
-You can also use a permission to limit the external entities that can send it messages 
+This attribute is not the only way to limit a broadcast receiver's external exposure.
+You can also use a permission to limit the external entities that can send it messages
 (see the <code><a href="{@docRoot}guide/topics/manifest/receiver-element.html#prmsn">permission</a></code> attribute).
 </p></dd>
 
 <dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing the broadcast receiver. This attribute must be set 
-as a reference to a drawable resource containing the image definition.  
-If it is not set, the icon specified for the application as a whole is used 
-instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+<dd>An icon representing the broadcast receiver. This attribute must be set
+as a reference to a drawable resource containing the image definition.
+If it is not set, the icon specified for the application as a whole is used
+instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
 element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).
 
 <p>
-The broadcast receiver's icon &mdash; whether set here or by the 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the 
-default icon for all the receiver's intent filters (see the 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute). 
+The broadcast receiver's icon &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default icon for all the receiver's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute).
 </p></dd>
 
 <dt><a name="label"></a>{@code android:label}</dt>
-<dd>A user-readable label for the broadcast receiver.  If this attribute is not 
-set, the label set for the application as a whole is 
-used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
+<dd>A user-readable label for the broadcast receiver.  If this attribute is not
+set, the label set for the application as a whole is
+used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
 
 <p>
-The broadcast receiver's label &mdash; whether set here or by the 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the 
-default label for all the receiver's intent filters (see the 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute). 
+The broadcast receiver's label &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default label for all the receiver's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute).
 </p>
 
 <p>
 The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.  
-However, as a convenience while you're developing the application, 
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
 it can also be set as a raw string.
 </p></dd>
 
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the class that implements the broadcast receiver, a subclass of 
-{@link android.content.BroadcastReceiver}.  This should be a fully qualified 
-class name (such as, "{@code com.example.project.ReportReceiver}").  However, 
-as a shorthand, if the first character of the name is a period (for example, 
-"{@code . ReportReceiver}"), it is appended to the package name specified in 
-the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.  
+<dd>The name of the class that implements the broadcast receiver, a subclass of
+{@link android.content.BroadcastReceiver}.  This should be a fully qualified
+class name (such as, "{@code com.example.project.ReportReceiver}").  However,
+as a shorthand, if the first character of the name is a period (for example,
+"{@code . ReportReceiver}"), it is appended to the package name specified in
+the <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
 
 <p>Once you publish your application, you <a
 href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">should not
@@ -132,38 +132,38 @@
 </p></dd>
 
 <dt><a name="prmsn"></a>{@code android:permission}</dt>
-<dd>The name of a permission that broadcasters must have to send a 
+<dd>The name of a permission that broadcasters must have to send a
 message to the broadcast receiver.
-If this attribute is not set, the permission set by the 
+If this attribute is not set, the permission set by the
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code> attribute applies 
-to the broadcast receiver.  If neither attribute is set, the receiver 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code> attribute applies
+to the broadcast receiver.  If neither attribute is set, the receiver
 is not protected by a permission.
 
 <p>
-For more information on permissions, see the 
-<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a> 
-section in the introduction and a separate document, 
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
+section in the introduction and a separate document,
 <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>.
 </p></dd>
 
 <dt><a name="proc"></a>{@code android:process}</dt>
-<dd>The name of the process in which the broadcast receiver should run.  
-Normally, all components of an application run in the default process created 
-for the application.  It has the same name as the application package.  The 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> attribute can set a different 
+<dd>The name of the process in which the broadcast receiver should run.
+Normally, all components of an application run in the default process created
+for the application.  It has the same name as the application package.  The
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> attribute can set a different
 default for all components.  But each component can override the default
-with its own {@code process} attribute, allowing you to spread your 
+with its own {@code process} attribute, allowing you to spread your
 application across multiple processes.
 
 <p>
-If the name assigned to this attribute begins with a colon (':'), a new 
-process, private to the application, is created when it's needed and 
+If the name assigned to this attribute begins with a colon (':'), a new
+process, private to the application, is created when it's needed and
 the broadcast receiver runs in that process.
-If the process name begins with a lowercase character, the receiver will run 
+If the process name begins with a lowercase character, the receiver will run
 in a global process of that name, provided that it has permission to do so.
-This allows components in different applications to share a process, reducing 
+This allows components in different applications to share a process, reducing
 resource usage.
 </p></dd>
 </dl></dd>
diff --git a/docs/html/guide/topics/manifest/service-element.jd b/docs/html/guide/topics/manifest/service-element.jd
index fca85f5..9197a7f 100644
--- a/docs/html/guide/topics/manifest/service-element.jd
+++ b/docs/html/guide/topics/manifest/service-element.jd
@@ -25,108 +25,108 @@
 
 <dt>description:</dt>
 <dd itemprop="description">Declares a service (a {@link android.app.Service} subclass) as one
-of the application's components.  Unlike activities, services lack a 
-visual user interface.  They're used to implement long-running background 
-operations or a rich communications API that can be called by other 
+of the application's components.  Unlike activities, services lack a
+visual user interface.  They're used to implement long-running background
+operations or a rich communications API that can be called by other
 applications.
 
 <p>
 All services must be represented by {@code <service>} elements in
-the manifest file.  Any that are not declared there will not be seen 
+the manifest file.  Any that are not declared there will not be seen
 by the system and will never be run.
 </p></dd>
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="enabled"></a>{@code android:enabled}</dt>
-<dd>Whether or not the service can be instantiated by the system &mdash; 
-"{@code true}" if it can be, and "{@code false}" if not.  The default value 
+<dd>Whether or not the service can be instantiated by the system &mdash;
+"{@code true}" if it can be, and "{@code false}" if not.  The default value
 is "{@code true}".
 
 <p>
-The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all 
-application components, including services.  The 
+The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
+application components, including services.  The
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> and {@code <service>}
 attributes must both be "{@code true}" (as they both
-are by default) for the service to be enabled.  If either is 
+are by default) for the service to be enabled.  If either is
 "{@code false}", the service is disabled; it cannot be instantiated.
 </p></dd>
 
 <dt><a name="exported"></a>{@code android:exported}</dt>
-<dd>Whether or not components of other applications can invoke 
-the service or interact with it &mdash; "{@code true}" if they can, and 
-"{@code false}" if not.  When the value is "{@code false}", only 
-components of the same application or applications 
+<dd>Whether or not components of other applications can invoke
+the service or interact with it &mdash; "{@code true}" if they can, and
+"{@code false}" if not.  When the value is "{@code false}", only
+components of the same application or applications
 with the same user ID can start the service or bind to it.
 
 <p>
-The default value depends on whether the service contains intent filters.  The 
-absence of any filters means that it can be invoked only by specifying 
-its exact class name.  This implies that the service is intended only for 
-application-internal use (since others would not know the class name).  So in 
+The default value depends on whether the service contains intent filters.  The
+absence of any filters means that it can be invoked only by specifying
+its exact class name.  This implies that the service is intended only for
+application-internal use (since others would not know the class name).  So in
 this case, the default value is "{@code false}".
-On the other hand, the presence of at least one filter implies that the service 
+On the other hand, the presence of at least one filter implies that the service
 is intended for external use, so the default value is "{@code true}".
 </p>
 
 <p>
 This attribute is not the only way to limit the exposure of a service to other
-applications.  You can also use a permission to limit the external entities that 
-can interact with the service (see the <code><a href="{@docRoot}guide/topics/manifest/service-element.html#prmsn">permission</a></code> 
+applications.  You can also use a permission to limit the external entities that
+can interact with the service (see the <code><a href="{@docRoot}guide/topics/manifest/service-element.html#prmsn">permission</a></code>
 attribute).
 </p></dd>
 
 <dt><a name="icon"></a>{@code android:icon}</dt>
-<dd>An icon representing the service.  This attribute must be set as a 
-reference to a drawable resource containing the image definition.  
-If it is not set, the icon specified for the application 
-as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+<dd>An icon representing the service.  This attribute must be set as a
+reference to a drawable resource containing the image definition.
+If it is not set, the icon specified for the application
+as a whole is used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
 element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).
 </p>
 
 <p>
-The service's icon &mdash; whether set here or by the 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the 
-default icon for all the service's intent filters (see the 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's 
+The service's icon &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default icon for all the service's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute).
-</p></dd> 
+</p></dd>
 
 <dt><a name="isolated"></a>{@code android:isolatedProcess}</dt>
 <dd>If set to true, this service will run under a special process that is isolated from the
   rest of the system and has no permissions of its own.
-  The only communication with it is through the Service API 
+  The only communication with it is through the Service API
   (binding and starting).</dd>
 
 <dt><a name="label"></a>{@code android:label}</dt>
-<dd>A name for the service that can be displayed to users.  
-If this attribute is not set, the label set for the application as a whole is 
-used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
+<dd>A name for the service that can be displayed to users.
+If this attribute is not set, the label set for the application as a whole is
+used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
 
 <p>
-The service's label &mdash; whether set here or by the 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the 
-default label for all the service's intent filters (see the 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's 
-<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute). 
+The service's label &mdash; whether set here or by the
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the
+default label for all the service's intent filters (see the
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute).
 </p>
 
 <p>
 The label should be set as a reference to a string resource, so that
-it can be localized like other strings in the user interface.  
-However, as a convenience while you're developing the application, 
+it can be localized like other strings in the user interface.
+However, as a convenience while you're developing the application,
 it can also be set as a raw string.
 </p></dd>
 
 <dt><a name="nm"></a>{@code android:name}</dt>
-<dd>The name of the {@link android.app.Service} subclass that implements 
-the service.  This should be a fully qualified class name (such as, 
-"{@code com.example.project.RoomService}").  However, as a shorthand, if 
+<dd>The name of the {@link android.app.Service} subclass that implements
+the service.  This should be a fully qualified class name (such as,
+"{@code com.example.project.RoomService}").  However, as a shorthand, if
 the first character of the name is a period (for example, "{@code .RoomService}"),
-it is appended to the package name specified in the 
-<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.  
+it is appended to the package name specified in the
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
 
 <p>Once you publish your application, you <a
 href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">should not
@@ -138,8 +138,8 @@
 </p></dd>
 
 <dt><a name="prmsn"></a>{@code android:permission}</dt>
-<dd>The name of a permission that an entity must have in order to 
-launch the service or bind to it.  If a caller of 
+<dd>The name of a permission that an entity must have in order to
+launch the service or bind to it.  If a caller of
 <code>{@link android.content.Context#startService startService()}</code>,
 <code>{@link android.content.Context#bindService bindService()}</code>, or
 <code>{@link android.content.Context#stopService stopService()}</code>,
@@ -147,38 +147,38 @@
 Intent object will not be delivered to the service.
 
 <p>
-If this attribute is not set, the permission set by the 
+If this attribute is not set, the permission set by the
 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code> 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code>
 attribute applies to the service.  If neither attribute is set, the service is
 not protected by a permission.
 </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 a separate document, 
+For more information on permissions, see the
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
+section in the introduction and a separate document,
 <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>.
 </p></dd>
 
 <dt><a name="proc"></a>{@code android:process}</dt>
-<dd>The name of the process where the service is to run.  Normally, 
-all components of an application run in the default process created for the 
-application.  It has the same name as the application package.  The 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
-<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> 
-attribute can set a different 
+<dd>The name of the process where the service is to run.  Normally,
+all components of an application run in the default process created for the
+application.  It has the same name as the application package.  The
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code>
+attribute can set a different
 default for all components.  But component can override the default
-with its own {@code process} attribute, allowing you to spread your 
+with its own {@code process} attribute, allowing you to spread your
 application across multiple processes.
 
 <p>
-If the name assigned to this attribute begins with a colon (':'), a new 
-process, private to the application, is created when it's needed and 
+If the name assigned to this attribute begins with a colon (':'), a new
+process, private to the application, is created when it's needed and
 the service runs in that process.
-If the process name begins with a lowercase character, the service will run 
+If the process name begins with a lowercase character, the service will run
 in a global process of that name, provided that it has permission to do so.
-This allows components in different applications to share a process, reducing 
+This allows components in different applications to share a process, reducing
 resource usage.
 </p></dd>
 </dl></dd>
diff --git a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
index ab751c2..a72fc81 100644
--- a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
+++ b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd
@@ -3,16 +3,16 @@
 parent.link=manifest-intro.html
 @jd:body
 
- <div class="sidebox-wrapper"> 
+ <div class="sidebox-wrapper">
  <div class="sidebox">
-    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;"> 
-    <p style="color:#669999;padding-top:1em;">Google Play Filtering</p> 
+    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
+    <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
     <p style="padding-top:1em;">Google Play filters applications according
     to the texture compression formats that they support, to ensure that
     they can be installed only on devices that can handle their textures
     properly. You can use texture compression filtering
     as a way of targeting specific device types, based on GPU platform.</p>
-    
+
     <p style="margin-top:1em;">For important information about how
     Google Play uses <code>&lt;supports-gl-texture&gt;</code> elements as
     the basis for filtering, please read <a href="#market-texture-filtering">Google
diff --git a/docs/html/guide/topics/manifest/supports-screens-element.jd b/docs/html/guide/topics/manifest/supports-screens-element.jd
index a4546fa..ce2bb8d 100644
--- a/docs/html/guide/topics/manifest/supports-screens-element.jd
+++ b/docs/html/guide/topics/manifest/supports-screens-element.jd
@@ -74,7 +74,7 @@
 transition from Android 1.5 to 1.6, when support for multiple screens was first introduced. You
 should not use it.</p>
   </dd>
-  
+
   <dt><a name="small"></a>{@code android:smallScreens}</dt>
   <dd>Indicates whether the application supports smaller screen form-factors.
      A small screen is defined as one with a smaller aspect ratio than
@@ -84,14 +84,14 @@
 the platform can do to make such an application work on a smaller screen. This is {@code "true"} by
 default.
   </dd>
-  
+
   <dt><a name="normal"></a>{@code android:normalScreens}</dt>
   <dd>Indicates whether an application supports the "normal" screen
      form-factors.  Traditionally this is an HVGA medium density
      screen, but WQVGA low density and WVGA high density are also
      considered to be normal.  This attribute is "true" by default.
   </dd>
-  
+
   <dt><a name="large"></a>{@code android:largeScreens}</dt>
   <dd>Indicates whether the application supports larger screen form-factors.
      A large screen is defined as a screen that is significantly larger
@@ -116,7 +116,7 @@
 compatibility mode</a>.</p>
      <p>This attribute was introduced in API level 9.</p>
   </dd>
-  
+
   <dt><a name="any"></a>{@code android:anyDensity}</dt>
   <dd>Indicates whether the application includes resources to accommodate any screen
      density.
@@ -127,14 +127,14 @@
 href="{@docRoot}guide/practices/screens_support.html#DensityConsiderations">Supporting Multiple
 Screens</a> document for more information).</p>
   </dd>
-  
+
   <dt id="requiresSmallest">{@code android:requiresSmallestWidthDp}</dt>
   <dd>Specifies the minimum smallestWidth required. The smallestWidth is the shortest dimension of
 the screen space (in {@code dp} units) that must be available to your application UI&mdash;that is,
 the shortest of the available screen's two dimensions. So, in order for a device to be considered
 compatible with your application, the device's smallestWidth must be equal to or greater than this
 value. (Usually, the value you supply for this is the "smallest width" that your layout supports,
-regardless of the screen's current orientation.) 
+regardless of the screen's current orientation.)
 
   <p>For example, a typical handset screen has a smallestWidth of 320dp, a 7" tablet has a
 smallestWidth of 600dp, and a 10" tablet has a smallestWidth of 720dp. These values are generally
@@ -209,7 +209,7 @@
 android:largestWidthLimitDp} is larger than 320.</p>
      <p>This attribute was introduced in API level 13.</p>
   </dd>
-  
+
 
 </dl></dd>
 
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
index 5d163c0..0670348 100755
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -33,7 +33,7 @@
     <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
     <p style="padding-top:1em;">Google Play uses the <code>&lt;uses-feature&gt;</code>
     elements declared in your app manifest to filter your app from devices
-    that do not meet it's hardware and software feature requirements. </p>
+    that do not meet its hardware and software feature requirements. </p>
 
 <p style="margin-top:1em;">By specifying the features that your application requires,
 you enable Google Play to present your application only to users whose
@@ -150,23 +150,21 @@
   <dd>
     Boolean value that indicates whether the application requires the feature
     specified in <code>android:name</code>.
-  </dd>
-</dl>
-<ul>
-<li>When you declare <code>android:required="true"</code> for a feature,
-you are specifying that the application <em>cannot function, or is not
-designed to function</em>, when the specified feature is not present on the
-device. </li>
+    <ul>
+    <li>When you declare <code>android:required="true"</code> for a feature,
+    you are specifying that the application <em>cannot function, or is not
+    designed to function</em>, when the specified feature is not present on the
+    device. </li>
 
-<li>When you declare <code>android:required="false"</code> for a feature, it
-means that the application <em>prefers to use the feature</em> if present on
-the device, but that it <em>is designed to function without the specified
-feature</em>, if necessary. </li>
+    <li>When you declare <code>android:required="false"</code> for a feature, it
+    means that the application <em>prefers to use the feature</em> if present on
+    the device, but that it <em>is designed to function without the specified
+    feature</em>, if necessary. </li>
 
-</ul>
+    </ul>
 
-<p>The default value for <code>android:required</code> if not declared is
-<code>"true"</code>.</p>
+    <p>The default value for <code>android:required</code> if not declared is
+    <code>"true"</code>.</p>
   </dd>
 
   <dt><a name="glEsVersion"></a><code>android:glEsVersion</code></dt>
diff --git a/docs/html/guide/topics/manifest/uses-library-element.jd b/docs/html/guide/topics/manifest/uses-library-element.jd
index aa7ca82..f8d8e62 100644
--- a/docs/html/guide/topics/manifest/uses-library-element.jd
+++ b/docs/html/guide/topics/manifest/uses-library-element.jd
@@ -3,10 +3,10 @@
 parent.link=manifest-intro.html
 @jd:body
 
-<div class="sidebox-wrapper"> 
+<div class="sidebox-wrapper">
 <div class="sidebox">
-    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;"> 
-    <p style="color:#669999;padding-top:1em;">Google Play Filtering</p> 
+    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
+    <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
     <p style="padding-top:1em;">Google Play uses the &lt;uses-library&gt; elements declared
     in your app manifest to filter your app from devices that do not meet it's library
     requirements. For more information about filtering, see the topic
diff --git a/docs/html/guide/topics/manifest/uses-permission-element.jd b/docs/html/guide/topics/manifest/uses-permission-element.jd
index 32fe21e..03a0dc1 100644
--- a/docs/html/guide/topics/manifest/uses-permission-element.jd
+++ b/docs/html/guide/topics/manifest/uses-permission-element.jd
@@ -5,10 +5,10 @@
 
 <dl class="xml">
 
-<div class="sidebox-wrapper"> 
+<div class="sidebox-wrapper">
 <div class="sidebox">
-<img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;"> 
-<p style="color:#669999;padding-top:1em;">Google Play Filtering</p> 
+<img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
+<p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
 
 <p style="clear:left;">In some cases, the permissions that you request
 through <code>&lt;uses-permission&gt;</code> can affect how
@@ -43,24 +43,24 @@
 
 <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 
+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> 
+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/permissions.html">System
 Permissions</a> API guide.
-A list of permissions defined by the base platform can be found at 
+A list of permissions defined by the base platform can be found at
 {@link android.Manifest.permission android.Manifest.permission}.
 
 <dt>attributes:</dt>
 <dd><dl class="attr">
 <dt><a name="nm"></a>{@code android:name}</dt>
-<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 
+<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
 {@link android.Manifest.permission#CAMERA "android.permission.CAMERA"}
 or {@link android.Manifest.permission#READ_CONTACTS
diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd
index a750c9a..c66ab30 100644
--- a/docs/html/guide/topics/media/index.jd
+++ b/docs/html/guide/topics/media/index.jd
@@ -1,6 +1,6 @@
 page.title=Media and Camera
 page.landing=true
-page.landing.intro=Add video, audio, and photo capabilities to your app with Android's robust APIs for playing and recording media. 
+page.landing.intro=Add video, audio, and photo capabilities to your app with Android's robust APIs for playing and recording media.
 page.landing.image=
 
 @jd:body
diff --git a/docs/html/guide/topics/media/jet/jetcreator_manual.jd b/docs/html/guide/topics/media/jet/jetcreator_manual.jd
index 214c79e..c2df25b 100644
--- a/docs/html/guide/topics/media/jet/jetcreator_manual.jd
+++ b/docs/html/guide/topics/media/jet/jetcreator_manual.jd
@@ -21,7 +21,7 @@
 <p>JET works in conjunction with SONiVOX's
 Embedded Audio Synthesizer (EAS) which is the MIDI
 playback device for Android. Both the
-JET and EAS engines are integrated into the Android embedded platform through the 
+JET and EAS engines are integrated into the Android embedded platform through the
 {@link android.media.JetPlayer} class, as well
 as inherent in the JET Creator application. As such, the JET content author can
 be sure that the playback will sound exactly the same in both the JET Creator
@@ -387,34 +387,34 @@
 you first launch JET Creator you are presented with an open dialog like the
 following.</p>
 
- 
+
 
 <p><img border=0 width=450 height=285
 src="{@docRoot}images/jet/jc_open_dlg.png"
 </p>
 
- 
 
- 
+
+
 
 <p>  <b>Open</b> will open an existing .jtc (JET Creator file) file. Use the browser
 button to browse to the directory where you have saved your .jtc file.</p>
 
- 
+
 
 <p>  <b>New</b> will create a new .jtc file.</p>
 
- 
+
 
 <p>  <b>Import</b> will import a JET Archive (.zip) file.</p>
 
- 
+
 
 <p>  <b>Cancel</b> will cancel the dialog and exit the application.</p>
 
- 
 
- 
+
+
 
 <h1>5 Main Window </h1>
 
@@ -457,16 +457,16 @@
 <p>The buttons along the left side of main
 window do the following:</p>
 
-<p>Add: 
+<p>Add:
 Displays the segment or event window for adding a new segment or event</p>
 
-<p>Revise: 
+<p>Revise:
 Displays the segment or event window for updating an existing segment or event</p>
 
-<p>Delete: 
+<p>Delete:
 Deletes the selected segment or event (will ask for confirmation)</p>
 
-<p>Move: 
+<p>Move:
 Displays the move window which allows you to move selected segments or events
 in time</p>
 
@@ -476,11 +476,11 @@
 <p>Dequeue All:   Dequeues
 (deselects) all segments</p>
 
-<p>Play: 
+<p>Play:
 Starts playback of all queued segments. This button changes to Stop if any
 segments are playing</p>
 
-<p>Audition: 
+<p>Audition:
 Displays the Audition window (see below)</p>
 
 
diff --git a/docs/html/guide/topics/media/jetplayer.jd b/docs/html/guide/topics/media/jetplayer.jd
index f3d55f9..0f32121 100644
--- a/docs/html/guide/topics/media/jetplayer.jd
+++ b/docs/html/guide/topics/media/jetplayer.jd
@@ -1,5 +1,5 @@
 page.title=JetPlayer
-parent.title=Multimedia and Camera 
+parent.title=Multimedia and Camera
 parent.link=index.html
 @jd:body
 
diff --git a/docs/html/guide/topics/processes/process-lifecycle.jd b/docs/html/guide/topics/processes/process-lifecycle.jd
index 0380f94..47ca1ec 100644
--- a/docs/html/guide/topics/processes/process-lifecycle.jd
+++ b/docs/html/guide/topics/processes/process-lifecycle.jd
@@ -48,7 +48,7 @@
   at the top of the screen that the user is interacting with (its
   {@link android.app.Activity#onResume} method has been called).</li>
   <li> It has a {@link android.content.BroadcastReceiver} that is currently running
-  (its {@link android.content.BroadcastReceiver#onReceive 
+  (its {@link android.content.BroadcastReceiver#onReceive
   BroadcastReceiver.onReceive()} method is executing).</li>
   <li>It has a {@link android.app.Service} that is currently executing code
   in one of its callbacks ({@link android.app.Service#onCreate Service.onCreate()},
diff --git a/docs/html/guide/topics/providers/calendar-provider.jd b/docs/html/guide/topics/providers/calendar-provider.jd
index 3cd4511..485f3c1 100644
--- a/docs/html/guide/topics/providers/calendar-provider.jd
+++ b/docs/html/guide/topics/providers/calendar-provider.jd
@@ -42,7 +42,7 @@
       <li><a href="#intent-view">Using intents to view calendar data</a></li>
     </ol>
   </li>
-  
+
   <li><a href="#sync-adapter">Sync Adapters</a></li>
 </ol>
 
@@ -63,8 +63,8 @@
 
 <p>The Calender Provider API can be used by applications and sync adapters. The
 rules vary depending on what type of program is making the calls. This document
-focuses primarily on using the Calendar Provider API as an application. For 
-a discussion of how sync adapters are different, see 
+focuses primarily on using the Calendar Provider API as an application. For
+a discussion of how sync adapters are different, see
 <a href="#sync-adapter">Sync Adapters</a>.</p>
 
 
@@ -79,17 +79,17 @@
 
 <h2 id="overview">Basics</h2>
 
-<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Content providers</a> store data and make it accessible to 
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Content providers</a> store data and make it accessible to
 applications. The content providers offered by the Android platform (including the Calendar Provider) typically expose data as a set of tables based on a
 relational database model, where each row is a record and each column is data of
 a particular type and meaning. Through the Calendar Provider API, applications
 and sync adapters can get read/write access to the database tables that hold a
 user's calendar data.</p>
 
-<p>Every content provider exposes a public URI (wrapped as a 
-{@link android.net.Uri} 
+<p>Every content provider exposes a public URI (wrapped as a
+{@link android.net.Uri}
 object) that uniquely identifies its data set.  A content provider that controls
- multiple data sets (multiple tables) exposes a separate URI for each one.  All 
+ multiple data sets (multiple tables) exposes a separate URI for each one.  All
 URIs for providers begin with the string &quot;content://&quot;.  This
 identifies the data as being controlled by a content provider. The Calendar
 Provider defines constants for the URIs for each of its classes (tables). These
@@ -113,26 +113,26 @@
   </tr>
   <tr>
     <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
-    
-    <td>This table holds 
+
+    <td>This table holds
 the calendar-specific information. Each  row in this table contains the details for
 a single calendar, such as the  name, color, sync information, and so on.</td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Events}</td>
-    
+
     <td>This table holds the
 event-specific information. Each row  in this table has the information for a single
 event&mdash;for example, event title, location, start time, end
 time, and so on. The event can occur one-time or can recur multiple times. Attendees,
-reminders, and extended  properties are stored in separate tables. 
-They each have an {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+reminders, and extended  properties are stored in separate tables.
+They each have an {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
 that references the {@link android.provider.BaseColumns#_ID} in the Events table.</td>
 
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances}</td>
-    
+
     <td>This table holds the
 start and end time for each occurrence of an event. Each row in this table
 represents a single event occurrence. For one-time events there is a 1:1 mapping
@@ -141,7 +141,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Attendees}</td>
-    
+
     <td>This table holds the
 event attendee (guest) information. Each row represents a single guest of an
 event. It specifies the type of guest and the guest's attendance response
@@ -149,17 +149,17 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Reminders}</td>
-    
+
     <td>This table holds the
 alert/notification data. Each row represents a single alert for an event. An
 event can have multiple reminders. The maximum number of reminders per event is
-specified in 
-{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}, 
+specified in
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
 which is set by the sync adapter that
 owns  the given calendar. Reminders are specified in minutes before the event
 and have a method that determines how the user will be alerted.</td>
   </tr>
-  
+
 </table>
 
 <p>The Calendar Provider API is designed to be flexible and powerful. At the
@@ -178,9 +178,9 @@
 
 
 <li><strong>Sync adapters.</strong> A sync adapter synchronizes the calendar data
-on a user's device with another server or data source. In the 
+on a user's device with another server or data source. In the
 {@link android.provider.CalendarContract.Calendars} and
-{@link android.provider.CalendarContract.Events} tables, 
+{@link android.provider.CalendarContract.Events} tables,
 there are columns that are reserved for the sync adapters to use.
 The provider and applications should not modify them. In fact, they are not
 visible unless they are accessed as a sync adapter. For more information about
@@ -209,9 +209,9 @@
 
 <h2 id="calendar">Calendars Table</h2>
 
-<p>The {@link android.provider.CalendarContract.Calendars} table contains details 
+<p>The {@link android.provider.CalendarContract.Calendars} table contains details
 for individual calendars. The following
-Calendars columns are writable by both an application and a <a href="#sync-adapter">sync adapter</a>. 
+Calendars columns are writable by both an application and a <a href="#sync-adapter">sync adapter</a>.
 For a full list of supported fields, see the
 {@link android.provider.CalendarContract.Calendars} reference.</p>
 <table>
@@ -229,7 +229,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
-    
+
     <td>A boolean indicating whether the calendar is selected to be displayed. A
 value of 0 indicates that events associated with this calendar should not be
 shown.  A value of 1 indicates that events associated with this calendar should
@@ -240,7 +240,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
-    
+
     <td>A boolean indicating whether the calendar should be synced and have its
 events stored on the device. A value of 0 says do not sync this calendar or
 store its events on the device.  A value of 1 says sync events for this calendar
@@ -253,8 +253,8 @@
 <p>Here is an example that shows how to get the calendars that are owned by a particular
 user. For simplicity's sake, in this example the query operation is shown in the
 user interface thread ("main thread"). In practice, this should be done in an asynchronous
-thread instead of on the main thread. For more discussion, see 
-<a href="{@docRoot}guide/components/loaders.html">Loaders</a>. If you are not just 
+thread instead of on the main thread. For more discussion, see
+<a href="{@docRoot}guide/components/loaders.html">Loaders</a>. If you are not just
 reading data but modifying it, see {@link android.content.AsyncQueryHandler}.
 </p>
 
@@ -268,18 +268,18 @@
     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>Why must you include
 ACCOUNT_TYPE?</h3> <p>If you query on a {@link
 android.provider.CalendarContract.Calendars#ACCOUNT_NAME
-Calendars.ACCOUNT_NAME}, you must also include 
+Calendars.ACCOUNT_NAME}, you must also include
 {@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
 in the selection. That is because a given account is
 only considered unique given both its <code>ACCOUNT_NAME</code> and its
@@ -289,7 +289,7 @@
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} for calendars not
 associated with a device account. {@link
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} accounts do not get
-synced.</p> </div> </div> 
+synced.</p> </div> </div>
 
 
 <p> In the next part of the example, you construct your query. The selection
@@ -301,59 +301,59 @@
 has viewed, not just calendars the user owns, omit the <code>OWNER_ACCOUNT</code>.
 The query returns a {@link android.database.Cursor}
 object that you can use to traverse the result set returned by the database
-query. For more discussion of using queries in content providers, 
+query. For more discussion of using queries in content providers,
 see <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.</p>
 
 
 <pre>// Run query
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
-Uri uri = Calendars.CONTENT_URI;   
-String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+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. 
+        "sampleuser@gmail.com"};
+// Submit the query and get a Cursor object back.
 cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
 
 <p>This next section uses the cursor to step through the result set. It uses the
 constants that were set up at the beginning of the example to return the values
 for each field.</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">Modifying a calendar</h3>
 
 <p>To perform an update of an calendar, you can provide the {@link
 android.provider.BaseColumns#_ID} of the calendar either as an appended ID to
-the Uri 
+the Uri
 
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
 or as the first selection item. The  selection
 should start with <code>&quot;_id=?&quot;</code>, and the first
 <code>selectionArg</code> should be  the {@link
-android.provider.BaseColumns#_ID} of the calendar. 
+android.provider.BaseColumns#_ID} of the calendar.
 You can also do updates by encoding the ID in the URI. This example changes a
-calendar's display name using the 
-({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+calendar's display name using the
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
 approach:</p>
 
 <pre>private static final String DEBUG_TAG = "MyActivity";
@@ -375,7 +375,7 @@
 the calendar insertion as a sync adapter, using an {@link
 android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} of {@link
 android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
-{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
 is a special account type for calendars that are not
 associated with a device account. Calendars of this type are not synced to a server. For a
 discussion of sync adapters, see <a href="#sync-adapter">Sync Adapters</a>.</p>
@@ -434,7 +434,7 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
-    
+
     <td>The duration of the event in <a
 href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> format.
 For example, a value of <code>&quot;PT1H&quot;</code> states that the event
@@ -445,41 +445,41 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
-    
+
     <td>A value of 1 indicates this event occupies the entire day, as defined by
 the local time zone. A value of 0 indicates it is a regular event that may start
 and end at any time during a day.</td>
 
-    
+
   </tr>
-  
-  
+
+
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
-    
+
     <td>The recurrence rule for the event format. For
 example, <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. You can find
 more examples <a
 href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">here</a>.</td>
-    
+
   </tr>
-  
+
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
-    <td>The recurrence dates for the event. 
-    You typically use {@link android.provider.CalendarContract.EventsColumns#RDATE} 
-    in conjunction with {@link android.provider.CalendarContract.EventsColumns#RRULE} 
+    <td>The recurrence dates for the event.
+    You typically use {@link android.provider.CalendarContract.EventsColumns#RDATE}
+    in conjunction with {@link android.provider.CalendarContract.EventsColumns#RRULE}
     to define an aggregate set of
 repeating occurrences. For more discussion, see the <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>If this event counts as busy time or is free time that can be 
+
+    <td>If this event counts as busy time or is free time that can be
 scheduled over. </td>
-    
+
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
@@ -519,11 +519,11 @@
 android.content.Intent#ACTION_INSERT INSERT} Intent, described in <a
 href="#intent-insert">Using an intent to insert an event</a>&mdash;in that
 scenario, a default time zone is supplied.</li>
-  
+
   <li>For non-recurring events, you must include {@link
 android.provider.CalendarContract.EventsColumns#DTEND}. </li>
-  
-  
+
+
   <li>For recurring events, you must include a {@link
 android.provider.CalendarContract.EventsColumns#DURATION} in addition to  {@link
 android.provider.CalendarContract.EventsColumns#RRULE} or {@link
@@ -532,9 +532,9 @@
 android.content.Intent#ACTION_INSERT INSERT} Intent, described in <a
 href="#intent-insert">Using an intent to insert an event</a>&mdash;in that
 scenario, you can use an {@link
-android.provider.CalendarContract.EventsColumns#RRULE} in conjunction with {@link android.provider.CalendarContract.EventsColumns#DTSTART} and {@link android.provider.CalendarContract.EventsColumns#DTEND}, and the Calendar application 
+android.provider.CalendarContract.EventsColumns#RRULE} in conjunction with {@link android.provider.CalendarContract.EventsColumns#DTSTART} and {@link android.provider.CalendarContract.EventsColumns#DTEND}, and the Calendar application
 converts it to a duration automatically.</li>
-  
+
 </ul>
 
 <p>Here is an example of inserting an event. This is being performed in the UI
@@ -545,8 +545,8 @@
 
 <pre>
 long calID = 3;
-long startMillis = 0; 
-long endMillis = 0;     
+long startMillis = 0;
+long endMillis = 0;
 Calendar beginTime = Calendar.getInstance();
 beginTime.set(2012, 9, 14, 7, 30);
 startMillis = beginTime.getTimeInMillis();
@@ -567,7 +567,7 @@
 
 // get the event ID that is the last element in the Uri
 long eventID = Long.parseLong(uri.getLastPathSegment());
-// 
+//
 // ... do something with event ID
 //
 //</pre>
@@ -584,14 +584,14 @@
 that you use an {@link android.content.Intent#ACTION_EDIT EDIT} Intent, as
 described in <a href="#intent-edit">Using an intent to edit an  event</a>.
 However, if you need to, you can edit events directly. To perform an update of
-an Event, you can provide the <code>_ID</code> of the 
+an Event, you can provide the <code>_ID</code> of the
 event either as an appended ID to the Uri ({@link
-android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
-or as the first selection item. 
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+or as the first selection item.
 The selection should start with <code>&quot;_id=?&quot;</code>, and the first
 <code>selectionArg</code> should be  the <code>_ID</code> of the event. You can
 also do updates using a selection with no ID. Here is an example of updating an
-event. It changes the title of the event using the 
+event. It changes the title of the event using the
 {@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
 approach:</p>
 
@@ -604,7 +604,7 @@
 ContentValues values = new ContentValues();
 Uri updateUri = null;
 // The new title for the event
-values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+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>
@@ -631,22 +631,22 @@
 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);  
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);
 </pre>
 
 <h2 id="attendees">Attendees Table</h2>
 
 <p>Each row of the {@link android.provider.CalendarContract.Attendees} table
-represents a single attendee or guest of an event. Calling 
-{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 
+represents a single attendee or guest of an event. Calling
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
 returns a list of attendees for  the
-event with the given {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}. 
-This  {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+event with the given {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.
+This  {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
 must match the {@link
-android.provider.BaseColumns#_ID} of a particular event.</p> 
+android.provider.BaseColumns#_ID} of a particular event.</p>
 
 <p>The following table lists the
-writable fields. When inserting a new attendee, you must include all of them 
+writable fields. When inserting a new attendee, you must include all of them
 except <code>ATTENDEE_NAME</code>.
 </p>
 
@@ -704,7 +704,7 @@
 <h3 id="add-attendees">Adding Attendees</h3>
 
 <p>Here is an example that adds a single attendee to an event. Note that the
-{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
 is required:</p>
 
 <pre>
@@ -724,17 +724,17 @@
 <h2 id="reminders">Reminders Table</h2>
 
 <p>Each row of the {@link android.provider.CalendarContract.Reminders} table
-represents a single reminder for an event. Calling 
+represents a single reminder for an event. Calling
 {@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}  returns a list of reminders for the
-event with the given 
+event with the given
 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.</p>
 
 
 <p>The following table lists the writable fields for reminders. All of them must
 be included when inserting a new reminder. Note that sync adapters specify the
 types of reminders they support in the {@link
-android.provider.CalendarContract.Calendars} table. See 
-{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS} 
+android.provider.CalendarContract.Calendars} table. See
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
 for details.</p>
 
 
@@ -779,16 +779,16 @@
 
 <h2 id="instances">Instances Table</h2>
 
-<p>The 
+<p>The
 {@link android.provider.CalendarContract.Instances} table holds the
 start and end time for occurrences of an event. Each row in this table
 represents a single event occurrence. The instances table is not writable and only
 provides a  way to query event occurrences. </p>
 
-<p>The following table lists some of the fields you can query on for an instance. Note 
-that time zone is defined by 
-{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 
-and 
+<p>The following table lists some of the fields you can query on for an instance. Note
+that time zone is defined by
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+and
 {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
 
 
@@ -807,18 +807,18 @@
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
-    
+
     <td>The Julian end day of the instance, relative to the Calendar's time
-zone. 
-    
+zone.
+
 </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
-    
+
     <td>The end minute of the instance measured from midnight in the
 Calendar's time zone.</td>
-    
+
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
@@ -826,16 +826,16 @@
   </tr>
     <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
-    <td>The Julian start day of the instance, relative to the Calendar's time zone. 
+    <td>The Julian start day of the instance, relative to the Calendar's time zone.
  </td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
-    
+
     <td>The start minute of the instance measured from midnight, relative to the
-Calendar's time zone. 
+Calendar's time zone.
 </td>
-    
+
   </tr>
 
 </table>
@@ -846,7 +846,7 @@
 in the URI. In this example, {@link android.provider.CalendarContract.Instances}
 gets access to the {@link
 android.provider.CalendarContract.EventsColumns#TITLE} field through its
-implementation of the {@link android.provider.CalendarContract.EventsColumns} interface. 
+implementation of the {@link android.provider.CalendarContract.EventsColumns} interface.
 In other words, {@link
 android.provider.CalendarContract.EventsColumns#TITLE} is returned through a
 database view, not through querying the raw {@link
@@ -859,7 +859,7 @@
     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;
@@ -874,7 +874,7 @@
 Calendar endTime = Calendar.getInstance();
 endTime.set(2011, 10, 24, 8, 0);
 long endMillis = endTime.getTimeInMillis();
-  
+
 Cursor cur = null;
 ContentResolver cr = getContentResolver();
 
@@ -889,28 +889,28 @@
 ContentUris.appendId(builder, endMillis);
 
 // Submit the query
-cur =  cr.query(builder.build(), 
-    INSTANCE_PROJECTION, 
-    selection, 
-    selectionArgs, 
+cur =  cr.query(builder.build(),
+    INSTANCE_PROJECTION,
+    selection,
+    selectionArgs,
     null);
-   
+
 while (cur.moveToNext()) {
     String title = null;
     long eventID = 0;
-    long beginVal = 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); 
+
+    // Do something with the values.
+    Log.i(DEBUG_TAG, "Event:  " + title);
     Calendar calendar = Calendar.getInstance();
-    calendar.setTimeInMillis(beginVal);  
+    calendar.setTimeInMillis(beginVal);
     DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
-    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));
     }
  }</pre>
 
@@ -928,9 +928,9 @@
     <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>
-    You can also refer to the URI with 
-{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}. 
-For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Using intents to view calendar data</a>. 
+    You can also refer to the URI with
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}.
+For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Using intents to view calendar data</a>.
 
     </td>
     <td>Open calendar to the time specified by <code>&lt;ms_since_epoch&gt;</code>.</td>
@@ -941,11 +941,11 @@
 
      </td>
     <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-    
-    You can also refer to the URI with 
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+
+    You can also refer to the URI with
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
 For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Using intents to view calendar data</a>.
-    
+
     </td>
     <td>View the event specified by <code>&lt;event_id&gt;</code>.</td>
 
@@ -958,12 +958,12 @@
   <tr>
     <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
     <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
-    
-  You can also refer to the URI with 
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+
+  You can also refer to the URI with
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
 For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Using an intent to edit an event</a>.
-    
-    
+
+
     </td>
     <td>Edit the event specified by <code>&lt;event_id&gt;</code>.</td>
 
@@ -978,11 +978,11 @@
     <br>
     {@link android.content.Intent#ACTION_INSERT INSERT} </td>
     <td><p><code>content://com.android.calendar/events</code></p>
-    
-   You can also refer to the URI with 
-{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+
+   You can also refer to the URI with
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.
 For an example of using this intent, see <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Using an intent to insert an event</a>.
-    
+
     </td>
 
     <td>Create an event.</td>
@@ -1002,7 +1002,7 @@
     <td>Name for the event.</td>
   </tr>
   <tr>
-  
+
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
 CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
     <td>Event begin time in milliseconds from the epoch.</td>
@@ -1010,25 +1010,25 @@
   <tr>
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
 CalendarContract.EXTRA_EVENT_END_TIME}</td>
-    
+
     <td>Event end time in milliseconds from the epoch.</td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
 CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
-    
+
     <td>A boolean that indicates that an event is all day. Value can be
 <code>true</code> or <code>false</code>.</td> </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
 Events.EVENT_LOCATION}</td>
-    
+
     <td>Location of the event.</td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
 Events.DESCRIPTION}</td>
-    
+
     <td>Event description.</td>
   </tr>
   <tr>
@@ -1045,16 +1045,16 @@
     <td>
     {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
 Events.ACCESS_LEVEL}</td>
-    
+
     <td>Whether the event is private or public.</td>
   </tr>
   <tr>
     <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
 Events.AVAILABILITY}</td>
-    
+
     <td>If this event counts as busy time or is free time that can be scheduled over.</td>
-    
-</table> 
+
+</table>
 <p>The following sections describe how to use these intents.</p>
 
 
@@ -1066,23 +1066,23 @@
 android.Manifest.permission#WRITE_CALENDAR} permission included in its <a
 href="#manifest">manifest file</a>.</p>
 
-  
+
 <p>When users run an application that uses this approach, the application sends
 them to the Calendar to finish adding the event. The {@link
 android.content.Intent#ACTION_INSERT INSERT} Intent uses extra fields to
 pre-populate a form with the details of the event in the Calendar. Users can
 then cancel the event, edit the form as needed, or save the event to their
 calendars.</p>
-  
+
 
 
 <p>Here is a code snippet that schedules an event on January 19, 2012, that runs
 from 7:30 a.m. to 8:30 a.m. Note the following about this code snippet:</p>
 
 <ul>
-  <li>It specifies {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 
+  <li>It specifies {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
   as the Uri.</li>
-  
+
   <li>It uses the {@link
 android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
 CalendarContract.EXTRA_EVENT_BEGIN_TIME} and {@link
@@ -1090,10 +1090,10 @@
 CalendarContract.EXTRA_EVENT_END_TIME} extra fields to pre-populate the form
 with the time of the event. The values  for these times must be in UTC milliseconds
 from the epoch.</li>
-  
+
   <li>It uses the {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
 extra field to provide a comma-separated list of invitees, specified by email address.</li>
-  
+
 </ul>
 <pre>
 Calendar beginTime = Calendar.getInstance();
@@ -1166,18 +1166,18 @@
 
 <ul>
   <li>A sync adapter needs to specify that it's a sync adapter by setting {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} to <code>true</code>.</li>
-  
-  
+
+
   <li>A sync adapter needs to provide an {@link
 android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} and an {@link
 android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} as query parameters in the URI. </li>
-  
+
   <li>A sync adapter has write access to more columns than an application or widget.
-  For example, an application can only modify a few characteristics of a calendar, 
+  For example, an application can only modify a few characteristics of a calendar,
   such as its name, display name, visibility setting, and whether the calendar is
   synced. By comparison, a sync adapter can access not only those columns, but many others,
   such as calendar color, time zone, access level, location, and so on.
-However, a sync adapter is restricted to the <code>ACCOUNT_NAME</code> and 
+However, a sync adapter is restricted to the <code>ACCOUNT_NAME</code> and
 <code>ACCOUNT_TYPE</code> it specified.</li> </ul>
 
 <p>Here is a helper method you can use to return a URI for use with a sync adapter:</p>
@@ -1188,5 +1188,5 @@
         .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
  }
 </pre>
-<p>For a sample implementation of a sync adapter (not specifically related to Calendar), see 
+<p>For a sample implementation of a sync adapter (not specifically related to Calendar), see
 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index b7ae3d2..37df4e9 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -238,7 +238,7 @@
     For example, to get a list of the words and their locales from the User Dictionary Provider,
     you call {@link android.content.ContentResolver#query ContentResolver.query()}.
     The {@link android.content.ContentResolver#query query()} method calls the
-    {@link android.content.ContentProvider#query ContentProvider.query()} method defined by the 
+    {@link android.content.ContentProvider#query ContentProvider.query()} method defined by the
     User Dictionary Provider. The following lines of code show a
     {@link android.content.ContentResolver#query ContentResolver.query()} call:
 <p>
@@ -253,7 +253,7 @@
 </pre>
 <p>
     Table 2 shows how the arguments to
-    {@link android.content.ContentResolver#query 
+    {@link android.content.ContentResolver#query
     query(Uri,projection,selection,selectionArgs,sortOrder)} match an SQL SELECT statement:
 </p>
 <p class="table-caption">
@@ -361,8 +361,8 @@
 </p>
 <p class="note">
     For the sake of clarity, the code snippets in this section call
-    {@link android.content.ContentResolver#query ContentResolver.query()} on the "UI thread"". In 
-    actual code, however, you should do queries asynchronously on a separate thread. One way to do 
+    {@link android.content.ContentResolver#query ContentResolver.query()} on the "UI thread"". In
+    actual code, however, you should do queries asynchronously on a separate thread. One way to do
     this is to use the {@link android.content.CursorLoader} class, which is described
     in more detail in the <a href="{@docRoot}guide/components/loaders.html">
     Loaders</a> guide. Also, the lines of code are snippets only; they don't show a complete
@@ -430,7 +430,7 @@
 <p>
     The next snippet shows how to use
     {@link android.content.ContentResolver#query ContentResolver.query()}, using the User Dictionary
-    Provider as an example. A provider client query is similar to an SQL query, and it contains a 
+    Provider as an example. A provider client query is similar to an SQL query, and it contains a
     set of columns to return, a set of selection criteria, and a sort order.
 </p>
 <p>
@@ -440,8 +440,8 @@
 <p>
     The expression that specifies the rows to retrieve is split into a selection clause and
     selection arguments. The selection clause is a combination of logical and Boolean expressions,
-    column names, and values (the variable <code>mSelectionClause</code>). If you specify the 
-    replaceable parameter <code>?</code> instead of a value, the query method retrieves the value 
+    column names, and values (the variable <code>mSelectionClause</code>). If you specify the
+    replaceable parameter <code>?</code> instead of a value, the query method retrieves the value
     from the selection arguments array (the variable <code>mSelectionArgs</code>).
 </p>
 <p>
@@ -567,14 +567,14 @@
 <!-- Displaying the results -->
 <h3 id="DisplayResults">Displaying query results</h3>
 <p>
-    The {@link android.content.ContentResolver#query ContentResolver.query()} client method always 
-    returns a {@link android.database.Cursor} containing the columns specified by the query's 
-    projection for the rows that match the query's selection criteria. A 
-    {@link android.database.Cursor} object provides random read access to the rows and columns it 
-    contains. Using {@link android.database.Cursor} methods, you can iterate over the rows in the 
+    The {@link android.content.ContentResolver#query ContentResolver.query()} client method always
+    returns a {@link android.database.Cursor} containing the columns specified by the query's
+    projection for the rows that match the query's selection criteria. A
+    {@link android.database.Cursor} object provides random read access to the rows and columns it
+    contains. Using {@link android.database.Cursor} methods, you can iterate over the rows in the
     results, determine the data type of each column, get the data out of a column, and examine other
-    properties of the results. Some {@link android.database.Cursor} implementations automatically 
-    update the object when the provider's data changes, or trigger methods in an observer object 
+    properties of the results. Some {@link android.database.Cursor} implementations automatically
+    update the object when the provider's data changes, or trigger methods in an observer object
     when the {@link android.database.Cursor} changes, or both.
 </p>
 <p class="note">
@@ -705,14 +705,14 @@
 <p>
     To get the permissions needed to access a provider, an application requests them with a
 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
-    element in its manifest file. When the Android Package Manager installs the application, a user 
-    must approve all of the permissions the application requests. If the user approves all of them, 
+    element in its manifest file. When the Android Package Manager installs the application, a user
+    must approve all of the permissions the application requests. If the user approves all of them,
     Package Manager continues the installation; if the user doesn't approve them, Package Manager
     aborts the installation.
 </p>
 <p>
     The following
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
     element requests read access to the User Dictionary Provider:
 </p>
 <pre>
@@ -795,8 +795,8 @@
     To update a row, you use a {@link android.content.ContentValues} object with the updated
     values just as you do with an insertion, and selection criteria just as you do with a query.
     The client method you use is
-    {@link android.content.ContentResolver#update ContentResolver.update()}. You only need to add 
-    values to the {@link android.content.ContentValues} object for columns you're updating. If you 
+    {@link android.content.ContentResolver#update ContentResolver.update()}. You only need to add
+    values to the {@link android.content.ContentValues} object for columns you're updating. If you
     want to clear the contents of a column, set the value to <code>null</code>.
 </p>
 <p>
@@ -830,7 +830,7 @@
 </pre>
 <p>
     You should also sanitize user input when you call
-    {@link android.content.ContentResolver#update ContentResolver.update()}. To learn more about 
+    {@link android.content.ContentResolver#update ContentResolver.update()}. To learn more about
     this, read the section <a href="#Injection">Protecting against malicious input</a>.
 </p>
 <h3 id="Deleting">Deleting data</h3>
@@ -860,7 +860,7 @@
 </pre>
 <p>
     You should also sanitize user input when you call
-    {@link android.content.ContentResolver#delete ContentResolver.delete()}. To learn more about 
+    {@link android.content.ContentResolver#delete ContentResolver.delete()}. To learn more about
     this, read the section <a href="#Injection">Protecting against malicious input</a>.
 </p>
 <!-- Provider Data Types -->
@@ -948,9 +948,9 @@
     To access a provider in "batch mode",
     you create an array of {@link android.content.ContentProviderOperation} objects and then
     dispatch them to a content provider with
-    {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. You pass the 
-    content provider's <em>authority</em> to this  method, rather than a particular content URI. 
-    This allows each {@link android.content.ContentProviderOperation} object in the array to work 
+    {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. You pass the
+    content provider's <em>authority</em> to this  method, rather than a particular content URI.
+    This allows each {@link android.content.ContentProviderOperation} object in the array to work
     against a different table. A call to {@link android.content.ContentResolver#applyBatch
     ContentResolver.applyBatch()} returns an array of results.
 </p>
@@ -1013,7 +1013,7 @@
 <p>
     A provider defines URI permissions for content URIs in its manifest, using the
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
-    attribute of the 
+    attribute of the
 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
     element, as well as the
 <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
diff --git a/docs/html/guide/topics/providers/content-provider-creating.jd b/docs/html/guide/topics/providers/content-provider-creating.jd
index baa92e1..ec6909c 100755
--- a/docs/html/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html/guide/topics/providers/content-provider-creating.jd
@@ -422,7 +422,7 @@
          * 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
@@ -881,7 +881,7 @@
     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
-    Android Studio can auto-complete constant names from the contract class and display Javadoc for 
+    Android Studio can auto-complete constant names from the contract class and display Javadoc for
     the constants.
 </p>
 <p>
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/renderscript/compute.jd
index fc795ff..861c925 100755
--- a/docs/html/guide/topics/renderscript/compute.jd
+++ b/docs/html/guide/topics/renderscript/compute.jd
@@ -167,7 +167,7 @@
 </ul>
 
 <p>We strongly recommend using the Support Library APIs for accessing RenderScript because they
-  provide a wider range of device compatibility. Developers targeting specific versions of 
+  provide a wider range of device compatibility. Developers targeting specific versions of
   Android can use {@link android.renderscript} if necessary.</p>
 
 
diff --git a/docs/html/guide/topics/resources/accessing-resources.jd b/docs/html/guide/topics/resources/accessing-resources.jd
index b971238..953b274 100644
--- a/docs/html/guide/topics/resources/accessing-resources.jd
+++ b/docs/html/guide/topics/resources/accessing-resources.jd
@@ -264,8 +264,8 @@
     android:text=&quot;&#64;string/hello&quot; /&gt;
 </pre>
 
-<p class="note"><strong>Note:</strong> You should use string resources at 
-all times, so that your application can be localized for other languages. 
+<p class="note"><strong>Note:</strong> You should use string resources at
+all times, so that your application can be localized for other languages.
 For information about creating alternative
 resources (such as localized strings), see <a
 href="providing-resources.html#AlternativeResources">Providing Alternative
diff --git a/docs/html/guide/topics/resources/animation-resource.jd b/docs/html/guide/topics/resources/animation-resource.jd
index e5cac88..05582f0 100644
--- a/docs/html/guide/topics/resources/animation-resource.jd
+++ b/docs/html/guide/topics/resources/animation-resource.jd
@@ -12,7 +12,7 @@
         <ol>
           <li><a href="#Tween">Tween animation</a></li>
           <li><a href="#Frame">Frame animation</a></li>
-        </ol>      
+        </ol>
       </li>
     </ol>
     <h2>See also</h2>
@@ -94,7 +94,7 @@
 &lt;/set&gt;
 </pre>
 
-<p>The file must have a single root element: either 
+<p>The file must have a single root element: either
 <code>&lt;set&gt;</code>, <code>&lt;objectAnimator&gt;</code>, or <code>&lt;valueAnimator&gt;</code>. You can
 group animation elements together inside the <code>&lt;set&gt;</code> element, including other
 <code>&lt;set&gt;</code> elements.
@@ -109,7 +109,7 @@
     <code>&lt;valueAnimator&gt;</code>, or other <code>&lt;set&gt;</code> elements).  Represents
     an {@link android.animation.AnimatorSet}.
     <p>You can specify nested <code>&lt;set&gt;</code> tags to further
-    group animations together. Each <code>&lt;set&gt;</code> can define its own 
+    group animations together. Each <code>&lt;set&gt;</code> can define its own
     <code>ordering</code> attribute.</p>
 
       <p class="caps">attributes:</p>
@@ -119,11 +119,11 @@
         </dt>
         <dd>
           <em>Keyword</em>. Specifies the play ordering of animations in this set.
-          <table> 
-            <tr><th>Value</th><th>Description</th></tr> 
-            <tr><td><code>sequentially</code></td><td>Play animations in this set sequentially</td></tr> 
-            <tr><td><code>together</code> (default)</td><td>Play animations in this set at the same time.</td></tr> 
-          </table> 
+          <table>
+            <tr><th>Value</th><th>Description</th></tr>
+            <tr><td><code>sequentially</code></td><td>Play animations in this set sequentially</td></tr>
+            <tr><td><code>together</code> (default)</td><td>Play animations in this set at the same time.</td></tr>
+          </table>
         </dd>
       </dl>
     </dd>
@@ -131,11 +131,11 @@
   <dt id="obj-animator-element"><code>&lt;objectAnimator&gt;</code></dt>
     <dd>Animates a specific property of an object over a specific amount of time. Represents
     an {@link android.animation.ObjectAnimator}.</p>
-    
+
       <p class="caps">attributes:</p>
       <dl class="atn-list">
         <dt>
-          <code>android:propertyName</code> 
+          <code>android:propertyName</code>
         </dt>
         <dd>
           <em>String</em>. <strong>Required</strong>. The object's property to animate, referenced by its name. For example you can specify
@@ -206,11 +206,11 @@
         <dd>
           <em>Keyword</em>. Do not specify this attribute if the value is a color. The animation framework automatically handles color
           values
-          <table> 
-            <tr><th>Value</th><th>Description</th></tr> 
-            <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr> 
-            <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr> 
-          </table> 
+          <table>
+            <tr><th>Value</th><th>Description</th></tr>
+            <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr>
+            <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr>
+          </table>
         </dd>
 
       </dl>
@@ -279,11 +279,11 @@
         <dd>
           <em>Keyword</em>. Do not specify this attribute if the value is a color. The animation framework automatically handles color
           values.
-          <table> 
-            <tr><th>Value</th><th>Description</th></tr> 
-            <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr> 
-            <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr> 
-          </table> 
+          <table>
+            <tr><th>Value</th><th>Description</th></tr>
+            <tr><td><code>intType</code></td><td>Specifies that the animated values are integers</td></tr>
+            <tr><td><code>floatType</code> (default)</td><td>Specifies that the animated values are floats</td></tr>
+          </table>
         </dd>
 
       </dl>
@@ -320,7 +320,7 @@
   before starting the animation set. Calling {@link android.animation.AnimatorSet#setTarget
   setTarget()} sets a single target object for all children of the {@link
   android.animation.AnimatorSet} as a convenience. The following code shows how to do this:</p>
-  
+
 <pre>
 AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
     R.anim.property_animator);
diff --git a/docs/html/guide/topics/resources/layout-resource.jd b/docs/html/guide/topics/resources/layout-resource.jd
index 8c5708a..ab381c3 100644
--- a/docs/html/guide/topics/resources/layout-resource.jd
+++ b/docs/html/guide/topics/resources/layout-resource.jd
@@ -33,16 +33,17 @@
 <dt>syntax:</dt>
 <dd>
 <pre class="stx">
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;<a href="#viewgroup-element"><em>ViewGroup</em></a> xmlns:android="http://schemas.android.com/apk/res/android"
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;<a href="#viewgroup-element"><em>ViewGroup</em></a>
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@[+][<em>package</em>:]id/<em>resource_name</em>"
-    android:layout_height=["<em>dimension</em>" | "fill_parent" | "wrap_content"]
-    android:layout_width=["<em>dimension</em>" | "fill_parent" | "wrap_content"]
+    android:layout_height=["<em>dimension</em>" | "match_parent" | "wrap_content"]
+    android:layout_width=["<em>dimension</em>" | "match_parent" | "wrap_content"]
     [<em>ViewGroup-specific attributes</em>] &gt;
     &lt;<a href="#view-element"><em>View</em></a>
         android:id="@[+][<em>package</em>:]id/<em>resource_name</em>"
-        android:layout_height=["<em>dimension</em>" | "fill_parent" | "wrap_content"]
-        android:layout_width=["<em>dimension</em>" | "fill_parent" | "wrap_content"]
+        android:layout_height=["<em>dimension</em>" | "match_parent" | "wrap_content"]
+        android:layout_width=["<em>dimension</em>" | "match_parent" | "wrap_content"]
         [<em>View-specific attributes</em>] &gt;
         &lt;<a href="#requestfocus-element">requestFocus</a>/&gt;
     &lt;/<em>View</em>&gt;
@@ -82,15 +83,17 @@
         </dd>
         <dt><code>android:layout_height</code></dt>
         <dd><em>Dimension or keyword</em>. <strong>Required</strong>. The height for the group, as a
-dimension value (or <a
-href="more-resources.html#Dimension">dimension resource</a>) or a keyword ({@code "fill_parent"}
-or {@code "wrap_content"}). See the <a href="#layoutvalues">valid values</a> below.
+dimension value (or
+<a href="more-resources.html#Dimension">dimension resource</a>) or a keyword
+({@code "match_parent"} or {@code "wrap_content"}). See the <a href=
+"#layoutvalues">valid values</a> below.
         </dd>
         <dt><code>android:layout_width</code></dt>
         <dd><em>Dimension or keyword</em>. <strong>Required</strong>. The width for the group, as a
-dimension value (or <a
-href="more-resources.html#Dimension">dimension resource</a>) or a keyword ({@code "fill_parent"}
-or {@code "wrap_content"}). See the <a href="#layoutvalues">valid values</a> below.
+dimension value (or
+<a href="more-resources.html#Dimension">dimension resource</a>) or a keyword
+({@code "match_parent"} or {@code "wrap_content"}). See the <a href=
+"#layoutvalues">valid values</a> below.
         </dd>
       </dl>
       <p>More attributes are supported by the {@link android.view.ViewGroup}
@@ -114,15 +117,17 @@
         </dd>
         <dt><code>android:layout_height</code></dt>
         <dd><em>Dimension or keyword</em>. <strong>Required</strong>. The height for the element, as
-a dimension value (or <a
-href="more-resources.html#Dimension">dimension resource</a>) or a keyword ({@code "fill_parent"}
-or {@code "wrap_content"}). See the <a href="#layoutvalues">valid values</a> below.
+a dimension value (or
+<a href="more-resources.html#Dimension">dimension resource</a>) or a keyword
+({@code "match_parent"} or {@code "wrap_content"}). See the <a href=
+"#layoutvalues">valid values</a> below.
         </dd>
         <dt><code>android:layout_width</code></dt>
         <dd><em>Dimension or keyword</em>. <strong>Required</strong>. The width for the element, as
-a dimension value (or <a
-href="more-resources.html#Dimension">dimension resource</a>) or a keyword ({@code "fill_parent"}
-or {@code "wrap_content"}). See the <a href="#layoutvalues">valid values</a> below.
+a dimension value (or
+<a href="more-resources.html#Dimension">dimension resource</a>) or a keyword
+({@code "match_parent"} or {@code "wrap_content"}). See the <a href=
+"#layoutvalues">valid values</a> below.
         </dd>
       </dl>
       <p>More attributes are supported by the {@link android.view.View}
@@ -221,9 +226,6 @@
 deprecate <code>fill_parent</code>.</td>
     </tr>
     <tr>
-      <td><code>fill_parent</code></td>
-      <td>Sets the dimension to match that of the parent element.</td>
-    </tr><tr>
       <td><code>wrap_content</code></td>
       <td>Sets the dimension only to the size required to fit the content of this element.</td>
     </tr>
@@ -245,8 +247,8 @@
 <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:layout_width="match_parent"
+              android:layout_height="match_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
               android:layout_width="wrap_content"
@@ -279,4 +281,4 @@
 </ul>
 </dd>
 
-</dl>
+</dl>
\ No newline at end of file
diff --git a/docs/html/guide/topics/resources/more-resources.jd b/docs/html/guide/topics/resources/more-resources.jd
index 1afbf70..8488cde 100644
--- a/docs/html/guide/topics/resources/more-resources.jd
+++ b/docs/html/guide/topics/resources/more-resources.jd
@@ -760,7 +760,7 @@
     </dd>
 
 </dl>
-</dd> 
+</dd>
 
 <dt>example:</dt>
 <dd>
@@ -781,7 +781,7 @@
     </dd>
 
   </dl>
-</dd> 
+</dd>
 
 
 <dt>see also:</dt>
diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd
index c919ed5..80a989a 100644
--- a/docs/html/guide/topics/resources/providing-resources.jd
+++ b/docs/html/guide/topics/resources/providing-resources.jd
@@ -523,7 +523,7 @@
 application will crash at runtime (for example, if all layout resources are tagged with the {@code
 xlarge} qualifier, but the device is a normal-size screen).</p>
         <p><em>Added in API level 4.</em></p>
-        
+
         <p>See <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
 Screens</a> for more information.</p>
         <p>Also see the {@link android.content.res.Configuration#screenLayout} configuration field,
@@ -608,7 +608,7 @@
         </ul>
         <p><em>Added in API level 8, television added in API 13, watch added in API 20.</em></p>
         <p>For information about how your app can respond when the device is inserted into or
-        removed from a dock, read <a 
+        removed from a dock, read <a
         href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determining
 and Monitoring the Docking State and Type</a>.</p>
         <p>This can change during the life of your application if the user places the device in a
@@ -659,8 +659,8 @@
 Level 8</em></li>
           <li>{@code xxhdpi}: Extra-extra-high-density screens; approximately 480dpi. <em>Added in API
 Level 16</em></li>
-          <li>{@code xxxhdpi}: Extra-extra-extra-high-density uses (launcher icon only, see the 
-            <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">note</a> 
+          <li>{@code xxxhdpi}: Extra-extra-extra-high-density uses (launcher icon only, see the
+            <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">note</a>
             in <em>Supporting Multiple Screens</em>); approximately 640dpi. <em>Added in API
 Level 18</em></li>
           <li>{@code nodpi}: This can be used for bitmap resources that you do not want to be scaled
diff --git a/docs/html/guide/topics/resources/runtime-changes.jd b/docs/html/guide/topics/resources/runtime-changes.jd
index 8781d20..2e6f9b7 100644
--- a/docs/html/guide/topics/resources/runtime-changes.jd
+++ b/docs/html/guide/topics/resources/runtime-changes.jd
@@ -84,12 +84,12 @@
 <p>To retain stateful objects in a fragment during a runtime configuration change:</p>
 
 <ol>
-  <li>Extend the {@link android.app.Fragment} class and declare references to your stateful 
+  <li>Extend the {@link android.app.Fragment} class and declare references to your stateful
       objects.</li>
   <li>Call {@link android.app.Fragment#setRetainInstance(boolean)} when the fragment is created.
       </li>
   <li>Add the fragment to your activity.</li>
-  <li>Use {@link android.app.FragmentManager} to retrieve the fragment when the activity is 
+  <li>Use {@link android.app.FragmentManager} to retrieve the fragment when the activity is
       restarted.</li>
 </ol>
 
@@ -127,8 +127,8 @@
 means that your application maintains a hold on them and they cannot be garbage-collected, so
 lots of memory can be lost.)</p>
 
-<p>Then use {@link android.app.FragmentManager} to add the fragment to the activity. 
-You can obtain the data object from the fragment when the activity starts again during runtime 
+<p>Then use {@link android.app.FragmentManager} to add the fragment to the activity.
+You can obtain the data object from the fragment when the activity starts again during runtime
 configuration changes. For example, define your activity as follows:</p>
 
 <pre>
@@ -170,7 +170,7 @@
 <p>In this example, {@link android.app.Activity#onCreate(Bundle) onCreate()} adds a fragment
 or restores a reference to it. {@link android.app.Activity#onCreate(Bundle) onCreate()} also
 stores the stateful object inside the fragment instance.
-{@link android.app.Activity#onDestroy() onDestroy()} updates the stateful object inside the 
+{@link android.app.Activity#onDestroy() onDestroy()} updates the stateful object inside the
 retained fragment instance.</p>
 
 
diff --git a/docs/html/guide/topics/security/permissions.jd b/docs/html/guide/topics/security/permissions.jd
index e7bf760..39a1f814 100644
--- a/docs/html/guide/topics/security/permissions.jd
+++ b/docs/html/guide/topics/security/permissions.jd
@@ -675,7 +675,7 @@
 <a name="manifest"></a>
 <h3>Enforcing Permissions in AndroidManifest.xml</h3>
 
-<p>TYou can apply high-level permissions restricting access to entire components
+<p>You can apply high-level permissions restricting access to entire components
 of the system or application through your
 <code>AndroidManifest.xml</code>. To do this, include an {@link
 android.R.attr#permission android:permission} attribute on the desired
diff --git a/docs/html/guide/topics/sensors/index.jd b/docs/html/guide/topics/sensors/index.jd
index 09d27e7..36d3adc 100644
--- a/docs/html/guide/topics/sensors/index.jd
+++ b/docs/html/guide/topics/sensors/index.jd
@@ -1,7 +1,7 @@
 page.title=Location and Sensors APIs
 page.landing=true
 page.tags=location,sensors
-page.landing.intro=Use sensors on the device to add rich location and motion capabilities to your app, from GPS or network location to accelerometer, gyroscope, temperature, barometer, and more. 
+page.landing.intro=Use sensors on the device to add rich location and motion capabilities to your app, from GPS or network location to accelerometer, gyroscope, temperature, barometer, and more.
 page.landing.image=
 
 @jd:body
@@ -10,7 +10,7 @@
 
   <div class="col-6">
     <h3>Blog Articles</h3>
-    
+
     <a href="http://android-developers.blogspot.com/2010/09/one-screen-turn-deserves-another.html">
       <h4>One Screen Turn Deserves Another</h4>
       <p>However, there’s a new wrinkle: recently, a few devices have shipped (see here and here)
@@ -18,7 +18,7 @@
 the default position, the screens are wider than they are tall. This introduces a few fairly subtle
 issues that we’ve noticed causing problems in some apps.</p>
     </a>
-    
+
     <a href="http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html">
       <h4>A Deep Dive Into Location</h4>
       <p>I’ve written an open-source reference app that incorporates all of the tips, tricks, and
@@ -29,7 +29,7 @@
 
   <div class="col-6">
     <h3>Training</h3>
-    
+
     <a href="http://developer.android.com/training/location/index.html">
       <h4>Making Your App Location Aware</h4>
       <p>This class teaches you how to incorporate location based services in your Android
diff --git a/docs/html/guide/topics/sensors/sensors_position.jd b/docs/html/guide/topics/sensors/sensors_position.jd
index d0ddead..5ec16c7 100644
--- a/docs/html/guide/topics/sensors/sensors_position.jd
+++ b/docs/html/guide/topics/sensors/sensors_position.jd
@@ -8,7 +8,7 @@
   <ol>
     <li><a href="#sensors-pos-gamerot">Using the Game Rotation Vector Sensor</a></li>
     <li><a href="#sensors-pos-geomrot">Using the Geomagnetic Rotation Vector Sensor</a></li>
-    <li><a href="#sensors-pos-orient">Using the Orientation Sensor</a></li>
+    <li><a href="#sensors-pos-orient">Computing the Device's Orientation</a></li>
     <li><a href="#sensors-pos-mag">Using the Geomagnetic Field Sensor</a></li>
     <li><a href="#sensors-pos-prox">Using the Proximity Sensor</a></li>
   </ol>
@@ -42,38 +42,49 @@
   </div>
 </div>
 
-<p>The Android platform provides two sensors that let you determine the position of a device: the
-geomagnetic field sensor and the orientation sensor. The Android platform also
-provides a sensor that lets you determine how close the face of a device is to an object (known as
-the proximity sensor). The geomagnetic field sensor and the proximity sensor are hardware-based.
-Most
-handset and tablet manufacturers include a geomagnetic field sensor. Likewise, handset manufacturers
-usually include a proximity sensor to determine when a handset is being held close to a user's face
-(for example, during a phone call). The orientation sensor is software-based and derives its data
-from the accelerometer and the geomagnetic field sensor.</p>
+<p>
+  The Android platform provides two sensors that let you determine the position
+  of a device: the geomagnetic field sensor and the accelerometer. The Android
+  platform also provides a sensor that lets you determine how close the face of
+  a device is to an object (known as the <em>proximity sensor</em>). The
+  geomagnetic field sensor and the proximity sensor are hardware-based. Most
+  handset and tablet manufacturers include a geomagnetic field sensor. Likewise,
+  handset manufacturers usually include a proximity sensor to determine when a
+  handset is being held close to a user's face (for example, during a phone
+  call). For determining a device's orientation, you can use the readings from
+  the device's accelerometer and the geomagnetic field sensor.
+</p>
 
-<p class="note"><strong>Note:</strong> The orientation sensor was deprecated in Android 2.2 (API
-Level 8).</p>
+<p class="note">
+  <strong>Note:</strong> The orientation sensor was deprecated in Android 2.2
+  (API level 8), and the orientation sensor type was deprecated in Android 4.4W
+  (API level 20).
+</p>
 
-<p>Position sensors are useful for determining a device's physical position in the
-world's frame of reference. For example, you can use the geomagnetic field sensor in
-combination with the accelerometer to determine a device's position relative to
-the magnetic North Pole. You can also use the orientation sensor (or similar sensor-based
-orientation methods) to determine a device's position in your application's frame of reference.
-Position sensors are not typically used to monitor device movement or motion, such as shake, tilt,
-or thrust (for more information, see <a
-href="{@docRoot}guide/topics/sensors/sensors_motion.html">Motion Sensors</a>).</p>
+<p>
+  Position sensors are useful for determining a device's physical position in
+  the world's frame of reference. For example, you can use the geomagnetic field
+  sensor in combination with the accelerometer to determine a device's position
+  relative to the magnetic north pole. You can also use these sensors to
+  determine a device's orientation in your application's frame of reference.
+  Position sensors are not typically used to monitor device movement or motion,
+  such as shake, tilt, or thrust (for more information, see <a
+  href="{@docRoot}guide/topics/sensors/sensors_motion.html">Motion Sensors</a>).
+</p>
 
-<p>The geomagnetic field sensor and orientation sensor return multi-dimensional arrays of sensor
-values
-for each {@link android.hardware.SensorEvent}. For example, the orientation sensor provides
-geomagnetic
-field strength values for each of the three coordinate axes during a single sensor event. Likewise,
-the orientation sensor provides azimuth (yaw), pitch, and roll values during a single sensor event.
-For more information about the coordinate systems that are used by sensors, see <a
-href="{@docRoot}guide/topics/sensors/sensors_overview.html#sensors-coords">Sensor Coordinate
-Systems</a>. The proximity sensor provides a single value for each sensor event. Table 1 summarizes
-the position sensors that are supported on the Android platform.</p>
+<p>
+  The geomagnetic field sensor and accelerometer return multi-dimensional arrays
+  of sensor values for each {@link android.hardware.SensorEvent}. For example,
+  the geomagnetic field sensor provides geomagnetic field strength values for
+  each of the three coordinate axes during a single sensor event. Likewise, the
+  accelerometer sensor measures the acceleration applied to the device during a
+  sensor event. For more information about the coordinate systems that are used
+  by sensors, see <a
+  href="{@docRoot}guide/topics/sensors/sensors_overview.html#sensors-coords">
+  Sensor Coordinate Systems</a>. The proximity sensor provides a single value
+  for each sensor event. Table 1 summarizes the position sensors that are
+  supported on the Android platform.
+</p>
 
 <p class="table-caption" id="table1">
   <strong>Table 1.</strong> Position sensors that are supported on the Android platform.</p>
@@ -174,14 +185,17 @@
   </tr>
 </table>
 
-<p class="note"><sup><strong>1</strong></sup> This sensor was deprecated in Android 2.2 (API Level
-  8). The sensor framework provides alternate methods for acquiring device orientation, which are
-discussed in <a href="#sensors-pos-orient">Using the Orientation Sensor</a>.</p>
+<p class="note">
+  <sup><strong>1</strong></sup>This sensor was deprecated in Android 2.2 (API
+  level 8), and this sensor type was deprecated in Android 4.4W (API level 20).
+  The sensor framework provides alternate methods for acquiring device
+  orientation, which are discussed in <a href="#sensors-pos-orient">Computing
+  the Device's Orientation</a>.
+</p>
 
 <p class="note"><sup><strong>2</strong></sup> Some proximity sensors provide only binary values
 representing near and far.</p>
 
-
 <h2 id="sensors-pos-gamerot">Using the Game Rotation Vector Sensor</h2>
 
 <p>The game rotation vector sensor is identical to the
@@ -228,71 +242,106 @@
 </pre>
 
 
-<h2 id="sensors-pos-orient">Using the Orientation Sensor</h2>
+<h2 id="sensors-pos-orient">Computing the Device's Orientation</h2>
 
-<p>The orientation sensor lets you monitor the position of a device relative to the earth's frame of
-reference (specifically, magnetic north). The following code shows you how to get an instance of the
-default orientation sensor:</p>
-
+<p>By computing a device's orientation, you can monitor the position of the
+  device relative to the earth's frame of reference (specifically, the magnetic
+  north pole). The following code shows you how to compute a device's
+  orientation:
+</p>
 <pre>
 private SensorManager mSensorManager;
-private Sensor mSensor;
 ...
-mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
-mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
+// Rotation matrix based on current readings from accelerometer and magnetometer.
+final float[] rotationMatrix = new float[9];
+mSensorManager.getRotationMatrix(rotationMatrix, null,
+  accelerometerReading, magnetometerReading);
+
+// Express the updated rotation matrix as three orientation angles.
+final float[] orientationAngles = new float[3];
+mSensorManager.getOrientation(rotationMatrix, orientationAngles);
 </pre>
-
-<p>The orientation sensor derives its data by using a device's geomagnetic field sensor in
-combination with a device's accelerometer. Using these two hardware sensors, an orientation sensor
-provides data for the following three dimensions:</p>
-
+<p>The system computes the orientation angles by using a device's geomagnetic
+  field sensor in combination with the device's accelerometer. Using these two
+  hardware sensors, the system provides data for the following three
+  orientation angles:
+</p>
 <ul>
-  <li>Azimuth (degrees of rotation around the z axis). This is the angle between magnetic north
-and the device's y axis. For example, if the device's y axis is aligned with magnetic north
-this value is 0, and if the device's y axis is pointing south this value is 180. Likewise, when
-the y axis is pointing east this value is 90 and when it is pointing west this value is 270.</li>
-  <li>Pitch (degrees of rotation around the x axis). This value is positive when the positive z axis
-rotates toward the positive y axis, and it is negative when the positive z axis
-rotates toward the negative y axis. The range of values is 180 degrees to -180
-degrees.</li>
-  <li>Roll (degrees of rotation around the y axis). This value is positive when the positive z axis
-rotates toward the positive x axis, and it is negative when the positive z axis
-rotates toward the negative x axis. The range of values is 90 degrees to -90
-degrees.</li>
+  <li>
+    <strong>Azimuth (degrees of rotation about the -z axis).</strong> This is
+    the angle between the device's current compass direction and magnetic north.
+    If the top edge of the device faces magnetic north, the azimuth is 0
+    degrees; if the top edge faces south, the azimuth is 180 degrees. Similarly,
+    if the top edge faces east, the azimuth is 90 degrees, and if the top edge
+    faces west, the azimuth is 270 degrees.
+  </li>
+  <li>
+    <strong>Pitch (degrees of rotation about the x axis).</strong> This is the
+    angle between a plane parallel to the device's screen and a plane parallel
+    to the ground. If you hold the device parallel to the ground with the bottom
+    edge closest to you and tilt the top edge of the device toward the ground,
+    the pitch angle becomes positive. Tilting in the opposite direction&mdash;
+    moving the top edge of the device away from the ground&mdash;causes
+    the pitch angle to become negative. The range of values is -180 degrees to
+    180 degrees.
+  </li>
+  <li>
+    <strong>Roll (degrees of rotation about the y axis).</strong> This is the
+    angle between a plane perpendicular to the device's screen and a plane
+    perpendicular to the ground. If you hold the device parallel to the ground
+    with the bottom edge closest to you and tilt the left edge of the device
+    toward the ground, the roll angle becomes positive. Tilting in the opposite
+    direction&mdash;moving the right edge of the device toward the ground&mdash;
+    causes the roll angle to become negative. The range of values is -90 degrees
+    to 90 degrees.
+  </li>
 </ul>
 
-<p>This definition is different from yaw, pitch, and roll used in aviation, where the X axis is
-along the long side of the plane (tail to nose). Also, for historical reasons the roll angle is
-positive in the clockwise direction (mathematically speaking, it should be positive in the
-counter-clockwise direction).</p>
+<p class="note">
+  <strong>Note:</strong>The sensor's roll definition has changed to reflect the
+  vast majority of implementations in the geosensor ecosystem.
+</p>
 
-<p>The orientation sensor derives its data by processing the raw sensor data from the accelerometer
-and the geomagnetic field sensor. Because of the heavy processing that is involved, the accuracy and
-precision of the orientation sensor is diminished (specifically, this sensor is only reliable when
-the roll component is 0). As a result, the orientation sensor was deprecated in Android 2.2 (API
-level 8). Instead of using raw data from the orientation sensor, we recommend that you use the
-{@link android.hardware.SensorManager#getRotationMatrix getRotationMatrix()} method in conjunction
-with the {@link android.hardware#getOrientation getOrientation()} method to compute orientation
-values. You can also use the {@link android.hardware.SensorManager#remapCoordinateSystem
-remapCoordinateSystem()} method to translate the orientation values to your application's frame of
-reference.</p>
+<p>
+  Note that these angles work off of a different coordinate system than the
+  one used in aviation (for yaw, pitch, and roll). In the aviation system, the
+  x axis is along the long side of the plane, from tail to nose.
+</p>
 
-<p>The following code sample shows how to acquire orientation data directly from the orientation
-sensor. We recommend that you do this only if a device has negligible roll.</p>
+<p>
+  The orientation sensor derives its data by processing the raw sensor data
+  from the accelerometer and the geomagnetic field sensor. Because of the heavy
+  processing that is involved, the accuracy and precision of the orientation
+  sensor is diminished. Specifically, this sensor is reliable only when the roll
+  angle is 0. As a result, the orientation sensor was deprecated in Android
+  2.2 (API level 8), and the orientation sensor type was deprecated in Android
+  4.4W (API level 20).
 
+  Instead of using raw data from the orientation sensor, we recommend that you
+  use the {@link android.hardware.SensorManager#getRotationMatrix getRotationMatrix()}
+  method in conjunction with the
+  {@link android.hardware.SensorManager#getOrientation getOrientation()} method
+  to compute orientation values, as shown in the following code sample. As part
+  of this process, you can use the
+  {@link android.hardware.SensorManager#remapCoordinateSystem remapCoordinateSystem()}
+  method to translate the orientation values to your application's frame of
+  reference.
+</p>
 <pre>
 public class SensorActivity extends Activity implements SensorEventListener {
 
   private SensorManager mSensorManager;
-  private Sensor mOrientation;
+  private final float[] mAccelerometerReading = new float[3];
+  private final float[] mMagnetometerReading = new float[3];
+
+  private final float[] mRotationMatrix = new float[9];
+  private final float[] mOrientationAngles = new float[3];
 
   &#64;Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
-
     mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
-    mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
   }
 
   &#64;Override
@@ -304,31 +353,63 @@
   &#64;Override
   protected void onResume() {
     super.onResume();
-    mSensorManager.registerListener(this, mOrientation, SensorManager.SENSOR_DELAY_NORMAL);
+
+    // Get updates from the accelerometer and magnetometer at a constant rate.
+    // To make batch operations more efficient and reduce power consumption,
+    // provide support for delaying updates to the application.
+    //
+    // In this example, the sensor reporting delay is small enough such that
+    // the application receives an update before the system checks the sensor
+    // readings again.
+    mSensorManager.registerListener(this, Sensor.TYPE_ACCELEROMETER,
+      SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI);
+    mSensorManager.registerListener(this, Sensor.TYPE_MAGNETIC_FIELD,
+      SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI);
   }
 
   &#64;Override
   protected void onPause() {
     super.onPause();
+
+    // Don't receive any more updates from either sensor.
     mSensorManager.unregisterListener(this);
   }
 
+  // Get readings from accelerometer and magnetometer. To simplify calculations,
+  // consider storing these readings as unit vectors.
   &#64;Override
   public void onSensorChanged(SensorEvent event) {
-    float azimuth_angle = event.values[0];
-    float pitch_angle = event.values[1];
-    float roll_angle = event.values[2];
-    // Do something with these orientation angles.
+    if (event.sensor == Sensor.TYPE_ACCELEROMETER) {
+      System.arraycopy(event.values, 0, mAccelerometerReading,
+        0, mAccelerometerReading.length);
+    }
+    else if (event.sensor == Sensor.TYPE_MAGNETIC_FIELD) {
+      System.arraycopy(event.values, 0, mMagnetometerReading,
+        0, mMagnetometerReading.length);
+    }
+  }
+
+  // Compute the three orientation angles based on the most recent readings from
+  // the device's accelerometer and magnetometer.
+  public void updateOrientationAngles() {
+    // Update rotation matrix, which is needed to update orientation angles.
+    mSensorManager.getRotationMatrix(mRotationMatrix, null,
+      mAccelerometerReading, mMagnetometerReading);
+
+    // "mRotationMatrix" now has up-to-date information.
+
+    mSensorManager.getOrientation(mRotationMatrix, mOrientationAngles);
+
+    // "mOrientationAngles" now has up-to-date information.
   }
 }
 </pre>
 
-<p>You do not usually need to perform any data processing or filtering of the raw data that you
-obtain from an orientation sensor, other than translating the sensor's coordinate system to your
-application's frame of reference. The <a
-href="{@docRoot}resources/samples/AccelerometerPlay/index.html">Accelerometer Play</a> sample shows
-you how to translate acceleration sensor data into another frame of reference; the technique is
-similar to the one you might use with the orientation sensor.</p>
+<p>
+  You don't usually need to perform any data processing or filtering of the
+  device's raw orientation angles other than translating the sensor's
+  coordinate system to your application's frame of reference.
+</p>
 
 <h2 id="sensors-pos-mag">Using the Geomagnetic Field Sensor</h2>
 
diff --git a/docs/html/guide/topics/text/index.jd b/docs/html/guide/topics/text/index.jd
index 3865f25..2bf4696 100644
--- a/docs/html/guide/topics/text/index.jd
+++ b/docs/html/guide/topics/text/index.jd
@@ -9,7 +9,7 @@
 
   <div class="col-12">
     <h3>Blog Articles</h3>
-    
+
     <a href="http://android-developers.blogspot.com/2011/12/add-voice-typing-to-your-ime.html">
       <h4>Add Voice Typing To Your IME</h4>
       <p>A new feature available in Android 4.0 is voice typing: the difference for users is that
diff --git a/docs/html/guide/topics/text/spell-checker-framework.jd b/docs/html/guide/topics/text/spell-checker-framework.jd
index a5d9932..7c059ce 100644
--- a/docs/html/guide/topics/text/spell-checker-framework.jd
+++ b/docs/html/guide/topics/text/spell-checker-framework.jd
@@ -6,7 +6,7 @@
 <h2>In This Document</h2>
 <ol>
     <li>
-        <a href="#SpellCheckLifeCycle">Spell Check Lifecycle</a> 
+        <a href="#SpellCheckLifeCycle">Spell Check Lifecycle</a>
     </li>
     <li>
         <a href="#SpellCheckImplementation">Implementing a Spell Checker Service</a>
@@ -30,12 +30,12 @@
 </div>
 
 <p>
-    The Android platform offers a spelling checker framework that lets you implement   
-    and access spell checking in your application. The framework is one of the 
+    The Android platform offers a spelling checker framework that lets you implement
+    and access spell checking in your application. The framework is one of the
     Text Service APIs offered by the Android platform.
 </p>
 <p>
-    To use the framework in your app, you create a special type of Android service that 
+    To use the framework in your app, you create a special type of Android service that
     generates a spelling checker <strong>session</strong> object. Based on text you provide,
     the session object returns spelling suggestions generated by the spelling checker.
 </p>
diff --git a/docs/html/guide/topics/ui/accessibility/apps.jd b/docs/html/guide/topics/ui/accessibility/apps.jd
index eb639e3..26fb3cc 100644
--- a/docs/html/guide/topics/ui/accessibility/apps.jd
+++ b/docs/html/guide/topics/ui/accessibility/apps.jd
@@ -458,7 +458,7 @@
     // Call the super implementation to populate its text to the event, which
     // calls onPopulateAccessibilityEvent() on API Level 14 and up.
     boolean completed = super.dispatchPopulateAccessibilityEvent(event);
-    
+
     // In case this is running on a API revision earlier that 14, check
     // the text content of the event and add an appropriate text
     // description for this custom view:
diff --git a/docs/html/guide/topics/ui/binding.jd b/docs/html/guide/topics/ui/binding.jd
index a4fd25c..48a1d40 100644
--- a/docs/html/guide/topics/ui/binding.jd
+++ b/docs/html/guide/topics/ui/binding.jd
@@ -16,7 +16,7 @@
 
 
 <pre>
-// Get a Spinner and bind it to an ArrayAdapter that 
+// Get a Spinner and bind it to an ArrayAdapter that
 // references a String array.
 Spinner s1 = (Spinner) findViewById(R.id.spinner1);
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
@@ -31,7 +31,7 @@
 
 Spinner s2 = (Spinner) findViewById(R.id.spinner2);
 Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);
-     
+
 SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
     android.R.layout.simple_spinner_item, // Use a template
                                           // that displays a
@@ -41,7 +41,7 @@
                                          // people database to...
     new int[] {android.R.id.text1}); // The "text1" view defined in
                                      // the XML template
-					 
+
 adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 s2.setAdapter(adapter2);
 </pre>
@@ -70,7 +70,7 @@
 // Now hook into our object and set its onItemClickListener member
 // to our class handler object.
 mHistoryView = (ListView)findViewById(R.id.history);
-mHistoryView.setOnItemClickListener(mMessageClickedHandler); 
+mHistoryView.setOnItemClickListener(mMessageClickedHandler);
 </pre>
 
 <div class="special">
diff --git a/docs/html/guide/topics/ui/controls.jd b/docs/html/guide/topics/ui/controls.jd
index a58d9f9..bb8c1a7 100644
--- a/docs/html/guide/topics/ui/controls.jd
+++ b/docs/html/guide/topics/ui/controls.jd
@@ -71,7 +71,7 @@
     <tr>
         <td><a href="controls/radiobutton.html">Radio button</a></td>
         <td>Similar to checkboxes, except that only one option can be selected in the group.</td>
-	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<td>{@link android.widget.RadioGroup RadioGroup}
 	<br>{@link android.widget.RadioButton RadioButton} </td>
     </tr>
     <tr>
diff --git a/docs/html/guide/topics/ui/controls/button.jd b/docs/html/guide/topics/ui/controls/button.jd
index 295044f..a529d53 100644
--- a/docs/html/guide/topics/ui/controls/button.jd
+++ b/docs/html/guide/topics/ui/controls/button.jd
@@ -214,7 +214,7 @@
   <li>The second <code>&lt;item></code> defines the bitmap to use when the button is
 focused (when the button is highlighted using the trackball or directional
 pad).</li>
-  <li>The third <code>&lt;item></code> defines the bitmap to use when the button is in the 
+  <li>The third <code>&lt;item></code> defines the bitmap to use when the button is in the
 default state (it's neither pressed nor focused).</li>
 </ul>
   <p class="note"><strong>Note:</strong> The order of the <code>&lt;item></code> elements is
diff --git a/docs/html/guide/topics/ui/controls/checkbox.jd b/docs/html/guide/topics/ui/controls/checkbox.jd
index 2a64e38..f5feeb1 100644
--- a/docs/html/guide/topics/ui/controls/checkbox.jd
+++ b/docs/html/guide/topics/ui/controls/checkbox.jd
@@ -65,7 +65,7 @@
 public void onCheckboxClicked(View view) {
     // Is the view now checked?
     boolean checked = ((CheckBox) view).isChecked();
-    
+
     // Check which checkbox was clicked
     switch(view.getId()) {
         case R.id.checkbox_meat:
diff --git a/docs/html/guide/topics/ui/controls/pickers.jd b/docs/html/guide/topics/ui/controls/pickers.jd
index c0667ad..9788f08 100644
--- a/docs/html/guide/topics/ui/controls/pickers.jd
+++ b/docs/html/guide/topics/ui/controls/pickers.jd
@@ -123,15 +123,15 @@
 <p>For example, here's a button that, when clicked, calls a method to show the dialog:</p>
 
 <pre>
-&lt;Button 
-    android:layout_width="wrap_content" 
+&lt;Button
+    android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:text="@string/pick_time" 
+    android:text="@string/pick_time"
     android:onClick="showTimePickerDialog" />
 </pre>
 
 <p>When the user clicks this button, the system calls the following method:</p>
-  
+
 <pre>
 public void showTimePickerDialog(View v) {
     DialogFragment newFragment = new TimePickerFragment();
@@ -224,15 +224,15 @@
 <p>For example, here's a button that, when clicked, calls a method to show the dialog:</p>
 
 <pre>
-&lt;Button 
-    android:layout_width="wrap_content" 
+&lt;Button
+    android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:text="@string/pick_date" 
+    android:text="@string/pick_date"
     android:onClick="showDatePickerDialog" />
 </pre>
 
 <p>When the user clicks this button, the system calls the following method:</p>
-  
+
 <pre>
 public void showDatePickerDialog(View v) {
     DialogFragment newFragment = new DatePickerFragment();
diff --git a/docs/html/guide/topics/ui/controls/radiobutton.jd b/docs/html/guide/topics/ui/controls/radiobutton.jd
index b2556e19..e1441d3 100644
--- a/docs/html/guide/topics/ui/controls/radiobutton.jd
+++ b/docs/html/guide/topics/ui/controls/radiobutton.jd
@@ -72,7 +72,7 @@
 public void onRadioButtonClicked(View view) {
     // Is the button now checked?
     boolean checked = ((RadioButton) view).isChecked();
-    
+
     // Check which radio button was clicked
     switch(view.getId()) {
         case R.id.radio_pirates:
diff --git a/docs/html/guide/topics/ui/controls/spinner.jd b/docs/html/guide/topics/ui/controls/spinner.jd
index 3b8aaad..00b0432 100644
--- a/docs/html/guide/topics/ui/controls/spinner.jd
+++ b/docs/html/guide/topics/ui/controls/spinner.jd
@@ -4,7 +4,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
 <h2>In this document</h2>
 <ol>
   <li><a href="#Populate">Populate the Spinner with User Choices</a></li>
@@ -113,8 +113,8 @@
 <pre>
 public class SpinnerActivity extends Activity implements OnItemSelectedListener {
     ...
-    
-    public void onItemSelected(AdapterView&lt;?> parent, View view, 
+
+    public void onItemSelected(AdapterView&lt;?> parent, View view,
             int pos, long id) {
         // An item was selected. You can retrieve the selected item using
         // parent.getItemAtPosition(pos)
diff --git a/docs/html/guide/topics/ui/controls/text.jd b/docs/html/guide/topics/ui/controls/text.jd
index f4d72b2a..f5c2a42 100644
--- a/docs/html/guide/topics/ui/controls/text.jd
+++ b/docs/html/guide/topics/ui/controls/text.jd
@@ -4,7 +4,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
 <h2>In this document</h2>
 <ol>
   <li><a href="#Keyboard">Specifying the Keyboard Type</a>
@@ -279,7 +279,7 @@
 layout with only the text field:
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
-&lt;AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" 
+&lt;AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="&#64;+id/autocomplete_country"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content" />
@@ -313,8 +313,8 @@
 AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
 // Get the string array
 String[] countries = getResources().getStringArray(R.array.countries_array);
-// Create the adapter and set it to the AutoCompleteTextView 
-ArrayAdapter&lt;String> adapter = 
+// Create the adapter and set it to the AutoCompleteTextView
+ArrayAdapter&lt;String> adapter =
         new ArrayAdapter&lt;String>(this, android.R.layout.simple_list_item_1, countries);
 textView.setAdapter(adapter);
 </pre>
diff --git a/docs/html/guide/topics/ui/custom-components.jd b/docs/html/guide/topics/ui/custom-components.jd
index b7249c5..bd3de1c 100755
--- a/docs/html/guide/topics/ui/custom-components.jd
+++ b/docs/html/guide/topics/ui/custom-components.jd
@@ -14,37 +14,37 @@
 </div>
 </div>
 
-<p>Android offers a sophisticated and powerful componentized model for building your UI, 
-based on the fundamental layout classes: {@link android.view.View} and 
-{@link android.view.ViewGroup}. To start with, the platform includes a variety of prebuilt 
-View and ViewGroup subclasses &mdash; called widgets and layouts, respectively &mdash; 
+<p>Android offers a sophisticated and powerful componentized model for building your UI,
+based on the fundamental layout classes: {@link android.view.View} and
+{@link android.view.ViewGroup}. To start with, the platform includes a variety of prebuilt
+View and ViewGroup subclasses &mdash; called widgets and layouts, respectively &mdash;
 that you can use to construct your UI.</p>
 
-<p>A partial list of available widgets includes {@link android.widget.Button Button}, 
-{@link android.widget.TextView TextView}, 
-{@link android.widget.EditText EditText}, 
+<p>A partial list of available widgets includes {@link android.widget.Button Button},
+{@link android.widget.TextView TextView},
+{@link android.widget.EditText EditText},
 {@link android.widget.ListView ListView},
-{@link android.widget.CheckBox CheckBox}, 
-{@link android.widget.RadioButton RadioButton}, 
-{@link android.widget.Gallery Gallery}, 
-{@link android.widget.Spinner Spinner}, and the more special-purpose 
-{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, 
+{@link android.widget.CheckBox CheckBox},
+{@link android.widget.RadioButton RadioButton},
+{@link android.widget.Gallery Gallery},
+{@link android.widget.Spinner Spinner}, and the more special-purpose
+{@link android.widget.AutoCompleteTextView AutoCompleteTextView},
 {@link android.widget.ImageSwitcher ImageSwitcher}, and
 {@link android.widget.TextSwitcher TextSwitcher}. </p>
 
-<p>Among the layouts available are {@link android.widget.LinearLayout LinearLayout}, 
-{@link android.widget.FrameLayout FrameLayout}, {@link android.widget.RelativeLayout RelativeLayout}, 
+<p>Among the layouts available are {@link android.widget.LinearLayout LinearLayout},
+{@link android.widget.FrameLayout FrameLayout}, {@link android.widget.RelativeLayout RelativeLayout},
 and others. For more examples, see <a href="layout-objects.html">Common Layout Objects</a>.</p>
 
-<p>If none of the prebuilt widgets or layouts meets your needs, you can create your own View subclass. 
-If you only need to make small adjustments to an existing widget or layout, you can simply subclass 
+<p>If none of the prebuilt widgets or layouts meets your needs, you can create your own View subclass.
+If you only need to make small adjustments to an existing widget or layout, you can simply subclass
 the widget or layout and override its methods.
 </p>
 
-<p>Creating your own View subclasses gives you precise control over the appearance and function 
-of a screen element. To give an idea of the control you get with custom views, here are some 
+<p>Creating your own View subclasses gives you precise control over the appearance and function
+of a screen element. To give an idea of the control you get with custom views, here are some
 examples of what you could do with them:</p>
- 
+
 <ul>
   <li>
     You could create a completely custom-rendered View type, for example a "volume
@@ -60,7 +60,7 @@
   </li>
   <li>
     You could override the way that an EditText component is rendered on the screen
-    (the <a href="{@docRoot}resources/samples/NotePad/index.html">Notepad Tutorial</a> uses this to good effect, 
+    (the <a href="{@docRoot}resources/samples/NotePad/index.html">Notepad Tutorial</a> uses this to good effect,
     to create a lined-notepad page).
   </li>
   <li>
@@ -69,7 +69,7 @@
   </li>
 </ul>
 <p>
-The sections below explain how to create custom Views and use them in your application. 
+The sections below explain how to create custom Views and use them in your application.
 For detailed reference information, see the {@link android.view.View} class. </p>
 
 
@@ -77,26 +77,26 @@
 
 <p>Here is a high level overview of what you need to know to get started in creating your own
 View components:</p>
- 
+
 <ol>
   <li>
-    Extend an existing {@link android.view.View View} class or subclass 
+    Extend an existing {@link android.view.View View} class or subclass
 	with your own class.
   </li>
   <li>
-    Override some of the methods from the superclass. The superclass methods 
+    Override some of the methods from the superclass. The superclass methods
     to override start with '<code>on</code>', for
-    example, {@link android.view.View#onDraw onDraw()}, 
-    {@link android.view.View#onMeasure onMeasure()}, and 
+    example, {@link android.view.View#onDraw onDraw()},
+    {@link android.view.View#onMeasure onMeasure()}, and
     {@link android.view.View#onKeyDown onKeyDown()}.
-    This is similar to the <code>on...</code> events in {@link android.app.Activity Activity} 
+    This is similar to the <code>on...</code> events in {@link android.app.Activity Activity}
     or {@link android.app.ListActivity ListActivity}
     that you override for lifecycle and other functionality hooks.
   <li>
-    Use your new extension class. Once completed, your new extension class 
+    Use your new extension class. Once completed, your new extension class
     can be used in place of the view upon which it was based.
   </li>
-</ol>  
+</ol>
 <p class="note"><strong>Tip:</strong>
     Extension classes can be defined as inner classes inside the activities
     that use them. This is useful because it controls access to them but
@@ -119,7 +119,7 @@
 screen, and the available processing power (remember that ultimately your
 application might have to run on something with significantly less power
 than your desktop workstation).</p>
-<p>To create a fully customized component:</p> 
+<p>To create a fully customized component:</p>
 <ol>
   <li>
     The most generic view you can extend is, unsurprisingly, {@link
@@ -170,11 +170,11 @@
 (which are passed in to the <code>onMeasure()</code> method) and by the
 requirement to call the <code>setMeasuredDimension()</code> method with the
 measured width and height once they have been calculated. If you fail to
-call this method from an overridden <code>onMeasure()</code> method, the 
+call this method from an overridden <code>onMeasure()</code> method, the
 result will be an exception at measurement time.</p>
-<p>At a high level, implementing <code>onMeasure()</code> looks something 
+<p>At a high level, implementing <code>onMeasure()</code> looks something
  like this:</p>
- 
+
 <ol>
   <li>
     The overridden <code>onMeasure()</code> method is called with width and
@@ -193,7 +193,7 @@
     measurement width and height which will be required to render the
     component. It should try to stay within the specifications passed in,
     although it can choose to exceed them (in this case, the parent can
-    choose what to do, including clipping, scrolling, throwing an exception, 
+    choose what to do, including clipping, scrolling, throwing an exception,
     or asking the <code>onMeasure()</code> to try again, perhaps with
     different measurement specifications).
   </li>
@@ -212,7 +212,7 @@
        <thead>
            <tr><th>Category</th> <th>Methods</th> <th>Description</th></tr>
        </thead>
-       
+
        <tbody>
        <tr>
            <td rowspan="2">Creation</td>
@@ -228,7 +228,7 @@
            <td>Called after a view and all of its children has been inflated
            from XML.</td>
        </tr>
-       
+
        <tr>
            <td rowspan="3">Layout</td>
            <td><code>{@link  android.view.View#onMeasure}</code></td>
@@ -247,14 +247,14 @@
            <td>Called when the size of this view has changed.
            </td>
        </tr>
-       
+
        <tr>
            <td>Drawing</td>
            <td><code>{@link  android.view.View#onDraw}</code></td>
            <td>Called when the view should render its content.
            </td>
        </tr>
-  
+
        <tr>
            <td rowspan="4">Event processing</td>
            <td><code>{@link  android.view.View#onKeyDown}</code></td>
@@ -265,58 +265,58 @@
            <td><code>{@link  android.view.View#onKeyUp}</code></td>
            <td>Called when a key up event occurs.
            </td>
-       </tr>   
+       </tr>
        <tr>
            <td><code>{@link  android.view.View#onTrackballEvent}</code></td>
            <td>Called when a trackball motion event occurs.
            </td>
-       </tr>  
+       </tr>
        <tr>
            <td><code>{@link  android.view.View#onTouchEvent}</code></td>
            <td>Called when a touch screen motion event occurs.
            </td>
-       </tr>  
-       
+       </tr>
+
        <tr>
            <td rowspan="2">Focus</td>
            <td><code>{@link  android.view.View#onFocusChanged}</code></td>
            <td>Called when the view gains or loses focus.
            </td>
        </tr>
-       
+
        <tr>
            <td><code>{@link  android.view.View#onWindowFocusChanged}</code></td>
            <td>Called when the window containing the view gains or loses focus.
            </td>
        </tr>
-       
+
        <tr>
            <td rowspan="3">Attaching</td>
            <td><code>{@link  android.view.View#onAttachedToWindow()}</code></td>
            <td>Called when the view is attached to a window.
            </td>
        </tr>
-  
+
        <tr>
            <td><code>{@link  android.view.View#onDetachedFromWindow}</code></td>
            <td>Called when the view is detached from its window.
            </td>
-       </tr>     
-  
+       </tr>
+
        <tr>
            <td><code>{@link  android.view.View#onWindowVisibilityChanged}</code></td>
            <td>Called when the visibility of the window containing the view
            has changed.
            </td>
-       </tr>     
+       </tr>
        </tbody>
-       
+
    </table>
 
 
 
 <h3 id="customexample">A Custom View Example</h3>
-<p>The CustomView sample in the 
+<p>The CustomView sample in the
 <a href="{@docRoot}resources/samples/ApiDemos/index.html">API Demos</a> provides an example
 of a customized View. The custom View is defined in the
 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html">LabelView</a>
@@ -359,9 +359,9 @@
 something from the list, it populates the EditText field, but the user can
 also type something directly into the EditText if they prefer.</p>
 <p>In Android, there are actually two other Views readily available to do
-this: {@link android.widget.Spinner Spinner} and 
-{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, but 
-regardless, the concept of a Combo Box makes an easy-to-understand 
+this: {@link android.widget.Spinner Spinner} and
+{@link android.widget.AutoCompleteTextView AutoCompleteTextView}, but
+regardless, the concept of a Combo Box makes an easy-to-understand
 example.</p>
 <p>To create a compound component:</p>
 <ol>
@@ -397,7 +397,7 @@
   <li>
     In the case of extending a Layout, you don't need to override the
     <code>onDraw()</code> and <code>onMeasure()</code> methods since the
-    layout will have default behavior that will likely work just fine. However, 
+    layout will have default behavior that will likely work just fine. However,
     you can still override them if you need to.
   </li>
   <li>
@@ -409,7 +409,7 @@
 <p>
  To summarize, the use of a Layout as the basis for a Custom Control has a
 number of advantages, including:</p>
- 
+
 <ul>
   <li>
     You can specify the layout using the declarative XML files just like
@@ -433,7 +433,7 @@
  SpeechView which extends LinearLayout to make a component for displaying
  Speech quotes. The corresponding classes in the sample code are
  <code>List4.java</code> and <code>List6.java</code>.</p>
- 
+
 
 
 <h2 id="modifying">Modifying an Existing View Type</h2>
@@ -450,7 +450,7 @@
 them is extending an EditText View to make a lined notepad. This is not a
 perfect example, and the APIs for doing this might change from this early
 preview, but it does demonstrate the principles.</p>
-<p>If you haven't done so already, import the 
+<p>If you haven't done so already, import the
 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
@@ -462,7 +462,7 @@
     <strong>The Definition</strong>
     <p>The class is defined with the following line:<br/>
      <code>public static class MyEditText extends EditText</code></p>
-     
+
     <ul>
       <li>
         It is defined as an inner class within the <code>NoteEditor</code>
@@ -488,7 +488,7 @@
   </li>
   <li>
     <strong>Class Initialization</strong>
-    <p>As always, the super is called first. Furthermore, 
+    <p>As always, the super is called first. Furthermore,
     this is not a default constructor, but a parameterized one. The
     EditText is created with these parameters when it is inflated from an
     XML layout file, thus, our constructor needs to both take them and pass them
@@ -496,7 +496,7 @@
   </li>
   <li>
     <strong>Overridden Methods</strong>
-    <p>In this example, there is only one method to be overridden: 
+    <p>In this example, there is only one method to be overridden:
     <code>onDraw()</code> &mdash; but there could easily be others needed when you
     create your own custom components.</p>
     <p>For the NotePad sample, overriding the <code>onDraw()</code> method allows
@@ -513,7 +513,7 @@
     <code>res/layout</code> folder.</p>
 <pre>
 &lt;view
-  class=&quot;com.android.notepad.NoteEditor$MyEditText&quot; 
+  class=&quot;com.android.notepad.NoteEditor$MyEditText&quot;
   id=&quot;&#64;+id/note&quot;
   android:layout_width=&quot;fill_parent&quot;
   android:layout_height=&quot;fill_parent&quot;
@@ -522,7 +522,7 @@
   android:scrollbars=&quot;vertical&quot;
   android:fadingEdge=&quot;vertical&quot; /&gt;
 </pre>
-     
+
     <ul>
       <li>
         The custom component is created as a generic view in the XML, and
@@ -531,7 +531,7 @@
         <code>NoteEditor$MyEditText</code> notation which is a standard way to
         refer to inner classes in the Java programming language.
         <p>If your custom View component is not defined as an inner class, then you can,
-        alternatively, declare the View component 
+        alternatively, declare the View component
         with the XML element name, and exclude the <code>class</code> attribute. For example:</p>
 <pre>
 &lt;com.android.notepad.MyEditText
diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd
index e4469ea..7ab4ca5 100644
--- a/docs/html/guide/topics/ui/dialogs.jd
+++ b/docs/html/guide/topics/ui/dialogs.jd
@@ -32,7 +32,7 @@
       <li>{@link android.app.DialogFragment}</li>
       <li>{@link android.app.AlertDialog}</li>
     </ol>
-    
+
     <h2>See also</h2>
     <ol>
       <li><a href="{@docRoot}design/building-blocks/dialogs.html">Dialogs design guide</a></li>
@@ -238,8 +238,8 @@
 </pre>
 
 <p>The <code>set...Button()</code> methods require a title for the button (supplied
-by a <a href="{@docRoot}guide/topics/resources/string-resource.html">string resource</a>) and a 
-{@link android.content.DialogInterface.OnClickListener} that defines the action to take 
+by a <a href="{@docRoot}guide/topics/resources/string-resource.html">string resource</a>) and a
+{@link android.content.DialogInterface.OnClickListener} that defines the action to take
 when the user presses the button.</p>
 
 <p>There are three different action buttons you can add:</p>
@@ -251,7 +251,7 @@
   <dt>Neutral</dt>
   <dd>You should use this when the user may not want to proceed with the action,
   but doesn't necessarily want to cancel. It appears between the positive and negative
-  buttons. For example, the action might be "Remind me later."</dd> 
+  buttons. For example, the action might be "Remind me later."</dd>
 </dl>
 
 <p>You can add only one of each button type to an {@link
@@ -274,7 +274,7 @@
 <li>A persistent multiple-choice list (checkboxes)</li>
 </ul>
 
-<p>To create a single-choice list like the one in figure 3, 
+<p>To create a single-choice list like the one in figure 3,
 use the {@link android.app.AlertDialog.Builder#setItems setItems()} method:</p>
 
 <pre style="clear:right">
@@ -294,7 +294,7 @@
 
 <p>Because the list appears in the dialog's content area,
 the dialog cannot show both a message and a list and you should set a title for the
-dialog with {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+dialog with {@link android.app.AlertDialog.Builder#setTitle setTitle()}.
 To specify the items for the list, call {@link
 android.app.AlertDialog.Builder#setItems setItems()}, passing an array.
 Alternatively, you can specify a list using {@link
@@ -320,11 +320,11 @@
 
 <h4 id="Checkboxes">Adding a persistent multiple-choice or single-choice list</h4>
 
-<p>To add a list of multiple-choice items (checkboxes) or 
+<p>To add a list of multiple-choice items (checkboxes) or
 single-choice items (radio buttons), use the
 {@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
-DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} or 
-{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} or
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} methods, respectively.</p>
 
 <p>For example, here's how you can create a multiple-choice list like the
@@ -349,7 +349,7 @@
                        // 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 
+                       // Else, if the item is already in the array, remove it
                        mSelectedItems.remove(Integer.valueOf(which));
                    }
                }
@@ -376,7 +376,7 @@
 
 <p>Although both a traditional list and a list with radio buttons
 provide a "single choice" action, you should use {@link
-android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener)
 setSingleChoiceItems()} if you want to persist the user's choice.
 That is, if opening the dialog again later should indicate what the user's current choice is,
 then you create a list with radio buttons.</p>
@@ -445,7 +445,7 @@
 a matching font style.</p>
 
 <p>To inflate the layout in your {@link android.support.v4.app.DialogFragment},
-get a {@link android.view.LayoutInflater} with 
+get a {@link android.view.LayoutInflater} with
 {@link android.app.Activity#getLayoutInflater()} and call
 {@link android.view.LayoutInflater#inflate inflate()}, where the first parameter
 is the layout resource ID and the second parameter is a parent view for the layout.
@@ -473,7 +473,7 @@
                public void onClick(DialogInterface dialog, int id) {
                    LoginDialogFragment.this.getDialog().cancel();
                }
-           });      
+           });
     return builder.create();
 }
 </pre>
@@ -508,7 +508,7 @@
 
 <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. */
@@ -516,10 +516,10 @@
         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) {
@@ -546,7 +546,7 @@
 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();
@@ -659,7 +659,7 @@
         // 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) {
@@ -681,7 +681,7 @@
 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");
@@ -781,7 +781,7 @@
 android.support.v4.app.DialogFragment}.</p>
 
 <p>You can also <em>cancel</em> a dialog. This is a special event that indicates the user
-explicitly left the dialog without completing the task. This occurs if the user presses the 
+explicitly left the dialog without completing the task. This occurs if the user presses the
 <em>Back</em> button, touches the screen outside the dialog area,
 or if you explicitly call {@link android.app.Dialog#cancel()} on the {@link
 android.app.Dialog} (such as in response to a "Cancel" button in the dialog).</p>
diff --git a/docs/html/guide/topics/ui/drag-drop.jd b/docs/html/guide/topics/ui/drag-drop.jd
index 4eb54f2..8871c87 100644
--- a/docs/html/guide/topics/ui/drag-drop.jd
+++ b/docs/html/guide/topics/ui/drag-drop.jd
@@ -978,7 +978,7 @@
                 Log.e("DragDrop Example","Unknown action type received by OnDragListener.");
                 break;
         }
-        
+
         return false;
     }
 };
diff --git a/docs/html/guide/topics/ui/how-android-draws.jd b/docs/html/guide/topics/ui/how-android-draws.jd
index 168f77b..7956369 100644
--- a/docs/html/guide/topics/ui/how-android-draws.jd
+++ b/docs/html/guide/topics/ui/how-android-draws.jd
@@ -4,18 +4,18 @@
 @jd:body
 
 
-<p>When an {@link android.app.Activity} receives focus, it will be requested to 
+<p>When an {@link android.app.Activity} receives focus, it will be requested to
 draw its layout.
-The Android framework will handle the procedure for drawing, but the 
+The Android framework will handle the procedure for drawing, but the
 {@link android.app.Activity} must provide
 the root node of its layout hierarchy.</p>
 
-<p>Drawing begins with the root node of the layout. It is requested to measure and 
-draw the layout tree. Drawing is handled by walking the tree and rendering each 
-{@link android.view.View} that intersects the invalid region. In turn, each 
+<p>Drawing begins with the root node of the layout. It is requested to measure and
+draw the layout tree. Drawing is handled by walking the tree and rendering each
+{@link android.view.View} that intersects the invalid region. In turn, each
 {@link android.view.ViewGroup} is responsible for requesting
-each of its children to be drawn 
-(with the {@link android.view.View#draw(Canvas) draw()} method) 
+each of its children to be drawn
+(with the {@link android.view.View#draw(Canvas) draw()} method)
 and each {@link android.view.View} is responsible for drawing itself.
  Because the tree is traversed in-order,
    this means that parents will be drawn before (i.e., behind) their children, with
@@ -24,55 +24,55 @@
 
 <div class="sidebox-wrapper">
 <div class="sidebox">
-  <p>The framework will not draw {@link android.view.View} objects that are not 
-in the invalid region, and also 
+  <p>The framework will not draw {@link android.view.View} objects that are not
+in the invalid region, and also
    will take care of drawing the {@link android.view.View} background for you.</p>
-   <p>You can force a {@link android.view.View} to draw, by calling 
+   <p>You can force a {@link android.view.View} to draw, by calling
 {@link android.view.View#invalidate()}.
    </p>
 </div>
 </div>
 
 <p>
-   Drawing the layout is a two pass process: a measure pass and a layout pass. 
-The measuring pass is implemented in {@link android.view.View#measure(int, int)} 
-and is a top-down traversal of the {@link android.view.View} tree. Each {@link android.view.View} 
+   Drawing the layout is a two pass process: a measure pass and a layout pass.
+The measuring pass is implemented in {@link android.view.View#measure(int, int)}
+and is a top-down traversal of the {@link android.view.View} tree. Each {@link android.view.View}
 pushes dimension specifications down the tree
-   during the recursion. At the end of the measure pass, every 
+   during the recursion. At the end of the measure pass, every
 {@link android.view.View} has stored
    its measurements. The second pass happens in
    {@link android.view.View#layout(int,int,int,int)} and is also top-down. During
    this pass each parent is responsible for positioning all of its children
    using the sizes computed in the measure pass.
    </p>
-   
+
    <p>
-   When a {@link android.view.View} object's 
-{@link android.view.View#measure(int, int) measure()} method 
+   When a {@link android.view.View} object's
+{@link android.view.View#measure(int, int) measure()} method
 returns, its {@link android.view.View#getMeasuredWidth()} and
-   {@link android.view.View#getMeasuredHeight()} values must be set, along 
-   with those for all of that {@link android.view.View} object's descendants. 
-A {@link android.view.View} object's measured width and 
-measured height values must respect the constraints imposed by the 
+   {@link android.view.View#getMeasuredHeight()} values must be set, along
+   with those for all of that {@link android.view.View} object's descendants.
+A {@link android.view.View} object's measured width and
+measured height values must respect the constraints imposed by the
 {@link android.view.View} object's parents. This guarantees
    that at the end of the measure pass, all parents accept all of their
-   children's measurements. A parent {@link android.view.View} may call 
+   children's measurements. A parent {@link android.view.View} may call
 {@link android.view.View#measure(int, int) measure()} more than once on
    its children. For example, the parent may measure each child once with
    unspecified dimensions to find out how big they want to be, then call
-   {@link android.view.View#measure(int, int) measure()} on them again with 
+   {@link android.view.View#measure(int, int) measure()} on them again with
 actual numbers if the sum of all the children's
-   unconstrained sizes is too big or too small (that is, if the children 
+   unconstrained sizes is too big or too small (that is, if the children
 don't agree among themselves
-  as to how much space they each get, the parent will intervene and set 
+  as to how much space they each get, the parent will intervene and set
 the rules on the second pass).
    </p>
-   
+
 <div class="sidebox-wrapper">
 <div class="sidebox"><p>
-   To initiate a layout, call {@link android.view.View#requestLayout}. 
+   To initiate a layout, call {@link android.view.View#requestLayout}.
 This method is typically
-   called by a {@link android.view.View} on itself 
+   called by a {@link android.view.View} on itself
 when it believes that is can no longer fit within
    its current bounds.</p>
 </div>
@@ -80,54 +80,54 @@
 
    <p>
    The measure pass uses two classes to communicate dimensions. The
-   {@link android.view.ViewGroup.LayoutParams} class is used by 
+   {@link android.view.ViewGroup.LayoutParams} class is used by
 {@link android.view.View} objects to tell their parents how they
-   want to be measured and positioned. The base 
+   want to be measured and positioned. The base
 {@link android.view.ViewGroup.LayoutParams}  class just
-   describes how big the {@link android.view.View} wants to be for both 
+   describes how big the {@link android.view.View} wants to be for both
 width and height. For each
    dimension, it can specify one of:</p>
    <ul>
     <li> an exact number
-    <li>{@link android.view.ViewGroup.LayoutParams#MATCH_PARENT MATCH_PARENT}, 
+    <li>{@link android.view.ViewGroup.LayoutParams#MATCH_PARENT MATCH_PARENT},
 which means the {@link android.view.View} wants to be as big as its parent
     (minus padding)</li>
-    <li>{@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT WRAP_CONTENT}, 
+    <li>{@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT WRAP_CONTENT},
 which means that the {@link android.view.View} wants to be just big enough to
     enclose its content (plus padding).</li>
    </ul>
-  <p>There are subclasses of {@link android.view.ViewGroup.LayoutParams} for 
+  <p>There are subclasses of {@link android.view.ViewGroup.LayoutParams} for
 different subclasses of {@link android.view.ViewGroup}.
-   For example, {@link android.widget.RelativeLayout} has its own subclass of 
+   For example, {@link android.widget.RelativeLayout} has its own subclass of
 {@link android.view.ViewGroup.LayoutParams}, which includes
-   the ability to center child {@link android.view.View} objects 
+   the ability to center child {@link android.view.View} objects
 horizontally and vertically.
    </p>
-   
+
    <p>
-   {@link android.view.View.MeasureSpec MeasureSpec} objects are used to push 
+   {@link android.view.View.MeasureSpec MeasureSpec} objects are used to push
 requirements down the tree from parent to
-   child. A {@link android.view.View.MeasureSpec MeasureSpec} can be in one of 
+   child. A {@link android.view.View.MeasureSpec MeasureSpec} can be in one of
 three modes:</p>
    <ul>
-    <li>{@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}: This is 
+    <li>{@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}: This is
 used by a parent to determine the desired dimension
-    of a child {@link android.view.View}. For example, a 
-{@link android.widget.LinearLayout} may call 
+    of a child {@link android.view.View}. For example, a
+{@link android.widget.LinearLayout} may call
 {@link android.view.View#measure(int, int) measure()} on its child
-    with the height set to {@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED} 
-and a width of {@link android.view.View.MeasureSpec#EXACTLY EXACTLY} 240 to 
-find out how tall the child {@link android.view.View} wants to be given a 
+    with the height set to {@link android.view.View.MeasureSpec#UNSPECIFIED UNSPECIFIED}
+and a width of {@link android.view.View.MeasureSpec#EXACTLY EXACTLY} 240 to
+find out how tall the child {@link android.view.View} wants to be given a
 width of 240 pixels.</li>
-    <li>{@link android.view.View.MeasureSpec#EXACTLY EXACTLY}: This is used 
+    <li>{@link android.view.View.MeasureSpec#EXACTLY EXACTLY}: This is used
 by the parent to impose an exact size on the
     child. The child must use this size, and guarantee that all of its
     descendants will fit within this size.</li>
-    <li>{@link android.view.View.MeasureSpec#AT_MOST AT MOST}: This is used by 
+    <li>{@link android.view.View.MeasureSpec#AT_MOST AT MOST}: This is used by
 the parent to impose a maximum size on the
     child. The child must guarantee that it and all of its descendants will fit
     within this size.</li>
    </ul>
-   
+
 
 
diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd
index 0725eb7..ccdf200 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-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.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
 
diff --git a/docs/html/guide/topics/ui/layout/grid.jd b/docs/html/guide/topics/ui/layout/grid.jd
index 3474f48..31f9b9c 100644
--- a/docs/html/guide/topics/ui/layout/grid.jd
+++ b/docs/html/guide/topics/ui/layout/grid.jd
@@ -32,7 +32,7 @@
 Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be
 composed of a variety of View objects, like ImageView or TextView objects.
 A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).</p>
-<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the 
+<p>The following sample layout has two rows and two cells in each. The accompanying screenshot shows the
 result, with cell borders displayed as dotted lines (added for visual effect). </p>
 
 <table class="columns">
@@ -71,7 +71,7 @@
 
 <p>Columns can be hidden, marked to stretch and fill the available screen space,
     or can be marked as shrinkable to force the column to shrink until the table
-    fits the screen. See the {@link android.widget.TableLayout TableLayout reference} 
+    fits the screen. See the {@link android.widget.TableLayout TableLayout reference}
 documentation for more details. </p>
 
 
diff --git a/docs/html/guide/topics/ui/layout/linear.jd b/docs/html/guide/topics/ui/layout/linear.jd
index 7441782..4224d17 100644
--- a/docs/html/guide/topics/ui/layout/linear.jd
+++ b/docs/html/guide/topics/ui/layout/linear.jd
@@ -59,7 +59,7 @@
 >{@code android:layout_weight}</a> attribute.
 This attribute assigns an "importance" value to a view in
 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. 
+to fill any remaining space in the parent view.
 Child views can specify a weight value, and then any remaining space in the view group is
 assigned to children in the proportion of their declared weight. Default
 weight is zero.</p>
diff --git a/docs/html/guide/topics/ui/layout/listview.jd b/docs/html/guide/topics/ui/layout/listview.jd
index 3c6e32c..e6e5578 100644
--- a/docs/html/guide/topics/ui/layout/listview.jd
+++ b/docs/html/guide/topics/ui/layout/listview.jd
@@ -80,7 +80,7 @@
             ContactsContract.Data.DISPLAY_NAME};
 
     // This is the select criteria
-    static final String SELECTION = "((" + 
+    static final String SELECTION = "((" +
             ContactsContract.Data.DISPLAY_NAME + " NOTNULL) AND (" +
             ContactsContract.Data.DISPLAY_NAME + " != '' ))";
 
@@ -105,7 +105,7 @@
 
         // Create an empty adapter we will use to display the loaded data.
         // We pass null for the cursor, then update it in onLoadFinished()
-        mAdapter = new SimpleCursorAdapter(this, 
+        mAdapter = new SimpleCursorAdapter(this,
                 android.R.layout.simple_list_item_1, null,
                 fromColumns, toViews, 0);
         setListAdapter(mAdapter);
@@ -138,7 +138,7 @@
         mAdapter.swapCursor(null);
     }
 
-    &#64;Override 
+    &#64;Override
     public void onListItemClick(ListView l, View v, int position, long id) {
         // Do something when a list item is clicked
     }
diff --git a/docs/html/guide/topics/ui/layout/relative.jd b/docs/html/guide/topics/ui/layout/relative.jd
index ca5cb48..92735ae 100644
--- a/docs/html/guide/topics/ui/layout/relative.jd
+++ b/docs/html/guide/topics/ui/layout/relative.jd
@@ -38,7 +38,7 @@
 views are drawn at the top-left of the layout, so you must define the position of each view
 using the various layout properties available from {@link
 android.widget.RelativeLayout.LayoutParams}.</p>
- 
+
 <p>Some of the many layout properties available to views in a {@link android.widget.RelativeLayout}
 include:</p>
 <dl>
diff --git a/docs/html/guide/topics/ui/menus.jd b/docs/html/guide/topics/ui/menus.jd
index ad2aa9b..73dec20 100644
--- a/docs/html/guide/topics/ui/menus.jd
+++ b/docs/html/guide/topics/ui/menus.jd
@@ -77,9 +77,9 @@
 "Search," "Compose email," and "Settings."
   <p>See the section about <a href="#options-menu">Creating an Options Menu</a>.</p>
     </dd>
-    
+
   <dt><strong>Context menu and contextual action mode</strong></dt>
-  
+
    <dd>A context menu is a <a href="#FloatingContextMenu">floating menu</a> that appears when the
 user performs a long-click on an element. It provides actions that affect the selected content or
 context frame.
@@ -88,7 +88,7 @@
 to select multiple items.</p>
   <p>See the section about <a href="#context-menu">Creating Contextual Menus</a>.</p>
 </dd>
-    
+
   <dt><strong>Popup menu</strong></dt>
     <dd>A popup menu displays a list of items in a vertical list that's anchored to the view that
 invoked the menu. It's good for providing an overflow of actions that relate to specific content or
@@ -130,7 +130,7 @@
   <dt><code>&lt;item></code></dt>
     <dd>Creates a {@link android.view.MenuItem}, which represents a single item in a menu. This
 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 &lt;item&gt;} elements. It allows you to
 categorize menu items so they share properties such as active state and visibility. For more
@@ -224,7 +224,7 @@
 <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 
+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 app bar (or by pressing the device <em>Menu</em> button, if available). To
@@ -343,7 +343,7 @@
 android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} only to create the initial
 menu state and not to make changes during the activity lifecycle.</p>
 
-<p>If you want to modify the options menu based on 
+<p>If you want to modify the options menu based on
 events that occur during the activity lifecycle, you can do so in
 the {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()} method. This
 method passes you the {@link android.view.Menu} object as it currently exists so you can modify it,
@@ -360,7 +360,7 @@
 call {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} to request that the
 system call {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
 
-<p class="note"><strong>Note:</strong> 
+<p class="note"><strong>Note:</strong>
 You should never change items in the options menu based on the {@link android.view.View} currently
 in focus. When in touch mode (when the user is not using a trackball or d-pad), views
 cannot take focus, so you should never use focus as the basis for modifying
@@ -738,8 +738,8 @@
 
 <pre>
 &lt;ImageButton
-    android:layout_width="wrap_content" 
-    android:layout_height="wrap_content" 
+    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" />
@@ -1023,6 +1023,6 @@
 <p>Read more about writing intent filters in the
 <a href="/guide/components/intents-filters.html">Intents and Intent Filters</a> document.</p>
 
-<p>For a sample application using this technique, see the 
+<p>For a sample application using this technique, see the
 <a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
 Pad</a> sample code.</p>
diff --git a/docs/html/guide/topics/ui/notifiers/toasts.jd b/docs/html/guide/topics/ui/notifiers/toasts.jd
index e5d4a0a..d962727 100644
--- a/docs/html/guide/topics/ui/notifiers/toasts.jd
+++ b/docs/html/guide/topics/ui/notifiers/toasts.jd
@@ -2,14 +2,14 @@
 @jd:body
 
 <div id="qv-wrapper">
-  <div id="qv">    
+  <div id="qv">
     <h2>In this document</h2>
     <ol>
       <li><a href="#Basics">The Basics</a></li>
       <li><a href="#Positioning">Positioning your Toast</a></li>
       <li><a href="#CustomToastView">Creating a Custom Toast View</a></li>
     </ol>
-    
+
     <h2>Key classes</h2>
     <ol>
       <li>{@link android.widget.Toast}</li>
@@ -19,14 +19,14 @@
 
 <p>A toast provides simple feedback about an operation in a small popup.
 It only fills the amount of space required for the message and the current
-activity remains visible and interactive. 
-For example, navigating away from an email before you send it triggers a 
-"Draft saved" toast to let you know that you can continue editing later. 
+activity remains visible and interactive.
+For example, navigating away from an email before you send it triggers a
+"Draft saved" toast to let you know that you can continue editing later.
 Toasts automatically disappear after a timeout.</p>
 
 <img src="{@docRoot}images/toast.png" alt="" />
 
-<p>If user response to a status message is required, consider instead using a 
+<p>If user response to a status message is required, consider instead using a
 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notification</a>.</p>
 
 
@@ -49,8 +49,8 @@
 </pre>
 
 <p>This example demonstrates everything you need for most toast notifications.
-You should rarely need anything else. You may, however, want to position the 
-toast differently or even use your own layout instead of a simple text message. 
+You should rarely need anything else. You may, however, want to position the
+toast differently or even use your own layout instead of a simple text message.
 The following sections describe how you can do these things.</p>
 
 <p>You can also chain your methods and avoid holding on to the Toast object, like this:</p>
@@ -61,7 +61,7 @@
 
 <p>A standard toast notification appears near the bottom of the screen, centered horizontally.
 You can change this position with the {@link android.widget.Toast#setGravity(int,int,int)}
-method. This accepts three parameters: a {@link android.view.Gravity} constant, 
+method. This accepts three parameters: a {@link android.view.Gravity} constant,
 an x-position offset, and a y-position offset.</p>
 
 <p>For example, if you decide that the toast should appear in the top-left corner, you can set the
@@ -70,7 +70,7 @@
 toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
 </pre>
 
-<p>If you want to nudge the position to the right, increase the value of the second parameter. 
+<p>If you want to nudge the position to the right, increase the value of the second parameter.
 To nudge it down, increase the value of the last parameter.
 
 
@@ -103,7 +103,7 @@
               android:textColor="#FFF"
               />
 &lt;/LinearLayout>
-</pre> 
+</pre>
 
 <p>Notice that the ID of the LinearLayout element is "toast_layout_root". You must use this
 ID to inflate the layout from the XML, as shown here:</p>
@@ -123,21 +123,21 @@
 toast.show();
 </pre>
 
-<p>First, retrieve the {@link android.view.LayoutInflater} with 
-{@link android.app.Activity#getLayoutInflater()} 
+<p>First, retrieve the {@link android.view.LayoutInflater} with
+{@link android.app.Activity#getLayoutInflater()}
 (or {@link android.content.Context#getSystemService(String) getSystemService()}),
-and then inflate the layout from XML using 
+and then inflate the layout from XML using
 {@link android.view.LayoutInflater#inflate(int, ViewGroup)}. The first parameter
 is the layout resource ID and the second is the root View. You can use
-this inflated layout to find more View objects in the layout, so now capture and 
+this inflated layout to find more View objects in the layout, so now capture and
 define the content for the ImageView and TextView elements. Finally, create
 a new Toast with {@link android.widget.Toast#Toast(Context)} and set some properties
 of the toast, such as the gravity and duration. Then call
 {@link android.widget.Toast#setView(View)} and pass it the inflated layout.
-You can now display the toast with your custom layout by calling 
+You can now display the toast with your custom layout by calling
 {@link android.widget.Toast#show()}.</p>
 
-<p class="note"><strong>Note:</strong> Do not use the public constructor for a Toast 
+<p class="note"><strong>Note:</strong> Do not use the public constructor for a Toast
 unless you are going to define the layout with {@link android.widget.Toast#setView(View)}.
 If you do not have a custom layout to use, you must use
 {@link android.widget.Toast#makeText(Context,int,int)} to create the Toast.</p>
diff --git a/docs/html/guide/topics/ui/overview.jd b/docs/html/guide/topics/ui/overview.jd
index 85c5756..f323d6c 100644
--- a/docs/html/guide/topics/ui/overview.jd
+++ b/docs/html/guide/topics/ui/overview.jd
@@ -39,7 +39,7 @@
 <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_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
     &lt;TextView android:id="@+id/text"
@@ -60,7 +60,7 @@
 <p>For a complete guide to creating a UI layout, see <a href="declaring-layout.html">XML
 Layouts</a>.
 
-  
+
 <h2 id="UIComponents">User Interface Components</h2>
 
 <p>You don't have to build all of your UI using {@link android.view.View} and {@link
diff --git a/docs/html/guide/topics/ui/settings.jd b/docs/html/guide/topics/ui/settings.jd
index 243c1c34..9e304a3 100644
--- a/docs/html/guide/topics/ui/settings.jd
+++ b/docs/html/guide/topics/ui/settings.jd
@@ -84,7 +84,7 @@
 
 <img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
 <p class="img-caption"><strong>Figure 1.</strong> Screenshots from the Android Messaging app's
-settings. Selecting an item defined by a {@link android.preference.Preference} 
+settings. Selecting an item defined by a {@link android.preference.Preference}
 opens an interface to change the setting.</p>
 
 
@@ -230,7 +230,7 @@
   <dt>{@code android:key}</dt>
   <dd>This attribute is required for preferences that persist a data value. It specifies the unique
 key (a string) the system uses when saving this setting's value in the {@link
-android.content.SharedPreferences}. 
+android.content.SharedPreferences}.
   <p>The only instances in which this attribute is <em>not required</em> is when the preference is a
 {@link android.preference.PreferenceCategory} or {@link android.preference.PreferenceScreen}, or the
 preference specifies an {@link android.content.Intent} to invoke (with an <a
@@ -291,7 +291,7 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;PreferenceCategory 
+    &lt;PreferenceCategory
         android:title="&#64;string/pref_sms_storage_title"
         android:key="pref_key_storage_settings">
         &lt;CheckBoxPreference
@@ -299,12 +299,12 @@
             android:summary="&#64;string/pref_summary_auto_delete"
             android:title="&#64;string/pref_title_auto_delete"
             android:defaultValue="false"... />
-        &lt;Preference 
+        &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 
+        &lt;Preference
             android:key="pref_key_mms_delete_limit"
             android:dependency="pref_key_auto_delete"
             android:summary="&#64;string/pref_summary_delete_limit"
@@ -594,11 +594,11 @@
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
@@ -678,15 +678,15 @@
 load.</p>
 
 <p>For example, here's an XML file for preference headers that is used on Android 3.0
-and higher ({@code res/xml/preference_headers.xml}):</p> 
+and higher ({@code res/xml/preference_headers.xml}):</p>
 
 <pre>
 &lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentOne"
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one" />
-    &lt;header 
+    &lt;header
         android:fragment="com.example.prefs.SettingsFragmentTwo"
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" />
@@ -698,18 +698,18 @@
 
 <pre>
 &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_one"
         android:summary="@string/prefs_summ_category_one"  >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_ONE" />
     &lt;/Preference>
-    &lt;Preference 
+    &lt;Preference
         android:title="@string/prefs_category_two"
         android:summary="@string/prefs_summ_category_two" >
-        &lt;intent 
+        &lt;intent
             android:targetPackage="com.example.prefs"
             android:targetClass="com.example.prefs.SettingsActivity"
             android:action="com.example.prefs.PREFS_TWO" />
@@ -982,11 +982,11 @@
 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);
     }
     ...
@@ -1201,7 +1201,7 @@
     // 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);
 }
diff --git a/docs/html/guide/topics/ui/themes.jd b/docs/html/guide/topics/ui/themes.jd
index f932dbd..436b789 100644
--- a/docs/html/guide/topics/ui/themes.jd
+++ b/docs/html/guide/topics/ui/themes.jd
@@ -177,7 +177,7 @@
 <p>The best place to find properties that apply to a specific {@link android.view.View} is the
 corresponding class reference, which lists all of the supported XML attributes. For example, all of the
 attributes listed in the table of
-<a href="{@docRoot}reference/android/widget/TextView.html#lattrs">TextView XML 
+<a href="{@docRoot}reference/android/widget/TextView.html#lattrs">TextView XML
 attributes</a> can be used in a style definition for a {@link android.widget.TextView} element (or one of
 its subclasses). One of the attributes listed in the reference is <a
 href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType">{@code
@@ -279,14 +279,14 @@
 <h3 id="ApplyATheme">Apply a theme to an Activity or application</h3>
 
 <p>To set a theme for all the activities of your application, open the {@code AndroidManifest.xml} file and
-edit the <code>&lt;application></code> tag to include the <code>android:theme</code> attribute with the 
+edit the <code>&lt;application></code> tag to include the <code>android:theme</code> attribute with the
 style name. For example:</p>
 
 <pre>
 &lt;application android:theme="@style/CustomTheme">
 </pre>
 
-<p>If you want a theme applied to just one Activity in your application, then add the 
+<p>If you want a theme applied to just one Activity in your application, then add the
 <code>android:theme</code> attribute to the <code>&lt;activity></code> tag instead.</p>
 
 <p>Just as Android provides other built-in resources, there are many pre-defined themes that you can use, to avoid
@@ -374,9 +374,9 @@
 for you to change your theme programatically (perhaps based on a user preference), you can.</p>
 
 <p>To set the theme in your program code, use the {@link android.content.ContextWrapper#setTheme(int)}
-method and pass it the theme resource ID. Note that, when doing so, you must be sure to set the theme <em>before</em> 
-instantiating any Views in the context, for example, before calling 
-<code>setContentView(View)</code> or <code>inflate(int, ViewGroup)</code>. This ensures that 
+method and pass it the theme resource ID. Note that, when doing so, you must be sure to set the theme <em>before</em>
+instantiating any Views in the context, for example, before calling
+<code>setContentView(View)</code> or <code>inflate(int, ViewGroup)</code>. This ensures that
 the system applies the same theme for all of your UI screens. Here's an example:</p>
 
 <pre>
@@ -391,7 +391,7 @@
 <p>If you are considering loading a theme programmatically for the main
 screen of your application, note that the theme would not be applied
 in any animations the system would use to start the activity, which
-would take place before your application opens. In most cases, if 
+would take place before your application opens. In most cases, if
 you want to apply a theme to your main screen, doing so in XML
  is a better approach. </p>
 
diff --git a/docs/html/guide/topics/ui/ui-events.jd b/docs/html/guide/topics/ui/ui-events.jd
index 6d41b15..7dd24a4 100644
--- a/docs/html/guide/topics/ui/ui-events.jd
+++ b/docs/html/guide/topics/ui/ui-events.jd
@@ -20,8 +20,8 @@
 When considering events within your user interface, the approach is to capture the events from
 the specific View object that the user interacts with. The View class provides the means to do so.</p>
 
-<p>Within the various View classes that you'll use to compose your layout, you may notice several public callback 
-methods that look useful for UI events. These methods are called by the Android framework when the 
+<p>Within the various View classes that you'll use to compose your layout, you may notice several public callback
+methods that look useful for UI events. These methods are called by the Android framework when the
 respective action occurs on that object. For instance, when a View (such as a Button) is touched,
 the <code>onTouchEvent()</code> method is called on that object. However, in order to intercept this, you must extend
 the class and override the method. However, extending every View object
@@ -30,7 +30,7 @@
 called <a href="#EventListeners">event listeners</a>, are your ticket to capturing the user interaction with your UI.</p>
 
 <p>While you will more commonly use the event listeners to listen for user interaction, there may
-come a time when you do want to extend a View class, in order to build a custom component. 
+come a time when you do want to extend a View class, in order to build a custom component.
 Perhaps you want to extend the {@link android.widget.Button}
 class to make something more fancy. In this case, you'll be able to define the default event behaviors for your
 class using the class <a href="#EventHandlers">event handlers</a>.</p>
@@ -38,7 +38,7 @@
 
 <h2 id="EventListeners">Event Listeners</h2>
 
-<p>An event listener is an interface in the {@link android.view.View} class that contains a single 
+<p>An event listener is an interface in the {@link android.view.View} class that contains a single
 callback method. These methods will be called by the Android framework when the View to which the listener has
 been registered is triggered by user interaction with the item in the UI.</p>
 
@@ -46,27 +46,27 @@
 
 <dl>
   <dt><code>onClick()</code></dt>
-    <dd>From {@link android.view.View.OnClickListener}. 
-    This is called when the user either touches the item 
+    <dd>From {@link android.view.View.OnClickListener}.
+    This is called when the user either touches the item
     (when in touch mode), or focuses upon the item with the navigation-keys or trackball and
     presses the suitable "enter" key or presses down on the trackball.</dd>
   <dt><code>onLongClick()</code></dt>
-    <dd>From {@link android.view.View.OnLongClickListener}. 
-    This is called when the user either touches and holds the item (when in touch mode), or 
+    <dd>From {@link android.view.View.OnLongClickListener}.
+    This is called when the user either touches and holds the item (when in touch mode), or
     focuses upon the item with the navigation-keys or trackball and
     presses and holds the suitable "enter" key or presses and holds down on the trackball (for one second).</dd>
   <dt><code>onFocusChange()</code></dt>
-    <dd>From {@link android.view.View.OnFocusChangeListener}. 
+    <dd>From {@link android.view.View.OnFocusChangeListener}.
     This is called when the user navigates onto or away from the item, using the navigation-keys or trackball.</dd>
   <dt><code>onKey()</code></dt>
-    <dd>From {@link android.view.View.OnKeyListener}. 
+    <dd>From {@link android.view.View.OnKeyListener}.
     This is called when the user is focused on the item and presses or releases a hardware key on the device.</dd>
   <dt><code>onTouch()</code></dt>
-    <dd>From {@link android.view.View.OnTouchListener}. 
+    <dd>From {@link android.view.View.OnTouchListener}.
     This is called when the user performs an action qualified as a touch event, including a press, a release,
     or any movement gesture on the screen (within the bounds of the item).</dd>
   <dt><code>onCreateContextMenu()</code></dt>
-    <dd>From {@link android.view.View.OnCreateContextMenuListener}. 
+    <dd>From {@link android.view.View.OnCreateContextMenuListener}.
     This is called when a Context Menu is being built (as the result of a sustained "long click"). See the discussion
     on context menus in the <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menus</a>
     developer guide.</dd>
@@ -75,8 +75,8 @@
 <p>These methods are the sole inhabitants of their respective interface. To define one of these methods
 and handle your events, implement the nested interface in your Activity or define it as an anonymous class.
 Then, pass an instance of your implementation
-to the respective <code>View.set...Listener()</code> method. (E.g., call 
-<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 
+to the respective <code>View.set...Listener()</code> method. (E.g., call
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
 and pass it your implementation of the {@link android.view.View.OnClickListener OnClickListener}.)</p>
 
 <p>The example below shows how to register an on-click listener for a Button. </p>
@@ -121,17 +121,17 @@
 no return value, but some other event listener methods must return a boolean. The reason
 depends on the event. For the few that do, here's why:</p>
 <ul>
-  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - 
-    This returns a boolean to indicate whether you have consumed the event and it should not be carried further. 
-    That is, return <em>true</em> to indicate that you have handled the event and it should stop here; 
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> -
+    This returns a boolean to indicate whether you have consumed the event and it should not be carried further.
+    That is, return <em>true</em> to indicate that you have handled the event and it should stop here;
     return <em>false</em> if you have not handled it and/or the event should continue to any other
     on-click listeners.</li>
-  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - 
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> -
     This returns a boolean to indicate whether you have consumed the event and it should not be carried further.
-    That is, return <em>true</em> to indicate that you have handled the event and it should stop here; 
+    That is, return <em>true</em> to indicate that you have handled the event and it should stop here;
     return <em>false</em> if you have not handled it and/or the event should continue to any other
     on-key listeners.</li>
-  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - 
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> -
     This returns a boolean to indicate whether your listener consumes this event. The important thing is that
     this event can have multiple actions that follow each other. So, if you return <em>false</em> when the
     down action event is received, you indicate that you have not consumed the event and are also
@@ -142,7 +142,7 @@
 <p>Remember that hardware key events are always delivered to the View currently in focus. They are dispatched starting from the top
 of the View hierarchy, and then down, until they reach the appropriate destination. If your View (or a child of your View)
 currently has focus, then you can see the event travel through the <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
-dispatchKeyEvent()}</code> method. As an alternative to capturing key events through your View, you can also receive 
+dispatchKeyEvent()}</code> method. As an alternative to capturing key events through your View, you can also receive
 all of the events inside your Activity with <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
 and <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
 
@@ -176,19 +176,19 @@
   <li><code>{@link  android.view.View#onTouchEvent}</code> - Called when a touch screen motion event occurs.</li>
   <li><code>{@link  android.view.View#onFocusChanged}</code> - Called when the view gains or loses focus.</li>
 </ul>
-<p>There are some other methods that you should be aware of, which are not part of the View class, 
-but can directly impact the way you're able to handle events. So, when managing more complex events inside 
+<p>There are some other methods that you should be aware of, which are not part of the View class,
+but can directly impact the way you're able to handle events. So, when managing more complex events inside
 a layout, consider these other methods:</p>
 <ul>
   <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
-    Activity.dispatchTouchEvent(MotionEvent)}</code> - This allows your {@link 
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - This allows your {@link
     android.app.Activity} to intercept all touch events before they are dispatched to the window.</li>
   <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
     ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - This allows a {@link
     android.view.ViewGroup} to watch events as they are dispatched to child Views.</li>
   <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
     ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Call this
-    upon a parent View to indicate that it should not intercept touch events with <code>{@link 
+    upon a parent View to indicate that it should not intercept touch events with <code>{@link
     android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
 </ul>
 
@@ -199,7 +199,7 @@
 what will accept input.  If the device has touch capabilities, however, and the user
 begins interacting with the interface by touching it, then it is no longer necessary to
 highlight items, or give focus to a particular View.  Thus, there is a mode
-for interaction named "touch mode." 
+for interaction named "touch mode."
 </p>
 <p>
 For a touch-capable device, once the user touches the screen, the device
@@ -214,7 +214,7 @@
 with the user interface without touching the screen.
 </p>
 <p>
-The touch mode state is maintained throughout the entire system (all windows and activities). 
+The touch mode state is maintained throughout the entire system (all windows and activities).
 To query the current state, you can call
 {@link android.view.View#isInTouchMode} to see whether the device is currently in touch mode.
 </p>
@@ -254,10 +254,10 @@
 
 <p>Ordinarily, in this vertical layout, navigating up from the first Button would not go
 anywhere, nor would navigating down from the second Button. Now that the top Button has
-defined the bottom one as the <var>nextFocusUp</var> (and vice versa), the navigation focus will 
+defined the bottom one as the <var>nextFocusUp</var> (and vice versa), the navigation focus will
 cycle from top-to-bottom and bottom-to-top.</p>
 
-<p>If you'd like to declare a View as focusable in your UI (when it is traditionally not), 
+<p>If you'd like to declare a View as focusable in your UI (when it is traditionally not),
 add the <code>android:focusable</code> XML attribute to the View, in your layout declaration.
 Set the value <var>true</var>. You can also declare a View
 as focusable while in Touch Mode with <code>android:focusableInTouchMode</code>.</p>
@@ -282,7 +282,7 @@
     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
diff --git a/docs/html/guide/webapps/debugging.jd b/docs/html/guide/webapps/debugging.jd
index a74797d..9e8e113 100755
--- a/docs/html/guide/webapps/debugging.jd
+++ b/docs/html/guide/webapps/debugging.jd
@@ -92,7 +92,7 @@
 <h2 id="WebView">Using Console APIs in WebView</h2>
 
 <p>All the console APIs shown above are also
-supported when debugging in {@link android.webkit.WebView}. 
+supported when debugging in {@link android.webkit.WebView}.
 If you're targeting Android 2.1 (API level 7) and higher, you must
 provide a {@link android.webkit.WebChromeClient}
 that implements the {@link android.webkit.WebChromeClient#onConsoleMessage(String,int,String)
diff --git a/docs/html/guide/webapps/targeting.jd b/docs/html/guide/webapps/targeting.jd
index 4a2ea17..10259b1 100644
--- a/docs/html/guide/webapps/targeting.jd
+++ b/docs/html/guide/webapps/targeting.jd
@@ -108,7 +108,7 @@
 
 
 <p>When optimizing your site for mobile devices, you should usually set the width to
-{@code "device-width"} so the size fits exactly on all devices, then use CSS media queries to 
+{@code "device-width"} so the size fits exactly on all devices, then use CSS media queries to
 flexibly adapt layouts to suit different screen sizes.
 
 <p class="note"><strong>Note:</strong> You should disable user scaling only when you're certain
diff --git a/docs/html/images/cards/distribute/stories/aftenposten.png b/docs/html/images/cards/distribute/stories/aftenposten.png
new file mode 100644
index 0000000..60cb851
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/aftenposten.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/el-mundo.png b/docs/html/images/cards/distribute/stories/el-mundo.png
new file mode 100644
index 0000000..23db783
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/el-mundo.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/segundamano.png b/docs/html/images/cards/distribute/stories/segundamano.png
new file mode 100644
index 0000000..60e873c
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/segundamano.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/tapps.png b/docs/html/images/cards/distribute/stories/tapps.png
new file mode 100644
index 0000000..e01e3ad
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/tapps.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/witch-puzzle.png b/docs/html/images/cards/distribute/stories/witch-puzzle.png
new file mode 100644
index 0000000..c336f1b
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/witch-puzzle.png
Binary files differ
diff --git a/docs/html/images/distribute/google-sign-in-banner.png b/docs/html/images/distribute/google-sign-in-banner.png
new file mode 100644
index 0000000..ba04686
--- /dev/null
+++ b/docs/html/images/distribute/google-sign-in-banner.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/aftenposten-icon.png b/docs/html/images/distribute/stories/aftenposten-icon.png
new file mode 100644
index 0000000..60cb851
--- /dev/null
+++ b/docs/html/images/distribute/stories/aftenposten-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/el-mundo-icon.png b/docs/html/images/distribute/stories/el-mundo-icon.png
new file mode 100644
index 0000000..23db783
--- /dev/null
+++ b/docs/html/images/distribute/stories/el-mundo-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/japanese-witch-puzzle.png b/docs/html/images/distribute/stories/japanese-witch-puzzle.png
new file mode 100644
index 0000000..6a7ef13
--- /dev/null
+++ b/docs/html/images/distribute/stories/japanese-witch-puzzle.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/segundamano-icon.png b/docs/html/images/distribute/stories/segundamano-icon.png
new file mode 100644
index 0000000..60e873c
--- /dev/null
+++ b/docs/html/images/distribute/stories/segundamano-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-candy-hills.png b/docs/html/images/distribute/stories/tapps-candy-hills.png
new file mode 100644
index 0000000..14dcb94
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-candy-hills.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-orig-1.png b/docs/html/images/distribute/stories/tapps-icon-orig-1.png
new file mode 100644
index 0000000..44af423
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-orig-1.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-orig-2.png b/docs/html/images/distribute/stories/tapps-icon-orig-2.png
new file mode 100644
index 0000000..1b36255
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-orig-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-orig-3.png b/docs/html/images/distribute/stories/tapps-icon-orig-3.png
new file mode 100644
index 0000000..2f393f8
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-orig-3.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-var-1-2.png b/docs/html/images/distribute/stories/tapps-icon-var-1-2.png
new file mode 100644
index 0000000..fecab6e
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-var-1-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-var-1.png b/docs/html/images/distribute/stories/tapps-icon-var-1.png
new file mode 100644
index 0000000..77bd02a
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-var-1.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-var-2-2.png b/docs/html/images/distribute/stories/tapps-icon-var-2-2.png
new file mode 100644
index 0000000..84166c4
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-var-2-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-var-2.png b/docs/html/images/distribute/stories/tapps-icon-var-2.png
new file mode 100644
index 0000000..939c2fd
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-var-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-var-3-2.png b/docs/html/images/distribute/stories/tapps-icon-var-3-2.png
new file mode 100644
index 0000000..4aa782d
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-var-3-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-icon-var-3.png b/docs/html/images/distribute/stories/tapps-icon-var-3.png
new file mode 100644
index 0000000..1e44fdf
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-icon-var-3.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-logic-pic.png b/docs/html/images/distribute/stories/tapps-logic-pic.png
new file mode 100644
index 0000000..5029f79
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-logic-pic.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-logo.png b/docs/html/images/distribute/stories/tapps-logo.png
new file mode 100644
index 0000000..e01e3ad
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-logo.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-screen-orig-1.png b/docs/html/images/distribute/stories/tapps-screen-orig-1.png
new file mode 100644
index 0000000..d54e75c
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-screen-orig-1.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-screen-orig-2.png b/docs/html/images/distribute/stories/tapps-screen-orig-2.png
new file mode 100644
index 0000000..a2d18e3
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-screen-orig-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-screen-orig-3.png b/docs/html/images/distribute/stories/tapps-screen-orig-3.png
new file mode 100644
index 0000000..e01fe20
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-screen-orig-3.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-screen-var-1.png b/docs/html/images/distribute/stories/tapps-screen-var-1.png
new file mode 100644
index 0000000..b930350
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-screen-var-1.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-screen-var-2.png b/docs/html/images/distribute/stories/tapps-screen-var-2.png
new file mode 100644
index 0000000..9ccb8a6
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-screen-var-2.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-screen-var-3.png b/docs/html/images/distribute/stories/tapps-screen-var-3.png
new file mode 100644
index 0000000..8eb58e1
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-screen-var-3.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tapps-villains-corp.png b/docs/html/images/distribute/stories/tapps-villains-corp.png
new file mode 100644
index 0000000..6e037da
--- /dev/null
+++ b/docs/html/images/distribute/stories/tapps-villains-corp.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/witch-puzzle-icon.png b/docs/html/images/distribute/stories/witch-puzzle-icon.png
new file mode 100644
index 0000000..c336f1b
--- /dev/null
+++ b/docs/html/images/distribute/stories/witch-puzzle-icon.png
Binary files differ
diff --git a/docs/html/images/training/tv/tif/app-link-2x.png b/docs/html/images/training/tv/tif/app-link-2x.png
new file mode 100644
index 0000000..d9d0582
--- /dev/null
+++ b/docs/html/images/training/tv/tif/app-link-2x.png
Binary files differ
diff --git a/docs/html/images/training/tv/tif/app-link-diagram.png b/docs/html/images/training/tv/tif/app-link-diagram.png
new file mode 100644
index 0000000..92328ad
--- /dev/null
+++ b/docs/html/images/training/tv/tif/app-link-diagram.png
Binary files differ
diff --git a/docs/html/images/training/tv/tif/app-link.png b/docs/html/images/training/tv/tif/app-link.png
new file mode 100644
index 0000000..7573a18
--- /dev/null
+++ b/docs/html/images/training/tv/tif/app-link.png
Binary files differ
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index 434f211..5c42277 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -2887,6 +2887,19 @@
     "lang": "en",
     "group": "",
     "tags": [],
+    "url": "https://www.udacity.com/courses/ud876-3",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Learn how to show ads in your Android app",
+    "summary": "Take this online course to learn how to use AdMob to display ads in your Android app.",
+    "keywords": ["marketing", "analytics"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
     "url": "https://developers.google.com/mobile-ads-sdk/download",
     "timestamp": null,
     "image": "distribute/images/advertising.jpg",
@@ -2969,7 +2982,7 @@
     "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",
+    "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",
diff --git a/docs/html/license.jd b/docs/html/license.jd
index 4f4036b..e843c6b 100644
--- a/docs/html/license.jd
+++ b/docs/html/license.jd
@@ -9,7 +9,7 @@
 <p>For the purposes of licensing, the content of this web site is divided
 into two categories:</p>
 <ul>
-  <li>Documentation content, including both static documentation and content extracted from source 
+  <li>Documentation content, including both static documentation and content extracted from source
   code modules, as well as sample code, and </li>
 <li>All other site content</li>
 </ul>
@@ -66,7 +66,7 @@
 license, note that proprietary trademarks and brand features are not
 included in that license.</li>
 
-<li>Google's trademarks and other brand features (including the 	
+<li>Google's trademarks and other brand features (including the
 <img src="images/android-logo.png" alt="Android"
 style="margin:0;padding:0 2px;vertical-align:baseline" /> stylized typeface logo) are not included
 in the license.
@@ -74,7 +74,7 @@
 href="{@docRoot}distribute/tools/promote/brand.html">Brand Guidelines</a> for
 information about this usage. </li>
 
-<li>In some cases, a page may include content, such as an image, that is not 
+<li>In some cases, a page may include content, such as an image, that is not
 covered by the license. In that case, we will label the content that is not licensed. </li>
 
 <li>In addition, content linked from a page on this site is not covered
@@ -92,22 +92,22 @@
 versions of content that appears on a page made available under the
 terms of the Creative Commons Attribution license. On this site, the
 requirement for attribution applies only to the non-documentation
-content, as described earlier in this document. The complete 
-requirements for attribution can be found in section 4b of the 
+content, as described earlier in this document. The complete
+requirements for attribution can be found in section 4b of the
 <a href="http://creativecommons.org/licenses/by/2.5/legalcode">
 Creative Commons legal code</a>.
 </p>
 <p>
  In practice we ask that you provide attribution to the Android Open
- Source project to the best of the ability of the medium in which you 
- are producing the work. There are several typical ways in which this 
+ Source project to the best of the ability of the medium in which you
+ are producing the work. There are several typical ways in which this
  might apply:
 </p>
 <h3>Exact Reproductions</h3>
 <p>
  If your online work <em>exactly reproduces</em> text or images from this
  site, in whole or in part, please include a paragraph at the bottom
- of your page that reads: 
+ of your page that reads:
 </p>
 <p style="margin-left:20px;font-style:italic">
  Portions of this page are reproduced from work created and <a
diff --git a/docs/html/preview/_project.yaml b/docs/html/preview/_project.yaml
new file mode 100644
index 0000000..3ec851a
--- /dev/null
+++ b/docs/html/preview/_project.yaml
@@ -0,0 +1,5 @@
+name: "Preview"
+home_url: /preview/
+description: "Android N final SDK is now available."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 3373fc4..c7ffb7a 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -27,6 +27,7 @@
         <li><a href="#multi-locale_languages">Locales and Languages</a></li>
         <li><a href="#emoji">New Emojis</a></li>
         <li><a href="#icu4">ICU4J APIs in Android</a></li>
+        <li><a href="#webview">WebView</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>
@@ -573,7 +574,85 @@
   "{@docRoot}preview/features/icu4j-framework.html">ICU4J Support</a>.
 </p>
 
+<h2 id="webview">WebView</h2>
 
+<h3>Chrome + WebView, Together</h3>
+
+<p>
+  Starting with Chrome version 51 on Android N and above, the Chrome APK on your device
+  is used to provide and render Android System WebViews. This approach improves memory
+  usage on the device itself and also reduces the bandwidth required to keep
+  WebView up to date (as the standalone WebView APK will no longer be updated
+  as long as Chrome remains enabled).
+</p>
+
+<p>
+  You can choose your WebView provider by enabling Developer Options and
+  selecting <strong>WebView implementation</strong>. You can use any compatible
+  Chrome version (Dev, Beta or Stable) that is installed on your device or the
+  standalone Webview APK to act as the WebView implementation.
+</p>
+
+<h3>Multiprocess</h3>
+
+<p>
+  Starting with Chrome version 51 in Android N, WebView will run web content in a
+  separate sandboxed process when the developer option "Multiprocess WebView"
+  is enabled.
+</p>
+
+<p>
+  We're looking for feedback on compatibility and runtime performance in N
+  before enabling multiprocess WebView in a future version of Android. In this
+  version, regressions in startup time, total memory usage and software
+  rendering performance are expected.
+</p>
+
+<p>
+  If you find unexpected issues in multiprocess mode we’d like to hear about
+  them. Please get in touch with the WebView team on the <a href=
+  "https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs"
+  >Chromium bug tracker</a>.
+</p>
+
+<h3>Javascript run before page load</h3>
+<p>
+  Starting with apps targeting Android N, the Javascript context will be reset
+  when a new page is loaded. Currently, the context is carried over for the
+  first page loaded in a new WebView instance.
+</p>
+
+<p>
+  Developers looking to inject Javascript into the WebView should execute the
+  script after the page has started to load.
+</p>
+
+<h3>Geolocation on insecure origins</h3>
+
+<p>
+  Starting with apps targeting Android N, the geolocation API will only be
+  allowed on secure origins (over HTTPS.) This policy is designed to protect
+  users’ private information when they’re using an insecure connection.
+</p>
+
+<h3>Testing with WebView Beta</h3>
+
+<p>
+  WebView is updated regularly, so we recommend that you test compatibility
+  with your app frequently using WebView’s beta channel. To get started testing
+  pre-release versions of WebView on Android N, download and install either
+  Chrome Dev or Chrome Beta, and select it as the WebView implementation under
+  developer options as described above. Please report issues via the <a href=
+  "https://bugs.chromium.org/p/chromium/issues/entry?template=Webview%20Bugs">Chromium
+  bug tracker</a> so that we can fix them before a new version of WebView is
+  released.
+</p>
+
+<p>
+  If you have any other questions or issues, feel free to reach out to the
+  WebView team via our <a href=
+  "https://plus.google.com/communities/105434725573080290360">G+ community</a>.
+</p>
 
 <h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
 
@@ -667,8 +746,9 @@
 
 <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>.
+  <code>VPNService</code> methods using
+  <strong>Settings&gt;More&gt;Vpn</strong>. The option to enable Always on VPN
+  from Settings is available only if VPN client targets API level 24.
 </p>
 
 <h3 id="custom_provisioning">Customized provisioning</h3>
@@ -755,6 +835,20 @@
   on the device.
 </p>
 
+<p class="note">
+  <strong>Note: </strong>Only a small number of devices running Android N
+  support hardware-level key attestation; all other devices running Android N
+  use software-level key attestation instead. Before you verify the properties
+  of a device's hardware-backed keys in a production-level environment, you
+  should make sure that the device supports hardware-level key attestation. To
+  do so, you should check that the attestation certificate chain contains a root
+  certificate that is signed by the Google attestation root key and that the
+  <code>attestationSecurityLevel</code> element within the <a
+  href="{@docRoot}preview/features/key-attestation.html#certificate_schema_keydescription">key
+  description</a> data structure is set to the TrustedEnvironment security
+  level.
+</p>
+
 <p>
   For more information, see the
   <a href="{@docRoot}preview/features/key-attestation.html">Key Attestation</a>
diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/preview/behavior-changes.jd
index 3a37295..ba08d9b 100644
--- a/docs/html/preview/behavior-changes.jd
+++ b/docs/html/preview/behavior-changes.jd
@@ -748,6 +748,40 @@
   to the trusted credentials storage via Settings UI separately, with a
   DER-encoded format under a .crt or .cer file extension.
   </li>
+
+  <li>Starting in Android N, fingerprint enrollment and storage are managed per user.
+  If a profile owner’s Device Policy Client (DPC) targets pre-N on an N device,
+  the user is still able to set fingerprint on the device, but work
+  applications cannot access device fingerprint. When the DPC targets N and
+  above, the user can set fingerprint specifically for work profile by going to
+  <strong>Settings &gt; Security &gt; Work profile security</strong>.
+  </li>
+
+  <li>A new encryption status <code>ENCRYPTION_STATUS_ACTIVE_PER_USER</code> is
+  returned by <code>DevicePolicyManager.getStorageEncryptionStatus()</code>, to
+  indicate that encryption is active and the encryption key is tied to the
+  user. The new status is only returned if DPC targets API Level 24 and above.
+  For apps targeting earlier API levels, <code>ENCRYPTION_STATUS_ACTIVE</code>
+  is returned, even if the encryption key is specific to the user or profile.
+  </li>
+
+  <li>In Android N, several methods that would ordinarily affect the entire
+  device behave differently if the device has a work profile installed with a
+  separate work challenge. Rather than affecting the entire device, these
+  methods apply only to the work profile. (The complete list of such methods is
+  in the {@link android.app.admin.DevicePolicyManager#getParentProfileInstance
+  DevicePolicyManager.getParentProfileInstance()} documentation.) For example,
+  {@link android.app.admin.DevicePolicyManager#lockNow
+  DevicePolicyManager.lockNow()} locks just the work profile, instead of
+  locking the entire device. For each of these methods, you can get the old
+  behavior by calling the method on the parent instance of the
+  {@link android.app.admin.DevicePolicyManager}; you can get this parent by
+  calling {@link android.app.admin.DevicePolicyManager#getParentProfileInstance
+  DevicePolicyManager.getParentProfileInstance()}. So for example, if you call
+  the parent instance's {@link android.app.admin.DevicePolicyManager#lockNow}
+  method, the entire device is locked.
+  </li>
+
 </ul>
 
 <p>
diff --git a/docs/html/preview/download-ota.jd b/docs/html/preview/download-ota.jd
index 18f3e8d..65f7f9f 100644
--- a/docs/html/preview/download-ota.jd
+++ b/docs/html/preview/download-ota.jd
@@ -203,72 +203,72 @@
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >bullhead-ota-npd56n-dd5c12ee.zip</a><br>
-      MD5: af9a82e9a78925ca9c1c7f5f6fb851ec<br>
-      SHA-1: e4aabd5634b7ebdeffa877cd9e49244c0be326e4
+      >bullhead-ota-npd90g-0a874807.zip</a><br>
+      MD5: 4b83b803fac1a6eec13f66d0afc6f46e<br>
+      SHA-1: a9920bcc8d475ce322cada097d085448512635e2
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-npd56n-2818fd62.zip</a><br>
-      MD5: d8df396b187a8667889260e5464bd676<br>
-      SHA-1: c03c8ef8be587a574565855d4faa526254794e03
+      >shamu-ota-npd90g-06f5d23d.zip</a><br>
+      MD5: 513570bb3a91878c2d1a5807d2340420<br>
+      SHA-1: 2d2f40636c95c132907e6ba0d10b395301e969ed
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-npd56n-d2f2611c.zip</a><br>
-      MD5: c3c206892d414d4fc7da892ff840eada<br>
-      SHA-1: 2bdc79409ace5e163ef014ae51977d0a71b83df5
+      >angler-ota-npd90g-5baa69c2.zip</a><br>
+      MD5: 096fe26c5d50606a424d2f3326c0477b<br>
+      SHA-1: 468d2e7aea444505513ddc183c85690c00fab0c1
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-npd56n-42228a60.zip</a><br>
-      MD5: c80cf483d8b3c014fc7b27f80957a158<br>
-      SHA-1: f437829320f47ea3aa5f8b70ce2f0bb3d30b3f4f
+      >volantis-ota-npd90g-c04785e1.zip</a><br>
+      MD5: 6aecd3b0b3a839c5ce1ce4d12187b03e<br>
+      SHA-1: 31633180635b831e59271a7d904439f278586f49
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-npd56n-9b4dbaac.zip</a><br>
-      MD5: 9e55ac1650e4f07a662bafa7f082e91c<br>
-      SHA-1: b9982be56c2817d122664869a1fbe9b13e9c72f7
+      >volantisg-ota-npd90g-c56aa1b0.zip</a><br>
+      MD5: 0493fa79763d67bcdde8007299e1888d<br>
+      SHA-1: f709daf81968a1b27ed41fe40d42e0d106f3c494
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-npd56n-b305968a.zip</a><br>
-      MD5: dfc980acad6772d8473ccaa9cbbb681a<br>
-      SHA-1: d7bf8192649dea970afda165d181b4eea07abd7d
+      >fugu-ota-npd90g-3a0643ae.zip</a><br>
+      MD5: 9c38b6647fe5a4f2965196b7c409f0f7<br>
+      SHA-1: 77c6fb05191f0c2ae0956bae18f1c80b2f922f05
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-npd56n-5bf2fd66.zip</a><br>
-      MD5: 1699e4bacfbef16a75ae6cf3f2e3d886<br>
-      SHA-1: e20f3a8e43fcdd6acef21da80894afc8f9474e33
+      >ryu-ota-npd90g-ec931914.zip</a><br>
+      MD5: 4c6135498ca156a9cdaf443ddfdcb2ba<br>
+      SHA-1: 297cc9a204685ef5507ec087fc7edf5b34551ce6
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-ota-npd56n-a322696c.zip</a><br>
-      MD5: afc0e363ad2fd7418423e189a339a8e9<br>
-      SHA-1: fc4d818878df51894eac29932dd0e9f6511329c6
+      >seed_l8150-ota-npd90g-dcb0662d.zip</a><br>
+      MD5: f40ea6314a13ea6dd30d0e68098532a2<br>
+      SHA-1: 11af10b621f4480ac63f4e99189d61e1686c0865
     </td>
   </tr>
 
diff --git a/docs/html/preview/download.jd b/docs/html/preview/download.jd
index ad82211..e4db890 100644
--- a/docs/html/preview/download.jd
+++ b/docs/html/preview/download.jd
@@ -219,14 +219,26 @@
 </p>
 
 <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>
+  <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. When the next version of
+    Android is released, your device will automatically update to the final
+    version. This approach is recommended because it lets you seamlessly
+    transition from your current environment, through the various releases of
+    the N Developer Preview, to the release version.
+  </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. When the next version of Android is released,
+    you can download the final device image from the <a href=
+    "https://developers.google.com/android/nexus/images" type=
+    "external-link">factory images</a> page.
+  </li>
 </ul>
 
 <h3 id="ota">Enroll the device in automatic OTA updates</h3>
@@ -234,9 +246,11 @@
 <p>
   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.
+  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. When the next version of
+  Android is released, the device will automatically update to the production
+  version.
 </p>
 
 <p>
@@ -282,7 +296,8 @@
 <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
+  milestone builds or the final, production version. Make sure to keep your
+  environment up-to-date and flash a
   new system image at each Developer Preview milestone.
 </p>
 
@@ -302,81 +317,72 @@
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >bullhead-npd56n-factory-996cac57.tgz</a><br>
-      MD5: 5aadba91f60de00d58dc6198ef5cc3ba<br>
-      SHA-1: 996cac575d83bde573315290da8f52cecc4127d2
+      >bullhead-npd90g-factory-7a0ca1bc.tgz</a><br>
+      MD5: e7a9a3061335c1e0c8be2588f13290af<br>
+      SHA-1: 7a0ca1bcfa51bbefde34243603bc79c7dec214a1
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npd56n-factory-7936bf75.tgz</a><br>
-      MD5: b7ed0db569f3bc2d6655fe8d8cea0e13<br>
-      SHA-1: 7936bf75e6bfb771bd14485211a319b246311b96
+      >shamu-npd90g-factory-f7a4e3a9.tgz</a><br>
+      MD5: 2fb572ddcfca67bb1d741be97492a9ed<br>
+      SHA-1: f7a4e3a96c797827492998e855c8f9efbfc8559a
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >angler-npd56n-factory-1ce5ccad.tgz</a><br>
-      MD5: f296eccaed4e2526d6435df8cf0e8df1<br>
-      SHA-1: 1ce5ccad8a3eae143e0ecd9c7afbb1be2f1d41cc
+      >angler-npd90g-factory-cd9ac81e.tgz</a><br>
+      MD5: 2370c30f3ef1d0684c1de5216a5d90fe<br>
+      SHA-1: cd9ac81ec7f4a646ac6054eecbf2ea4c4b89b054
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npd56n-factory-8b9f997e.tgz</a><br>
-      MD5: 111c2fe5777dd6aae71fb8ef35dda9d3<br>
-      SHA-1: 8b9f997ea39fdaf505527536bd346948ae1bae30
+      >volantis-npd90g-factory-41b55406.tgz</a><br>
+      MD5: cefa78950141da2a7c75e887717e3c8f<br>
+      SHA-1: 41b554060263a7ef16e4be8422cbd6caca26e00f
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npd56n-factory-ef05106a.tgz</a><br>
-      MD5: 3a6f4d47b385966347bd26b7a922cd6e<br>
-      SHA-1: ef05106a9e3becea5673ea67d6c0cc21a2ec09d4
+      >volantisg-npd90g-factory-610492be.tgz</a><br>
+      MD5: 2f36dc0d0fab02ab78be500677ec239f<br>
+      SHA-1: 610492bedfc4127023040ecb2c89239a78a900ad
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npd56n-factory-a51674a1.tgz</a><br>
-      MD5: b75dc745a64848ea24124db8fa9252ed<br>
-      SHA-1: a51674a1303b17fec0405d513f9c0fe9f225780f
+      >fugu-npd90g-factory-0fe95694.tgz</a><br>
+      MD5: f4cb48f919e4c29c631de21416c612e2<br>
+      SHA-1: 0fe95694e7bc41e4c3ac0e4438cd77102a0aa8b4
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npd56n-factory-e36c49b1.tgz</a><br>
-      MD5: 0a2d660b09e19614a5b3573487b88066<br>
-      SHA-1: e36c49b184843cdfe10278aebc04ce50b6d670b6
+      >ryu-npd90g-factory-f4da981c.tgz</a><br>
+      MD5: d9f0e40b6c20d274831e8a7d285fd887<br>
+      SHA-1: f4da981c70576133321e2858e52fe2c990e68a75
     </td>
   </tr>
 
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npd56n-factory-dd5d4fd2.tgz</a><br>
-      MD5: 3420581b969af777753141dacc7f73b9<br>
-      SHA-1: dd5d4fd203f9c5dad658434c0ff370c411b78835
-    </td>
-  </tr>
-
-  <tr id="xperia">
-    <td>Sony Xperia Z3 <br> (D6603 and D6653)</td>
-    <td>Download: <a class="external-link"
-      href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
-      For more information, see <a class="external-link"
-      href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Try Android N Developer Preview for Xperia Z3</a>.
+      >seed_l8150-npd90g-factory-48f59c99.tgz</a><br>
+      MD5: 0ed565c509594072822d71c65b48ec8e<br>
+      SHA-1: 48f59c99ac43d1cd2f5656a283bb9868581663a8
     </td>
   </tr>
 
diff --git a/docs/html/preview/features/direct-boot.jd b/docs/html/preview/features/direct-boot.jd
index 8351f4b..60f6141 100644
--- a/docs/html/preview/features/direct-boot.jd
+++ b/docs/html/preview/features/direct-boot.jd
@@ -14,6 +14,7 @@
     <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>
+    <li><a href="#dpm">Checking Device Policy Encryption Status</a></li>
   </ol>
 </div>
 </div>
@@ -186,3 +187,34 @@
 </pre>
 
 <p>Using these commands causes the device to reboot.</p>
+
+<h2 id="dpm">Checking Device Policy Encryption Status</h2>
+
+<p>Device administration apps can use
+{@link android.app.admin.DevicePolicyManager#getStorageEncryptionStatus
+DevicePolicyManager.getStorageEncryptionStatus()} to check the current
+encryption status of the device. If your app is targeting an API level
+lower than Android N,
+{@link android.app.admin.DevicePolicyManager#getStorageEncryptionStatus
+getStorageEncryptionStatus()} will return
+{@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE
+ENCRYPTION_STATUS_ACTIVE} if the device is either using full-disk encryption,
+or file-based encryption with Direct Boot. In both of these cases, data is
+always stored encrypted at rest. If your app is targeting an API level of
+Android N or higher,
+{@link android.app.admin.DevicePolicyManager#getStorageEncryptionStatus
+getStorageEncryptionStatus()} will return
+{@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE
+ENCRYPTION_STATUS_ACTIVE} if the device is using full-disk encryption. It will
+return
+{@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE_PER_USER
+ENCRYPTION_STATUS_ACTIVE_PER_USER} if the device is using file-based encryption
+with Direct Boot.</p>
+
+<p>If you build a device administration app
+that targets Android N, make sure to check for both
+{@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE
+ENCRYPTION_STATUS_ACTIVE} and
+{@link android.app.admin.DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE_PER_USER
+ENCRYPTION_STATUS_ACTIVE_PER_USER} to determine if the device is
+encrypted.</p>
diff --git a/docs/html/preview/features/key-attestation.jd b/docs/html/preview/features/key-attestation.jd
index 98b8340..5be6dfa 100644
--- a/docs/html/preview/features/key-attestation.jd
+++ b/docs/html/preview/features/key-attestation.jd
@@ -21,6 +21,19 @@
   interpret the schema of the attestation certificate's extension data.
 </p>
 
+<p class="note">
+  <strong>Note: </strong>Only a small number of devices running Android N
+  support hardware-level key attestation; all other devices running Android N
+  use software-level key attestation instead. Before you verify the properties
+  of a device's hardware-backed keys in a production-level environment, you
+  should make sure that the device supports hardware-level key attestation. To
+  do so, you should check that the attestation certificate chain contains a root
+  certificate that is signed by the Google attestation root key and that the
+  <code>attestationSecurityLevel</code> element within the <a
+  href="#certificate_schema_keydescription">key description</a> data structure
+  is set to the TrustedEnvironment security level.
+</p>
+
 <h2 id="verifying">
   Retrieving and Verifying a Hardware-backed Key Pair
 </h2>
@@ -227,8 +240,8 @@
       level</a> of the attestation.
     </p>
 
-    <p class="note">
-      <strong>Note:</strong> Although it is possible to attest keys that are
+    <p class="caution">
+      <strong>Warning:</strong> Although it is possible to attest keys that are
       stored in the Android system&mdash;that is, if the
       <code>attestationSecurity</code> value is set to Software&mdash;you
       cannot trust these attestations if the Android system becomes compromised.
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd
index af449cb..fd65e12 100644
--- a/docs/html/preview/features/notification-updates.jd
+++ b/docs/html/preview/features/notification-updates.jd
@@ -395,5 +395,6 @@
                  .addMessage("Hi", timestamp1, null) // Pass in null for user.
                  .addMessage("What's up?", timestamp2, "Coworker")
                  .addMessage("Not much", timestamp3, null)
-                 .addMessage("How about lunch?", timestamp4, "Coworker"));
+                 .addMessage("How about lunch?", timestamp4, "Coworker"))
+             .build();
 </pre>
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
index faf48b8..601442e 100644
--- a/docs/html/preview/overview.jd
+++ b/docs/html/preview/overview.jd
@@ -157,7 +157,7 @@
   <li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong> (incremental update, alpha)</li>
   <li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></strong> (incremental update, beta)</li>
   <li><strong><a href="{@docRoot}preview/support.html#dp4">Preview 4</a></strong> (final APIs and official SDK, Play publishing)</li>
-  <li><strong>Preview 5</strong> (near-final system images for final testing)</li>
+  <li><strong><a href="{@docRoot}preview/support.html#dp5">Preview 5</a></strong> (near-final system images for final testing)</li>
   <li><strong>Final release</strong> to AOSP and ecosystem</li>
 </ul>
 
@@ -433,8 +433,10 @@
   <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> Follow the <a href="{@docRoot}preview/download.html">
+  instructions</a> to update your device to the latest build of the N Developer
+  Preview. The easiest way is to enroll your device in
+  <a href="https://www.google.com/android/beta">Android Beta</a> program. </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.
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
index 3e95f3e..ff11e8e 100644
--- a/docs/html/preview/setup-sdk.jd
+++ b/docs/html/preview/setup-sdk.jd
@@ -77,32 +77,10 @@
 <h3 id="docs-dl">Get the N Preview reference documentation</h3>
 
 <p>Beginning with the Preview 4 release, the API reference for the
-N platform (API level 24) is now available online at <a href=
-  "{@docRoot}reference/">developer.android.com/reference/</a>.
-</p>
-
-<p>If you'd like an offline copy of the API reference, you can download it
-from the following table. The download also includes an incremental diff report
-for API changes between the Preview 3 and Preview 4 release, which is not
-available online.</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-4-docs.zip"
-      >n-preview-4-docs.zip</a></td>
-    <td width="100%">
-      MD5: f853e3ba0707083336dfa780b8fed9a7<br>
-      SHA-1: 36fcbc497cc2e63b1bc1d629c304b0ba43a88946
-    </td>
-  </tr>
-</table>
-
-
+  N platform (API level 24) is now available online at <a href=
+  "{@docRoot}reference/">developer.android.com/reference/</a>. There is also
+  an incremental diff report for <a href="{@docRoot}sdk/api_diff/24/changes.html"
+  >API changes between API levels 23 and 24</a>.</p>
 
 <h2 id="java8">Get the Java 8 JDK</h2>
 
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
index ef8a652..0d0d9db 100644
--- a/docs/html/preview/support.jd
+++ b/docs/html/preview/support.jd
@@ -12,14 +12,16 @@
 <h2>In this document</h2>
 
 <ul>
-  <li><a href="#dp4">Developer Preview 4</a>
+  <li><a href="#dp5">Developer Preview 5</a>
     <ul>
       <li><a href="#general">General advisories</a></li>
-      <li><a href="#new">New in DP4</a></li>
+      <li><a href="#new">New in DP5</a></li>
       <li><a href="#ki">Known issues</a></li>
-      <li><a href="#upgrade-notes">Notes on publishing apps that target API 24</a></li>
+      <li><a href="#upgrade-notes">Notes on publishing apps
+      that target API 24</a></li>
     </ul>
   </li>
+  <li><a href="#dp4">Developer Preview 4</a></li>
   <li><a href="#dp3">Developer Preview 3</a></li>
   <li><a href="#dp2">Developer Preview 2</a></li>
   <li><a href="#dp1">Developer Preview 1</a></li>
@@ -50,6 +52,189 @@
   community</a>.
 </p>
 
+<h2 id="dp5">Developer Preview 5</h2>
+
+<div class="cols">
+  <div class="col-6of12">
+    <p>
+      <em>Date: July 2016<br>
+      Build: NPD90G<br>
+      Emulator support: x86 &amp; ARM (32/64-bit)<br>
+      Google Play services: 8.4</em>
+    </p>
+  </div>
+</div>
+
+<h3 id="general">General advisories</h3>
+
+<p>
+  This Developer Preview release is for <strong>app developers and other early
+  adopters</strong> and is available for daily use, development, or
+  compatibility testing. Please be aware of these general notes about the
+  release:
+</p>
+
+<ul>
+  <li>This release may have various <strong>stability issues</strong> on
+  supported devices.
+  </li>
+
+  <li>Some apps <strong>may not function as expected</strong> on the new
+  platform version. This includes Google’s apps as well as other apps.
+  </li>
+
+  <li>Developer Preview 5 is <strong>Compatibility Test Suite (CTS)
+  approved</strong> on these devices: Nexus 5X, Nexus 6, Nexus 6P, Nexus 9,
+  and Pixel C. Apps that depend on CTS approved builds should work normally
+  on these devices (Android Pay for example).
+  </li>
+
+  <li>Developer Preview 5 is <strong>available</strong> on Nexus 5X, Nexus 6, Nexus 6P,
+  Nexus 9, Nexus Player, Pixel C, and General Mobile 4G (Android One).
+  </li>
+</ul>
+
+
+<h3 id="new">New in DP5</h3>
+
+<h4>Updated system images for supported devices and emulator</h4>
+
+<p>
+  Developer Preview 5 includes <a href=
+  "{@docRoot}preview/download.html"><strong>near-final system
+  images</strong></a> for supported devices and the Android emulator. The
+  images include the final APIs (API level 24) for the upcoming Android N
+  platform. When you are done testing, you can publish apps using API
+  level 24 to Google Play, in alpha, beta, and production release channels.
+</p>
+
+
+<!--
+
+<h4 id="api-changes">Feature and API changes</h4>
+
+<ul>
+  <li>TODO</li>
+</ul>
+
+-->
+
+<h3 id="ki">Known Issues</h3>
+
+<h4>Stability</h4>
+
+<ul>
+  <li>Users may encounter system instability (such as kernel panics and
+  crashes).
+  </li>
+</ul>
+
+<h4>Multi-window</h4>
+<ul>
+  <li>MapView may be blank when resized in multi-window mode and not focused.
+  </li>
+</ul>
+
+<h4>Do Not Disturb</h4>
+<ul>
+  <li>Do Not Disturb mode may be set at device reboot. To work around
+  the issue, delete the existing rule for VR as follows: go to
+  <strong>Settings > Sound > Do not disturb > Automatic Rules</strong>
+  and tap the trash icon next to the VR rule.
+  </li>
+</ul>
+
+<h4>Screen zoom and multiple APKs in Google Play</h4>
+<ul>
+  <li>On devices running Developer Preview 5, Google Play services 9.0.83
+  incorrectly reports the current screen density rather than the stable screen
+  density. When screen zoom is enabled on these devices, this can cause Google
+  Play to select a version of a multi-APK app that’s designed for smaller
+  screens. This issue is fixed in the next version of Google Play services.
+  </li>
+</ul>
+
+<h4>Vulkan support and multiple APKs in Google Play</h4>
+<ul>
+  <li>On devices running Developer Preview 5, Google Play services 9.0.83
+  currently reports Vulkan support but not Vulkan version. This can cause
+  Google Play to select a version of a multi-APK app that’s designed for lower
+  Vulkan support on devices with higher version support. Currently, the Google
+  Play Store does not accept uploads of Apps which use Vulkan version
+  targeting. This support will be added to the Google Play Store in the
+  future any Android N devices using the Google Play services 9.0.83 will
+  continue to receive versions of Apps targeting basic Vulkan support.
+  </li>
+</ul>
+
+<h4>Android Auto</h4>
+<ul>
+  <li>The version of Google Maps included in Developer Preview 5 (9.30)
+  crashes when used with Android Auto. This issue will be fixed in the
+  next update to Google Maps (9.31), expected in the coming weeks.
+  </li>
+</ul>
+
+
+
+<!-- TBA, if any
+<h4>Device-specific issues</h4>
+
+<dl>
+  <dt>
+    <strong>Device Name</strong>
+  </dt>
+
+  <dd>
+    Issue 1
+  </dd>
+
+  <dd>
+    Issue 2
+  </dd>
+</dl>
+
+-->
+<!-- TBA, if any
+
+<h4 id="dp5-fixes">Fixes for issues reported by developers</h4>
+
+<p>
+  A number of issues reported by developers have been fixed, including:
+</p>
+
+<ul>
+  <li>TODO</li>
+</ul>
+
+-->
+
+<h3 id="upgrade-notes">Notes on publishing apps that target API 24</h3>
+
+<p>
+  Before publishing apps that target API 24 in Google Play, keep these points
+  in mind:
+</p>
+
+<ul>
+  <li>If your app’s current <code>targetSdkVersion</code> is 22 or lower and
+  you want to target API 24, you’ll need to support <a href=
+  "{@docRoot}about/versions/marshmallow/android-6.0-changes.html">behaviors
+  introduced with Android 6.0 (Marshmallow)</a>, such as <a href=
+  "{@docRoot}training/permissions/requesting.html">runtime permissions</a>, in
+  addition to Android N behaviors.
+  </li>
+
+  <li>Once you publish an app with <code>targetSdkVersion</code> set to 23 or
+  higher, you can't later publish a version of the app with a higher
+  <code>versionCode</code> that targets 22 or lower. This restriction applies
+  in alpha and beta channels as well as production channel.
+  </li>
+</ul>
+
+
+<!-- DP4 Release Notes Archive -->
+
 <h2 id="dp4">Developer Preview 4</h2>
 
 <div class="wrap">
@@ -65,7 +250,7 @@
   </div>
 </div>
 
-<h3 id="general">General advisories</h3>
+<h3 id="dp4-general">General advisories</h3>
 
 <p>
   This Developer Preview release is for <strong>app developers and other early
@@ -97,7 +282,7 @@
 </ul>
 
 
-<h3 id="new">New in DP4</h3>
+<h3 id="dp4-new">New in DP4</h3>
 
 <h4>Android N final APIs</h4>
 
@@ -129,7 +314,7 @@
   your app ready for an update in the Play store.
 </p>
 
-<h4 id="api-changes">Feature and API changes</h4>
+<h4 id="dp4-api-changes">Feature and API changes</h4>
 
 <ul>
   <li>In previous versions of Android, an app activates with all of its locale
@@ -156,7 +341,7 @@
   </li>
 </ul>
 
-<h3 id="ki">Known Issues</h3>
+<h3 id="dp4-ki">Known Issues</h3>
 
 <h4>Stability</h4>
 
@@ -280,7 +465,7 @@
   </li>
 </ul>
 
-<h4 id="">Android Auto</h4>
+<h4>Android Auto</h4>
 
 <p>
   The version of Google Maps included in Developer Preview 4 (9.30) crashes
@@ -344,7 +529,7 @@
 <p>For the full list of fixed issues, see <a href="https://goo.gl/6uCKtf">the
 issue tracker</a>.</p>
 
-<h3 id="upgrade-notes">Notes on publishing apps that target API 24</h3>
+<h3 id="dp4-upgrade-notes">Notes on publishing apps that target API 24</h3>
 
 <p>
   Before publishing apps that target API 24 in Google Play, keep these points
diff --git a/docs/html/reference/_project.yaml b/docs/html/reference/_project.yaml
new file mode 100644
index 0000000..e5c26e7
--- /dev/null
+++ b/docs/html/reference/_project.yaml
@@ -0,0 +1,6 @@
+name: "Reference"
+home_url: /reference/
+description: "API Reference packages and classes."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/samples/_project.yaml b/docs/html/samples/_project.yaml
new file mode 100644
index 0000000..ede5958
--- /dev/null
+++ b/docs/html/samples/_project.yaml
@@ -0,0 +1,6 @@
+name: "Samples"
+home_url: /samples/
+description: "Welcome to code samples where you can browse sample code and learn how to build different components for your applications."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/samples/index.jd b/docs/html/samples/index.jd
index 5885086..240a54c 100644
--- a/docs/html/samples/index.jd
+++ b/docs/html/samples/index.jd
@@ -35,7 +35,7 @@
   from GitHub as a new project.
 </p>
 
-<p>To view the Android code samples that you can import, see the 
+<p>To view the Android code samples that you can import, see the
 <a class="external-link" href="https://github.com/googlesamples/">Google Samples page</a> on GitHub.</p>
 
 <h2>Download Samples</h2>
@@ -69,6 +69,6 @@
 
 <p class="note">
   <strong>Note:</strong> At this time, the downloadable projects are designed for use with Gradle
-    and Android Studio. 
+    and Android Studio.
 </p>
 
diff --git a/docs/html/sdk/OLD_RELEASENOTES.jd b/docs/html/sdk/OLD_RELEASENOTES.jd
index b7fd12f..dfbeaeb 100644
--- a/docs/html/sdk/OLD_RELEASENOTES.jd
+++ b/docs/html/sdk/OLD_RELEASENOTES.jd
@@ -14,7 +14,7 @@
 <a name="0.9_r1" id="0.9_r1"></a>
 <h2>Android 0.9 SDK Beta (r1)</h2>
 
-<p>This beta SDK release contains a large number of bug fixes and improvements from the early-look SDKs.&nbsp; 
+<p>This beta SDK release contains a large number of bug fixes and improvements from the early-look SDKs.&nbsp;
 The sections below describe the highlights of the release.
 
 <h3>New Features and Notable Changes</h3>
@@ -109,7 +109,7 @@
 </ul>
 
 <p>Known issues/limitations for Graphical Layout Editor include:</p>
-	
+
 		<ul>
 			<li>Font display is very close but not equals to on-device rendering since the font engine in Java slightly differs from the font engine in Android. This should not have any impact on your layouts.
 			</li>
@@ -123,7 +123,7 @@
 			</li>
 			<li>No support for WebView, MapView and SurfaceView.
 			</li>
-			<li>No UI support for &lt;merge&gt;, &lt;include&gt;, &lt;ViewStub&gt; elements. You can add these elements to your manifest using the xml editor only. 
+			<li>No UI support for &lt;merge&gt;, &lt;include&gt;, &lt;ViewStub&gt; elements. You can add these elements to your manifest using the xml editor only.
 			</li>
 			<li>If a layout fails to render in a way that prevents the whole editor from opening, you can:
 
@@ -221,7 +221,7 @@
 	</li>
 	<li>The DDMS utility has been refactored into library form. This is not of direct interest to application developers, but may be of interest to vendors interested in integrating the Android SDK into their products. Watch for more information about the ddmlib library soon.
 	</li>
-	<li>For performance and maintainability reasons, some APIs were moved into separate modules that must be explicitly included in the application via a directive in AndroidManifest.xml.&nbsp; Notable APIs that fall into this category are the MapView, and the java.awt.* classes, which each now reside in separate modules that must be imported.&nbsp; Developers who overlook this requirement will see ClassNotFoundExceptions that seem spurious. 
+	<li>For performance and maintainability reasons, some APIs were moved into separate modules that must be explicitly included in the application via a directive in AndroidManifest.xml.&nbsp; Notable APIs that fall into this category are the MapView, and the java.awt.* classes, which each now reside in separate modules that must be imported.&nbsp; Developers who overlook this requirement will see ClassNotFoundExceptions that seem spurious.
 	</li>
 	<li>Developers who use 'adb push' to install applications must now use 'adb install', since the full package manager is now implemented. 'adb push' will no longer work to install .apk files.
 	</li>
@@ -386,14 +386,14 @@
 
 <h4>Emulator Console</h4>
 <ul>
-<li>Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to 
-this capability. For more information about how to emulate inbound SMS from the console, 
+<li>Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to
+this capability. For more information about how to emulate inbound SMS from the console,
 see <a href="{@docRoot}tools/help/emulator.html#sms">SMS Emulation</a>. </li>
 </ul>
 
 <h4>Emulator</h4>
-<ul><li>The default emulator skin has been changed to HVGA-P from QVGA-L. For information 
-about emulator skins and how to load a specific skin when starting the emulator, see 
+<ul><li>The default emulator skin has been changed to HVGA-P from QVGA-L. For information
+about emulator skins and how to load a specific skin when starting the emulator, see
 <a href="{@docRoot}tools/help/emulator.html#skins">Using Emulator Skins</a>.</li>
 </ul>
 
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index 8f124a5..d9df406 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -64,13 +64,13 @@
     <li>Emulator support for multiple screen sizes/densities, including new
 skins. </li>
     <li>Android SDK and AVD Manager, a graphical UI to let you manage your
-SDK and AVD environments more easily. The tool lets you create and manage 
+SDK and AVD environments more easily. The tool lets you create and manage
 your <a href="{@docRoot}tools/devices/managing-avds.html">Android Virtual
-Devices</a> and download new SDK packages (such as platform versions and 
+Devices</a> and download new SDK packages (such as platform versions and
 add-ons) into your environment.</li>
     <li>Improved support for test packages in New Project Wizard</li>
-    <li>The reference documentation now offers a "Filter by API Level" 
-capability that lets you display only the parts of the API that are actually 
+    <li>The reference documentation now offers a "Filter by API Level"
+capability that lets you display only the parts of the API that are actually
 available to your application, based on the <code>android:minSdkVersion</code>
 value the application declares in its manifest. For more information, see
 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
@@ -114,7 +114,7 @@
 
 <h3>Android SDK and AVD Manager</h3>
 
-<p>The SDK offers a new tool called Android SDK and AVD Manager that lets you 
+<p>The SDK offers a new tool called Android SDK and AVD Manager that lets you
 manage your SDK and AVD environments more efficiently. </p>
 
 <p>Using the tool, you can quickly check what Android platforms, add-ons,
@@ -129,15 +129,15 @@
 <p>The tool also lets you quickly create new AVDs, manage
 their properties, and run a target AVD from a single window. </p>
 
-<p>If you are developing in Eclipse with ADT, you can access the Android SDK 
+<p>If you are developing in Eclipse with ADT, you can access the Android SDK
 and AVD Manager from the <strong>Window</strong> menu. </p>
 
-<p>If you are developing in another IDE, you can access the Android SDK and 
+<p>If you are developing in another IDE, you can access the Android SDK and
 AVD Manager through the <code>android</code> command-line tool, located in the
 &lt;sdk&gt;/tools directory. You can launch the tool with a graphical UI by
 using the <code>android</code> command without specifying any options. You can
 also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
-You can still use <code>android</code> commands to create and manage AVDs, 
+You can still use <code>android</code> commands to create and manage AVDs,
 including AVDs with custom hardware configurations.</p>
 
 <h3>Integration with zipalign</h3>
@@ -160,9 +160,9 @@
   <li>If you are developing in Eclipse with ADT, support for
 <code>zipalign</code> is integrated into the Export Wizard. When you use the
 Wizard to export a signed application package, ADT signs and then automatically
-runs <code>zipalign</code> against the exported package. If you use the Wizard 
-to export an unsigned application package, then it will not zipalign the 
-package because zipalign must be performed only after the APK has been signed. 
+runs <code>zipalign</code> against the exported package. If you use the Wizard
+to export an unsigned application package, then it will not zipalign the
+package because zipalign must be performed only after the APK has been signed.
 You must manually sign and zipalign the package after export. </li>
   <li>If you are developing using Ant and are compiling in release mode, the
 build tools will automatically sign and then <code>zipalign</code> the
@@ -182,14 +182,14 @@
 <h3>Support for Test Packages in New Project Wizard</h3>
 
 <p>The New Project Wizard available in the ADT 0.9.3 now lets you add a test
-package containing Instrumentation or other classes of tests while you are 
+package containing Instrumentation or other classes of tests while you are
 creating or importing a new Android application project. </p>
 
 <h3>New USB Driver for Windows</h3>
 
 <p>If you are using Windows and want to develop or test your application on an
 Android-powered device (such as the T-Mobile G1), you need an appropriate USB
-driver. 
+driver.
 
 <p>The Windows version of the Android 1.6 SDK includes a new, WinUSB-based
 driver that you can install. The driver is compatible with both 32- and 64-bit
@@ -241,19 +241,19 @@
 <h2 id="1.5_r3">Android 1.5 SDK, Release 3</h2>
 
 <p>Provides an updated Android 1.5 system image that includes permissions
-fixes, as described below, and a new application &mdash; an IME for Japanese 
-text input. Also provides the same set of developer tools included in the 
+fixes, as described below, and a new application &mdash; an IME for Japanese
+text input. Also provides the same set of developer tools included in the
 previous SDK, but with bug fixes and several new features.</p>
 
 <h3>Permissions Fixes</h3>
 
-<p>The latest version of the Android platform, deployable to 
+<p>The latest version of the Android platform, deployable to
 Android-powered devices, includes fixes to the permissions-checking
 in certain areas of the framework. Specifically, the Android system
 now properly checks and enforces several existing permissions where it
-did not do so in the previous release. Because of these changes in 
-enforcement, you are strongly encouraged to test your application 
-against the new Android 1.5 system image included in this SDK, to ensure 
+did not do so in the previous release. Because of these changes in
+enforcement, you are strongly encouraged to test your application
+against the new Android 1.5 system image included in this SDK, to ensure
 that it functions normally. </p>
 
 <p>In particular, if your application uses any of the system areas listed below,
@@ -292,14 +292,14 @@
 href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a> </p></li>
 
 <li>The SDK add-on architecture now lets device manufacturers specify a USB
-Vendor ID in their add-ons. 
+Vendor ID in their add-ons.
 <li>The <code>android</code> tool provides a new command that scans SDK add-ons
 for their USB Vendor IDs and makes them available to adb (OS X and Linux
 versions of the SDK only). The command is  <code>android update adb</code>. On
 Windows versions of the SDK, a custom USB driver is included that supports the
 "Google" and "HTC" Vendor IDs, which allow adb to recognize G1 and HTC
-Magic devices. For other devices, contact the device manufacturer 
-to obtain a USB driver, especially if you have an SDK add-on that defines 
+Magic devices. For other devices, contact the device manufacturer
+to obtain a USB driver, especially if you have an SDK add-on that defines
 a new USB Vendor ID.</li>
 <li>The telephony, sensor, and geo fix issues in the emulator are now
 fixed.</li>
@@ -329,12 +329,12 @@
   <ul>
     <li>Multiple versions of the Android platform are included (Android 1.1,
 Android 1.5). The tools are updated to let you deploy your application
-on any platform in the SDK, which helps you ensure forward-compatibility and, 
+on any platform in the SDK, which helps you ensure forward-compatibility and,
 if applicable, backward-compatibility.</li>
     <li>Introduces <a href="{@docRoot}tools/devices/managing-avds.html">Android
 Virtual Devices</a> &mdash; (AVD) configurations of options that you
 run in the emulator to better model actual devices. Each AVD gets its
-own dedicated storage area, making it much easier to work with multiple emulators 
+own dedicated storage area, making it much easier to work with multiple emulators
 that are running concurrently.</li>
     <li>Support for SDK add-ons, which extend the
 Android SDK to give you access to one or more external Android libraries and/or
@@ -383,13 +383,13 @@
 includes an external library, a system image, as well as custom emulator skins
 and system properties. The add-on differs in that the Android platform it
 provides may include customized UI, resources, or behaviors, a different set of
-preinstalled applications, or other similar modifications. 
+preinstalled applications, or other similar modifications.
 
 <p>The SDK includes a single SDK add-on &mdash; the Google APIs add-on. The
 Google APIs add-on gives your application access to the com.google.android.maps
-external library that is included on many (if not most) Android-powered devices. 
+external library that is included on many (if not most) Android-powered devices.
 The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder}
-backend service implementation. For more information, see the "Maps External 
+backend service implementation. For more information, see the "Maps External
 Library" section below. </p>
 
 <h3>Android Virtual Devices (AVDs)</h3>
@@ -401,7 +401,7 @@
 <li>Targets that represent core Android platform versions. </li>
 <li>Targets that are SDK add-ons, which typically provide application access to
 one or more external libraries and/or a customized (but compliant) system image
-that can run in the emulator. 
+that can run in the emulator.
 </ul>
 
 <p>A new tool called "android" lets you discover what targets and AVDs are
@@ -427,7 +427,7 @@
 
 <p>For your convenience, the Google APIs add-on is included in the SDK. </p>
 
-<p>For information about how to register for a Maps API Key, see 
+<p>For information about how to register for a Maps API Key, see
 <a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
 Obtaining a Maps API Key</a>.</p>
 
@@ -566,8 +566,8 @@
 for authentication to the server.</p>
 
 <p>Developers should note that the registration service for MapView is now
-active and Google Maps is actively enforcing the Maps API Key requirement. 
-For information about how to register for a Maps API Key, see 
+active and Google Maps is actively enforcing the Maps API Key requirement.
+For information about how to register for a Maps API Key, see
 <a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">
 Obtaining a Maps API Key</a>.</p>
 
@@ -615,21 +615,21 @@
 <li>In some cases, you may encounter problems when using the browser on an
 emulator started with the command-line option <code>-http-proxy</code>. </li>
 <li>On the OSX platform, if you manually remove the ~/.android directory
-using <code>rm -rf ~/.android</code>, then try to run 
-the emulator, it crashes. This happens because the emulator fails to create 
+using <code>rm -rf ~/.android</code>, then try to run
+the emulator, it crashes. This happens because the emulator fails to create
 a new .android directory before attempting to create the child SDK1.0 directory.
 To work around this issue, manually create a new .android directory using
-<code>mkdir ~/.android</code>, then run the emulator. The emulator 
+<code>mkdir ~/.android</code>, then run the emulator. The emulator
 creates the SDK1.0 directory and starts normally. </li>
-<li>We regret to inform developers that Android 1.1 will not include support 
+<li>We regret to inform developers that Android 1.1 will not include support
 for ARCNet network interfaces.</li>
 <li>The final set of Intent patterns honored by Android 1.0 has not yet been
 fully documented. Documentation will be provided in future releases.</li>
 <li>In ADT Editor, you can add at most ten new resource values at a time,
-in a given res/values/*.xml, using the form in the Android Resources pane. 
+in a given res/values/*.xml, using the form in the Android Resources pane.
 If you add more than ten, the Android Resources pane will not display the
-attributes fields for the additional resource entries. To work around this 
-problem, you can close the file in the editor and open it again, or you 
+attributes fields for the additional resource entries. To work around this
+problem, you can close the file in the editor and open it again, or you
 can edit the resource entries in the XML text mode. </li>
 <li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
 are not working in this release.</li>
@@ -657,7 +657,7 @@
 
 <p><strong>T-Mobile G1 Compatibility</strong></p>
 
-<p>This version of the SDK has been tested for compatibility with the first 
+<p>This version of the SDK has been tested for compatibility with the first
 Android-powered mobile device, the T-Mobile
 G1. </p>
 
@@ -679,7 +679,7 @@
 Android-powered device (such as the T-Mobile G1), you need an appropriate USB
 driver. For your convenience, the Windows version of the Android SDK includes a
 USB driver that you can install, to let you develop on the device. The USB
-driver files are located in the <code>&lt;SDK&gt;/usb_driver</code> directory. 
+driver files are located in the <code>&lt;SDK&gt;/usb_driver</code> directory.
 
 </p>
 
@@ -694,23 +694,23 @@
 still access the platform's styleable attributes from your resources or code. To
 do so, declare a custom resource element using a
 <code>&lt;declare-styleable&gt;</code> in your project's res/values/R.attrs
-file, then declare the attribute inside. For examples, see 
+file, then declare the attribute inside. For examples, see
 &lt;sdk&gt;/samples/ApiDemos/res/values/attrs.xml. For more information about
 custom resources, see <a
 href="{@docRoot}guide/topics/resources/available-resources.html#customresources">Custom
 Layout Resources</a>. Note that the android.R.styleable documentation is still
 provided in the SDK, but only as a reference of the platform's styleable
 attributes for the various elements.</li>
-<li>The VM now properly ensures that private classes are not 
+<li>The VM now properly ensures that private classes are not
 available to applications through reflection. If you were using reflection
-to access private classes in a previous release, you will now get a run-time 
+to access private classes in a previous release, you will now get a run-time
 error. </li>
 
 <li>The Settings and Email applications are now included in the SDK and
 available in the emulator.</li>
-<li>We regret to inform developers that SDK 1.0_r2 does not support MFM, RLL, 
+<li>We regret to inform developers that SDK 1.0_r2 does not support MFM, RLL,
 or Winchester hard disk drives.</li>
-<li>In the emulator, the control key for enabling/disabling trackball mode 
+<li>In the emulator, the control key for enabling/disabling trackball mode
 is changed from Control-T to F6. You can also enter trackball mode temporarily
 using the Delete key. While the key is pressed, you can send trackball events.</li>
 </ul>
@@ -783,19 +783,19 @@
 <li>We regret to inform developers that Android 1.0 will not include support for
 dot-matrix printers.</li>
 <li>On the OSX platform, if you manually remove the ~/.android directory
-using <code>rm -rf ~/.android</code>, then try to run 
-the emulator, it crashes. This happens because the emulator fails to create 
+using <code>rm -rf ~/.android</code>, then try to run
+the emulator, it crashes. This happens because the emulator fails to create
 a new .android directory before attempting to create the child SDK1.0 directory.
 To work around this issue, manually create a new .android directory using
-<code>mkdir ~/.android</code>, then run the emulator. The emulator 
+<code>mkdir ~/.android</code>, then run the emulator. The emulator
 creates the SDK1.0 directory and starts normally. </li>
 <li>The final set of Intent patterns honored by Android 1.0 has not yet been
 fully documented. Documentation will be provided in future releases.</li>
 <li>In ADT Editor, you can add at most ten new resource values at a time,
-in a given res/values/*.xml, using the form in the Android Resources pane. 
+in a given res/values/*.xml, using the form in the Android Resources pane.
 If you add more than ten, the Android Resources pane will not display the
-attributes fields for the additional resource entries. To work around this 
-problem, you can close the file in the editor and open it again, or you 
+attributes fields for the additional resource entries. To work around this
+problem, you can close the file in the editor and open it again, or you
 can edit the resource entries in the XML text mode. </li>
 <li>The emulator's battery-control commands (<code>power &lt;option&gt</code>)
 are not working in this release.</li>
diff --git a/docs/html/sdk/older_releases.jd b/docs/html/sdk/older_releases.jd
index bb64feb..c4ed594 100644
--- a/docs/html/sdk/older_releases.jd
+++ b/docs/html/sdk/older_releases.jd
@@ -74,7 +74,7 @@
     <td>238224860 bytes</td>
     <td>b4bf0e610ff6db2fb6fb09c49cba1e79</td>
   </tr>
-  
+
   </table>
 
 
@@ -119,7 +119,7 @@
     <td>178117561 bytes</td>
     <td>350d0211678ced38da926b8c9ffa4fac</td>
   </tr>
-  
+
   </table>
 
 
@@ -167,7 +167,7 @@
     <td>79345522 bytes</td>
     <td>ebcb16b0cd4aef198b4dd9a1418efbf1</td>
   </tr>
-  
+
   </table>
 
 
@@ -215,7 +215,7 @@
     <td>94186463 bytes</td>
     <td>a1f3b6d854596f850f5008856d0f380e</td>
   </tr>
-  
+
   </table>
 
 
@@ -268,7 +268,7 @@
     <td>165035130 bytes</td>
     <td>1d3c3d099e95a31c43a7b3e6ae307ed3</td>
   </tr>
-  
+
   </table>
 
 
@@ -313,7 +313,7 @@
     <td>162938845 bytes</td>
     <td>2addfd315da0ad8b5bde6b09d5ff3b06</td>
   </tr>
-  
+
   </table>
 
 
@@ -358,7 +358,7 @@
     <td>87.8 MB bytes</td>
     <td>2660b4029039b7d714e59827e9a9a11d</td>
   </tr>
-  
+
   </table>
 
 
diff --git a/docs/html/topic/instant-apps/_project.yaml b/docs/html/topic/instant-apps/_project.yaml
new file mode 100644
index 0000000..e6b8cd9
--- /dev/null
+++ b/docs/html/topic/instant-apps/_project.yaml
@@ -0,0 +1,6 @@
+name: "Android Instant Apps"
+home_url: /topic/instant-apps/
+description: "An evolution in app sharing and discovery, Android Instant Apps enables Android apps to run instantly, without requiring installation."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/topic/libraries/_project.yaml b/docs/html/topic/libraries/_project.yaml
new file mode 100644
index 0000000..cdf59e5
--- /dev/null
+++ b/docs/html/topic/libraries/_project.yaml
@@ -0,0 +1,6 @@
+name: "Android Libraries"
+home_url: /topic/libraries/
+description: "This section describes several useful Android libraries that are not included with the Android Framework."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/topic/libraries/data-binding/index.jd b/docs/html/topic/libraries/data-binding/index.jd
index 293de51..ec6e58c 100644
--- a/docs/html/topic/libraries/data-binding/index.jd
+++ b/docs/html/topic/libraries/data-binding/index.jd
@@ -515,8 +515,8 @@
 
 <h5>Avoid Complex Listeners</h5>
 Listener expressions are very powerful and can make your code very easy to read.
-On the other hand, listeners containing complex expressions make your layouts hard to read and unmaintainable. 
-These expressions should be as simple as passing available data from your UI to your callback method. You should implement 
+On the other hand, listeners containing complex expressions make your layouts hard to read and unmaintainable.
+These expressions should be as simple as passing available data from your UI to your callback method. You should implement
 any business logic inside the callback method that you invoked from the listener expression.
 
 <p>
diff --git a/docs/html/topic/libraries/support-library/features.jd b/docs/html/topic/libraries/support-library/features.jd
index 584bef8..d648384 100755
--- a/docs/html/topic/libraries/support-library/features.jd
+++ b/docs/html/topic/libraries/support-library/features.jd
@@ -142,7 +142,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v4/} directory. The library does not contain user
+<code>&lt;sdk&gt;/extras/android/support/v4/</code> 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>
@@ -169,7 +169,7 @@
 
 <p>
   After you download the Android Support Libraries, this library is located in the
-  {@code &lt;sdk&gt;/extras/android/support/multidex/} directory. The library does not contain
+  <code>&lt;sdk&gt;/extras/android/support/multidex/</code> 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
@@ -229,7 +229,7 @@
 </ul>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v7/appcompat/} directory. The library contains user
+<code>&lt;sdk&gt;/extras/android/support/v7/appcompat/</code> 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>
@@ -250,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 &lt;sdk&gt;/extras/android/support/v7/cardview/} directory. The library contains user interface
+<code>&lt;sdk&gt;/extras/android/support/v7/cardview/</code> 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>
@@ -271,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 &lt;sdk&gt;/extras/android/support/v7/gridlayout/}
+<p>This library is located in the <code>&lt;sdk&gt;/extras/android/support/v7/gridlayout/</code>
   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
@@ -332,7 +332,7 @@
 title card.</p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v7/palette/} directory. The library does not contain
+<code>&lt;sdk&gt;/extras/android/support/v7/palette/</code> 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>
@@ -354,7 +354,7 @@
 limited window of data items.</p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v7/recyclerview/} directory. The library contains
+<code>&lt;sdk&gt;/extras/android/support/v7/recyclerview/</code> 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>
@@ -383,7 +383,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v7/preference} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/v7/preference</code> 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>
@@ -447,7 +447,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v13/} directory. The library does not contain user
+<code>&lt;sdk&gt;/extras/android/support/v13/</code> 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>
@@ -479,7 +479,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v14/} directory. The library does not contain user
+<code>&lt;sdk&gt;/extras/android/support/v14/</code> 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>
@@ -508,7 +508,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v17/} directory. The library does not contain user
+<code>&lt;sdk&gt;/extras/android/support/v17/</code> 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>
@@ -550,7 +550,7 @@
 </ul>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/v17/leanback} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/v17/leanback</code> 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>
@@ -571,7 +571,7 @@
 <p></p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/annotations} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/annotations</code> 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>
@@ -596,7 +596,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/design} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/design</code> 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>
@@ -624,7 +624,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/customtabs} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/customtabs</code> 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>
@@ -655,7 +655,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/percent} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/percent</code> 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>
@@ -685,7 +685,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code &lt;sdk&gt;/extras/android/support/recommendation} directory. For more information
+<code>&lt;sdk&gt;/extras/android/support/recommendation</code> 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>
diff --git a/docs/html/topic/libraries/support-library/revisions.jd b/docs/html/topic/libraries/support-library/revisions.jd
index 47d2ac1..7e78925 100644
--- a/docs/html/topic/libraries/support-library/revisions.jd
+++ b/docs/html/topic/libraries/support-library/revisions.jd
@@ -6,9 +6,129 @@
 <p>This page provides details about the Support Library package releases.</p>
 
 <div class="toggle-content opened">
-  <p id="rev24-0-0">
+  <p id="rev24-1-0">
     <a href="#" onclick="return toggleContent(this)"><img src=
     "{@docRoot}assets/images/styles/disclosure_up.png" class=
+    "toggle-content-img" alt="">Android Support Library, revision 24.1.0</a>
+    <em>(July 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>{@link android.support.v4.app.NotificationCompat.Action.WearableExtender}
+            has new <code>getHintDisplayActionInline()</code> and
+            <code>setHintDisplayActionInline()</code> methods for compatibility with
+            <a href="{@docRoot}wear/preview/index.html">Android Wear 2.0 Preview</a>.
+            These methods allow an application to specify that an action should be
+            displayed inline with the notification.
+            </li>
+
+            <li>Calling {@link android.support.v4.app.Fragment#setUserVisibleHint
+            Fragment.setUserVisbileHint()} will no longer cause a fragment to become
+            <strong>started</strong> if the hint has been added to a {@link
+            android.support.v4.app.FragmentTransaction} that is not yet committed. This
+            affects users of {@link android.support.v4.app.FragmentPagerAdapter} that
+            override {@link android.support.v4.app.Fragment#setUserVisibleHint
+            setUserVisbileHint()} and assume a specific lifecycle state of the fragment
+            after calling <code>super.setUserVisibleHint()</code>. For more information,
+            see the reference page for docs for {@link
+            android.support.v4.app.Fragment#setUserVisibleHint
+            Fragment.setUserVisbileHint()}.
+            </li>
+          </ul>
+
+    </dl>
+    <p>Fixed issues:</p>
+
+    <ul>
+      <li>TabLayout.setCustomView(null) results in NullPointerException
+        (<a href="https://code.google.com/p/android/issues/detail?id=214753">AOSP
+        issue</a>)
+      </li>
+
+      <li>TabLayout incorrectly highlights custom tabs (<a href=
+      "https://code.google.com/p/android/issues/detail?id=214316">AOSP issue 214316</a>)
+      </li>
+
+      <li>AppCompatTextHelper uses incorrectly sorted attribute array (<a href=
+      "https://code.google.com/p/android/issues/detail?id=214366">AOSP issue 214366</a>)
+      </li>
+
+      <li>Unable to reference VectorDrawable from drawable container XML when using
+      custom ContextWrapper (<a href=
+      "https://code.google.com/p/android/issues/detail?id=214055">AOSP issue 214055</a>)
+      </li>
+
+      <li>ViewDragHelper.saveLastMotion() throws ArrayIndexOutOfBoundsException
+      (<a href="https://code.google.com/p/android/issues/detail?id=212945">AOSP
+      issue 212945</a>)
+      </li>
+
+      <li>BottomSheetBehavior expands to old content height when using
+      setState(STATE_EXPANDED) (<a href=
+      "https://code.google.com/p/android/issues/detail?id=213660">AOSP issue
+      213660</a>)
+      </li>
+
+      <li>CollapsingToolbarLayout doesn’t handle pinnable children with top or
+      bottom margins (<a href=
+      "https://code.google.com/p/android/issues/detail?id=213001">AOSP issue
+      213001</a>)
+      </li>
+
+      <li>Leanback browse title does not support RTL alignment (<a href=
+      "https://code.google.com/p/android/issues/detail?id=213461">AOSP issue
+      213461</a>)
+      </li>
+
+      <li>PagerTabStrip disappears due to missing inherited annotation (<a href=
+      "https://code.google.com/p/android/issues/detail?id=213359">AOSP issue
+      213359</a>)
+      </li>
+
+      <li>Data binding throws NullPointerException when using Boolean to set
+      conditional flags (<a href=
+      "https://code.google.com/p/android/issues/detail?id=191841">AOSP issue
+      191841</a>)
+      </li>
+
+      <li>CoordinatorLayout does not respond to setFitsSystemWindows() (<a href=
+      "https://code.google.com/p/android/issues/detail?id=212720">AOSP issue
+      212720</a>)
+      </li>
+
+      <li>BottomSheetBehavior crashes when setting initial state (<a href=
+      "https://code.google.com/p/android/issues/detail?id=203114">AOSP issue
+      203114</a>)
+      </li>
+
+      <li>ViewPager skips pages if the page index is a large value (<a href=
+      "https://code.google.com/p/android/issues/detail?id=211734">AOSP issue
+      211734</a>)
+      </li>
+
+      <li>BottomSheetBehavior does not work with dynamic layouts (<a href=
+      "https://code.google.com/p/android/issues/detail?id=205226">AOSP issue
+      205226</a>)
+      </li>
+    </ul>
+  </div>
+</div>
+
+<!-- end of collapsible section: 24.1.0 -->
+
+<div class="toggle-content closed">
+  <p id="rev24-0-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 24.0.0</a>
     <em>(June 2016)</em>
   </p>
@@ -120,7 +240,7 @@
 <div class="toggle-content closed">
   <p id="rev23-4-0">
     <a href="#" onclick="return toggleContent(this)"><img src=
-    "{@docRoot}assets/images/styles/disclosure_up.png" class=
+    "{@docRoot}assets/images/styles/disclosure_down.png" class=
     "toggle-content-img" alt="">Android Support Library, revision 23.4.0</a>
     <em>(May 2016)</em>
   </p>
diff --git a/docs/html/topic/performance/_project.yaml b/docs/html/topic/performance/_project.yaml
new file mode 100644
index 0000000..d4202a9
--- /dev/null
+++ b/docs/html/topic/performance/_project.yaml
@@ -0,0 +1,6 @@
+name: "Performance"
+home_url: /topic/performance/
+description: "Improve your app's performance by learning how to optimize power consumption, launch times, and other important areas of performance."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/topic/performance/index.jd b/docs/html/topic/performance/index.jd
index 08c610f..e08db15 100644
--- a/docs/html/topic/performance/index.jd
+++ b/docs/html/topic/performance/index.jd
@@ -1,6 +1,6 @@
 page.title=Performance
 page.article=true
-page.metaDescription=Android Performance does nice things. Details to come.
+page.metaDescription=Improve your app's performance by learning how to optimize power consumption, launch times, and other important areas of performance.
 
 meta.tags="performance"
 page.tags="performance"
diff --git a/docs/html/topic/performance/launch-time.jd b/docs/html/topic/performance/launch-time.jd
index c9ce1d5..84d5fab 100644
--- a/docs/html/topic/performance/launch-time.jd
+++ b/docs/html/topic/performance/launch-time.jd
@@ -112,7 +112,7 @@
 </p>
 <br/>
 
-  <img src="{@docRoot}performance/images/cold-launch.png">
+  <img src="{@docRoot}topic/performance/images/cold-launch.png">
   <p class="img-caption">
     <strong>Figure 1.</strong> A visual representation of the important parts of
     a cold application launch.
@@ -262,7 +262,7 @@
 </p>
 <br/>
 
-  <img src="{@docRoot}performance/images/displayed-logcat.png">
+  <img src="{@docRoot}topic/performance/images/displayed-logcat.png">
   <p class="img-caption">
     <strong>Figure 2.</strong> Disabling filters, and
     finding the {@code Displayed} value in logcat.
diff --git a/docs/html/topic/performance/optimizing-view-hierarchies.jd b/docs/html/topic/performance/optimizing-view-hierarchies.jd
index 1738acb..27d3d16 100644
--- a/docs/html/topic/performance/optimizing-view-hierarchies.jd
+++ b/docs/html/topic/performance/optimizing-view-hierarchies.jd
@@ -381,7 +381,7 @@
 <p>
 For example, you may find that a {@link android.widget.TableLayout}
 provides the same functionality as a more complex layout with many
-positional dependencies. In the N release of Android, the 
+positional dependencies. In the N release of Android, the
 <a
 href="http://tools.android.com/tech-docs/layout-editor">{@code ConstraintLayout}</a> class provides similar functionality to
 {@link android.widget.RelativeLayout}, but at a significantly lower cost.
diff --git a/docs/html/topic/performance/scheduling.jd b/docs/html/topic/performance/scheduling.jd
index b6f0fdc..c11cf9b 100644
--- a/docs/html/topic/performance/scheduling.jd
+++ b/docs/html/topic/performance/scheduling.jd
@@ -264,7 +264,7 @@
    Internet-connectivity detection problems. A library or API may think the
    Internet is available, but your service may not be accessible. Fail
    gracefully and reschedule as few of your tasks as possible.</li>
-   <li>Depending on the conditions you assign for running a task, 
+   <li>Depending on the conditions you assign for running a task,
    such as network availability, after the task is triggered, a
    change may occur so that those conditions are no longer met.
    In such a case, your operation may fail unexpectedly and repeatedly.
diff --git a/docs/html/training/_project.yaml b/docs/html/training/_project.yaml
new file mode 100644
index 0000000..6aa8760
--- /dev/null
+++ b/docs/html/training/_project.yaml
@@ -0,0 +1,6 @@
+name: "Training"
+home_url: /training/
+description: "Android Training provides a collection of classes that aim to help you build great apps for Android."
+content_license: cc3-apache2
+buganizer_id: 30209417
+parent_project_metadata_path: /develop/_project.yaml
diff --git a/docs/html/training/accessibility/accessible-app.jd b/docs/html/training/accessibility/accessible-app.jd
index dd26feb..54c185c 100644
--- a/docs/html/training/accessibility/accessible-app.jd
+++ b/docs/html/training/accessibility/accessible-app.jd
@@ -55,7 +55,7 @@
 If you have a label that's likely not to change during the lifecycle of the
 application (such as "Pause" or "Purchase"), you can add it via the XML layout,
 by setting a UI element's <a
- 
+
 href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription"
 >{@code android:contentDescription}</a> attribute, like in this
 example:</p>
@@ -163,7 +163,7 @@
 android.view.accessibility.AccessibilityEvent} reference documentation.
 
 <p>As an example, if you want to extend an image view such that you can write
-captions by typing on the keyboard when it has focus, it makes sense to fire an 
+captions by typing on the keyboard when it has focus, it makes sense to fire an
 {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED}
 event, even though that's not normally built into image views.  The code to
 generate that event would look like this:</p>
diff --git a/docs/html/training/accessibility/service.jd b/docs/html/training/accessibility/service.jd
index 5b99c46..9935c97 100755
--- a/docs/html/training/accessibility/service.jd
+++ b/docs/html/training/accessibility/service.jd
@@ -67,7 +67,7 @@
 
 <p>Like any other service, you also declare it in the manifest file.
 Remember to specify that it handles the {@code android.accessibilityservice} intent,
-so that the service is called when applications fire an 
+so that the service is called when applications fire an
 {@link android.view.accessibility.AccessibilityEvent}.</p>
 
 <pre>
diff --git a/docs/html/training/animation/screen-slide.jd b/docs/html/training/animation/screen-slide.jd
index a68d475..d953c07 100644
--- a/docs/html/training/animation/screen-slide.jd
+++ b/docs/html/training/animation/screen-slide.jd
@@ -218,7 +218,7 @@
   position of the page on the screen, which is obtained from the <code>position</code> parameter
   of the {@link android.support.v4.view.ViewPager.PageTransformer#transformPage transformPage()} method.</p>
 
-<p>The <code>position</code> parameter indicates where a given page is located relative to the center of the screen. 
+<p>The <code>position</code> parameter indicates where a given page is located relative to the center of the screen.
 It is a dynamic property that changes as the user scrolls through the pages. When a page fills the screen, its position value is <code>0</code>.
 When a page is drawn just off the right side of the screen, its position value is <code>1</code>. If the user scrolls halfway between pages one and two, page one has a position of -0.5 and page two has a position of 0.5. Based on the position of the pages on the screen, you can create custom slide animations by setting page properties with methods such as {@link android.view.View#setAlpha setAlpha()}, {@link android.view.View#setTranslationX setTranslationX()}, or
   {@link android.view.View#setScaleY setScaleY()}.</p>
diff --git a/docs/html/training/animation/zoom.jd b/docs/html/training/animation/zoom.jd
index 6a38e7d..60de70e 100644
--- a/docs/html/training/animation/zoom.jd
+++ b/docs/html/training/animation/zoom.jd
@@ -297,13 +297,13 @@
             set.play(ObjectAnimator
                         .ofFloat(expandedImageView, View.X, startBounds.left))
                         .with(ObjectAnimator
-                                .ofFloat(expandedImageView, 
+                                .ofFloat(expandedImageView,
                                         View.Y,startBounds.top))
                         .with(ObjectAnimator
-                                .ofFloat(expandedImageView, 
+                                .ofFloat(expandedImageView,
                                         View.SCALE_X, startScaleFinal))
                         .with(ObjectAnimator
-                                .ofFloat(expandedImageView, 
+                                .ofFloat(expandedImageView,
                                         View.SCALE_Y, startScaleFinal));
             set.setDuration(mShortAnimationDuration);
             set.setInterpolator(new DecelerateInterpolator());
diff --git a/docs/html/training/app-indexing/deep-linking.jd b/docs/html/training/app-indexing/deep-linking.jd
index 2c4a131..a68e5a3 100644
--- a/docs/html/training/app-indexing/deep-linking.jd
+++ b/docs/html/training/app-indexing/deep-linking.jd
@@ -69,7 +69,7 @@
         &lt;!-- Accepts URIs that begin with "example://gizmos” --&gt;
         &lt;data android:scheme="example"
               android:host="gizmos" /&gt;
-        
+
     &lt;/intent-filter&gt;
 &lt;/activity&gt;
 </pre>
diff --git a/docs/html/training/articles/perf-anr.jd b/docs/html/training/articles/perf-anr.jd
index bbebec5..2eda4fa 100644
--- a/docs/html/training/articles/perf-anr.jd
+++ b/docs/html/training/articles/perf-anr.jd
@@ -64,10 +64,10 @@
 and Window Manager system services. Android will display the ANR dialog
 for a particular application when it detects one of the following
 conditions:</p>
-<ul>  
-    <li>No response to an input event (such as key press or screen touch events) 
+<ul>
+    <li>No response to an input event (such as key press or screen touch events)
     within 5 seconds.</li>
-    <li>A {@link android.content.BroadcastReceiver BroadcastReceiver} 
+    <li>A {@link android.content.BroadcastReceiver BroadcastReceiver}
     hasn't finished executing within 10 seconds.</li>
 </ul>
 
@@ -100,7 +100,7 @@
  {@link android.os.AsyncTask#onProgressUpdate onProgressUpdate()} callback method. From your
  implementation of {@link android.os.AsyncTask#onProgressUpdate onProgressUpdate()} (which
  runs on the UI thread), you can notify the user. For example:</p>
- 
+
 <pre>
 private class DownloadFilesTask extends AsyncTask&lt;URL, Integer, Long> {
     // Do the long-running work in here
@@ -127,14 +127,14 @@
     }
 }
 </pre>
- 
+
  <p>To execute this worker thread, simply create an instance and
  call {@link android.os.AsyncTask#execute execute()}:</p>
- 
+
 <pre>
 new DownloadFilesTask().execute(url1, url2, url3);
 </pre>
- 
+
 
 <p>Although it's more complicated than {@link android.os.AsyncTask}, you might want to instead
 create your own {@link java.lang.Thread} or {@link android.os.HandlerThread} class. If you do,
@@ -143,7 +143,7 @@
 android.os.Process#THREAD_PRIORITY_BACKGROUND}. If you don't set the thread to a lower priority
 this way, then the thread could still slow down your app because it operates at the same priority
 as the UI thread by default.</p>
- 
+
 <p>If you implement {@link java.lang.Thread} or {@link android.os.HandlerThread},
 be sure that your UI thread does not block while waiting for the worker thread to
 complete&mdash;do not call {@link java.lang.Thread#wait Thread.wait()} or
@@ -183,16 +183,16 @@
     <li>If your application is doing work in the background in response to
     user input, show that progress is being made (such as with a {@link
     android.widget.ProgressBar} in your UI).</li>
-    
+
     <li>For games specifically, do calculations for moves in a worker
     thread.</li>
-    
+
     <li>If your application has a time-consuming initial setup phase, consider
     showing a splash screen or rendering the main view as quickly as possible, indicate that
     loading is in progress and fill the information asynchronously. In either case, you should
     indicate somehow that progress is being made, lest the user perceive that
     the application is frozen.</li>
-    
+
     <li>Use performance tools such as <a href="{@docRoot}tools/help/systrace.html">Systrace</a>
     and <a href="{@docRoot}tools/help/traceview.html">Traceview</a> to determine bottlenecks
     in your app's responsiveness.</li>
diff --git a/docs/html/training/articles/perf-jni.jd b/docs/html/training/articles/perf-jni.jd
index 5a9fa1e..8d2fd9b 100644
--- a/docs/html/training/articles/perf-jni.jd
+++ b/docs/html/training/articles/perf-jni.jd
@@ -564,9 +564,9 @@
     that looked through the weak globals table, the arguments, the locals
     table, and the globals table in that order. The first time it found your
     direct pointer, it would report that your reference was of the type it
-    happened to be examining. This meant, for example, that if 
+    happened to be examining. This meant, for example, that if
     you called <code>GetObjectRefType</code> on a global jclass that happened
-    to be the same as the jclass passed as an implicit argument to your static 
+    to be the same as the jclass passed as an implicit argument to your static
     native method, you'd get <code>JNILocalRefType</code> rather than
     <code>JNIGlobalRefType</code>.
 </ul>
diff --git a/docs/html/training/articles/perf-tips.jd b/docs/html/training/articles/perf-tips.jd
index 4a3184c..82de69a 100644
--- a/docs/html/training/articles/perf-tips.jd
+++ b/docs/html/training/articles/perf-tips.jd
@@ -43,7 +43,7 @@
 that you can simply say "device X is a factor F faster/slower than device Y",
 and scale your results from one device to others. In particular, measurement
 on the emulator tells you very little about performance on any device. There
-are also huge differences between devices with and without a 
+are also huge differences between devices with and without a
 <acronym title="Just In Time compiler">JIT</acronym>: the best
 code for a device with a JIT is not always the best code for a device
 without.</p>
@@ -88,7 +88,7 @@
     but this also generalizes to the fact that two parallel arrays of ints
     are also a <strong>lot</strong> more efficient than an array of {@code (int,int)}
     objects.  The same goes for any combination of primitive types.</li>
-    
+
     <li>If you need to implement a container that stores tuples of {@code (Foo,Bar)}
     objects, try to remember that two parallel {@code Foo[]} and {@code Bar[]} arrays are
     generally much better than a single array of custom {@code (Foo,Bar)} objects.
@@ -401,19 +401,6 @@
 need to solve. Make sure you can accurately measure your existing performance,
 or you won't be able to measure the benefit of the alternatives you try.</p>
 
-<p>Every claim made in this document is backed up by a benchmark. The source
-to these benchmarks can be found in the <a
-href="http://code.google.com/p/dalvik/source/browse/#svn/trunk/benchmarks">code.google.com
-"dalvik" project</a>.</p>
-
-<p>The benchmarks are built with the
-<a href="http://code.google.com/p/caliper/">Caliper</a> microbenchmarking
-framework for Java. Microbenchmarks are hard to get right, so Caliper goes out
-of its way to do the hard work for you, and even detect some cases where you're
-not measuring what you think you're measuring (because, say, the VM has
-managed to optimize all your code away). We highly recommend you use Caliper
-to run your own microbenchmarks.</p>
-
 <p>You may also find
 <a href="{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a> useful
 for profiling, but it's important to realize that it currently disables the JIT,
diff --git a/docs/html/training/articles/smp.jd b/docs/html/training/articles/smp.jd
index 0b45987..a95931b 100644
--- a/docs/html/training/articles/smp.jd
+++ b/docs/html/training/articles/smp.jd
@@ -75,7 +75,7 @@
 multiprocessor architectures. This document introduces issues that
 can arise when writing code for symmetric multiprocessor systems in C, C++, and the Java
 programming language (hereafter referred to simply as “Java” for the sake of
-brevity). It's intended as a primer for Android app developers, not as a complete 
+brevity). It's intended as a primer for Android app developers, not as a complete
 discussion on the subject. The focus is on the ARM CPU architecture.</p>
 
 <p>If you’re in a hurry, you can skip the <a href="#theory">Theory</a> section
diff --git a/docs/html/training/articles/user-data-overview.jd b/docs/html/training/articles/user-data-overview.jd
index 8715d36..dc0df20 100644
--- a/docs/html/training/articles/user-data-overview.jd
+++ b/docs/html/training/articles/user-data-overview.jd
@@ -266,4 +266,4 @@
     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> 
+<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
index edc7558..ace5f7f 100644
--- a/docs/html/training/articles/user-data-permissions.jd
+++ b/docs/html/training/articles/user-data-permissions.jd
@@ -56,7 +56,7 @@
   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>. 
+  Unique Identifiers</a>.
 </p>
 
 <h2 id="tenets_of_working_with_android_permissions">Tenets of Working
diff --git a/docs/html/training/basics/activity-lifecycle/index.jd b/docs/html/training/basics/activity-lifecycle/index.jd
index afeab86..95ed21e 100644
--- a/docs/html/training/basics/activity-lifecycle/index.jd
+++ b/docs/html/training/basics/activity-lifecycle/index.jd
@@ -41,7 +41,7 @@
 lifecycle. For instance, when your
 activity starts for the first time, it comes to the foreground of the system and receives user
 focus. During this process, the Android system calls a series of lifecycle methods on the
-activity in which you set up the user interface and other components. If the user performs an 
+activity in which you set up the user interface and other components. If the user performs an
 action that starts another activity or switches to another app, the system calls another set of
 lifecycle methods on your activity as it moves into the background (where the activity is no
 longer visible, but the instance and its state remains intact).</p>
@@ -57,7 +57,7 @@
 user expects and does not consume system resources when your activity doesn't need them.</p>
 
 <h2>Lessons</h2>
- 
+
 <dl>
   <dt><b><a href="starting.html">Starting an Activity</a></b></dt>
   <dd>Learn the basics about the activity lifecycle, how the user can launch your app, and how
@@ -70,5 +70,5 @@
   <dt><b><a href="recreating.html">Recreating an Activity</a></b></dt>
   <dd>Learn what happens when your activity is destroyed and how you can rebuild the activity
 state when necessary.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html/training/basics/activity-lifecycle/pausing.jd b/docs/html/training/basics/activity-lifecycle/pausing.jd
index 223e41a..7ca97aa 100644
--- a/docs/html/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html/training/basics/activity-lifecycle/pausing.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
     <ol>
       <li><a href="#Pause">Pause Your Activity</a></li>
       <li><a href="#Resume">Resume Your Activity</a></li>
     </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Activities</a>
@@ -32,7 +32,7 @@
   </div>
 </div>
 
-<p>During normal app use, the foreground activity is sometimes obstructed by other 
+<p>During normal app use, the foreground activity is sometimes obstructed by other
 visual components that cause the activity to <em>pause</em>.  For example, when a semi-transparent
 activity opens (such as one in the style of a dialog), the previous activity pauses. As long as the
 activity is still partially visible but currently not the activity in focus, it remains paused.</p>
@@ -60,7 +60,7 @@
 
 
 <h2 id="Pause">Pause Your Activity</h2>
-      
+
 <p>When the system calls {@link android.app.Activity#onPause()} for your activity, it
 technically means your activity is still partially visible, but most often is an indication that
 the user is leaving the activity and it will soon enter the Stopped state.  You should usually use
diff --git a/docs/html/training/basics/activity-lifecycle/recreating.jd b/docs/html/training/basics/activity-lifecycle/recreating.jd
index a52d5fd..60a33774 100644
--- a/docs/html/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html/training/basics/activity-lifecycle/recreating.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
     <ol>
       <li><a href="#SaveState">Save Your Activity State</a></li>
       <li><a href="#RestoreState">Restore Your Activity State</a></li>
     </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting
@@ -106,7 +106,7 @@
     // Save the user's current game state
     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
-    
+
     // Always call the superclass so it can save the view hierarchy state
     super.onSaveInstanceState(savedInstanceState);
 }
@@ -139,7 +139,7 @@
 &#64;Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState); // Always call the superclass first
-   
+
     // Check whether we're recreating a previously destroyed instance
     if (savedInstanceState != null) {
         // Restore value of members from saved state
@@ -158,12 +158,12 @@
 after the {@link android.app.Activity#onStart()} method. The system calls {@link
 android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} only if there is a saved
 state to restore, so you do not need to check whether the {@link android.os.Bundle} is null:</p>
-        
+
 <pre>
 public void onRestoreInstanceState(Bundle savedInstanceState) {
     // Always call the superclass so it can restore the view hierarchy
     super.onRestoreInstanceState(savedInstanceState);
-   
+
     // Restore state members from saved instance
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
diff --git a/docs/html/training/basics/activity-lifecycle/starting.jd b/docs/html/training/basics/activity-lifecycle/starting.jd
index 5b238b8..06f3a6c 100644
--- a/docs/html/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html/training/basics/activity-lifecycle/starting.jd
@@ -9,7 +9,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
 <ol>
   <li><a href="#lifecycle-states">Understand the Lifecycle Callbacks</a></li>
@@ -17,7 +17,7 @@
   <li><a href="#Create">Create a New Instance</a></li>
   <li><a href="#Destroy">Destroy the Activity</a></li>
 </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Activities</a></li>
@@ -84,7 +84,7 @@
 </ul>
 
 <!--
-<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback 
+<p class="table-caption"><strong>Table 1.</strong> Activity lifecycle state pairs and callback
 methods.</p>
 <table>
   <tr>
@@ -139,7 +139,7 @@
 
 
 
-<h2 id="launching-activity">Specify Your App's Launcher Activity</h2> 
+<h2 id="launching-activity">Specify Your App's Launcher Activity</h2>
 
 <p>When the user selects your app icon from the Home screen, the system calls the {@link
 android.app.Activity#onCreate onCreate()} method for the {@link android.app.Activity} in your app
@@ -154,7 +154,7 @@
 href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
 <intent-filter>}</a> that includes the {@link
 android.content.Intent#ACTION_MAIN MAIN} action and
-{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} category. For example:</p> 
+{@link android.content.Intent#CATEGORY_LAUNCHER LAUNCHER} category. For example:</p>
 
 <pre>
 &lt;activity android:name=".MainActivity" android:label="&#64;string/app_name">
@@ -203,10 +203,10 @@
     // Set the user interface layout for this Activity
     // The layout file is defined in the project res/layout/main_activity.xml file
     setContentView(R.layout.main_activity);
-    
+
     // Initialize member TextView so we can manipulate it later
     mTextView = (TextView) findViewById(R.id.text_message);
-    
+
     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
         // For the main activity, make sure the app icon in the action bar
@@ -271,7 +271,7 @@
 &#64;Override
 public void onDestroy() {
     super.onDestroy();  // Always call the superclass
-    
+
     // Stop method tracing that the activity started during onCreate()
     android.os.Debug.stopMethodTracing();
 }
diff --git a/docs/html/training/basics/activity-lifecycle/stopping.jd b/docs/html/training/basics/activity-lifecycle/stopping.jd
index 51c95ea..3246374 100644
--- a/docs/html/training/basics/activity-lifecycle/stopping.jd
+++ b/docs/html/training/basics/activity-lifecycle/stopping.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
     <ol>
       <li><a href="#Stop">Stop Your Activity</a></li>
       <li><a href="#Start">Start/Restart Your Activity</a></li>
     </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/activities.html">Activities</a>
@@ -154,13 +154,13 @@
 &#64;Override
 protected void onStart() {
     super.onStart();  // Always call the superclass method first
-    
+
     // The activity is either being restarted or started for the first time
     // so this is where we should make sure that GPS is enabled
-    LocationManager locationManager = 
+    LocationManager locationManager =
             (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
-    
+
     if (!gpsEnabled) {
         // Create a dialog here that requests the user to enable GPS, and use an intent
         // with the android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS action
@@ -171,8 +171,8 @@
 &#64;Override
 protected void onRestart() {
     super.onRestart();  // Always call the superclass method first
-    
-    // Activity being restarted from stopped state    
+
+    // Activity being restarted from stopped state
 }
 </pre>
 
diff --git a/docs/html/training/basics/data-storage/databases.jd b/docs/html/training/basics/data-storage/databases.jd
index 4a91d0d..f42bf65 100644
--- a/docs/html/training/basics/data-storage/databases.jd
+++ b/docs/html/training/basics/data-storage/databases.jd
@@ -119,11 +119,11 @@
 accessible to other applications.</p>
 
 <p>A useful set of APIs is available in the {@link
-android.database.sqlite.SQLiteOpenHelper} class. 
+android.database.sqlite.SQLiteOpenHelper} class.
 When you use this class to obtain references to your database, the system
-performs the potentially 
+performs the potentially
 long-running operations of creating and updating the database only when
-needed and <em>not during app startup</em>. All you need to do is call 
+needed and <em>not during app startup</em>. All you need to do is call
 {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase} or
 {@link android.database.sqlite.SQLiteOpenHelper#getReadableDatabase}.</p>
 
diff --git a/docs/html/training/basics/data-storage/files.jd b/docs/html/training/basics/data-storage/files.jd
index 58a1d5f..349af78 100644
--- a/docs/html/training/basics/data-storage/files.jd
+++ b/docs/html/training/basics/data-storage/files.jd
@@ -192,7 +192,7 @@
     try {
         String fileName = Uri.parse(url).getLastPathSegment();
         file = File.createTempFile(fileName, null, context.getCacheDir());
-    catch (IOException e) {
+    } catch (IOException e) {
         // Error while creating file
     }
     return file;
@@ -259,7 +259,7 @@
   your app. Although these files are technically accessible by the user and other apps because they
   are on the external storage, they are files that realistically don't provide value to the user
   outside your app. When the user uninstalls your app, the system deletes
-  all files in your app's external private  directory. 
+  all files in your app's external private  directory.
   <p>For example, additional resources downloaded by your app or temporary media files.</p>
   </dd>
 </dl>
@@ -274,7 +274,7 @@
 
 <pre>
 public File getAlbumStorageDir(String albumName) {
-    // Get the directory for the user's public pictures directory. 
+    // Get the directory for the user's public pictures directory.
     File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -296,7 +296,7 @@
 
 <pre>
 public File getAlbumStorageDir(Context context, String albumName) {
-    // Get the directory for the app's private pictures directory. 
+    // Get the directory for the app's private pictures directory.
     File file = new File(context.getExternalFilesDir(
             Environment.DIRECTORY_PICTURES), albumName);
     if (!file.mkdirs()) {
@@ -375,7 +375,7 @@
 
 <div class="note">
 <p><strong>Note:</strong> When the user uninstalls your app, the Android system deletes
-the following:</p> 
+the following:</p>
 <ul>
 <li>All files you saved on internal storage</li>
 <li>All files you saved on external storage using {@link
diff --git a/docs/html/training/basics/firstapp/creating-project.jd b/docs/html/training/basics/firstapp/creating-project.jd
index e66237a..4c2155b 100644
--- a/docs/html/training/basics/firstapp/creating-project.jd
+++ b/docs/html/training/basics/firstapp/creating-project.jd
@@ -93,13 +93,19 @@
         Activities</a> for more information.</p>
     </div>
   </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>Add an activity to &lt;<em>template</em>&gt;</strong>,
+  select <strong>Basic Activity</strong> and click <strong>Next</strong>.
+  </li>
+
   <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>.
-   <li>Click the <strong>Finish</strong> button to create the project.</li>
+  <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>.
+  </li>
+
+  <li>Click the <strong>Finish</strong> button to create the project.
+  </li>
 </ol>
 
 <p>Your Android project is now a basic "Hello World" app that contains some default files. Take a
@@ -180,4 +186,6 @@
       string and color definitions.</dd>
 </dl>
 
-<p>To run the app, continue to the <a href="running-app.html">next lesson</a>.</p>
+<p>
+  To run the app, continue to the <a href="running-app.html">next lesson</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/basics/fragments/communicating.jd b/docs/html/training/basics/fragments/communicating.jd
index 8c1ae21a..2e12072 100644
--- a/docs/html/training/basics/fragments/communicating.jd
+++ b/docs/html/training/basics/fragments/communicating.jd
@@ -7,14 +7,14 @@
 @jd:body
 
 <div id="tb-wrapper">
-  <div id="tb"> 
+  <div id="tb">
     <h2>This lesson teaches you to</h2>
 <ol>
   <li><a href="#DefineInterface">Define an Interface</a></li>
   <li><a href="#Implement">Implement the Interface</a></li>
   <li><a href="#Deliver">Deliver a Message to a Fragment</a></li>
 </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/fragments.html">Fragments</a></li>
@@ -31,21 +31,21 @@
   </div>
 </div>
 
-<p>In order to reuse the Fragment UI components, you should build each as a completely 
-self-contained, modular component that defines its own layout and behavior.  Once you 
-have defined these reusable Fragments, you can associate them with an Activity and 
+<p>In order to reuse the Fragment UI components, you should build each as a completely
+self-contained, modular component that defines its own layout and behavior.  Once you
+have defined these reusable Fragments, you can associate them with an Activity and
 connect them with the application logic to realize the overall composite UI.</p>
 
-<p>Often you will want one Fragment to communicate with another, for example to change 
-the content based on a user event.  All Fragment-to-Fragment communication is done 
+<p>Often you will want one Fragment to communicate with another, for example to change
+the content based on a user event.  All Fragment-to-Fragment communication is done
 through the associated Activity.  Two Fragments should never communicate directly.</p>
 
 
 <h2 id="DefineInterface">Define an Interface</h2>
 
-<p>To allow a Fragment to communicate up to its Activity, you can define an interface 
-in the Fragment class and implement it within the Activity.  The Fragment captures 
-the interface implementation during its onAttach() lifecycle method and can then call 
+<p>To allow a Fragment to communicate up to its Activity, you can define an interface
+in the Fragment class and implement it within the Activity.  The Fragment captures
+the interface implementation during its onAttach() lifecycle method and can then call
 the Interface methods in order to communicate with the Activity.</p>
 
 <p>Here is an example of Fragment to Activity communication:</p>
@@ -62,7 +62,7 @@
     &#64;Override
     public void onAttach(Activity activity) {
         super.onAttach(activity);
-        
+
         // This makes sure that the container activity has implemented
         // the callback interface. If not, it throws an exception
         try {
@@ -72,7 +72,7 @@
                     + " must implement OnHeadlineSelectedListener");
         }
     }
-    
+
     ...
 }
 </pre>
@@ -105,7 +105,7 @@
 public static class MainActivity extends Activity
         implements HeadlinesFragment.OnHeadlineSelectedListener{
     ...
-    
+
     public void onArticleSelected(int position) {
         // The user selected the headline of an article from the HeadlinesFragment
         // Do something here to display that article
@@ -118,12 +118,12 @@
 <h2 id="Deliver">Deliver a Message to a Fragment</h2>
 
 <p>The host activity can deliver messages to a fragment by capturing the {@link
-android.support.v4.app.Fragment} instance 
+android.support.v4.app.Fragment} instance
 with {@link android.support.v4.app.FragmentManager#findFragmentById findFragmentById()}, then
 directly call the fragment's public methods.</p>
 
 <p>For instance, imagine that the activity shown above may contain another fragment that's used to
-display the item specified by the data returned in the above callback method. In this case, 
+display the item specified by the data returned in the above callback method. In this case,
 the activity can pass the information received in the callback method to the other fragment that
 will display the item:</p>
 
@@ -152,7 +152,7 @@
             Bundle args = new Bundle();
             args.putInt(ArticleFragment.ARG_POSITION, position);
             newFragment.setArguments(args);
-        
+
             FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
             // Replace whatever is in the fragment_container view with this fragment,
diff --git a/docs/html/training/basics/fragments/fragment-ui.jd b/docs/html/training/basics/fragments/fragment-ui.jd
index c0bd0a4..4cfec76 100644
--- a/docs/html/training/basics/fragments/fragment-ui.jd
+++ b/docs/html/training/basics/fragments/fragment-ui.jd
@@ -7,13 +7,13 @@
 @jd:body
 
 <div id="tb-wrapper">
-  <div id="tb"> 
+  <div id="tb">
     <h2>This lesson teaches you to</h2>
 <ol>
   <li><a href="#AddAtRuntime">Add a Fragment to an Activity at Runtime</a></li>
   <li><a href="#Replace">Replace One Fragment with Another</a></li>
 </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/components/fragments.html">Fragments</a></li>
@@ -52,14 +52,14 @@
 
 
 
-<h2 id="AddAtRuntime">Add a Fragment to an Activity at Runtime</h2> 
+<h2 id="AddAtRuntime">Add a Fragment to an Activity at Runtime</h2>
 
 <p>Rather than defining the fragments for an activity in the layout file&mdash;as shown in the
 <a href="creating.html">previous lesson</a> with the {@code <fragment>} element&mdash;you can add
 a fragment to the activity during the activity runtime. This is necessary
 if you plan to change fragments during the life of the activity.</p>
 
-<p>To perform a transaction such as add or 
+<p>To perform a transaction such as add or
 remove a fragment, you must use the {@link android.support.v4.app.FragmentManager} to create a
 {@link android.support.v4.app.FragmentTransaction}, which provides APIs to add, remove, replace,
 and perform other fragment transactions.</p>
@@ -126,11 +126,11 @@
 
             // Create a new Fragment to be placed in the activity layout
             HeadlinesFragment firstFragment = new HeadlinesFragment();
-            
+
             // In case this activity was started with special instructions from an
             // Intent, pass the Intent's extras to the fragment as arguments
             firstFragment.setArguments(getIntent().getExtras());
-            
+
             // Add the fragment to the 'fragment_container' FrameLayout
             getSupportFragmentManager().beginTransaction()
                     .add(R.id.fragment_container, firstFragment).commit();
diff --git a/docs/html/training/basics/fragments/index.jd b/docs/html/training/basics/fragments/index.jd
index aba6459..4fb71e4 100644
--- a/docs/html/training/basics/fragments/index.jd
+++ b/docs/html/training/basics/fragments/index.jd
@@ -56,7 +56,7 @@
 devices running versions as old as Android 1.6.</p>
 
 <h2>Lessons</h2>
- 
+
 <dl>
   <dt><b><a href="creating.html">Creating a Fragment</a></b></dt>
     <dd>Learn how to build a fragment and implement basic behaviors within its callback
@@ -67,5 +67,5 @@
   <dt><b><a href="communicating.html">Communicating with Other Fragments</a></b></dt>
     <dd>Learn how to set up communication paths from a fragment to the activity and other
 fragments.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html/training/basics/network-ops/connecting.jd b/docs/html/training/basics/network-ops/connecting.jd
index 798a9ee7..9651269 100644
--- a/docs/html/training/basics/network-ops/connecting.jd
+++ b/docs/html/training/basics/network-ops/connecting.jd
@@ -7,8 +7,8 @@
 next.link=managing.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 
@@ -20,7 +20,7 @@
   <li><a href="#AsyncTask">Perform Network Operations on a Separate Thread</a></li>
   <li><a href="#download">Connect and Download Data</a></li>
   <li><a href="#stream">Convert the InputStream to a String</a></li>
-  
+
 </ol>
 
 <h2>You should also read</h2>
@@ -32,7 +32,7 @@
   <li><a href="{@docRoot}guide/components/fundamentals.html">Application Fundamentals</a></li>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>This lesson shows you how to implement a simple application that connects to
@@ -57,11 +57,11 @@
 <h2 id="connection">Check the Network Connection</h2>
 
 <p>Before your app attempts to connect to the network, it should check to see whether a
-network connection is available using 
+network connection is available using
 {@link android.net.ConnectivityManager#getActiveNetworkInfo getActiveNetworkInfo()}
-and {@link android.net.NetworkInfo#isConnected isConnected()}. 
+and {@link android.net.NetworkInfo#isConnected isConnected()}.
 Remember, the device may be out of range of a
-network, or the user may have disabled both Wi-Fi and mobile data access. 
+network, or the user may have disabled both Wi-Fi and mobile data access.
 For more discussion of this topic, see the lesson <a
 href="{@docRoot}training/basics/network-ops/managing.html">Managing Network
 Usage</a>.</p>
@@ -69,7 +69,7 @@
 <pre>
 public void myClickHandler(View view) {
     ...
-    ConnectivityManager connMgr = (ConnectivityManager) 
+    ConnectivityManager connMgr = (ConnectivityManager)
         getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
     if (networkInfo != null &amp;&amp; networkInfo.isConnected()) {
@@ -98,28 +98,28 @@
 {@link android.os.AsyncTask} methods:</p>
 
     <ul>
-    
+
       <li>{@link android.os.AsyncTask#doInBackground doInBackground()} executes
 the method <code>downloadUrl()</code>. It passes the  web page URL as a
 parameter. The method <code>downloadUrl()</code> fetches and processes the web
 page content. When it finishes, it passes back a result string.</li>
-      
+
       <li>{@link android.os.AsyncTask#onPostExecute onPostExecute()} takes the
 returned string and displays it in the UI.</li>
-      
-      
+
+
     </ul>
-    
+
 <pre>
 public class HttpExampleActivity extends Activity {
     private static final String DEBUG_TAG = "HttpExample";
     private EditText urlText;
     private TextView textView;
-    
+
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.main);   
+        setContentView(R.layout.main);
         urlText = (EditText) findViewById(R.id.myUrl);
         textView = (TextView) findViewById(R.id.myText);
     }
@@ -129,7 +129,7 @@
     public void myClickHandler(View view) {
         // Gets the URL from the UI's text field.
         String stringUrl = urlText.getText().toString();
-        ConnectivityManager connMgr = (ConnectivityManager) 
+        ConnectivityManager connMgr = (ConnectivityManager)
             getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
         if (networkInfo != null &amp;&amp; networkInfo.isConnected()) {
@@ -139,7 +139,7 @@
         }
     }
 
-     // Uses AsyncTask to create a task away from the main UI thread. This task takes a 
+     // Uses AsyncTask to create a task away from the main UI thread. This task takes a
      // URL string and uses it to create an HttpUrlConnection. Once the connection
      // has been established, the AsyncTask downloads the contents of the webpage as
      // an InputStream. Finally, the InputStream is converted into a string, which is
@@ -147,7 +147,7 @@
      private class DownloadWebpageTask extends AsyncTask&lt;String, Void, String&gt; {
         &#64;Override
         protected String doInBackground(String... urls) {
-              
+
             // params comes from the execute() call: params[0] is the url.
             try {
                 return downloadUrl(urls[0]);
@@ -167,28 +167,28 @@
 <p>The sequence of events in this snippet is as follows:</p>
 <ol>
 
-  <li>When users click the button that invokes {@code myClickHandler()}, 
+  <li>When users click the button that invokes {@code myClickHandler()},
   the app passes
 the specified URL to the {@link android.os.AsyncTask} subclass
 <code>DownloadWebpageTask</code>.</li>
- 
+
  <li>The {@link android.os.AsyncTask} method {@link
-android.os.AsyncTask#doInBackground doInBackground()} calls the 
+android.os.AsyncTask#doInBackground doInBackground()} calls the
 <code>downloadUrl()</code> method. </li>
-  
+
   <li>The <code>downloadUrl()</code> method takes a URL string as a parameter
 and uses it to create a {@link java.net.URL} object.</li>
-  
+
   <li>The {@link java.net.URL} object is used to establish an {@link
 java.net.HttpURLConnection}.</li>
-  
+
   <li>Once the connection has been established, the {@link
 java.net.HttpURLConnection} object fetches the web page content as an {@link
 java.io.InputStream}.</li>
-  
+
   <li>The {@link java.io.InputStream} is passed to the <code>readIt()</code>
 method, which converts the stream to a string.</li>
-  
+
   <li>Finally, the {@link android.os.AsyncTask}'s {@link
 android.os.AsyncTask#onPostExecute onPostExecute()} method displays the string
 in the main activity's UI.</li>
@@ -196,19 +196,19 @@
 </ol>
 
  <h2 id="download">Connect and Download Data</h2>
- 
- <p>In your thread that performs your network transactions, you can use 
- {@link java.net.HttpURLConnection} to perform a {@code GET} and download your data. 
- After you call {@code connect()}, you can get an {@link java.io.InputStream} of the data 
+
+ <p>In your thread that performs your network transactions, you can use
+ {@link java.net.HttpURLConnection} to perform a {@code GET} and download your data.
+ After you call {@code connect()}, you can get an {@link java.io.InputStream} of the data
  by calling {@code getInputStream()}.
- 
+
  <p>In the following snippet, the {@link android.os.AsyncTask#doInBackground
 doInBackground()} method calls the method <code>downloadUrl()</code>. The
 <code>downloadUrl()</code> method takes the given URL and uses it to connect to
 the network via {@link java.net.HttpURLConnection}. Once a connection has been
 established, the app uses the method <code>getInputStream()</code> to retrieve
 the data as an {@link java.io.InputStream}.</p>
- 
+
 <pre>
 // Given a URL, establishes an HttpUrlConnection and retrieves
 // the web page content as a InputStream, which it returns as
@@ -218,7 +218,7 @@
     // Only display the first 500 characters of the retrieved
     // web page content.
     int len = 500;
-        
+
     try {
         URL url = new URL(myurl);
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
@@ -235,13 +235,13 @@
         // Convert the InputStream into a string
         String contentAsString = readIt(is, len);
         return contentAsString;
-        
+
     // Makes sure that the InputStream is closed after the app is
     // finished using it.
     } finally {
         if (is != null) {
             is.close();
-        } 
+        }
     }
 }</pre>
 
@@ -252,7 +252,7 @@
 
 <h2 id="stream">Convert the InputStream to a String</h2>
 
-<p>An {@link java.io.InputStream} is a readable source of bytes. Once you get an {@link java.io.InputStream}, 
+<p>An {@link java.io.InputStream} is a readable source of bytes. Once you get an {@link java.io.InputStream},
 it's common to decode or convert it into a
 target data type. For example, if you were downloading image data, you might
 decode and display it like this:</p>
@@ -271,7 +271,7 @@
 <pre>// Reads an InputStream and converts it to a String.
 public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
     Reader reader = null;
-    reader = new InputStreamReader(stream, "UTF-8");        
+    reader = new InputStreamReader(stream, "UTF-8");
     char[] buffer = new char[len];
     reader.read(buffer);
     return new String(buffer);
diff --git a/docs/html/training/basics/network-ops/index.jd b/docs/html/training/basics/network-ops/index.jd
index 1f6493f..1434562 100644
--- a/docs/html/training/basics/network-ops/index.jd
+++ b/docs/html/training/basics/network-ops/index.jd
@@ -42,7 +42,7 @@
 <p>This class explains the basic tasks involved in connecting to the network,
 monitoring the network connection (including connection changes), and giving
 users control over an app's network usage. It also describes how to parse and
-consume XML data.</p> 
+consume XML data.</p>
 
 <p>This class includes a sample application that illustrates how to perform
 common network operations. You can download the sample (to the right) and use it
@@ -66,18 +66,18 @@
 
 <dl>
  <dt><b><a href="connecting.html">Connecting to the Network</a></b></dt>
- 
+
    <dd>Learn how to connect to the network, choose an HTTP client, and perform
 network operations outside of the UI thread.</dd>
 
  <dt><b><a href="managing.html">Managing Network Usage</a></b></dt>
- 
+
    <dd>Learn how to check a
 device's network connection, create a preferences UI for controlling network
 usage, and respond to connection changes.</dd>
-   
+
    <dt><b><a href="xml.html">Parsing XML Data</a></b></dt>
    <dd>Learn how to parse and consume XML data.</dd>
 
-</dl> 
+</dl>
 
diff --git a/docs/html/training/basics/network-ops/managing.jd b/docs/html/training/basics/network-ops/managing.jd
index a645b3f..2609db5 100644
--- a/docs/html/training/basics/network-ops/managing.jd
+++ b/docs/html/training/basics/network-ops/managing.jd
@@ -10,8 +10,8 @@
 next.link=xml.html
 
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -37,7 +37,7 @@
  <p class="filename">NetworkUsage.zip</p>
 </div>
 
-</div> 
+</div>
 </div>
 
 <p>This lesson describes how to write applications that have fine-grained
@@ -50,19 +50,19 @@
 limits, because they can instead precisely control how much data your app
 uses.</p>
 
-<p>For general guidelines on how to write apps that minimize the battery life 
-impact of downloads and network connections, see 
-<a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a> 
+<p>For general guidelines on how to write apps that minimize the battery life
+impact of downloads and network connections, see
+<a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a>
 and <a href="{@docRoot}training/efficient-downloads/index.html">Transferring Data Without Draining the Battery</a>.
 
 <h2 id="check-connection">Check a Device's Network Connection</h2>
 
-<p>A device can have various types of network connections. This lesson  
-focuses on using either a Wi-Fi or a mobile network connection. For the full 
+<p>A device can have various types of network connections. This lesson
+focuses on using either a Wi-Fi or a mobile network connection. For the full
 list of possible network types, see {@link android.net.ConnectivityManager}.<p>
 
 <p>Wi-Fi is typically faster. Also, mobile data is often metered, which can get
-expensive. 
+expensive.
 A common strategy for apps is to only fetch large data
 if a Wi-Fi network is available.</p>
 
@@ -77,11 +77,11 @@
   <li>{@link android.net.ConnectivityManager}: Answers queries about the state
 of network connectivity. It also  notifies applications when network
 connectivity changes. </li>
-  
+
   <li>{@link android.net.NetworkInfo}: Describes the status of a network
 interface of a given type  (currently either Mobile or Wi-Fi).
   </li>
-  
+
 </ul>
 
 
@@ -94,16 +94,16 @@
 
 <pre>
 private static final String DEBUG_TAG = &quot;NetworkStatusExample&quot;;
-...      
-ConnectivityManager connMgr = (ConnectivityManager) 
+...
+ConnectivityManager connMgr = (ConnectivityManager)
         getSystemService(Context.CONNECTIVITY_SERVICE);
-NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
+NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
 boolean isWifiConn = networkInfo.isConnected();
 networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 boolean isMobileConn = networkInfo.isConnected();
 Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
 Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);
-</pre> 
+</pre>
 
 <p>Note that you should not base decisions on whether a network is
 &quot;available.&quot; You should always check {@link
@@ -122,7 +122,7 @@
 
 <pre>
 public boolean isOnline() {
-    ConnectivityManager connMgr = (ConnectivityManager) 
+    ConnectivityManager connMgr = (ConnectivityManager)
             getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
     return (networkInfo != null && networkInfo.isConnected());
@@ -148,37 +148,37 @@
 
 </ul>
 
-<p>To write an app that supports network access and managing 
-network usage, your manifest must have the right permissions and 
+<p>To write an app that supports network access and managing
+network usage, your manifest must have the right permissions and
 intent filters.
 </p>
 
 <ul>
   <li>The manifest excerpted below includes the following permissions:
     <ul>
-    
+
       <li>{@link android.Manifest.permission#INTERNET
 android.permission.INTERNET}&mdash;Allows applications to open network
 sockets.</li>
-      
+
       <li>{@link android.Manifest.permission#ACCESS_NETWORK_STATE
 android.permission.ACCESS_NETWORK_STATE}&mdash;Allows applications to access
 information about networks.</li>
-      
+
     </ul>
   </li>
-  
-  <li>You can declare the intent filter for the 
+
+  <li>You can declare the intent filter for the
 {@link android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} action (introduced in
 Android 4.0) to indicate that your application defines an activity that offers
 options to control data usage. {@link
 android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} shows settings for managing
-the network data usage of a specific application. When your app has a settings activity 
-that allows users to control network usage, you should declare this intent filter for that activity. 
+the network data usage of a specific application. When your app has a settings activity
+that allows users to control network usage, you should declare this intent filter for that activity.
 In the sample application, this action is handled by the class
 <code>SettingsActivity</code>, which displays a preferences UI to let users
 decide when to download a feed.</li>
-  
+
 </ul>
 
 
@@ -188,9 +188,9 @@
     package="com.example.android.networkusage"
     ...&gt;
 
-    &lt;uses-sdk android:minSdkVersion="4" 
+    &lt;uses-sdk android:minSdkVersion="4"
            android:targetSdkVersion="14" /&gt;
-        
+
     &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
     &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;
 
@@ -213,7 +213,7 @@
 <code>SettingsActivity</code> has an intent filter for the {@link
 android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} action.
 <code>SettingsActivity</code> is a subclass of {@link
-android.preference.PreferenceActivity}. It displays a preferences screen 
+android.preference.PreferenceActivity}. It displays a preferences screen
 (shown in figure 1) that
 lets users specify the following:</p>
 
@@ -221,10 +221,10 @@
 
   <li>Whether to display summaries for each XML feed entry, or just a link for
 each entry.</li>
-  
+
   <li>Whether to download the XML feed if any network connection is available,
 or only if Wi-Fi is available.</li>
-  
+
 </ul>
 
 <img src="{@docRoot}images/training/basics/network-settings1.png" alt="Preferences panel" />
@@ -232,49 +232,49 @@
 <img src="{@docRoot}images/training/basics/network-settings2.png" alt="Setting a network preference" />
 <p class="img-caption"><strong>Figure 1.</strong> Preferences activity.</p>
 
-<p>Here is <code>SettingsActivity</code>. Note that it implements 
-{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener OnSharedPreferenceChangeListener}. 
+<p>Here is <code>SettingsActivity</code>. Note that it implements
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener OnSharedPreferenceChangeListener}.
 When a user changes a preference, it fires
-{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged onSharedPreferenceChanged()}, 
-which sets {@code refreshDisplay} to true. This causes the display to refresh when the user 
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged onSharedPreferenceChanged()},
+which sets {@code refreshDisplay} to true. This causes the display to refresh when the user
 returns to the main activity:</p>
 
 <pre>public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
-    
+
     &#64;Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        
+
         // Loads the XML preferences file
         addPreferencesFromResource(R.xml.preferences);
     }
-  
+
     &#64;Override
     protected void onResume() {
         super.onResume();
 
-        // Registers a listener whenever a key changes            
+        // Registers a listener whenever a key changes
         getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
     }
-  
+
     &#64;Override
     protected void onPause() {
         super.onPause();
 
        // Unregisters the listener set in onResume().
-       // It's best practice to unregister listeners when your app isn't using them to cut down on 
-       // unnecessary system overhead. You do this in onPause().            
-       getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);    
+       // It's best practice to unregister listeners when your app isn't using them to cut down on
+       // unnecessary system overhead. You do this in onPause().
+       getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
     }
-  
-    // When the user changes the preferences selection, 
+
+    // When the user changes the preferences selection,
     // onSharedPreferenceChanged() restarts the main activity as a new
     // task. Sets the refreshDisplay flag to "true" to indicate that
     // the main activity should update its display.
     // The main activity queries the PreferenceManager to get the latest settings.
-    
+
     &#64;Override
-    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {    
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
         // Sets refreshDisplay to true so that when the user returns to the main
         // activity, the display refreshes to reflect the new settings.
         NetworkActivity.refreshDisplay = true;
@@ -295,31 +295,31 @@
     public static final String WIFI = "Wi-Fi";
     public static final String ANY = "Any";
     private static final String URL = "http://stackoverflow.com/feeds/tag?tagnames=android&sort=newest";
-   
+
     // Whether there is a Wi-Fi connection.
-    private static boolean wifiConnected = false; 
+    private static boolean wifiConnected = false;
     // Whether there is a mobile connection.
     private static boolean mobileConnected = false;
     // Whether the display should be refreshed.
     public static boolean refreshDisplay = true;
-    
+
     // The user's current network preference setting.
     public static String sPref = null;
-    
+
     // The BroadcastReceiver that tracks network connectivity changes.
     private NetworkReceiver receiver = new NetworkReceiver();
-    
+
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        
+
         // Registers BroadcastReceiver to track network connection changes.
         IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
         receiver = new NetworkReceiver();
         this.registerReceiver(receiver, filter);
     }
-    
-    &#64;Override 
+
+    &#64;Override
     public void onDestroy() {
         super.onDestroy();
         // Unregisters BroadcastReceiver when app is destroyed.
@@ -327,34 +327,34 @@
             this.unregisterReceiver(receiver);
         }
     }
-    
+
     // Refreshes the display if the network connection and the
     // pref settings allow it.
-    
+
     &#64;Override
     public void onStart () {
-        super.onStart();  
-        
+        super.onStart();
+
         // Gets the user's network preference settings
         SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
-        
+
         // Retrieves a string value for the preferences. The second parameter
         // is the default value to use if a preference value is not found.
         sPref = sharedPrefs.getString("listPref", "Wi-Fi");
 
-        updateConnectedFlags(); 
-       
+        updateConnectedFlags();
+
         if(refreshDisplay){
-            loadPage();    
+            loadPage();
         }
     }
-    
+
     // Checks the network connection and sets the wifiConnected and mobileConnected
-    // variables accordingly. 
+    // variables accordingly.
     public void updateConnectedFlags() {
-        ConnectivityManager connMgr = (ConnectivityManager) 
+        ConnectivityManager connMgr = (ConnectivityManager)
                 getSystemService(Context.CONNECTIVITY_SERVICE);
-        
+
         NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
         if (activeInfo != null && activeInfo.isConnected()) {
             wifiConnected = activeInfo.getType() == ConnectivityManager.TYPE_WIFI;
@@ -362,9 +362,9 @@
         } else {
             wifiConnected = false;
             mobileConnected = false;
-        }  
+        }
     }
-      
+
     // Uses AsyncTask subclass to download the XML feed from stackoverflow.com.
     public void loadPage() {
         if (((sPref.equals(ANY)) && (wifiConnected || mobileConnected))
@@ -376,7 +376,7 @@
         }
     }
 ...
-    
+
 }</pre>
 
 <h2 id="detect-changes">Detect Connection Changes</h2>
@@ -388,36 +388,36 @@
 determines what the  network connection status is, and sets the flags
 <code>wifiConnected</code> and <code>mobileConnected</code> to true/false
 accordingly. The upshot is that the next time the user returns to the app, the
-app will only download the latest feed and update the display if 
+app will only download the latest feed and update the display if
 <code>NetworkActivity.refreshDisplay</code> is set to <code>true</code>.</p>
 
-<p>Setting up a BroadcastReceiver that gets called unnecessarily can be a 
+<p>Setting up a BroadcastReceiver that gets called unnecessarily can be a
 drain on system resources.
-The sample application registers the 
-{@link android.content.BroadcastReceiver} {@code NetworkReceiver} in 
-{@link android.app.Activity#onCreate(android.os.Bundle) onCreate()}, 
-and it unregisters it in 
-{@link android.app.Activity#onDestroy onDestroy()}. This is more lightweight 
+The sample application registers the
+{@link android.content.BroadcastReceiver} {@code NetworkReceiver} in
+{@link android.app.Activity#onCreate(android.os.Bundle) onCreate()},
+and it unregisters it in
+{@link android.app.Activity#onDestroy onDestroy()}. This is more lightweight
 than declaring a {@code <receiver>} in the manifest. When you declare a
 {@code <receiver>} in the manifest, it can wake up your app at any time,
-even if you haven't run it for weeks. By registering and unregistering 
-{@code NetworkReceiver} within the main activity, you ensure that the app won't 
-be woken up after the user leaves the app. 
+even if you haven't run it for weeks. By registering and unregistering
+{@code NetworkReceiver} within the main activity, you ensure that the app won't
+be woken up after the user leaves the app.
 If you do declare a {@code <receiver>} in the manifest and you know exactly
-where you need it, you can use 
+where you need it, you can use
 {@link android.content.pm.PackageManager#setComponentEnabledSetting setComponentEnabledSetting()}
 to enable and disable it as appropriate.</p>
 
 <p>Here is  <code>NetworkReceiver</code>:</p>
 
-<pre>public class NetworkReceiver extends BroadcastReceiver {   
-      
+<pre>public class NetworkReceiver extends BroadcastReceiver {
+
 &#64;Override
 public void onReceive(Context context, Intent intent) {
     ConnectivityManager conn =  (ConnectivityManager)
         context.getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo networkInfo = conn.getActiveNetworkInfo();
-       
+
     // Checks the user prefs and the network connection. Based on the result, decides whether
     // to refresh the display or keep the current display.
     // If the userpref is Wi-Fi only, checks to see if the device has a Wi-Fi connection.
@@ -432,9 +432,9 @@
     // (which by process of elimination would be mobile), sets refreshDisplay to true.
     } else if (ANY.equals(sPref) && networkInfo != null) {
         refreshDisplay = true;
-                 
+
     // Otherwise, the app can't download content--either because there is no network
-    // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there 
+    // connection (mobile or Wi-Fi), or because the pref setting is WIFI, and there
     // is no Wi-Fi connection.
     // Sets refreshDisplay to false.
     } else {
diff --git a/docs/html/training/basics/network-ops/xml.jd b/docs/html/training/basics/network-ops/xml.jd
index 0ea696d..3385a63 100644
--- a/docs/html/training/basics/network-ops/xml.jd
+++ b/docs/html/training/basics/network-ops/xml.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 
@@ -38,7 +38,7 @@
  <p class="filename">NetworkUsage.zip</p>
 </div>
 
-</div> 
+</div>
 </div>
 
 <p>Extensible Markup Language (XML) is a set of rules for encoding documents in
@@ -55,11 +55,11 @@
 implementations of this interface:</p>
 
 <ul>
-  <li><a href="http://kxml.sourceforge.net/"><code>KXmlParser</code></a> 
-  via {@link org.xmlpull.v1.XmlPullParserFactory#newPullParser XmlPullParserFactory.newPullParser()}. 
+  <li><a href="http://kxml.sourceforge.net/"><code>KXmlParser</code></a>
+  via {@link org.xmlpull.v1.XmlPullParserFactory#newPullParser XmlPullParserFactory.newPullParser()}.
   </li>
-  <li><code>ExpatPullParser</code>, via 
-  {@link android.util.Xml#newPullParser Xml.newPullParser()}. 
+  <li><code>ExpatPullParser</code>, via
+  {@link android.util.Xml#newPullParser Xml.newPullParser()}.
   </li>
 </ul>
 
@@ -69,15 +69,15 @@
 
 <h2 id="analyze">Analyze the Feed</h2>
 
-<p>The first step in parsing a feed is to decide which fields you're interested in. 
+<p>The first step in parsing a feed is to decide which fields you're interested in.
 The parser extracts data for those fields and ignores the rest.</p>
 
 <p>Here is an excerpt from the feed that's being parsed in the sample app. Each
 post to <a href="http://stackoverflow.com">StackOverflow.com</a> appears in the
 feed as an <code>entry</code> tag that contains several nested tags:</p>
 
-<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; 
-&lt;feed xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:creativeCommons=&quot;http://backend.userland.com/creativeCommonsRssModule&quot; ...&quot;&gt;     
+<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;feed xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:creativeCommons=&quot;http://backend.userland.com/creativeCommonsRssModule&quot; ...&quot;&gt;
 &lt;title type=&quot;text&quot;&gt;newest questions tagged android - Stack Overflow&lt;/title&gt;
 ...
     &lt;entry&gt;
@@ -107,7 +107,7 @@
 ...
 &lt;/feed&gt;</pre>
 
-<p>The sample app  
+<p>The sample app
 extracts data for the <code>entry</code> tag and its nested tags
 <code>title</code>, <code>link</code>, and <code>summary</code>.</p>
 
@@ -125,7 +125,7 @@
 <pre>public class StackOverflowXmlParser {
     // We don't use namespaces
     private static final String ns = null;
-   
+
     public List<Entry> parse(InputStream in) throws XmlPullParserException, IOException {
         try {
             XmlPullParser parser = Xml.newPullParser();
@@ -137,7 +137,7 @@
             in.close();
         }
     }
- ... 
+ ...
 }</pre>
 
 <h2 id="read">Read the Feed</h2>
@@ -166,7 +166,7 @@
         } else {
             skip(parser);
         }
-    }  
+    }
     return entries;
 }</pre>
 
@@ -187,7 +187,7 @@
 
 <li>A "read" method for each tag you're interested in. For example,
 <code>readEntry()</code>, <code>readTitle()</code>, and so on. The parser reads
-tags from the input stream. When it encounters a tag named <code>entry</code>, 
+tags from the input stream. When it encounters a tag named <code>entry</code>,
 <code>title</code>,
 <code>link</code> or <code>summary</code>, it calls the appropriate method
 for that tag. Otherwise, it skips the tag.
@@ -201,7 +201,7 @@
 <code>readText()</code>. This method extracts data for these tags by calling
 <code>parser.getText()</code>.</li>
 
-<li>For the <code>link</code> tag, the parser extracts data for links by first 
+<li>For the <code>link</code> tag, the parser extracts data for links by first
 determining if the link is the kind
 it's interested in. Then it uses <code>parser.getAttributeValue()</code> to
 extract the link's value.</li>
@@ -215,7 +215,7 @@
 </li>
 <li>A helper <code>skip()</code> method that's recursive. For more discussion of this topic, see <a href="#skip">Skip Tags You Don't Care About</a>.</li>
 </ul>
-  
+
   </li>
 </ol>
 
@@ -231,7 +231,7 @@
         this.link = link;
     }
 }
-  
+
 // Parses the contents of an entry. If it encounters a title, summary, or link tag, hands them off
 // to their respective &quot;read&quot; methods for processing. Otherwise, skips the tag.
 private Entry readEntry(XmlPullParser parser) throws XmlPullParserException, IOException {
@@ -264,18 +264,18 @@
     parser.require(XmlPullParser.END_TAG, ns, "title");
     return title;
 }
-  
+
 // Processes link tags in the feed.
 private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
     String link = "";
     parser.require(XmlPullParser.START_TAG, ns, "link");
     String tag = parser.getName();
-    String relType = parser.getAttributeValue(null, "rel");  
+    String relType = parser.getAttributeValue(null, "rel");
     if (tag.equals("link")) {
         if (relType.equals("alternate")){
             link = parser.getAttributeValue(null, "href");
             parser.nextTag();
-        } 
+        }
     }
     parser.require(XmlPullParser.END_TAG, ns, "link");
     return link;
@@ -350,7 +350,7 @@
 <ul>
 
 <li>The first time through the <code>while</code> loop, the next tag the parser
-encounters after <code>&lt;author&gt;</code> is the <code>START_TAG</code> for 
+encounters after <code>&lt;author&gt;</code> is the <code>START_TAG</code> for
 <code>&lt;name&gt;</code>. The value for <code>depth</code> is incremented to
 2.</li>
 
@@ -367,7 +367,7 @@
 <code>depth</code> is decremented to 1.</li>
 
 <li>The fifth time and final time through the <code>while</code> loop, the next
-tag the parser encounters is the <code>END_TAG</code> 
+tag the parser encounters is the <code>END_TAG</code>
 <code>&lt;/author&gt;</code>. The value for <code>depth</code> is decremented to
 0, indicating that the <code>&lt;author&gt;</code> element has been successfully
 skipped.</li>
@@ -377,7 +377,7 @@
 <h2 id="consume">Consume XML Data</h2>
 
 <p>The example application fetches and parses the XML feed within an {@link
-android.os.AsyncTask}. This takes the processing off the main UI thread. When 
+android.os.AsyncTask}. This takes the processing off the main UI thread. When
 processing is complete, the app updates the UI in the main activity
 (<code>NetworkActivity</code>).</p>
 <p>In the excerpt shown below, the <code>loadPage()</code> method does the
@@ -386,33 +386,33 @@
 <ul>
 
   <li>Initializes a string variable with the URL for the XML feed.</li>
-  
+
   <li>If the user's settings and the network connection allow it, invokes
-<code>new DownloadXmlTask().execute(url)</code>. This instantiates a new 
+<code>new DownloadXmlTask().execute(url)</code>. This instantiates a new
 <code>DownloadXmlTask</code> object ({@link android.os.AsyncTask} subclass) and
 runs its {@link android.os.AsyncTask#execute execute()} method, which downloads
 and parses the feed and returns a string result to be displayed in the UI.</li>
-  
+
 </ul>
 <pre>
 public class NetworkActivity extends Activity {
     public static final String WIFI = "Wi-Fi";
     public static final String ANY = "Any";
     private static final String URL = "http://stackoverflow.com/feeds/tag?tagnames=android&sort=newest";
-   
+
     // Whether there is a Wi-Fi connection.
-    private static boolean wifiConnected = false; 
+    private static boolean wifiConnected = false;
     // Whether there is a mobile connection.
     private static boolean mobileConnected = false;
     // Whether the display should be refreshed.
-    public static boolean refreshDisplay = true; 
+    public static boolean refreshDisplay = true;
     public static String sPref = null;
 
     ...
-      
+
     // Uses AsyncTask to download the XML feed from stackoverflow.com.
-    public void loadPage() {  
-      
+    public void loadPage() {
+
         if((sPref.equals(ANY)) && (wifiConnected || mobileConnected)) {
             new DownloadXmlTask().execute(URL);
         }
@@ -420,25 +420,25 @@
             new DownloadXmlTask().execute(URL);
         } else {
             // show error
-        }  
+        }
     }</pre>
-    
+
 <p>The {@link android.os.AsyncTask} subclass shown below,
 <code>DownloadXmlTask</code>, implements the following {@link
 android.os.AsyncTask} methods:</p>
 
     <ul>
-    
+
       <li>{@link android.os.AsyncTask#doInBackground doInBackground()} executes
 the method <code>loadXmlFromNetwork()</code>. It passes the feed URL as a
 parameter. The method <code>loadXmlFromNetwork()</code> fetches and processes
 the feed. When it finishes, it passes back a result string.</li>
-      
+
       <li>{@link android.os.AsyncTask#onPostExecute onPostExecute()} takes the
 returned string and displays it in the UI.</li>
-      
+
     </ul>
-    
+
 <pre>
 // Implementation of AsyncTask used to download XML feed from stackoverflow.com.
 private class DownloadXmlTask extends AsyncTask&lt;String, Void, String&gt; {
@@ -454,7 +454,7 @@
     }
 
     &#64;Override
-    protected void onPostExecute(String result) {  
+    protected void onPostExecute(String result) {
         setContentView(R.layout.main);
         // Displays the HTML string in the UI via a WebView
         WebView myWebView = (WebView) findViewById(R.id.webview);
@@ -464,28 +464,28 @@
 
    <p>Below is the method <code>loadXmlFromNetwork()</code> that is invoked from
 <code>DownloadXmlTask</code>. It does the following:</p>
-   
+
    <ol>
-   
+
      <li>Instantiates a <code>StackOverflowXmlParser</code>. It also creates variables for
-a {@link java.util.List} of <code>Entry</code> objects (<code>entries</code>), and 
+a {@link java.util.List} of <code>Entry</code> objects (<code>entries</code>), and
 <code>title</code>, <code>url</code>, and <code>summary</code>, to hold the
 values extracted from the XML feed for those fields.</li>
-     
-     <li>Calls <code>downloadUrl()</code>, which fetches the feed and returns it as 
+
+     <li>Calls <code>downloadUrl()</code>, which fetches the feed and returns it as
      an {@link java.io.InputStream}.</li>
-     
-     <li>Uses <code>StackOverflowXmlParser</code> to parse the {@link java.io.InputStream}. 
-     <code>StackOverflowXmlParser</code> populates a 
+
+     <li>Uses <code>StackOverflowXmlParser</code> to parse the {@link java.io.InputStream}.
+     <code>StackOverflowXmlParser</code> populates a
      {@link java.util.List} of <code>entries</code> with data from the feed.</li>
-     
-     <li>Processes the <code>entries</code> {@link java.util.List}, 
+
+     <li>Processes the <code>entries</code> {@link java.util.List},
  and combines the feed data with HTML markup.</li>
-     
+
      <li>Returns an HTML string that is displayed in the main activity
 UI by the {@link android.os.AsyncTask} method {@link
 android.os.AsyncTask#onPostExecute onPostExecute()}.</li>
-     
+
 </ol>
 
 <pre>
@@ -499,35 +499,35 @@
     String title = null;
     String url = null;
     String summary = null;
-    Calendar rightNow = Calendar.getInstance(); 
+    Calendar rightNow = Calendar.getInstance();
     DateFormat formatter = new SimpleDateFormat("MMM dd h:mmaa");
-        
+
     // Checks whether the user set the preference to include summary text
     SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
     boolean pref = sharedPrefs.getBoolean("summaryPref", false);
-        
+
     StringBuilder htmlString = new StringBuilder();
     htmlString.append("&lt;h3&gt;" + getResources().getString(R.string.page_title) + "&lt;/h3&gt;");
-    htmlString.append("&lt;em&gt;" + getResources().getString(R.string.updated) + " " + 
+    htmlString.append("&lt;em&gt;" + getResources().getString(R.string.updated) + " " +
             formatter.format(rightNow.getTime()) + "&lt;/em&gt;");
-        
+
     try {
-        stream = downloadUrl(urlString);        
+        stream = downloadUrl(urlString);
         entries = stackOverflowXmlParser.parse(stream);
     // Makes sure that the InputStream is closed after the app is
     // finished using it.
     } finally {
         if (stream != null) {
             stream.close();
-        } 
+        }
      }
-    
+
     // StackOverflowXmlParser returns a List (called "entries") of Entry objects.
     // Each Entry object represents a single post in the XML feed.
     // This section processes the entries list to combine each entry with HTML markup.
     // Each entry is displayed in the UI as a link that optionally includes
     // a text summary.
-    for (Entry entry : entries) {       
+    for (Entry entry : entries) {
         htmlString.append("&lt;p&gt;&lt;a href='");
         htmlString.append(entry.link);
         htmlString.append("'&gt;" + entry.title + "&lt;/a&gt;&lt;/p&gt;");
diff --git a/docs/html/training/basics/supporting-devices/index.jd b/docs/html/training/basics/supporting-devices/index.jd
index 4644c31..c9f2e6c 100644
--- a/docs/html/training/basics/supporting-devices/index.jd
+++ b/docs/html/training/basics/supporting-devices/index.jd
@@ -35,7 +35,7 @@
 variety of Android-compatible devices, using a single application package (APK).</p>
 
 <h2>Lessons</h2>
- 
+
 <dl>
   <dt><b><a href="languages.html">Supporting Different Languages</a></b></dt>
   <dd>Learn how to support multiple languages with alternative string resources.</dd>
@@ -44,5 +44,5 @@
   <dt><b><a href="platforms.html">Supporting Different Platform Versions</a></b></dt>
   <dd>Learn how to use APIs available in new versions of Android while continuing to support
 older versions of Android.</dd>
-</dl> 
+</dl>
 
diff --git a/docs/html/training/basics/supporting-devices/languages.jd b/docs/html/training/basics/supporting-devices/languages.jd
index ba7c016..0ad1faf 100644
--- a/docs/html/training/basics/supporting-devices/languages.jd
+++ b/docs/html/training/basics/supporting-devices/languages.jd
@@ -36,7 +36,7 @@
 your string values.</p>
 
 
-<h2 id="CreateDirs">Create Locale Directories and String Files</h2> 
+<h2 id="CreateDirs">Create Locale Directories and String Files</h2>
 
 <p>To add support for more languages, create additional <code>values</code> directories inside
 <code>res/</code> that include a hyphen and the ISO language code at the end of the
@@ -63,7 +63,7 @@
 
 <p>At runtime, the Android system uses the appropriate set of string resources based on the
 locale currently set for the user's device.</p>
-  
+
 <p>For example, the following are some different string resource files for different languages.</p>
 
 
@@ -112,7 +112,7 @@
 <p>In your source code, you can refer to a string resource with the syntax {@code
 R.string.<string_name>}. There are a variety of methods that accept a string resource this
 way.</p>
-  
+
 <p>For example:</p>
 
 <pre>
diff --git a/docs/html/training/basics/supporting-devices/platforms.jd b/docs/html/training/basics/supporting-devices/platforms.jd
index eecb356..6712029 100644
--- a/docs/html/training/basics/supporting-devices/platforms.jd
+++ b/docs/html/training/basics/supporting-devices/platforms.jd
@@ -10,14 +10,14 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
     <ol>
       <li><a href="#sdk-versions">Specify Minimum and Target API Levels</a></li>
       <li><a href="#version-codes">Check System Version at Runtime</a></li>
       <li><a href="#style-themes">Use Platform Styles and Themes</a></li>
     </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></li>
@@ -27,19 +27,19 @@
   </div>
 </div>
 
-<p>While the latest versions of Android often provide great APIs for your app, you should continue 
-to support older versions of Android until more devices get updated. This 
-lesson shows you how to take advantage of the latest APIs while continuing to support older 
+<p>While the latest versions of Android often provide great APIs for your app, you should continue
+to support older versions of Android until more devices get updated. This
+lesson shows you how to take advantage of the latest APIs while continuing to support older
 versions as well.</p>
 
 <p>The dashboard for <a
 href="http://developer.android.com/about/dashboards/index.html">Platform Versions</a>
-is updated regularly to show the distribution of active 
-devices running each version of Android, based on the number of devices that visit the Google Play 
-Store.  Generally, it’s a good practice to support about 90% of the active devices, while 
+is updated regularly to show the distribution of active
+devices running each version of Android, based on the number of devices that visit the Google Play
+Store.  Generally, it’s a good practice to support about 90% of the active devices, while
 targeting your app to the latest version.</p>
 
-<p class="note"><strong>Tip:</strong> In order to provide the best features and 
+<p class="note"><strong>Tip:</strong> In order to provide the best features and
 functionality across several Android versions, you should use the <a
 href="{@docRoot}tools/support-library/index.html">Android Support Library</a> in your app,
 which allows you to use several recent platform APIs on older versions.</p>
@@ -49,8 +49,8 @@
 <h2 id="sdk-versions">Specify Minimum and Target API Levels</h2>
 
 <p>The <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a> file
-describes details about your app and 
-identifies which versions of Android it supports.   Specifically, the <code>minSdkVersion</code> 
+describes details about your app and
+identifies which versions of Android it supports.   Specifically, the <code>minSdkVersion</code>
 and <code>targetSdkVersion</code> attributes for the <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a> element
 identify the lowest API level with which your app is compatible and the highest API level against
@@ -65,9 +65,9 @@
 &lt;/manifest>
 </pre>
 
-<p>As new versions of Android are released, some style and behaviors may change. 
+<p>As new versions of Android are released, some style and behaviors may change.
 To allow your app to take advantage of these changes and ensure that your app fits the style of
-each user's device, you should set the 
+each user's device, you should set the
 <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
 value to match the latest Android version
@@ -93,24 +93,24 @@
 
 
 
-<p class="note"><strong>Note:</strong> When parsing XML resources, Android ignores XML 
+<p class="note"><strong>Note:</strong> When parsing XML resources, Android ignores XML
 attributes that aren’t supported by the current device. So you can safely use XML attributes that
 are only supported by newer versions without worrying about older versions breaking when they
-encounter that code. For example, if you set the 
+encounter that code. For example, if you set the
 <code>targetSdkVersion="11"</code>, your app includes the {@link android.app.ActionBar} by default
-on Android 3.0 and higher. To then add menu items to the action bar, you need to set 
-<code>android:showAsAction="ifRoom"</code> in your menu resource XML. It's safe to do this 
-in a cross-version XML file, because the older versions of Android simply ignore the 
-<code>showAsAction</code> attribute (that is, you <em>do not</em> need a separate 
+on Android 3.0 and higher. To then add menu items to the action bar, you need to set
+<code>android:showAsAction="ifRoom"</code> in your menu resource XML. It's safe to do this
+in a cross-version XML file, because the older versions of Android simply ignore the
+<code>showAsAction</code> attribute (that is, you <em>do not</em> need a separate
 version in <code>res/menu-v11/</code>).</p>
 
 
 
-<h2 id="style-themes">Use Platform Styles and Themes</h2> 
+<h2 id="style-themes">Use Platform Styles and Themes</h2>
 
-<p>Android provides user experience themes that give apps the look and feel of the 
-underlying operating system.  These themes can be applied to your app within the 
-manifest file.  By using these built in styles and themes, your app will 
+<p>Android provides user experience themes that give apps the look and feel of the
+underlying operating system.  These themes can be applied to your app within the
+manifest file.  By using these built in styles and themes, your app will
 naturally follow the latest look and feel of Android with each new release.</p>
 
 <p>To make your activity look like a dialog box:</p>
@@ -126,7 +126,7 @@
 <pre>&lt;activity android:theme="@style/CustomTheme"></pre>
 
 <p>To apply a theme to your entire app (all activities), add the <code>android:theme</code>
-attribute 
+attribute
 to the <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
 <application>}</a> element:</p>
 
diff --git a/docs/html/training/basics/supporting-devices/screens.jd b/docs/html/training/basics/supporting-devices/screens.jd
index 4b54de8..9d5e7c1 100644
--- a/docs/html/training/basics/supporting-devices/screens.jd
+++ b/docs/html/training/basics/supporting-devices/screens.jd
@@ -8,13 +8,13 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
     <ol>
       <li><a href="#create-layouts">Create Different Layouts</a></li>
       <li><a href="#create-bitmaps">Create Different Bitmaps</a></li>
     </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple
@@ -26,9 +26,9 @@
   </div>
 </div>
 
-<p>Android categorizes device screens using two general properties:  size and density.  You should 
-expect that your app will be installed on devices with screens that range in both size 
-and density. As such, you should include some alternative resources that optimize your app’s 
+<p>Android categorizes device screens using two general properties:  size and density.  You should
+expect that your app will be installed on devices with screens that range in both size
+and density. As such, you should include some alternative resources that optimize your app’s
 appearance for different screen sizes and densities.</p>
 
 <ul>
@@ -46,12 +46,12 @@
 orientation.</p>
 
 
-<h2 id="create-layouts">Create Different Layouts</h2> 
+<h2 id="create-layouts">Create Different Layouts</h2>
 
 <p>To optimize your user experience on different screen sizes, you should create a unique layout XML
-file for each screen size you want to support. Each layout should be 
-saved into the appropriate resources directory, named with a <code>-&lt;screen_size></code> 
-suffix.  For example, a unique layout for large screens should be saved under 
+file for each screen size you want to support. Each layout should be
+saved into the appropriate resources directory, named with a <code>-&lt;screen_size></code>
+suffix.  For example, a unique layout for large screens should be saved under
 <code>res/layout-large/</code>.</p>
 
 <p class="note"><strong>Note:</strong> Android automatically scales your layout in order to
@@ -85,7 +85,7 @@
 }
 </pre>
 
-<p>The system loads the layout file from the appropriate layout directory based on screen size of 
+<p>The system loads the layout file from the appropriate layout directory based on screen size of
 the device on which your app is running. More information about how Android selects the
 appropriate resource is available in the <a
 href="{@docRoot}guide/topics/resources/providing-resources.html#BestMatch">Providing Resources</a>
@@ -120,7 +120,7 @@
             main.xml
 </pre>
 
-<p class="note"><strong>Note:</strong> Android 3.2 and above supports an advanced method of 
+<p class="note"><strong>Note:</strong> Android 3.2 and above supports an advanced method of
 defining screen sizes that allows you to specify resources for screen sizes based on
 the minimum width and height in terms of density-independent pixels. This lesson does not cover
 this new technique. For more information, read <a
@@ -128,14 +128,14 @@
 Screens</a>.</p>
 
 
- 
+
 <h2 id="create-bitmaps">Create Different Bitmaps</h2>
 
 <p>You should always provide bitmap resources that are properly scaled to each of the generalized
 density buckets: low, medium, high and extra-high density. This helps you achieve good graphical
 quality and performance on all screen densities.</p>
 
-<p>To generate these images, you should start with your raw resource in vector format and generate 
+<p>To generate these images, you should start with your raw resource in vector format and generate
 the images for each density using the following size scale:</p>
 <ul>
 <li>xhdpi: 2.0</li>
@@ -144,7 +144,7 @@
 <li>ldpi: 0.75</li>
 </ul>
 
-<p>This means that if you generate a 200x200 image for xhdpi devices, you should generate the same 
+<p>This means that if you generate a 200x200 image for xhdpi devices, you should generate the same
 resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for ldpi devices.</p>
 
 <p>Then, place the files in the appropriate drawable resource directory:</p>
@@ -162,14 +162,14 @@
             awesomeimage.png
 </pre>
 
-<p>Any time you reference <code>@drawable/awesomeimage</code>, the system selects the 
+<p>Any time you reference <code>@drawable/awesomeimage</code>, the system selects the
 appropriate bitmap based on the screen's density.</p>
 
 <p class="note"><strong>Note:</strong> Low-density (ldpi) resources aren’t always necessary.  When
 you provide hdpi assets, the system scales them down by one half to properly fit ldpi
 screens.</p>
 
-<p>For more tips and guidelines about creating icon assets for your app, see the 
+<p>For more tips and guidelines about creating icon assets for your app, see the
 <a href="{@docRoot}design/style/iconography.html">Iconography design guide</a>.</p>
 
 
diff --git a/docs/html/training/building-userinfo.jd b/docs/html/training/building-userinfo.jd
index 40e5b94..a08899d 100644
--- a/docs/html/training/building-userinfo.jd
+++ b/docs/html/training/building-userinfo.jd
@@ -4,6 +4,6 @@
 @jd:body
 
 
-<p>These lessons teach you how to include contact information and authenticate users with the same 
-credentials they use for Google. These features allow your app to connect users with people they 
+<p>These lessons teach you how to include contact information and authenticate users with the same
+credentials they use for Google. These features allow your app to connect users with people they
 care about and provide a personalized experience without creating new user accounts.</p>
diff --git a/docs/html/training/camera/cameradirect.jd b/docs/html/training/camera/cameradirect.jd
index 6f358a5..851c7db 100644
--- a/docs/html/training/camera/cameradirect.jd
+++ b/docs/html/training/camera/cameradirect.jd
@@ -11,7 +11,7 @@
 
 <div id="tb-wrapper">
   <div id="tb">
-    
+
     <h2>This lesson teaches you to</h2>
     <ol>
       <li><a href="#TaskOpenCamera">Open the Camera Object</a></li>
@@ -22,7 +22,7 @@
       <li><a href="#TaskRestartPreview">Restart the Preview</a></li>
       <li><a href="#TaskReleaseCamera">Stop the Preview and Release the Camera</a></li>
     </ol>
-    
+
     <h2>You should also read</h2>
     <ul>
       <li><a href="{@docRoot}guide/topics/media/camera.html#custom-camera">Building
@@ -57,7 +57,7 @@
 <pre>
 private boolean safeCameraOpen(int id) {
     boolean qOpened = false;
-  
+
     try {
         releaseCameraAndPreview();
         mCamera = Camera.open(id);
@@ -67,7 +67,7 @@
         e.printStackTrace();
     }
 
-    return qOpened;    
+    return qOpened;
 }
 
 private void releaseCameraAndPreview() {
@@ -136,22 +136,22 @@
 <pre>
 public void setCamera(Camera camera) {
     if (mCamera == camera) { return; }
-    
+
     stopPreviewAndFreeCamera();
-    
+
     mCamera = camera;
-    
+
     if (mCamera != null) {
         List&lt;Size> localSizes = mCamera.getParameters().getSupportedPreviewSizes();
         mSupportedPreviewSizes = localSizes;
         requestLayout();
-      
+
         try {
             mCamera.setPreviewDisplay(mHolder);
         } catch (IOException e) {
             e.printStackTrace();
         }
-      
+
         // Important: Call startPreview() to start updating the preview
         // surface. Preview must be started before you can take a picture.
         mCamera.startPreview();
@@ -260,12 +260,12 @@
     if (mCamera != null) {
         // Call stopPreview() to stop updating the preview surface.
         mCamera.stopPreview();
-    
+
         // Important: Call release() to release the camera for use by other
         // applications. Applications should release the camera immediately
         // during onPause() and re-open() it during onResume()).
         mCamera.release();
-    
+
         mCamera = null;
     }
 }
diff --git a/docs/html/training/contacts-provider/display-contact-badge.jd b/docs/html/training/contacts-provider/display-contact-badge.jd
index b00ce0e..6c9616b 100644
--- a/docs/html/training/contacts-provider/display-contact-badge.jd
+++ b/docs/html/training/contacts-provider/display-contact-badge.jd
@@ -268,7 +268,7 @@
                         Uri.withAppendedPath(
                                 contactUri, Photo.CONTENT_DIRECTORY);
             }
-    
+
         /*
          * Retrieves an AssetFileDescriptor object for the thumbnail
          * URI
diff --git a/docs/html/training/contacts-provider/index.jd b/docs/html/training/contacts-provider/index.jd
index f380d95..9562977 100644
--- a/docs/html/training/contacts-provider/index.jd
+++ b/docs/html/training/contacts-provider/index.jd
@@ -55,7 +55,7 @@
     <a href="{@docRoot}guide/topics/providers/contacts-provider.html">Contacts Provider</a>.
 </p>
 <h2>Lessons</h2>
- 
+
 <dl>
     <dt>
         <b><a href="retrieve-names.html">Retrieving a List of Contacts</a></b>
diff --git a/docs/html/training/custom-views/index.jd b/docs/html/training/custom-views/index.jd
index 447da94..d249fbd 100755
--- a/docs/html/training/custom-views/index.jd
+++ b/docs/html/training/custom-views/index.jd
@@ -67,7 +67,7 @@
     custom drawings run faster.
 </dd>
 
-</dl> 
+</dl>
 
 
 
diff --git a/docs/html/training/displaying-bitmaps/cache-bitmap.jd b/docs/html/training/displaying-bitmaps/cache-bitmap.jd
index 7b9216e..d9622bc 100644
--- a/docs/html/training/displaying-bitmaps/cache-bitmap.jd
+++ b/docs/html/training/displaying-bitmaps/cache-bitmap.jd
@@ -187,7 +187,7 @@
 appropriate place to store cached images if they are accessed more frequently, for example in an
 image gallery application.</p>
 
-<p>The sample code of this class uses a {@code DiskLruCache} implementation that is pulled from the 
+<p>The sample code of this class uses a {@code DiskLruCache} implementation that is pulled from the
 <a href="https://android.googlesource.com/platform/libcore/+/jb-mr2-release/luni/src/main/java/libcore/io/DiskLruCache.java">Android source</a>.
 Here’s updated example code that adds a disk cache in addition to the existing memory cache:</p>
 
diff --git a/docs/html/training/displaying-bitmaps/index.jd b/docs/html/training/displaying-bitmaps/index.jd
index 831c64d..aea473f 100644
--- a/docs/html/training/displaying-bitmaps/index.jd
+++ b/docs/html/training/displaying-bitmaps/index.jd
@@ -56,7 +56,7 @@
   perform under this minimum memory limit. However, keep in mind many devices are configured with
   higher limits.</li>
   <li>Bitmaps take up a lot of memory, especially for rich images like photographs. For example, the
-  camera on the <a href="http://www.android.com/devices/detail/galaxy-nexus">Galaxy Nexus</a> takes 
+  camera on the <a href="http://www.android.com/devices/detail/galaxy-nexus">Galaxy Nexus</a> takes
   photos up to 2592x1936 pixels (5 megapixels). If the bitmap configuration used is {@link
   android.graphics.Bitmap.Config ARGB_8888} (the default from the Android 2.3 onward) then loading
   this image into memory takes about 19MB of memory (2592*1936*4 bytes), immediately exhausting the
diff --git a/docs/html/training/displaying-bitmaps/load-bitmap.jd b/docs/html/training/displaying-bitmaps/load-bitmap.jd
index f963baa..81eb1ab 100644
--- a/docs/html/training/displaying-bitmaps/load-bitmap.jd
+++ b/docs/html/training/displaying-bitmaps/load-bitmap.jd
@@ -115,8 +115,8 @@
 
         // Calculate the largest inSampleSize value that is a power of 2 and keeps both
         // height and width larger than the requested height and width.
-        while ((halfHeight / inSampleSize) &gt; reqHeight
-                && (halfWidth / inSampleSize) &gt; reqWidth) {
+        while ((halfHeight / inSampleSize) &gt;= reqHeight
+                && (halfWidth / inSampleSize) &gt;= reqWidth) {
             inSampleSize *= 2;
         }
     }
diff --git a/docs/html/training/displaying-bitmaps/manage-memory.jd b/docs/html/training/displaying-bitmaps/manage-memory.jd
index b7c72bc..ef3bd6c 100644
--- a/docs/html/training/displaying-bitmaps/manage-memory.jd
+++ b/docs/html/training/displaying-bitmaps/manage-memory.jd
@@ -42,11 +42,11 @@
 
 <p>To set the stage for this lesson, here is how Android's management of
 bitmap memory has evolved:</p>
-<ul> 
+<ul>
   <li>
-On Android Android 2.2 (API level 8) and lower, when garbage 
+On Android Android 2.2 (API level 8) and lower, when garbage
 collection occurs, your app's threads get stopped. This causes a lag that
-can degrade performance. 
+can degrade performance.
 <strong>Android 2.3 adds concurrent garbage collection, which means that
 the memory is reclaimed soon after a bitmap is no longer referenced.</strong>
 </li>
@@ -66,7 +66,7 @@
 
 <h2 id="recycle">Manage Memory on Android 2.3.3 and Lower</h2>
 
-<p>On Android 2.3.3 (API level 10) and lower, using 
+<p>On Android 2.3.3 (API level 10) and lower, using
 {@link android.graphics.Bitmap#recycle recycle()}
 is recommended. If you're displaying large amounts of bitmap data in your app,
 you're likely to run into
@@ -82,12 +82,12 @@
 
 <p>The following code snippet gives an example of calling
 {@link android.graphics.Bitmap#recycle recycle()}. It uses reference counting
-(in the variables {@code mDisplayRefCount} and {@code mCacheRefCount}) to track 
+(in the variables {@code mDisplayRefCount} and {@code mCacheRefCount}) to track
 whether a bitmap is currently being displayed or in the cache. The
 code recycles the bitmap when these conditions are met:</p>
 
 <ul>
-<li>The reference count for both {@code mDisplayRefCount} and 
+<li>The reference count for both {@code mDisplayRefCount} and
 {@code mCacheRefCount} is 0.</li>
 <li>The bitmap is not {@code null}, and it hasn't been recycled yet.</li>
 </ul>
@@ -142,7 +142,7 @@
 
 <p>Android 3.0 (API level 11) introduces the
 {@link android.graphics.BitmapFactory.Options#inBitmap BitmapFactory.Options.inBitmap}
-field. If this option is set, decode methods that take the 
+field. If this option is set, decode methods that take the
 {@link android.graphics.BitmapFactory.Options Options} object
 will attempt to reuse an existing bitmap when loading content. This means
 that the bitmap's memory is reused, resulting in improved performance, and
@@ -154,7 +154,7 @@
 <h3>Save a bitmap for later use</h3>
 
 <p>The following snippet demonstrates how an existing bitmap is stored for possible
-later use in the sample app. When an app is running on Android 3.0 or higher and 
+later use in the sample app. When an app is running on Android 3.0 or higher and
 a bitmap is evicted from the {@link android.util.LruCache},
 a soft reference to the bitmap is placed
 in a {@link java.util.HashSet}, for possible reuse later with
@@ -238,7 +238,7 @@
     }
 }
 
-// This method iterates through the reusable bitmaps, looking for one 
+// This method iterates through the reusable bitmaps, looking for one
 // to use for inBitmap:
 protected Bitmap getBitmapFromReusableSet(BitmapFactory.Options options) {
         Bitmap bitmap = null;
diff --git a/docs/html/training/efficient-downloads/connectivity_patterns.jd b/docs/html/training/efficient-downloads/connectivity_patterns.jd
index 81f1540..079e967 100644
--- a/docs/html/training/efficient-downloads/connectivity_patterns.jd
+++ b/docs/html/training/efficient-downloads/connectivity_patterns.jd
@@ -26,7 +26,7 @@
 </div>
 
 <p>When it comes to impact on battery life, not all connection types are created equal. Not only does the Wi-Fi radio use significantly less battery than its wireless radio counterparts, but the radios used in different wireless radio technologies have different battery implications.</p>
- 
+
 <h2 id="WiFi">Use Wi-Fi</h2>
 
 <p>In most cases a Wi-Fi radio will offer greater bandwidth at a significantly lower battery cost. As a result, you should endeavor to perform data transfers when connected over Wi-Fi whenever possible.</p>
@@ -50,22 +50,22 @@
 
 TelephonyManager tm =
   (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
-  
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
- 
+
 int PrefetchCacheSize = DEFAULT_PREFETCH_CACHE;
- 
+
 switch (activeNetwork.getType()) {
-  case (ConnectivityManager.TYPE_WIFI): 
+  case (ConnectivityManager.TYPE_WIFI):
     PrefetchCacheSize = MAX_PREFETCH_CACHE; break;
   case (ConnectivityManager.TYPE_MOBILE): {
     switch (tm.getNetworkType()) {
-      case (TelephonyManager.NETWORK_TYPE_LTE | 
-            TelephonyManager.NETWORK_TYPE_HSPAP): 
+      case (TelephonyManager.NETWORK_TYPE_LTE |
+            TelephonyManager.NETWORK_TYPE_HSPAP):
         PrefetchCacheSize *= 4;
         break;
-      case (TelephonyManager.NETWORK_TYPE_EDGE | 
-            TelephonyManager.NETWORK_TYPE_GPRS): 
+      case (TelephonyManager.NETWORK_TYPE_EDGE |
+            TelephonyManager.NETWORK_TYPE_GPRS):
         PrefetchCacheSize /= 2;
         break;
       default: break;
diff --git a/docs/html/training/efficient-downloads/efficient-network-access.jd b/docs/html/training/efficient-downloads/efficient-network-access.jd
index 1d3a8a5..7f061ca 100644
--- a/docs/html/training/efficient-downloads/efficient-network-access.jd
+++ b/docs/html/training/efficient-downloads/efficient-network-access.jd
@@ -32,9 +32,9 @@
 <p>Using the wireless radio to transfer data is potentially one of your app's most significant sources of battery drain. To minimize the battery drain associated with network activity, it's critical that you understand how your connectivity model will affect the underlying radio hardware.</p>
 
 <p>This lesson introduces the wireless radio state machine and explains how your app's connectivity model interacts with it. It goes on to propose ways to minimize your data connections, use prefetching, and bundle your transfers in order to minimize the battery drain associated with your data transfers.</p>
- 
-<h2 id="RadioStateMachine">The Radio State Machine</h2> 
- 
+
+<h2 id="RadioStateMachine">The Radio State Machine</h2>
+
 <p>A fully active wireless radio consumes significant power, so it transitions between different energy states in order to conserve power when not in use, while attempting to minimize latency associated with "powering up" the radio when it's required.</p>
 
 <p>The state machine for a typical 3G network radio consists of three energy states:
@@ -57,9 +57,9 @@
 <p>This approach is particularly effective for typical web browsing as it prevents unwelcome latency while users browse the web. The relatively low tail-time also ensures that once a browsing session has finished, the radio can move to a lower energy state.</p>
 
 <p>Unfortunately, this approach can lead to inefficient apps on modern smartphone OSs like Android, where apps run both in the foreground (where latency is important) and in the background (where battery life should be prioritized).</p>
- 
-<h2 id="AppsStateMachine">How Apps Impact the Radio State Machine</h2> 
- 
+
+<h2 id="AppsStateMachine">How Apps Impact the Radio State Machine</h2>
+
 <p>Every time you create a new network connection, the radio transitions to the full power state. In the case of the typical 3G radio state machine described above, it will remain at full power for the duration of your transfer&mdash;plus an additional 5 seconds of tail time&mdash;followed by 12 seconds at the low energy state.  So for a typical 3G device, every data transfer session will cause the radio to draw energy for almost 20 seconds.</p>
 
 <p>In practice, this means an app that transfers unbundled data for 1 second every 18 seconds will keep the wireless radio perpetually active, moving it back to high power just as it was about to become idle. As a result, every minute it will consume battery at the high power state for 18 seconds, and at the low power state for the remaining 42 seconds.</p>
@@ -71,7 +71,7 @@
 <img src="{@docRoot}images/efficient-downloads/graphs.png" />
 <p class="img-caption"><strong>Figure 2.</strong> Relative wireless radio power use for bundled versus unbundled transfers.</p>
 
-<h2 id="PrefetchData">Prefetch Data</h2> 
+<h2 id="PrefetchData">Prefetch Data</h2>
 
 <p>Prefetching data is an effective way to reduce the number of independent data transfer sessions. Prefetching allows you to download all the data you are likely to need for a given time period in a single burst, over a single connection, at full capacity.</p>
 
@@ -135,7 +135,7 @@
 
 <p>Rather than creating multiple simultaneous connections to download data, or chaining multiple consecutive GET requests, where possible you should bundle those requests into a single GET.</p>
 
-<p>For example, it would be more efficient to make a single request for every news article to be returned in a single request / response than to make multiple queries for several news categories. 
+<p>For example, it would be more efficient to make a single request for every news article to be returned in a single request / response than to make multiple queries for several news categories.
 The wireless radio needs to become active in order to transmit the termination / termination acknowledgement packets associated with server and client  timeout, so it's also good practice to close your connections when they aren't in use, rather than waiting for these timeouts.</p>
 
 <p>That said, closing a connection too early can prevent it from being reused, which then requires additional overhead for establishing a new connection. A useful compromise is not to close the connection immediately, but to still close it before the inherent timeout expires.</p>
diff --git a/docs/html/training/efficient-downloads/index.jd b/docs/html/training/efficient-downloads/index.jd
index d9d7ef0..a4c2aa1 100644
--- a/docs/html/training/efficient-downloads/index.jd
+++ b/docs/html/training/efficient-downloads/index.jd
@@ -26,18 +26,18 @@
 
 <p>In this class you will learn to minimize the battery life impact of downloads and network connections, particularly in relation to the wireless radio.</P
 
-<p>This class demonstrates the best practices for scheduling and executing downloads using techniques such as caching, polling, and prefetching. You will learn how the power-use profile of the wireless radio can affect your choices on when, what, and how to transfer data in order to minimize impact on battery life.</p> 
+<p>This class demonstrates the best practices for scheduling and executing downloads using techniques such as caching, polling, and prefetching. You will learn how the power-use profile of the wireless radio can affect your choices on when, what, and how to transfer data in order to minimize impact on battery life.</p>
 
-<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.--> 
- 
-<dl> 
+will want to jump to a lesson or not.-->
+
+<dl>
   <dt><b><a href="efficient-network-access.html">Optimizing Downloads for Efficient Network Access</a></b></dt>
     <dd>This lesson introduces the wireless radio state machine, explains how your app’s connectivity model interacts with it, and how you can minimize your data connection and use prefetching and bundling to minimize the battery drain associated with your data transfers.</dd>
- 
+
   <dt><b><a href="regular_updates.html">Minimizing the Effect of Regular Updates</a></b></dt>
     <dd>This lesson will examine how your refresh frequency can be varied to best mitigate the effect of background updates on the underlying wireless radio state machine.</dd>
 
@@ -47,4 +47,4 @@
   <dt><b><a href="connectivity_patterns.html">Modifying your Download Patterns Based on the Connectivity Type</a></b></dt>
     <dd>When it comes to impact on battery life, not all connection types are created equal. Not only does the Wi-Fi radio use significantly less battery than its wireless radio counterparts, but the radios used in different wireless radio technologies have different battery implications.</dd>
 
-</dl> 
+</dl>
diff --git a/docs/html/training/efficient-downloads/regular_updates.jd b/docs/html/training/efficient-downloads/regular_updates.jd
index 8e3842a..b87c512 100644
--- a/docs/html/training/efficient-downloads/regular_updates.jd
+++ b/docs/html/training/efficient-downloads/regular_updates.jd
@@ -33,9 +33,9 @@
 <p><a href="{@docRoot}training/monitoring-device-state/index.html">Optimizing Battery Life</a> discusses how to build battery-efficient apps that modify their refresh frequency based on the state of the host device. That includes disabling background service updates when you lose connectivity and reducing the rate of updates when the battery level is low.</p>
 
 <p>This lesson will examine how your refresh frequency can be varied to best mitigate the effect of background updates on the underlying wireless radio state machine.</p>
- 
-<h2 id="GCM">Use Google Cloud Messaging as an Alternative to Polling</h2> 
- 
+
+<h2 id="GCM">Use Google Cloud Messaging as an Alternative to Polling</h2>
+
 <p>Every time your app polls your server to check if an update is required, you activate the wireless radio, drawing power unnecessarily, for up to 20 seconds on a typical 3G connection.</p>
 
 <p><a href="{@docRoot}google/gcm/index.html">Google Cloud Messaging for Android (GCM)</a> is a lightweight mechanism used to transmit data from a server to a particular app instance. Using GCM, your server can notify your app running on a particular device that there is new data available for it.</p>
@@ -46,7 +46,7 @@
 
 <p>GCM is implemented using a persistent TCP/IP connection. While it's possible to implement your own push service, it's best practice to use GCM. This minimizes the number of persistent connections and allows the platform to optimize bandwidth and minimize the associated impact on battery life.</p>
 
-<h2 id="OptimizedPolling">Optimize Polling with Inexact Repeating Alarms and Exponential Backoffs</h2> 
+<h2 id="OptimizedPolling">Optimize Polling with Inexact Repeating Alarms and Exponential Backoffs</h2>
 
 <p>Where polling is required, it's good practice to set the default data refresh frequency of your app as low as possible without detracting from the user experience.</p>
 
@@ -68,14 +68,14 @@
 
 <p>One approach is to implement an exponential back-off pattern to reduce the frequency of your updates (and / or the degree of prefetching you perform) if the app hasn't been used since the previous update. It's often useful to assert a minimum update frequency and to reset the frequency whenever the app is used, for example:</p>
 
-<pre>SharedPreferences sp = 
+<pre>SharedPreferences sp =
   context.getSharedPreferences(PREFS, Context.MODE_WORLD_READABLE);
 
 boolean appUsed = sp.getBoolean(PREFS_APPUSED, false);
 long updateInterval = sp.getLong(PREFS_INTERVAL, DEFAULT_REFRESH_INTERVAL);
 
 if (!appUsed)
-  if ((updateInterval *= 2) > MAX_REFRESH_INTERVAL)  
+  if ((updateInterval *= 2) > MAX_REFRESH_INTERVAL)
     updateInterval = MAX_REFRESH_INTERVAL;
 
 Editor spEdit = sp.edit();
@@ -92,10 +92,10 @@
 
 <pre>private void retryIn(long interval) {
   boolean success = attemptTransfer();
-    
+
   if (!success) {
-    retryIn(interval*2 < MAX_RETRY_INTERVAL ? 
-            interval*2 : MAX_RETRY_INTERVAL);      
+    retryIn(interval*2 < MAX_RETRY_INTERVAL ?
+            interval*2 : MAX_RETRY_INTERVAL);
   }
 }</pre>
 
diff --git a/docs/html/training/gestures/detector.jd b/docs/html/training/gestures/detector.jd
index 97f039c..0624e86 100644
--- a/docs/html/training/gestures/detector.jd
+++ b/docs/html/training/gestures/detector.jd
@@ -48,48 +48,48 @@
 
 <ol>
   <li>Gathering data about touch events.</li>
-  
+
   <li>Interpreting the data to see if it meets the criteria for any of the
-gestures your app supports. </li> 
+gestures your app supports. </li>
 
 </ol>
 
 <h4>Support Library Classes</h4>
 
 <p>The examples in this lesson use the {@link android.support.v4.view.GestureDetectorCompat}
-and {@link android.support.v4.view.MotionEventCompat} classes. These classes are in the 
+and {@link android.support.v4.view.MotionEventCompat} classes. These classes are in the
 <a href="{@docRoot}tools/support-library/index.html">Support Library</a>. You should use
-Support Library classes where possible to provide compatibility with devices 
-running Android 1.6 and higher. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a 
-replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility 
-methods to which you pass your {@link android.view.MotionEvent} object in order to receive 
+Support Library classes where possible to provide compatibility with devices
+running Android 1.6 and higher. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a
+replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility
+methods to which you pass your {@link android.view.MotionEvent} object in order to receive
 the desired action associated with that event.</p>
 
 <h2 id="data">Gather Data</h2>
 
 <p>When a user places one or more fingers on the screen, this  triggers the
-callback {@link android.view.View#onTouchEvent onTouchEvent()} 
+callback {@link android.view.View#onTouchEvent onTouchEvent()}
 on the View that received the touch events.
-For each sequence of touch events (position, pressure, size, addition of another finger, etc.) 
+For each sequence of touch events (position, pressure, size, addition of another finger, etc.)
 that is ultimately identified as a gesture,
 {@link android.view.View#onTouchEvent onTouchEvent()} is fired several times.</p>
 
 <p>The gesture starts when the user first touches the screen, continues as the system tracks
 the position of the user's finger(s), and ends by capturing the final event of
-the user's fingers leaving the screen. Throughout this interaction, 
-the {@link android.view.MotionEvent} delivered to {@link android.view.View#onTouchEvent onTouchEvent()} 
-provides the details of every interaction. Your app can use the data provided by the {@link android.view.MotionEvent} 
+the user's fingers leaving the screen. Throughout this interaction,
+the {@link android.view.MotionEvent} delivered to {@link android.view.View#onTouchEvent onTouchEvent()}
+provides the details of every interaction. Your app can use the data provided by the {@link android.view.MotionEvent}
 to determine if a gesture it cares
 about happened.</p>
 
 <h3>Capturing touch events for an Activity or View</h3>
 
-<p><p>To intercept touch events in an Activity or View, override 
+<p><p>To intercept touch events in an Activity or View, override
 the {@link android.view.View#onTouchEvent onTouchEvent()} callback.</p>
 
-<p>The following snippet uses 
+<p>The following snippet uses
 {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()}
-to extract the action the user performed from the {@code event} parameter. This gives you the raw 
+to extract the action the user performed from the {@code event} parameter. This gives you the raw
 data you need to determine if a gesture you care about occurred:</p>
 
 <pre>
@@ -98,10 +98,10 @@
 // This example shows an Activity, but you would use the same approach if
 // you were subclassing a View.
 &#64;Override
-public boolean onTouchEvent(MotionEvent event){ 
-        
+public boolean onTouchEvent(MotionEvent event){
+
     int action = MotionEventCompat.getActionMasked(event);
-        
+
     switch(action) {
         case (MotionEvent.ACTION_DOWN) :
             Log.d(DEBUG_TAG,"Action was DOWN");
@@ -118,10 +118,10 @@
         case (MotionEvent.ACTION_OUTSIDE) :
             Log.d(DEBUG_TAG,"Movement occurred outside bounds " +
                     "of current screen element");
-            return true;      
-        default : 
+            return true;
+        default :
             return super.onTouchEvent(event);
-    }      
+    }
 }</pre>
 
 <p>You can then do your own processing on these events to determine if a
@@ -143,22 +143,22 @@
 events without subclassing an existing {@link android.view.View}. For
 example:</p>
 
-<pre>View myView = findViewById(R.id.my_view); 
+<pre>View myView = findViewById(R.id.my_view);
 myView.setOnTouchListener(new OnTouchListener() {
     public boolean onTouch(View v, MotionEvent event) {
-        // ... Respond to touch events       
+        // ... Respond to touch events
         return true;
     }
 });</pre>
 
-<p>Beware of creating a listener that returns {@code false} for the 
-{@link android.view.MotionEvent#ACTION_DOWN} event. If you do this, the listener will 
-not be called for the subsequent {@link android.view.MotionEvent#ACTION_MOVE} 
+<p>Beware of creating a listener that returns {@code false} for the
+{@link android.view.MotionEvent#ACTION_DOWN} event. If you do this, the listener will
+not be called for the subsequent {@link android.view.MotionEvent#ACTION_MOVE}
 and {@link android.view.MotionEvent#ACTION_UP} string of events. This is because
 {@link android.view.MotionEvent#ACTION_DOWN} is the starting point for all touch events.</p>
 
-<p>If you are creating a custom View, you can override 
-{@link android.view.View#onTouchEvent onTouchEvent()}, 
+<p>If you are creating a custom View, you can override
+{@link android.view.View#onTouchEvent onTouchEvent()},
 as described above.</p>
 
 <h2 id="detect">Detect Gestures</h2>
@@ -168,24 +168,24 @@
 android.view.GestureDetector.OnGestureListener#onDown onDown()}, {@link
 android.view.GestureDetector.OnGestureListener#onLongPress onLongPress()},
 {@link android.view.GestureDetector.OnGestureListener#onFling onFling()}, and so
-on. You can use {@link android.view.GestureDetector} in conjunction with the 
+on. You can use {@link android.view.GestureDetector} in conjunction with the
 {@link android.view.View#onTouchEvent onTouchEvent()}
 method described above.</p>
 
 
 <h3>Detecting All Supported Gestures</h3>
 
-<p>When you instantiate a {@link android.support.v4.view.GestureDetectorCompat} 
-object, one of the parameters it takes is a class that implements the 
-{@link android.view.GestureDetector.OnGestureListener} interface.  
-{@link android.view.GestureDetector.OnGestureListener} notifies users when 
-a particular touch event has occurred. To make it possible for your 
-{@link android.view.GestureDetector} object to receive events, you override 
-the View or Activity's {@link android.view.View#onTouchEvent onTouchEvent()} method, 
+<p>When you instantiate a {@link android.support.v4.view.GestureDetectorCompat}
+object, one of the parameters it takes is a class that implements the
+{@link android.view.GestureDetector.OnGestureListener} interface.
+{@link android.view.GestureDetector.OnGestureListener} notifies users when
+a particular touch event has occurred. To make it possible for your
+{@link android.view.GestureDetector} object to receive events, you override
+the View or Activity's {@link android.view.View#onTouchEvent onTouchEvent()} method,
 and pass along all observed events to the detector instance.</p>
 
 
-<p>In the following snippet, a return value of {@code true} from the individual 
+<p>In the following snippet, a return value of {@code true} from the individual
 <code>on<em>&lt;TouchEvent&gt;</em></code> methods indicates that you
 have handled the touch event. A return value of {@code false} passes events down
 through the view stack until the touch has been successfully handled.</p>
@@ -195,14 +195,14 @@
 android.view.MotionEvent} are for each touch event. You will realize how much
 data is being generated for even simple interactions.</p>
 
-<pre>public class MainActivity extends Activity implements 
+<pre>public class MainActivity extends Activity implements
         GestureDetector.OnGestureListener,
         GestureDetector.OnDoubleTapListener{
-    
-    private static final String DEBUG_TAG = "Gestures";
-    private GestureDetectorCompat mDetector; 
 
-    // Called when the activity is first created. 
+    private static final String DEBUG_TAG = "Gestures";
+    private GestureDetectorCompat mDetector;
+
+    // Called when the activity is first created.
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -216,21 +216,21 @@
         mDetector.setOnDoubleTapListener(this);
     }
 
-    &#64;Override 
-    public boolean onTouchEvent(MotionEvent event){ 
+    &#64;Override
+    public boolean onTouchEvent(MotionEvent event){
         this.mDetector.onTouchEvent(event);
         // Be sure to call the superclass implementation
         return super.onTouchEvent(event);
     }
 
     &#64;Override
-    public boolean onDown(MotionEvent event) { 
-        Log.d(DEBUG_TAG,"onDown: " + event.toString()); 
+    public boolean onDown(MotionEvent event) {
+        Log.d(DEBUG_TAG,"onDown: " + event.toString());
         return true;
     }
 
     &#64;Override
-    public boolean onFling(MotionEvent event1, MotionEvent event2, 
+    public boolean onFling(MotionEvent event1, MotionEvent event2,
             float velocityX, float velocityY) {
         Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
         return true;
@@ -238,7 +238,7 @@
 
     &#64;Override
     public void onLongPress(MotionEvent event) {
-        Log.d(DEBUG_TAG, "onLongPress: " + event.toString()); 
+        Log.d(DEBUG_TAG, "onLongPress: " + event.toString());
     }
 
     &#64;Override
@@ -294,23 +294,23 @@
 android.view.GestureDetector.OnGestureListener#onFling onFling()} and {@link
 android.view.GestureDetector.OnGestureListener#onDown onDown()}.</p>
 
-<p>Whether or not you use {@link android.view.GestureDetector.OnGestureListener}, 
-it's best practice to implement an 
-{@link android.view.GestureDetector.OnGestureListener#onDown onDown()} 
-method that returns {@code true}. This is because all gestures begin with an 
-{@link android.view.GestureDetector.OnGestureListener#onDown onDown()} message. If you return 
-{@code false} from {@link android.view.GestureDetector.OnGestureListener#onDown onDown()}, 
-as {@link android.view.GestureDetector.SimpleOnGestureListener} does by default, 
-the system assumes that you want to ignore the rest of the gesture, and the other methods of 
-{@link android.view.GestureDetector.OnGestureListener} never get called. 
-This has the potential to cause unexpected problems in your app. 
-The only time you should return {@code false} from 
-{@link android.view.GestureDetector.OnGestureListener#onDown onDown()} 
+<p>Whether or not you use {@link android.view.GestureDetector.OnGestureListener},
+it's best practice to implement an
+{@link android.view.GestureDetector.OnGestureListener#onDown onDown()}
+method that returns {@code true}. This is because all gestures begin with an
+{@link android.view.GestureDetector.OnGestureListener#onDown onDown()} message. If you return
+{@code false} from {@link android.view.GestureDetector.OnGestureListener#onDown onDown()},
+as {@link android.view.GestureDetector.SimpleOnGestureListener} does by default,
+the system assumes that you want to ignore the rest of the gesture, and the other methods of
+{@link android.view.GestureDetector.OnGestureListener} never get called.
+This has the potential to cause unexpected problems in your app.
+The only time you should return {@code false} from
+{@link android.view.GestureDetector.OnGestureListener#onDown onDown()}
 is if you truly want to ignore an entire gesture. </p>
 
-<pre>public class MainActivity extends Activity { 
-    
-    private GestureDetectorCompat mDetector; 
+<pre>public class MainActivity extends Activity {
+
+    private GestureDetectorCompat mDetector;
 
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
@@ -319,23 +319,23 @@
         mDetector = new GestureDetectorCompat(this, new MyGestureListener());
     }
 
-    &#64;Override 
-    public boolean onTouchEvent(MotionEvent event){ 
+    &#64;Override
+    public boolean onTouchEvent(MotionEvent event){
         this.mDetector.onTouchEvent(event);
         return super.onTouchEvent(event);
     }
-    
+
     class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
-        private static final String DEBUG_TAG = "Gestures"; 
-        
+        private static final String DEBUG_TAG = "Gestures";
+
         &#64;Override
-        public boolean onDown(MotionEvent event) { 
-            Log.d(DEBUG_TAG,"onDown: " + event.toString()); 
+        public boolean onDown(MotionEvent event) {
+            Log.d(DEBUG_TAG,"onDown: " + event.toString());
             return true;
         }
 
         &#64;Override
-        public boolean onFling(MotionEvent event1, MotionEvent event2, 
+        public boolean onFling(MotionEvent event1, MotionEvent event2,
                 float velocityX, float velocityY) {
             Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
             return true;
diff --git a/docs/html/training/gestures/index.jd b/docs/html/training/gestures/index.jd
index 260cfff..fad1afa 100644
--- a/docs/html/training/gestures/index.jd
+++ b/docs/html/training/gestures/index.jd
@@ -60,7 +60,7 @@
         <strong><a href="detector.html">Detecting Common Gestures</a></strong>
     </dt>
     <dd>
-        Learn how to detect basic touch gestures such as scrolling, flinging, and double-tapping, using 
+        Learn how to detect basic touch gestures such as scrolling, flinging, and double-tapping, using
        {@link android.view.GestureDetector}.
     </dd>
 
@@ -84,7 +84,7 @@
     </dt>
     <dd>
         Learn how to detect multi-pointer (finger) gestures.
-    </dd> 
+    </dd>
 <dt>
         <strong><a href="scale.html">Dragging and Scaling</a></strong>
     </dt>
diff --git a/docs/html/training/gestures/movement.jd b/docs/html/training/gestures/movement.jd
index ed4928e..0a611b3 100644
--- a/docs/html/training/gestures/movement.jd
+++ b/docs/html/training/gestures/movement.jd
@@ -55,13 +55,13 @@
 To help apps distinguish between movement-based gestures (such as a swipe) and
 non-movement gestures (such as a single tap), Android includes the notion of
 "touch slop." Touch slop refers to the distance in pixels a user's touch can wander
-before the gesture is interpreted as a movement-based gesture. For more discussion of this 
+before the gesture is interpreted as a movement-based gesture. For more discussion of this
 topic, see <a href="viewgroup.html#vc">Managing Touch Events in a ViewGroup</a>.</p>
 
 
 
 <p>There are several different ways to track movement in a gesture, depending on
-the needs of your application. For example:</p> 
+the needs of your application. For example:</p>
 
 <ul>
 
@@ -89,8 +89,8 @@
 <p> You could have a movement-based gesture that is simply based on the distance and/or direction the pointer traveled. But velocity often is a
 determining factor in tracking a gesture's characteristics or even deciding
 whether the gesture occurred. To make velocity calculation easier, Android
-provides the {@link android.view.VelocityTracker} class and the  	
-{@link android.support.v4.view.VelocityTrackerCompat} class in the 
+provides the {@link android.view.VelocityTracker} class and the
+{@link android.support.v4.view.VelocityTrackerCompat} class in the
 <a href="{@docRoot}tools/support-library/index.html">Support Library</a>.
 {@link
 android.view.VelocityTracker} helps you track the velocity of touch events. This
@@ -98,7 +98,7 @@
 gesture, such as a fling.</p>
 
 
-<p>Here is a simple example that illustrates the purpose of the methods in the 
+<p>Here is a simple example that illustrates the purpose of the methods in the
 {@link android.view.VelocityTracker} API:</p>
 
 <pre>public class MainActivity extends Activity {
@@ -126,16 +126,16 @@
                 break;
             case MotionEvent.ACTION_MOVE:
                 mVelocityTracker.addMovement(event);
-                // When you want to determine the velocity, call 
-                // computeCurrentVelocity(). Then call getXVelocity() 
-                // and getYVelocity() to retrieve the velocity for each pointer ID. 
+                // When you want to determine the velocity, call
+                // computeCurrentVelocity(). Then call getXVelocity()
+                // and getYVelocity() to retrieve the velocity for each pointer ID.
                 mVelocityTracker.computeCurrentVelocity(1000);
                 // Log velocity of pixels per second
                 // Best practice to use VelocityTrackerCompat where possible.
-                Log.d("", "X velocity: " + 
-                        VelocityTrackerCompat.getXVelocity(mVelocityTracker, 
+                Log.d("", "X velocity: " +
+                        VelocityTrackerCompat.getXVelocity(mVelocityTracker,
                         pointerId));
-                Log.d("", "Y velocity: " + 
+                Log.d("", "Y velocity: " +
                         VelocityTrackerCompat.getYVelocity(mVelocityTracker,
                         pointerId));
                 break;
@@ -150,8 +150,8 @@
 }
 </pre>
 
-<p class="note"><strong>Note:</strong> Note that you should calculate velocity after an 
-{@link android.view.MotionEvent#ACTION_MOVE} event, 
-not after {@link android.view.MotionEvent#ACTION_UP}. After an {@link android.view.MotionEvent#ACTION_UP}, 
+<p class="note"><strong>Note:</strong> Note that you should calculate velocity after an
+{@link android.view.MotionEvent#ACTION_MOVE} event,
+not after {@link android.view.MotionEvent#ACTION_UP}. After an {@link android.view.MotionEvent#ACTION_UP},
 the X and Y velocities will be 0.
 </p>
diff --git a/docs/html/training/gestures/multi.jd b/docs/html/training/gestures/multi.jd
index 5840482..21860fc 100644
--- a/docs/html/training/gestures/multi.jd
+++ b/docs/html/training/gestures/multi.jd
@@ -47,15 +47,15 @@
 
 <h2 id="track">Track Multiple Pointers</h2>
 
-<p>When multiple pointers touch the screen at the same time, the system generates the 
+<p>When multiple pointers touch the screen at the same time, the system generates the
 following touch events:</p>
 
 <ul>
-  <li>{@link android.view.MotionEvent#ACTION_DOWN}&mdash;For the first pointer that 
-touches the screen. This starts the gesture. The pointer data for this pointer is 
+  <li>{@link android.view.MotionEvent#ACTION_DOWN}&mdash;For the first pointer that
+touches the screen. This starts the gesture. The pointer data for this pointer is
 always at index 0 in the {@link android.view.MotionEvent}.</li>
-  <li>{@link android.support.v4.view.MotionEventCompat#ACTION_POINTER_DOWN}&mdash;For 
-extra pointers that enter the screen beyond the first. The pointer data for this 
+  <li>{@link android.support.v4.view.MotionEventCompat#ACTION_POINTER_DOWN}&mdash;For
+extra pointers that enter the screen beyond the first. The pointer data for this
 pointer is at the index returned by {@link android.support.v4.view.MotionEventCompat#getActionIndex getActionIndex()}.</li>
   <li>{@link android.view.MotionEvent#ACTION_MOVE}&mdash;A change has happened during a press gesture.</li>
   <li>{@link android.support.v4.view.MotionEventCompat#ACTION_POINTER_UP}&mdash;Sent when a non-primary pointer goes up.</li>
@@ -66,20 +66,20 @@
 android.view.MotionEvent} via each pointer's index and ID:</p>
 
 <ul>
-<li><strong>Index</strong>: A {@link android.view.MotionEvent} effectively 
-stores information about each pointer in an array. The index of a pointer is its position 
+<li><strong>Index</strong>: A {@link android.view.MotionEvent} effectively
+stores information about each pointer in an array. The index of a pointer is its position
 within this array. Most of the {@link
 android.view.MotionEvent} methods you use to interact with pointers take the
 pointer index as a parameter, not the pointer ID. </li>
-  
-  
+
+
   <li><strong>ID</strong>: Each pointer also has an ID mapping that stays
-persistent across touch events to allow tracking an individual pointer across 
+persistent across touch events to allow tracking an individual pointer across
 the entire gesture.</li>
-  
+
 </ul>
 
-<p>The  order in which individual pointers appear within a motion event is 
+<p>The  order in which individual pointers appear within a motion event is
 undefined. Thus the index of a pointer can change from one event to the
 next, but the pointer ID of a pointer is guaranteed to remain  constant as long
 as the pointer remains active. Use the  {@link
@@ -91,7 +91,7 @@
 
 
 <pre>private int mActivePointerId;
- 
+
 public boolean onTouchEvent(MotionEvent event) {
     ....
     // Get the pointer ID
@@ -99,7 +99,7 @@
 
     // ... Many touch events later...
 
-    // Use the pointer ID to find the index of the active pointer 
+    // Use the pointer ID to find the index of the active pointer
     // and fetch its position
     int pointerIndex = event.findPointerIndex(mActivePointerId);
     // Get the pointer's current position
@@ -109,25 +109,25 @@
 
 <h2 id="action">Get a MotionEvent's Action</h2>
 
-<p>You should always use the method  
-{@link android.view.MotionEvent#getActionMasked getActionMasked()} (or better yet, the compatability version 
-{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()}) to retrieve 
+<p>You should always use the method
+{@link android.view.MotionEvent#getActionMasked getActionMasked()} (or better yet, the compatability version
+{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()}) to retrieve
 the action of a
-{@link android.view.MotionEvent}. Unlike the older {@link android.view.MotionEvent#getAction getAction()} 
-method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()} is designed to work with 
-multiple pointers. It returns the masked action 
-being performed, without including the pointer index bits. You can then use 
-{@link android.support.v4.view.MotionEventCompat#getActionIndex getActionIndex()} to return the index of 
+{@link android.view.MotionEvent}. Unlike the older {@link android.view.MotionEvent#getAction getAction()}
+method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()} is designed to work with
+multiple pointers. It returns the masked action
+being performed, without including the pointer index bits. You can then use
+{@link android.support.v4.view.MotionEventCompat#getActionIndex getActionIndex()} to return the index of
 the pointer associated with the action. This is illustrated in the snippet below.</p>
 
-<p class="note"><strong>Note:</strong> This example uses the 
+<p class="note"><strong>Note:</strong> This example uses the
 {@link android.support.v4.view.MotionEventCompat}
-class. This class is in the 
+class. This class is in the
 <a href="{@docRoot}tools/support-library/index.html">Support Library</a>. You should use
 {@link android.support.v4.view.MotionEventCompat} to provide the best support for a wide range of
-platforms. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a 
-replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility 
-methods to which you pass your {@link android.view.MotionEvent} object in order to receive 
+platforms. Note that {@link android.support.v4.view.MotionEventCompat} is <em>not</em> a
+replacement for the {@link android.view.MotionEvent} class. Rather, it provides static utility
+methods to which you pass your {@link android.view.MotionEvent} object in order to receive
 the desired action associated with that event.</p>
 
 <pre>int action = MotionEventCompat.getActionMasked(event);
@@ -137,17 +137,17 @@
 int yPos = -1;
 
 Log.d(DEBUG_TAG,"The action is " + actionToString(action));
-	    
+
 if (event.getPointerCount() > 1) {
-    Log.d(DEBUG_TAG,"Multitouch event"); 
-    // The coordinates of the current screen contact, relative to 
-    // the responding View or Activity.  
+    Log.d(DEBUG_TAG,"Multitouch event");
+    // The coordinates of the current screen contact, relative to
+    // the responding View or Activity.
     xPos = (int)MotionEventCompat.getX(event, index);
     yPos = (int)MotionEventCompat.getY(event, index);
 
 } else {
     // Single touch event
-    Log.d(DEBUG_TAG,"Single touch event"); 
+    Log.d(DEBUG_TAG,"Single touch event");
     xPos = (int)MotionEventCompat.getX(event, index);
     yPos = (int)MotionEventCompat.getY(event, index);
 }
@@ -156,7 +156,7 @@
 // Given an action int, returns a string description
 public static String actionToString(int action) {
     switch (action) {
-	        
+
         case MotionEvent.ACTION_DOWN: return "Down";
 	case MotionEvent.ACTION_MOVE: return "Move";
 	case MotionEvent.ACTION_POINTER_DOWN: return "Pointer Down";
@@ -168,7 +168,7 @@
     return "";
 }</pre>
 
- 
+
 
 
 <p>For more discussion of multi-touch and some examples, see the lesson <a href="scale.html">Dragging and Scaling</a>.
diff --git a/docs/html/training/gestures/scale.jd b/docs/html/training/gestures/scale.jd
index f2e4eb8..d4aa916 100644
--- a/docs/html/training/gestures/scale.jd
+++ b/docs/html/training/gestures/scale.jd
@@ -44,13 +44,13 @@
 
 <p>This lesson describes how to use touch gestures to drag and scale on-screen
 objects, using {@link android.view.View#onTouchEvent onTouchEvent()} to intercept
-touch events. 
+touch events.
 </p>
 
 <h2 id="drag">Drag an Object</h2>
 
-<p class="note">If you are targeting Android 3.0 or higher, you can use the built-in drag-and-drop event 
-listeners with {@link android.view.View.OnDragListener}, as described in 
+<p class="note">If you are targeting Android 3.0 or higher, you can use the built-in drag-and-drop event
+listeners with {@link android.view.View.OnDragListener}, as described in
 <a href="{@docRoot}guide/topics/ui/drag-drop.html">Drag and Drop</a>.
 
 <p>A common operation for a touch gesture is to use it to drag an object across
@@ -66,14 +66,14 @@
 individual pointers, it will regard the second pointer as the default and move
 the image to that location.</li>
 
-<li>To prevent this from happening, your app needs to distinguish between the 
-original pointer and any follow-on pointers. To do this, it tracks the 
-{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and 
-{@link android.view.MotionEvent#ACTION_POINTER_UP} events described in 
-<a href="multi.html">Handling Multi-Touch Gestures</a>. 
-{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and 
-{@link android.view.MotionEvent#ACTION_POINTER_UP} are 
-passed to the {@link android.view.View#onTouchEvent onTouchEvent()} callback 
+<li>To prevent this from happening, your app needs to distinguish between the
+original pointer and any follow-on pointers. To do this, it tracks the
+{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and
+{@link android.view.MotionEvent#ACTION_POINTER_UP} events described in
+<a href="multi.html">Handling Multi-Touch Gestures</a>.
+{@link android.view.MotionEvent#ACTION_POINTER_DOWN} and
+{@link android.view.MotionEvent#ACTION_POINTER_UP} are
+passed to the {@link android.view.View#onTouchEvent onTouchEvent()} callback
 whenever a secondary pointer goes down or up. </li>
 
 
@@ -90,16 +90,16 @@
 <p>The following snippet enables a user to drag an object around on the screen. It records the initial
 position of the active pointer, calculates the distance the pointer traveled, and moves the object to the
 new position. It correctly manages the possibility of additional pointers, as described
-above.</p> 
+above.</p>
 
-<p>Notice that the snippet uses the {@link android.view.MotionEvent#getActionMasked getActionMasked()} method. 
-You should always use this method (or better yet, the compatability version 
-{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()}) 
+<p>Notice that the snippet uses the {@link android.view.MotionEvent#getActionMasked getActionMasked()} method.
+You should always use this method (or better yet, the compatability version
+{@link android.support.v4.view.MotionEventCompat#getActionMasked MotionEventCompat.getActionMasked()})
 to retrieve the action of a
-{@link android.view.MotionEvent}. Unlike the older 
-{@link android.view.MotionEvent#getAction getAction()} 
-method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()} 
-is designed to work with multiple pointers. It returns the masked action 
+{@link android.view.MotionEvent}. Unlike the older
+{@link android.view.MotionEvent#getAction getAction()}
+method, {@link android.support.v4.view.MotionEventCompat#getActionMasked getActionMasked()}
+is designed to work with multiple pointers. It returns the masked action
 being performed, without including the pointer index bits.</p>
 
 <pre>// The ‘active pointer’ is the one currently moving our object.
@@ -109,15 +109,15 @@
 public boolean onTouchEvent(MotionEvent ev) {
     // Let the ScaleGestureDetector inspect all events.
     mScaleDetector.onTouchEvent(ev);
-             
-    final int action = MotionEventCompat.getActionMasked(ev); 
-        
-    switch (action) { 
+
+    final int action = MotionEventCompat.getActionMasked(ev);
+
+    switch (action) {
     case MotionEvent.ACTION_DOWN: {
-        final int pointerIndex = MotionEventCompat.getActionIndex(ev); 
-        final float x = MotionEventCompat.getX(ev, pointerIndex); 
-        final float y = MotionEventCompat.getY(ev, pointerIndex); 
-            
+        final int pointerIndex = MotionEventCompat.getActionIndex(ev);
+        final float x = MotionEventCompat.getX(ev, pointerIndex);
+        final float y = MotionEventCompat.getY(ev, pointerIndex);
+
         // Remember where we started (for dragging)
         mLastTouchX = x;
         mLastTouchY = y;
@@ -125,15 +125,15 @@
         mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
         break;
     }
-            
+
     case MotionEvent.ACTION_MOVE: {
         // Find the index of the active pointer and fetch its position
-        final int pointerIndex = 
-                MotionEventCompat.findPointerIndex(ev, mActivePointerId);  
-            
+        final int pointerIndex =
+                MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+
         final float x = MotionEventCompat.getX(ev, pointerIndex);
         final float y = MotionEventCompat.getY(ev, pointerIndex);
-            
+
         // Calculate the distance moved
         final float dx = x - mLastTouchX;
         final float dy = y - mLastTouchY;
@@ -149,62 +149,62 @@
 
         break;
     }
-            
+
     case MotionEvent.ACTION_UP: {
         mActivePointerId = INVALID_POINTER_ID;
         break;
     }
-            
+
     case MotionEvent.ACTION_CANCEL: {
         mActivePointerId = INVALID_POINTER_ID;
         break;
     }
-        
+
     case MotionEvent.ACTION_POINTER_UP: {
-            
-        final int pointerIndex = MotionEventCompat.getActionIndex(ev); 
-        final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex); 
+
+        final int pointerIndex = MotionEventCompat.getActionIndex(ev);
+        final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
 
         if (pointerId == mActivePointerId) {
             // This was our active pointer going up. Choose a new
             // active pointer and adjust accordingly.
             final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
-            mLastTouchX = MotionEventCompat.getX(ev, newPointerIndex); 
-            mLastTouchY = MotionEventCompat.getY(ev, newPointerIndex); 
+            mLastTouchX = MotionEventCompat.getX(ev, newPointerIndex);
+            mLastTouchY = MotionEventCompat.getY(ev, newPointerIndex);
             mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
         }
         break;
     }
-    }       
+    }
     return true;
 }</pre>
 
 <h2 id="pan">Drag to Pan</h2>
 
-<p>The previous section showed an example of dragging an object around the screen. Another 
-common scenario is <em>panning</em>, which is when a user's dragging motion causes scrolling 
-in both the x and y axes. The above snippet directly intercepted the {@link android.view.MotionEvent} 
-actions to implement dragging. The snippet in this section takes advantage of the platform's 
-built-in support for common gestures. It overrides 
-{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in 
+<p>The previous section showed an example of dragging an object around the screen. Another
+common scenario is <em>panning</em>, which is when a user's dragging motion causes scrolling
+in both the x and y axes. The above snippet directly intercepted the {@link android.view.MotionEvent}
+actions to implement dragging. The snippet in this section takes advantage of the platform's
+built-in support for common gestures. It overrides
+{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in
 {@link android.view.GestureDetector.SimpleOnGestureListener}.</p>
 
-<p>To provide a little more context, {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} 
-is called when a user is dragging his finger to pan the content. 
-{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} is only called when 
-a finger is down; as soon as the finger is lifted from the screen, the gesture either ends, 
-or a fling gesture is started (if the finger was moving with some speed just before it was lifted). 
+<p>To provide a little more context, {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}
+is called when a user is dragging his finger to pan the content.
+{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} is only called when
+a finger is down; as soon as the finger is lifted from the screen, the gesture either ends,
+or a fling gesture is started (if the finger was moving with some speed just before it was lifted).
 For more discussion of scrolling vs. flinging, see <a href="scroll.html">Animating a Scroll Gesture</a>.</p>
 
 <p>Here is the snippet for {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}:
 
 
-<pre>// The current viewport. This rectangle represents the currently visible 
-// chart domain and range. 
-private RectF mCurrentViewport = 
+<pre>// The current viewport. This rectangle represents the currently visible
+// chart domain and range.
+private RectF mCurrentViewport =
         new RectF(AXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX);
 
-// The current destination rectangle (in pixel coordinates) into which the 
+// The current destination rectangle (in pixel coordinates) into which the
 // chart data should be drawn.
 private Rect mContentRect;
 
@@ -213,18 +213,18 @@
 ...
 
 &#64;Override
-public boolean onScroll(MotionEvent e1, MotionEvent e2, 
+public boolean onScroll(MotionEvent e1, MotionEvent e2,
             float distanceX, float distanceY) {
     // Scrolling uses math based on the viewport (as opposed to math using pixels).
-    
+
     // Pixel offset is the offset in screen pixels, while viewport offset is the
-    // offset within the current viewport. 
-    float viewportOffsetX = distanceX * mCurrentViewport.width() 
+    // offset within the current viewport.
+    float viewportOffsetX = distanceX * mCurrentViewport.width()
             / mContentRect.width();
-    float viewportOffsetY = -distanceY * mCurrentViewport.height() 
+    float viewportOffsetY = -distanceY * mCurrentViewport.height()
             / mContentRect.height();
     ...
-    // Updates the viewport, refreshes the display. 
+    // Updates the viewport, refreshes the display.
     setViewportBottomLeft(
             mCurrentViewport.left + viewportOffsetX,
             mCurrentViewport.bottom + viewportOffsetY);
@@ -232,20 +232,20 @@
     return true;
 }</pre>
 
-<p>The implementation of {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} 
+<p>The implementation of {@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()}
 scrolls the viewport in response to the touch gesture:</p>
 
 <pre>
 /**
  * Sets the current viewport (defined by mCurrentViewport) to the given
- * X and Y positions. Note that the Y value represents the topmost pixel position, 
+ * X and Y positions. Note that the Y value represents the topmost pixel position,
  * and thus the bottom of the mCurrentViewport rectangle.
  */
 private void setViewportBottomLeft(float x, float y) {
     /*
-     * Constrains within the scroll range. The scroll range is simply the viewport 
-     * extremes (AXIS_X_MAX, etc.) minus the viewport size. For example, if the 
-     * extremes were 0 and 10, and the viewport size was 2, the scroll range would 
+     * Constrains within the scroll range. The scroll range is simply the viewport
+     * extremes (AXIS_X_MAX, etc.) minus the viewport size. For example, if the
+     * extremes were 0 and 10, and the viewport size was 2, the scroll range would
      * be 0 to 8.
      */
 
@@ -270,11 +270,11 @@
 android.view.GestureDetector} and {@link android.view.ScaleGestureDetector} can
 be used together when you  want a view to recognize additional gestures.</p>
 
-<p>To report detected  gesture events, gesture detectors use listener objects 
-passed to their constructors. {@link android.view.ScaleGestureDetector} uses 
-{@link android.view.ScaleGestureDetector.OnScaleGestureListener}. 
-Android provides 
-{@link android.view.ScaleGestureDetector.SimpleOnScaleGestureListener} 
+<p>To report detected  gesture events, gesture detectors use listener objects
+passed to their constructors. {@link android.view.ScaleGestureDetector} uses
+{@link android.view.ScaleGestureDetector.OnScaleGestureListener}.
+Android provides
+{@link android.view.ScaleGestureDetector.SimpleOnScaleGestureListener}
 as a helper class that you can extend if you don’t care about all of the reported events.</p>
 
 
@@ -311,7 +311,7 @@
     canvas.restore();
 }
 
-private class ScaleListener 
+private class ScaleListener
         extends ScaleGestureDetector.SimpleOnScaleGestureListener {
     &#64;Override
     public boolean onScale(ScaleGestureDetector detector) {
@@ -329,14 +329,14 @@
 
 
 <h3>More complex scaling example</h3>
-<p>Here is a more complex example from the {@code InteractiveChart} sample provided with this class. 
+<p>Here is a more complex example from the {@code InteractiveChart} sample provided with this class.
 The {@code InteractiveChart} sample supports both scrolling (panning) and scaling with multiple fingers,
-using the {@link android.view.ScaleGestureDetector} "span" 
-({@link android.view.ScaleGestureDetector#getCurrentSpanX getCurrentSpanX/Y}) and 
+using the {@link android.view.ScaleGestureDetector} "span"
+({@link android.view.ScaleGestureDetector#getCurrentSpanX getCurrentSpanX/Y}) and
 "focus" ({@link android.view.ScaleGestureDetector#getFocusX getFocusX/Y}) features:</p>
 
 <pre>&#64;Override
-private RectF mCurrentViewport = 
+private RectF mCurrentViewport =
         new RectF(AXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX);
 private Rect mContentRect;
 private ScaleGestureDetector mScaleGestureDetector;
@@ -399,7 +399,7 @@
                 0,
                 0);
         mCurrentViewport.right = mCurrentViewport.left + newWidth;
-        mCurrentViewport.bottom = mCurrentViewport.top + newHeight;     
+        mCurrentViewport.bottom = mCurrentViewport.top + newHeight;
         ...
         // Invalidates the View to update the display.
         ViewCompat.postInvalidateOnAnimation(InteractiveLineGraphView.this);
diff --git a/docs/html/training/gestures/scroll.jd b/docs/html/training/gestures/scroll.jd
index 4b82d69..374ceff 100644
--- a/docs/html/training/gestures/scroll.jd
+++ b/docs/html/training/gestures/scroll.jd
@@ -41,12 +41,12 @@
 </div>
 </div>
 
-<p>In Android, scrolling is typically achieved by using the 
+<p>In Android, scrolling is typically achieved by using the
 {@link android.widget.ScrollView}
-class. Any standard layout that might extend beyond the bounds of its container should be 
-nested in a {@link android.widget.ScrollView} to provide a scrollable view that's 
-managed by the framework. Implementing a custom scroller should only be 
-necessary for special scenarios. This lesson describes such a scenario: displaying 
+class. Any standard layout that might extend beyond the bounds of its container should be
+nested in a {@link android.widget.ScrollView} to provide a scrollable view that's
+managed by the framework. Implementing a custom scroller should only be
+necessary for special scenarios. This lesson describes such a scenario: displaying
 a scrolling effect in response to touch gestures using <em>scrollers</em>.
 
 
@@ -54,8 +54,8 @@
 android.widget.OverScroller}) to collect the data you need to produce a
 scrolling animation in response to a touch event. They are similar, but
 {@link android.widget.OverScroller}
-includes methods for indicating to users that they've reached the content edges 
-after a pan or fling gesture. The {@code InteractiveChart} sample 
+includes methods for indicating to users that they've reached the content edges
+after a pan or fling gesture. The {@code InteractiveChart} sample
 uses the {@link android.widget.EdgeEffect} class
 (actually the {@link android.support.v4.widget.EdgeEffectCompat} class)
 to display a "glow" effect when users reach the content edges.</p>
@@ -68,7 +68,7 @@
 <br />
 Also note that you generally only need to use scrollers
 when implementing scrolling yourself. {@link android.widget.ScrollView} and
-{@link android.widget.HorizontalScrollView} do all of this for you if you nest your 
+{@link android.widget.HorizontalScrollView} do all of this for you if you nest your
 layout within them.
 </p>
 
@@ -86,71 +86,71 @@
 
 <p>"Scrolling" is a word that can take on different meanings in Android, depending on the context.</p>
 
-<p><strong>Scrolling</strong> is the general process of moving the viewport (that is, the 'window' 
-of content you're looking at). When scrolling is in both the x and y axes, it's called 
-<em>panning</em>. The sample application provided with this class, {@code InteractiveChart}, illustrates 
+<p><strong>Scrolling</strong> is the general process of moving the viewport (that is, the 'window'
+of content you're looking at). When scrolling is in both the x and y axes, it's called
+<em>panning</em>. The sample application provided with this class, {@code InteractiveChart}, illustrates
 two different types of scrolling, dragging and flinging:</p>
 <ul>
-    <li><strong>Dragging</strong> is the type of scrolling that occurs when a user drags her 
-finger across the touch screen. Simple dragging is often implemented by overriding 
-{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in 
-{@link android.view.GestureDetector.OnGestureListener}. For more discussion of dragging, see 
+    <li><strong>Dragging</strong> is the type of scrolling that occurs when a user drags her
+finger across the touch screen. Simple dragging is often implemented by overriding
+{@link android.view.GestureDetector.OnGestureListener#onScroll onScroll()} in
+{@link android.view.GestureDetector.OnGestureListener}. For more discussion of dragging, see
 <a href="scale.html">Dragging and Scaling</a>.</li>
 
-    <li><strong>Flinging</strong> is the type of scrolling that occurs when a user 
-drags and lifts her finger quickly. After the user lifts her finger, you generally 
-want to keep scrolling (moving the viewport), but decelerate until the viewport stops moving. 
-Flinging can be implemented by overriding 
-{@link android.view.GestureDetector.OnGestureListener#onFling onFling()} 
-in {@link android.view.GestureDetector.OnGestureListener}, and by using 
-a scroller object. This is the use 
+    <li><strong>Flinging</strong> is the type of scrolling that occurs when a user
+drags and lifts her finger quickly. After the user lifts her finger, you generally
+want to keep scrolling (moving the viewport), but decelerate until the viewport stops moving.
+Flinging can be implemented by overriding
+{@link android.view.GestureDetector.OnGestureListener#onFling onFling()}
+in {@link android.view.GestureDetector.OnGestureListener}, and by using
+a scroller object. This is the use
 case that is the topic of this lesson.</li>
 </ul>
 
-<p>It's common to use scroller objects 
+<p>It's common to use scroller objects
 in conjunction with a fling gesture, but they
 can be used in pretty much any context where you want the UI to display
-scrolling in response to a touch event. For example, you could override  
-{@link android.view.View#onTouchEvent onTouchEvent()} to process touch 
-events directly, and produce a scrolling effect or a "snapping to page" animation 
+scrolling in response to a touch event. For example, you could override
+{@link android.view.View#onTouchEvent onTouchEvent()} to process touch
+events directly, and produce a scrolling effect or a "snapping to page" animation
 in response to those touch events.</p>
 
 
-<h2 id="#scroll">Implement Touch-Based Scrolling</h2> 
+<h2 id="#scroll">Implement Touch-Based Scrolling</h2>
 
 <p>This section describes how to use a scroller.
-The snippet shown below comes from the {@code InteractiveChart} sample 
+The snippet shown below comes from the {@code InteractiveChart} sample
 provided with this class.
-It uses a 
-{@link android.view.GestureDetector}, and overrides the  
-{@link android.view.GestureDetector.SimpleOnGestureListener} method 
+It uses a
+{@link android.view.GestureDetector}, and overrides the
+{@link android.view.GestureDetector.SimpleOnGestureListener} method
 {@link android.view.GestureDetector.OnGestureListener#onFling onFling()}.
 It uses {@link android.widget.OverScroller} to track the fling gesture.
-If the user reaches the content edges 
+If the user reaches the content edges
 after the fling gesture, the app displays a "glow" effect.
 </p>
 
-<p class="note"><strong>Note:</strong> The {@code InteractiveChart} sample app displays a 
-chart that you can zoom, pan, scroll, and so on. In the following snippet, 
-{@code mContentRect} represents the rectangle coordinates within the view that the chart 
-will be drawn into. At any given time, a subset of the total chart domain and range are drawn 
-into this rectangular area. 
-{@code mCurrentViewport} represents the portion of the chart that is currently 
-visible in the screen. Because pixel offsets are generally treated as integers, 
-{@code mContentRect} is of the type {@link android.graphics.Rect}. Because the 
-graph domain and range are decimal/float values, {@code mCurrentViewport} is of 
+<p class="note"><strong>Note:</strong> The {@code InteractiveChart} sample app displays a
+chart that you can zoom, pan, scroll, and so on. In the following snippet,
+{@code mContentRect} represents the rectangle coordinates within the view that the chart
+will be drawn into. At any given time, a subset of the total chart domain and range are drawn
+into this rectangular area.
+{@code mCurrentViewport} represents the portion of the chart that is currently
+visible in the screen. Because pixel offsets are generally treated as integers,
+{@code mContentRect} is of the type {@link android.graphics.Rect}. Because the
+graph domain and range are decimal/float values, {@code mCurrentViewport} is of
 the type {@link android.graphics.RectF}.</p>
 
-<p>The first part of the snippet shows the implementation of 
+<p>The first part of the snippet shows the implementation of
 {@link android.view.GestureDetector.OnGestureListener#onFling onFling()}:</p>
 
-<pre>// The current viewport. This rectangle represents the currently visible 
+<pre>// The current viewport. This rectangle represents the currently visible
 // chart domain and range. The viewport is the part of the app that the
 // user manipulates via touch gestures.
-private RectF mCurrentViewport = 
+private RectF mCurrentViewport =
         new RectF(AXIS_X_MIN, AXIS_Y_MIN, AXIS_X_MAX, AXIS_Y_MAX);
 
-// The current destination rectangle (in pixel coordinates) into which the 
+// The current destination rectangle (in pixel coordinates) into which the
 // chart data should be drawn.
 private Rect mContentRect;
 
@@ -171,7 +171,7 @@
     }
     ...
     &#64;Override
-    public boolean onFling(MotionEvent e1, MotionEvent e2, 
+    public boolean onFling(MotionEvent e1, MotionEvent e2,
             float velocityX, float velocityY) {
         fling((int) -velocityX, (int) -velocityY);
         return true;
@@ -184,10 +184,10 @@
     // Flings use math in pixels (as opposed to math based on the viewport).
     Point surfaceSize = computeScrollSurfaceSize();
     mScrollerStartViewport.set(mCurrentViewport);
-    int startX = (int) (surfaceSize.x * (mScrollerStartViewport.left - 
+    int startX = (int) (surfaceSize.x * (mScrollerStartViewport.left -
             AXIS_X_MIN) / (
             AXIS_X_MAX - AXIS_X_MIN));
-    int startY = (int) (surfaceSize.y * (AXIS_Y_MAX - 
+    int startY = (int) (surfaceSize.y * (AXIS_Y_MAX -
             mScrollerStartViewport.bottom) / (
             AXIS_Y_MAX - AXIS_Y_MIN));
     // Before flinging, aborts the current animation.
@@ -200,10 +200,10 @@
             velocityX,
             velocityY,
             /*
-             * Minimum and maximum scroll positions. The minimum scroll 
-             * position is generally zero and the maximum scroll position 
-             * is generally the content size less the screen size. So if the 
-             * content width is 1000 pixels and the screen width is 200  
+             * Minimum and maximum scroll positions. The minimum scroll
+             * position is generally zero and the maximum scroll position
+             * is generally the content size less the screen size. So if the
+             * content width is 1000 pixels and the screen width is 200
              * pixels, the maximum scroll offset should be 800 pixels.
              */
             0, surfaceSize.x - mContentRect.width(),
@@ -216,21 +216,21 @@
     ViewCompat.postInvalidateOnAnimation(this);
 }</pre>
 
-<p>When {@link android.view.GestureDetector.OnGestureListener#onFling onFling()} calls 
-{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()}, 
-it triggers 
-{@link android.view.View#computeScroll computeScroll()} to update the values for x and y. 
+<p>When {@link android.view.GestureDetector.OnGestureListener#onFling onFling()} calls
+{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()},
+it triggers
+{@link android.view.View#computeScroll computeScroll()} to update the values for x and y.
 This is typically be done when a view child is animating a scroll using a scroller object, as in this example. </p>
 
-<p>Most views pass the scroller object's x and y position directly to 
-{@link android.view.View#scrollTo scrollTo()}. 
-The following implementation of {@link android.view.View#computeScroll computeScroll()} 
-takes a different approach&mdash;it calls 
-{@link android.widget.OverScroller#computeScrollOffset computeScrollOffset()} to get the current 
-location of x and y. When the criteria for displaying an overscroll "glow" edge effect are met 
-(the display is zoomed in, x or y is out of bounds, and the app isn't already showing an overscroll), 
-the code sets up the overscroll glow effect and calls 
-{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()} 
+<p>Most views pass the scroller object's x and y position directly to
+{@link android.view.View#scrollTo scrollTo()}.
+The following implementation of {@link android.view.View#computeScroll computeScroll()}
+takes a different approach&mdash;it calls
+{@link android.widget.OverScroller#computeScrollOffset computeScrollOffset()} to get the current
+location of x and y. When the criteria for displaying an overscroll "glow" edge effect are met
+(the display is zoomed in, x or y is out of bounds, and the app isn't already showing an overscroll),
+the code sets up the overscroll glow effect and calls
+{@link android.support.v4.view.ViewCompat#postInvalidateOnAnimation postInvalidateOnAnimation()}
 to trigger an invalidate on the view:</p>
 
 <pre>// Edge effect / overscroll tracking objects.
@@ -250,7 +250,7 @@
 
     boolean needsInvalidate = false;
 
-    // The scroller isn't finished, meaning a fling or programmatic pan 
+    // The scroller isn't finished, meaning a fling or programmatic pan
     // operation is currently active.
     if (mScroller.computeScrollOffset()) {
         Point surfaceSize = computeScrollSurfaceSize();
@@ -262,7 +262,7 @@
         boolean canScrollY = (mCurrentViewport.top > AXIS_Y_MIN
                 || mCurrentViewport.bottom < AXIS_Y_MAX);
 
-        /*          
+        /*
          * If you are zoomed in and currX or currY is
          * outside of bounds and you're not already
          * showing overscroll, then render the overscroll
@@ -272,7 +272,7 @@
                 && currX < 0
                 && mEdgeEffectLeft.isFinished()
                 && !mEdgeEffectLeftActive) {
-            mEdgeEffectLeft.onAbsorb((int) 
+            mEdgeEffectLeft.onAbsorb((int)
                     OverScrollerCompat.getCurrVelocity(mScroller));
             mEdgeEffectLeftActive = true;
             needsInvalidate = true;
@@ -280,7 +280,7 @@
                 && currX > (surfaceSize.x - mContentRect.width())
                 && mEdgeEffectRight.isFinished()
                 && !mEdgeEffectRightActive) {
-            mEdgeEffectRight.onAbsorb((int) 
+            mEdgeEffectRight.onAbsorb((int)
                     OverScrollerCompat.getCurrVelocity(mScroller));
             mEdgeEffectRightActive = true;
             needsInvalidate = true;
@@ -290,7 +290,7 @@
                 && currY < 0
                 && mEdgeEffectTop.isFinished()
                 && !mEdgeEffectTopActive) {
-            mEdgeEffectTop.onAbsorb((int) 
+            mEdgeEffectTop.onAbsorb((int)
                     OverScrollerCompat.getCurrVelocity(mScroller));
             mEdgeEffectTopActive = true;
             needsInvalidate = true;
@@ -298,7 +298,7 @@
                 && currY > (surfaceSize.y - mContentRect.height())
                 && mEdgeEffectBottom.isFinished()
                 && !mEdgeEffectBottomActive) {
-            mEdgeEffectBottom.onAbsorb((int) 
+            mEdgeEffectBottom.onAbsorb((int)
                     OverScrollerCompat.getCurrVelocity(mScroller));
             mEdgeEffectBottomActive = true;
             needsInvalidate = true;
@@ -316,14 +316,14 @@
 // If a zoom is in progress (either programmatically or via double
 // touch), performs the zoom.
 if (mZoomer.computeZoom()) {
-    float newWidth = (1f - mZoomer.getCurrZoom()) * 
+    float newWidth = (1f - mZoomer.getCurrZoom()) *
             mScrollerStartViewport.width();
-    float newHeight = (1f - mZoomer.getCurrZoom()) * 
+    float newHeight = (1f - mZoomer.getCurrZoom()) *
             mScrollerStartViewport.height();
-    float pointWithinViewportX = (mZoomFocalPoint.x - 
+    float pointWithinViewportX = (mZoomFocalPoint.x -
             mScrollerStartViewport.left)
             / mScrollerStartViewport.width();
-    float pointWithinViewportY = (mZoomFocalPoint.y - 
+    float pointWithinViewportY = (mZoomFocalPoint.y -
             mScrollerStartViewport.top)
             / mScrollerStartViewport.height();
     mCurrentViewport.set(
@@ -339,9 +339,9 @@
 }
 </pre>
 
-<p>This is the {@code computeScrollSurfaceSize()} method that's called in the above snippet. It 
-computes the current scrollable surface size, in pixels. For example, if the entire chart area is visible, 
-this is simply the current size of {@code mContentRect}. If the chart is zoomed in 200% in both directions, 
+<p>This is the {@code computeScrollSurfaceSize()} method that's called in the above snippet. It
+computes the current scrollable surface size, in pixels. For example, if the entire chart area is visible,
+this is simply the current size of {@code mContentRect}. If the chart is zoomed in 200% in both directions,
 the returned size will be twice as large horizontally and vertically.</p>
 
 <pre>private Point computeScrollSurfaceSize() {
@@ -352,8 +352,8 @@
                     / mCurrentViewport.height()));
 }</pre>
 
-<p>For another example of scroller usage, see the 
-<a href="http://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/view/ViewPager.java">source code</a> for the 
-{@link android.support.v4.view.ViewPager} class. It scrolls in response to flings, 
+<p>For another example of scroller usage, see the
+<a href="http://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/view/ViewPager.java">source code</a> for the
+{@link android.support.v4.view.ViewPager} class. It scrolls in response to flings,
 and uses scrolling to implement the "snapping to page" animation.</p>
 
diff --git a/docs/html/training/gestures/viewgroup.jd b/docs/html/training/gestures/viewgroup.jd
index 5b32300..7b5b24e 100644
--- a/docs/html/training/gestures/viewgroup.jd
+++ b/docs/html/training/gestures/viewgroup.jd
@@ -52,38 +52,38 @@
 
 <h2 id="intercept">Intercept Touch Events in a ViewGroup</h2>
 
-<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} 
-method is called whenever a touch event is detected on the surface of a 
-{@link android.view.ViewGroup}, including on the surface of its children. If 
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} 
-returns {@code true}, the {@link android.view.MotionEvent} is intercepted, 
-meaning it will be not be passed on to the child, but rather to the 
+<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
+method is called whenever a touch event is detected on the surface of a
+{@link android.view.ViewGroup}, including on the surface of its children. If
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
+returns {@code true}, the {@link android.view.MotionEvent} is intercepted,
+meaning it will be not be passed on to the child, but rather to the
 {@link android.view.View#onTouchEvent onTouchEvent()} method of the parent.</p>
 
-<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} 
-method gives a parent the chance to see any touch event before its children do. 
-If you return {@code true} from 
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}, 
-the child view that was previously handling touch events 
-receives an {@link android.view.MotionEvent#ACTION_CANCEL}, and the events from that 
-point forward are sent to the parent's 
-{@link android.view.View#onTouchEvent onTouchEvent()} method for the usual handling. 
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} can also 
-return {@code false} and simply spy on events as they travel down the view hierarchy 
+<p>The {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}
+method gives a parent the chance to see any touch event before its children do.
+If you return {@code true} from
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()},
+the child view that was previously handling touch events
+receives an {@link android.view.MotionEvent#ACTION_CANCEL}, and the events from that
+point forward are sent to the parent's
+{@link android.view.View#onTouchEvent onTouchEvent()} method for the usual handling.
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} can also
+return {@code false} and simply spy on events as they travel down the view hierarchy
 to their usual targets, which will handle the events with their own
 {@link android.view.View#onTouchEvent onTouchEvent()}.
 
 
-<p>In the following snippet, the class {@code MyViewGroup} extends  
-{@link android.view.ViewGroup}. 
-{@code MyViewGroup} contains multiple child views. If you drag your finger across 
-a child view horizontally, the child view should no longer get touch events, and 
-{@code MyViewGroup} should handle touch events by scrolling its contents. However, 
-if you press buttons in the child view, or scroll the child view vertically, 
-the parent shouldn't intercept those touch events, because the child is the 
-intended target. In those cases, 
+<p>In the following snippet, the class {@code MyViewGroup} extends
+{@link android.view.ViewGroup}.
+{@code MyViewGroup} contains multiple child views. If you drag your finger across
+a child view horizontally, the child view should no longer get touch events, and
+{@code MyViewGroup} should handle touch events by scrolling its contents. However,
+if you press buttons in the child view, or scroll the child view vertically,
+the parent shouldn't intercept those touch events, because the child is the
+intended target. In those cases,
 {@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()} should
-return {@code false}, and {@code MyViewGroup}'s 
+return {@code false}, and {@code MyViewGroup}'s
 {@link android.view.View#onTouchEvent onTouchEvent()} won't be called.</p>
 
 <pre>public class MyViewGroup extends ViewGroup {
@@ -118,20 +118,20 @@
         switch (action) {
             case MotionEvent.ACTION_MOVE: {
                 if (mIsScrolling) {
-                    // We're currently scrolling, so yes, intercept the 
+                    // We're currently scrolling, so yes, intercept the
                     // touch event!
                     return true;
                 }
 
-                // If the user has dragged her finger horizontally more than 
+                // If the user has dragged her finger horizontally more than
                 // the touch slop, start the scroll
 
                 // left as an exercise for the reader
-                final int xDiff = calculateDistanceX(ev); 
+                final int xDiff = calculateDistanceX(ev);
 
-                // Touch slop should be calculated using ViewConfiguration 
+                // Touch slop should be calculated using ViewConfiguration
                 // constants.
-                if (xDiff > mTouchSlop) { 
+                if (xDiff > mTouchSlop) {
                     // Start scrolling!
                     mIsScrolling = true;
                     return true;
@@ -141,26 +141,26 @@
             ...
         }
 
-        // In general, we don't want to intercept touch events. They should be 
+        // In general, we don't want to intercept touch events. They should be
         // handled by the child view.
         return false;
     }
 
     &#64;Override
     public boolean onTouchEvent(MotionEvent ev) {
-        // Here we actually handle the touch event (e.g. if the action is ACTION_MOVE, 
+        // Here we actually handle the touch event (e.g. if the action is ACTION_MOVE,
         // scroll this container).
-        // This method will only be called if the touch event was intercepted in 
+        // This method will only be called if the touch event was intercepted in
         // onInterceptTouchEvent
         ...
     }
 }</pre>
 
-<p>Note that {@link android.view.ViewGroup} also provides a 
-{@link android.view.ViewGroup#requestDisallowInterceptTouchEvent requestDisallowInterceptTouchEvent()} method. 
-The {@link android.view.ViewGroup} calls this method when a child does not want the parent and its 
-ancestors to intercept touch events with 
-{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}. 
+<p>Note that {@link android.view.ViewGroup} also provides a
+{@link android.view.ViewGroup#requestDisallowInterceptTouchEvent requestDisallowInterceptTouchEvent()} method.
+The {@link android.view.ViewGroup} calls this method when a child does not want the parent and its
+ancestors to intercept touch events with
+{@link android.view.ViewGroup#onInterceptTouchEvent onInterceptTouchEvent()}.
 </p>
 
 <h2 id="vc">Use ViewConfiguration Constants</h2>
@@ -176,10 +176,10 @@
 prevent accidental scrolling when the user is performing some other touch
 operation, such as touching on-screen elements.</p>
 
-<p>Two other commonly used {@link android.view.ViewConfiguration} methods are 
-{@link android.view.ViewConfiguration#getScaledMinimumFlingVelocity getScaledMinimumFlingVelocity()} 
+<p>Two other commonly used {@link android.view.ViewConfiguration} methods are
+{@link android.view.ViewConfiguration#getScaledMinimumFlingVelocity getScaledMinimumFlingVelocity()}
 and {@link android.view.ViewConfiguration#getScaledMaximumFlingVelocity getScaledMaximumFlingVelocity()}.
-These methods  return the minimum and maximum velocity (respectively) to initiate a fling, 
+These methods  return the minimum and maximum velocity (respectively) to initiate a fling,
 as measured in pixels per second. For example:</p>
 
 <pre>ViewConfiguration vc = ViewConfiguration.get(view.getContext());
@@ -209,14 +209,14 @@
 
 <h2 id="delegate">Extend a Child View's Touchable Area</h2>
 
-<p>Android provides the {@link android.view.TouchDelegate} class to make it possible 
-for a parent to extend the touchable area of a child view beyond the child's bounds. 
+<p>Android provides the {@link android.view.TouchDelegate} class to make it possible
+for a parent to extend the touchable area of a child view beyond the child's bounds.
 
 This is useful when the child has to be small, but should have a larger touch region. You can
 also use this approach to shrink the child's touch region if need be.</p>
 
-<p>In the following example, an {@link android.widget.ImageButton} is the  
-"delegate view" (that is, the child whose touch area the parent will extend). 
+<p>In the following example, an {@link android.widget.ImageButton} is the
+"delegate view" (that is, the child whose touch area the parent will extend).
 Here is the layout file:</p>
 
 <pre>
@@ -225,7 +225,7 @@
      android:layout_width=&quot;match_parent&quot;
      android:layout_height=&quot;match_parent&quot;
      tools:context=&quot;.MainActivity&quot; &gt;
- 
+
      &lt;ImageButton android:id=&quot;@+id/button&quot;
           android:layout_width=&quot;wrap_content&quot;
           android:layout_height=&quot;wrap_content&quot;
@@ -245,9 +245,9 @@
 
 </ul>
 
-In its capacity as touch delegate for the {@link android.widget.ImageButton} child view, the 
+In its capacity as touch delegate for the {@link android.widget.ImageButton} child view, the
 parent view will receive all touch events. If the touch event occurred within the child's hit
-rectangle, the parent will pass the touch 
+rectangle, the parent will pass the touch
 event to the child for handling.</p>
 
 
@@ -261,7 +261,7 @@
         setContentView(R.layout.activity_main);
         // Get the parent view
         View parentView = findViewById(R.id.parent_layout);
-        
+
         parentView.post(new Runnable() {
             // Post in the parent's message queue to make sure the parent
             // lays out its children before you call getHitRect()
@@ -275,29 +275,29 @@
                 myButton.setOnClickListener(new View.OnClickListener() {
                     &#64;Override
                     public void onClick(View view) {
-                        Toast.makeText(MainActivity.this, 
-                                "Touch occurred within ImageButton touch region.", 
+                        Toast.makeText(MainActivity.this,
+                                "Touch occurred within ImageButton touch region.",
                                 Toast.LENGTH_SHORT).show();
                     }
                 });
-     
+
                 // The hit rectangle for the ImageButton
                 myButton.getHitRect(delegateArea);
-            
+
                 // Extend the touch area of the ImageButton beyond its bounds
                 // on the right and bottom.
                 delegateArea.right += 100;
                 delegateArea.bottom += 100;
-            
+
                 // Instantiate a TouchDelegate.
-                // "delegateArea" is the bounds in local coordinates of 
+                // "delegateArea" is the bounds in local coordinates of
                 // the containing view to be mapped to the delegate view.
                 // "myButton" is the child view that should receive motion
                 // events.
-                TouchDelegate touchDelegate = new TouchDelegate(delegateArea, 
+                TouchDelegate touchDelegate = new TouchDelegate(delegateArea,
                         myButton);
-     
-                // Sets the TouchDelegate on the parent view, such that touches 
+
+                // Sets the TouchDelegate on the parent view, such that touches
                 // within the touch delegate bounds are routed to the child.
                 if (View.class.isInstance(myButton.getParent())) {
                     ((View) myButton.getParent()).setTouchDelegate(touchDelegate);
diff --git a/docs/html/training/id-auth/authenticate.jd b/docs/html/training/id-auth/authenticate.jd
index 65dbc39..bf32e8e 100644
--- a/docs/html/training/id-auth/authenticate.jd
+++ b/docs/html/training/id-auth/authenticate.jd
@@ -129,7 +129,7 @@
     public void run(AccountManagerFuture&lt;Bundle&gt; result) {
         // Get the result of the operation from the AccountManagerFuture.
         Bundle bundle = result.getResult();
-    
+
         // The token is a named value in the bundle. The name of the value
         // is stored in the constant AccountManager.KEY_AUTHTOKEN.
         token = bundle.getString(AccountManager.KEY_AUTHTOKEN);
diff --git a/docs/html/training/id-auth/custom_auth.jd b/docs/html/training/id-auth/custom_auth.jd
index def9b51..3c106a9 100644
--- a/docs/html/training/id-auth/custom_auth.jd
+++ b/docs/html/training/id-auth/custom_auth.jd
@@ -81,7 +81,7 @@
 credentials would be readable by anyone with {@code adb} access to the device.</p>
 
 <p>With this in mind, you shouldn't pass the user's actual
-password to {@link android.accounts.AccountManager#addAccountExplicitly 
+password to {@link android.accounts.AccountManager#addAccountExplicitly
 AccountManager.addAccountExplicitly()}. Instead, you should store a
 cryptographically secure token that would be of limited use to an attacker. If your
 user credentials are protecting something valuable, you should carefully
diff --git a/docs/html/training/id-auth/index.jd b/docs/html/training/id-auth/index.jd
index f15ee29..45c6309 100644
--- a/docs/html/training/id-auth/index.jd
+++ b/docs/html/training/id-auth/index.jd
@@ -15,7 +15,7 @@
   <li>Android 2.0 (API level 5) or higher</li>
   <li>Experience with <a href="{@docRoot}guide/components/services.html">Services</a></li>
   <li>Experience with <a href="http://oauth.net/2/">OAuth 2.0</a></li>
-</ul>  
+</ul>
 
 <h2>You should also read</h2>
 <ul>
diff --git a/docs/html/training/improving-layouts/optimizing-layout.jd b/docs/html/training/improving-layouts/optimizing-layout.jd
index e0baedf..2f9f32d 100644
--- a/docs/html/training/improving-layouts/optimizing-layout.jd
+++ b/docs/html/training/improving-layouts/optimizing-layout.jd
@@ -145,7 +145,7 @@
 <li>Deep layouts - Layouts with too much nesting are bad for performance. Consider using flatter layouts such as {@link android.widget.RelativeLayout} or {@link android.widget.GridLayout} to improve performance. The default maximum depth is 10.</li>
 </ul>
 
-<p>Another benefit of Lint is that it is integrated into Android Studio. Lint automatically runs 
+<p>Another benefit of Lint is that it is integrated into Android Studio. Lint automatically runs
 whenever you compile your program. With Android Studio, you can also run lint inspections for a
 specific build variant, or for all build variants. </p>
 
@@ -153,7 +153,7 @@
 <strong>File&gt;Settings&gt;Project Settings</strong> option. The Inspection Configuration page
 appears with the supported inspections.</p>
 <p><img src="{@docRoot}images/tools/studio-inspections-config.png" alt="" /> </p>
-<p class="img-caption"><strong>Figure 5.</strong> Inspection Configuration</p> 
+<p class="img-caption"><strong>Figure 5.</strong> Inspection Configuration</p>
 
 <p>Lint has the ability to automatically fix some issues, provide suggestions for others and jump
 directly to the offending code for review.</p>
diff --git a/docs/html/training/in-app-billing/list-iab-products.jd b/docs/html/training/in-app-billing/list-iab-products.jd
index c423fc1..c8de823 100644
--- a/docs/html/training/in-app-billing/list-iab-products.jd
+++ b/docs/html/training/in-app-billing/list-iab-products.jd
@@ -36,7 +36,7 @@
 
 <p>To add new in-app products to your product list:</p>
 <ol>
-<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.  
+<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.
 </li>
 <li>In the Developer Console, open the application entry that you created earlier.</li>
 <li>Click on the APK tab then click on Upload new APK. Upload the signed APK file to the Developer Console. Don’t publish the app yet!</li>
@@ -48,9 +48,9 @@
 <h2 id="QueryDetails">Query Items Available for Purchase</h2>
 <p>You can query Google Play to programmatically retrieve details of the in-app products that are associated with your application (such as the product’s price, title, description, and type).  This is useful, for example, when you want to display a listing of unowned items that are still available for purchase to users.</p>
 <p class="note"><strong>Note:</strong> When making the query, you will need to specify the product IDs for the products explicitly. You can manually find the product IDs from the Developer Console by opening the <strong>In-app Products</strong> tab for your application. The product IDs are listed under the column labeled <strong>Name/ID</strong>.</p>
-<p>To retrieve the product details, call {@code queryInventoryAsync(boolean, List, QueryInventoryFinishedListener)} on your IabHelper instance. 
+<p>To retrieve the product details, call {@code queryInventoryAsync(boolean, List, QueryInventoryFinishedListener)} on your IabHelper instance.
 <ul>
-<li>The first input argument indicates whether product details should be retrieved (should be set to {@code true}).</li> 
+<li>The first input argument indicates whether product details should be retrieved (should be set to {@code true}).</li>
 <li>The {@code List} argument consists of one or more product IDs (also called SKUs) for the products that you want to query.</li>
 <li>Finally, the {@code QueryInventoryFinishedListener} argument specifies a listener is notified when the query operation has completed and handles the query response.</li>
 </ul>
@@ -70,9 +70,9 @@
 <p>The following code shows how you can retrieve the item prices from the result set.</p>
 
 <pre>
-IabHelper.QueryInventoryFinishedListener 
+IabHelper.QueryInventoryFinishedListener
    mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
-   public void onQueryInventoryFinished(IabResult result, Inventory inventory)   
+   public void onQueryInventoryFinished(IabResult result, Inventory inventory)
    {
       if (result.isFailure()) {
          // handle error
@@ -84,7 +84,7 @@
        String bananaPrice =
           inventory.getSkuDetails(SKU_BANANA).getPrice();
 
-       // update the UI 
+       // update the UI
    }
 }
 </pre>
diff --git a/docs/html/training/in-app-billing/purchase-iab-products.jd b/docs/html/training/in-app-billing/purchase-iab-products.jd
index 4e6e035..165e311 100644
--- a/docs/html/training/in-app-billing/purchase-iab-products.jd
+++ b/docs/html/training/in-app-billing/purchase-iab-products.jd
@@ -45,7 +45,7 @@
 <p>The following example shows how you can make a purchase request for a product with ID {@code SKU_GAS}, using an arbitrary value of 10001 for the request code, and an encoded developer payload string.</p>
 
 <pre>
-mHelper.launchPurchaseFlow(this, SKU_GAS, 10001,   
+mHelper.launchPurchaseFlow(this, SKU_GAS, 10001,
    mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
 </pre>
 
@@ -54,14 +54,14 @@
 <p>The following example shows how you can handle the purchase response in the listener, depending on whether the purchase order was completed successfully, and whether the user purchased gas or a premium upgrade. In this example, gas is an in-app product that can be purchased multiple times, so you should consume the purchase to allow the user to buy it again.  To learn how to consume purchases, see the <a href="{@docRoot}training/in-app-billing/purchase-iab-products.html#Consume">Consuming Products</a> section. The premium upgrade is a one-time purchase so you don’t need to consume it.  It is good practice to update the UI immediately so that your users can see their newly purchased items.</p>
 
 <pre>
-IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
+IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
    = new IabHelper.OnIabPurchaseFinishedListener() {
-   public void onIabPurchaseFinished(IabResult result, Purchase purchase) 
+   public void onIabPurchaseFinished(IabResult result, Purchase purchase)
    {
       if (result.isFailure()) {
          Log.d(TAG, "Error purchasing: " + result);
          return;
-      }      
+      }
       else if (purchase.getSku().equals(SKU_GAS)) {
          // consume the gas and update the UI
       }
@@ -86,7 +86,7 @@
 <p>If the query is successful, the query results are stored in an {@code Inventory} object that is passed back to the listener. The In-app Billing service returns only the purchases made by the user account that is currently logged in to the device.</p>
 
 <pre>
-IabHelper.QueryInventoryFinishedListener mGotInventoryListener 
+IabHelper.QueryInventoryFinishedListener mGotInventoryListener
    = new IabHelper.QueryInventoryFinishedListener() {
    public void onQueryInventoryFinished(IabResult result,
       Inventory inventory) {
@@ -96,7 +96,7 @@
       }
       else {
         // does the user have the premium upgrade?
-        mIsPremium = inventory.hasPurchase(SKU_PREMIUM);        
+        mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
         // update UI accordingly
       }
    }
@@ -111,7 +111,7 @@
 <p>In this example, you want to consume the gas item that the user has previously purchased in your app.</p>
 
 <pre>
-mHelper.consumeAsync(inventory.getPurchase(SKU_GAS), 
+mHelper.consumeAsync(inventory.getPurchase(SKU_GAS),
    mConsumeFinishedListener);
 </pre>
 
diff --git a/docs/html/training/in-app-billing/test-iab-app.jd b/docs/html/training/in-app-billing/test-iab-app.jd
index 9d47a96..fc7fe1a 100644
--- a/docs/html/training/in-app-billing/test-iab-app.jd
+++ b/docs/html/training/in-app-billing/test-iab-app.jd
@@ -39,7 +39,7 @@
   <li>Login to the <a href="https://play.google.com/apps/publish/" target="_blank">Developer Console</a> with your developer account.</li>
   <li>Click <strong>Settings</strong> > <strong>Account</strong> details, then in the <strong>License Testing</strong> section, add the Google email addresses for your tester accounts.</li>
 </ol>
-<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.  
+<li>Build a signed APK file for your In-app Billing application. To learn how to build and sign your APK, see <a href="{@docRoot}tools/publishing/preparing.html#publishing-build">Building Your Application for Release</a>. Make sure that you are using your final (not debug) certificate and private key to sign your application.
 </li>
 <li>Make sure that you have uploaded the signed APK for your application to the Developer Console, and associated one or more in-app products with your application. You don't need to publish the application on Google Play to test it. <p class="note"><strong>Warning:</strong> It may take up to 2-3 hours after uploading the APK for Google Play to recognize your updated APK version. If you try to test your application before your uploaded APK is recognized by Google Play, your application will receive a ‘purchase cancelled’ response with an error message “This version of the application is not enabled for In-app Billing.”</p></li>
 <li>Install the APK file to your physical test device by using the {@code adb} tool. To learn how to install the application, see <a href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a Device</a>. Make sure that:
diff --git a/docs/html/training/keyboard-input/index.jd b/docs/html/training/keyboard-input/index.jd
index 46795c4..bd7ad18 100644
--- a/docs/html/training/keyboard-input/index.jd
+++ b/docs/html/training/keyboard-input/index.jd
@@ -32,9 +32,9 @@
 <p>These topics and more are discussed in the following lessons.</p>
 
 
-<h2>Lessons</h2> 
- 
-<dl> 
+<h2>Lessons</h2>
+
+<dl>
   <dt><b><a href="style.html">Specifying the Input Method Type</a></b></dt>
     <dd>Learn how to show certain soft input methods, such as those designed for phone numbers, web
     addresses, or other formats. Also learn how to specify characteristics such
@@ -51,5 +51,5 @@
   <dt><b><a href="commands.html">Handling Keyboard Actions</a></b></dt>
     <dd>Learn how to respond directly to keyboard input for user actions.
     </dd>
- 
-</dl> 
+
+</dl>
diff --git a/docs/html/training/keyboard-input/style.jd b/docs/html/training/keyboard-input/style.jd
index b0e506c..714c8b3 100644
--- a/docs/html/training/keyboard-input/style.jd
+++ b/docs/html/training/keyboard-input/style.jd
@@ -71,7 +71,7 @@
     android:id="@+id/password"
     android:hint="@string/password_hint"
     android:inputType="textPassword"
-    ... />    
+    ... />
 </pre>
 
 <p>There are several possible values documented with the
diff --git a/docs/html/training/load-data-background/handle-results.jd b/docs/html/training/load-data-background/handle-results.jd
index ce0024f..7439d3e 100644
--- a/docs/html/training/load-data-background/handle-results.jd
+++ b/docs/html/training/load-data-background/handle-results.jd
@@ -127,7 +127,7 @@
  */
 &#64;Override
 public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
-    
+
     /*
      * Clears out the adapter's reference to the Cursor.
      * This prevents memory leaks.
diff --git a/docs/html/training/location/display-address.jd b/docs/html/training/location/display-address.jd
index 8606629..daa6fd3 100644
--- a/docs/html/training/location/display-address.jd
+++ b/docs/html/training/location/display-address.jd
@@ -324,7 +324,7 @@
   process if needed. If the service is already running then it remains running.
   Because the service extends {@link android.app.IntentService IntentService},
   it shuts down automatically when all intents have been processed.</p>
-  
+
 <p>Start the service from your app's main activity,
   and create an {@link android.content.Intent} to pass data to the service. You
   need an <em>explicit</em> intent, because you want only your service
diff --git a/docs/html/training/location/geofencing.jd b/docs/html/training/location/geofencing.jd
index 1cf89fd..ce6ad55 100644
--- a/docs/html/training/location/geofencing.jd
+++ b/docs/html/training/location/geofencing.jd
@@ -369,7 +369,7 @@
 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 
+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>
 
diff --git a/docs/html/training/managing-audio/audio-output.jd b/docs/html/training/managing-audio/audio-output.jd
index 416e519..ed1623b 100644
--- a/docs/html/training/managing-audio/audio-output.jd
+++ b/docs/html/training/managing-audio/audio-output.jd
@@ -8,8 +8,8 @@
 
 @jd:body
 
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -25,16 +25,16 @@
 </ul>
 
 
-</div> 
+</div>
 </div>
 
 <p>Users have a number of alternatives when it comes to enjoying the audio from their Android
 devices. Most devices have a built-in speaker, headphone jacks for wired headsets, and many also
 feature Bluetooth connectivity and support for A2DP audio. </p>
 
- 
-<h2 id="CheckHardware">Check What Hardware is Being Used</h2> 
- 
+
+<h2 id="CheckHardware">Check What Hardware is Being Used</h2>
+
 <p>How your app behaves might be affected by which hardware its output is being routed to.</p>
 
 <p>You can query the {@link android.media.AudioManager} to determine if the audio is currently
@@ -48,13 +48,13 @@
     // Adjust output for Speakerphone.
 } else if (isWiredHeadsetOn()) {
     // Adjust output for headsets
-} else { 
+} else {
     // If audio plays and noone can hear it, is it still playing?
 }
 </pre>
 
 
-<h2 id="HandleChanges">Handle Changes in the Audio Output Hardware</h2> 
+<h2 id="HandleChanges">Handle Changes in the Audio Output Hardware</h2>
 
 <p>When a headset is unplugged, or a Bluetooth device disconnected, the audio stream
 automatically reroutes to the built in speaker. If you listen to your music at as high a volume as I
@@ -65,7 +65,7 @@
 that listens for this intent whenever you’re playing audio. In the case of music players, users
 typically expect the playback to be paused&mdash;while for games you may choose to significantly
 lower the volume.</p>
- 
+
 <pre>
 private class NoisyAudioStreamReceiver extends BroadcastReceiver {
     &#64;Override
diff --git a/docs/html/training/managing-audio/index.jd b/docs/html/training/managing-audio/index.jd
index 9391449..55b91c2 100644
--- a/docs/html/training/managing-audio/index.jd
+++ b/docs/html/training/managing-audio/index.jd
@@ -6,10 +6,10 @@
 
 @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/topics/media/mediaplayer.html">Media
@@ -21,41 +21,41 @@
   <li><a href="{@docRoot}guide/components/services.html">Services</a></li>
 </ul>
 
-</div> 
+</div>
 </div>
 
 
 <p>If your app plays audio, it’s important that your users can control the audio in a predictable
 manner. To ensure a great user experience, it’s also important that your app manages the audio focus
-to ensure multiple apps aren’t playing audio at the same time.</p> 
+to ensure multiple apps aren’t playing audio at the same time.</p>
 
-<p>After this class, you will be able to build apps that respond to hardware audio key presses, 
+<p>After this class, you will be able to build apps that respond to hardware audio key presses,
 which request audio focus when playing audio, and which respond appropriately to changes in audio
-focus caused by the system or other applications.</p> 
+focus caused by the system or other applications.</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="volume-playback.html">Controlling Your App’s Volume and
 Playback</a></b></dt>
   <dd>Learn how to ensure your users can control the volume of your app using the hardware or
 software volume controls and where available the play, stop, pause, skip, and previous media
-playback keys.</dd> 
- 
+playback keys.</dd>
+
   <dt><b><a href="audio-focus.html">Managing Audio Focus</a></b></dt>
   <dd>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. Learn how to request the audio focus, listen for a loss of audio focus, and how to
-respond when that happens.</dd> 
- 
+respond when that happens.</dd>
+
   <dt><b><a href="audio-output.html">Dealing with Audio Output Hardware</a></b></dt>
   <dd>Audio can be played from a number of sources. Learn how to find out where the audio is being
-played and how to handle a headset being disconnected during playback.</dd> 
- </dl> 
+played and how to handle a headset being disconnected during playback.</dd>
+ </dl>
diff --git a/docs/html/training/managing-audio/volume-playback.jd b/docs/html/training/managing-audio/volume-playback.jd
index be0f583..7e28893 100644
--- a/docs/html/training/managing-audio/volume-playback.jd
+++ b/docs/html/training/managing-audio/volume-playback.jd
@@ -8,8 +8,8 @@
 
 @jd:body
 
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -26,11 +26,11 @@
   <li><a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a></li>
 </ul>
 
-</div> 
+</div>
 </div>
 
 
- 
+
 <p>A good user experience is a predictable one. If your app plays media it’s important that your
 users can control the volume of your app using the hardware or software volume controls of their
 device, bluetooth headset, or headphones.</p>
@@ -38,9 +38,9 @@
 <p>Similarly, where appropriate and available, the play, stop, pause, skip, and previous media
 playback keys should perform their respective actions on the audio stream used by your app.</p>
 
- 
-<h2 id="IdentifyStream">Identify Which Audio Stream to Use</h2> 
- 
+
+<h2 id="IdentifyStream">Identify Which Audio Stream to Use</h2>
+
 <p>The first step to creating a predictable audio experience is understanding which audio stream
 your app will use.</p>
 
@@ -53,11 +53,11 @@
 android.media.AudioManager#STREAM_MUSIC} stream.</p>
 
 
-<h2 id="HardwareVolumeKeys">Use Hardware Volume Keys to Control Your App’s Audio Volume</h2> 
+<h2 id="HardwareVolumeKeys">Use Hardware Volume Keys to Control Your App’s Audio Volume</h2>
 
 <p>By default, pressing the volume controls modify the volume of the active audio stream. If your
 app isn't currently playing anything, hitting the volume keys adjusts the ringer volume.<p>
-    
+
 <p>If you've got a game or music app, then chances are good that when the user hits the volume keys
 they want to control the volume of the game or music, even if they’re currently between songs or
 there’s no music in the current game location.</p>
@@ -65,8 +65,8 @@
 <p>You may be tempted to try and listen for volume key presses and modify the volume of your
 audio stream that way. Resist the urge. Android provides the handy {@link
 android.app.Activity#setVolumeControlStream setVolumeControlStream()} method to direct volume key
-presses to the audio stream you specify.<p> 
-  
+presses to the audio stream you specify.<p>
+
 <p>Having identified the audio stream your application
 will be using, you should set it as the volume stream target. You should make this call early in
 your app’s lifecycle&mdash;because you only need to call it once during the activity lifecycle, you
@@ -85,7 +85,7 @@
 
 
 <h2 id="PlaybackControls">Use Hardware Playback Control Keys to Control Your App’s Audio
-Playback</h2> 
+Playback</h2>
 
 <p>Media playback buttons such as play, pause, stop, skip, and previous are available on some
 handsets and many connected or wireless headsets. Whenever a user presses one of these hardware
diff --git a/docs/html/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
index d5e7a85..2dd904f 100644
--- a/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html/training/monitoring-device-state/connectivity-monitoring.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,7 +27,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Some of the most common uses for repeating alarms and background services is to schedule regular
@@ -39,21 +39,21 @@
 connected to the Internet, and if so, what type of connection is in place.</p>
 
 
-<h2 id="DetermineConnection">Determine if You Have an Internet Connection</h2> 
- 
+<h2 id="DetermineConnection">Determine if You Have an Internet Connection</h2>
+
 <p>There's no need to schedule an update based on an Internet resource if you aren't connected to
-the Internet. The following snippet shows how to use the {@link android.net.ConnectivityManager} 
+the Internet. The following snippet shows how to use the {@link android.net.ConnectivityManager}
 to query the active network and determine if it has Internet connectivity.</p>
 
 <pre>ConnectivityManager cm =
         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- 
+
 NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 boolean isConnected = activeNetwork != null &&
                       activeNetwork.isConnectedOrConnecting();</pre>
 
 
-<h2 id="DetermineType">Determine the Type of your Internet Connection</h2> 
+<h2 id="DetermineType">Determine the Type of your Internet Connection</h2>
 
 <p>It's also possible to determine the type of Internet connection currently available.</p>
 
@@ -71,7 +71,7 @@
 to resume them once an Internet connection has been established.</p>
 
 
-<h2 id="MonitorChanges">Monitor for Changes in Connectivity</h2> 
+<h2 id="MonitorChanges">Monitor for Changes in Connectivity</h2>
 
 <p>The {@link android.net.ConnectivityManager} broadcasts the {@link
 android.net.ConnectivityManager#CONNECTIVITY_ACTION} ({@code
diff --git a/docs/html/training/monitoring-device-state/manifest-receivers.jd b/docs/html/training/monitoring-device-state/manifest-receivers.jd
index ca184aa5..3e36dba 100644
--- a/docs/html/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html/training/monitoring-device-state/manifest-receivers.jd
@@ -9,7 +9,7 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -24,7 +24,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>The simplest way to monitor device state changes is to create a {@link
@@ -38,10 +38,10 @@
 <p>A better approach is to disable or enable the broadcast receivers at runtime. That way you can
 use the receivers you declared in the manifest as passive alarms that are triggered by system events
 only when necessary.</p>
- 
 
-<h2 id="ToggleReceivers">Toggle and Cascade State Change Receivers to Improve Efficiency </h2> 
- 
+
+<h2 id="ToggleReceivers">Toggle and Cascade State Change Receivers to Improve Efficiency </h2>
+
 <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>
@@ -59,6 +59,6 @@
 stop listening for connectivity changes and simply check to see if you're online immediately before
 performing an update and rescheduling a recurring update alarm.</p>
 
-<p>You can use the same technique to delay a download that requires higher bandwidth to complete.  
+<p>You can use the same technique to delay a download that requires higher bandwidth to complete.
 Simply enable a broadcast receiver that listens for connectivity changes and initiates the
 download only after you are connected to Wi-Fi.</p>
diff --git a/docs/html/training/multiple-threads/create-threadpool.jd b/docs/html/training/multiple-threads/create-threadpool.jd
index e22afd3..df28833 100644
--- a/docs/html/training/multiple-threads/create-threadpool.jd
+++ b/docs/html/training/multiple-threads/create-threadpool.jd
@@ -48,7 +48,7 @@
     also occurs in any object that is only instantiated once. To learn more about this, read the
     <a href="{@docRoot}guide/components/processes-and-threads.html">
     Processes and Threads</a> API guide.
-    
+
 </p>
 <h2 id="ClassStructure">Define the Thread Pool Class</h2>
 <p>
diff --git a/docs/html/training/multiscreen/adaptui.jd b/docs/html/training/multiscreen/adaptui.jd
index 34e9d7d..469012b 100644
--- a/docs/html/training/multiscreen/adaptui.jd
+++ b/docs/html/training/multiscreen/adaptui.jd
@@ -10,9 +10,9 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
+<div id="tb-wrapper">
+<div id="tb">
+
 <h2>This lesson teaches you to</h2>
 
 <ol>
@@ -28,18 +28,18 @@
   <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Supporting Tablets and
 Handsets</a></li>
 </ul>
- 
+
 <h2>Try it out</h2>
- 
+
 <div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
   the sample app</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+
+</div>
+</div>
 
 <p>Depending on the layout that your application is currently showing, the UI
 flow may be different. For example, if your application is in the dual-pane
@@ -66,7 +66,7 @@
         setContentView(R.layout.main_layout);
 
         View articleView = findViewById(R.id.article);
-        mIsDualPane = articleView != null &amp;&amp; 
+        mIsDualPane = articleView != null &amp;&amp;
                         articleView.getVisibility() == View.VISIBLE;
     }
 }
@@ -139,7 +139,7 @@
     else {
         /* use list navigation (spinner) */
         actionBar.setNavigationMode(android.app.ActionBar.NAVIGATION_MODE_LIST);
-        SpinnerAdapter adap = new ArrayAdapter<String>(this, 
+        SpinnerAdapter adap = new ArrayAdapter<String>(this,
                 R.layout.headline_item, CATEGORIES);
         actionBar.setListNavigationCallbacks(adap, handler);
     }
@@ -157,7 +157,7 @@
 
 <p>In cases like this, you can usually avoid code duplication by reusing the
 same {@link android.app.Fragment} subclass in several activities.  For example,
-<code>ArticleFragment</code> 
+<code>ArticleFragment</code>
 is used in the dual-pane layout:</p>
 
 {@sample development/samples/training/multiscreen/newsreader/res/layout/twopanes.xml all}
@@ -206,7 +206,7 @@
 public class HeadlinesFragment extends ListFragment {
     ...
     &#64;Override
-    public void onItemClick(AdapterView&lt;?&gt; parent, 
+    public void onItemClick(AdapterView&lt;?&gt; parent,
                             View view, int position, long id) {
         if (null != mHeadlineSelectedListener) {
             mHeadlineSelectedListener.onHeadlineSelected(position);
diff --git a/docs/html/training/multiscreen/index.jd b/docs/html/training/multiscreen/index.jd
index 8eff246..2c59fac 100644
--- a/docs/html/training/multiscreen/index.jd
+++ b/docs/html/training/multiscreen/index.jd
@@ -7,10 +7,10 @@
 
 @jd:body
 
-<div id="tb-wrapper"> 
-<div id="tb"> 
- 
-<h2>Dependencies and prerequisites</h2> 
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
 
 <ul>
   <li>Android 1.6 or higher (2.1+ for the sample app)</li>
@@ -28,18 +28,18 @@
 <ul>
   <li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
 </ul>
- 
-<h2>Try it out</h2> 
- 
-<div class="download-box"> 
+
+<h2>Try it out</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
   the sample app</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
- 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
+
 <p>Android powers hundreds of device types with several different screen sizes,
 ranging from small phones to large TV sets. Therefore, it’s important
 that you design your application to be compatible with all screen sizes so it’s available to as many
@@ -62,26 +62,26 @@
 href="{@docRoot}tools/support-library/index.html">support library</a> in order to use the {@link
 android.app.Fragment} APIs on versions lower than Android 3.0. You must download and add the
 library to your application in order to use all APIs in this class.</p>
- 
 
-<h2>Lessons</h2> 
- 
-<dl> 
-  <dt><b><a href="screensizes.html">Supporting Different Screen Sizes</a></b></dt> 
+
+<h2>Lessons</h2>
+
+<dl>
+  <dt><b><a href="screensizes.html">Supporting Different Screen Sizes</a></b></dt>
     <dd>This lesson walks you through how to design layouts that adapts
         several different screen sizes (using flexible dimensions for
         views, {@link android.widget.RelativeLayout}, screen size and orientation qualifiers,
-        alias filters, and nine-patch bitmaps).</dd> 
- 
+        alias filters, and nine-patch bitmaps).</dd>
+
   <dt><b><a href="screendensities.html">Supporting Different Screen
-        Densities</a></b></dt> 
+        Densities</a></b></dt>
     <dd>This lesson shows you how to support screens that have different
         pixel densities (using density-independent pixels and providing
-        bitmaps appropriate for each density).</dd> 
- 
-  <dt><b><a href="adaptui.html">Implementing Adaptative UI Flows</a></b></dt> 
+        bitmaps appropriate for each density).</dd>
+
+  <dt><b><a href="adaptui.html">Implementing Adaptative UI Flows</a></b></dt>
     <dd>This lesson shows you how to implement your UI flow in a way
         that adapts to several screen size/density combinations
         (run-time detection of active layout, reacting according to
-        current layout, handling screen configuration changes).</dd> 
-</dl> 
+        current layout, handling screen configuration changes).</dd>
+</dl>
diff --git a/docs/html/training/multiscreen/screensizes.jd b/docs/html/training/multiscreen/screensizes.jd
index 2cd59ee..040bb85 100755
--- a/docs/html/training/multiscreen/screensizes.jd
+++ b/docs/html/training/multiscreen/screensizes.jd
@@ -10,8 +10,8 @@
 
 
 <!-- This is the training bar -->
-<div id="tb-wrapper"> 
-<div id="tb"> 
+<div id="tb-wrapper">
+<div id="tb">
 
 <h2>This lesson teaches you to</h2>
 <ol>
@@ -30,27 +30,27 @@
   <li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
 </ul>
 
-<h2>Try it out</h2> 
- 
-<div class="download-box"> 
+<h2>Try it out</h2>
+
+<div class="download-box">
 <a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Download
   the sample app</a>
-<p class="filename">NewsReader.zip</p> 
-</div> 
- 
-</div> 
-</div> 
+<p class="filename">NewsReader.zip</p>
+</div>
+
+</div>
+</div>
 
 <p>This lesson shows you how to support different screen sizes by:</p>
-<ul> 
-  <li>Ensuring your layout can be adequately resized to fit the screen</li> 
-  <li>Providing appropriate UI layout according to screen configuration</li> 
+<ul>
+  <li>Ensuring your layout can be adequately resized to fit the screen</li>
+  <li>Providing appropriate UI layout according to screen configuration</li>
   <li>Ensuring the correct layout is applied to the correct screen</li>
-  <li>Providing bitmaps that scale correctly</li> 
-</ul> 
+  <li>Providing bitmaps that scale correctly</li>
+</ul>
 
 
-<h2 id="TaskUseWrapMatchPar">Use "wrap_content" and "match_parent"</h2> 
+<h2 id="TaskUseWrapMatchPar">Use "wrap_content" and "match_parent"</h2>
 
 <p>To ensure that your layout is flexible and adapts to different screen sizes,
 you should use <code>"wrap_content"</code> and <code>"match_parent"</code> for the width
@@ -78,11 +78,11 @@
 and landscape (right).</p>
 
 
-<h2 id="TaskUseRelativeLayout">Use RelativeLayout</h2> 
+<h2 id="TaskUseRelativeLayout">Use RelativeLayout</h2>
 
 <p>You can construct fairly complex layouts using nested instances of {@link
 android.widget.LinearLayout} and
-combinations of <code>"wrap_content"</code> and <code>"match_parent"</code> sizes. 
+combinations of <code>"wrap_content"</code> and <code>"match_parent"</code> sizes.
 However, {@link android.widget.LinearLayout} does not allow you to precisely control the
 spacial relationships of child views; views in a {@link android.widget.LinearLayout} simply line up
 side-by-side. If you need child views to be oriented in variations other than a straight line, a
@@ -139,8 +139,8 @@
 spatial relationships are preserved as specified by the {@link
 android.widget.RelativeLayout.LayoutParams}.</p>
 
- 
-<h2 id="TaskUseSizeQuali">Use Size Qualifiers</h2> 
+
+<h2 id="TaskUseSizeQuali">Use Size Qualifiers</h2>
 
 <p>There's only so much mileage you can get from a flexible layout or relative layout
 like the one in the previous sections. While those layouts adapt to
@@ -148,7 +148,7 @@
 may not provide the best user experience for each screen size. Therefore, your
 application should not only implement flexible layouts, but should also provide
 several alternative layouts to target different screen configurations. You do
-so by using <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">configuration qualifiers</a>, which allows the runtime 
+so by using <a href="http://developer.android.com/guide/practices/screens_support.html#qualifiers">configuration qualifiers</a>, which allows the runtime
 to automatically select the appropriate resource based on the current device’s
 configuration (such as a different layout design for different screen sizes).</p>
 
@@ -209,13 +209,13 @@
 
 <p>However, this won't work well on pre-3.2 devices, because they don't
 recognize <code>sw600dp</code> as a size qualifier, so you still have to use the <code>large</code>
-qualifier as well. So, you should have a file named 
+qualifier as well. So, you should have a file named
 <code>res/layout-large/main.xml</code>
 which is identical to <code>res/layout-sw600dp/main.xml</code>. In the next section
 you'll see a technique that allows you to avoid duplicating the layout files this way.</p>
 
 
-<h2 id="TaskUseAliasFilters">Use Layout Aliases</h2> 
+<h2 id="TaskUseAliasFilters">Use Layout Aliases</h2>
 
 <p>The smallest-width qualifier is available only on Android 3.2 and above.
 Therefore, you should also still use the abstract size bins (small, normal,
@@ -271,7 +271,7 @@
 {@code large}, and post-3.2 will match <code>sw600dp</code>).</p>
 
 
-<h2 id="TaskUseOriQuali">Use Orientation Qualifiers</h2> 
+<h2 id="TaskUseOriQuali">Use Orientation Qualifiers</h2>
 
 <p>Some layouts work well in both landscape and portrait orientations, but most of them can
 benefit from adjustments. In the News Reader sample app, here is how the layout
@@ -287,7 +287,7 @@
 <li><b>TV, landscape:</b> dual pane, wide, with action bar</li>
 </ul></p>
 
-<p>So each of these layouts is defined in an XML file in the 
+<p>So each of these layouts is defined in an XML file in the
 <code>res/layout/</code> directory. To then assign each layout to the various screen
 configurations, the app uses layout aliases to match them to
 each configuration:</p>
@@ -361,7 +361,7 @@
 the right and bottom borders indicate where the content should be
 placed.</p>
 
-<p>Also, notice the <code>.9.png</code> extension. You must use this 
+<p>Also, notice the <code>.9.png</code> extension. You must use this
 extension, since this is how the framework detects that this is a nine-patch
 image, as opposed to a regular PNG image.</p>
 
diff --git a/docs/html/training/notify-user/build-notification.jd b/docs/html/training/notify-user/build-notification.jd
index d24a496..2f96a20 100644
--- a/docs/html/training/notify-user/build-notification.jd
+++ b/docs/html/training/notify-user/build-notification.jd
@@ -42,9 +42,9 @@
 
 <p>This lesson explains how to create and issue a notification.</p>
 
-<p>The examples in this class are based on the 
-{@link android.support.v4.app.NotificationCompat.Builder} class. 
-{@link android.support.v4.app.NotificationCompat.Builder} 
+<p>The examples in this class are based on the
+{@link android.support.v4.app.NotificationCompat.Builder} class.
+{@link android.support.v4.app.NotificationCompat.Builder}
 is in the <a href="{@docRoot}">Support Library</a>. You should use
 {@link android.support.v4.app.NotificationCompat} and its subclasses,
 particularly {@link android.support.v4.app.NotificationCompat.Builder}, to
@@ -52,9 +52,9 @@
 
 <h2 id="builder">Create a Notification Builder</h2>
 
-<p>When creating a notification, specify the UI content and actions with a 
-{@link android.support.v4.app.NotificationCompat.Builder} object. At bare minimum, 
-a {@link android.support.v4.app.NotificationCompat.Builder Builder} 
+<p>When creating a notification, specify the UI content and actions with a
+{@link android.support.v4.app.NotificationCompat.Builder} object. At bare minimum,
+a {@link android.support.v4.app.NotificationCompat.Builder Builder}
 object must include the following:</p>
 
 <ul>
@@ -96,7 +96,7 @@
 android.app.Activity} from a notification, you must preserve the user's expected
 navigation experience. In the snippet below, clicking the notification opens a
 new activity that effectively extends the behavior of the notification. In this
-case there is no need to create an artificial back stack (see 
+case there is no need to create an artificial back stack (see
 <a href="navigation.html">Preserving Navigation when Starting an Activity</a> for
 more information):</p>
 
@@ -132,11 +132,11 @@
 
 <p>To issue the notification:</p>
 <ul>
-<li>Get an instance of {@link android.app.NotificationManager}.</li> 
+<li>Get an instance of {@link android.app.NotificationManager}.</li>
 
 <li>Use the {@link android.app.NotificationManager#notify notify()} method to issue the
-notification. When you call {@link android.app.NotificationManager#notify notify()}, specify a notification ID. 
-You can use this ID to update the notification later on. This is described in more detail in 
+notification. When you call {@link android.app.NotificationManager#notify notify()}, specify a notification ID.
+You can use this ID to update the notification later on. This is described in more detail in
 <a href="managing.html">Managing Notifications</a>.</li>
 
 <li>Call {@link
@@ -152,7 +152,7 @@
 // Sets an ID for the notification
 int mNotificationId = 001;
 // Gets an instance of the NotificationManager service
-NotificationManager mNotifyMgr = 
+NotificationManager mNotifyMgr =
         (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 // Builds the notification and issues it.
 mNotifyMgr.notify(mNotificationId, mBuilder.build());
diff --git a/docs/html/training/notify-user/display-progress.jd b/docs/html/training/notify-user/display-progress.jd
index 3439571..e2cf033 100644
--- a/docs/html/training/notify-user/display-progress.jd
+++ b/docs/html/training/notify-user/display-progress.jd
@@ -59,9 +59,9 @@
 <h2 id="FixedProgress">Display a Fixed-duration Progress Indicator</h2>
 <p>
     To display a determinate progress bar, add the bar to your notification by calling
-    {@link android.support.v4.app.NotificationCompat.Builder#setProgress 
-    setProgress(max, progress, false)} and then issue the notification. 
-    The third argument is a boolean that indicates whether the 
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(max, progress, false)} and then issue the notification.
+    The third argument is a boolean that indicates whether the
     progress bar is indeterminate (<strong>true</strong>) or determinate (<strong>false</strong>).
     As your operation proceeds,
     increment <code>progress</code>, and update the notification. At the end of the operation,
@@ -74,7 +74,7 @@
     You can either leave the progress bar showing when the operation is done, or remove it. In
     either case, remember to update the notification text to show that the operation is complete.
     To remove the progress bar, call
-    {@link android.support.v4.app.NotificationCompat.Builder#setProgress 
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
     setProgress(0, 0, false)}. For example:
 </p>
 <pre>
@@ -136,14 +136,14 @@
 <p>
     To display a continuing (indeterminate) activity indicator, add it to your notification with
     {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
-    and issue the notification. The first two arguments are ignored, and the third argument  
+    and issue the notification. The first two arguments are ignored, and the third argument
     declares that the indicator is indeterminate. The result is an indicator
     that has the same style as a progress bar, except that its animation is ongoing.
 </p>
 <p>
     Issue the notification at the beginning of the operation. The animation will run until you
     modify your notification. When the operation is done, call
-    {@link android.support.v4.app.NotificationCompat.Builder#setProgress 
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
     setProgress(0, 0, false)} and then update the notification to remove the activity indicator.
     Always do this; otherwise, the animation will run even when the operation is complete. Also
     remember to change the notification text to indicate that the operation is complete.
@@ -160,7 +160,7 @@
 </pre>
 <p>
     Replace the lines you've found with the following lines. Notice that the third parameter
-    in the {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} 
+    in the {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
     call is set to {@code true} to indicate that the progress bar is
     indeterminate:
 </p>
diff --git a/docs/html/training/notify-user/expanded.jd b/docs/html/training/notify-user/expanded.jd
index b657426..23d85d4 100644
--- a/docs/html/training/notify-user/expanded.jd
+++ b/docs/html/training/notify-user/expanded.jd
@@ -75,7 +75,7 @@
 </ul>
 
 <p>The normal view provides these features through a new activity that launches
-when the user clicks the notification. Keep this in mind as you design your notifications&mdash;first 
+when the user clicks the notification. Keep this in mind as you design your notifications&mdash;first
 provide the functionality in the normal view, since
 this is how many users will interact with the notification.</p>
 
@@ -87,19 +87,19 @@
 
 <p>In this snippet, the
 {@link android.app.IntentService} method
-{@link android.app.IntentService#onHandleIntent onHandleIntent()} specifies the new activity 
+{@link android.app.IntentService#onHandleIntent onHandleIntent()} specifies the new activity
 that will be launched if the user
-clicks the notification itself. The method 
-{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()} 
+clicks the notification itself. The method
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}
 defines a pending intent that should be fired when the user
 clicks the notification, thereby launching the activity.</p>
 
 <pre>Intent resultIntent = new Intent(this, ResultActivity.class);
 resultIntent.putExtra(CommonConstants.EXTRA_MESSAGE, msg);
-resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
+resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
         Intent.FLAG_ACTIVITY_CLEAR_TASK);
-     
-// Because clicking the notification launches a new ("special") activity, 
+
+// Because clicking the notification launches a new ("special") activity,
 // there's no need to create an artificial back stack.
 PendingIntent resultPendingIntent =
          PendingIntent.getActivity(
@@ -130,8 +130,8 @@
 PendingIntent piSnooze = PendingIntent.getService(this, 0, snoozeIntent, 0);
 </pre>
 
-<p>This snippet shows how to construct the 
-{@link android.support.v4.app.NotificationCompat.Builder Builder} object. 
+<p>This snippet shows how to construct the
+{@link android.support.v4.app.NotificationCompat.Builder Builder} object.
 It sets the style for the big
 view to be "big text," and sets its content to be the reminder message. It uses
 {@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()}
diff --git a/docs/html/training/notify-user/index.jd b/docs/html/training/notify-user/index.jd
index 616e767..57efd65 100644
--- a/docs/html/training/notify-user/index.jd
+++ b/docs/html/training/notify-user/index.jd
@@ -43,9 +43,9 @@
 </div>
 
 <p>
-   A notification is a user interface element that you display outside your app's normal UI to indicate 
-   that an event has occurred. Users can choose to view the notification while using other apps and respond 
-   to it when it's convenient for them. 
+   A notification is a user interface element that you display outside your app's normal UI to indicate
+   that an event has occurred. Users can choose to view the notification while using other apps and respond
+   to it when it's convenient for them.
 
 </p>
 
@@ -86,10 +86,10 @@
         </strong>
     </dt>
     <dd>
-        Learn how to create a big view within an expanded notification, while still maintaining 
+        Learn how to create a big view within an expanded notification, while still maintaining
         backward compatibility.
     </dd>
-   
+
     <dt>
         <strong>
         <a href="display-progress.html">Displaying Progress in a Notification</a>
diff --git a/docs/html/training/notify-user/navigation.jd b/docs/html/training/notify-user/navigation.jd
index b7051ab..cdb7f3d 100644
--- a/docs/html/training/notify-user/navigation.jd
+++ b/docs/html/training/notify-user/navigation.jd
@@ -37,7 +37,7 @@
 </div>
 </div>
 <p>
-    Part of designing a notification is preserving the user's expected navigation experience. 
+    Part of designing a notification is preserving the user's expected navigation experience.
     For a detailed discussion of this topic, see the
     <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#NotificationResponse">Notifications</a>
     API guide.
@@ -49,7 +49,7 @@
     </dt>
     <dd>
         You're starting an {@link android.app.Activity} that's part of the application's normal
-        workflow. 
+        workflow.
     </dd>
     <dt>
         Special activity
@@ -202,7 +202,7 @@
 Intent notifyIntent =
         new Intent(new ComponentName(this, ResultActivity.class));
 // Sets the Activity to start in a new, empty task
-notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
         Intent.FLAG_ACTIVITY_CLEAR_TASK);
 // Creates the PendingIntent
 PendingIntent notifyIntent =
diff --git a/docs/html/training/run-background-service/report-status.jd b/docs/html/training/run-background-service/report-status.jd
index 41121c1..41fbb00 100644
--- a/docs/html/training/run-background-service/report-status.jd
+++ b/docs/html/training/run-background-service/report-status.jd
@@ -91,7 +91,7 @@
 </p>
 <h2 id="ReceiveStatus">Receive Status Broadcasts from an IntentService</h2>
 <p>
-    
+
     To receive broadcast {@link android.content.Intent} objects, use a subclass of
     {@link android.content.BroadcastReceiver}. In the subclass, implement the
     {@link android.content.BroadcastReceiver#onReceive BroadcastReceiver.onReceive()} callback
@@ -137,7 +137,7 @@
         // The filter's action is BROADCAST_ACTION
         IntentFilter mStatusIntentFilter = new IntentFilter(
                 Constants.BROADCAST_ACTION);
-    
+
         // Adds a data filter for the HTTP scheme
         mStatusIntentFilter.addDataScheme("http");
         ...
@@ -194,6 +194,6 @@
     {@link android.content.Intent}.
 </p>
 <p>
-    
+
 </p>
 
diff --git a/docs/html/training/sign-in/index.jd b/docs/html/training/sign-in/index.jd
index d7c8e1d..a585944 100644
--- a/docs/html/training/sign-in/index.jd
+++ b/docs/html/training/sign-in/index.jd
@@ -11,8 +11,8 @@
   alt="Google maps sample image">
 
 <p>
-  Google Sign-In for Android lets you authenticate a user with the same credentials they use on 
-  Google. After a user signs in with Google, you can create more engaging experiences and drive 
+  Google Sign-In for Android lets you authenticate a user with the same credentials they use on
+  Google. After a user signs in with Google, you can create more engaging experiences and drive
   usage of your app.
 </p>
 
@@ -34,8 +34,8 @@
 
 <h4>Access the profile and social graph</h4>
 <p>
-  After users have signed in with Google, your app can welcome them by name and display their 
-  picture. If your app requests social scopes, it can connect users with friends, and access  
+  After users have signed in with Google, your app can welcome them by name and display their
+  picture. If your app requests social scopes, it can connect users with friends, and access
   age range, language, and public profile information.<br>
   <a href="https://developers.google.com/identity/sign-in/android/people" class="external-link">
   Getting Profile Information</a>.
@@ -47,6 +47,6 @@
   The Google Android APIs are part of the Google Play services platform. To use Google features,
   set up the Google Play services SDK in your app development project. For more information, see
   the <a class="external-link" href=
-  "https://developers.google.com/identity/sign-in/android/start-integrating">Start Integrating</a> 
+  "https://developers.google.com/identity/sign-in/android/start-integrating">Start Integrating</a>
   guide for Google Sign-In.
 </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 7df67e7..d3d31de 100644
--- a/docs/html/training/testing/ui-testing/espresso-testing.jd
+++ b/docs/html/training/testing/ui-testing/espresso-testing.jd
@@ -188,9 +188,9 @@
 {@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>
+before each test method annotated with <code>&#64;Test</code> and before any method annotated with
+<code>&#64;Before</code>. The framework handles shutting down the activity after the test finishes
+and all methods annotated with <code>&#64;After</code> are run.</p>
 
 <pre>
 package com.example.android.testing.espresso.BasicSample;
diff --git a/docs/html/training/testing/ui-testing/uiautomator-testing.jd b/docs/html/training/testing/ui-testing/uiautomator-testing.jd
index 05ddc34..5d42107 100644
--- a/docs/html/training/testing/ui-testing/uiautomator-testing.jd
+++ b/docs/html/training/testing/ui-testing/uiautomator-testing.jd
@@ -26,7 +26,7 @@
   <h2>You should also read</h2>
 
   <ul>
-    <li><a href="{@docRoot}reference/android/support/test/package-summary.html">
+    <li><a href="{@docRoot}reference/android/support/test/uiautomator/package-summary.html">
 UI Automator API Reference</a></li>
   </ul>
 
diff --git a/docs/html/training/tv/tif/channel.jd b/docs/html/training/tv/tif/channel.jd
index 999f1ca..59e357a 100644
--- a/docs/html/training/tv/tif/channel.jd
+++ b/docs/html/training/tv/tif/channel.jd
@@ -13,6 +13,7 @@
     <li><a href="#permission">Get Permission</a></li>
     <li><a href="#register">Register Channels in the Database</a></li>
     <li><a href="#update">Update Channel Data</a></li>
+    <li><a href="#applink">Add App Link Information</a></li>
   </ol>
   <h2>Try It Out</h2>
   <ul>
@@ -22,10 +23,13 @@
 </div>
 </div>
 
-<p>Your TV input must provide Electronic Program Guide (EPG) data for at least one channel in its
-setup activity. You should also periodically update that data, with consideration for the size of
-the update and the processing thread that handles it. This lesson discusses creating and updating
-channel and program data on the system database with these considerations in mind.</p>
+<p>Your TV input must provide Electronic Program Guide (EPG) data for at least
+one channel in its setup activity. You should also periodically update that
+data, with consideration for the size of the update and the processing thread
+that handles it. Additionally, you can provide app links for channels
+that guide the user to related content and activities.
+This lesson discusses creating and updating channel and program data on the
+system database with these considerations in mind.</p>
 
 <p>&nbsp;</p>
 
@@ -70,6 +74,10 @@
   ID</li>
 </ul>
 
+<p>If you want to provide app link details for your channels, you need to
+update some additional fields. For more information on app link fields, see
+<a href="#applink">Add App Link Information</a>.
+
 <p>For internet streaming based TV inputs, assign your own values to the above accordingly so that
 each channel can be identified uniquely.</p>
 
@@ -236,4 +244,112 @@
 <p>Other techniques to separate the data update tasks from the UI thread include using the
 {@link android.os.HandlerThread} class, or you may implement your own using {@link android.os.Looper}
 and {@link android.os.Handler} classes.  See <a href="{@docRoot}guide/components/processes-and-threads.html">
-Processes and Threads</a> for more information.</p>
\ No newline at end of file
+Processes and Threads</a> for more information.</p>
+
+<h2 id="applink">Add App Link Information</h2>
+
+<p>Channels can use <em>app links</em> to let users easily launch a related
+activity while they are watching channel content. Channel apps use
+app links to extend user engagement by launching activities that show
+related information or additional content. For example, you can use app links
+to do the following:</p>
+
+<ul>
+<li>Guide the user to discover and purchase related content.</li>
+<li>Provide additional information about currently playing content.</li>
+<li>While viewing episodic content, start viewing the next episode in a
+series.</li>
+<li>Let the user interact with content&mdash;for example, rate or review
+content&mdash;without interrupting content playback.</li>
+</ul>
+
+<p>App links are displayed when the user presses <b>Select</b> to show the
+TV menu while watching channel content.</p>
+
+<img alt="" src="{@docRoot}images/training/tv/tif/app-link.png"
+srcset="{@docRoot}images/training/tv/tif/app-link.png 1x,
+{@docRoot}images/training/tv/tif/app-link-2x.png 2x" id="figure1"/>
+<p class="img-caption"><strong>Figure 1.</strong> An example app link
+displayed on the <b>Channels</b> row while channel content is shown.</p>
+
+<p>When the user selects the app link, the system starts an activity using
+an intent URI specified by the channel app. Channel content continues to play
+while the app link activity is active. The user can return to the channel
+content by pressing <b>Back</b>.</p>
+
+<h3 id="card">Provide App Link Channel Data</h4>
+
+<p>Android TV automatically creates an app link for each channel,
+using information from the channel data. To provide app link information,
+specify the following details in your
+{@link android.media.tv.TvContract.Channels} fields:
+</p>
+
+<ul>
+<li>{@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_COLOR} - The
+accent color of the app link for this channel. For an example accent color,
+see figure 2, callout 3.
+</li>
+<li>{@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_ICON_URI} -
+The URI for the app badge icon of the app link for this channel. For an
+example app badge icon, see figure 2, callout 2.
+</li>
+<li>{@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_INTENT_URI} -
+The intent URI of the app link for this channel. You can create the URI
+using {@link android.content.Intent#toUri(int) toUri(int)} with
+{@link android.content.Intent#URI_INTENT_SCHEME URI_INTENT_SCHEME} and
+convert the URI back to the original intent with
+{@link android.content.Intent#parseUri parseUri()}.
+</li>
+<li>{@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_POSTER_ART_URI}
+- The URI for the poster art used as the background of the app link
+for this channel. For an example poster image, see figure 2, callout 1.</li>
+<li>{@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_TEXT} -
+The descriptive link text of the app link for this channel. For an example
+app link description, see the text in figure 2, callout 3.</li>
+</ul>
+
+<img alt="" src="{@docRoot}images/training/tv/tif/app-link-diagram.png"/>
+<p class="img-caption"><strong>Figure 2.</strong> App link details.</p>
+
+<p>If the channel data doesn't specify app link information, the system
+creates a default app link. The system chooses default details as follows:</p>
+
+<ul>
+<li>For the intent URI
+({@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_INTENT_URI}),
+the system uses the {@link android.content.Intent#ACTION_MAIN ACTION_MAIN}
+activity for the {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER
+CATEGORY_LEANBACK_LAUNCHER} category, typically defined in the app manifest.
+If this activity is not defined, a non-functioning app link appears&mdash;if
+the user clicks it, nothing happens.</li>
+<li>For the descriptive text
+({@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_TEXT}), the system
+uses "Open <var>app-name</var>". If no viable app link intent URI is defined,
+the system uses "No link available".</li>
+<li>For the accent color
+({@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_COLOR}),
+the system uses the default app color.</li>
+<li>For the poster image
+({@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_POSTER_ART_URI}),
+the system uses the app's home screen banner. If the app doesn't provide a
+banner, the system uses a default TV app image.</li>
+<li>For the badge icon
+({@link android.media.tv.TvContract.Channels#COLUMN_APP_LINK_ICON_URI}), the
+system uses a badge that shows the app name. If the system is also using the
+app banner or default app image for the poster image, no app badge is shown.
+</li>
+</ul>
+
+<p>You specify app link details for your channels in your app's
+setup activity. You can update these app link details at any point, so
+if an app link needs to match channel changes, update app
+link details and call
+{@link android.content.ContentResolver#update(android.net.Uri,
+android.content.ContentValues, java.lang.String, java.lang.String[])
+ContentResolver.update()} as needed. For more details on updating
+channel data, see <a href="#update">Update Channel Data</a>.
+</p>
+
+
+
diff --git a/docs/html/wear/_project.yaml b/docs/html/wear/_project.yaml
new file mode 100644
index 0000000..2a94274
--- /dev/null
+++ b/docs/html/wear/_project.yaml
@@ -0,0 +1,5 @@
+name: "Wear"
+home_url: /wear/
+description: "Small, powerful devices, worn on the body. Useful information when you need it most."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/wear/preview/_book.yaml b/docs/html/wear/preview/_book.yaml
index a4acad0..a231fb5 100644
--- a/docs/html/wear/preview/_book.yaml
+++ b/docs/html/wear/preview/_book.yaml
@@ -18,6 +18,8 @@
     path: /wear/preview/features/ui-nav-actions.html
   - title: Bridging for Notifications
     path: /wear/preview/features/bridger.html
+  - title: Wrist Gestures
+    path: /wear/preview/features/gestures.html
 
 - title: Get Started
   path: /wear/preview/start.html
@@ -28,5 +30,8 @@
 - title: License Agreement
   path: /wear/preview/license.html
 
+- title: Behavior Changes
+  path: /wear/preview/behavior-changes.html
+
 - title: Support and Release Notes
   path: /wear/preview/support.html
diff --git a/docs/html/wear/preview/api-overview.jd b/docs/html/wear/preview/api-overview.jd
index 11331a7..4233624 100644
--- a/docs/html/wear/preview/api-overview.jd
+++ b/docs/html/wear/preview/api-overview.jd
@@ -25,6 +25,7 @@
             <li><a href="#remote-input">Remote Input</a></li>
             <li><a href="#bridging">Bridging Mode</a></li>
             <li><a href="#imf">Input Method Framework</a></li>
+            <li><a href="#wrist-gestures">Wrist Gestures</a></li>
           </ol>
         </li>
 
@@ -79,12 +80,11 @@
   watch face using the API.
 </p>
 
-<p>For examples of how to use this feature,
+<p>For information about this API,
 see <a href="{@docRoot}wear/preview/features/complications.html">
  Watch Face Complications</a>.
 </p>
 
-
 <h3 id="drawers">Navigation and Action drawers</h3>
 
 <p>Wear 2.0 introduces two new widgets, navigation drawer and action drawer. These
@@ -233,6 +233,24 @@
 Input Method Framework</a>.
 </p>
 
+<h3 id="wrist-gestures">Wrist Gestures</h3>
+
+<p>
+  Wrist gestures can enable quick, one-handed interactions with your app
+  when use of a touch screen is inconvenient. The following
+  <a href="https://support.google.com/androidwear/answer/6312406">wrist gestures</a>
+  are available for use by apps:
+</p>
+
+<ul>
+  <li>Flick wrist out</li>
+  <li>Flick wrist in</li>
+</ul>
+
+<p>For more information, see
+<a href="{@docRoot}wear/preview/features/gestures.html">
+ Wrist Gestures</a>.
+</p>
 
 <h2 id="stand-alone">Standalone Devices</h2>
 
diff --git a/docs/html/wear/preview/behavior-changes.jd b/docs/html/wear/preview/behavior-changes.jd
new file mode 100644
index 0000000..0214622
--- /dev/null
+++ b/docs/html/wear/preview/behavior-changes.jd
@@ -0,0 +1,63 @@
+page.title=Behavior Changes
+meta.keywords="preview", "wear"
+page.tags="preview", "developer preview"
+
+@jd:body
+
+<p>
+  Along with new features, Android Wear 2.0 includes a variety of behavior
+  changes. This document highlights some of the key changes to
+  account for in your apps.
+</p>
+
+<p>
+  If you have previously published an app for Android Wear, be aware that
+  your app might be affected by these changes in the platform.
+</p>
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+
+<ul>
+  <li><a href="#activity-dismissal">Activity Dismissal</a></li>
+</ul>
+
+</div>
+</div>
+
+<h2 id="activity-dismissal">Activity Dismissal</h2>
+
+<p>
+  Starting in <a href="{@docRoot}wear/preview/index.html">Android Wear 2.0</a>,
+  users dismiss apps and activities by using
+  the power (stem) button on the watch.
+  Long-pressing to dismiss an app is no longer suggested.
+  Additionally, developers should not implement the
+  long-press for dismissing
+  <a href="{@docRoot}training/wearables/ui/exit.html">full screen</a>
+  activities (panning or immersive activities such as Google Maps).
+</p>
+
+<p>
+  In Android Wear 2.0, the power button of the watch is used
+  to navigate back in the
+  <a href="{@docRoot}guide/components/tasks-and-back-stack.html">back stack</a>,
+  including for full-screen panning activities.
+  Before Android Wear 2.0, the <code>DismissOverlayView</code> class was
+  used to implement the long-press for a user to dismiss an app.
+  (The <code>DismissOverlayView</code> class was added to a layout
+  for full-screen drawing and to draw over the other views.)
+  Developers should test the power button for going back
+  between an app's activities and for exiting an app.
+</p>
+
+<p>
+  Additionally, swipe for exiting an app or activity is not available.
+  Developers can consider how their user interfaces
+  can be enhanced with swipe-left and swipe-right,
+  in a way similar to the functionality described for
+  <a href="{@docRoot}wear/preview/features/ui-nav-actions.html">navigation
+  drawers</a>.
+</p>
diff --git a/docs/html/wear/preview/downloads.jd b/docs/html/wear/preview/downloads.jd
index 8689504..4bc401b 100644
--- a/docs/html/wear/preview/downloads.jd
+++ b/docs/html/wear/preview/downloads.jd
@@ -223,8 +223,8 @@
     </p>
 
     <p class="warning">
-      <strong>Warning:</strong> Installing a system image on a watch removes all data from the
-      watch, so you should back up your data first.
+      <strong>Warning:</strong> Installing a system image on a watch removes all
+      data from the watch, so you should back up your data first.
     </p>
 
     <h3 id="preview_system_images">
@@ -233,8 +233,13 @@
 
     <p>
       The preview includes system images for testing your app. Based on your
-      device, you can download a preview system image from the following tables
-      and flash it to the corresponding device.
+      device, you can download a preview system image from one of the
+      following tables and flash it to the corresponding device.
+    </p>
+
+    <p>
+      To restore your device to its original state during the preview,
+      you can flash the appropriate retail system image, below, to the device.
     </p>
 
     <h4 id="preview_image_for_lge_watch_urbane_2nd_edition">
@@ -261,9 +266,9 @@
         <td>
           Preview image for testing
         </td>
-        <td><a href="#top" onclick="onDownload(this)">nemo-nvd36i-factory-9cdd2ac0.tgz</a><br>
-          MD5: b33ba8e59780fbe5c83d8936b108640f<br>
-          SHA-1: 9cdd2ac01f2976cafe5a21958298dac159b7a325
+        <td><a href="#top" onclick="onDownload(this)">nemo-nvd83h-factory-48ac950c.tgz</a><br>
+          MD5: dd351884cce9fb5bf1bdec0a8e5f56e3<br>
+          SHA-1: 48ac950c48faef96a7770e3c1acb56d23a28d859
         </td>
       </tr>
 
@@ -302,9 +307,9 @@
         <td>
           Preview image for testing
         </td>
-        <td><a href="#top" onclick="onDownload(this)">sturgeon-nvd36i-factory-2cbe5080.tgz</a><br>
-          MD5: ccc972cdc33cba778a2f624066ef5713<br>
-          SHA-1: 2cbe5080ded060ce43ba65ff27e2290b28981634
+        <td><a href="#top" onclick="onDownload(this)">sturgeon-nvd83h-factory-cb5a11ab.tgz</a><br>
+          MD5: 38c1047992b1d28f6833d9f6c8470cdc<br>
+          SHA-1: cb5a11ab0260ea3ca7da5894e73e41f70357da6b
         </td>
       </tr>
       <tr id="sturgeon-non-preview">
diff --git a/docs/html/wear/preview/features/gestures.jd b/docs/html/wear/preview/features/gestures.jd
new file mode 100644
index 0000000..7806c4e
--- /dev/null
+++ b/docs/html/wear/preview/features/gestures.jd
@@ -0,0 +1,323 @@
+page.title=Wrist Gestures
+meta.keywords="wear-preview"
+page.tags="wear-preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+
+  <ul>
+    <li><a href="#using_wlv">Using a WearableListView</a></li>
+    <li><a href="#using_key_events">Using Key Events Directly</a></li>
+    <li><a href="#best_practices">Best Practices</a></li>
+  </ul>
+
+</div>
+</div>
+
+    <p>
+      Wrist gestures can enable quick, one-handed interactions with your app
+      when use of a touch screen is inconvenient. For example, a user can scroll
+      through notifications with one hand while holding a cup of water with the
+      other. Other examples of using wrist gestures when a touch screen would
+      be inconvenient include:
+    </p>
+
+    <ul>
+      <li>In an app for jogging, navigating through vertical screens that show
+      the steps taken, time elapsed, and current pace
+      </li>
+
+      <li>At the airport with luggage, scrolling through flight and gate
+      information
+      </li>
+
+      <li>Scrolling through news articles
+      </li>
+    </ul>
+
+    <p>
+      To review the wrist gestures on your watch, first confirm gestures are
+      turned on by selecting <strong>Settings &gt; Gestures &gt; Wrist Gestures
+      On</strong>. (Wrist gestures are on by default.) Then complete the
+      Gestures tutorial on the watch (<strong>Settings &gt; Gestures &gt;
+      Launch Tutorial</strong>).
+    </p>
+
+    <p>
+      The following gestures from the <a href=
+      "https://support.google.com/androidwear/answer/6312406">Android Wear
+      Help</a> are unavailable to apps:
+    </p>
+
+    <ul>
+      <li>Push wrist down
+      </li>
+
+      <li>Raise wrist up
+      </li>
+
+      <li>Shaking the wrist
+      </li>
+    </ul>
+
+    <p>
+      Wrist gestures can be used in these ways:
+    </p>
+
+    <ul>
+      <li>
+        <a href="#using_wlv">Using a WearableListView</a>, which
+        has predefined gesture actions
+      </li>
+
+      <li>
+        <a href="#using_key_events">Using key events directly</a> to
+        define new user actions
+      </li>
+    </ul>
+
+    <p>
+      Each wrist gesture is mapped to an <code>int</code> constant from the
+      <code><a href=
+      "{@docRoot}reference/android/view/KeyEvent.html">KeyEvent</a></code>
+      class, as shown in the following table:
+    </p>
+
+    <table>
+      <tr>
+        <th>
+          Gesture
+        </th>
+        <th>
+          KeyEvent
+        </th>
+        <th>
+          Description
+        </th>
+      </tr>
+
+      <tr>
+        <td>
+          Flick wrist out
+        </td>
+        <td>
+          <a href=
+          "{@docRoot}reference/android/view/KeyEvent.html#KEYCODE_NAVIGATE_NEXT">
+          KEYCODE_NAVIGATE_NEXT</a>
+        </td>
+        <td>
+          This key code goes to the next item.
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Flick wrist in
+        </td>
+        <td>
+          <a href=
+          "{@docRoot}reference/android/view/KeyEvent.html#KEYCODE_NAVIGATE_PREVIOUS">
+          KEYCODE_NAVIGATE_PREVIOUS</a>
+        </td>
+        <td>
+          This key code goes to the previous item.
+        </td>
+      </tr>
+    </table>
+
+    <h2 id="using_wlv">
+      Using a WearableListView
+    </h2>
+
+    <p>
+      A <code><a href=
+      "{@docRoot}reference/android/support/wearable/view/WearableListView.html">
+      WearableListView</a></code> has predefined actions for occurrences of
+      wrist gestures when the View has the focus. For more information, see
+      <a href="#best_practices">Best Practices</a>. For information about using
+      <code>WearableListView</code>, see <a href=
+      "{@docRoot}training/wearables/ui/lists.html">Creating
+      Lists</a>.
+    </p>
+
+    <p>
+      Even if you use a <code>WearableListView</code>, you may want to use
+      constants from the <code><a href=
+      "{@docRoot}reference/android/view/KeyEvent.html">KeyEvent</a></code>
+      class. The predefined actions can be overridden by subclassing the
+      <code>WearableListView</code> and re-implementing the
+      <code>onKeyDown()</code> callback. The behavior can be disabled entirely
+      by using <code>setEnableGestureNavigation(false)</code>. Also see
+      <a href="{@docRoot}training/keyboard-input/commands.html">
+      Handling Keyboard Actions</a>.
+    </p>
+
+    <h2 id="using_key_events">
+      Using Key Events Directly
+    </h2>
+
+    <p>
+      You can use key events outside of a <code><a href=
+      "{@docRoot}reference/android/support/wearable/view/WearableListView.html">
+      WearableListView</a></code> to trigger new actions in response to gesture
+      events. Importantly, these gesture events:
+    </p>
+
+    <ul>
+      <li>Are recognized when a device is in Active mode
+      </li>
+
+      <li>Are delivered in the same way as all key events
+      </li>
+    </ul>
+
+    <p>
+      Specifically, these events are delivered to the top Activity, to the View
+      with keyboard focus. Just as any other key event, a class that relates to
+      user interaction (such as a View or an Activity) that implements
+      <code><a href=
+      "{@docRoot}reference/android/view/KeyEvent.Callback.html">
+      KeyEvent.Callback</a></code> can listen to key events that relate to
+      wrist gestures. The Android framework calls the View or Activity that has
+      the focus with the key events; for gestures, the <code>onKeyDown()</code>
+      method callback is called when gestures occur.
+    </p>
+
+    <p>
+      As an example, an app may override predefined actions in a View or
+      Activity (both implementing <code>KeyEvent.Callback</code>) as follows:
+    </p>
+
+    <pre>
+public final class GesturesActivity extends Activity {
+
+ &#64;Override /* KeyEvent.Callback */
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+  switch (keyCode) {
+   case KeyEvent.KEYCODE_NAVIGATE_NEXT:
+    // Do something that advances a user View to the next item in an ordered list.
+    return moveToNextItem();
+   case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS:
+    // Do something that advances a user View to the previous item in an ordered list.
+    return moveToPreviousItem();
+  }
+  // If you did not handle it, let it be handled by the next possible element as deemed by the Activity.
+  return super.onKeyDown(keyCode, event);
+ }
+
+ /** Shows the next item in the custom list. */
+ private boolean moveToNextItem() {
+  boolean handled = false;
+  …
+  // Return true if handled successfully, otherwise return false.
+  return handled;
+ }
+
+ /** Shows the previous item in the custom list. */
+ private boolean moveToPreviousItem() {
+  boolean handled = false;
+  …
+  // Return true if handled successfully, otherwise return false.
+  return handled;
+ }
+}
+</pre>
+
+    <h2 id="best_practices">
+      Best Practices
+    </h2>
+
+    <ul>
+      <li>Review the <code><a href=
+      "{@docRoot}reference/android/view/KeyEvent.html">KeyEvent</a></code>
+      and <code><a href=
+      "{@docRoot}reference/android/view/KeyEvent.Callback.html">
+        KeyEvent.Callback</a></code> pages for the delivery of key events to
+        your View and Activity.
+      </li>
+
+      <li>Keep a consistent directional affordance:
+        <ul>
+          <li>Use "Flick wrist out" for next, "Flick wrist in" for previous
+          </li>
+        </ul>
+      </li>
+
+      <li>Have a touch parallel for a gesture.
+      </li>
+
+      <li>Provide visual feedback.
+      </li>
+
+      <li>Don't use a keycode to implement functionality that would be
+      counter-intuitive to the rest of the system. For example, do not use
+      <code>KEYCODE_NAVIGATE_NEXT</code> to cancel an action or to navigate the
+      left-right axis with flicks.
+      </li>
+
+      <li>Don't intercept the key events on elements that are not part of the
+      user interface, for example the Views that are offscreen or partially
+      covered. This is the same as any other key event.
+      </li>
+
+      <li>Don't reinterpret repeated flick gestures into your own, new gesture.
+      It may conflict with the system's "Shaking the wrist" gesture.
+      </li>
+
+      <li>For a View to receive gesture key events, it must have <a href=
+      "{@docRoot}reference/android/view/View.html#attr_android:focusable">
+        focus</a>; see <a href=
+        "{@docRoot}reference/android/view/View.html#setFocusable(boolean)">
+        View::setFocusable()</a>. Because gestures are treated as key events,
+        they trigger a transition out of "Touch mode" that may do unexpected
+        things. Therefore, since users may alternate between using touch and
+        gestures, the <a href=
+        "{@docRoot}reference/android/view/View.html#setFocusableInTouchMode(boolean)">
+        View::setFocusableInTouchmode()</a> method may be necessary. In some
+        cases, it also may be necessary to use
+        <code>setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS)</code> so
+        that when focus changes after a change to or from "Touch mode," your
+        intended View gets the focus.
+      </li>
+
+      <li>Use <code>requestFocus()</code> and <code>clearFocus()</code>
+      carefully:
+        <ul>
+          <li>When calling <code><a href=
+          "{@docRoot}reference/android/view/View.html#requestFocus()">
+            requestFocus()</a></code>, be sure that the View really should have
+            focus. If the View is offscreen, or is covered by another View,
+            surprises can occur when gestures trigger callbacks.
+          </li>
+
+          <li>The <code><a href=
+          "{@docRoot}reference/android/view/View.html#clearFocus()">
+            clearFocus()</a></code> initiates a focus search to find another
+            suitable View. Depending on the View hierarchy, this search might
+            require non-trivial computation. It can also end up assigning focus
+            to a View you don’t expect to receive focus.
+          </li>
+        </ul>
+      </li>
+
+      <li>Key events are delivered first to the View with focus in the View
+      hierarchy. If the focused View does not handle the event (i.e., returns
+      <code>false</code>), the event is not delivered to the parent View, even
+      if it can receive focus and has a <a href=
+      "{@docRoot}reference/android/text/method/KeyListener.html">
+        KeyListener</a>. Rather, the event is delivered to the current Activity
+        holding the View hierarchy with focus. Thus, it may be necessary to
+        catch all events at the higher level and then pass relevant codes down.
+        Alternatively, you might subclass the Activity and override the
+        <code><a href=
+        "{@docRoot}reference/android/app/Activity.html#dispatchKeyEvent(android.view.KeyEvent)">
+        dispatchKeyEvent(KeyEvent event)</a></code> method to ensure that keys
+        are intercepted when necessary, or are handled when not handled at
+        lower layers.
+      </li>
+    </ul>
diff --git a/docs/html/wear/preview/features/ime.jd b/docs/html/wear/preview/features/ime.jd
index 1301be9..b07736f 100644
--- a/docs/html/wear/preview/features/ime.jd
+++ b/docs/html/wear/preview/features/ime.jd
@@ -19,14 +19,14 @@
 </div>
 
 
-<p>Wear 2.0 supports input methods beyond voice by extending the Android 
+<p>Wear 2.0 supports input methods beyond voice by extending the Android
 Input Method Framework (IMF) to Android Wear. IMF allows for virtual, on-screen
- keyboards and other input methods to be used for text entry. The IMF APIs used 
- for Wear devices are the same as other form factors, though usage is slightly 
+ keyboards and other input methods to be used for text entry. The IMF APIs used
+ for Wear devices are the same as other form factors, though usage is slightly
  different due to limited screen real estate.</p>
 
-<p>Wear 2.0 comes with the system default Input Method Editor (IME) 
-and opens up the IMF APIs for third-party developers to create custom input 
+<p>Wear 2.0 comes with the system default Input Method Editor (IME)
+and opens up the IMF APIs for third-party developers to create custom input
 methods for Wear.</p>
 
 <p><img src="{@docRoot}wear/preview/images/new_input_methods.png"></p>
@@ -46,17 +46,17 @@
 
 
 <h2 id="invoking">Invoking an Input Method</h2>
-If you are developing an IME for Wear, remember that the 
-feature is supported only on Android 6.0 (API level 23) and higher versions of 
-the platform. 
-To ensure that your IME can only be installed on Wearables that support input 
+If you are developing an IME for Wear, remember that the
+feature is supported only on Android 6.0 (API level 23) and higher versions of
+the platform.
+To ensure that your IME can only be installed on Wearables that support input
 methods beyond voice, add the following to your app's manifest:
 <pre>
 &lt;uses-sdk android:minSdkVersion="23" />
 </pre>
-This indicates that your app requires Android 6.0 or higher. 
+This indicates that your app requires Android 6.0 or higher.
 For more information, see <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a>
- and the documentation for the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk></a> 
+ and the documentation for the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk></a>
 element.
 <p>
 To control how your app is filtered from devices that do not support Wear
@@ -67,14 +67,14 @@
 </pre>
 
 <p>Wear provides user settings on the watch that lets the user to enable multiple
- IMEs from the list of installed IMEs. Once the users enable your IME, they 
+ IMEs from the list of installed IMEs. Once the users enable your IME, they
  can invoke your IME from:</p>
 <ul>
-<li>A notification or an app using the 
+<li>A notification or an app using the
 <a href="{@docRoot}reference/android/support/v4/app/RemoteInput.html">RemoteInput</a></code> API.</li>
-<li>Wear apps with an 
+<li>Wear apps with an
 <a href="{@docRoot}reference/android/widget/EditText.html">EditText</a>
- field. Touching a text field places the cursor in the field and automatically 
+ field. Touching a text field places the cursor in the field and automatically
  displays the IME on focus.</li>
 </ul>
 
@@ -86,10 +86,10 @@
 <ul>
 <li><strong>Set Default Action</strong>
 <p>
-<a href="http://developer.android.com/reference/android/support/v4/app/RemoteInput.html">{@code RemoteInput}</a> 
+<a href="http://developer.android.com/reference/android/support/v4/app/RemoteInput.html">{@code RemoteInput}</a>
 and Wear apps expect only single-line text entry. The ENTER key should always trigger
  a call to <a href="{@docRoot}reference/android/inputmethodservice/InputMethodService.html#sendDefaultEditorAction(boolean)">sendDefaultEditorAction</a>,
-  which causes the app to dismiss the keyboard and continue on to the next step 
+  which causes the app to dismiss the keyboard and continue on to the next step
   or action.</p>
 </li>
 
@@ -97,22 +97,22 @@
 <p>
 Input methods on Wear consume most of the screen, leaving very little of the
  app visible; using full-screen mode ensures an optimal user experience regardless
-  of the app UI.  In full-screen mode, an 
+  of the app UI.  In full-screen mode, an
   <a href="{@docRoot}reference/android/view/inputmethod/ExtractedText.html">{@code ExtractEditText}</a> provides a mirrored
    view of the text field being edited and can be styled to blend with the rest of
-    the input method UI. For more details on full-screen mode, see 
+    the input method UI. For more details on full-screen mode, see
     <a href="{@docRoot}reference/android/inputmethodservice/InputMethodService.html">InputMethodService</a>.
 </p>
 </li>
 
 <li><strong>Handle InputType flags</strong>
 <p>
-For privacy reasons, at a minimum you should handle the {@code InputType} 
-flag {@code TYPE_TEXT_VARIATION_PASSWORD} in your IME. When your IME is in 
-password mode, make sure that your keyboard is optimized for single key press 
-(auto spelling correction, auto completion and gesture input are disabled). 
-Most importantly, keyboard in password mode should support ASCII symbols 
-regardless of the input language.  For more details, see 
+For privacy reasons, at a minimum you should handle the {@code InputType}
+flag {@code TYPE_TEXT_VARIATION_PASSWORD} in your IME. When your IME is in
+password mode, make sure that your keyboard is optimized for single key press
+(auto spelling correction, auto completion and gesture input are disabled).
+Most importantly, keyboard in password mode should support ASCII symbols
+regardless of the input language.  For more details, see
 <a href="{@docRoot}training/keyboard-input/style.html">Specifying The Input Method Type</a>.
 </p>
 </li>
@@ -120,9 +120,9 @@
 <li><strong>Provide a key for switching to the next input method</strong>
 <p>
 Android allows users to easily switch between all IMEs supported by the platform.
- In your IME implementation, set the boolean 
+ In your IME implementation, set the boolean
  <a href="{@docRoot}guide/topics/text/creating-input-method.html#Switching">supportsSwitchingToNextInputMethod = true</a>
- to enable your IME to support the switching mechanism 
+ to enable your IME to support the switching mechanism
  (so that apps can switch to the next platform-supported IME).
 </p>
 </li>
diff --git a/docs/html/wear/preview/features/notifications.jd b/docs/html/wear/preview/features/notifications.jd
index c84a470..dcc0970 100644
--- a/docs/html/wear/preview/features/notifications.jd
+++ b/docs/html/wear/preview/features/notifications.jd
@@ -155,7 +155,7 @@
 <p>If you have a chat messaging app, your notifications should use
 <a href="{@docRoot}preview/features/notification-updates.html#style">{@code Notification.MessagingStyle}</a>,
  which is new in Android N. Wear 2.0 uses the chat messages included
-  in a <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notification 
+  in a <a href="{@docRoot}preview/features/notification-updates.html#style">{@code MessagingStyle}</a> notification
 
   (see <a href="{@docRoot}preview/features/notification-updates.html#style">{@code addMessage()}</a>) to provide
   a rich chat app-like experience in the expanded notification.
@@ -195,7 +195,7 @@
   <li>Use <a href="{@docRoot}preview/features/notification-updates.html#style">{@code Notification.MessagingStyle}</a>.
   </li>
   <li>Call the method {@code setAllowGeneratedReplies()} for the notification action.
-  For more information, see the downloadable 
+  For more information, see the downloadable
   <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API reference</a>.
   </li>
   <li>Ensure that the notification action has a
diff --git a/docs/html/wear/preview/features/ui-nav-actions.jd b/docs/html/wear/preview/features/ui-nav-actions.jd
index 1ba275f..fb14264 100644
--- a/docs/html/wear/preview/features/ui-nav-actions.jd
+++ b/docs/html/wear/preview/features/ui-nav-actions.jd
@@ -12,7 +12,7 @@
     <ol>
       <li><a href="#create a drawer">Create a Drawer Layout</a></li>
       <li><a href="#initialize">Initialize the Drawer List</a></li>
-      <li><a href="#creating">Create a Custom View Drawer</a></li>
+      <li><a href="#creating">Create a Custom Drawer View</a></li>
       <li><a href="#listen to events">Listen for Drawer Events</a></li>
       <li><a href=#peeking">Peeking Drawers</a></li>
     </ol>
@@ -37,8 +37,8 @@
 </div>
 </div>
 <p>As part of the <a href="http://www.google.com/design/spec-wear">Material Design</a>
- for Android Wear, Wear 2.0 adds interactive navigation and action drawers. 
- The navigation drawer appears at the top of the screen and lets users jump to 
+ for Android Wear, Wear 2.0 adds interactive navigation and action drawers.
+ The navigation drawer appears at the top of the screen and lets users jump to
  different views within
 the app, similar to the navigation drawer on a phone. The action drawer appears
 at the bottom of the screen and provides context-specific actions for the user,
@@ -59,7 +59,8 @@
 <div class="cols">
 
 <p>This lesson describes how to implement action and navigation drawers in your
-app using the {@code WearableDrawerLayout} APIs.
+app using the {@code WearableDrawerLayout} APIs. For more information, see the
+downloadable <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API reference</a>.
 </p>
 
 <h2 id="create a drawer">Create a Drawer Layout</h2>
@@ -99,41 +100,44 @@
 &lt;/android.support.wearable.view.drawer.WearableDrawerLayout>
 
 </pre>
+
 <h2 id="initialize">Initialize the Drawer List</h2>
 <p>One of the first things you need to do in your activity is to initialize the
 drawers list of items. You should implement {@code WearableNavigationDrawerAdapter}
 to populate the navigation drawer contents. To populate the action drawer with
-a list of actions, inflate an XML file into the Menu (via MenuInflater).</p>
+a list of actions, inflate an XML file into the Menu (via {@code MenuInflater}).
+</p>
 
 <p>The following code snippet shows how to initialize the contents of your drawers:
 </p>
+
 <pre>
 public class MainActivity extends  WearableActivity implements
 WearableActionDrawer.OnMenuItemClickListener{
     private WearableDrawerLayout mwearableDrawerLayout;
     private WearableNavigationDrawer mWearableNavigationDrawer;
     private WearableActionDrawer mWearableActionDrawer;
-    
+
     ...
-    
+
     &#64;Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
-        
+
         ......
-        
-        
+
+
         // Main Wearable Drawer Layout that wraps all content
         mWearableDrawerLayout = (WearableDrawerLayout) findViewById(R.id.drawer_layout);
-        
+
         // Top Navigation Drawer
         mWearableNavigationDrawer = (WearableNavigationDrawer) findViewById(R.id.top_navigation_drawer);
         mWearableNavigationDrawer.setAdapter(new YourImplementationNavigationAdapter(this));
 
         // Peeks Navigation drawer on the top.
         mWearableDrawerLayout.peekDrawer(Gravity.TOP);
-        
+
         // Bottom Action Drawer
         mWearableActionDrawer = (WearableActionDrawer) findViewById(R.id.bottom_action_drawer);
 
@@ -149,44 +153,58 @@
 }
 
 </pre>
-<h2 id="creating">Create a Custom View Drawer</h2>
 
-<p>To use custom views in drawers,  add  <code>WearableDrawerView</code> to  the
-<code>WearableDrawerLayout</code>. To set the contents of the drawer, call <code>
-<a href="https://x20web.corp.google.com/~psoulos/docs/reference/android/support/wearable/view/drawer/WearableDrawerView.html#setDrawerContent(android.view.View)">setDrawerContent(View)</a></code>
- instead of manually adding the view to the hierarchy. You must also specify the
-  drawer position with the <code>android:layout_gravity</code> attribute. </p>
-<p> The following example specifies a top drawer:</p>
+<h2 id="creating">Create a Custom Drawer View</h2>
+
+<p>To use custom views in drawers, add <code>WearableDrawerView</code> to the
+<code>WearableDrawerLayout</code>. To set the peek view and drawer contents, add
+ them as children of the {@code WearableDrawerView} and specify their IDs in the
+ {@code peek_view} and {@code drawer_content} attributes respectively. You must
+ also specify the drawer position with the {@code android:layout_gravity}
+ attribute. </p>
+
+<p> The following example specifies a top drawer with peek view and drawer
+contents:</p>
+
 <pre>
-&lt;android.support.wearable.view.drawer.WearableDrawerLayout&gt;
-    &lt;FrameLayout 
-    android:id=”@+id/content” /&gt;
-
-    &lt;WearableDrawerView
-        android:layout_width=”match_parent”
-        andndroid:layout_height=”match_parent”
-        android:layout_gravity=”top”&gt;
-        &lt;FrameLayout 
-            android:id=”@+id/top_drawer_content” /&gt;
-    &lt;/WearableDrawerView&gt;
-&lt;/android.support.wearable.view.drawer.WearableDrawerView&gt;
+   &lt;android.support.wearable.view.drawer.WearableDrawerView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_gravity="top"
+        android:background="@color/red"
+        app:drawer_content="@+id/drawer_content"
+        app:peek_view="@+id/peek_view">
+        &lt;FrameLayout
+            android:id="@id/drawer_content"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+            &lt;!-- Drawer content goes here.  -->
+        &lt;/FrameLayout>
+        &lt;LinearLayout
+            android:id="@id/peek_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:orientation="horizontal">
+            &lt;!-- Peek view content goes here.  -->
+        &lt;LinearLayout>
+    &lt;/android.support.wearable.view.drawer.WearableDrawerView>
 
 </pre>
 
 <h2 id="listen to events">Listen for Drawer Events</h2>
-<p>To listen for drawer events, call {@code setDrawerStateCallback()}on your
+<p>To listen for drawer events, call {@code setDrawerStateCallback()} on your
 {@code WearableDrawerLayout} and pass it an implementation of
 {@code WearableDrawerLayout.DrawerStateCallback}. This interface provides callbacks
  for drawer events such as <code>onDrawerOpened()</code>,
  <code>onDrawerClosed(),</code> and <code>onDrawerStatechanged()</code>.</p>
 
 <h2 id="peeking">Peeking Drawers</h2>
-<p>To  set the drawers to temporarily appear, call  <code>peekDrawer()</code> on
+<p>To set the drawers to temporarily appear, call <code>peekDrawer()</code> on
 your {@code WearableDrawerLayout} and pass it the {@code Gravity} of the drawer.
  This feature is especially useful because it allows immediate access to the
- alternate drawer views or actions associated with it. </p>
+ alternate drawer views or actions associated with it: </p>
 
-<pre>{@code mWearableDrawerLayout.peekDrawer</code>(<code>Gravity.BOTTOM);}</pre>
+<pre>{@code mWearableDrawerLayout.peekDrawer(Gravity.BOTTOM);}</pre>
 
-<p>You can also call {@code setPeekContent()} on your drawer to display a custom
- view when the drawer is peeking.</p>
+
diff --git a/docs/html/wear/preview/program.jd b/docs/html/wear/preview/program.jd
index a130663..e2bf92f 100644
--- a/docs/html/wear/preview/program.jd
+++ b/docs/html/wear/preview/program.jd
@@ -79,6 +79,11 @@
           </div>
 
           <div class="col-4of12">
+            <h5>
+            </h5>
+
+            <p>
+            </p>
           </div>
         </div>
       </div>
@@ -90,7 +95,7 @@
 
     <p>
       The Android Wear 2.0 Developer Preview runs from 18 May 2016 until the
-      final Android Wear public release to OEMs, planned for Q4 2016.
+      final Android Wear public release to OEMs.
     </p>
 
     <p>
@@ -136,7 +141,7 @@
     </p>
 
     <p>
-      At milestones 4 and 5 you'll have access to the final Android Wear 2.0
+      At milestone 4, you'll have access to the final Android Wear 2.0
       APIs and SDK to develop with, as well as near-final system images to test
       system behaviors and features. Android Wear 2.0 will use the Android N
       API level at this time. You can begin final compatibility testing of your
@@ -196,9 +201,9 @@
     </h3>
 
     <p>
-      You can download these hardware system images at <a href=
+      You can download these hardware system images from the <a href=
       "{@docRoot}wear/preview/downloads.html">Download and Test with a
-      Device</a>:
+      Device</a> page:
     </p>
 
     <ul>
@@ -210,7 +215,15 @@
     </ul>
 
     <p>
-     Please keep in mind that the Developer Preview system images
+     To restore your device to its
+     original state during the preview, you can flash the
+     appropriate retail system image from
+     the <a href="{@docRoot}wear/preview/downloads.html">Download and
+     Test with a Device</a> page.
+    </p>
+
+    <p>
+     Please keep in mind that the preview system images
      are for app developers only, and for compatibility testing and
      early development only, and are not ready for day-to-day use.
     </p>
diff --git a/docs/html/wear/preview/start.jd b/docs/html/wear/preview/start.jd
index 65d4b56..8fccdc8 100644
--- a/docs/html/wear/preview/start.jd
+++ b/docs/html/wear/preview/start.jd
@@ -107,10 +107,10 @@
 
       <tr>
         <td>
-          <a href="http://storage.googleapis.com/androiddevelopers/shareables/wear-preview/wearable-support-preview-1-docs.zip">wearable-support-preview-1-docs.zip</a>
+          <a href="http://storage.googleapis.com/androiddevelopers/shareables/wear-preview/wearable-support-preview-2-docs.zip">wearable-support-preview-2-docs.zip</a>
         </td>
-        <td>MD5: 02f9dc7714c00076b323c9081655c3b2<br>
-            SHA-1: 075f3821ee9b66a919a0e8086f79c12bc9576fb2
+        <td>MD5: afb770c9c5c0431bbcbdde186f1eae06<br>
+            SHA-1: 81d681e61cee01f222ea82e83297d23c4e55b8f3
         </td>
       </tr>
     </table>
@@ -146,16 +146,26 @@
       plugin.
       </li>
 
-      <li>In the <code>build.gradle</code> file for the Wear module, in the
-      <code>dependencies</code> section, update the existing reference to the
+      <li>In the <code>build.gradle</code> file for the Wear module:
+      <ul>
+        <li>In the <code>android</code> section, update the
+        <code>compileSdkVersion</code> to 24.
+        </li>
+
+        <li>In the <code>android</code> section, update the
+        <code>targetSdkVersion</code> to 24.
+        </li>
+
+        <li>In the <code>dependencies</code> section, update
+      the existing reference to the
       Wearable Support Library (for example, <code>compile
       'com.google.android.support:wearable:1.4.0'</code>) by changing it to the
       following, which requires that your the Google Repository <a href=
       "#install_android_studio_and_the_latest_packages">is the latest
       version</a>:
-      <pre>
-compile 'com.google.android.support:wearable:2.0.0-alpha1'
-      </pre>
+      <code>compile 'com.google.android.support:wearable:2.0.0-alpha2'</code>
+        </li>
+      </ul>
       </li>
 
       <li>See the following page for setting up a watch or emulator with a
@@ -190,13 +200,24 @@
       wizard.
       </li>
 
-      <li>In the <code>build.gradle</code> file for the Wear module, in the
-      <code>dependencies</code> section, update the existing reference to the
-      Wearable Support Library (perhaps <code>compile
-      'com.google.android.support:wearable:1.4.0'</code>) to:
-      <pre>
-compile 'com.google.android.support:wearable:2.0.0-alpha1'
-      </pre>
+      <li>In the <code>build.gradle</code> file for the Wear module:
+      <ul>
+        <li>In the <code>android</code> section, update the
+        <code>compileSdkVersion</code> to 24.
+        </li>
+        <li>In the <code>android</code> section, update the
+        <code>targetSdkVersion</code> to 24.
+        </li>
+        <li>In the <code>dependencies</code> section, update
+      the existing reference to the
+      Wearable Support Library (for example, <code>compile
+      'com.google.android.support:wearable:1.4.0'</code>) by changing it to the
+      following, which requires that your the Google Repository <a href=
+      "#install_android_studio_and_the_latest_packages">is the latest
+      version</a>:
+      <code>compile 'com.google.android.support:wearable:2.0.0-alpha2'</code>
+        </li>
+      </ul>
       </li>
 
       <li>See the following page for setting up a watch or emulator with a
diff --git a/docs/html/wear/preview/support.jd b/docs/html/wear/preview/support.jd
index d03edf31..78b4e4b 100644
--- a/docs/html/wear/preview/support.jd
+++ b/docs/html/wear/preview/support.jd
@@ -16,7 +16,262 @@
   Wear Developer Google+ community</a>.
 </p>
 
-<h2 id="dp">Developer Preview 1</h2>
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+
+<ul>
+  <li><a href="#general">General Advisories</a></li>
+  <li><a href="#deprecations">Deprecations</a></li>
+  <li><a href="#dp2">Developer Preview 2</a></li>
+  <li><a href="#dp1">Developer Preview 1</a></li>
+</ul>
+
+</div>
+</div>
+
+<h2 id="general">General Advisories</h2>
+
+<p>
+  The developer preview is for <strong>app developers and other early
+  adopters</strong> and is available for daily use, development, or
+  compatibility testing. Please be aware of these general notes about the
+  release:
+</p>
+
+<ul>
+  <li>The developer preview may have various <strong>stability issues</strong> on
+    supported devices. Users may encounter system instability, such as kernel
+    panics and crashes.
+  </li>
+  <li>Some apps <strong>may not function as expected</strong> on the new
+  platform version. This includes Google’s apps and other apps.
+  </li>
+</ul>
+
+<h2 id="deprecations">Deprecations</h2>
+
+<p>The following fields are deprecated in the preview:</p>
+
+<ul>
+  <li>The <code>Notification.WearableExtender#setCustomSizePreset(int)</code>
+  method no longer accepts <code>SIZE_FULL_SCREEN</code> and this value is now
+  undefined.
+  </li>
+  <li>The <code>Notification.WearableExtender#setContentIcon(int)</code> method
+  is deprecated.
+  </li>
+</ul>
+
+<h2 id="dp2">Developer Preview 2</h2>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-6of12">
+      <p><em>Date: July 2016<br />
+      Builds: Wearable Support 2.0.0-alpha2, NVD83H<br/>
+      Emulator support: x86 & ARM (32-bit)<br/>
+      </em></p>
+    </div>
+  </div>
+</div>
+
+<h3 id="new-in-fdp2">
+  <strong>New in Preview 2</strong>
+</h3>
+
+<h4 id="platform-version-24">
+  Platform API Version
+</h4>
+
+<p>
+  The Android Platform API version is incremented to 24 to match Android Nougat.
+  You can update the following in your Android Wear 2.0 Preview project
+  to <strong>24</strong>:
+</p>
+
+<ul>
+  <li><code>compileSdkVersion</code></li>
+  <li><code>targetSdkVersion</code></li>
+</ul>
+
+<h4 id="wearable-drawers">
+  Wearable drawers
+</h4>
+
+<p>
+  The following are feature additions for <a href=
+  "{@docRoot}wear/preview/features/ui-nav-actions.html">
+  wearable drawers</a>:
+</p>
+
+<ul>
+  <li>Drawer peeking is now supported in the <code>onCreate()</code> method
+  of your app's activity.
+  </li>
+
+  <li>The automatic drawer peeking behavior is
+  inverted. Now the bottom drawer peeks when the user scrolls down the view
+  and top drawer peeks when the user scrolls to the top of the view
+  (previously scrolling down did not show peek view).
+  </li>
+
+  <li>Two new attributes, <code>peek_view</code> and
+  <code>drawer_content</code>, are added to
+  <code>WearableDrawerView</code> to specify contents of custom drawers and
+  peek view in your XML layout (previously, custom drawer contents were
+  specified only through Java code).
+  </li>
+
+  <li>The Navigation drawer now displays page indicator dots.
+  </li>
+
+  <li>Peek views now close automatically after one second.
+  </li>
+
+  <li>The <code>WearableNavigationDrawer</code> now automatically closes
+  after five seconds or when an item is tapped.
+  </li>
+
+  <li>There is improved drawer handling (size and margins) for devices with chins:
+    <ul>
+      <li>Size: The bottom drawer is slightly smaller when there is a
+      chin.
+      </li>
+      <li>Margins: <code>WearableDrawerLayout</code> sets its bottom margin
+      size equal to the size of the chin, so that the bottom drawer is
+      fully visible.
+      </li>
+    </ul>
+  <li>The navigation drawer contents are now updated when
+        <code><a href="{@docRoot}reference/android/widget/ArrayAdapter.html#notifyDataSetChanged()">
+        notifyDataSetChanged</a></code> is called on the adapter.
+  </li>
+
+    <li>In your <code>WearableActionDrawer</code>, when there is only one
+      action, its icon is shown in the peek view and the action is executed
+      when the peek view is tapped.
+    </li>
+
+    <li>When the peek view of your <code>WearableActionDrawer</code> has
+      more than one action, both the first action and the overflow icons are
+      shown.
+    </li>
+</ul>
+
+<h4 id="gestures">
+  Wrist gestures
+</h4>
+
+<p>
+  Wrist gestures can enable quick, one-handed interactions with your app.
+  For example, a user can
+  scroll through notifications with one hand while holding a cup of water
+  with the other. For more information, see <a href=
+  "{@docRoot}wear/preview/features/gestures.html">
+  Wrist Gestures</a>.
+</p>
+
+<h3 id="known-issues-2">
+  <strong>Known Issues</strong>
+</h3>
+
+<h4 id="notifications-2">
+  Notifications
+</h4>
+
+<ul>
+  <li>This preview release does not include support for notification
+  groups.
+  </li>
+
+  <li>The user interface for the action drawer can sometimes have a
+  transparent background.
+  </li>
+
+  <li>The system does not generate Smart Reply responses even if
+  <code>setAllowGeneratedReplies(true)</code> is set.
+  </li>
+</ul>
+
+<h4 id="complications-2">
+  Complications
+</h4>
+
+<ul>
+  <li>When tapping on the music complication on a watch face, Play Music
+  crashes if the Apps launcher provider is used.
+  </li>
+</ul>
+
+<h4 id="system-user-interface-2">
+  System User Interface
+</h4>
+
+<ul>
+  <li>Pressing the hardware button in ambient mode triggers active mode
+  with the app launcher instead of active mode only.
+  </li>
+
+  <li>Double pressing the power hardware button while on the launcher
+  causes the watch screen to turn black.
+  </li>
+
+  <li>Dismissing multiple notifications can cause app to forcibly close.
+  </li>
+
+  <li>Turning screen lock to off (Enable and disable) functionality is not
+  reliable.
+  </li>
+
+  <li>The "Ok Google" detection and voice transcription may not work
+  reliably. Additionally, Search does not retrieve results.
+  </li>
+
+  <li>Tapping Google keyboard English (United States) displays a "Settings
+  under construction" message.
+  </li>
+
+  <li>First calendar event notification must be dismissed in order to show
+  the rest of the event card.
+  </li>
+
+  <li>Unable to turn off the Wi-Fi on a wearable.
+  </li>
+</ul>
+
+<h4 id="companion-app-2">
+  Companion App
+</h4>
+
+<ul>
+  <li>An actions card is shown in the Android Wear companion app, even
+  though there are no actions.
+  </li>
+</ul>
+
+<h4 id="devices-2">
+  Devices
+</h4>
+
+<ul>
+  <li>On the Huawei Watch, selecting the language, followed by multiple
+  acknowledgement dialogues results in a black screen.
+  </li>
+
+  <li>On the LG Watch Urbane 2nd Edition, when answering a call from the watch, the
+  watch does not provide audio from the caller.
+  </li>
+
+  <li>On the LG Watch Urbane 2nd Edition,
+  please do the following to prevent battery drain:
+  Turn on Airplane mode (to disable the cellular radio) and then
+  turn on Bluetooth.
+  </li>
+</ul>
+
+<h2 id="dp1">Developer Preview 1</h2>
 
 <div class="wrap">
   <div class="cols">
@@ -29,36 +284,10 @@
   </div>
 </div>
 
-
-<h3 id="general_advisories">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.
-</p>
-
-<h4 id="deprecations">Deprecations</h4>
-
-
-<p>The following fields are deprecated in the Preview:</p>
-
-<ul>
-  <li>The <code>Notification.WearableExtender#setCustomSizePreset(int)</code>
-  method no longer accepts <code>SIZE_FULL_SCREEN</code> and this value is now
-  undefined.
-  </li>
-
-  <li>The <code>Notification.WearableExtender#setContentIcon(int)</code> method
-  is deprecated.
-  </li>
-</ul>
-
 <h3 id="known_issues">Known Issues</h3>
 
-
 <h4 id="notifications">Notifications</h4>
 
-
 <ul>
   <li>This preview release does not include support for notification groups,
   but will be supported in a future release.
@@ -74,18 +303,17 @@
   </li>
 </ul>
 
-
 <h4 id="complications">Complications</h4>
 
 <ul>
-  <li>Battery information is not synchronized between watch face and drop down
-  quick menu.
+  <li>Battery information is not synchronized between the
+  watch face and the drop-down Quick menu.
   </li>
-  <li>Play music crashes when tapping on music complication in watch face.
+  <li>When tapping on the music complication on a watch face, Play Music
+      crashes if the Apps launcher provider is used.
   </li>
 </ul>
 
-
 <h4 id="system_user_interface">System User Interface</h4>
 
 <ul>
@@ -114,26 +342,24 @@
   </li>
 </ul>
 
-
 <h4 id="companion_app">Companion App</h4>
 
 <ul>
-  <li>'More actions' via Companion app shows a blank screen on phone running
-  nyc-release and watch running feldspar-release.
-  </li>
-  <li>Select watch face on companion wear app will not change watch face on
-  wearable.
-  </li>
+   <li>Selecting a watch face on the companion app will not change the watch face on
+   wearable.</li>
+   <li>An actions card is shown in the Android Wear companion app, even
+   though there are no actions.
+   </li>
 </ul>
 
-
 <h4 id="devices">Devices</h4>
 
 <ul>
   <li>On the Huawei Watch, selecting the language, followed by multiple
   acknowledgement dialogues results in a black screen.
   </li>
-  <li>On the LG Watch Urbane LTE, when answering call from the watch, the watch
+  <li>On the LG Watch Urbane 2nd Edition, when
+  answering a call from the watch, the watch
   does not provide audio from the caller.
   </li>
 </ul>
diff --git a/docs/html/work/_project.yaml b/docs/html/work/_project.yaml
new file mode 100644
index 0000000..9db0466
--- /dev/null
+++ b/docs/html/work/_project.yaml
@@ -0,0 +1,5 @@
+name: "Work"
+home_url: /work/
+description: "Develop apps for Android for Work to take advantage of security and management features built into Android."
+content_license: cc3-apache2
+buganizer_id: 30209417
diff --git a/docs/html/work/cosu.jd b/docs/html/work/cosu.jd
index 8bc54d4..f66006b 100644
--- a/docs/html/work/cosu.jd
+++ b/docs/html/work/cosu.jd
@@ -223,7 +223,7 @@
 </ul>
 
 <p>
-Starting from Marshmallow, if your app is whitelisted by an EMM using {@link 
+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.
@@ -253,15 +253,15 @@
 
 <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()} 
+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}, 
+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:
@@ -289,7 +289,7 @@
 <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}. 
+exit {@link android.R.attr#lockTaskMode}.
 </p>
 
 <h2 id="create-dpc">
@@ -298,7 +298,7 @@
 
 <p>
 To manage applications in COSU, you need a DPC running as device
-owner to set several policies on the device. 
+owner to set several policies on the device.
 </p>
 
 <p class="note">
diff --git a/docs/html/work/device-management-policy.jd b/docs/html/work/device-management-policy.jd
index d564b89..fd09150 100644
--- a/docs/html/work/device-management-policy.jd
+++ b/docs/html/work/device-management-policy.jd
@@ -14,7 +14,7 @@
   <li><a href="#ActivateDeviceAdmin">Activate the Device Administrator</a></li>
   <li><a href="#ImplementDevicePolicyController">Implement the Device Policy Controller</a></li>
 </ol>
-  
+
 <!-- related docs (NOT javadocs) -->
 <h2>You should also read</h2>
 <ul>
diff --git a/docs/html/work/managed-configurations.jd b/docs/html/work/managed-configurations.jd
index dc3ef0d..6de4d8b 100644
--- a/docs/html/work/managed-configurations.jd
+++ b/docs/html/work/managed-configurations.jd
@@ -35,7 +35,10 @@
 </ul>
 
 <p>
-  This guide shows how to implement these configuration settings in your app.
+  This guide shows how to implement managed configuration settings in
+  your app. If you're an EMM developer, refer to the
+  <a href="https://developers.google.com/android/work/build-dpc"
+  >Build a Device Policy Controller</a> guide.
 </p>
 
 <p class="note">
@@ -71,8 +74,8 @@
 
 <ul>
   <li>Declare the managed configurations in your app manifest. Doing
-  so allows the enterprise administrator to read the app's
-  configurations through Google Play APIs.
+    so allows the enterprise administrator to read the app's
+    configurations through Google Play APIs.
   </li>
 
   <li>Whenever the app resumes, use the {@link
@@ -82,11 +85,11 @@
   </li>
 
   <li>Listen for the
-  {@link android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED
-  ACTION_APPLICATION_RESTRICTIONS_CHANGED} intent. When you receive this
-  broadcast, check the {@link android.content.RestrictionsManager} to see what
-  the current managed configurations are, and make any necessary changes to your
-  app's behavior.
+    {@link android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED
+    ACTION_APPLICATION_RESTRICTIONS_CHANGED} intent. When you receive this
+    broadcast, check the {@link android.content.RestrictionsManager} to see what
+    the current managed configurations are, and make any necessary changes to your
+    app's behavior.
   </li>
 </ul>
 
@@ -96,11 +99,11 @@
 
 <p>
   Your app can support any managed configuration you want to define. You declare the
-  app's managed configurations in a <em>managed configurations file</em>, and declare the
-  configurations file in the manifest. Creating a configurations file allows other
-  apps to examine the managed configurations your app provides. Enterprise Mobility
-  Management (EMM) partners can read your app's configurations by using Google
-  Play APIs.
+  app's managed configurations in a <em>managed configurations file</em>, and declare
+  the configurations file in the manifest. Creating a configurations file allows
+  other apps to examine the managed configurations your app provides. Enterprise
+  Mobility Management (EMM) partners can read your app's configurations by using
+  Google Play APIs.
 </p>
 
 <p>
@@ -138,6 +141,14 @@
 </p>
 
 <p>
+  The managed configuration provider can query the app to find details
+  on the app's available configurations, including their description
+  text. The configurations provider and enterprise administrator can
+  change your app's managed configurations at any time, even when the
+  app is not running.
+</p>
+
+<p>
   For example, suppose your app can be remotely configured to allow or forbid
   it to download data over a cellular connection. Your app could have a
   <code>&lt;restriction&gt;</code> element like this:
@@ -145,24 +156,19 @@
 
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;restrictions xmlns:android="http://schemas.android.com/apk/res/android" &gt;
+&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: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;
 </pre>
 
 <p>
-  The supported types for the <code>android:restrictionType</code> element are
-  documented in the reference for {@link android.content.RestrictionsManager}.
-</p>
-
-<p>
   You use each configuration's <code>android:key</code> attribute to
   read its value from a managed configuration bundle. For this reason,
   each configuration must have a unique key string, and the string
@@ -172,19 +178,145 @@
 <p class="note">
   <strong>Note:</strong> In a production app, <code>android:title</code> and
   <code>android:description</code> should be drawn from a localized resource
-  file, as described in <a href=
-  "{@docRoot}guide/topics/resources/localization.html">Localizing with
-  Resources</a>.
+  file, as described in
+  <a href="{@docRoot}guide/topics/resources/localization.html"
+  >Localizing with Resources</a>.
 </p>
 
-<p>
-  The managed configuration provider can query the app to find details
-  on the app's available configurations, including their description
-  text. Configurations providers and enterprise administrators can
-  change your app's managed configurations at any time, even when the
-  app is not running.
+<p id="nested-restrictions">
+  An app can define one or multiple nested restriction elements using
+  the restriction types
+  {@link android.content.RestrictionEntry#TYPE_BUNDLE bundle} and
+  {@link android.content.RestrictionEntry#TYPE_BUNDLE_ARRAY bundle_array}.
+  For example, an app with multiple VPN connection options could define
+  each VPN server configuration in a bundle, with multiple bundles grouped
+  together in a bundle array:
 </p>
 
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;restrictions xmlns:android="http://schemas.android.com/apk/res/android" &gt;
+
+  &lt;restriction
+    android:key="vpn_configuration_list"
+    android:restrictionType="bundle_array"&gt;
+    &lt;restriction
+      android:key="vpn_configuration"
+      android:restrictionType="bundle"&gt;
+      &lt;restriction
+        android:key="vpn_server"
+        android:restrictionType="string"/&gt;
+      &lt;restriction
+        android:key="vpn_username"
+        android:restrictionType="string"/&gt;
+      &lt;restriction
+        android:key="vpn_password"
+        android:restrictionType="string"/&gt;
+    &lt;/restriction&gt;
+  &lt;/restriction&gt;
+
+&lt;/restrictions&gt;
+</pre>
+
+<p>
+  The supported types for the <code>android:restrictionType</code> element
+  are listed in <a href="#restriction-types">Table 1</a> and documented in
+  the reference for {@link android.content.RestrictionsManager} and
+  {@link android.content.RestrictionEntry}.
+</p>
+
+<p class="table-caption" id="restriction-types">
+  <strong>Table 1.</strong> Restriction entry types and usage.
+</p>
+<table>
+  <tbody>
+    <tr>
+      <th>Type</th>
+      <th>android:restrictionType</th>
+      <th>Typical usage</th>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_BOOLEAN TYPE_BOOLEAN}
+      </td>
+      <td><code>"bool"</code></td>
+      <td>
+        A boolean value, true or false.
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_STRING TYPE_STRING}
+      </td>
+      <td><code>"string"</code></td>
+      <td>
+        A string value, such as a name.
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_INTEGER TYPE_INTEGER}
+      </td>
+      <td><code>"integer"</code></td>
+      <td>
+        An integer with a value from
+        {@link java.lang.Integer#MIN_VALUE MIN_VALUE} to
+        {@link java.lang.Integer#MAX_VALUE MAX_VALUE}.
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_CHOICE TYPE_CHOICE}
+      </td>
+      <td><code>"choice"</code></td>
+      <td>
+        A string value, typically presented as a single-select list.
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_MULTI_SELECT TYPE_MULTI_SELECT}
+      </td>
+      <td><code>"multi-select"</code></td>
+      <td>
+        Use this for presenting a multi-select list where more than
+        one entry can be selected, such as for choosing specific
+        titles to white-list.
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_NULL TYPE_NULL}
+      </td>
+      <td><code>"hidden"</code></td>
+      <td>
+        Hidden restriction type. Use this type for information that
+        needs to be transferred across but shouldn't be presented to
+        the user in the UI. Stores a single string value.
+      </td>
+    </tr>
+    <tr>
+      <td>{@link android.content.RestrictionEntry#TYPE_BUNDLE TYPE_BUNDLE}</td>
+      <td><code>"bundle"</code></td>
+      <td>
+        Use this for storing {@link android.os.Bundle bundles} of
+        restrictions. Available in Android 6.0 (API level 23).
+      </td>
+    </tr>
+    <tr>
+      <td>
+        {@link android.content.RestrictionEntry#TYPE_BUNDLE_ARRAY TYPE_BUNDLE_ARRAY}
+      </td>
+      <td><code>"bundle_array"</code></td>
+      <td>
+        Use this for storing arrays of restriction
+        <a href="{@docRoot}reference/android/os/Bundle.html"
+        >bundles</a>. Available in Android 6.0 (API level 23).
+      </td>
+    </tr>
+  </tbody>
+</table>
+
 <h2 id="check-configuration">
   Check Managed Configurations
 </h2>
@@ -292,11 +424,10 @@
 <pre>
 boolean appCanUseCellular;
 
-if appRestrictions.containsKey("downloadOnCellular") {
+if (appRestrictions.containsKey("downloadOnCellular")) {
     appCanUseCellular = appRestrictions.getBoolean("downloadOnCellular");
 } else {
-    // here, cellularDefault is a boolean set with the restriction's
-    // default value
+    // cellularDefault is a boolean using the restriction's default value
     appCanUseCellular = cellularDefault;
 }
 
@@ -305,6 +436,37 @@
     // ...show appropriate notices to user
 }</pre>
 
+<p>
+  To apply multiple <a href="#nested-restrictions">nested restrictions</a>, read
+  the {@link android.content.RestrictionEntry#TYPE_BUNDLE_ARRAY bundle_array}
+  restriction entry as a collection of {@link android.os.Parcelable} objects
+  and cast as a {@link android.os.Bundle}. In this example, each VPN's configuration
+  data is parsed and used to build a list of server connection choices:
+</p>
+
+<pre>
+// VpnConfig is a sample class used store config data, not defined
+List&lt;VpnConfig&gt; vpnConfigs = new ArrayList&lt;&gt;();
+
+Parcelable[] parcelables =
+    appRestrictions.getParcelableArray("vpn_configuration_list");
+
+if (parcelables != null && parcelables.length > 0) {
+    // iterate parcelables and cast as bundle
+    for (int i = 0; i < parcelables.length; i++) {
+        Bundle vpnConfigBundle = (Bundle) parcelables[i];
+        // parse bundle data and store in VpnConfig array
+        vpnConfigs.add(new VpnConfig()
+            .setServer(vpnConfigBundle.getString("vpn_server"))
+            .setUsername(vpnConfigBundle.getString("vpn_username"))
+            .setPassword(vpnConfigBundle.getString("vpn_password")));
+    }
+}
+
+if (!vpnConfigs.isEmpty()) {
+    // ...choose a VPN configuration or prompt user to select from list
+}</pre>
+
 <h2 id="listen-configuration">
   Listen for Managed Configuration Changes
 </h2>
diff --git a/docs/image_sources/training/tv/tif/app-link-diagram.graffle.zip b/docs/image_sources/training/tv/tif/app-link-diagram.graffle.zip
new file mode 100644
index 0000000..8b6779d
--- /dev/null
+++ b/docs/image_sources/training/tv/tif/app-link-diagram.graffle.zip
Binary files differ
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java
index 4f6368c..dc1d18f 100644
--- a/graphics/java/android/graphics/drawable/VectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/VectorDrawable.java
@@ -235,7 +235,7 @@
     private final Rect mTmpBounds = new Rect();
 
     public VectorDrawable() {
-        this(new VectorDrawableState(), null);
+        this(new VectorDrawableState(null), null);
     }
 
     /**
@@ -830,7 +830,8 @@
 
         private static final int NATIVE_ALLOCATION_SIZE = 316;
 
-        // Deep copy for mutate() or implicitly mutate.
+        // If copy is not null, deep copy the given VectorDrawableState. Otherwise, create a
+        // native vector drawable tree with an empty root group.
         public VectorDrawableState(VectorDrawableState copy) {
             if (copy != null) {
                 mThemeAttrs = copy.mThemeAttrs;
@@ -851,8 +852,11 @@
                 if (copy.mRootName != null) {
                     mVGTargetsMap.put(copy.mRootName, this);
                 }
-                onTreeConstructionFinished();
+            } else {
+                mRootGroup = new VGroup();
+                createNativeTree(mRootGroup);
             }
+            onTreeConstructionFinished();
         }
 
         private void createNativeTree(VGroup rootGroup) {
@@ -870,7 +874,8 @@
             VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE);
         }
 
-
+        // This should be called every time after a new RootGroup and all its subtrees are created
+        // (i.e. in constructors of VectorDrawableState and in inflate).
         void onTreeConstructionFinished() {
             mRootGroup.setTree(mNativeTree);
             mAllocationOfAllNodes = mRootGroup.getNativeSize();
@@ -918,11 +923,6 @@
                     || super.canApplyTheme();
         }
 
-        public VectorDrawableState() {
-            mRootGroup = new VGroup();
-            createNativeTree(mRootGroup);
-        }
-
         @Override
         public Drawable newDrawable() {
             return new VectorDrawable(this, null);
diff --git a/include/android_runtime/AndroidRuntime.h b/include/android_runtime/AndroidRuntime.h
index 9a3b990..ed77d9a 100644
--- a/include/android_runtime/AndroidRuntime.h
+++ b/include/android_runtime/AndroidRuntime.h
@@ -44,7 +44,7 @@
         Tool,
     };
 
-    void setArgv0(const char* argv0);
+    void setArgv0(const char* argv0, bool setProcName = false);
     void addOption(const char* optionString, void* extra_info = NULL);
 
     /**
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index 9481c46..f413184 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -25,6 +25,7 @@
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.net.Uri;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Process;
@@ -192,7 +193,8 @@
      * </ul>
      *
      * @deprecated Use {@link #ACTION_KEYCHAIN_CHANGED}, {@link #ACTION_STORAGE_CHANGED} or
-     * {@link #ACTION_KEY_ACCESS_CHANGED}.
+     * {@link #ACTION_KEY_ACCESS_CHANGED}. Apps that target a version higher than
+     * {@link Build.VERSION_CODES#N_MR1} will not receive this broadcast.
      */
     public static final String ACTION_STORAGE_CHANGED = "android.security.STORAGE_CHANGED";
 
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
index 8c20ddc..f36c00c 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
@@ -228,7 +228,7 @@
         if (exportResult.resultCode != KeyStore.NO_ERROR) {
             throw (UnrecoverableKeyException)
                     new UnrecoverableKeyException("Failed to obtain X.509 form of public key")
-                    .initCause(KeyStore.getKeyStoreException(errorCode));
+                    .initCause(KeyStore.getKeyStoreException(exportResult.resultCode));
         }
         final byte[] x509EncodedPublicKey = exportResult.exportData;
 
diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp
index 4e0504f..bf2648a 100644
--- a/libs/androidfw/ResourceTypes.cpp
+++ b/libs/androidfw/ResourceTypes.cpp
@@ -804,8 +804,14 @@
         if (off < (mStringPoolSize-1)) {
             const uint8_t* strings = (uint8_t*)mStrings;
             const uint8_t* str = strings+off;
-            *outLen = decodeLength(&str);
-            size_t encLen = decodeLength(&str);
+
+            // Decode the UTF-16 length. This is not used if we're not
+            // converting to UTF-16 from UTF-8.
+            decodeLength(&str);
+
+            const size_t encLen = decodeLength(&str);
+            *outLen = encLen;
+
             if ((uint32_t)(str+encLen-strings) < mStringPoolSize) {
                 return (const char*)str;
             } else {
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index 95b28d3..0a8cd78 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -24,6 +24,7 @@
     renderstate/Stencil.cpp \
     renderstate/TextureState.cpp \
     renderthread/CanvasContext.cpp \
+    renderthread/OpenGLPipeline.cpp \
     renderthread/DrawFrameTask.cpp \
     renderthread/EglManager.cpp \
     renderthread/RenderProxy.cpp \
@@ -283,19 +284,15 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/local/tmp
-LOCAL_MODULE:= hwuitest
+LOCAL_MODULE:= hwuimacro
 LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_CLASS := EXECUTABLES
 LOCAL_MULTILIB := both
-LOCAL_MODULE_STEM_32 := hwuitest
-LOCAL_MODULE_STEM_64 := hwuitest64
 LOCAL_CFLAGS := $(hwui_cflags)
 LOCAL_C_INCLUDES := $(hwui_c_includes)
 
 # set to libhwui_static_debug to skip actual GL commands
 LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static
 LOCAL_SHARED_LIBRARIES := libmemunreachable
-LOCAL_STATIC_LIBRARIES := libgoogle-benchmark
 
 LOCAL_SRC_FILES += \
     $(hwui_test_common_src_files) \
@@ -303,7 +300,7 @@
     tests/macrobench/main.cpp
 
 include $(LOCAL_PATH)/hwui_static_deps.mk
-include $(BUILD_EXECUTABLE)
+include $(BUILD_NATIVE_BENCHMARK)
 
 # ------------------------
 # Micro-bench app
diff --git a/libs/hwui/ClipArea.cpp b/libs/hwui/ClipArea.cpp
index 39b8d3d..84451ba 100644
--- a/libs/hwui/ClipArea.cpp
+++ b/libs/hwui/ClipArea.cpp
@@ -530,14 +530,14 @@
 }
 
 void ClipArea::applyTransformToRegion(const Matrix4& transform, SkRegion* region) {
-    if (transform.isSimple() && !transform.isPureTranslate()) {
+    if (transform.rectToRect() && !transform.isPureTranslate()) {
         // handle matrices with scale manually by mapping each rect
         SkRegion other;
         SkRegion::Iterator it(*region);
         while (!it.done()) {
             Rect rect(it.rect());
             transform.mapRect(rect);
-            rect.roundOut();
+            rect.snapGeometryToPixelBoundaries(true);
             other.op(rect.left, rect.top, rect.right, rect.bottom, SkRegion::kUnion_Op);
             it.next();
         }
diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp
index d0ae1d4..93b2e15 100644
--- a/libs/hwui/Properties.cpp
+++ b/libs/hwui/Properties.cpp
@@ -214,8 +214,8 @@
     property_get(PROPERTY_DEFAULT_RENDERER, prop, "opengl");
     if (!strcmp(prop, "skiagl") ) {
         sRenderPipelineType = RenderPipelineType::SkiaGL;
-    } else if (!strcmp(prop, "vulkan") ) {
-        sRenderPipelineType = RenderPipelineType::Vulkan;
+    } else if (!strcmp(prop, "skiavulkan") ) {
+        sRenderPipelineType = RenderPipelineType::SkiaVulkan;
     } else { //"opengl"
         sRenderPipelineType = RenderPipelineType::OpenGL;
     }
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index 5d892fd..133ae80 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -253,7 +253,7 @@
 enum class RenderPipelineType {
     OpenGL = 0,
     SkiaGL,
-    Vulkan,
+    SkiaVulkan,
     NotInitialized = 128
 };
 
diff --git a/libs/hwui/PropertyValuesAnimatorSet.h b/libs/hwui/PropertyValuesAnimatorSet.h
index 49021bc..f9274e1 100644
--- a/libs/hwui/PropertyValuesAnimatorSet.h
+++ b/libs/hwui/PropertyValuesAnimatorSet.h
@@ -60,7 +60,7 @@
     virtual uint32_t dirtyMask();
     bool isInfinite() { return mIsInfinite; }
     void setVectorDrawable(VectorDrawableRoot* vd) { mVectorDrawable = vd; }
-    VectorDrawableRoot* getVectorDrawable() const { return mVectorDrawable; }
+    VectorDrawableRoot* getVectorDrawable() const { return mVectorDrawable.get(); }
     AnimationListener* getOneShotListener() { return mOneShotListener.get(); }
     void clearOneShotListener() { mOneShotListener = nullptr; }
     uint32_t getRequestId() const { return mRequestId; }
@@ -78,7 +78,7 @@
     std::vector< std::unique_ptr<PropertyAnimator> > mAnimators;
     float mLastFraction = 0.0f;
     bool mInitialized = false;
-    VectorDrawableRoot* mVectorDrawable = nullptr;
+    sp<VectorDrawableRoot> mVectorDrawable;
     bool mIsInfinite = false;
     // This request id gets incremented (on UI thread only) when a new request to modfiy the
     // lifecycle of an animation happens, namely when start/end/reset/reverse is called.
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 5330e23..ff277d1 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -241,7 +241,10 @@
     LayerType layerType = properties().effectiveLayerType();
     // If we are not a layer OR we cannot be rendered (eg, view was detached)
     // we need to destroy any Layers we may have had previously
-    if (CC_LIKELY(layerType != LayerType::RenderLayer) || CC_UNLIKELY(!isRenderable())) {
+    if (CC_LIKELY(layerType != LayerType::RenderLayer)
+            || CC_UNLIKELY(!isRenderable())
+            || CC_UNLIKELY(properties().getWidth() == 0)
+            || CC_UNLIKELY(properties().getHeight() == 0)) {
         if (CC_UNLIKELY(mLayer)) {
             destroyLayer(mLayer);
             mLayer = nullptr;
diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h
index 2a2e4c7..00494a1 100644
--- a/libs/hwui/RenderProperties.h
+++ b/libs/hwui/RenderProperties.h
@@ -612,9 +612,7 @@
     bool fitsOnLayer() const {
         const DeviceInfo* deviceInfo = DeviceInfo::get();
         return mPrimitiveFields.mWidth <= deviceInfo->maxTextureSize()
-                        && mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize()
-                        && mPrimitiveFields.mWidth > 0
-                        && mPrimitiveFields.mHeight > 0;
+                        && mPrimitiveFields.mHeight <= deviceInfo->maxTextureSize();
     }
 
     bool promotedToLayer() const {
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 600707ab..99ea831 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -14,13 +14,11 @@
  * limitations under the License.
  */
 
-#include "CanvasProperty.h"
-#include "Layer.h"
-#include "RenderNode.h"
-#include "hwui/Canvas.h"
+#include "SkiaCanvas.h"
 
-#include <SkCanvas.h>
-#include <SkClipStack.h>
+#include "CanvasProperty.h"
+#include "VectorDrawable.h"
+
 #include <SkDrawable.h>
 #include <SkDevice.h>
 #include <SkDeque.h>
@@ -28,167 +26,12 @@
 #include <SkGraphics.h>
 #include <SkImage.h>
 #include <SkShader.h>
-#include <SkTArray.h>
 #include <SkTemplates.h>
 
-#include "VectorDrawable.h"
-
 #include <memory>
 
 namespace android {
 
-// Holds an SkCanvas reference plus additional native data.
-class SkiaCanvas : public Canvas {
-public:
-    explicit SkiaCanvas(const SkBitmap& bitmap);
-
-    /**
-     *  Create a new SkiaCanvas.
-     *
-     *  @param canvas SkCanvas to handle calls made to this SkiaCanvas. Must
-     *      not be NULL. This constructor will ref() the SkCanvas, and unref()
-     *      it in its destructor.
-     */
-    explicit SkiaCanvas(SkCanvas* canvas) : mCanvas(canvas) {
-        SkASSERT(canvas);
-        canvas->ref();
-    }
-
-    virtual SkCanvas* asSkCanvas() override {
-        return mCanvas.get();
-    }
-
-    virtual void resetRecording(int width, int height) override {
-        LOG_ALWAYS_FATAL("SkiaCanvas cannot be reset as a recording canvas");
-    }
-
-    virtual uirenderer::DisplayList* finishRecording() override {
-        LOG_ALWAYS_FATAL("SkiaCanvas does not produce a DisplayList");
-        return nullptr;
-    }
-    virtual void insertReorderBarrier(bool enableReorder) override {
-        LOG_ALWAYS_FATAL("SkiaCanvas does not support reordering barriers");
-    }
-
-    virtual void setBitmap(const SkBitmap& bitmap) override;
-
-    virtual bool isOpaque() override;
-    virtual int width() override;
-    virtual int height() override;
-
-    virtual void setHighContrastText(bool highContrastText) override {
-        mHighContrastText = highContrastText;
-    }
-    virtual bool isHighContrastText() override { return mHighContrastText; }
-
-    virtual int getSaveCount() const override;
-    virtual int save(SaveFlags::Flags flags) override;
-    virtual void restore() override;
-    virtual void restoreToCount(int saveCount) override;
-
-    virtual int saveLayer(float left, float top, float right, float bottom,
-                const SkPaint* paint, SaveFlags::Flags flags) override;
-    virtual int saveLayerAlpha(float left, float top, float right, float bottom,
-            int alpha, SaveFlags::Flags flags) override;
-
-    virtual void getMatrix(SkMatrix* outMatrix) const override;
-    virtual void setMatrix(const SkMatrix& matrix) override;
-    virtual void concat(const SkMatrix& matrix) override;
-    virtual void rotate(float degrees) override;
-    virtual void scale(float sx, float sy) override;
-    virtual void skew(float sx, float sy) override;
-    virtual void translate(float dx, float dy) override;
-
-    virtual bool getClipBounds(SkRect* outRect) const override;
-    virtual bool quickRejectRect(float left, float top, float right, float bottom) const override;
-    virtual bool quickRejectPath(const SkPath& path) const override;
-    virtual bool clipRect(float left, float top, float right, float bottom,
-            SkRegion::Op op) override;
-    virtual bool clipPath(const SkPath* path, SkRegion::Op op) override;
-    virtual bool clipRegion(const SkRegion* region, SkRegion::Op op) override;
-
-    virtual SkDrawFilter* getDrawFilter() override;
-    virtual void setDrawFilter(SkDrawFilter* drawFilter) override;
-
-    virtual void drawColor(int color, SkXfermode::Mode mode) override;
-    virtual void drawPaint(const SkPaint& paint) override;
-
-    virtual void drawPoint(float x, float y, const SkPaint& paint) override;
-    virtual void drawPoints(const float* points, int count, const SkPaint& paint) override;
-    virtual void drawLine(float startX, float startY, float stopX, float stopY,
-            const SkPaint& paint) override;
-    virtual void drawLines(const float* points, int count, const SkPaint& paint) override;
-    virtual void drawRect(float left, float top, float right, float bottom,
-            const SkPaint& paint) override;
-    virtual void drawRegion(const SkRegion& region, const SkPaint& paint) override;
-    virtual void drawRoundRect(float left, float top, float right, float bottom,
-            float rx, float ry, const SkPaint& paint) override;
-    virtual void drawCircle(float x, float y, float radius, const SkPaint& paint) override;
-    virtual void drawOval(float left, float top, float right, float bottom,
-            const SkPaint& paint) override;
-    virtual void drawArc(float left, float top, float right, float bottom,
-            float startAngle, float sweepAngle, bool useCenter, const SkPaint& paint) override;
-    virtual void drawPath(const SkPath& path, const SkPaint& paint) override;
-    virtual void drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount,
-            const float* verts, const float* tex, const int* colors,
-            const uint16_t* indices, int indexCount, const SkPaint& paint) override;
-
-    virtual void drawBitmap(const SkBitmap& bitmap, float left, float top,
-            const SkPaint* paint) override;
-    virtual void drawBitmap(const SkBitmap& bitmap, const SkMatrix& matrix,
-            const SkPaint* paint) override;
-    virtual void drawBitmap(const SkBitmap& bitmap, float srcLeft, float srcTop,
-            float srcRight, float srcBottom, float dstLeft, float dstTop,
-            float dstRight, float dstBottom, const SkPaint* paint) override;
-    virtual void drawBitmapMesh(const SkBitmap& bitmap, int meshWidth, int meshHeight,
-            const float* vertices, const int* colors, const SkPaint* paint) override;
-    virtual void drawNinePatch(const SkBitmap& bitmap, const android::Res_png_9patch& chunk,
-            float dstLeft, float dstTop, float dstRight, float dstBottom,
-            const SkPaint* paint) override;
-
-    virtual bool drawTextAbsolutePos() const  override { return true; }
-    virtual void drawVectorDrawable(VectorDrawableRoot* vectorDrawable) override;
-
-    virtual void drawRoundRect(uirenderer::CanvasPropertyPrimitive* left,
-            uirenderer::CanvasPropertyPrimitive* top, uirenderer::CanvasPropertyPrimitive* right,
-            uirenderer::CanvasPropertyPrimitive* bottom, uirenderer::CanvasPropertyPrimitive* rx,
-            uirenderer::CanvasPropertyPrimitive* ry, uirenderer::CanvasPropertyPaint* paint) override;
-    virtual void drawCircle(uirenderer::CanvasPropertyPrimitive* x,
-            uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius,
-            uirenderer::CanvasPropertyPaint* paint) override;
-
-    virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) override;
-    virtual void drawRenderNode(uirenderer::RenderNode* renderNode) override;
-    virtual void callDrawGLFunction(Functor* functor,
-            uirenderer::GlFunctorLifecycleListener* listener) override;
-
-protected:
-    virtual void drawGlyphs(const uint16_t* text, const float* positions, int count,
-            const SkPaint& paint, float x, float y,
-            float boundsLeft, float boundsTop, float boundsRight, float boundsBottom,
-            float totalAdvance) override;
-    virtual void drawGlyphsOnPath(const uint16_t* glyphs, int count, const SkPath& path,
-            float hOffset, float vOffset, const SkPaint& paint) override;
-
-private:
-    struct SaveRec {
-        int              saveCount;
-        SaveFlags::Flags saveFlags;
-    };
-
-    bool mHighContrastText = false;
-
-    void recordPartialSave(SaveFlags::Flags flags);
-    void saveClipsForFrame(SkTArray<SkClipStack::Element>& clips, int frameSaveCount);
-    void applyClips(const SkTArray<SkClipStack::Element>& clips);
-
-    void drawPoints(const float* points, int count, const SkPaint& paint,
-                    SkCanvas::PointMode mode);
-
-    SkAutoTUnref<SkCanvas> mCanvas;
-    std::unique_ptr<SkDeque> mSaveStack; // lazily allocated, tracks partial saves.
-};
-
 Canvas* Canvas::create_canvas(const SkBitmap& bitmap) {
     return new SkiaCanvas(bitmap);
 }
@@ -201,6 +44,12 @@
     mCanvas.reset(new SkCanvas(bitmap));
 }
 
+void SkiaCanvas::reset(SkCanvas* skiaCanvas) {
+    mCanvas.reset(SkRef(skiaCanvas));
+    mSaveStack.reset(nullptr);
+    mHighContrastText = false;
+}
+
 // ----------------------------------------------------------------------------
 // Canvas state operations: Replace Bitmap
 // ----------------------------------------------------------------------------
@@ -224,18 +73,18 @@
 };
 
 void SkiaCanvas::setBitmap(const SkBitmap& bitmap) {
-    SkCanvas* newCanvas = new SkCanvas(bitmap);
+    sk_sp<SkCanvas> newCanvas(new SkCanvas(bitmap));
 
     if (!bitmap.isNull()) {
         // Copy the canvas matrix & clip state.
         newCanvas->setMatrix(mCanvas->getTotalMatrix());
 
-        ClipCopier copier(newCanvas);
+        ClipCopier copier(newCanvas.get());
         mCanvas->replayClips(&copier);
     }
 
     // unrefs the existing canvas
-    mCanvas.reset(newCanvas);
+    mCanvas = std::move(newCanvas);
 
     // clean up the old save stack
     mSaveStack.reset(NULL);
@@ -402,7 +251,7 @@
 }
 
 void SkiaCanvas::applyClips(const SkTArray<SkClipStack::Element>& clips) {
-    ClipCopier clipCopier(mCanvas);
+    ClipCopier clipCopier(mCanvas.get());
 
     // The clip stack stores clips in device space.
     SkMatrix origMatrix = mCanvas->getTotalMatrix();
@@ -494,7 +343,12 @@
 }
 
 bool SkiaCanvas::clipPath(const SkPath* path, SkRegion::Op op) {
-    mCanvas->clipPath(*path, op);
+    SkRRect roundRect;
+    if (path->isRRect(&roundRect)) {
+        mCanvas->clipRRect(roundRect, op);
+    } else {
+        mCanvas->clipPath(*path, op);
+    }
     return !mCanvas->isClipEmpty();
 }
 
@@ -606,7 +460,15 @@
 }
 
 void SkiaCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
-    mCanvas->drawPath(path, paint);
+    SkRect rect;
+    SkRRect roundRect;
+    if (path.isOval(&rect)) {
+        mCanvas->drawOval(rect, paint);
+    } else if (path.isRRect(&roundRect)) {
+        mCanvas->drawRRect(roundRect, paint);
+    } else {
+        mCanvas->drawPath(path, paint);
+    }
 }
 
 void SkiaCanvas::drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount,
@@ -629,7 +491,7 @@
 }
 
 void SkiaCanvas::drawBitmap(const SkBitmap& bitmap, const SkMatrix& matrix, const SkPaint* paint) {
-    SkAutoCanvasRestore acr(mCanvas, true);
+    SkAutoCanvasRestore acr(mCanvas.get(), true);
     mCanvas->concat(matrix);
     mCanvas->drawBitmap(bitmap, 0, 0, paint);
 }
@@ -742,7 +604,7 @@
 void SkiaCanvas::drawNinePatch(const SkBitmap& bitmap, const Res_png_9patch& chunk,
         float dstLeft, float dstTop, float dstRight, float dstBottom, const SkPaint* paint) {
     SkRect bounds = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom);
-    NinePatch::Draw(mCanvas, bounds, bitmap, chunk, paint, nullptr);
+    NinePatch::Draw(mCanvas.get(), bounds, bitmap, chunk, paint, nullptr);
 }
 
 void SkiaCanvas::drawVectorDrawable(VectorDrawableRoot* vectorDrawable) {
@@ -826,14 +688,14 @@
         uirenderer::CanvasPropertyPrimitive* top, uirenderer::CanvasPropertyPrimitive* right,
         uirenderer::CanvasPropertyPrimitive* bottom, uirenderer::CanvasPropertyPrimitive* rx,
         uirenderer::CanvasPropertyPrimitive* ry, uirenderer::CanvasPropertyPaint* paint) {
-    SkAutoTUnref<AnimatedRoundRect> drawable(
+    sk_sp<AnimatedRoundRect> drawable(
             new AnimatedRoundRect(left, top, right, bottom, rx, ry, paint));
     mCanvas->drawDrawable(drawable.get());
 }
 
 void SkiaCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x, uirenderer::CanvasPropertyPrimitive* y,
         uirenderer::CanvasPropertyPrimitive* radius, uirenderer::CanvasPropertyPaint* paint) {
-    SkAutoTUnref<AnimatedCircle> drawable(new AnimatedCircle(x, y, radius, paint));
+    sk_sp<AnimatedCircle> drawable(new AnimatedCircle(x, y, radius, paint));
     mCanvas->drawDrawable(drawable.get());
 }
 
@@ -841,11 +703,17 @@
 // Canvas draw operations: View System
 // ----------------------------------------------------------------------------
 
-void SkiaCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layer) { }
+void SkiaCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layer) {
+    LOG_ALWAYS_FATAL("SkiaCanvas can't directly draw Layers");
+}
 
-void SkiaCanvas::drawRenderNode(uirenderer::RenderNode* renderNode) { }
+void SkiaCanvas::drawRenderNode(uirenderer::RenderNode* renderNode) {
+    LOG_ALWAYS_FATAL("SkiaCanvas can't directly draw RenderNodes");
+}
 
 void SkiaCanvas::callDrawGLFunction(Functor* functor,
-        uirenderer::GlFunctorLifecycleListener* listener) { }
+        uirenderer::GlFunctorLifecycleListener* listener) {
+    LOG_ALWAYS_FATAL("SkiaCanvas can't directly draw GL Content");
+}
 
 } // namespace android
diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h
new file mode 100644
index 0000000..c76971c
--- /dev/null
+++ b/libs/hwui/SkiaCanvas.h
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+#pragma once
+
+#include "hwui/Canvas.h"
+#include "CanvasProperty.h"
+#include "DeferredLayerUpdater.h"
+#include "RenderNode.h"
+#include "VectorDrawable.h"
+
+#include <SkCanvas.h>
+#include <SkClipStack.h>
+#include <SkTArray.h>
+
+namespace android {
+
+// Holds an SkCanvas reference plus additional native data.
+class SkiaCanvas : public Canvas {
+public:
+    explicit SkiaCanvas(const SkBitmap& bitmap);
+
+    /**
+     *  Create a new SkiaCanvas.
+     *
+     *  @param canvas SkCanvas to handle calls made to this SkiaCanvas. Must
+     *      not be NULL. This constructor will ref() the SkCanvas, and unref()
+     *      it in its destructor.
+     */
+    explicit SkiaCanvas(SkCanvas* canvas) : mCanvas(canvas) {
+        SkASSERT(canvas);
+        canvas->ref();
+    }
+
+    virtual SkCanvas* asSkCanvas() override {
+        return mCanvas.get();
+    }
+
+    virtual void resetRecording(int width, int height) override {
+        LOG_ALWAYS_FATAL("SkiaCanvas cannot be reset as a recording canvas");
+    }
+
+    virtual uirenderer::DisplayList* finishRecording() override {
+        LOG_ALWAYS_FATAL("SkiaCanvas does not produce a DisplayList");
+        return nullptr;
+    }
+    virtual void insertReorderBarrier(bool enableReorder) override {
+        LOG_ALWAYS_FATAL("SkiaCanvas does not support reordering barriers");
+    }
+
+    virtual void setBitmap(const SkBitmap& bitmap) override;
+
+    virtual bool isOpaque() override;
+    virtual int width() override;
+    virtual int height() override;
+
+    virtual void setHighContrastText(bool highContrastText) override {
+        mHighContrastText = highContrastText;
+    }
+    virtual bool isHighContrastText() override { return mHighContrastText; }
+
+    virtual int getSaveCount() const override;
+    virtual int save(SaveFlags::Flags flags) override;
+    virtual void restore() override;
+    virtual void restoreToCount(int saveCount) override;
+
+    virtual int saveLayer(float left, float top, float right, float bottom,
+                const SkPaint* paint, SaveFlags::Flags flags) override;
+    virtual int saveLayerAlpha(float left, float top, float right, float bottom,
+            int alpha, SaveFlags::Flags flags) override;
+
+    virtual void getMatrix(SkMatrix* outMatrix) const override;
+    virtual void setMatrix(const SkMatrix& matrix) override;
+    virtual void concat(const SkMatrix& matrix) override;
+    virtual void rotate(float degrees) override;
+    virtual void scale(float sx, float sy) override;
+    virtual void skew(float sx, float sy) override;
+    virtual void translate(float dx, float dy) override;
+
+    virtual bool getClipBounds(SkRect* outRect) const override;
+    virtual bool quickRejectRect(float left, float top, float right, float bottom) const override;
+    virtual bool quickRejectPath(const SkPath& path) const override;
+    virtual bool clipRect(float left, float top, float right, float bottom,
+            SkRegion::Op op) override;
+    virtual bool clipPath(const SkPath* path, SkRegion::Op op) override;
+    virtual bool clipRegion(const SkRegion* region, SkRegion::Op op) override;
+
+    virtual SkDrawFilter* getDrawFilter() override;
+    virtual void setDrawFilter(SkDrawFilter* drawFilter) override;
+
+    virtual void drawColor(int color, SkXfermode::Mode mode) override;
+    virtual void drawPaint(const SkPaint& paint) override;
+
+    virtual void drawPoint(float x, float y, const SkPaint& paint) override;
+    virtual void drawPoints(const float* points, int count, const SkPaint& paint) override;
+    virtual void drawLine(float startX, float startY, float stopX, float stopY,
+            const SkPaint& paint) override;
+    virtual void drawLines(const float* points, int count, const SkPaint& paint) override;
+    virtual void drawRect(float left, float top, float right, float bottom,
+            const SkPaint& paint) override;
+    virtual void drawRegion(const SkRegion& region, const SkPaint& paint) override;
+    virtual void drawRoundRect(float left, float top, float right, float bottom,
+            float rx, float ry, const SkPaint& paint) override;
+    virtual void drawCircle(float x, float y, float radius, const SkPaint& paint) override;
+    virtual void drawOval(float left, float top, float right, float bottom,
+            const SkPaint& paint) override;
+    virtual void drawArc(float left, float top, float right, float bottom,
+            float startAngle, float sweepAngle, bool useCenter, const SkPaint& paint) override;
+    virtual void drawPath(const SkPath& path, const SkPaint& paint) override;
+    virtual void drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount,
+            const float* verts, const float* tex, const int* colors,
+            const uint16_t* indices, int indexCount, const SkPaint& paint) override;
+
+    virtual void drawBitmap(const SkBitmap& bitmap, float left, float top,
+            const SkPaint* paint) override;
+    virtual void drawBitmap(const SkBitmap& bitmap, const SkMatrix& matrix,
+            const SkPaint* paint) override;
+    virtual void drawBitmap(const SkBitmap& bitmap, float srcLeft, float srcTop,
+            float srcRight, float srcBottom, float dstLeft, float dstTop,
+            float dstRight, float dstBottom, const SkPaint* paint) override;
+    virtual void drawBitmapMesh(const SkBitmap& bitmap, int meshWidth, int meshHeight,
+            const float* vertices, const int* colors, const SkPaint* paint) override;
+    virtual void drawNinePatch(const SkBitmap& bitmap, const android::Res_png_9patch& chunk,
+            float dstLeft, float dstTop, float dstRight, float dstBottom,
+            const SkPaint* paint) override;
+
+    virtual bool drawTextAbsolutePos() const  override { return true; }
+    virtual void drawVectorDrawable(VectorDrawableRoot* vectorDrawable) override;
+
+    virtual void drawRoundRect(uirenderer::CanvasPropertyPrimitive* left,
+            uirenderer::CanvasPropertyPrimitive* top, uirenderer::CanvasPropertyPrimitive* right,
+            uirenderer::CanvasPropertyPrimitive* bottom, uirenderer::CanvasPropertyPrimitive* rx,
+            uirenderer::CanvasPropertyPrimitive* ry, uirenderer::CanvasPropertyPaint* paint) override;
+    virtual void drawCircle(uirenderer::CanvasPropertyPrimitive* x,
+            uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius,
+            uirenderer::CanvasPropertyPaint* paint) override;
+
+    virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) override;
+    virtual void drawRenderNode(uirenderer::RenderNode* renderNode) override;
+    virtual void callDrawGLFunction(Functor* functor,
+            uirenderer::GlFunctorLifecycleListener* listener) override;
+
+protected:
+    explicit SkiaCanvas() {}
+    void reset(SkCanvas* skiaCanvas);
+    void drawDrawable(SkDrawable* drawable) { mCanvas->drawDrawable(drawable); }
+
+    virtual void drawGlyphs(const uint16_t* text, const float* positions, int count,
+            const SkPaint& paint, float x, float y,
+            float boundsLeft, float boundsTop, float boundsRight, float boundsBottom,
+            float totalAdvance) override;
+    virtual void drawGlyphsOnPath(const uint16_t* glyphs, int count, const SkPath& path,
+            float hOffset, float vOffset, const SkPaint& paint) override;
+
+private:
+    struct SaveRec {
+        int              saveCount;
+        SaveFlags::Flags saveFlags;
+    };
+
+    bool mHighContrastText = false;
+
+    void recordPartialSave(SaveFlags::Flags flags);
+    void saveClipsForFrame(SkTArray<SkClipStack::Element>& clips, int frameSaveCount);
+    void applyClips(const SkTArray<SkClipStack::Element>& clips);
+
+    void drawPoints(const float* points, int count, const SkPaint& paint,
+            SkCanvas::PointMode mode);
+
+    sk_sp<SkCanvas> mCanvas;
+    std::unique_ptr<SkDeque> mSaveStack; // lazily allocated, tracks partial saves.
+};
+
+} // namespace android
+
diff --git a/libs/hwui/SkiaCanvasProxy.cpp b/libs/hwui/SkiaCanvasProxy.cpp
index 9df32b28..f264a35 100644
--- a/libs/hwui/SkiaCanvasProxy.cpp
+++ b/libs/hwui/SkiaCanvasProxy.cpp
@@ -23,6 +23,7 @@
 #include <SkPixelRef.h>
 #include <SkRect.h>
 #include <SkRRect.h>
+#include <SkSurface.h>
 
 #include <memory>
 
@@ -153,7 +154,7 @@
     mCanvas->drawVertices(mode, floatCount, vArray, tArray, cArray, indices, indexCount, paint);
 }
 
-SkSurface* SkiaCanvasProxy::onNewSurface(const SkImageInfo&, const SkSurfaceProps&) {
+sk_sp<SkSurface> SkiaCanvasProxy::onNewSurface(const SkImageInfo&, const SkSurfaceProps&) {
     SkDEBUGFAIL("SkiaCanvasProxy::onNewSurface is not supported");
     return NULL;
 }
diff --git a/libs/hwui/SkiaCanvasProxy.h b/libs/hwui/SkiaCanvasProxy.h
index 973c55f..d1c9c6b 100644
--- a/libs/hwui/SkiaCanvasProxy.h
+++ b/libs/hwui/SkiaCanvasProxy.h
@@ -44,7 +44,7 @@
 
 protected:
 
-    virtual SkSurface* onNewSurface(const SkImageInfo&, const SkSurfaceProps&) override;
+    virtual sk_sp<SkSurface> onNewSurface(const SkImageInfo&, const SkSurfaceProps&) override;
 
     virtual void willSave() override;
     virtual SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override;
diff --git a/libs/hwui/font/CachedGlyphInfo.h b/libs/hwui/font/CachedGlyphInfo.h
index 0642d59..073d59b 100644
--- a/libs/hwui/font/CachedGlyphInfo.h
+++ b/libs/hwui/font/CachedGlyphInfo.h
@@ -17,8 +17,6 @@
 #ifndef ANDROID_HWUI_CACHED_GLYPH_INFO_H
 #define ANDROID_HWUI_CACHED_GLYPH_INFO_H
 
-#include <SkFixed.h>
-
 namespace android {
 namespace uirenderer {
 
@@ -41,14 +39,14 @@
     float mBitmapMaxV;
     // Minimize how much we call freetype
     uint32_t mGlyphIndex;
-    uint32_t mAdvanceX;
-    uint32_t mAdvanceY;
+    float mAdvanceX;
+    float mAdvanceY;
     // Values below contain a glyph's origin in the bitmap
     int32_t mBitmapLeft;
     int32_t mBitmapTop;
-    // Auto-kerning
-    SkFixed mLsbDelta;
-    SkFixed mRsbDelta;
+    // Auto-kerning; represents a 2.6 fixed-point value with range [-1, 1].
+    int8_t mLsbDelta;
+    int8_t mRsbDelta;
     CacheTexture* mCacheTexture;
 };
 
diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp
index 8e04c87..9c812bc 100644
--- a/libs/hwui/font/Font.cpp
+++ b/libs/hwui/font/Font.cpp
@@ -304,7 +304,7 @@
     }
 
     int glyphsCount = 0;
-    SkFixed prevRsbDelta = 0;
+    int prevRsbDelta = 0;
 
     float penX = 0.0f;
 
@@ -332,14 +332,14 @@
         }
 
         CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph);
-        penX += SkFixedToFloat(AUTO_KERN(prevRsbDelta, cachedGlyph->mLsbDelta));
+        penX += AUTO_KERN(prevRsbDelta, cachedGlyph->mLsbDelta);
         prevRsbDelta = cachedGlyph->mRsbDelta;
 
         if (cachedGlyph->mIsValid && cachedGlyph->mCacheTexture) {
             drawCachedGlyph(cachedGlyph, penX, hOffset, vOffset, measure, &position, &tangent);
         }
 
-        penX += SkFixedToFloat(cachedGlyph->mAdvanceX);
+        penX += cachedGlyph->mAdvanceX;
 
         glyphsCount++;
     }
diff --git a/libs/hwui/font/FontUtil.h b/libs/hwui/font/FontUtil.h
index aa77d98..07e8b34 100644
--- a/libs/hwui/font/FontUtil.h
+++ b/libs/hwui/font/FontUtil.h
@@ -44,6 +44,8 @@
 #define GET_METRICS(cache, glyph) cache->getGlyphIDMetrics(glyph)
 #define IS_END_OF_STRING(glyph) false
 
-#define AUTO_KERN(prev, next) (((next) - (prev) + 32) >> 6 << 16)
+// prev, next are assumed to be signed x.6 fixed-point numbers with range
+// [-1, 1]. Result is an integral float.
+#define AUTO_KERN(prev, next) static_cast<float>(((next) - (prev) + 32) >> 6)
 
 #endif // ANDROID_HWUI_FONT_UTIL_H
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index d36ebc7..9b0be49 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -30,6 +30,7 @@
 #include "renderstate/RenderState.h"
 #include "renderstate/Stencil.h"
 #include "protos/hwui.pb.h"
+#include "OpenGLPipeline.h"
 #include "utils/GLUtils.h"
 #include "utils/TimeUtils.h"
 
@@ -65,14 +66,16 @@
         bool translucent, RenderNode* rootRenderNode, IContextFactory* contextFactory) {
 
     auto renderType = Properties::getRenderPipelineType();
+
     switch (renderType) {
         case RenderPipelineType::OpenGL:
-            return new CanvasContext(thread, translucent, rootRenderNode, contextFactory);
+            return new CanvasContext(thread, translucent, rootRenderNode, contextFactory,
+                    std::make_unique<OpenGLPipeline>(thread));
         case RenderPipelineType::SkiaGL:
             //TODO: implement SKIA GL
             LOG_ALWAYS_FATAL("skiaGL canvas type not implemented.");
             break;
-        case RenderPipelineType::Vulkan:
+        case RenderPipelineType::SkiaVulkan:
             //TODO: implement Vulkan
             LOG_ALWAYS_FATAL("Vulkan canvas type not implemented.");
             break;
@@ -84,14 +87,15 @@
 }
 
 CanvasContext::CanvasContext(RenderThread& thread, bool translucent,
-        RenderNode* rootRenderNode, IContextFactory* contextFactory)
+        RenderNode* rootRenderNode, IContextFactory* contextFactory,
+        std::unique_ptr<IRenderPipeline> renderPipeline)
         : mRenderThread(thread)
-        , mEglManager(thread.eglManager())
         , mOpaque(!translucent)
         , mAnimationContext(contextFactory->createAnimationContext(mRenderThread.timeLord()))
         , mJankTracker(thread.timeLord().frameIntervalNanos())
         , mProfiler(mFrames)
-        , mContentDrawBounds(0, 0, 0, 0) {
+        , mContentDrawBounds(0, 0, 0, 0)
+        , mRenderPipeline(std::move(renderPipeline)) {
     mRenderNodes.emplace_back(rootRenderNode);
     mRenderThread.renderState().registerCanvasContext(this);
     mProfiler.setDensity(mRenderThread.mainDisplayInfo().density);
@@ -115,24 +119,15 @@
 
     mNativeSurface = surface;
 
-    if (mEglSurface != EGL_NO_SURFACE) {
-        mEglManager.destroySurface(mEglSurface);
-        mEglSurface = EGL_NO_SURFACE;
-    }
-
-    if (surface) {
-        mEglSurface = mEglManager.createSurface(surface);
-    }
+    bool hasSurface = mRenderPipeline->setSurface(surface, mSwapBehavior);
 
     mFrameNumber = -1;
 
-    if (mEglSurface != EGL_NO_SURFACE) {
-        const bool preserveBuffer = (mSwapBehavior != kSwap_discardBuffer);
-        mBufferPreserved = mEglManager.setPreserveBuffer(mEglSurface, preserveBuffer);
-        mHaveNewSurface = true;
-        mSwapHistory.clear();
+    if (hasSurface) {
+         mHaveNewSurface = true;
+         mSwapHistory.clear();
     } else {
-        mRenderThread.removeFrameCallback(this);
+         mRenderThread.removeFrameCallback(this);
     }
 }
 
@@ -157,9 +152,7 @@
         mStopped = stopped;
         if (mStopped) {
             mRenderThread.removeFrameCallback(this);
-            if (mEglManager.isCurrent(mEglSurface)) {
-                mEglManager.makeCurrent(EGL_NO_SURFACE);
-            }
+            mRenderPipeline->onStop();
         } else if (mIsDirty && hasSurface()) {
             mRenderThread.postFrameCallback(this);
         }
@@ -184,14 +177,23 @@
 bool CanvasContext::makeCurrent() {
     if (mStopped) return false;
 
-    // TODO: Figure out why this workaround is needed, see b/13913604
-    // In the meantime this matches the behavior of GLRenderer, so it is not a regression
-    EGLint error = 0;
-    mHaveNewSurface |= mEglManager.makeCurrent(mEglSurface, &error);
-    if (error) {
-        setSurface(nullptr);
+    auto result = mRenderPipeline->makeCurrent();
+    switch (result) {
+        case MakeCurrentResult::AlreadyCurrent:
+            return true;
+        case MakeCurrentResult::Failed:
+            mHaveNewSurface = true;
+            setSurface(nullptr);
+            return false;
+        case MakeCurrentResult::Succeeded:
+            mHaveNewSurface = true;
+            return true;
+        default:
+            LOG_ALWAYS_FATAL("unexpected result %d from IRenderPipeline::makeCurrent",
+                    (int32_t) result);
     }
-    return !error;
+
+    return true;
 }
 
 static bool wasSkipped(FrameInfo* info) {
@@ -217,9 +219,9 @@
     for (size_t i = 1; i < mSwapHistory.size(); i++) {
         auto& swapB = mSwapHistory[i];
 
-        // If there's a frameInterval gap we effectively already dropped a frame,
+        // If there's a multi-frameInterval gap we effectively already dropped a frame,
         // so consider the queue healthy.
-        if (swapA.swapCompletedTime - swapB.swapCompletedTime > frameInterval) {
+        if (swapA.swapCompletedTime - swapB.swapCompletedTime > frameInterval * 3) {
             return false;
         }
 
@@ -234,6 +236,7 @@
     }
 
     // All signs point to a stuffed swap chain
+    ATRACE_NAME("swap chain stuffed");
     return true;
 }
 
@@ -293,12 +296,17 @@
             // Already drew for this vsync pulse, UI draw request missed
             // the deadline for RT animations
             info.out.canDrawThisFrame = false;
-        } else if (vsyncDelta >= mRenderThread.timeLord().frameIntervalNanos()) {
-            // It's been at least an entire frame interval, assume
-            // the buffer queue is fine
+        } else if (vsyncDelta >= mRenderThread.timeLord().frameIntervalNanos() * 3
+                || (latestVsync - mLastDropVsync) < 500_ms) {
+            // It's been several frame intervals, assume the buffer queue is fine
+            // or the last drop was too recent
             info.out.canDrawThisFrame = true;
         } else {
             info.out.canDrawThisFrame = !isSwapChainStuffed();
+            if (!info.out.canDrawThisFrame) {
+                // dropping frame
+                mLastDropVsync = mRenderThread.timeLord().latestVsync();
+            }
         }
     } else {
         info.out.canDrawThisFrame = true;
@@ -328,9 +336,6 @@
 }
 
 void CanvasContext::draw() {
-    LOG_ALWAYS_FATAL_IF(mEglSurface == EGL_NO_SURFACE,
-            "drawRenderNode called on a context with no surface!");
-
     SkRect dirty;
     mDamageAccumulator.finish(&dirty);
 
@@ -342,98 +347,27 @@
 
     mCurrentFrameInfo->markIssueDrawCommandsStart();
 
-    Frame frame = mEglManager.beginFrame(mEglSurface);
+    Frame frame = mRenderPipeline->getFrame();
 
-    if (frame.width() != mLastFrameWidth || frame.height() != mLastFrameHeight) {
-        // can't rely on prior content of window if viewport size changes
-        dirty.setEmpty();
-        mLastFrameWidth = frame.width();
-        mLastFrameHeight = frame.height();
-    } else if (mHaveNewSurface || frame.bufferAge() == 0) {
-        // New surface needs a full draw
-        dirty.setEmpty();
-    } else {
-        if (!dirty.isEmpty() && !dirty.intersect(0, 0, frame.width(), frame.height())) {
-            ALOGW("Dirty " RECT_STRING " doesn't intersect with 0 0 %d %d ?",
-                    SK_RECT_ARGS(dirty), frame.width(), frame.height());
-            dirty.setEmpty();
-        }
-        profiler().unionDirty(&dirty);
-    }
+    SkRect windowDirty = computeDirtyRect(frame, &dirty);
 
-    if (dirty.isEmpty()) {
-        dirty.set(0, 0, frame.width(), frame.height());
-    }
-
-    // At this point dirty is the area of the screen to update. However,
-    // the area of the frame we need to repaint is potentially different, so
-    // stash the screen area for later
-    SkRect screenDirty(dirty);
-
-    // If the buffer age is 0 we do a full-screen repaint (handled above)
-    // If the buffer age is 1 the buffer contents are the same as they were
-    // last frame so there's nothing to union() against
-    // Therefore we only care about the > 1 case.
-    if (frame.bufferAge() > 1) {
-        if (frame.bufferAge() > (int) mSwapHistory.size()) {
-            // We don't have enough history to handle this old of a buffer
-            // Just do a full-draw
-            dirty.set(0, 0, frame.width(), frame.height());
-        } else {
-            // At this point we haven't yet added the latest frame
-            // to the damage history (happens below)
-            // So we need to damage
-            for (int i = mSwapHistory.size() - 1;
-                    i > ((int) mSwapHistory.size()) - frame.bufferAge(); i--) {
-                dirty.join(mSwapHistory[i].damage);
-            }
-        }
-    }
-
-    mEglManager.damageFrame(frame, dirty);
-
-    auto& caches = Caches::getInstance();
-    FrameBuilder frameBuilder(dirty, frame.width(), frame.height(), mLightGeometry, caches);
-
-    frameBuilder.deferLayers(mLayerUpdateQueue);
-    mLayerUpdateQueue.clear();
-
-    frameBuilder.deferRenderNodeScene(mRenderNodes, mContentDrawBounds);
-
-    BakedOpRenderer renderer(caches, mRenderThread.renderState(),
-            mOpaque, mLightInfo);
-    frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer);
-    profiler().draw(&renderer);
-    bool drew = renderer.didDraw();
-
-    // post frame cleanup
-    caches.clearGarbage();
-    caches.pathCache.trim();
-    caches.tessellationCache.trim();
-
-#if DEBUG_MEMORY_USAGE
-    mCaches.dumpMemoryUsage();
-#else
-    if (CC_UNLIKELY(Properties::debugLevel & kDebugMemory)) {
-        caches.dumpMemoryUsage();
-    }
-#endif
+    bool drew = mRenderPipeline->draw(frame, windowDirty, dirty, mLightGeometry, &mLayerUpdateQueue,
+            mContentDrawBounds, mOpaque, mLightInfo, mRenderNodes, &(profiler()));
 
     waitOnFences();
 
-    GL_CHECKPOINT(LOW);
+    bool requireSwap = false;
+    bool didSwap = mRenderPipeline->swapBuffers(frame, drew, windowDirty, mCurrentFrameInfo,
+            &requireSwap);
 
-    // Even if we decided to cancel the frame, from the perspective of jank
-    // metrics the frame was swapped at this point
-    mCurrentFrameInfo->markSwapBuffers();
     mIsDirty = false;
 
-    if (drew || mEglManager.damageRequiresSwap()) {
-        if (CC_UNLIKELY(!mEglManager.swapBuffers(frame, screenDirty))) {
+    if (requireSwap) {
+        if (!didSwap) { //some error happened
             setSurface(nullptr);
         }
         SwapHistory& swap = mSwapHistory.next();
-        swap.damage = screenDirty;
+        swap.damage = windowDirty;
         swap.swapCompletedTime = systemTime(CLOCK_MONOTONIC);
         swap.vsyncTime = mRenderThread.timeLord().latestVsync();
         mHaveNewSurface = false;
@@ -469,7 +403,7 @@
 
 // Called by choreographer to do an RT-driven animation
 void CanvasContext::doFrame() {
-    if (CC_UNLIKELY(mEglSurface == EGL_NO_SURFACE)) return;
+    if (!mRenderPipeline->isSurfaceReady()) return;
     prepareAndDraw(nullptr);
 }
 
@@ -519,7 +453,7 @@
 
 void CanvasContext::buildLayer(RenderNode* node, TreeObserver* observer) {
     ATRACE_CALL();
-    if (!mEglManager.hasEglContext()) return;
+    if (!mRenderPipeline->isContextReady()) return;
 
     // buildLayer() will leave the tree in an unknown state, so we must stop drawing
     stopDrawing();
@@ -536,37 +470,24 @@
     // purposes when the frame is actually drawn
     node->setPropertyFieldsDirty(RenderNode::GENERIC);
 
-    static const std::vector< sp<RenderNode> > emptyNodeList;
-    auto& caches = Caches::getInstance();
-    FrameBuilder frameBuilder(mLayerUpdateQueue, mLightGeometry, caches);
-    mLayerUpdateQueue.clear();
-    BakedOpRenderer renderer(caches, mRenderThread.renderState(),
-            mOpaque, mLightInfo);
-    LOG_ALWAYS_FATAL_IF(renderer.didDraw(), "shouldn't draw in buildlayer case");
-    frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer);
+    mRenderPipeline->renderLayers(mLightGeometry, &mLayerUpdateQueue, mOpaque, mLightInfo);
 
     node->incStrong(nullptr);
     mPrefetchedLayers.insert(node);
 }
 
 bool CanvasContext::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) {
-    layer->apply();
-    return Readback::copyTextureLayerInto(mRenderThread, *(layer->backingLayer()), bitmap)
-            == CopyResult::Success;
+    return mRenderPipeline->copyLayerInto(layer, bitmap);
 }
 
 void CanvasContext::destroyHardwareResources(TreeObserver* observer) {
     stopDrawing();
-    if (mEglManager.hasEglContext()) {
+    if (mRenderPipeline->isContextReady()) {
         freePrefetchedLayers(observer);
         for (const sp<RenderNode>& node : mRenderNodes) {
             node->destroyHardwareResources(observer);
         }
-        Caches& caches = Caches::getInstance();
-        // Make sure to release all the textures we were owning as there won't
-        // be another draw
-        caches.textureCache.resetMarkInUse(this);
-        mRenderThread.renderState().flush(Caches::FlushMode::Layers);
+        mRenderPipeline->onDestroyHardwareResources();
     }
 }
 
@@ -584,8 +505,7 @@
 }
 
 Layer* CanvasContext::createTextureLayer() {
-    mEglManager.initialize();
-    return LayerRenderer::createTextureLayer(mRenderThread.renderState());
+    return mRenderPipeline->createTextureLayer();
 }
 
 void CanvasContext::setTextureAtlas(RenderThread& thread,
@@ -665,8 +585,8 @@
 
 class CanvasContext::FuncTaskProcessor : public TaskProcessor<bool> {
 public:
-    explicit FuncTaskProcessor(Caches& caches)
-            : TaskProcessor<bool>(&caches.tasks) {}
+    explicit FuncTaskProcessor(TaskManager* taskManager)
+            : TaskProcessor<bool>(taskManager) {}
 
     virtual void onProcess(const sp<Task<bool> >& task) override {
         FuncTask* t = static_cast<FuncTask*>(task.get());
@@ -677,7 +597,7 @@
 
 void CanvasContext::enqueueFrameWork(std::function<void()>&& func) {
     if (!mFrameWorkProcessor.get()) {
-        mFrameWorkProcessor = new FuncTaskProcessor(Caches::getInstance());
+        mFrameWorkProcessor = new FuncTaskProcessor(mRenderPipeline->getTaskManager());
     }
     sp<FuncTask> task(new FuncTask());
     task->func = func;
@@ -693,9 +613,54 @@
     return mFrameNumber;
 }
 
-bool CanvasContext::isSkiaEnabled() {
-    auto renderType = Properties::getRenderPipelineType();
-    return RenderPipelineType::SkiaGL == renderType || RenderPipelineType::Vulkan == renderType;
+SkRect CanvasContext::computeDirtyRect(const Frame& frame, SkRect* dirty) {
+    if (frame.width() != mLastFrameWidth || frame.height() != mLastFrameHeight) {
+        // can't rely on prior content of window if viewport size changes
+        dirty->setEmpty();
+        mLastFrameWidth = frame.width();
+        mLastFrameHeight = frame.height();
+    } else if (mHaveNewSurface || frame.bufferAge() == 0) {
+        // New surface needs a full draw
+        dirty->setEmpty();
+    } else {
+        if (!dirty->isEmpty() && !dirty->intersect(0, 0, frame.width(), frame.height())) {
+            ALOGW("Dirty " RECT_STRING " doesn't intersect with 0 0 %d %d ?",
+                    SK_RECT_ARGS(*dirty), frame.width(), frame.height());
+            dirty->setEmpty();
+        }
+        profiler().unionDirty(dirty);
+    }
+
+    if (dirty->isEmpty()) {
+        dirty->set(0, 0, frame.width(), frame.height());
+    }
+
+    // At this point dirty is the area of the window to update. However,
+    // the area of the frame we need to repaint is potentially different, so
+    // stash the screen area for later
+    SkRect windowDirty(*dirty);
+
+    // If the buffer age is 0 we do a full-screen repaint (handled above)
+    // If the buffer age is 1 the buffer contents are the same as they were
+    // last frame so there's nothing to union() against
+    // Therefore we only care about the > 1 case.
+    if (frame.bufferAge() > 1) {
+        if (frame.bufferAge() > (int) mSwapHistory.size()) {
+            // We don't have enough history to handle this old of a buffer
+            // Just do a full-draw
+            dirty->set(0, 0, frame.width(), frame.height());
+        } else {
+            // At this point we haven't yet added the latest frame
+            // to the damage history (happens below)
+            // So we need to damage
+            for (int i = mSwapHistory.size() - 1;
+                    i > ((int) mSwapHistory.size()) - frame.bufferAge(); i--) {
+                dirty->join(mSwapHistory[i].damage);
+            }
+        }
+    }
+
+    return windowDirty;
 }
 
 } /* namespace renderthread */
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index 72f1268..688bf2a 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -24,6 +24,7 @@
 #include "FrameInfoVisualizer.h"
 #include "FrameMetricsReporter.h"
 #include "IContextFactory.h"
+#include "IRenderPipeline.h"
 #include "LayerUpdateQueue.h"
 #include "RenderNode.h"
 #include "thread/Task.h"
@@ -56,11 +57,7 @@
 namespace renderthread {
 
 class EglManager;
-
-enum SwapBehavior {
-    kSwap_default,
-    kSwap_discardBuffer,
-};
+class Frame;
 
 // This per-renderer class manages the bridge between the global EGL context
 // and the render surface.
@@ -102,7 +99,6 @@
     static void trimMemory(RenderThread& thread, int level);
 
     static void invokeFunctor(RenderThread& thread, Functor* functor);
-    static bool isSkiaEnabled();
 
     Layer* createTextureLayer();
 
@@ -164,7 +160,7 @@
 
 private:
     CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode,
-            IContextFactory* contextFactory);
+            IContextFactory* contextFactory, std::unique_ptr<IRenderPipeline> renderPipeline);
 
     friend class RegisterFrameCallbackTask;
     // TODO: Replace with something better for layer & other GL object
@@ -179,21 +175,20 @@
 
     bool isSwapChainStuffed();
 
+    SkRect computeDirtyRect(const Frame& frame, SkRect* dirty);
+
     EGLint mLastFrameWidth = 0;
     EGLint mLastFrameHeight = 0;
 
     RenderThread& mRenderThread;
-    EglManager& mEglManager;
     sp<Surface> mNativeSurface;
-    EGLSurface mEglSurface = EGL_NO_SURFACE;
     // stopped indicates the CanvasContext will reject actual redraw operations,
     // and defer repaint until it is un-stopped
     bool mStopped = false;
     // CanvasContext is dirty if it has received an update that it has not
     // painted onto its surface.
     bool mIsDirty = false;
-    bool mBufferPreserved = false;
-    SwapBehavior mSwapBehavior = kSwap_default;
+    SwapBehavior mSwapBehavior = SwapBehavior::kSwap_default;
     struct SwapHistory {
         SkRect damage;
         nsecs_t vsyncTime;
@@ -205,6 +200,9 @@
     RingBuffer<SwapHistory, 3> mSwapHistory;
     int64_t mFrameNumber = -1;
 
+    // last vsync for a dropped frame due to stuffed queue
+    nsecs_t mLastDropVsync = 0;
+
     bool mOpaque;
     BakedOpRenderer::LightInfo mLightInfo;
     FrameBuilder::LightGeometry mLightGeometry = { {0, 0, 0}, 0 };
@@ -238,6 +236,7 @@
 
     std::vector< sp<FuncTask> > mFrameFences;
     sp<TaskProcessor<bool> > mFrameWorkProcessor;
+    std::unique_ptr<IRenderPipeline> mRenderPipeline;
 };
 
 } /* namespace renderthread */
diff --git a/libs/hwui/renderthread/IRenderPipeline.h b/libs/hwui/renderthread/IRenderPipeline.h
new file mode 100644
index 0000000..0c0fbe9
--- /dev/null
+++ b/libs/hwui/renderthread/IRenderPipeline.h
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include "FrameInfoVisualizer.h"
+#include "EglManager.h"
+
+#include <SkRect.h>
+#include <utils/RefBase.h>
+
+namespace android {
+
+class Surface;
+
+namespace uirenderer {
+
+class DeferredLayerUpdater;
+
+namespace renderthread {
+
+enum class SwapBehavior {
+    kSwap_default,
+    kSwap_discardBuffer,
+};
+
+enum class MakeCurrentResult {
+    AlreadyCurrent,
+    Failed,
+    Succeeded
+};
+
+class IRenderPipeline {
+public:
+    virtual MakeCurrentResult makeCurrent() = 0;
+    virtual Frame getFrame() = 0;
+    virtual bool draw(const Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
+            const FrameBuilder::LightGeometry& lightGeometry,
+            LayerUpdateQueue* layerUpdateQueue,
+            const Rect& contentDrawBounds, bool opaque,
+            const BakedOpRenderer::LightInfo& lightInfo,
+            const std::vector< sp<RenderNode> >& renderNodes,
+            FrameInfoVisualizer* profiler) = 0;
+    virtual bool swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
+            FrameInfo* currentFrameInfo, bool* requireSwap) = 0;
+    virtual bool copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) = 0;
+    virtual Layer* createTextureLayer() = 0;
+    virtual bool setSurface(Surface* window, SwapBehavior swapBehavior) = 0;
+    virtual void onStop() = 0;
+    virtual bool isSurfaceReady() = 0;
+    virtual bool isContextReady() = 0;
+    virtual void onDestroyHardwareResources() = 0;
+    virtual void renderLayers(const FrameBuilder::LightGeometry& lightGeometry,
+            LayerUpdateQueue* layerUpdateQueue, bool opaque,
+            const BakedOpRenderer::LightInfo& lightInfo) = 0;
+    virtual TaskManager* getTaskManager() = 0;
+
+    virtual ~IRenderPipeline() {}
+};
+
+} /* namespace renderthread */
+} /* namespace uirenderer */
+} /* namespace android */
diff --git a/libs/hwui/renderthread/OpenGLPipeline.cpp b/libs/hwui/renderthread/OpenGLPipeline.cpp
new file mode 100644
index 0000000..3a2b155
--- /dev/null
+++ b/libs/hwui/renderthread/OpenGLPipeline.cpp
@@ -0,0 +1,189 @@
+/*
+ * 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 "OpenGLPipeline.h"
+
+#include "DeferredLayerUpdater.h"
+#include "EglManager.h"
+#include "LayerRenderer.h"
+#include "renderstate/RenderState.h"
+#include "Readback.h"
+
+#include <android/native_window.h>
+#include <cutils/properties.h>
+#include <strings.h>
+
+namespace android {
+namespace uirenderer {
+namespace renderthread {
+
+OpenGLPipeline::OpenGLPipeline(RenderThread& thread)
+        :  mEglManager(thread.eglManager()), mRenderThread(thread) {
+}
+
+MakeCurrentResult OpenGLPipeline::makeCurrent() {
+    // TODO: Figure out why this workaround is needed, see b/13913604
+    // In the meantime this matches the behavior of GLRenderer, so it is not a regression
+    EGLint error = 0;
+    bool haveNewSurface = mEglManager.makeCurrent(mEglSurface, &error);
+
+    Caches::getInstance().textureCache.resetMarkInUse(this);
+    if (!haveNewSurface) {
+        return MakeCurrentResult::AlreadyCurrent;
+    }
+    return error ? MakeCurrentResult::Failed : MakeCurrentResult::Succeeded;
+}
+
+Frame OpenGLPipeline::getFrame() {
+    LOG_ALWAYS_FATAL_IF(mEglSurface == EGL_NO_SURFACE,
+                "drawRenderNode called on a context with no surface!");
+    return mEglManager.beginFrame(mEglSurface);
+}
+
+bool OpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
+        const FrameBuilder::LightGeometry& lightGeometry,
+        LayerUpdateQueue* layerUpdateQueue,
+        const Rect& contentDrawBounds, bool opaque,
+        const BakedOpRenderer::LightInfo& lightInfo,
+        const std::vector< sp<RenderNode> >& renderNodes,
+        FrameInfoVisualizer* profiler) {
+
+    mEglManager.damageFrame(frame, dirty);
+
+    bool drew = false;
+
+
+    auto& caches = Caches::getInstance();
+    FrameBuilder frameBuilder(dirty, frame.width(), frame.height(), lightGeometry, caches);
+
+    frameBuilder.deferLayers(*layerUpdateQueue);
+    layerUpdateQueue->clear();
+
+    frameBuilder.deferRenderNodeScene(renderNodes, contentDrawBounds);
+
+    BakedOpRenderer renderer(caches, mRenderThread.renderState(),
+            opaque, lightInfo);
+    frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer);
+    profiler->draw(&renderer);
+    drew = renderer.didDraw();
+
+    // post frame cleanup
+    caches.clearGarbage();
+    caches.pathCache.trim();
+    caches.tessellationCache.trim();
+
+#if DEBUG_MEMORY_USAGE
+    mCaches.dumpMemoryUsage();
+#else
+    if (CC_UNLIKELY(Properties::debugLevel & kDebugMemory)) {
+        caches.dumpMemoryUsage();
+    }
+#endif
+
+    return drew;
+}
+
+bool OpenGLPipeline::swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
+        FrameInfo* currentFrameInfo, bool* requireSwap) {
+
+    GL_CHECKPOINT(LOW);
+
+    // Even if we decided to cancel the frame, from the perspective of jank
+    // metrics the frame was swapped at this point
+    currentFrameInfo->markSwapBuffers();
+
+    *requireSwap = drew || mEglManager.damageRequiresSwap();
+
+    if (*requireSwap && (CC_UNLIKELY(!mEglManager.swapBuffers(frame, screenDirty)))) {
+        return false;
+    }
+
+    return *requireSwap;
+}
+
+bool OpenGLPipeline::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) {
+    layer->apply();
+    return Readback::copyTextureLayerInto(mRenderThread, *(layer->backingLayer()), bitmap)
+            == CopyResult::Success;
+}
+
+Layer* OpenGLPipeline::createTextureLayer() {
+    mEglManager.initialize();
+    return LayerRenderer::createTextureLayer(mRenderThread.renderState());
+}
+
+void OpenGLPipeline::onStop() {
+    if (mEglManager.isCurrent(mEglSurface)) {
+        mEglManager.makeCurrent(EGL_NO_SURFACE);
+    }
+}
+
+bool OpenGLPipeline::setSurface(Surface* surface, SwapBehavior swapBehavior) {
+
+    if (mEglSurface != EGL_NO_SURFACE) {
+        mEglManager.destroySurface(mEglSurface);
+        mEglSurface = EGL_NO_SURFACE;
+    }
+
+    if (surface) {
+        mEglSurface = mEglManager.createSurface(surface);
+    }
+
+    if (mEglSurface != EGL_NO_SURFACE) {
+        const bool preserveBuffer = (swapBehavior != SwapBehavior::kSwap_discardBuffer);
+        mBufferPreserved = mEglManager.setPreserveBuffer(mEglSurface, preserveBuffer);
+        return true;
+    }
+
+    return false;
+}
+
+bool OpenGLPipeline::isSurfaceReady() {
+    return CC_UNLIKELY(mEglSurface != EGL_NO_SURFACE);
+}
+
+bool OpenGLPipeline::isContextReady() {
+    return CC_LIKELY(mEglManager.hasEglContext());
+}
+
+void OpenGLPipeline::onDestroyHardwareResources() {
+    Caches& caches = Caches::getInstance();
+    // Make sure to release all the textures we were owning as there won't
+    // be another draw
+    caches.textureCache.resetMarkInUse(this);
+    mRenderThread.renderState().flush(Caches::FlushMode::Layers);
+}
+
+void OpenGLPipeline::renderLayers(const FrameBuilder::LightGeometry& lightGeometry,
+        LayerUpdateQueue* layerUpdateQueue, bool opaque,
+        const BakedOpRenderer::LightInfo& lightInfo) {
+    static const std::vector< sp<RenderNode> > emptyNodeList;
+    auto& caches = Caches::getInstance();
+    FrameBuilder frameBuilder(*layerUpdateQueue, lightGeometry, caches);
+    layerUpdateQueue->clear();
+    BakedOpRenderer renderer(caches, mRenderThread.renderState(),
+            opaque, lightInfo);
+    LOG_ALWAYS_FATAL_IF(renderer.didDraw(), "shouldn't draw in buildlayer case");
+    frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer);
+}
+
+TaskManager* OpenGLPipeline::getTaskManager() {
+    return &Caches::getInstance().tasks;
+}
+
+} /* namespace renderthread */
+} /* namespace uirenderer */
+} /* namespace android */
diff --git a/libs/hwui/renderthread/OpenGLPipeline.h b/libs/hwui/renderthread/OpenGLPipeline.h
new file mode 100644
index 0000000..a6d22ee
--- /dev/null
+++ b/libs/hwui/renderthread/OpenGLPipeline.h
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include "CanvasContext.h"
+#include "BakedOpDispatcher.h"
+#include "BakedOpRenderer.h"
+#include "FrameBuilder.h"
+#include "IRenderPipeline.h"
+
+namespace android {
+namespace uirenderer {
+namespace renderthread {
+
+class Frame;
+
+
+class OpenGLPipeline : public IRenderPipeline {
+public:
+    OpenGLPipeline(RenderThread& thread);
+    virtual ~OpenGLPipeline() {}
+
+    MakeCurrentResult makeCurrent() override;
+    Frame getFrame() override;
+    bool draw(const Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
+            const FrameBuilder::LightGeometry& lightGeometry,
+            LayerUpdateQueue* layerUpdateQueue,
+            const Rect& contentDrawBounds, bool opaque,
+            const BakedOpRenderer::LightInfo& lightInfo,
+            const std::vector< sp<RenderNode> >& renderNodes,
+            FrameInfoVisualizer* profiler) override;
+    bool swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
+            FrameInfo* currentFrameInfo, bool* requireSwap) override;
+    bool copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap) override;
+    Layer* createTextureLayer() override;
+    bool setSurface(Surface* window, SwapBehavior swapBehavior) override;
+    void onStop() override;
+    bool isSurfaceReady() override;
+    bool isContextReady() override;
+    void onDestroyHardwareResources() override;
+    void renderLayers(const FrameBuilder::LightGeometry& lightGeometry,
+            LayerUpdateQueue* layerUpdateQueue, bool opaque,
+            const BakedOpRenderer::LightInfo& lightInfo) override;
+    TaskManager* getTaskManager() override;
+
+private:
+    EglManager& mEglManager;
+    EGLSurface mEglSurface = EGL_NO_SURFACE;
+    bool mBufferPreserved = false;
+    RenderThread& mRenderThread;
+};
+
+} /* namespace renderthread */
+} /* namespace uirenderer */
+} /* namespace android */
diff --git a/libs/hwui/tests/common/TestContext.cpp b/libs/hwui/tests/common/TestContext.cpp
index 1c7e7ee..5e937f3 100644
--- a/libs/hwui/tests/common/TestContext.cpp
+++ b/libs/hwui/tests/common/TestContext.cpp
@@ -33,7 +33,6 @@
     false, // secure?
     0, // appVsyncOffset
     0, // presentationDeadline
-    0, // colorTransform
 };
 
 DisplayInfo getBuiltInDisplay() {
diff --git a/libs/hwui/tests/common/TestScene.h b/libs/hwui/tests/common/TestScene.h
index 4813ff0..daeb9ea 100644
--- a/libs/hwui/tests/common/TestScene.h
+++ b/libs/hwui/tests/common/TestScene.h
@@ -33,7 +33,7 @@
     struct Options {
         int count = 0;
         int reportFrametimeWeight = 0;
-        bool renderOffscreen = false;
+        bool renderOffscreen = true;
     };
 
     template <class T>
diff --git a/libs/hwui/tests/macrobench/how_to_run.txt b/libs/hwui/tests/macrobench/how_to_run.txt
index b051768f..3c3d36a 100644
--- a/libs/hwui/tests/macrobench/how_to_run.txt
+++ b/libs/hwui/tests/macrobench/how_to_run.txt
@@ -1,5 +1,5 @@
 mmm -j8 frameworks/base/libs/hwui/ &&
-    adb push $OUT/data/local/tmp/hwuitest /data/local/tmp/hwuitest &&
-    adb shell /data/local/tmp/hwuitest
+adb push $OUT/data/benchmarktest/hwuimacro/hwuimacro /data/benchmarktest/hwuimacro/hwuimacro &&
+adb shell /data/benchmarktest/hwuimacro/hwuimacro shadowgrid2 --onscreen
 
 Pass --help to get help
diff --git a/libs/hwui/tests/macrobench/main.cpp b/libs/hwui/tests/macrobench/main.cpp
index ffeef45..ebc1dd7 100644
--- a/libs/hwui/tests/macrobench/main.cpp
+++ b/libs/hwui/tests/macrobench/main.cpp
@@ -49,7 +49,7 @@
 
 static void printHelp() {
     printf(R"(
-USAGE: hwuitest [OPTIONS] <TESTNAME>
+USAGE: hwuimacro [OPTIONS] <TESTNAME>
 
 OPTIONS:
   -c, --count=NUM      NUM loops a test should run (example, number of frames)
@@ -63,6 +63,10 @@
                        moving average frametime. Weight is optional, default is 10
   --cpuset=name        Adds the test to the specified cpuset before running
                        Not supported on all devices and needs root
+  --offscreen          Render tests off device screen. This option is on by default
+  --onscreen           Render tests on device screen. By default tests
+                       are offscreen rendered
+  --benchmark_format   Set output format. Possible values are tabular, json, csv
 )");
 }
 
@@ -150,6 +154,7 @@
     ReportFrametime,
     CpuSet,
     BenchmarkFormat,
+    Onscreen,
     Offscreen,
 };
 }
@@ -163,6 +168,7 @@
     { "report-frametime", optional_argument, nullptr, LongOpts::ReportFrametime },
     { "cpuset", required_argument, nullptr, LongOpts::CpuSet },
     { "benchmark_format", required_argument, nullptr, LongOpts::BenchmarkFormat },
+    { "onscreen", no_argument, nullptr, LongOpts::Onscreen },
     { "offscreen", no_argument, nullptr, LongOpts::Offscreen },
     { 0, 0, 0, 0 }
 };
@@ -247,6 +253,10 @@
             }
             break;
 
+        case LongOpts::Onscreen:
+            gOpts.renderOffscreen = false;
+            break;
+
         case LongOpts::Offscreen:
             gOpts.renderOffscreen = true;
             break;
@@ -274,22 +284,18 @@
     if (optind < argc) {
         do {
             const char* test = argv[optind++];
-            if (!strcmp(test, "all")) {
-                for (auto& iter : TestScene::testMap()) {
-                    gRunTests.push_back(iter.second);
-                }
+            auto pos = TestScene::testMap().find(test);
+            if (pos == TestScene::testMap().end()) {
+                fprintf(stderr, "Unknown test '%s'\n", test);
+                exit(EXIT_FAILURE);
             } else {
-                auto pos = TestScene::testMap().find(test);
-                if (pos == TestScene::testMap().end()) {
-                    fprintf(stderr, "Unknown test '%s'\n", test);
-                    exit(EXIT_FAILURE);
-                } else {
-                    gRunTests.push_back(pos->second);
-                }
+                gRunTests.push_back(pos->second);
             }
         } while (optind < argc);
     } else {
-        gRunTests.push_back(TestScene::testMap()["shadowgrid"]);
+        for (auto& iter : TestScene::testMap()) {
+            gRunTests.push_back(iter.second);
+        }
     }
 }
 
diff --git a/libs/hwui/tests/unit/ClipAreaTests.cpp b/libs/hwui/tests/unit/ClipAreaTests.cpp
index afabd35..d4d7919 100644
--- a/libs/hwui/tests/unit/ClipAreaTests.cpp
+++ b/libs/hwui/tests/unit/ClipAreaTests.cpp
@@ -334,5 +334,14 @@
     EXPECT_EQ(SkIRect::MakeLTRB(12, 26, 16, 32), region.getBounds());
 }
 
+TEST(ClipArea, applyTransformToRegion_rotate90) {
+    SkRegion region(SkIRect::MakeLTRB(1, 2, 3, 4));
+    Matrix4 transform;
+    transform.loadRotate(90);
+    ClipArea::applyTransformToRegion(transform, &region);
+    EXPECT_TRUE(region.isRect());
+    EXPECT_EQ(SkIRect::MakeLTRB(-4, 1, -2, 3), region.getBounds());
+}
+
 } // namespace uirenderer
 } // namespace android
diff --git a/libs/hwui/tests/unit/RenderPropertiesTests.cpp b/libs/hwui/tests/unit/RenderPropertiesTests.cpp
index 9001098..85655fc 100644
--- a/libs/hwui/tests/unit/RenderPropertiesTests.cpp
+++ b/libs/hwui/tests/unit/RenderPropertiesTests.cpp
@@ -42,7 +42,7 @@
     props.setLeftTopRightBottom(0, 0, maxTextureSize + 1, maxTextureSize + 1);
     ASSERT_FALSE(props.fitsOnLayer());
 
-    // Too small - can't have 0 dimen layer
+    // Too small, but still 'fits'. Not fitting is an error case, so don't report empty as such.
     props.setLeftTopRightBottom(0, 0, 100, 0);
-    ASSERT_FALSE(props.fitsOnLayer());
+    ASSERT_TRUE(props.fitsOnLayer());
 }
diff --git a/location/java/android/location/GnssMeasurementsEvent.java b/location/java/android/location/GnssMeasurementsEvent.java
index 3151694..7db0466 100644
--- a/location/java/android/location/GnssMeasurementsEvent.java
+++ b/location/java/android/location/GnssMeasurementsEvent.java
@@ -98,13 +98,13 @@
             throw new InvalidParameterException("Parameter 'clock' must not be null.");
         }
         if (measurements == null || measurements.length == 0) {
-            throw new InvalidParameterException(
-                    "Parameter 'measurements' must not be null or empty.");
+            mReadOnlyMeasurements = Collections.emptyList();
+        } else {
+            Collection<GnssMeasurement> measurementCollection = Arrays.asList(measurements);
+            mReadOnlyMeasurements = Collections.unmodifiableCollection(measurementCollection);
         }
 
         mClock = clock;
-        Collection<GnssMeasurement> measurementCollection = Arrays.asList(measurements);
-        mReadOnlyMeasurements = Collections.unmodifiableCollection(measurementCollection);
     }
 
     /**
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java
index a4484e7..81cc93d 100644
--- a/media/java/android/media/AudioFormat.java
+++ b/media/java/android/media/AudioFormat.java
@@ -263,6 +263,9 @@
      * on some platforms when converting to short internally.
      */
     public static final int ENCODING_IEC61937 = 13;
+    /** Audio data format: DOLBY TRUEHD compressed
+     **/
+    public static final int ENCODING_DOLBY_TRUEHD = 14;
 
     /** Invalid audio channel configuration */
     /** @deprecated Use {@link #CHANNEL_INVALID} instead.  */
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 2ea2e86..563d9cb 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -42,6 +42,7 @@
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.text.ParsePosition;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
@@ -348,6 +349,11 @@
     public static final String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
     /** Type is int. DNG Specification 1.4.0.0. Section 4 */
     public static final String TAG_DEFAULT_CROP_SIZE = "DefaultCropSize";
+    /** Type is int. ORF Specification. http://www.exiv2.org/tags-olympus.html */
+    public static final String TAG_THUMBNAIL_IMAGE = "ThumbnailImage";
+    public static final String TAG_PREVIEW_IMAGE_START = "PreviewImageStart";
+    public static final String TAG_PREVIEW_IMAGE_LENGTH = "PreviewImageLength";
+    public static final String TAG_ASPECT_FRAME = "AspectFrame";
 
     /**
      * Private tags used for pointing the other IFD offsets.
@@ -359,6 +365,10 @@
     private static final String TAG_GPS_INFO_IFD_POINTER = "GPSInfoIFDPointer";
     private static final String TAG_INTEROPERABILITY_IFD_POINTER = "InteroperabilityIFDPointer";
     private static final String TAG_SUB_IFD_POINTER = "SubIFDPointer";
+    // Proprietary pointer tags used for ORF file format.
+    // See http://www.exiv2.org/tags-olympus.html
+    private static final String TAG_CAMERA_SETTINGS_IFD_POINTER = "CameraSettingsIFDPointer";
+    private static final String TAG_IMAGE_PROCESSING_IFD_POINTER = "ImageProcessingIFDPointer";
 
     // Private tags used for thumbnail information.
     private static final String TAG_HAS_THUMBNAIL = "HasThumbnail";
@@ -384,8 +394,28 @@
     public static final int WHITEBALANCE_AUTO = 0;
     public static final int WHITEBALANCE_MANUAL = 1;
 
+    // Maximum size for checking file type signature (see image_type_recognition_lite.cc)
+    private static final int SIGNATURE_CHECK_SIZE = 5000;
+
     private static final byte[] JPEG_SIGNATURE = new byte[] {(byte) 0xff, (byte) 0xd8, (byte) 0xff};
-    private static final int JPEG_SIGNATURE_SIZE = 3;
+    private static final String RAF_SIGNATURE = "FUJIFILMCCD-RAW";
+    private static final int RAF_OFFSET_TO_JPEG_IMAGE_OFFSET = 84;
+    private static final int RAF_INFO_SIZE = 160;
+    private static final int RAF_JPEG_LENGTH_VALUE_SIZE = 4;
+
+    // See http://fileformats.archiveteam.org/wiki/Olympus_ORF
+    private static final short ORF_SIGNATURE_1 = 0x4f52;
+    private static final short ORF_SIGNATURE_2 = 0x5352;
+    // There are two formats for Olympus Makernote Headers. Each has different identifiers and
+    // offsets to the actual data.
+    // See http://www.exiv2.org/makernote.html#R1
+    private static final byte[] ORF_MAKER_NOTE_HEADER_1 = new byte[] {(byte) 0x4f, (byte) 0x4c,
+            (byte) 0x59, (byte) 0x4d, (byte) 0x50, (byte) 0x00}; // "OLYMP\0"
+    private static final byte[] ORF_MAKER_NOTE_HEADER_2 = new byte[] {(byte) 0x4f, (byte) 0x4c,
+            (byte) 0x59, (byte) 0x4d, (byte) 0x50, (byte) 0x55, (byte) 0x53, (byte) 0x00,
+            (byte) 0x49, (byte) 0x49}; // "OLYMPUS\0II"
+    private static final int ORF_MAKER_NOTE_HEADER_1_SIZE = 8;
+    private static final int ORF_MAKER_NOTE_HEADER_2_SIZE = 12;
 
     private static SimpleDateFormat sFormatter;
 
@@ -415,6 +445,8 @@
     private static final int IFD_FORMAT_SRATIONAL = 10;
     private static final int IFD_FORMAT_SINGLE = 11;
     private static final int IFD_FORMAT_DOUBLE = 12;
+    // Format indicating a new IFD entry (See Adobe PageMaker® 6.0 TIFF Technical Notes, "New Tag")
+    private static final int IFD_FORMAT_IFD = 13;
     // Names for the data formats for debugging purpose.
     private static final String[] IFD_FORMAT_NAMES = new String[] {
             "", "BYTE", "STRING", "USHORT", "ULONG", "URATIONAL", "SBYTE", "UNDEFINED", "SSHORT",
@@ -422,7 +454,7 @@
     };
     // Sizes of the components of each IFD value format
     private static final int[] IFD_FORMAT_BYTES_PER_FORMAT = new int[] {
-            0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8
+            0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8, 1
     };
     private static final byte[] EXIF_ASCII_PREFIX = new byte[] {
             0x41, 0x53, 0x43, 0x49, 0x49, 0x0, 0x0, 0x0
@@ -1035,6 +1067,24 @@
             new ExifTag(TAG_GPS_INFO_IFD_POINTER, 34853, IFD_FORMAT_ULONG)
     };
 
+    // RAF file tag (See piex.cc line 372)
+    private static final ExifTag TAG_RAF_IMAGE_SIZE =
+            new ExifTag(TAG_STRIP_OFFSETS, 273, IFD_FORMAT_USHORT);
+
+    // ORF file tags (See http://www.exiv2.org/tags-olympus.html)
+    private static final ExifTag[] ORF_MAKER_NOTE_TAGS = new ExifTag[] {
+            new ExifTag(TAG_THUMBNAIL_IMAGE, 256, IFD_FORMAT_UNDEFINED),
+            new ExifTag(TAG_CAMERA_SETTINGS_IFD_POINTER, 8224, IFD_FORMAT_ULONG),
+            new ExifTag(TAG_IMAGE_PROCESSING_IFD_POINTER, 8256, IFD_FORMAT_ULONG)
+    };
+    private static final ExifTag[] ORF_CAMERA_SETTINGS_TAGS = new ExifTag[] {
+            new ExifTag(TAG_PREVIEW_IMAGE_START, 257, IFD_FORMAT_ULONG),
+            new ExifTag(TAG_PREVIEW_IMAGE_LENGTH, 258, IFD_FORMAT_ULONG)
+    };
+    private static final ExifTag[] ORF_IMAGE_PROCESSING_TAGS = new ExifTag[] {
+            new ExifTag(TAG_ASPECT_FRAME, 4371, IFD_FORMAT_USHORT)
+    };
+
     // See JEITA CP-3451C Section 4.6.3: Exif-specific IFD.
     // The following values are used for indicating pointers to the other Image File Directories.
 
@@ -1045,21 +1095,28 @@
     private static final int IFD_INTEROPERABILITY_HINT = 3;
     private static final int IFD_THUMBNAIL_HINT = 4;
     private static final int IFD_PREVIEW_HINT = 5;
+    private static final int ORF_MAKER_NOTE_HINT = 6;
+    private static final int ORF_CAMERA_SETTINGS_HINT = 7;
+    private static final int ORF_IMAGE_PROCESSING_HINT = 8;
     // List of Exif tag groups
     private static final ExifTag[][] EXIF_TAGS = new ExifTag[][] {
             IFD_TIFF_TAGS, IFD_EXIF_TAGS, IFD_GPS_TAGS, IFD_INTEROPERABILITY_TAGS,
-            IFD_THUMBNAIL_TAGS, IFD_TIFF_TAGS
+            IFD_THUMBNAIL_TAGS, IFD_TIFF_TAGS, ORF_MAKER_NOTE_TAGS, ORF_CAMERA_SETTINGS_TAGS,
+            ORF_IMAGE_PROCESSING_TAGS
     };
     // List of tags for pointing to the other image file directory offset.
-    private static final ExifTag[] IFD_POINTER_TAGS = new ExifTag[] {
+    private static final ExifTag[] EXIF_POINTER_TAGS = new ExifTag[] {
             new ExifTag(TAG_SUB_IFD_POINTER, 330, IFD_FORMAT_ULONG),
             new ExifTag(TAG_EXIF_IFD_POINTER, 34665, IFD_FORMAT_ULONG),
             new ExifTag(TAG_GPS_INFO_IFD_POINTER, 34853, IFD_FORMAT_ULONG),
-            new ExifTag(TAG_INTEROPERABILITY_IFD_POINTER, 40965, IFD_FORMAT_ULONG)
+            new ExifTag(TAG_INTEROPERABILITY_IFD_POINTER, 40965, IFD_FORMAT_ULONG),
+            new ExifTag(TAG_CAMERA_SETTINGS_IFD_POINTER, 8224, IFD_FORMAT_BYTE),
+            new ExifTag(TAG_IMAGE_PROCESSING_IFD_POINTER, 8256, IFD_FORMAT_BYTE)
     };
-    // List of indices of the indicated tag groups according to the IFD_POINTER_TAGS
-    private static final int[] IFD_POINTER_TAG_HINTS = new int[] {
-            IFD_TIFF_HINT, IFD_EXIF_HINT, IFD_GPS_HINT, IFD_INTEROPERABILITY_HINT
+    // List of indices of the indicated tag groups according to the EXIF_POINTER_TAGS
+    private static final int[] EXIF_POINTER_TAG_HINTS = new int[] {
+            IFD_TIFF_HINT, IFD_EXIF_HINT, IFD_GPS_HINT, IFD_INTEROPERABILITY_HINT,
+            ORF_CAMERA_SETTINGS_HINT, ORF_IMAGE_PROCESSING_HINT
     };
     // Tags for indicating the thumbnail offset and length
     private static final ExifTag JPEG_INTERCHANGE_FORMAT_TAG =
@@ -1106,6 +1163,20 @@
     private static final byte MARKER_COM = (byte) 0xfe;
     private static final byte MARKER_EOI = (byte) 0xd9;
 
+    // Supported Image File Types
+    private static final int IMAGE_TYPE_UNKNOWN = 0;
+    private static final int IMAGE_TYPE_ARW = 1;
+    private static final int IMAGE_TYPE_CR2 = 2;
+    private static final int IMAGE_TYPE_DNG = 3;
+    private static final int IMAGE_TYPE_JPEG = 4;
+    private static final int IMAGE_TYPE_NEF = 5;
+    private static final int IMAGE_TYPE_NRW = 6;
+    private static final int IMAGE_TYPE_ORF = 7;
+    private static final int IMAGE_TYPE_PEF = 8;
+    private static final int IMAGE_TYPE_RAF = 9;
+    private static final int IMAGE_TYPE_RW2 = 10;
+    private static final int IMAGE_TYPE_SRW = 11;
+
     static {
         System.loadLibrary("media_jni");
         nativeInitRaw();
@@ -1128,7 +1199,7 @@
     private final AssetManager.AssetInputStream mAssetInputStream;
     private final boolean mIsInputStream;
     private boolean mIsRaw;
-    private int mRawType;
+    private int mMimeType;
     private final HashMap[] mAttributes = new HashMap[EXIF_TAGS.length];
     private ByteOrder mExifByteOrder = ByteOrder.BIG_ENDIAN;
     private boolean mHasThumbnail;
@@ -1136,6 +1207,10 @@
     private int mThumbnailOffset;
     private int mThumbnailLength;
     private byte[] mThumbnailBytes;
+    private int mExifOffset;
+    private int mOrfMakerNoteOffset;
+    private int mOrfThumbnailOffset;
+    private int mOrfThumbnailLength;
 
     // Pattern to check non zero timestamp
     private static final Pattern sNonZeroTimePattern = Pattern.compile(".*[1-9].*");
@@ -1323,26 +1398,6 @@
     }
 
     /**
-     * Returns the long array value of the specified tag. If there is no such tag
-     * in the image file or the value cannot be parsed as an array of long, return null.
-     *
-     * @param tag the name of the tag.
-     */
-    public long[] getAttributeLongArray(String tag) {
-        ExifAttribute exifAttribute = getExifAttribute(tag);
-        if (exifAttribute == null) {
-            return null;
-        }
-
-        try {
-            return (long[]) exifAttribute.getValue(mExifByteOrder);
-        } catch (NumberFormatException e) {
-            Log.w(TAG, "Invalid value for " + tag, e);
-            return null;
-        }
-    }
-
-    /**
      * Set the value of the specified tag.
      *
      * @param tag the name of the tag.
@@ -1524,14 +1579,42 @@
                 mAttributes[i] = new HashMap();
             }
 
-            // Process RAW input stream
             if (HANDLE_RAW) {
-                in = new BufferedInputStream(in, JPEG_SIGNATURE_SIZE);
+                // Check file type
+                in = new BufferedInputStream(in, SIGNATURE_CHECK_SIZE);
+                mMimeType = getMimeType((BufferedInputStream) in);
 
-                if (!isJpegInputStream((BufferedInputStream) in)) {
-                    getRawAttributes(in);
-                    return;
+                switch (mMimeType) {
+                    case IMAGE_TYPE_JPEG: {
+                        getJpegAttributes(in, 0, IFD_TIFF_HINT); // 0 is offset
+                        break;
+                    }
+                    case IMAGE_TYPE_RAF: {
+                        getRafAttributes(in);
+                        break;
+                    }
+                    case IMAGE_TYPE_ORF: {
+                        getOrfAttributes(in);
+                        break;
+                    }
+                    case IMAGE_TYPE_ARW:
+                    case IMAGE_TYPE_CR2:
+                    case IMAGE_TYPE_DNG:
+                    case IMAGE_TYPE_NEF:
+                    case IMAGE_TYPE_NRW:
+                    case IMAGE_TYPE_PEF:
+                    case IMAGE_TYPE_RW2:
+                    case IMAGE_TYPE_SRW:
+                    case IMAGE_TYPE_UNKNOWN: {
+                        getRawAttributes(in);
+                        break;
+                    }
+                    default: {
+                        break;
+                    }
                 }
+                // Set thumbnail image offset and length
+                setThumbnailData(in);
             } else {
                 if (mAssetInputStream != null) {
                     long asset = mAssetInputStream.getNativeAsset();
@@ -1544,22 +1627,28 @@
                         return;
                     }
                 } else {
-                    in = new BufferedInputStream(in, JPEG_SIGNATURE_SIZE);
-                    if (!isJpegInputStream((BufferedInputStream) in) && handleRawResult(
+                    in.mark(JPEG_SIGNATURE.length);
+                    byte[] signatureBytes = new byte[JPEG_SIGNATURE.length];
+                    if (in.read(signatureBytes) != JPEG_SIGNATURE.length) {
+                        throw new EOFException();
+                    }
+                    in.reset();
+                    if (!isJpegFormat(signatureBytes) && handleRawResult(
                             nativeGetRawAttributesFromInputStream(in))) {
                         return;
                     }
                 }
+                // Process JPEG input stream
+                getJpegAttributes(in, 0, IFD_TIFF_HINT);
             }
-
-            // Process JPEG input stream
-            getJpegAttributes(in);
         } catch (IOException e) {
             // Ignore exceptions in order to keep the compatibility with the old versions of
             // ExifInterface.
-            Log.w(TAG, "Invalid image: ExifInterface got an unsupported image format file"
-                    + "(ExifInterface supports JPEG and some RAW image formats only) "
-                    + "or a corrupted JPEG file to ExifInterface.", e);
+            if (DEBUG) {
+                Log.w(TAG, "Invalid image: ExifInterface got an unsupported image format file"
+                        + "(ExifInterface supports JPEG and some RAW image formats only) "
+                        + "or a corrupted JPEG file to ExifInterface.", e);
+            }
         } finally {
             addDefaultValuesForCompatibility();
 
@@ -1569,19 +1658,11 @@
         }
     }
 
-    private static boolean isJpegInputStream(BufferedInputStream in) throws IOException {
-        in.mark(JPEG_SIGNATURE_SIZE);
-        byte[] signatureBytes = new byte[JPEG_SIGNATURE_SIZE];
-        if (in.read(signatureBytes) != JPEG_SIGNATURE_SIZE) {
-            throw new EOFException();
-        }
-        boolean isJpeg = Arrays.equals(JPEG_SIGNATURE, signatureBytes);
-        in.reset();
-        return isJpeg;
-    }
-
     private boolean handleRawResult(HashMap map) {
         if (map == null) {
+            if (DEBUG) {
+                Log.d(TAG, "Raw image file not detected");
+            }
             return false;
         }
 
@@ -1899,15 +1980,104 @@
         }
     }
 
-    // Loads EXIF attributes from a JPEG input stream.
-    private void getJpegAttributes(InputStream inputStream) throws IOException {
+    // Checks the type of image file
+    private int getMimeType(BufferedInputStream in) throws IOException {
+        in.mark(SIGNATURE_CHECK_SIZE);
+        byte[] signatureCheckBytes = new byte[SIGNATURE_CHECK_SIZE];
+        if (in.read(signatureCheckBytes) != SIGNATURE_CHECK_SIZE) {
+            throw new EOFException();
+        }
+        in.reset();
+        if (isJpegFormat(signatureCheckBytes)) {
+            return IMAGE_TYPE_JPEG;
+        } else if (isRafFormat(signatureCheckBytes)) {
+            return IMAGE_TYPE_RAF;
+        } else if (isOrfFormat(signatureCheckBytes)) {
+            return IMAGE_TYPE_ORF;
+        }
+        return IMAGE_TYPE_UNKNOWN;
+    }
+
+    /**
+     * This method looks at the first 3 bytes to determine if this file is a JPEG file.
+     * See http://www.media.mit.edu/pia/Research/deepview/exif.html, "JPEG format and Marker"
+     */
+    private static boolean isJpegFormat(byte[] signatureCheckBytes) throws IOException {
+        for (int i = 0; i < JPEG_SIGNATURE.length; i++) {
+            if (signatureCheckBytes[i] != JPEG_SIGNATURE[i]) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * This method looks at the first 15 bytes to determine if this file is a RAF file.
+     * There is no official specification for RAF files from Fuji, but there is an online archive of
+     * image file specifications:
+     * http://fileformats.archiveteam.org/wiki/Fujifilm_RAF
+     */
+    private boolean isRafFormat(byte[] signatureCheckBytes) throws IOException {
+        byte[] rafSignatureBytes = RAF_SIGNATURE.getBytes();
+        for (int i = 0; i < rafSignatureBytes.length; i++) {
+            if (signatureCheckBytes[i] != rafSignatureBytes[i]) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * ORF has a similar structure to TIFF but it contains a different signature at the TIFF Header.
+     * This method looks at the 2 bytes following the Byte Order bytes to determine if this file is
+     * an ORF file.
+     * There is no official specification for ORF files from Olympus, but there is an online archive
+     * of image file specifications:
+     * http://fileformats.archiveteam.org/wiki/Olympus_ORF
+     */
+    private boolean isOrfFormat(byte[] signatureCheckBytes) throws IOException {
+        ByteOrderAwarenessDataInputStream signatureInputStream =
+                new ByteOrderAwarenessDataInputStream(signatureCheckBytes);
+        // Read byte order
+        mExifByteOrder = readByteOrder(signatureInputStream);
+        // Set byte order
+        signatureInputStream.setByteOrder(mExifByteOrder);
+
+        short orfSignature = signatureInputStream.readShort();
+        if (orfSignature == ORF_SIGNATURE_1 || orfSignature == ORF_SIGNATURE_2) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Loads EXIF attributes from a JPEG input stream.
+     *
+     * @param inputStream The input stream that starts with the JPEG data.
+     * @param jpegOffset The offset value in input stream for JPEG data.
+     * @param imageTypes The image type from which to retrieve metadata. Use IFD_TIFF_HINT for
+     *                   primary image, IFD_PREVIEW_HINT for preview image, and
+     *                   IFD_THUMBNAIL_HINT for thumbnail image.
+     * @throws IOException If the data contains invalid JPEG markers, offsets, or length values.
+     */
+    private void getJpegAttributes(InputStream inputStream, int jpegOffset, int imageType)
+            throws IOException {
         // See JPEG File Interchange Format Specification, "JFIF Specification"
         if (DEBUG) {
             Log.d(TAG, "getJpegAttributes starting with: " + inputStream);
         }
+
         DataInputStream dataInputStream = new DataInputStream(inputStream);
+        // Mark current position to reset after retrieving data
+        dataInputStream.mark(dataInputStream.available());
+
+        // Skip to JPEG data
+        if (dataInputStream.skip(jpegOffset) != jpegOffset) {
+            throw new IOException("Invalid JPEG offset");
+        }
+        int bytesRead = jpegOffset;
+
         byte marker;
-        int bytesRead = 0;
         if ((marker = dataInputStream.readByte()) != MARKER) {
             throw new IOException("Invalid marker: " + Integer.toHexString(marker & 0xff));
         }
@@ -1967,13 +2137,17 @@
                     if (DEBUG) {
                         Log.d(TAG, "readExifSegment with a byte array (length: " + length + ")");
                     }
+                    // Save offset values for retrieveJPEGThumbnail() function
+                    mExifOffset = bytesRead;
+
                     byte[] bytes = new byte[length];
                     if (dataInputStream.read(bytes) != length) {
                         throw new IOException("Invalid exif");
                     }
-                    readExifSegment(bytes, bytesRead);
                     bytesRead += length;
                     length = 0;
+
+                    readExifSegment(bytes, imageType);
                     break;
                 }
 
@@ -2006,9 +2180,9 @@
                     if (dataInputStream.skipBytes(1) != 1) {
                         throw new IOException("Invalid SOFx");
                     }
-                    mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_LENGTH, ExifAttribute.createULong(
+                    mAttributes[imageType].put(TAG_IMAGE_LENGTH, ExifAttribute.createULong(
                             dataInputStream.readUnsignedShort(), mExifByteOrder));
-                    mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_WIDTH, ExifAttribute.createULong(
+                    mAttributes[imageType].put(TAG_IMAGE_WIDTH, ExifAttribute.createULong(
                             dataInputStream.readUnsignedShort(), mExifByteOrder));
                     length -= 5;
                     break;
@@ -2026,12 +2200,16 @@
             }
             bytesRead += length;
         }
+        // Reset dataInputStream to marked position
+        dataInputStream.reset();
     }
 
     private void getRawAttributes(InputStream in) throws IOException {
-        int bytesRead = 0;
-        byte[] exifBytes = new byte[in.available()];
+        int totalBytes = in.available();
+        byte[] exifBytes = new byte[totalBytes];
+        in.mark(in.available());
         in.read(exifBytes);
+        in.reset();
 
         ByteOrderAwarenessDataInputStream dataInputStream =
                 new ByteOrderAwarenessDataInputStream(exifBytes);
@@ -2042,23 +2220,193 @@
         // Read TIFF image file directories. See JEITA CP-3451C Section 4.5.2. Figure 6.
         readImageFileDirectory(dataInputStream, IFD_PREVIEW_HINT);
 
+        // Check if the preview image data should be a primary image data.
+        // The 0th IFD (first to be parsed) is presumed to be a preview image data, with a SubIFD
+        // that is a primary image data.
+        // But if the 0th IFD does not have a SubIFD, then it must be a primary image data since
+        // a primary image data must exist, but a preview image data does not have to.
+        if (mAttributes[IFD_TIFF_HINT].isEmpty() && !mAttributes[IFD_PREVIEW_HINT].isEmpty()) {
+            mAttributes[IFD_TIFF_HINT] = mAttributes[IFD_PREVIEW_HINT];
+            mAttributes[IFD_PREVIEW_HINT] = new HashMap();
+        }
+
+        // Update TAG_IMAGE_WIDTH and TAG_IMAGE_LENGTH for primary image.
+        updatePrimaryImageSizeValues(in);
+
         // Check if the preview image data should be a thumbnail image data.
-        // In a RAW file, there may be a Preview image, which is smaller than a Primary image but
-        // larger than a Thumbnail image. Normally, the Preview image can be considered a thumbnail
-        // image if its size meets the requirements. Therefore, when a Thumbnail image has not yet
-        // been found, we should check if the Preview image can be one.
+        // In a RAW file, there may be a preview image, which is smaller than a primary image but
+        // larger than a thumbnail image. Normally, the preview image can be considered a thumbnail
+        // image if its size meets the requirements. Therefore, when a thumbnail image has not yet
+        // been found, we should check if the preview image can be one.
         if (!mAttributes[IFD_PREVIEW_HINT].isEmpty() && mAttributes[IFD_THUMBNAIL_HINT].isEmpty()) {
+            // Update preview image size if necessary
+            retrieveJpegImageSize(in, IFD_PREVIEW_HINT);
+
             if (isThumbnail(mAttributes[IFD_PREVIEW_HINT])) {
                 mAttributes[IFD_THUMBNAIL_HINT] = mAttributes[IFD_PREVIEW_HINT];
                 mAttributes[IFD_PREVIEW_HINT] = new HashMap();
             }
         }
+    }
 
-        // Process thumbnail.
-        processThumbnail(dataInputStream, bytesRead, exifBytes.length);
+    /**
+     * RAF files contains a JPEG and a CFA data.
+     * The JPEG contains two images, a preview and a thumbnail, while the CFA contains a RAW image.
+     * This method looks at the first 160 bytes of a RAF file to retrieve the offset and length
+     * values for the JPEG and CFA data.
+     * Using that data, it parses the JPEG data to retrieve the preview and thumbnail image data,
+     * then parses the CFA metadata to retrieve the primary image length/width values.
+     * For data format details, see http://fileformats.archiveteam.org/wiki/Fujifilm_RAF
+     */
+    private void getRafAttributes(InputStream in) throws IOException {
+        // Retrieve offset & length values
+        in.mark(RAF_INFO_SIZE);
+        in.skip(RAF_OFFSET_TO_JPEG_IMAGE_OFFSET);
+        byte[] jpegOffsetBytes = new byte[4];
+        byte[] cfaHeaderOffsetBytes = new byte[4];
+        byte[] cfaHeaderLengthBytes = new byte[4];
+        in.read(jpegOffsetBytes);
+        // Skip JPEG length value since it is not needed
+        in.skip(RAF_JPEG_LENGTH_VALUE_SIZE);
+        in.read(cfaHeaderOffsetBytes);
+        in.read(cfaHeaderLengthBytes);
+        int rafJpegOffset = ByteBuffer.wrap(jpegOffsetBytes).getInt();
+        int rafCfaHeaderOffset = ByteBuffer.wrap(cfaHeaderOffsetBytes).getInt();
+        int rafCfaHeaderLength = ByteBuffer.wrap(cfaHeaderLengthBytes).getInt();
+        in.reset();
 
-        // Update TAG_IMAGE_WIDTH and TAG_IMAGE_LENGTH.
-        updateImageSizeValues();
+        // Retrieve JPEG image metadata
+        getJpegAttributes(in, rafJpegOffset, IFD_PREVIEW_HINT);
+
+        // Skip to CFA header offset.
+        // A while loop is used because the skip method may not be able to skip the requested amount
+        // at once because the size of the buffer may be restricted.
+        in.mark(rafCfaHeaderOffset + rafCfaHeaderLength);
+        int totalSkip = rafCfaHeaderOffset;
+        while (totalSkip > 0) {
+            long skipped = in.skip(totalSkip);
+            totalSkip -= skipped;
+        }
+
+        // Retrieve primary image length/width values, if TAG_RAF_IMAGE_SIZE exists
+        byte[] exifBytes = new byte[rafCfaHeaderLength];
+        if (in.read(exifBytes) != rafCfaHeaderLength) {
+            throw new EOFException();
+        }
+        in.reset();
+        ByteOrderAwarenessDataInputStream dataInputStream =
+                new ByteOrderAwarenessDataInputStream(exifBytes);
+        int numberOfDirectoryEntry = dataInputStream.readInt();
+        if (DEBUG) {
+            Log.d(TAG, "numberOfDirectoryEntry: " + numberOfDirectoryEntry);
+        }
+        // CFA stores some metadata about the RAW image. Since CFA uses proprietary tags, can only
+        // find and retrieve image size information tags, while skipping others.
+        // See piex.cc RafGetDimension()
+        for (int i = 0; i < numberOfDirectoryEntry; ++i) {
+            int tagNumber = dataInputStream.readUnsignedShort();
+            int numberOfBytes = dataInputStream.readUnsignedShort();
+            if (tagNumber == TAG_RAF_IMAGE_SIZE.number) {
+                int imageLength = dataInputStream.readShort();
+                int imageWidth = dataInputStream.readShort();
+                ExifAttribute imageLengthAttribute =
+                        ExifAttribute.createUShort(imageLength, mExifByteOrder);
+                ExifAttribute imageWidthAttribute =
+                        ExifAttribute.createUShort(imageWidth, mExifByteOrder);
+                mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_LENGTH, imageLengthAttribute);
+                mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_WIDTH, imageWidthAttribute);
+                if (DEBUG) {
+                    Log.d(TAG, "Updated to length: " + imageLength + ", width: " + imageWidth);
+                }
+                return;
+            }
+            dataInputStream.skip(numberOfBytes);
+        }
+    }
+
+    /**
+     * ORF files contains a primary image data and a MakerNote data that contains preview/thumbnail
+     * images. Both data takes the form of IFDs and can therefore be read with the
+     * readImageFileDirectory() method.
+     * This method reads all the necessary data and updates the primary/preview/thumbnail image
+     * information according to the GetOlympusPreviewImage() method in piex.cc.
+     * For data format details, see the following:
+     * http://fileformats.archiveteam.org/wiki/Olympus_ORF
+     * https://libopenraw.freedesktop.org/wiki/Olympus_ORF
+     */
+    private void getOrfAttributes(InputStream in) throws IOException {
+        // Retrieve primary image data
+        // Other Exif data will be located in the Makernote.
+        getRawAttributes(in);
+
+        // Additionally retrieve preview/thumbnail information from MakerNote tag, which contains
+        // proprietary tags and therefore does not have offical documentation
+        // See GetOlympusPreviewImage() in piex.cc & http://www.exiv2.org/tags-olympus.html
+        ExifAttribute makerNoteAttribute =
+                (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_MAKER_NOTE);
+        if (makerNoteAttribute != null) {
+            // Create an ordered DataInputStream for MakerNote
+            ByteOrderAwarenessDataInputStream makerNoteDataInputStream =
+                    new ByteOrderAwarenessDataInputStream(makerNoteAttribute.bytes);
+            makerNoteDataInputStream.setByteOrder(mExifByteOrder);
+
+            // There are two types of headers for Olympus MakerNotes
+            // See http://www.exiv2.org/makernote.html#R1
+            byte[] makerNoteHeader1Bytes = new byte[ORF_MAKER_NOTE_HEADER_1.length];
+            makerNoteDataInputStream.readFully(makerNoteHeader1Bytes);
+            makerNoteDataInputStream.seek(0);
+            byte[] makerNoteHeader2Bytes = new byte[ORF_MAKER_NOTE_HEADER_2.length];
+            makerNoteDataInputStream.readFully(makerNoteHeader2Bytes);
+            // Skip the corresponding amount of bytes for each header type
+            if (Arrays.equals(makerNoteHeader1Bytes, ORF_MAKER_NOTE_HEADER_1)) {
+                makerNoteDataInputStream.seek(ORF_MAKER_NOTE_HEADER_1_SIZE);
+            } else if (Arrays.equals(makerNoteHeader2Bytes, ORF_MAKER_NOTE_HEADER_2)) {
+                makerNoteDataInputStream.seek(ORF_MAKER_NOTE_HEADER_2_SIZE);
+            }
+
+            // Read IFD data from MakerNote
+            readImageFileDirectory(makerNoteDataInputStream, ORF_MAKER_NOTE_HINT);
+
+            // Retrieve & update preview image offset & length values
+            ExifAttribute imageLengthAttribute = (ExifAttribute)
+                    mAttributes[ORF_CAMERA_SETTINGS_HINT].get(TAG_PREVIEW_IMAGE_START);
+            ExifAttribute bitsPerSampleAttribute = (ExifAttribute)
+                    mAttributes[ORF_CAMERA_SETTINGS_HINT].get(TAG_PREVIEW_IMAGE_LENGTH);
+
+            if (imageLengthAttribute != null && bitsPerSampleAttribute != null) {
+                mAttributes[IFD_PREVIEW_HINT].put(TAG_JPEG_INTERCHANGE_FORMAT, imageLengthAttribute);
+                mAttributes[IFD_PREVIEW_HINT].put(TAG_JPEG_INTERCHANGE_FORMAT_LENGTH,
+                        bitsPerSampleAttribute);
+            }
+
+            // TODO: Check this behavior in other ORF files
+            // Retrieve primary image length & width values
+            // See piex.cc GetOlympusPreviewImage()
+            ExifAttribute aspectFrameAttribute =
+                    (ExifAttribute) mAttributes[ORF_IMAGE_PROCESSING_HINT].get(TAG_ASPECT_FRAME);
+            if (aspectFrameAttribute != null) {
+                int[] aspectFrameValues = new int[4];
+                aspectFrameValues = (int[]) aspectFrameAttribute.getValue(mExifByteOrder);
+                if (aspectFrameValues[2] > aspectFrameValues[0] &&
+                        aspectFrameValues[3] > aspectFrameValues[1]) {
+                    int primaryImageWidth = aspectFrameValues[2] - aspectFrameValues[0] + 1;
+                    int primaryImageLength = aspectFrameValues[3] - aspectFrameValues[1] + 1;
+                    // Swap width & length values
+                    if (primaryImageWidth < primaryImageLength) {
+                        primaryImageWidth += primaryImageLength;
+                        primaryImageLength = primaryImageWidth - primaryImageLength;
+                        primaryImageWidth -= primaryImageLength;
+                    }
+                    ExifAttribute primaryImageWidthAttribute =
+                            ExifAttribute.createUShort(primaryImageWidth, mExifByteOrder);
+                    ExifAttribute primaryImageLengthAttribute =
+                            ExifAttribute.createUShort(primaryImageLength, mExifByteOrder);
+
+                    mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_WIDTH, primaryImageWidthAttribute);
+                    mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_LENGTH, primaryImageLengthAttribute);
+                }
+            }
+        }
     }
 
     // Stores a new JPEG image with EXIF attributes into a given output stream.
@@ -2160,7 +2508,7 @@
     }
 
     // Reads the given EXIF byte area and save its tag data into attributes.
-    private void readExifSegment(byte[] exifBytes, int exifOffsetFromBeginning) throws IOException {
+    private void readExifSegment(byte[] exifBytes, int imageType) throws IOException {
         ByteOrderAwarenessDataInputStream dataInputStream =
                 new ByteOrderAwarenessDataInputStream(exifBytes);
 
@@ -2168,10 +2516,7 @@
         parseTiffHeaders(dataInputStream, exifBytes.length);
 
         // Read TIFF image file directories. See JEITA CP-3451C Section 4.5.2. Figure 6.
-        readImageFileDirectory(dataInputStream, IFD_TIFF_HINT);
-
-        // Process thumbnail.
-        processThumbnail(dataInputStream, exifOffsetFromBeginning, exifBytes.length);
+        readImageFileDirectory(dataInputStream, imageType);
     }
 
     private void addDefaultValuesForCompatibility() {
@@ -2201,37 +2546,41 @@
         }
     }
 
-    private void parseTiffHeaders(ByteOrderAwarenessDataInputStream dataInputStream,
-            int exifBytesLength) throws IOException {
-        // Read byte align
+    private ByteOrder readByteOrder(ByteOrderAwarenessDataInputStream dataInputStream)
+            throws IOException {
+        // Read byte order.
         short byteOrder = dataInputStream.readShort();
         switch (byteOrder) {
             case BYTE_ALIGN_II:
                 if (DEBUG) {
                     Log.d(TAG, "readExifSegment: Byte Align II");
                 }
-                mExifByteOrder = ByteOrder.LITTLE_ENDIAN;
-                break;
+                return ByteOrder.LITTLE_ENDIAN;
             case BYTE_ALIGN_MM:
                 if (DEBUG) {
                     Log.d(TAG, "readExifSegment: Byte Align MM");
                 }
-                mExifByteOrder = ByteOrder.BIG_ENDIAN;
-                break;
+                return ByteOrder.BIG_ENDIAN;
             default:
                 throw new IOException("Invalid byte order: " + Integer.toHexString(byteOrder));
         }
+    }
 
-        // Set byte order.
+    private void parseTiffHeaders(ByteOrderAwarenessDataInputStream dataInputStream,
+            int exifBytesLength) throws IOException {
+        // Read byte order
+        mExifByteOrder = readByteOrder(dataInputStream);
+        // Set byte order
         dataInputStream.setByteOrder(mExifByteOrder);
 
+        // Check start code
         int startCode = dataInputStream.readUnsignedShort();
-        if (startCode != START_CODE) {
-            throw new IOException("Invalid exif start code: " + Integer.toHexString(startCode));
+        if (mMimeType != IMAGE_TYPE_ORF && startCode != START_CODE) {
+            throw new IOException("Invalid start code: " + Integer.toHexString(startCode));
         }
 
-        // Read first ifd offset
-        long firstIfdOffset = dataInputStream.readUnsignedInt();
+        // Read and skip to first ifd offset
+        int firstIfdOffset = dataInputStream.readInt();
         if (firstIfdOffset < 8 || firstIfdOffset >= exifBytesLength) {
             throw new IOException("Invalid first Ifd offset: " + firstIfdOffset);
         }
@@ -2266,8 +2615,9 @@
             int tagNumber = dataInputStream.readUnsignedShort();
             int dataFormat = dataInputStream.readUnsignedShort();
             int numberOfComponents = dataInputStream.readInt();
-            long nextEntryOffset = dataInputStream.peek() + 4;  // next four bytes is for data
-                                                                // offset or value.
+            // Next four bytes is for data offset or value.
+            long nextEntryOffset = dataInputStream.peek() + 4;
+
             // Look up a corresponding tag from tag number
             final ExifTag tag = (ExifTag) sExifTagMapsForReading[hint].get(tagNumber);
 
@@ -2293,10 +2643,33 @@
             // field if the size of the entry value is bigger than 4.
             int byteCount = numberOfComponents * IFD_FORMAT_BYTES_PER_FORMAT[dataFormat];
             if (byteCount > 4) {
-                long offset = dataInputStream.readUnsignedInt();
+                int offset = dataInputStream.readInt();
                 if (DEBUG) {
                     Log.d(TAG, "seek to data offset: " + offset);
                 }
+                if (mMimeType == IMAGE_TYPE_ORF) {
+                    if (tag.name == TAG_MAKER_NOTE) {
+                        // Save offset value for reading thumbnail
+                        mOrfMakerNoteOffset = offset;
+                    } else if (hint == ORF_MAKER_NOTE_HINT && tag.name == TAG_THUMBNAIL_IMAGE) {
+                        // Retrieve & update values for thumbnail offset and length values for ORF
+                        mOrfThumbnailOffset = offset;
+                        mOrfThumbnailLength = numberOfComponents;
+
+                        ExifAttribute compressionAttribute =
+                                ExifAttribute.createUShort(DATA_JPEG, mExifByteOrder);
+                        ExifAttribute jpegInterchangeFormatAttribute =
+                                ExifAttribute.createULong(mOrfThumbnailOffset, mExifByteOrder);
+                        ExifAttribute jpegInterchangeFormatLengthAttribute =
+                                ExifAttribute.createULong(mOrfThumbnailLength, mExifByteOrder);
+
+                        mAttributes[IFD_THUMBNAIL_HINT].put(TAG_COMPRESSION, compressionAttribute);
+                        mAttributes[IFD_THUMBNAIL_HINT].put(TAG_JPEG_INTERCHANGE_FORMAT,
+                                jpegInterchangeFormatAttribute);
+                        mAttributes[IFD_THUMBNAIL_HINT].put(TAG_JPEG_INTERCHANGE_FORMAT_LENGTH,
+                                jpegInterchangeFormatLengthAttribute);
+                    }
+                }
                 if (offset + byteCount <= dataInputStream.mLength) {
                     dataInputStream.seek(offset);
                 } else {
@@ -2329,7 +2702,8 @@
                         offset = dataInputStream.readUnsignedInt();
                         break;
                     }
-                    case IFD_FORMAT_SLONG: {
+                    case IFD_FORMAT_SLONG:
+                    case IFD_FORMAT_IFD: {
                         offset = dataInputStream.readInt();
                         break;
                     }
@@ -2352,7 +2726,7 @@
                 continue;
             }
 
-            byte[] bytes = new byte[numberOfComponents * IFD_FORMAT_BYTES_PER_FORMAT[dataFormat]];
+            byte[] bytes = new byte[byteCount];
             dataInputStream.readFully(bytes);
             mAttributes[hint].put(
                     tag.name, new ExifAttribute(dataFormat, numberOfComponents, bytes));
@@ -2362,7 +2736,7 @@
         }
 
         if (dataInputStream.peek() + 4 <= dataInputStream.mLength) {
-            long nextIfdOffset = dataInputStream.readUnsignedInt();
+            int nextIfdOffset = dataInputStream.readInt();
             if (DEBUG) {
                 Log.d(TAG, String.format("nextIfdOffset: %d", nextIfdOffset));
             }
@@ -2375,50 +2749,75 @@
         }
     }
 
-    // Processes Thumbnail based on Compression Value
-    private void processThumbnail(ByteOrderAwarenessDataInputStream dataInputStream,
-            int exifOffsetFromBeginning, int exifBytesLength) throws IOException {
-        if (mAttributes[IFD_THUMBNAIL_HINT].containsKey(TAG_COMPRESSION)) {
-            ExifAttribute compressionAttribute =
-                    (ExifAttribute) mAttributes[IFD_THUMBNAIL_HINT].get(TAG_COMPRESSION);
+    /**
+     * JPEG compressed images do not contain IMAGE_LENGTH & IMAGE_WIDTH tags.
+     * This value uses JpegInterchangeFormat(JPEG data offset) value, and calls getJpegAttributes()
+     * to locate SOF(Start of Frame) marker and update the image length & width values.
+     * See JEITA CP-3451C Table 5 and Section 4.8.1. B.
+     */
+    private void retrieveJpegImageSize(InputStream in, int imageType) throws IOException {
+        // Check if image already has IMAGE_LENGTH & IMAGE_WIDTH values
+        ExifAttribute imageLengthAttribute =
+                (ExifAttribute) mAttributes[imageType].get(TAG_IMAGE_LENGTH);
+        ExifAttribute imageWidthAttribute =
+                (ExifAttribute) mAttributes[imageType].get(TAG_IMAGE_WIDTH);
+
+        if (imageLengthAttribute == null || imageWidthAttribute == null) {
+            // Find if offset for JPEG data exists
+            ExifAttribute jpegInterchangeFormatAttribute =
+                    (ExifAttribute) mAttributes[imageType].get(TAG_JPEG_INTERCHANGE_FORMAT);
+            if (jpegInterchangeFormatAttribute != null) {
+                int jpegInterchangeFormat =
+                        jpegInterchangeFormatAttribute.getIntValue(mExifByteOrder);
+
+                // Searches for SOF marker in JPEG data and updates IMAGE_LENGTH & IMAGE_WIDTH tags
+                getJpegAttributes(in, jpegInterchangeFormat, imageType);
+            }
+        }
+    }
+
+    // Retrieves thumbnail based on Compression Value
+    private void setThumbnailData(InputStream in) throws IOException {
+        HashMap thumbnailData = mAttributes[IFD_THUMBNAIL_HINT];
+        ExifAttribute compressionAttribute = (ExifAttribute) thumbnailData.get(TAG_COMPRESSION);
+        if (compressionAttribute != null) {
             int compressionValue = compressionAttribute.getIntValue(mExifByteOrder);
             switch (compressionValue) {
                 case DATA_UNCOMPRESSED: {
-                    // TODO: add implementation for reading Uncompressed Thumbnail Data (b/28156704)
+                    // TODO: add implementation for reading uncompressed thumbnail data (b/28156704)
                     Log.d(TAG, "Uncompressed thumbnail data cannot be processed");
                     break;
                 }
                 case DATA_JPEG: {
-                    String jpegInterchangeFormatString =
-                            getAttribute(JPEG_INTERCHANGE_FORMAT_TAG.name);
-                    String jpegInterchangeFormatLengthString =
-                            getAttribute(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name);
-                    if (jpegInterchangeFormatString != null
-                            && jpegInterchangeFormatLengthString != null) {
-                        try {
-                            int jpegInterchangeFormat =
-                                    Integer.parseInt(jpegInterchangeFormatString);
-                            int jpegInterchangeFormatLength =
-                                    Integer.parseInt(jpegInterchangeFormatLengthString);
-                            retrieveJPEGThumbnail(dataInputStream, jpegInterchangeFormat,
-                                    jpegInterchangeFormatLength, exifOffsetFromBeginning,
-                                    exifBytesLength);
-                        } catch (NumberFormatException e) {
-                            // Ignore corrupted format/formatLength values
-                        }
+                    ExifAttribute jpegInterchangeFormatAttribute =
+                            (ExifAttribute) thumbnailData.get(TAG_JPEG_INTERCHANGE_FORMAT);
+                    ExifAttribute jpegInterchangeFormatLengthAttribute =
+                            (ExifAttribute) thumbnailData.get(TAG_JPEG_INTERCHANGE_FORMAT_LENGTH);
+                    if (jpegInterchangeFormatAttribute != null
+                            && jpegInterchangeFormatLengthAttribute != null) {
+                        int jpegInterchangeFormat =
+                                jpegInterchangeFormatAttribute.getIntValue(mExifByteOrder);
+                        int jpegInterchangeFormatLength =
+                                jpegInterchangeFormatLengthAttribute.getIntValue(mExifByteOrder);
+                        createJPEGThumbnailBitmap(in, jpegInterchangeFormat,
+                                jpegInterchangeFormatLength);
                     }
                     break;
                 }
                 case DATA_JPEG_COMPRESSED: {
-                    long[] stripOffsetsArray = getAttributeLongArray(TAG_STRIP_OFFSETS);
-                    long[] stripByteCountsArray = getAttributeLongArray(TAG_STRIP_BYTE_COUNTS);
-                    if (stripOffsetsArray != null && stripByteCountsArray != null) {
+                    ExifAttribute stripOffsetsAttribute =
+                            (ExifAttribute) thumbnailData.get(TAG_STRIP_OFFSETS);
+                    ExifAttribute stripByteCountsAttribute =
+                            (ExifAttribute) thumbnailData.get(TAG_STRIP_BYTE_COUNTS);
+                    if (stripOffsetsAttribute != null && stripByteCountsAttribute != null) {
+                        long[] stripOffsetsArray =
+                                (long[]) stripOffsetsAttribute.getValue(mExifByteOrder);
+                        long[] stripByteCountsArray =
+                                (long[]) stripByteCountsAttribute.getValue(mExifByteOrder);
                         if (stripOffsetsArray.length == 1) {
                             int stripOffsetsSum = (int) Arrays.stream(stripOffsetsArray).sum();
-                            int stripByteCountSum = (int) Arrays.stream(stripByteCountsArray).sum();
-                            retrieveJPEGThumbnail(dataInputStream, stripOffsetsSum,
-                                    stripByteCountSum, exifOffsetFromBeginning,
-                                    exifBytesLength);
+                            int stripByteCountsSum = (int) Arrays.stream(stripByteCountsArray).sum();
+                            createJPEGThumbnailBitmap(in, stripOffsetsSum, stripByteCountsSum);
                         } else {
                             // TODO: implement method to read multiple strips (b/29737797)
                             Log.d(TAG, "Multiple strip thumbnail data cannot be processed");
@@ -2433,27 +2832,31 @@
         }
     }
 
-    // Retrieves Thumbnail for JPEG Compression
-    private void retrieveJPEGThumbnail(ByteOrderAwarenessDataInputStream dataInputStream,
-            int thumbnailOffset, int thumbnailLength, int exifOffsetFromBeginning,
-            int exifBytesLength) throws IOException {
+    // Retrieves thumbnail for JPEG Compression
+    private void createJPEGThumbnailBitmap(InputStream in, int thumbnailOffset, int thumbnailLength)
+            throws IOException {
         if (DEBUG) {
             Log.d(TAG, "Retrieving JPEG Thumbnail");
         }
         // The following code limits the size of thumbnail size not to overflow EXIF data area.
-        thumbnailLength = Math.min(thumbnailLength, exifBytesLength - thumbnailOffset);
+        thumbnailLength = Math.min(thumbnailLength, in.available() - thumbnailOffset);
+        if (mMimeType == IMAGE_TYPE_JPEG || mMimeType == IMAGE_TYPE_RAF) {
+            thumbnailOffset += mExifOffset;
+        } else if (mMimeType == IMAGE_TYPE_ORF) {
+            // Update offset value since RAF files have IFD data preceding MakerNote data.
+            thumbnailOffset += mOrfMakerNoteOffset;
+        }
+        Log.d(TAG, "offset: " + thumbnailOffset);
         if (thumbnailOffset > 0 && thumbnailLength > 0) {
             mHasThumbnail = true;
-            mThumbnailOffset = exifOffsetFromBeginning + thumbnailOffset;
+            mThumbnailOffset = thumbnailOffset;
             mThumbnailLength = thumbnailLength;
-
             if (mFilename == null && mAssetInputStream == null && mSeekableFileDescriptor == null) {
                 // Save the thumbnail in memory if the input doesn't support reading again.
                 byte[] thumbnailBytes = new byte[thumbnailLength];
-                dataInputStream.seek(thumbnailOffset);
-                dataInputStream.readFully(thumbnailBytes);
+                in.skip(thumbnailOffset);
+                in.read(thumbnailBytes);
                 mThumbnailBytes = thumbnailBytes;
-
                 if (DEBUG) {
                     Bitmap bitmap = BitmapFactory.decodeByteArray(
                             thumbnailBytes, 0, thumbnailBytes.length);
@@ -2483,14 +2886,22 @@
     }
 
     /**
-     * Raw images often store extra pixels around the edges of the final image, which results in
-     * larger values for TAG_IMAGE_WIDTH and TAG_IMAGE_LENGTH tags.
+     * If image is uncompressed, ImageWidth/Length tags are used to store size info.
+     * However, uncompressed images often store extra pixels around the edges of the final image,
+     * which results in larger values for TAG_IMAGE_WIDTH and TAG_IMAGE_LENGTH tags.
      * This method corrects those tag values by checking first the values of TAG_DEFAULT_CROP_SIZE
-     * and then TAG_PIXEL_X_DIMENSION & TAG_PIXEL_Y_DIMENSION.
-     * See DNG Specification 1.4.0.0. Section 4 (DefaultCropSize) & JEITA CP-3451 p26.
+     * See DNG Specification 1.4.0.0. Section 4. (DefaultCropSize)
+     *
+     * If image is JPEG compressed, PixelXDimension/PixelYDimension tags are used for size info.
+     * However, an image may have padding at the right end or bottom end of the image to make sure
+     * that the values are multiples of 64. If so, the increased value will be saved in the
+     * SOF(Start of Frame). In order to assure that valid image size values are stored, this method
+     * checks TAG_PIXEL_X_DIMENSION & TAG_PIXEL_Y_DIMENSION and updates values if necessary.
+     * See JEITA CP-3451C Table 5 and Section 4.8.1. B.
      * */
-    private void updateImageSizeValues() throws IOException {
-        // Checks for the NewSubfileType tag and returns if the image is not original resolution.
+    private void updatePrimaryImageSizeValues(InputStream in) throws IOException {
+        // Checks for the NewSubfileType tag and returns if the image is not original resolution,
+        // which means that it is not the primary imiage
         ExifAttribute newSubfileTypeAttribute =
                 (ExifAttribute) mAttributes[IFD_TIFF_HINT].get(TAG_NEW_SUBFILE_TYPE);
         if (newSubfileTypeAttribute != null) {
@@ -2501,13 +2912,17 @@
             }
         }
 
+        // Uncompressed image valid image size values
         ExifAttribute defaultCropSizeAttribute =
                 (ExifAttribute) mAttributes[IFD_TIFF_HINT].get(TAG_DEFAULT_CROP_SIZE);
+        // Compressed image valid image size values
         ExifAttribute pixelXDimAttribute =
                 (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_PIXEL_X_DIMENSION);
         ExifAttribute pixelYDimAttribute =
                 (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_PIXEL_Y_DIMENSION);
+
         if (defaultCropSizeAttribute != null) {
+            // Update for uncompressed image
             ExifAttribute defaultCropSizeXAttribute, defaultCropSizeYAttribute;
             if (defaultCropSizeAttribute.format == IFD_FORMAT_URATIONAL) {
                 Rational[] defaultCropSizeValue =
@@ -2526,17 +2941,23 @@
             }
             mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_WIDTH, defaultCropSizeXAttribute);
             mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_LENGTH, defaultCropSizeYAttribute);
-        } else if (pixelXDimAttribute != null && pixelYDimAttribute != null) {
-            mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_WIDTH, pixelXDimAttribute);
-            mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_LENGTH, pixelYDimAttribute);
+        } else {
+            // Update for JPEG image
+            if (pixelXDimAttribute != null && pixelYDimAttribute != null) {
+                mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_WIDTH, pixelXDimAttribute);
+                mAttributes[IFD_TIFF_HINT].put(TAG_IMAGE_LENGTH, pixelYDimAttribute);
+            } else {
+                // Update image size values from SOF marker if necessary
+                retrieveJpegImageSize(in, IFD_TIFF_HINT);
+            }
         }
     }
 
     // Gets the corresponding IFD group index of the given tag number for writing Exif Tags.
     private static int getIfdHintFromTagNumber(int tagNumber) {
-        for (int i = 0; i < IFD_POINTER_TAG_HINTS.length; ++i) {
-            if (IFD_POINTER_TAGS[i].number == tagNumber) {
-                return IFD_POINTER_TAG_HINTS[i];
+        for (int i = 0; i < EXIF_POINTER_TAG_HINTS.length; ++i) {
+            if (EXIF_POINTER_TAGS[i].number == tagNumber) {
+                return EXIF_POINTER_TAG_HINTS[i];
             }
         }
         return -1;
@@ -2550,7 +2971,7 @@
         int[] ifdDataSizes = new int[EXIF_TAGS.length];
 
         // Remove IFD pointer tags (we'll re-add it later.)
-        for (ExifTag tag : IFD_POINTER_TAGS) {
+        for (ExifTag tag : EXIF_POINTER_TAGS) {
             removeAttribute(tag.name);
         }
         // Remove old thumbnail data
@@ -2570,21 +2991,21 @@
         // Add IFD pointer tags. The next offset of primary image TIFF IFD will have thumbnail IFD
         // offset when there is one or more tags in the thumbnail IFD.
         if (!mAttributes[IFD_EXIF_HINT].isEmpty()) {
-            mAttributes[IFD_TIFF_HINT].put(IFD_POINTER_TAGS[1].name,
+            mAttributes[IFD_TIFF_HINT].put(EXIF_POINTER_TAGS[1].name,
                     ExifAttribute.createULong(0, mExifByteOrder));
         }
         if (!mAttributes[IFD_GPS_HINT].isEmpty()) {
-            mAttributes[IFD_TIFF_HINT].put(IFD_POINTER_TAGS[2].name,
+            mAttributes[IFD_TIFF_HINT].put(EXIF_POINTER_TAGS[2].name,
                     ExifAttribute.createULong(0, mExifByteOrder));
         }
         if (!mAttributes[IFD_INTEROPERABILITY_HINT].isEmpty()) {
-            mAttributes[IFD_EXIF_HINT].put(IFD_POINTER_TAGS[3].name,
+            mAttributes[IFD_EXIF_HINT].put(EXIF_POINTER_TAGS[3].name,
                     ExifAttribute.createULong(0, mExifByteOrder));
         }
         if (mHasThumbnail) {
-            mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_TAG.name,
+            mAttributes[IFD_THUMBNAIL_HINT].put(JPEG_INTERCHANGE_FORMAT_TAG.name,
                     ExifAttribute.createULong(0, mExifByteOrder));
-            mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name,
+            mAttributes[IFD_THUMBNAIL_HINT].put(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name,
                     ExifAttribute.createULong(mThumbnailLength, mExifByteOrder));
         }
 
@@ -2612,7 +3033,7 @@
         }
         if (mHasThumbnail) {
             int thumbnailOffset = position;
-            mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_TAG.name,
+            mAttributes[IFD_THUMBNAIL_HINT].put(JPEG_INTERCHANGE_FORMAT_TAG.name,
                     ExifAttribute.createULong(thumbnailOffset, mExifByteOrder));
             mThumbnailOffset = exifOffsetFromBeginning + thumbnailOffset;
             position += mThumbnailLength;
@@ -2630,15 +3051,15 @@
 
         // Update IFD pointer tags with the calculated offsets.
         if (!mAttributes[IFD_EXIF_HINT].isEmpty()) {
-            mAttributes[IFD_TIFF_HINT].put(IFD_POINTER_TAGS[1].name,
+            mAttributes[IFD_TIFF_HINT].put(EXIF_POINTER_TAGS[1].name,
                     ExifAttribute.createULong(ifdOffsets[IFD_EXIF_HINT], mExifByteOrder));
         }
         if (!mAttributes[IFD_GPS_HINT].isEmpty()) {
-            mAttributes[IFD_TIFF_HINT].put(IFD_POINTER_TAGS[2].name,
+            mAttributes[IFD_TIFF_HINT].put(EXIF_POINTER_TAGS[2].name,
                     ExifAttribute.createULong(ifdOffsets[IFD_GPS_HINT], mExifByteOrder));
         }
         if (!mAttributes[IFD_INTEROPERABILITY_HINT].isEmpty()) {
-            mAttributes[IFD_EXIF_HINT].put(IFD_POINTER_TAGS[3].name, ExifAttribute.createULong(
+            mAttributes[IFD_EXIF_HINT].put(EXIF_POINTER_TAGS[3].name, ExifAttribute.createULong(
                     ifdOffsets[IFD_INTEROPERABILITY_HINT], mExifByteOrder));
         }
 
@@ -2818,8 +3239,12 @@
         }
 
         public void seek(long byteCount) throws IOException {
-            mPosition = 0L;
-            reset();
+            if (mPosition > byteCount) {
+                mPosition = 0L;
+                reset();
+            } else {
+                byteCount -= mPosition;
+            }
             if (skip(byteCount) != byteCount) {
                 throw new IOException("Couldn't seek up to the byteCount");
             }
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index ec2d4bc..682512c 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -512,11 +512,11 @@
             mAcquiredImages.clear();
 
             nativeClose();
-        }
 
-        if (mEstimatedNativeAllocBytes > 0) {
-            VMRuntime.getRuntime().registerNativeFree(mEstimatedNativeAllocBytes);
-            mEstimatedNativeAllocBytes = 0;
+            if (mEstimatedNativeAllocBytes > 0) {
+                VMRuntime.getRuntime().registerNativeFree(mEstimatedNativeAllocBytes);
+                mEstimatedNativeAllocBytes = 0;
+            }
         }
     }
 
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 542dced..264944f 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -133,9 +133,10 @@
  <p class=note>
  Note that on some devices the slice-height is advertised as 0. This could mean either that the
  slice-height is the same as the frame height, or that the slice-height is the frame height
- aligned to some value (usually a power of 2). Unfortunately, there is no way to tell the actual
- slice height in this case. Furthermore, the vertical stride of the {@code U} plane in planar
- formats is also not specified or defined, though usually it is half of the slice height.
+ aligned to some value (usually a power of 2). Unfortunately, there is no standard and simple way
+ to tell the actual slice height in this case. Furthermore, the vertical stride of the {@code U}
+ plane in planar formats is also not specified or defined, though usually it is half of the slice
+ height.
  <p>
  The {@link MediaFormat#KEY_WIDTH} and {@link MediaFormat#KEY_HEIGHT} keys specify the size of the
  video frames; however, for most encondings the video (picture) only occupies a portion of the
@@ -620,8 +621,9 @@
  mode} will be automatically applied with one exception:
  <p class=note>
  Prior to the {@link android.os.Build.VERSION_CODES#M} release, software decoders may not
- have applied the rotation when being rendered onto a Surface. Unfortunately, there is no way to
- identify software decoders, or if they apply the rotation other than by trying it out.
+ have applied the rotation when being rendered onto a Surface. Unfortunately, there is no standard
+ and simple way to identify software decoders, or if they apply the rotation other than by trying
+ it out.
  <p>
  There are also some caveats.
  <p class=note>
diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java
index 6f5199b..9e560d5 100644
--- a/media/java/android/media/MediaExtractor.java
+++ b/media/java/android/media/MediaExtractor.java
@@ -68,6 +68,9 @@
  * extractor.release();
  * extractor = null;
  * </pre>
+ *
+ * <p>This class requires the {@link android.Manifest.permission#INTERNET} permission
+ * when used with network-based content.
  */
 final public class MediaExtractor {
     public MediaExtractor() {
@@ -89,6 +92,10 @@
      *
      * @param context the Context to use when resolving the Uri
      * @param uri the Content URI of the data you want to extract from.
+     *
+     * <p>When <code>uri</code> refers to a network file the
+     * {@link android.Manifest.permission#INTERNET} permission is required.
+     *
      * @param headers the headers to be sent together with the request for the data.
      *        This can be {@code null} if no specific headers are to be sent with the
      *        request.
@@ -136,6 +143,10 @@
      * Sets the data source (file-path or http URL) to use.
      *
      * @param path the path of the file, or the http URL
+     *
+     * <p>When <code>path</code> refers to a network file the
+     * {@link android.Manifest.permission#INTERNET} permission is required.
+     *
      * @param headers the headers associated with the http request for the stream you want to play.
      *        This can be {@code null} if no specific headers are to be sent with the
      *        request.
@@ -181,6 +192,9 @@
      * directory), and that the pathname should reference a world-readable file.
      * As an alternative, the application could first open the file for reading,
      * and then use the file descriptor form {@link #setDataSource(FileDescriptor)}.
+     *
+     * <p>When <code>path</code> refers to a network file the
+     * {@link android.Manifest.permission#INTERNET} permission is required.
      */
     public final void setDataSource(@NonNull String path) throws IOException {
         nativeSetDataSource(
diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java
index f7becf5..da490b9 100644
--- a/media/java/android/media/MediaFile.java
+++ b/media/java/android/media/MediaFile.java
@@ -69,8 +69,9 @@
 
     // More video file types
     public static final int FILE_TYPE_MP2PS   = 200;
+    public static final int FILE_TYPE_QT      = 201;
     private static final int FIRST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS;
-    private static final int LAST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS;
+    private static final int LAST_VIDEO_FILE_TYPE2 = FILE_TYPE_QT;
 
     // Image file types
     public static final int FILE_TYPE_JPEG    = 31;
@@ -211,6 +212,8 @@
         addFileType("MPG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG);
         addFileType("MP4", FILE_TYPE_MP4, "video/mp4", MtpConstants.FORMAT_MPEG);
         addFileType("M4V", FILE_TYPE_M4V, "video/mp4", MtpConstants.FORMAT_MPEG);
+        addFileType("MOV", FILE_TYPE_QT, "video/quicktime", MtpConstants.FORMAT_MPEG);
+
         addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp",  MtpConstants.FORMAT_3GP_CONTAINER);
         addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER);
         addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER);
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index d7a18d9..d74aa81 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -49,12 +49,18 @@
  * <tr><td>{@link #KEY_FRAME_RATE}</td><td>Integer or Float</td><td>required for <b>encoders</b>,
  *         optional for <b>decoders</b></td></tr>
  * <tr><td>{@link #KEY_CAPTURE_RATE}</td><td>Integer</td><td></td></tr>
- * <tr><td>{@link #KEY_I_FRAME_INTERVAL}</td><td>Integer</td><td><b>encoder-only</b></td></tr>
+ * <tr><td>{@link #KEY_I_FRAME_INTERVAL}</td><td>Integer (or Float)</td><td><b>encoder-only</b>,
+ *         time-interval between key frames.
+ *         Float support added in {@link android.os.Build.VERSION_CODES#N_MR1}</td></tr>
  * <tr><td>{@link #KEY_INTRA_REFRESH_PERIOD}</td><td>Integer</td><td><b>encoder-only</b>, optional</td></tr>
  * <tr><td>{@link #KEY_MAX_WIDTH}</td><td>Integer</td><td><b>decoder-only</b>, optional, max-resolution width</td></tr>
  * <tr><td>{@link #KEY_MAX_HEIGHT}</td><td>Integer</td><td><b>decoder-only</b>, optional, max-resolution height</td></tr>
- * <tr><td>{@link #KEY_REPEAT_PREVIOUS_FRAME_AFTER}</td><td>Long</td><td><b>video encoder in surface-mode only</b></td></tr>
- * <tr><td>{@link #KEY_PUSH_BLANK_BUFFERS_ON_STOP}</td><td>Integer(1)</td><td><b>video decoder rendering to a surface only</b></td></tr>
+ * <tr><td>{@link #KEY_REPEAT_PREVIOUS_FRAME_AFTER}</td><td>Long</td><td><b>encoder in surface-mode
+ *         only</b>, optional</td></tr>
+ * <tr><td>{@link #KEY_PUSH_BLANK_BUFFERS_ON_STOP}</td><td>Integer(1)</td><td><b>decoder rendering
+ *         to a surface only</b>, optional</td></tr>
+ * <tr><td>{@link #KEY_TEMPORAL_LAYERING}</td><td>String</td><td><b>encoder only</b>, optional,
+ *         temporal-layering schema</td></tr>
  * </table>
  * Specify both {@link #KEY_MAX_WIDTH} and {@link #KEY_MAX_HEIGHT} to enable
  * adaptive playback (seamless resolution change) for a video decoder that
@@ -258,9 +264,20 @@
     public static final String KEY_CAPTURE_RATE = "capture-rate";
 
     /**
-     * A key describing the frequency of I frames expressed in secs
-     * between I frames.
-     * The associated value is an integer.
+     * A key describing the frequency of key frames expressed in seconds between key frames.
+     * <p>
+     * This key is used by video encoders.
+     * A negative value means no key frames are requested after the first frame.
+     * A zero value means a stream containing all key frames is requested.
+     * <p class=note>
+     * Most video encoders will convert this value of the number of non-key-frames between
+     * key-frames, using the {@linkplain #KEY_FRAME_RATE frame rate} information; therefore,
+     * if the actual frame rate differs (e.g. input frames are dropped or the frame rate
+     * changes), the <strong>time interval</strong> between key frames will not be the
+     * configured value.
+     * <p>
+     * The associated value is an integer (or float since
+     * {@link android.os.Build.VERSION_CODES#N_MR1}).
      */
     public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval";
 
@@ -280,12 +297,18 @@
 
    /**
      * A key describing the temporal layering schema.  This is an optional parameter
-     * that applies only to video encoders.  Use {@link MediaCodec#getInputFormat}
+     * that applies only to video encoders.  Use {@link MediaCodec#getOutputFormat}
      * after {@link MediaCodec#configure configure} to query if the encoder supports
-     * the desired schema. Supported values are {@code webrtc.vp8.1-layer},
-     * {@code webrtc.vp8.2-layer}, {@code webrtc.vp8.3-layer}, and {@code none}.
-     * If the encoder does not support temporal layering, the input format will
-     * not have an entry with this key.
+     * the desired schema. Supported values are {@code webrtc.vp8.N-layer},
+     * {@code android.generic.N}, {@code android.generic.N+M} and {@code none}, where
+     * {@code N} denotes the total number of non-bidirectional layers (which must be at least 1)
+     * and {@code M} denotes the total number of bidirectional layers (which must be non-negative).
+     * <p class=note>{@code android.generic.*} schemas have been added in {@link
+     * android.os.Build.VERSION_CODES#N_MR1}.
+     * <p>
+     * The encoder may support fewer temporal layers, in which case the output format
+     * will contain the configured schema. If the encoder does not support temporal
+     * layering, the output format will not have an entry with this key.
      * The associated value is a string.
      */
     public static final String KEY_TEMPORAL_LAYERING = "ts-schema";
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 92adfd9..30395b8 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -3494,7 +3494,7 @@
          * @param extra an extra code, specific to the info. Typically
          * implementation dependent.
          * @return True if the method handled the info, false if it didn't.
-         * Returning false, or not having an OnErrorListener at all, will
+         * Returning false, or not having an OnInfoListener at all, will
          * cause the info to be discarded.
          */
         boolean onInfo(MediaPlayer mp, int what, int extra);
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 73485af..8971ac5 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -952,7 +952,7 @@
     /* Do not change these values without updating their counterparts
      * in include/media/mediarecorder.h!
      */
-    /** Unspecified media recorder error.
+    /** Unspecified media recorder info.
      * @see android.media.MediaRecorder.OnInfoListener
      */
     public static final int MEDIA_RECORDER_INFO_UNKNOWN              = 1;
@@ -1035,22 +1035,22 @@
 
 
     /**
-     * Interface definition for a callback to be invoked when an error
-     * occurs while recording.
+     * Interface definition of a callback to be invoked to communicate some
+     * info and/or warning about the recording.
      */
     public interface OnInfoListener
     {
         /**
-         * Called when an error occurs while recording.
+         * Called to indicate an info or a warning during recording.
          *
-         * @param mr the MediaRecorder that encountered the error
-         * @param what    the type of error that has occurred:
+         * @param mr   the MediaRecorder the info pertains to
+         * @param what the type of info or warning that has occurred
          * <ul>
          * <li>{@link #MEDIA_RECORDER_INFO_UNKNOWN}
          * <li>{@link #MEDIA_RECORDER_INFO_MAX_DURATION_REACHED}
          * <li>{@link #MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED}
          * </ul>
-         * @param extra   an extra code, specific to the error type
+         * @param extra   an extra code, specific to the info type
          */
         void onInfo(MediaRecorder mr, int what, int extra);
     }
diff --git a/media/java/android/media/PlayerBase.java b/media/java/android/media/PlayerBase.java
index 0f7dc9a..b262d97 100644
--- a/media/java/android/media/PlayerBase.java
+++ b/media/java/android/media/PlayerBase.java
@@ -181,10 +181,15 @@
      * @return
      */
     boolean isRestricted_sync() {
+        // check app ops
+        if (mHasAppOpsPlayAudio) {
+            return false;
+        }
+        // check bypass flag
         if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) {
             return false;
         }
-        return !mHasAppOpsPlayAudio;
+        return true;
     }
 
     // Abstract methods a subclass needs to implement
diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java
index 5ede1d5..9fafda4 100644
--- a/media/java/android/media/SoundPool.java
+++ b/media/java/android/media/SoundPool.java
@@ -505,27 +505,31 @@
     }
 
     private boolean isRestricted() {
-        IAudioService service = getService();
-        boolean cameraSoundForced = false;
-
-        try {
-            cameraSoundForced = service.isCameraSoundForced();
-        } catch (RemoteException e) {
-            Log.e(TAG, "Cannot access AudioService in isRestricted()");
-        }
-
-        if (cameraSoundForced &&
-                ((mAttributes.getAllFlags() & AudioAttributes.FLAG_AUDIBILITY_ENFORCED) != 0)
-// FIXME: should also check usage when set properly by camera app
-//                && (mAttributes.getUsage() == AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
-                ) {
+        // check app ops
+        if (mHasAppOpsPlayAudio) {
             return false;
         }
-
+        // check bypass flag
         if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) {
             return false;
         }
-        return !mHasAppOpsPlayAudio;
+        // check force audibility flag and camera restriction
+        if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_AUDIBILITY_ENFORCED) != 0) {
+// FIXME: should also check usage when set properly by camera app
+//          && (mAttributes.getUsage() == AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
+            boolean cameraSoundForced = false;
+            try {
+                cameraSoundForced = getService().isCameraSoundForced();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Cannot access AudioService in isRestricted()");
+            } catch (NullPointerException e) {
+                Log.e(TAG, "Null AudioService in isRestricted()");
+            }
+            if (cameraSoundForced) {
+                return false;
+            }
+        }
+        return true;
     }
 
     private void updateAppOpsPlayAudio() {
diff --git a/media/java/android/media/midi/MidiDeviceServer.java b/media/java/android/media/midi/MidiDeviceServer.java
index f0abf71..fbc8615 100644
--- a/media/java/android/media/midi/MidiDeviceServer.java
+++ b/media/java/android/media/midi/MidiDeviceServer.java
@@ -73,6 +73,10 @@
 
     private final Callback mCallback;
 
+    private final HashMap<IBinder, PortClient> mPortClients = new HashMap<IBinder, PortClient>();
+    private final HashMap<MidiInputPort, PortClient> mInputPortClients =
+            new HashMap<MidiInputPort, PortClient>();
+
     public interface Callback {
         /**
          * Called to notify when an our device status has changed
@@ -102,6 +106,10 @@
 
         abstract void close();
 
+        MidiInputPort getInputPort() {
+            return null;
+        }
+
         @Override
         public void binderDied() {
             close();
@@ -152,9 +160,12 @@
             mInputPorts.remove(mInputPort);
             IoUtils.closeQuietly(mInputPort);
         }
-    }
 
-    private final HashMap<IBinder, PortClient> mPortClients = new HashMap<IBinder, PortClient>();
+        @Override
+        MidiInputPort getInputPort() {
+            return mInputPort;
+        }
+    }
 
     // Binder interface stub for receiving connection requests from clients
     private final IMidiDeviceServer mServer = new IMidiDeviceServer.Stub() {
@@ -215,6 +226,10 @@
                 ParcelFileDescriptor[] pair = ParcelFileDescriptor.createSocketPair(
                                                     OsConstants.SOCK_SEQPACKET);
                 MidiInputPort inputPort = new MidiInputPort(pair[0], portNumber);
+                // Configure the server-side socket in non-blocking mode to avoid stalling
+                // the entire MIDI framework if client app code gets stuck inside 'onSend'
+                // handler.
+                IoUtils.setBlocking(pair[0].getFileDescriptor(), false);
                 MidiDispatcher dispatcher = mOutputPortDispatchers[portNumber];
                 synchronized (dispatcher) {
                     dispatcher.getSender().connect(inputPort);
@@ -228,6 +243,9 @@
                 synchronized (mPortClients) {
                     mPortClients.put(token, client);
                 }
+                synchronized (mInputPortClients) {
+                    mInputPortClients.put(inputPort, client);
+                }
                 return pair[1];
             } catch (IOException e) {
                 Log.e(TAG, "unable to create ParcelFileDescriptors in openOutputPort");
@@ -237,12 +255,19 @@
 
         @Override
         public void closePort(IBinder token) {
+            MidiInputPort inputPort = null;
             synchronized (mPortClients) {
                 PortClient client = mPortClients.remove(token);
                 if (client != null) {
+                    inputPort = client.getInputPort();
                     client.close();
                 }
             }
+            if (inputPort != null) {
+                synchronized (mInputPortClients) {
+                    mInputPortClients.remove(inputPort);
+                }
+            }
         }
 
         @Override
@@ -270,6 +295,9 @@
             synchronized (mPortClients) {
                 mPortClients.put(token, client);
             }
+            synchronized (mInputPortClients) {
+                mInputPortClients.put(inputPort, client);
+            }
             return Process.myPid(); // for caller to detect same process ID
         }
 
@@ -303,7 +331,7 @@
 
         mOutputPortDispatchers = new MidiDispatcher[numOutputPorts];
         for (int i = 0; i < numOutputPorts; i++) {
-            mOutputPortDispatchers[i] = new MidiDispatcher();
+            mOutputPortDispatchers[i] = new MidiDispatcher(mInputPortFailureHandler);
         }
 
         mInputPortOpen = new boolean[mInputPortCount];
@@ -312,6 +340,20 @@
         mGuard.open("close");
     }
 
+    private final MidiDispatcher.MidiReceiverFailureHandler mInputPortFailureHandler =
+            new MidiDispatcher.MidiReceiverFailureHandler() {
+                public void onReceiverFailure(MidiReceiver receiver, IOException failure) {
+                    Log.e(TAG, "MidiInputPort failed to send data", failure);
+                    PortClient client = null;
+                    synchronized (mInputPortClients) {
+                        client = mInputPortClients.remove(receiver);
+                    }
+                    if (client != null) {
+                        client.close();
+                    }
+                }
+            };
+
     // Constructor for MidiDeviceService.onCreate()
     /* package */ MidiDeviceServer(IMidiManager midiManager, MidiReceiver[] inputPortReceivers,
            MidiDeviceInfo deviceInfo, Callback callback) {
diff --git a/media/java/android/media/midi/MidiOutputPort.java b/media/java/android/media/midi/MidiOutputPort.java
index 0096995..54c31e3 100644
--- a/media/java/android/media/midi/MidiOutputPort.java
+++ b/media/java/android/media/midi/MidiOutputPort.java
@@ -83,7 +83,7 @@
                 }
             } catch (IOException e) {
                 // FIXME report I/O failure?
-                Log.e(TAG, "read failed");
+                Log.e(TAG, "read failed", e);
             } finally {
                 IoUtils.closeQuietly(mInputStream);
             }
diff --git a/media/java/android/media/soundtrigger/SoundTriggerDetector.java b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
index df0961b..d5296ae 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerDetector.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
@@ -15,6 +15,7 @@
  */
 
 package android.media.soundtrigger;
+import static android.hardware.soundtrigger.SoundTrigger.STATUS_OK;
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -243,27 +244,29 @@
 
         boolean allowMultipleTriggers =
                 (recognitionFlags & RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS) != 0;
+        int status = STATUS_OK;
         try {
-            mSoundTriggerService.startRecognition(new ParcelUuid(mSoundModelId),
+            status = mSoundTriggerService.startRecognition(new ParcelUuid(mSoundModelId),
                     mRecognitionCallback, new RecognitionConfig(captureTriggerAudio,
                         allowMultipleTriggers, null, null));
         } catch (RemoteException e) {
             return false;
         }
-        return true;
+        return status == STATUS_OK;
     }
 
     /**
      * Stops recognition for the associated model.
      */
     public boolean stopRecognition() {
+        int status = STATUS_OK;
         try {
-            mSoundTriggerService.stopRecognition(new ParcelUuid(mSoundModelId),
+            status = mSoundTriggerService.stopRecognition(new ParcelUuid(mSoundModelId),
                     mRecognitionCallback);
         } catch (RemoteException e) {
             return false;
         }
-        return true;
+        return status == STATUS_OK;
     }
 
     /**
diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java
index ecc4a0d..aee9d38e 100644
--- a/media/java/android/media/tv/TvView.java
+++ b/media/java/android/media/tv/TvView.java
@@ -776,8 +776,8 @@
         mSurface = null;
         mSurfaceView = new SurfaceView(getContext(), mAttrs, mDefStyleAttr) {
             @Override
-            protected void updateWindow(boolean force, boolean redrawNeeded) {
-                super.updateWindow(force, redrawNeeded);
+            protected void updateWindow() {
+                super.updateWindow();
                 relayoutSessionOverlayView();
             }};
         // The surface view's content should be treated as secure all the time.
diff --git a/media/java/android/mtp/MtpDeviceInfo.java b/media/java/android/mtp/MtpDeviceInfo.java
index 86bd599..0304ee3 100644
--- a/media/java/android/mtp/MtpDeviceInfo.java
+++ b/media/java/android/mtp/MtpDeviceInfo.java
@@ -16,6 +16,8 @@
 
 package android.mtp;
 
+import android.annotation.NonNull;
+
 /**
  * This class encapsulates information about an MTP device.
  * This corresponds to the DeviceInfo Dataset described in
@@ -39,7 +41,7 @@
      *
      * @return the manufacturer name
      */
-    public final String getManufacturer() {
+    public final @NonNull String getManufacturer() {
         return mManufacturer;
     }
 
@@ -48,7 +50,7 @@
      *
      * @return the model name
      */
-    public final String getModel() {
+    public final @NonNull String getModel() {
         return mModel;
     }
 
@@ -57,7 +59,7 @@
      *
      * @return the device version
      */
-    public final String getVersion() {
+    public final @NonNull String getVersion() {
         return mVersion;
     }
 
@@ -66,7 +68,7 @@
      *
      * @return the serial number
      */
-    public final String getSerialNumber() {
+    public final @NonNull String getSerialNumber() {
         return mSerialNumber;
     }
 
@@ -110,7 +112,7 @@
      * @see MtpConstants#OPERATION_SET_OBJECT_REFERENCES
      * @see MtpConstants#OPERATION_SKIP
      */
-    public final int[] getOperationsSupported() {
+    public final @NonNull int[] getOperationsSupported() {
         return mOperationsSupported;
     }
 
@@ -137,7 +139,7 @@
      * @see MtpEvent#EVENT_OBJECT_PROP_DESC_CHANGED
      * @see MtpEvent#EVENT_OBJECT_REFERENCES_CHANGED
      */
-    public final int[] getEventsSupported() {
+    public final @NonNull int[] getEventsSupported() {
         return mEventsSupported;
     }
 
@@ -163,7 +165,7 @@
      * Returns if the code set contains code.
      * @hide
      */
-    private static boolean isSupported(int[] set, int code) {
+    private static boolean isSupported(@NonNull int[] set, int code) {
         for (final int element : set) {
             if (element == code) {
                 return true;
diff --git a/media/java/android/mtp/MtpObjectInfo.java b/media/java/android/mtp/MtpObjectInfo.java
index 02092b1..35d8dfb 100644
--- a/media/java/android/mtp/MtpObjectInfo.java
+++ b/media/java/android/mtp/MtpObjectInfo.java
@@ -16,8 +16,13 @@
 
 package android.mtp;
 
+import android.annotation.NonNull;
+import android.os.Build;
+
 import com.android.internal.util.Preconditions;
 
+import dalvik.system.VMRuntime;
+
 /**
  * This class encapsulates information about an object on an MTP device.
  * This corresponds to the ObjectInfo Dataset described in
@@ -40,10 +45,10 @@
     private int mAssociationType;
     private int mAssociationDesc;
     private int mSequenceNumber;
-    private String mName;
+    private String mName = "";
     private long mDateCreated;
     private long mDateModified;
-    private String mKeywords;
+    private String mKeywords = "";
 
     // only instantiated via JNI or via a builder
     private MtpObjectInfo() {
@@ -311,7 +316,7 @@
      *
      * @return the object's name
      */
-    public final String getName() {
+    public final @NonNull String getName() {
         return mName;
     }
 
@@ -340,7 +345,7 @@
      *
      * @return the object's keyword list
      */
-    public final String getKeywords() {
+    public final @NonNull String getKeywords() {
         return mKeywords;
     }
 
@@ -435,12 +440,20 @@
             return this;
         }
 
-        public Builder setKeywords(String value) {
+        public Builder setKeywords(@NonNull String value) {
+            if (VMRuntime.getRuntime().getTargetSdkVersion() > Build.VERSION_CODES.N_MR1) {
+                Preconditions.checkNotNull(value);
+            } else if (value == null) {
+                // Before N_MR1 we accept null value and it was regarded as an empty string in
+                // MtpDevice#sendObjectInfo.
+                value = "";
+            }
             mObjectInfo.mKeywords = value;
             return this;
         }
 
-        public Builder setName(String value) {
+        public Builder setName(@NonNull String value) {
+            Preconditions.checkNotNull(value);
             mObjectInfo.mName = value;
             return this;
         }
diff --git a/media/java/android/mtp/MtpServer.java b/media/java/android/mtp/MtpServer.java
index 61fbfb9..99f93e4 100644
--- a/media/java/android/mtp/MtpServer.java
+++ b/media/java/android/mtp/MtpServer.java
@@ -16,6 +16,8 @@
 
 package android.mtp;
 
+import com.android.internal.util.Preconditions;
+
 /**
  * Java wrapper for MTP/PTP support as USB responder.
  * {@hide}
@@ -24,13 +26,15 @@
 
     private long mNativeContext; // accessed by native methods
     private final MtpDatabase mDatabase;
+    private final Runnable mOnTerminate;
 
     static {
         System.loadLibrary("media_jni");
     }
 
-    public MtpServer(MtpDatabase database, boolean usePtp) {
-        mDatabase = database;
+    public MtpServer(MtpDatabase database, boolean usePtp, Runnable onTerminate) {
+        mDatabase = Preconditions.checkNotNull(database);
+        mOnTerminate = Preconditions.checkNotNull(onTerminate);
         native_setup(database, usePtp);
         database.setServer(this);
     }
@@ -45,6 +49,7 @@
         native_run();
         native_cleanup();
         mDatabase.close();
+        mOnTerminate.run();
     }
 
     public void sendObjectAdded(int handle) {
diff --git a/media/java/android/mtp/MtpStorageInfo.java b/media/java/android/mtp/MtpStorageInfo.java
index d1b86fc..af9f24a 100644
--- a/media/java/android/mtp/MtpStorageInfo.java
+++ b/media/java/android/mtp/MtpStorageInfo.java
@@ -16,6 +16,8 @@
 
 package android.mtp;
 
+import android.annotation.NonNull;
+
 /**
  * This class encapsulates information about a storage unit on an MTP device.
  * This corresponds to the StorageInfo Dataset described in
@@ -68,7 +70,7 @@
      *
      * @return the storage unit description
      */
-    public final String getDescription() {
+    public final @NonNull String getDescription() {
         return mDescription;
     }
 
@@ -77,7 +79,7 @@
      *
      * @return the storage volume identifier
      */
-    public final String getVolumeIdentifier() {
+    public final @NonNull String getVolumeIdentifier() {
         return mVolumeIdentifier;
     }
 }
diff --git a/media/jni/android_media_ExifInterface.cpp b/media/jni/android_media_ExifInterface.cpp
index 731deae..10b31706 100644
--- a/media/jni/android_media_ExifInterface.cpp
+++ b/media/jni/android_media_ExifInterface.cpp
@@ -130,7 +130,6 @@
     piex::PreviewImageData image_data;
 
     if (!GetExifFromRawImage(piexStream.get(), String8("[piex stream]"), image_data)) {
-        ALOGI("Raw image not detected");
         return NULL;
     }
 
diff --git a/media/jni/android_media_MediaDataSource.cpp b/media/jni/android_media_MediaDataSource.cpp
index d07942b..2ab7e39 100644
--- a/media/jni/android_media_MediaDataSource.cpp
+++ b/media/jni/android_media_MediaDataSource.cpp
@@ -26,6 +26,7 @@
 #include "JNIHelp.h"
 
 #include <binder/MemoryDealer.h>
+#include <drm/drm_framework_common.h>
 #include <media/stagefright/foundation/ADebug.h>
 #include <nativehelper/ScopedLocalRef.h>
 
@@ -159,4 +160,8 @@
     return String8::format("JMediaDataSource(pid %d, uid %d)", getpid(), getuid());
 }
 
+sp<DecryptHandle> JMediaDataSource::DrmInitialization(const char * /* mime */) {
+    return NULL;
+}
+
 }  // namespace android
diff --git a/media/jni/android_media_MediaDataSource.h b/media/jni/android_media_MediaDataSource.h
index 378baf4..39405d2 100644
--- a/media/jni/android_media_MediaDataSource.h
+++ b/media/jni/android_media_MediaDataSource.h
@@ -47,6 +47,7 @@
     virtual void close();
     virtual uint32_t getFlags();
     virtual String8 toString();
+    virtual sp<DecryptHandle> DrmInitialization(const char *mime);
 
 private:
     // Protect all member variables with mLock because this object will be
diff --git a/media/jni/android_media_MediaRecorder.cpp b/media/jni/android_media_MediaRecorder.cpp
index 922ad79..6c79ab7 100644
--- a/media/jni/android_media_MediaRecorder.cpp
+++ b/media/jni/android_media_MediaRecorder.cpp
@@ -172,6 +172,10 @@
         return;
     }
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setCamera(c->remote(), c->getRecordingProxy()),
             "java/lang/RuntimeException", "setCamera failed.");
 }
@@ -185,6 +189,10 @@
         return;
     }
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setVideoSource(vs), "java/lang/RuntimeException", "setVideoSource failed.");
 }
 
@@ -199,6 +207,10 @@
     }
 
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setAudioSource(as), "java/lang/RuntimeException", "setAudioSource failed.");
 }
 
@@ -211,6 +223,10 @@
         return;
     }
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setOutputFormat(of), "java/lang/RuntimeException", "setOutputFormat failed.");
 }
 
@@ -223,6 +239,10 @@
         return;
     }
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setVideoEncoder(ve), "java/lang/RuntimeException", "setVideoEncoder failed.");
 }
 
@@ -235,6 +255,10 @@
         return;
     }
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setAudioEncoder(ae), "java/lang/RuntimeException", "setAudioEncoder failed.");
 }
 
@@ -249,6 +273,10 @@
     }
 
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
 
     const char* params8 = env->GetStringUTFChars(params, NULL);
     if (params8 == NULL)
@@ -271,6 +299,10 @@
     }
     int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     status_t opStatus = mr->setOutputFile(fd, offset, length);
     process_media_recorder_call(env, opStatus, "java/io/IOException", "setOutputFile failed.");
 }
@@ -280,6 +312,10 @@
 {
     ALOGV("setVideoSize(%d, %d)", width, height);
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
 
     if (width <= 0 || height <= 0) {
         jniThrowException(env, "java/lang/IllegalArgumentException", "invalid video size");
@@ -297,6 +333,10 @@
         return;
     }
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->setVideoFrameRate(rate), "java/lang/RuntimeException", "setVideoFrameRate failed.");
 }
 
@@ -305,6 +345,10 @@
 {
     ALOGV("setMaxDuration(%d)", max_duration_ms);
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
 
     char params[64];
     sprintf(params, "max-duration=%d", max_duration_ms);
@@ -318,6 +362,10 @@
 {
     ALOGV("setMaxFileSize(%lld)", (long long)max_filesize_bytes);
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
 
     char params[64];
     sprintf(params, "max-filesize=%" PRId64, max_filesize_bytes);
@@ -330,6 +378,10 @@
 {
     ALOGV("prepare");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
 
     jobject surface = env->GetObjectField(thiz, fields.surface);
     if (surface != NULL) {
@@ -356,6 +408,10 @@
 {
     ALOGV("getMaxAmplitude");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return 0;
+    }
     int result = 0;
     process_media_recorder_call(env, mr->getMaxAmplitude(&result), "java/lang/RuntimeException", "getMaxAmplitude failed.");
     return (jint) result;
@@ -366,6 +422,10 @@
 {
     ALOGV("getSurface");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return NULL;
+    }
 
     sp<IGraphicBufferProducer> bufferProducer = mr->querySurfaceMediaSourceFromMediaServer();
     if (bufferProducer == NULL) {
@@ -386,6 +446,10 @@
 {
     ALOGV("start");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->start(), "java/lang/RuntimeException", "start failed.");
 }
 
@@ -394,6 +458,10 @@
 {
     ALOGV("stop");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->stop(), "java/lang/RuntimeException", "stop failed.");
 }
 
@@ -402,6 +470,10 @@
 {
     ALOGV("pause");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->pause(), "java/lang/RuntimeException", "pause failed.");
 }
 
@@ -410,6 +482,10 @@
 {
     ALOGV("resume");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->resume(), "java/lang/RuntimeException", "resume failed.");
 }
 
@@ -418,6 +494,10 @@
 {
     ALOGV("native_reset");
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
     process_media_recorder_call(env, mr->reset(), "java/lang/RuntimeException", "native_reset failed.");
 }
 
@@ -516,6 +596,10 @@
     ALOGV("android_media_MediaRecorder_setInputSurface");
 
     sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
+    if (mr == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
 
     sp<PersistentSurface> persistentSurface = get_persistentSurface(env, object);
 
diff --git a/media/mca/filterpacks/Android.mk b/media/mca/filterpacks/Android.mk
index 0ff7658..d89b1e9 100644
--- a/media/mca/filterpacks/Android.mk
+++ b/media/mca/filterpacks/Android.mk
@@ -50,4 +50,8 @@
 
 LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
 
+# Bug: http://b/29823425 Disable constant-conversion warning triggered in
+# native/imageproc/to_rgba.c
+LOCAL_CFLAGS += -Wno-constant-conversion
+
 include $(BUILD_SHARED_LIBRARY)
diff --git a/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml b/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml
index d499771..9134649 100644
--- a/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml
@@ -26,7 +26,7 @@
     <string name="deny_restore_button_label" msgid="1724367334453104378">"ပြန်လည်ရယူခြင်းအား မပြုလုပ်ပါနှင့်"</string>
     <string name="current_password_text" msgid="8268189555578298067">"သင့်လက်ရှိ အရံသိမ်းဆည်းမှု လျှို့ဝှက်စကားဝှက်အား ထည့်သွင်းပါ။"</string>
     <string name="device_encryption_restore_text" msgid="1570864916855208992">"သင့်စက်၏ လျှို့ဝှက်အသွင်ပြောင်းခြင်းအတွက်စကားဝှက်ကို ထည့်သွင်းပါ။"</string>
-    <string name="device_encryption_backup_text" msgid="5866590762672844664">"သင့်စက်၏လျှို့ဝှက်အသွင်ပြောင်းခြင်းအတွက် လျှို့ဝှက်စကားဝှက်အားထည့်ပါ။ အရံသိမ်းဆည်းမှု သိမ်းဆည်းနေရာတွင်လည်း အသုံးပြုမည်ဖြစ်သည်။"</string>
+    <string name="device_encryption_backup_text" msgid="5866590762672844664">"သင့်စက်၏အသွင်ပြောင်းခြင်းအတွက် စကားဝှက်ကို ထည့်ပါ။ အရန်မှတ်တမ်းတွင်လည်း အသုံးပြုပါမည်။"</string>
     <string name="backup_enc_password_text" msgid="4981585714795233099">"ဒေတာအားလုံးအားအရန်သိမ်းဆည်းခြင်းပြီးလျှို့ဝှက်အသွင်ပြောင်းခြင်းအတွက် လျှို့ဝှက်နံပါတ်/စာကိုထည့်ပါ။ အကယ်၍ ကွက်လပ်ထားပါက ယခုသင့်လက်ရှိလျှို့ဝှက်စကားဝှက်အား အသုံးပြုပါမည်။"</string>
     <string name="backup_enc_password_optional" msgid="1350137345907579306">"အကယ်၍ ဒေတာအားလုံးအားအရန်သိမ်းဆည်းခြင်းကို ဝှက်လိုပါက အောက်တွင်လျှို့ဝှက်နံပါတ်/စာကိုထည့်ပါ။"</string>
     <string name="backup_enc_password_required" msgid="7889652203371654149">"သင်၏ ကိရိယာကို လျှို့ဝျက်ကုဒ် သွင်းထားရာ၊ သင်သည် သင်၏ ဘက်အာပ်ကိုပါ  လျှို့ဝျက်ကုဒ် သွင်းရန် လိုအပ်သည်။ ကျေးဇူးပြုပြီး အောက်မှာ စကားဝှက်ကို ထည့်သွင်းပါ:"</string>
diff --git a/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml b/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml
index 41d3d79..e25570d 100644
--- a/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml
+++ b/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml
@@ -7,5 +7,5 @@
     <string name="action_bar_label" msgid="917235635415966620">"ကွန်ယက်သို့ လက်မှတ်ထိုးဝင်ရန်"</string>
     <string name="ssl_error_warning" msgid="6653188881418638872">"သင်ချိတ်ဆက်ရန် ကြိုးစားနေသည့် ကွန်ရက်သည် လုံခြုံရေးပြဿနာ ရှိနေသည်။"</string>
     <string name="ssl_error_example" msgid="647898534624078900">"ဥပမာ၊ ဝင်ရောက်ရန် စာမျက်နှာသည် ပြသထားသည့် အဖွဲ့အစည်းနှင့် သက်ဆိုင်မှု မရှိနိုင်ပါ။"</string>
-    <string name="ssl_error_continue" msgid="6492718244923937110">"ဘရောက်ဇာမှတစ်ဆင့် ရှေ့ဆက်ရန်"</string>
+    <string name="ssl_error_continue" msgid="6492718244923937110">"ဘရောက်ဇာမှတစ်ဆင့် ဆက်လုပ်ရန်"</string>
 </resources>
diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml
index 69bcbc2..b224510 100644
--- a/packages/DocumentsUI/AndroidManifest.xml
+++ b/packages/DocumentsUI/AndroidManifest.xml
@@ -11,6 +11,7 @@
     <application
         android:name=".DocumentsApplication"
         android:label="@string/app_label"
+        android:icon="@mipmap/ic_app_icon"
         android:supportsRtl="true">
 
         <activity
diff --git a/packages/DocumentsUI/res/layout/fragment_directory.xml b/packages/DocumentsUI/res/layout/fragment_directory.xml
index 8eb46dd..1c086a6 100644
--- a/packages/DocumentsUI/res/layout/fragment_directory.xml
+++ b/packages/DocumentsUI/res/layout/fragment_directory.xml
@@ -39,65 +39,70 @@
         android:background="@color/material_grey_50"
         android:visibility="gone"/>
 
-    <!-- The empty container view -->
-    <FrameLayout
-        android:id="@android:id/empty"
-        android:gravity="center"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical"
-        android:background="@color/directory_background"
-        android:focusable="true"
-        android:focusableInTouchMode="true"
-        android:visibility="gone">
-
-        <LinearLayout
-            android:id="@+id/content"
-            android:gravity="center"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical">
-
-            <ImageView
-                android:id="@+id/artwork"
-                android:src="@drawable/cabinet"
-                android:adjustViewBounds="true"
-                android:layout_height="250dp"
-                android:layout_width="fill_parent"
-                android:alpha="1"
-                android:layout_centerVertical="true"
-                android:layout_marginBottom="25dp"
-                android:scaleType="fitCenter"
-                android:contentDescription="@null" />
-
-            <TextView
-                android:id="@+id/message"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/empty"
-                style="@android:style/TextAppearance.Material.Subhead" />
-
-        </LinearLayout>
-    </FrameLayout>
-
-    <!-- This FrameLayout works around b/24189541 -->
-    <FrameLayout
+    <com.android.documentsui.dirlist.TouchSwipeRefreshLayout
+        android:id="@+id/refresh_layout"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <android.support.v7.widget.RecyclerView
-            android:id="@+id/dir_list"
-            android:scrollbars="vertical"
+        <FrameLayout
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:paddingStart="0dp"
-            android:paddingEnd="0dp"
-            android:paddingTop="0dp"
-            android:paddingBottom="0dp"
-            android:clipToPadding="false"
-            android:scrollbarStyle="outsideOverlay"
-            android:drawSelectorOnTop="true" />
+            android:layout_height="match_parent">
+            <!-- The empty container view -->
+            <FrameLayout
+                android:id="@android:id/empty"
+                android:gravity="center"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                android:background="@color/directory_background"
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:visibility="gone"
+                android:clickable="true">
 
-    </FrameLayout>
+                <LinearLayout
+                    android:id="@+id/content"
+                    android:gravity="center"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical">
+
+                    <ImageView
+                        android:id="@+id/artwork"
+                        android:src="@drawable/cabinet"
+                        android:adjustViewBounds="true"
+                        android:layout_height="250dp"
+                        android:layout_width="fill_parent"
+                        android:alpha="1"
+                        android:layout_centerVertical="true"
+                        android:layout_marginBottom="25dp"
+                        android:scaleType="fitCenter"
+                        android:contentDescription="@null"/>
+
+                    <TextView
+                        android:id="@+id/message"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/empty"
+                        style="@android:style/TextAppearance.Material.Subhead"/>
+
+                </LinearLayout>
+            </FrameLayout>
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/dir_list"
+                android:scrollbars="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingStart="0dp"
+                android:paddingEnd="0dp"
+                android:paddingTop="0dp"
+                android:paddingBottom="0dp"
+                android:clipToPadding="false"
+                android:scrollbarStyle="outsideOverlay"
+                android:drawSelectorOnTop="true"/>
+        </FrameLayout>
+
+    </com.android.documentsui.dirlist.TouchSwipeRefreshLayout>
 
 </com.android.documentsui.dirlist.AnimationView>
diff --git a/packages/DocumentsUI/res/layout/item_root.xml b/packages/DocumentsUI/res/layout/item_root.xml
index 9671813..114fd09 100644
--- a/packages/DocumentsUI/res/layout/item_root.xml
+++ b/packages/DocumentsUI/res/layout/item_root.xml
@@ -77,7 +77,7 @@
         android:duplicateParentState="true">
 
         <ImageView
-            android:id="@+id/unmount_icon"
+            android:id="@+id/eject_icon"
             android:layout_width="@dimen/root_icon_size"
             android:layout_height="match_parent"
             android:scaleType="centerInside"
diff --git a/packages/DocumentsUI/res/mipmap-hdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-hdpi/ic_app_icon.png
new file mode 100644
index 0000000..cd3a037
--- /dev/null
+++ b/packages/DocumentsUI/res/mipmap-hdpi/ic_app_icon.png
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-mdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-mdpi/ic_app_icon.png
new file mode 100644
index 0000000..8d08e9b
--- /dev/null
+++ b/packages/DocumentsUI/res/mipmap-mdpi/ic_app_icon.png
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xhdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-xhdpi/ic_app_icon.png
new file mode 100644
index 0000000..f3bacb7
--- /dev/null
+++ b/packages/DocumentsUI/res/mipmap-xhdpi/ic_app_icon.png
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xxhdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-xxhdpi/ic_app_icon.png
new file mode 100644
index 0000000..5156171
--- /dev/null
+++ b/packages/DocumentsUI/res/mipmap-xxhdpi/ic_app_icon.png
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_app_icon.png
new file mode 100644
index 0000000..6dc2f76
--- /dev/null
+++ b/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_app_icon.png
Binary files differ
diff --git a/packages/DocumentsUI/res/values-af/strings.xml b/packages/DocumentsUI/res/values-af/strings.xml
index 7aa41d1..bc00af7 100644
--- a/packages/DocumentsUI/res/values-af/strings.xml
+++ b/packages/DocumentsUI/res/values-af/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Kan nie die geselekteerde lêers in hierdie ligging plak nie."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Hernoem"</string>
     <string name="rename_error" msgid="4203041674883412606">"Kon nie dokument hernoem nie"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Maak los"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sommige lêers is omgeskakel"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Gee <xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang tot <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-gids op <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Gee <xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang tot <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-gids?"</string>
diff --git a/packages/DocumentsUI/res/values-am/strings.xml b/packages/DocumentsUI/res/values-am/strings.xml
index bc8b238..c1689fb 100644
--- a/packages/DocumentsUI/res/values-am/strings.xml
+++ b/packages/DocumentsUI/res/values-am/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"የተመረጡትን ፋይሎች ወደዚህ አካባቢ መለጠፍ አይቻልም።"</string>
     <string name="menu_rename" msgid="7678802479104285353">"እንደገና ሰይም"</string>
     <string name="rename_error" msgid="4203041674883412606">"ሰነዱን ዳግም መሰየም አልተሳካም"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"አስወጣ"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"አንዳንድ ፋይሎች ተለውጠዋል"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> በ<xliff:g id="STORAGE"><i>^3</i></xliff:g> ላይ የ<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ማውጫ መደረሻ ይሰጠው?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"የ<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ማውጫ መዳረሻ ለ<xliff:g id="APPNAME"><b>^1</b></xliff:g> ይሰጠው?"</string>
diff --git a/packages/DocumentsUI/res/values-ar/strings.xml b/packages/DocumentsUI/res/values-ar/strings.xml
index 7e1f316..620143b 100644
--- a/packages/DocumentsUI/res/values-ar/strings.xml
+++ b/packages/DocumentsUI/res/values-ar/strings.xml
@@ -139,6 +139,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"يتعذر لصق الملفات المحددة في هذا الموقع."</string>
     <string name="menu_rename" msgid="7678802479104285353">"إعادة تسمية"</string>
     <string name="rename_error" msgid="4203041674883412606">"أخفقت إعادة تسمية المستند."</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"إخراج"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"تم تحويل بعض الملفات"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"هل تريد منح التطبيق <xliff:g id="APPNAME"><b>^1</b></xliff:g> حق الوصول إلى الدليل <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> على <xliff:g id="STORAGE"><i>^3</i></xliff:g>؟"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"هل تريد تمكين <xliff:g id="APPNAME"><b>^1</b></xliff:g> من الدخول إلى دليل <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>؟"</string>
diff --git a/packages/DocumentsUI/res/values-az-rAZ/strings.xml b/packages/DocumentsUI/res/values-az-rAZ/strings.xml
index 7618ddf..988697c 100644
--- a/packages/DocumentsUI/res/values-az-rAZ/strings.xml
+++ b/packages/DocumentsUI/res/values-az-rAZ/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Seçilmiş faylları bu məkana yerləşdirmək olmaz."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Adını dəyişdirin"</string>
     <string name="rename_error" msgid="4203041674883412606">"Sənəd adını dəyişmək uğursuz oldu"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Çıxarın"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Bəzi fayllar konvertasiya edilib"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> yaddaşında <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> kataloquna <xliff:g id="APPNAME"><b>^1</b></xliff:g> girişi təqdim edilsin?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> kataloquna <xliff:g id="APPNAME"><b>^1</b></xliff:g> girişi təqdim edilsin?"</string>
diff --git a/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml b/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml
index 96f13eb..d38a431 100644
--- a/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml
@@ -118,6 +118,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Izabrane datoteke ne mogu da se nalepe na ovoj lokaciji."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Preimenuj"</string>
     <string name="rename_error" msgid="4203041674883412606">"Preimenovanje dokumenta nije uspelo"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Izbaci"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Neke datoteke su konvertovane"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Želite li da aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> odobrite pristup direktorijumu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> na memorijskom prostoru <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Želite da dozvolite da <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristupa direktorijumu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-be-rBY/strings.xml b/packages/DocumentsUI/res/values-be-rBY/strings.xml
index 9ec3fe08..be6988f 100644
--- a/packages/DocumentsUI/res/values-be-rBY/strings.xml
+++ b/packages/DocumentsUI/res/values-be-rBY/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Немагчыма ўставіць выбраныя файлы ў гэта месца."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Перайменаваць"</string>
     <string name="rename_error" msgid="4203041674883412606">"Не атрымалася перайменаваць дакумент"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Выняць"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Некаторыя файлы былі сканвертаваныя"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Даць праграме <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ да дырэкторыі <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> у <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Даць праграме <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ да каталога <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-bg/strings.xml b/packages/DocumentsUI/res/values-bg/strings.xml
index 68ee075..c35075e 100644
--- a/packages/DocumentsUI/res/values-bg/strings.xml
+++ b/packages/DocumentsUI/res/values-bg/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Избраните файлове не могат да се поставят на това място."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Преименуване"</string>
     <string name="rename_error" msgid="4203041674883412606">"Преименуването на документа не бе успешно"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Изваждане"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Някои файлове бяха преобразувани"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Да се предостави ли на <xliff:g id="APPNAME"><b>^1</b></xliff:g> достъп до директорията „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ в/ъв <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Да се предостави ли на <xliff:g id="APPNAME"><b>^1</b></xliff:g> достъп до директорията „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“?"</string>
diff --git a/packages/DocumentsUI/res/values-bn-rBD/strings.xml b/packages/DocumentsUI/res/values-bn-rBD/strings.xml
index 689555e..334a7ef7 100644
--- a/packages/DocumentsUI/res/values-bn-rBD/strings.xml
+++ b/packages/DocumentsUI/res/values-bn-rBD/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"এই স্থানে নির্বাচিত ফাইলগুলি আটকানো যাবে না।"</string>
     <string name="menu_rename" msgid="7678802479104285353">"পুনঃনামকরণ"</string>
     <string name="rename_error" msgid="4203041674883412606">"দস্তাবেজের পুনঃনামকরণ ব্যর্থ হয়েছে৷"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"সরিয়ে দিন"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"কিছু ফাইল রূপান্তরিত হয়েছে"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> কে <xliff:g id="STORAGE"><i>^3</i></xliff:g> এ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> সংগ্রহ অ্যাক্সেস করার মঞ্জুরি দিতে চান?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> কে <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> সংগ্রহ অ্যাক্সেস করার অনুমতি দেবেন?"</string>
diff --git a/packages/DocumentsUI/res/values-bs-rBA/strings.xml b/packages/DocumentsUI/res/values-bs-rBA/strings.xml
index 59cf607..7bdb458 100644
--- a/packages/DocumentsUI/res/values-bs-rBA/strings.xml
+++ b/packages/DocumentsUI/res/values-bs-rBA/strings.xml
@@ -118,6 +118,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Odabrani fajlovi se ne mogu zalijepiti na ovu lokaciju."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Preimenuj"</string>
     <string name="rename_error" msgid="4203041674883412606">"Nije uspjelo preimenovanje dokumenta"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Izbaci"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Neke od datoteka su pretvorene"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Omogućiti <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristup direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> sa <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Odobriti aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristup direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-ca/strings.xml b/packages/DocumentsUI/res/values-ca/strings.xml
index 3e28a43..01a037f 100644
--- a/packages/DocumentsUI/res/values-ca/strings.xml
+++ b/packages/DocumentsUI/res/values-ca/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"No s\'han pogut enganxar els fitxers seleccionats en aquesta ubicació."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Canvia el nom"</string>
     <string name="rename_error" msgid="4203041674883412606">"No s\'ha pogut canviar el nom del document"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsa"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"S\'han convertit alguns fitxers"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Vols que l\'aplicació <xliff:g id="APPNAME"><b>^1</b></xliff:g> tingui accés al directori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> de l\'emmagatzematge <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vols que l\'aplicació <xliff:g id="APPNAME"><b>^1</b></xliff:g> tingui accés al directori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-cs/strings.xml b/packages/DocumentsUI/res/values-cs/strings.xml
index 93e7d99..8a0d0bf 100644
--- a/packages/DocumentsUI/res/values-cs/strings.xml
+++ b/packages/DocumentsUI/res/values-cs/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Vybrané soubory nelze vložit do tohoto umístění."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Přejmenovat"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokument se nepodařilo přejmenovat."</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Odpojit"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Některé soubory byly převedeny"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Chcete aplikaci <xliff:g id="APPNAME"><b>^1</b></xliff:g> udělit přístup k adresáři <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> v úložišti <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Chcete aplikaci <xliff:g id="APPNAME"><b>^1</b></xliff:g> udělit přístup k adresáři <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-da/strings.xml b/packages/DocumentsUI/res/values-da/strings.xml
index 8eca42d..98117cb 100644
--- a/packages/DocumentsUI/res/values-da/strings.xml
+++ b/packages/DocumentsUI/res/values-da/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"De valgte filer kan ikke indsættes på denne placering."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Omdøb"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokumentet kunne ikke omdøbes"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Skub ud"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Nogle filer er konverteret"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Vil du give <xliff:g id="APPNAME"><b>^1</b></xliff:g> adgang til mappen <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> på <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vil du give <xliff:g id="APPNAME"><b>^1</b></xliff:g> adgang til indekset <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-de/strings.xml b/packages/DocumentsUI/res/values-de/strings.xml
index 88d0b90..9a7cd85 100644
--- a/packages/DocumentsUI/res/values-de/strings.xml
+++ b/packages/DocumentsUI/res/values-de/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Die ausgewählten Dateien können an diesem Ort nicht eingefügt werden."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Umbenennen"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokument konnte nicht umbenannt werden"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Auswerfen"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Einige Dateien wurden konvertiert"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> Zugriff auf das Verzeichnis <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> auf <xliff:g id="STORAGE"><i>^3</i></xliff:g> geben?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Möchtest du <xliff:g id="APPNAME"><b>^1</b></xliff:g> Zugriff auf das Verzeichnis <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> geben?"</string>
diff --git a/packages/DocumentsUI/res/values-el/strings.xml b/packages/DocumentsUI/res/values-el/strings.xml
index 78c4da1..39f0f47 100644
--- a/packages/DocumentsUI/res/values-el/strings.xml
+++ b/packages/DocumentsUI/res/values-el/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Δεν είναι δυνατή η επικόλληση των επιλεγμένων αρχείων σε αυτήν την τοποθεσία."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Μετονομασία"</string>
     <string name="rename_error" msgid="4203041674883412606">"Αποτυχία μετονομασίας εγγράφου"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Εξαγωγή"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Ορισμένα αρχεία μετατράπηκαν"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Να εκχωρηθεί στην εφαρμογή <xliff:g id="APPNAME"><b>^1</b></xliff:g> πρόσβαση στον κατάλογο <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> στον αποθηκευτικό χώρο <xliff:g id="STORAGE"><i>^3</i></xliff:g>;"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Εκχώρηση πρόσβασης στην εφαρμογή <xliff:g id="APPNAME"><b>^1</b></xliff:g> στον κατάλογο <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>;"</string>
diff --git a/packages/DocumentsUI/res/values-en-rAU/strings.xml b/packages/DocumentsUI/res/values-en-rAU/strings.xml
index 35d1458..a871ac0 100644
--- a/packages/DocumentsUI/res/values-en-rAU/strings.xml
+++ b/packages/DocumentsUI/res/values-en-rAU/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Cannot paste the selected files in this location."</string>
     <string name="menu_rename" msgid="7678802479104285353">"rename"</string>
     <string name="rename_error" msgid="4203041674883412606">"Failed to rename document"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Eject"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Some files were converted"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory on <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory?"</string>
diff --git a/packages/DocumentsUI/res/values-en-rGB/strings.xml b/packages/DocumentsUI/res/values-en-rGB/strings.xml
index 35d1458..a871ac0 100644
--- a/packages/DocumentsUI/res/values-en-rGB/strings.xml
+++ b/packages/DocumentsUI/res/values-en-rGB/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Cannot paste the selected files in this location."</string>
     <string name="menu_rename" msgid="7678802479104285353">"rename"</string>
     <string name="rename_error" msgid="4203041674883412606">"Failed to rename document"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Eject"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Some files were converted"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory on <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory?"</string>
diff --git a/packages/DocumentsUI/res/values-en-rIN/strings.xml b/packages/DocumentsUI/res/values-en-rIN/strings.xml
index 35d1458..a871ac0 100644
--- a/packages/DocumentsUI/res/values-en-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-en-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Cannot paste the selected files in this location."</string>
     <string name="menu_rename" msgid="7678802479104285353">"rename"</string>
     <string name="rename_error" msgid="4203041674883412606">"Failed to rename document"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Eject"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Some files were converted"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory on <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory?"</string>
diff --git a/packages/DocumentsUI/res/values-es-rUS/strings.xml b/packages/DocumentsUI/res/values-es-rUS/strings.xml
index 1e13c9c8..fb4d13c 100644
--- a/packages/DocumentsUI/res/values-es-rUS/strings.xml
+++ b/packages/DocumentsUI/res/values-es-rUS/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"No se pueden pegar los archivos seleccionados en esta ubicación."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Cambiar nombre"</string>
     <string name="rename_error" msgid="4203041674883412606">"No se pudo cambiar el nombre del documento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Se convirtieron algunos archivos"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"¿Otorgar acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> en <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"¿Quieres otorgar acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-es/strings.xml b/packages/DocumentsUI/res/values-es/strings.xml
index 7ab1b9f..41ace13 100644
--- a/packages/DocumentsUI/res/values-es/strings.xml
+++ b/packages/DocumentsUI/res/values-es/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Los archivos seleccionados no se pueden pegar en esta ubicación."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Cambiar nombre"</string>
     <string name="rename_error" msgid="4203041674883412606">"Error al cambiar el nombre del documento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Se han convertido algunos archivos"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"¿Permitir que <xliff:g id="APPNAME"><b>^1</b></xliff:g> acceda al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> (<xliff:g id="STORAGE"><i>^3</i></xliff:g>)?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"¿Permitir que <xliff:g id="APPNAME"><b>^1</b></xliff:g> acceda al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-et-rEE/strings.xml b/packages/DocumentsUI/res/values-et-rEE/strings.xml
index cb1d52b..31a6726 100644
--- a/packages/DocumentsUI/res/values-et-rEE/strings.xml
+++ b/packages/DocumentsUI/res/values-et-rEE/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Valitud faile ei saa sellesse asukohta kleepida."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Nimeta ümber"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokumendi ümbernimetamine ebaõnnestus"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Eemalda"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Mõned failid teisendati"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Kas anda rakendusele <xliff:g id="APPNAME"><b>^1</b></xliff:g> juurdepääs kataloogile <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> salvestusruumis <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Kas anda rakendusele <xliff:g id="APPNAME"><b>^1</b></xliff:g> juurdepääs kataloogile <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-eu-rES/strings.xml b/packages/DocumentsUI/res/values-eu-rES/strings.xml
index 232a74b..8810f99 100644
--- a/packages/DocumentsUI/res/values-eu-rES/strings.xml
+++ b/packages/DocumentsUI/res/values-eu-rES/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Ezin dira itsatsi hautatutako fitxategiak kokapen honetan."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Aldatu izena"</string>
     <string name="rename_error" msgid="4203041674883412606">"Ezin izan zaio aldatu izena dokumentuari"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Atera"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Artxibo batzuk bihurtu dira"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> aplikazioari <xliff:g id="STORAGE"><i>^3</i></xliff:g> unitateko <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> direktorioa atzitzeko baimena eman nahi diozu?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> aplikazioari <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> direktoriorako sarbidea eman nahi diozu?"</string>
diff --git a/packages/DocumentsUI/res/values-fa/strings.xml b/packages/DocumentsUI/res/values-fa/strings.xml
index 001bd66..39074e0 100644
--- a/packages/DocumentsUI/res/values-fa/strings.xml
+++ b/packages/DocumentsUI/res/values-fa/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"نمی‌توان فایل‌های انتخابی را در این مکان جای‌گذاری کرد."</string>
     <string name="menu_rename" msgid="7678802479104285353">"تغییر نام"</string>
     <string name="rename_error" msgid="4203041674883412606">"نام سند تغییر نکرد"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"بیرون راندن"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"بعضی از فایل‌ها تبدیل شدند"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"به <xliff:g id="APPNAME"><b>^1</b></xliff:g> اجازه داده شود به فهرست راهنمای <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> در <xliff:g id="STORAGE"><i>^3</i></xliff:g> دسترسی داشته باشد؟"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"به <xliff:g id="APPNAME"><b>^1</b></xliff:g> اجازه دسترسی به دایرکتوری <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> داده شود؟"</string>
diff --git a/packages/DocumentsUI/res/values-fi/strings.xml b/packages/DocumentsUI/res/values-fi/strings.xml
index d23c715..cc87026 100644
--- a/packages/DocumentsUI/res/values-fi/strings.xml
+++ b/packages/DocumentsUI/res/values-fi/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Valittuja tiedostoja ei voi liittää tähän sijaintiin."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Nimeä uudelleen"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokumentin nimen muuttaminen epäonnistui."</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Poista"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Joitakin tiedostoja muunnettiin."</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Myönnetäänkö sovellukselle <xliff:g id="APPNAME"><b>^1</b></xliff:g> sijainnissa <xliff:g id="STORAGE"><i>^3</i></xliff:g> olevan hakemiston <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> käyttöoikeus?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Saako <xliff:g id="APPNAME"><b>^1</b></xliff:g> käyttää hakemistoa <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-fr-rCA/strings.xml b/packages/DocumentsUI/res/values-fr-rCA/strings.xml
index 27169cc..acac67a2 100644
--- a/packages/DocumentsUI/res/values-fr-rCA/strings.xml
+++ b/packages/DocumentsUI/res/values-fr-rCA/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Impossible de coller les fichiers sélectionnés à cet endroit."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Renommer"</string>
     <string name="rename_error" msgid="4203041674883412606">"Impossible de renommer le document"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Éjecter"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Certains fichiers ont été convertis"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Accorder à <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accès au répertoire <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> sur <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Accorder à <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accès au répertoire <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-fr/strings.xml b/packages/DocumentsUI/res/values-fr/strings.xml
index 1e79343..9a11333 100644
--- a/packages/DocumentsUI/res/values-fr/strings.xml
+++ b/packages/DocumentsUI/res/values-fr/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Impossible de coller les fichiers sélectionnés à cet endroit."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Renommer"</string>
     <string name="rename_error" msgid="4203041674883412606">"Échec du changement de nom du document."</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Éjecter"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Certains fichiers ont été convertis"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Autoriser <xliff:g id="APPNAME"><b>^1</b></xliff:g> à accéder à l\'annuaire \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\" sur <xliff:g id="STORAGE"><i>^3</i></xliff:g> ?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Autoriser <xliff:g id="APPNAME"><b>^1</b></xliff:g> à accéder à l\'annuaire \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\" ?"</string>
diff --git a/packages/DocumentsUI/res/values-gl-rES/strings.xml b/packages/DocumentsUI/res/values-gl-rES/strings.xml
index 76ddc7d..645de56 100644
--- a/packages/DocumentsUI/res/values-gl-rES/strings.xml
+++ b/packages/DocumentsUI/res/values-gl-rES/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Non se poden pegar os ficheiros seleccionados nesta localización."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Cambiar nome"</string>
     <string name="rename_error" msgid="4203041674883412606">"Non se puido cambiar o nome do documento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Convertéronse algúns ficheiros"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Queres outorgar acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> ao directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no almacenamento de <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Queres darlle acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> ao directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-gu-rIN/strings.xml b/packages/DocumentsUI/res/values-gu-rIN/strings.xml
index 08dafa2..7fa1b24 100644
--- a/packages/DocumentsUI/res/values-gu-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-gu-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"આ સ્થાનમાં પસંદ કરેલ ફાઇલો પેસ્ટ કરી શકાતી નથી."</string>
     <string name="menu_rename" msgid="7678802479104285353">"નામ બદલો"</string>
     <string name="rename_error" msgid="4203041674883412606">"દસ્તાવેજનું નામ બદલવામાં નિષ્ફળ થયાં"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"બહાર કાઢો"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"કેટલીક ફાઇલો રૂપાંતરિત કરી હતી"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ને <xliff:g id="STORAGE"><i>^3</i></xliff:g> પર <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> નિર્દેશિકાની ઍક્સેસ આપીએ?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ને <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> નિર્દેશિકાની ઍક્સેસ આપીએ?"</string>
diff --git a/packages/DocumentsUI/res/values-hi/strings.xml b/packages/DocumentsUI/res/values-hi/strings.xml
index 3ae406eb..da69875 100644
--- a/packages/DocumentsUI/res/values-hi/strings.xml
+++ b/packages/DocumentsUI/res/values-hi/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"चयनित फ़ाइलों को इस स्‍थान में नहीं चिपकाया जा सकता."</string>
     <string name="menu_rename" msgid="7678802479104285353">"नाम बदलें"</string>
     <string name="rename_error" msgid="4203041674883412606">"दस्‍तावेज़ का नाम बदलना विफल रहा"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"निकालें"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"कुछ फ़ाइलें रूपांतरित हो गई थीं"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> को <xliff:g id="STORAGE"><i>^3</i></xliff:g> पर <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिका का एक्सेस दें?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> को <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिका का एक्सेस प्रदान करें?"</string>
diff --git a/packages/DocumentsUI/res/values-hr/strings.xml b/packages/DocumentsUI/res/values-hr/strings.xml
index 391dfa7..030fedb 100644
--- a/packages/DocumentsUI/res/values-hr/strings.xml
+++ b/packages/DocumentsUI/res/values-hr/strings.xml
@@ -118,6 +118,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Nije moguće zalijepiti odabrane datoteke na ovu lokaciju."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Promijeni naziv"</string>
     <string name="rename_error" msgid="4203041674883412606">"Naziv dokumenta nije promijenjen"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Izbaci"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Neke su datoteke konvertirane"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Želite li aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> odobriti pristup direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> na pohrani <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Želite li aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> odobriti da pristupa direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-hu/strings.xml b/packages/DocumentsUI/res/values-hu/strings.xml
index 304b70e..2224592 100644
--- a/packages/DocumentsUI/res/values-hu/strings.xml
+++ b/packages/DocumentsUI/res/values-hu/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"A kijelölt fájlokat nem lehet beilleszteni erre a helyre."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Átnevezés"</string>
     <string name="rename_error" msgid="4203041674883412606">"Nem sikerült átnevezni a dokumentumot"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Kiadás"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Egyes fájlokat konvertált a rendszer"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Hozzáférést biztosít a(z) <xliff:g id="APPNAME"><b>^1</b></xliff:g> számára a(z) <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> könyvtárhoz itt: <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Hozzáférést biztosít a(z) <xliff:g id="APPNAME"><b>^1</b></xliff:g> alkalmazásnak a(z) <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> könyvtárhoz?"</string>
diff --git a/packages/DocumentsUI/res/values-hy-rAM/strings.xml b/packages/DocumentsUI/res/values-hy-rAM/strings.xml
index d8169e0..5d63784 100644
--- a/packages/DocumentsUI/res/values-hy-rAM/strings.xml
+++ b/packages/DocumentsUI/res/values-hy-rAM/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Հնարավոր չէ տեղադրել ընտրված ֆայլերը այս տեղադրությունում:"</string>
     <string name="menu_rename" msgid="7678802479104285353">"Վերանվանել"</string>
     <string name="rename_error" msgid="4203041674883412606">"Չհաջողվեց վերանվանել փաստաթուղթը"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Անջատել"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Որոշ ֆայլեր փոխարկվել են"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> հավելվածին տրամադրե՞լ <xliff:g id="STORAGE"><i>^3</i></xliff:g>-ի <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> գրացուցակն օգտագործելու թույլտվություն:"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> հավելվածին տրամադրե՞լ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> գրացուցակն օգտագործելու թույլտվություն:"</string>
diff --git a/packages/DocumentsUI/res/values-in/strings.xml b/packages/DocumentsUI/res/values-in/strings.xml
index a70bef8..2e8b0ea 100644
--- a/packages/DocumentsUI/res/values-in/strings.xml
+++ b/packages/DocumentsUI/res/values-in/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Tidak dapat menempel file yang dipilih di lokasi ini."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Ganti nama"</string>
     <string name="rename_error" msgid="4203041674883412606">"Gagal mengganti nama dokumen"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Keluarkan"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Beberapa file dikonversi"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses ke direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> di <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses ke direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-is-rIS/strings.xml b/packages/DocumentsUI/res/values-is-rIS/strings.xml
index a48214a..0cb8387 100644
--- a/packages/DocumentsUI/res/values-is-rIS/strings.xml
+++ b/packages/DocumentsUI/res/values-is-rIS/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Ekki er hægt að vista valdar skrár á þessum stað."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Endurnefna"</string>
     <string name="rename_error" msgid="4203041674883412606">"Ekki tókst að endurnefna skjalið"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Fjarlægja"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sumum skrám var umbreytt"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Veita <xliff:g id="APPNAME"><b>^1</b></xliff:g> aðgang að skráasafninu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> á <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Viltu veita <xliff:g id="APPNAME"><b>^1</b></xliff:g> aðgang að skráasafninu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-it/strings.xml b/packages/DocumentsUI/res/values-it/strings.xml
index e8f8635..eb06d5f 100644
--- a/packages/DocumentsUI/res/values-it/strings.xml
+++ b/packages/DocumentsUI/res/values-it/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Impossibile incollare i file selezionati in questa posizione."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Rinomina"</string>
     <string name="rename_error" msgid="4203041674883412606">"Ridenominazione documento non riuscita"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Espelli"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alcuni file sono stati convertiti"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Concedere all\'app <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accesso alla directory <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> su <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Concedere all\'app <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accesso alla directory <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-iw/strings.xml b/packages/DocumentsUI/res/values-iw/strings.xml
index 553364b..2d81be7 100644
--- a/packages/DocumentsUI/res/values-iw/strings.xml
+++ b/packages/DocumentsUI/res/values-iw/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"לא ניתן להדביק את הקבצים הנבחרים במיקום הזה."</string>
     <string name="menu_rename" msgid="7678802479104285353">"שנה שם"</string>
     <string name="rename_error" msgid="4203041674883412606">"ניסיון שינוי שם המסמך נכשל"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"הוצא"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"קבצים מסוימים הומרו"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"האם להעניק לאפליקציה <xliff:g id="APPNAME"><b>^1</b></xliff:g> גישה לספריה <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> באחסון <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"האם להעניק לאפליקציה <xliff:g id="APPNAME"><b>^1</b></xliff:g> גישה אל ספריית <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-ja/strings.xml b/packages/DocumentsUI/res/values-ja/strings.xml
index 45f2239..200202f 100644
--- a/packages/DocumentsUI/res/values-ja/strings.xml
+++ b/packages/DocumentsUI/res/values-ja/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"選択したファイルをこの場所に貼り付けることはできません。"</string>
     <string name="menu_rename" msgid="7678802479104285353">"名前を変更"</string>
     <string name="rename_error" msgid="4203041674883412606">"ドキュメントの名前を変更できませんでした"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"取り外し"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"一部のファイルが変換されました"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"「<xliff:g id="STORAGE"><i>^3</i></xliff:g>」の「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」ディレクトリに「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」へのアクセスを許可しますか？"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」アプリに「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」ディレクトリへのアクセスを許可しますか？"</string>
diff --git a/packages/DocumentsUI/res/values-ka-rGE/strings.xml b/packages/DocumentsUI/res/values-ka-rGE/strings.xml
index d986f40..57e565d 100644
--- a/packages/DocumentsUI/res/values-ka-rGE/strings.xml
+++ b/packages/DocumentsUI/res/values-ka-rGE/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ამ მდებარეობაში შერჩეული ფაილების ჩასმა შეუძლებელია."</string>
     <string name="menu_rename" msgid="7678802479104285353">"გადარქმევა"</string>
     <string name="rename_error" msgid="4203041674883412606">"დოკუმენტის გადარქმევა ვერ მოხერხდა"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ამოღება"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ზოგიერთი ფაილი გარდაქმნილია"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"გსურთ, <xliff:g id="APPNAME"><b>^1</b></xliff:g> სარგებლობდეს <xliff:g id="STORAGE"><i>^3</i></xliff:g>-ის დირექტორიაზე „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ წვდომის უფლებით?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"გსურთ, <xliff:g id="APPNAME"><b>^1</b></xliff:g> სარგებლობდეს დირექტორიაზე „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ წვდომის უფლებით?"</string>
diff --git a/packages/DocumentsUI/res/values-kk-rKZ/strings.xml b/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
index 8f38ca9..d2b89ea 100644
--- a/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
+++ b/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Таңдалған файлдарды бұл орынға қою мүмкін емес."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Атын өзгерту"</string>
     <string name="rename_error" msgid="4203041674883412606">"Құжат қайта аталмады"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Шығару"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Кейбір файлдар түрлендірілді"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> қолданбасына <xliff:g id="STORAGE"><i>^3</i></xliff:g> қоймасындағы <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> каталогына өтуге рұқсат беру керек пе?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> қолданбасына <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> каталогына кіруге рұқсат беру керек пе?"</string>
diff --git a/packages/DocumentsUI/res/values-km-rKH/strings.xml b/packages/DocumentsUI/res/values-km-rKH/strings.xml
index 77d9d40..f618c1a 100644
--- a/packages/DocumentsUI/res/values-km-rKH/strings.xml
+++ b/packages/DocumentsUI/res/values-km-rKH/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"មិនអាចបិទភ្ជាប់ឯកសារដែលបានជ្រើសនៅក្នុងទីតាំងនេះបានទេ។"</string>
     <string name="menu_rename" msgid="7678802479104285353">"ប្ដូរឈ្មោះ"</string>
     <string name="rename_error" msgid="4203041674883412606">"បានបរាជ័យក្នុងការប្តូរឈ្មោះឯកសារ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ដកចេញ"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ឯកសារមួយចំនួនត្រូវបានបម្លែង"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"ផ្តល់សិទ្ធិឲ្យ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ចូលដំណើរការថត <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> នៅលើ <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ផ្តល់សិទ្ធិឲ្យ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ចូលដំណើរការថត <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ឬ?"</string>
diff --git a/packages/DocumentsUI/res/values-kn-rIN/strings.xml b/packages/DocumentsUI/res/values-kn-rIN/strings.xml
index e4dbcaa..0679776 100644
--- a/packages/DocumentsUI/res/values-kn-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-kn-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ಈ ಸ್ಥಳದಲ್ಲಿ ಆಯ್ಕೆಮಾಡಿದ ಫೈಲ್‌ಗಳನ್ನು ಅಂಟಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="menu_rename" msgid="7678802479104285353">"ಮರುಹೆಸರಿಸು"</string>
     <string name="rename_error" msgid="4203041674883412606">"ಡಾಕ್ಯುಮೆಂಟ್ ಮರುಹೆಸರಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ಎಜೆಕ್ಟ್‌‌"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ಕೆಲವು ಫೈಲ್‌ಗಳನ್ನು ಪರಿವರ್ತಿಸಲಾಗಿದೆ"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> ರಲ್ಲಿ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ಡೈರೆಕ್ಟರಿಗೆ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ಪ್ರವೇಶ ನೀಡುವುದೇ?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g><xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ಡೈರೆಕ್ಟರಿ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುವುದೇ?"</string>
diff --git a/packages/DocumentsUI/res/values-ko/strings.xml b/packages/DocumentsUI/res/values-ko/strings.xml
index fc70bc63..ffb1363 100644
--- a/packages/DocumentsUI/res/values-ko/strings.xml
+++ b/packages/DocumentsUI/res/values-ko/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"선택한 파일을 이 위치에 붙여넣을 수 없습니다."</string>
     <string name="menu_rename" msgid="7678802479104285353">"이름 바꾸기"</string>
     <string name="rename_error" msgid="4203041674883412606">"문서 이름을 변경하지 못했습니다."</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"꺼내기"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"일부 파일이 변환되었습니다."</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>이(가) <xliff:g id="STORAGE"><i>^3</i></xliff:g>에서 <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> 디렉토리에 액세스하도록 허용하시겠습니까?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>이(가) <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> 디렉토리에 액세스하도록 허용하시겠습니까?"</string>
diff --git a/packages/DocumentsUI/res/values-ky-rKG/strings.xml b/packages/DocumentsUI/res/values-ky-rKG/strings.xml
index 0d29f90..9d5d475 100644
--- a/packages/DocumentsUI/res/values-ky-rKG/strings.xml
+++ b/packages/DocumentsUI/res/values-ky-rKG/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Тандалган файлдарды бул жерге чаптоого мүмкүн эмес."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Аталышын өзгөртүү"</string>
     <string name="rename_error" msgid="4203041674883412606">"Документтин аталышы өзгөртүлбөй калды"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Чыгаруу"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Айрым файлдардын форматы өзгөртүлдү"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> колдонмосуна <xliff:g id="STORAGE"><i>^3</i></xliff:g> түзмөгүндөгү <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> папканы пайдалануу мүмкүнчүлүгү берилсинби?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> колдонмосуна <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> каталогун пайдалануу мүмкүнчүлүгү берилсинби?"</string>
diff --git a/packages/DocumentsUI/res/values-ldrtl/config.xml b/packages/DocumentsUI/res/values-ldrtl/config.xml
deleted file mode 100644
index 22f8131..0000000
--- a/packages/DocumentsUI/res/values-ldrtl/config.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources>
-    <bool name="list_divider_inset_left">false</bool>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lo-rLA/strings.xml b/packages/DocumentsUI/res/values-lo-rLA/strings.xml
index 336ac08..0f66f55 100644
--- a/packages/DocumentsUI/res/values-lo-rLA/strings.xml
+++ b/packages/DocumentsUI/res/values-lo-rLA/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ບໍ່​ສາ​ມາດ​ແປະ​ໄຟ​ລ໌​ເລືອກ​ໄວ້​ຢູ່​ໃນ​ທີ່​ຕັ້ງ​ນີ້​ໄດ້."</string>
     <string name="menu_rename" msgid="7678802479104285353">"ປ່ຽນຊື່"</string>
     <string name="rename_error" msgid="4203041674883412606">"ປ່ຽນຊື່ເອກະສານບໍ່ສຳເລັດ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ຖອດອອກ"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ປ່ຽນແປງບາງໄຟລ໌ແລ້ວ"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"ອະນຸຍາດສິດເຂົ້າເຖິງໃຫ້ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ເພື່ອເຂົ້າໄດເຣກທໍຣີ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ຢູ່ <xliff:g id="STORAGE"><i>^3</i></xliff:g> ບໍ?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ອະນຸມັດ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ໃຫ້ເຂົ້າຫາໄດເຣັກທໍຣີ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ບໍ?"</string>
diff --git a/packages/DocumentsUI/res/values-lt/strings.xml b/packages/DocumentsUI/res/values-lt/strings.xml
index 2d71f3d9..02ee8f6 100644
--- a/packages/DocumentsUI/res/values-lt/strings.xml
+++ b/packages/DocumentsUI/res/values-lt/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Nepavyko įklijuoti pasirinktų failų šioje vietoje."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Pervardyti"</string>
     <string name="rename_error" msgid="4203041674883412606">"Nepavyko pervardyti dokumento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Pašalinti"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Kai kurie failai buvo konvertuoti"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Suteikti „<xliff:g id="APPNAME"><b>^1</b></xliff:g>“ prieigą prie katalogo „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Suteikti „<xliff:g id="APPNAME"><b>^1</b></xliff:g>“ prieigą prie katalogo „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“?"</string>
diff --git a/packages/DocumentsUI/res/values-lv/strings.xml b/packages/DocumentsUI/res/values-lv/strings.xml
index 2fcc6b8..b4ae3fc 100644
--- a/packages/DocumentsUI/res/values-lv/strings.xml
+++ b/packages/DocumentsUI/res/values-lv/strings.xml
@@ -118,6 +118,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Atlasītos failus šeit nevar ielīmēt."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Pārdēvēt"</string>
     <string name="rename_error" msgid="4203041674883412606">"Neizdevās pārdēvēt dokumentu"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Noņemt"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Daži faili tika pārveidoti."</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Vai atļaut lietotnei <xliff:g id="APPNAME"><b>^1</b></xliff:g> piekļūt direktorijam <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> šajā krātuvē: <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vai piešķirt lietotnei <xliff:g id="APPNAME"><b>^1</b></xliff:g> piekļuvi direktorijam <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-mk-rMK/strings.xml b/packages/DocumentsUI/res/values-mk-rMK/strings.xml
index f5ff5a5..9df2aad 100644
--- a/packages/DocumentsUI/res/values-mk-rMK/strings.xml
+++ b/packages/DocumentsUI/res/values-mk-rMK/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Не може да ги залепи избраните датотеки на локацијава."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Преименувај"</string>
     <string name="rename_error" msgid="4203041674883412606">"Не успеа да се преименува документот"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Извади"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Некои датотеки беа конвертирани"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Овозможете пристап на <xliff:g id="APPNAME"><b>^1</b></xliff:g> до директориумот <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> на <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Овозможете пристап на <xliff:g id="APPNAME"><b>^1</b></xliff:g> до директориумот <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-ml-rIN/strings.xml b/packages/DocumentsUI/res/values-ml-rIN/strings.xml
index 1bced12..8c3b885 100644
--- a/packages/DocumentsUI/res/values-ml-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-ml-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"തിരഞ്ഞെടുത്ത ഫയലുകൾ ഈ ലൊക്കേഷനിൽ ഒട്ടിക്കാനാകുന്നില്ല."</string>
     <string name="menu_rename" msgid="7678802479104285353">"പേരുമാറ്റുക"</string>
     <string name="rename_error" msgid="4203041674883412606">"ഡോക്യുമെന്റിന്റെ പേരുമാറ്റുന്നത് പരാജയപ്പെട്ടു"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ഒഴിവാക്കുക"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ചില ഫയലുകൾ പരിവർത്തനം ചെയ്യപ്പെട്ടു"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> സ്റ്റോറേജിലെ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> എന്ന ഡയറക്റ്ററിയിലേക്ക് <xliff:g id="APPNAME"><b>^1</b></xliff:g> ആപ്പിന് ആക്സസ് അനുവദിക്കണോ?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> എന്ന ഡയറക്ടറിയിലേക്ക് <xliff:g id="APPNAME"><b>^1</b></xliff:g> ആപ്പിന് ആക്സസ് അനുവദിക്കണോ?"</string>
diff --git a/packages/DocumentsUI/res/values-mn-rMN/strings.xml b/packages/DocumentsUI/res/values-mn-rMN/strings.xml
index b34efc3..234e1a9 100644
--- a/packages/DocumentsUI/res/values-mn-rMN/strings.xml
+++ b/packages/DocumentsUI/res/values-mn-rMN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Энэ байршилд сонгосон файлыг байршуулах боломжгүй байна."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Нэр өөрчлөх"</string>
     <string name="rename_error" msgid="4203041674883412606">"Баримт бичгийн нэрийн өөрчилж чадсангүй"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Салгах"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Зарим файлыг хөрвүүлсэн"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g>-д байгаа <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> лавлагаанд хандахыг <xliff:g id="APPNAME"><b>^1</b></xliff:g>-д зөвшөөрөх үү?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> лавлагаанд хандах эрхийг <xliff:g id="APPNAME"><b>^1</b></xliff:g>-д олгох уу?"</string>
diff --git a/packages/DocumentsUI/res/values-mr-rIN/strings.xml b/packages/DocumentsUI/res/values-mr-rIN/strings.xml
index 6fc9fe0..e204c46 100644
--- a/packages/DocumentsUI/res/values-mr-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-mr-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"या स्थानामध्‍ये निवडलेल्‍या फायली पेस्ट करू शकत नाही."</string>
     <string name="menu_rename" msgid="7678802479104285353">"पुनर्नामित करा"</string>
     <string name="rename_error" msgid="4203041674883412606">"दस्तऐवज पुनर्नामित करण्‍यात अयशस्वी झाले"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"बाहेर काढा"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"काही फायली रूपांतरित केल्या होत्या"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> वर <xliff:g id="APPNAME"><b>^1</b></xliff:g> ला <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकेवर प्रवेशाची मंजूरी द्यायची?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ला <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकमध्ये प्रवेश मंजूर करायचा?"</string>
diff --git a/packages/DocumentsUI/res/values-ms-rMY/strings.xml b/packages/DocumentsUI/res/values-ms-rMY/strings.xml
index b6c2bf6..a16fa4c 100644
--- a/packages/DocumentsUI/res/values-ms-rMY/strings.xml
+++ b/packages/DocumentsUI/res/values-ms-rMY/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Tidak boleh menampalkan fail yang dipilih dalam lokasi ini."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Namakan semula"</string>
     <string name="rename_error" msgid="4203041674883412606">"Gagal menamakan semula dokumen"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Keluarkan"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sesetengah fail telah ditukarkan"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses kepada direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> di <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses kepada direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-my-rMM/strings.xml b/packages/DocumentsUI/res/values-my-rMM/strings.xml
index 55a9b3a..fef5e87 100644
--- a/packages/DocumentsUI/res/values-my-rMM/strings.xml
+++ b/packages/DocumentsUI/res/values-my-rMM/strings.xml
@@ -27,9 +27,9 @@
     <string name="menu_search" msgid="3816712084502856974">"ရှာဖွေရန်"</string>
     <string name="menu_settings" msgid="8239065133341597825">"သိုလှောင်မှု ဆက်တင်များ"</string>
     <string name="menu_open" msgid="432922957274920903">"ဖွင့်ရန်"</string>
-    <string name="menu_save" msgid="2394743337684426338">"သိမ်းပါ"</string>
+    <string name="menu_save" msgid="2394743337684426338">"သိမ်းရန်"</string>
     <string name="menu_share" msgid="3075149983979628146">"မျှဝေခြင်း"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ဖျက်ပစ်ရန်"</string>
+    <string name="menu_delete" msgid="8138799623850614177">"ဖျက်ရန်"</string>
     <string name="menu_select_all" msgid="8323579667348729928">"အားလုံးကို ရွေးရန်"</string>
     <string name="menu_copy" msgid="3612326052677229148">"…သို့ကူးယူရန်"</string>
     <string name="menu_move" msgid="1828090633118079817">"...သို့ ရွှေ့ရန်"</string>
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ဤနေရာတွင် ရွေးချယ်ထားသည့် ဖိုင်များကို ကူးထည့်၍မရပါ။"</string>
     <string name="menu_rename" msgid="7678802479104285353">"အမည်ပြောင်းရန်"</string>
     <string name="rename_error" msgid="4203041674883412606">"စာရွက်စာတမ်းကို အမည်ပြောင်းခြင်း မအောင်မြင်ပါ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ထုတ်မည်"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"အချို့ဖိုင်များကို ပြောင်းလဲထားသည်"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ကို <xliff:g id="STORAGE"><i>^3</i></xliff:g> ရှိ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> လမ်းညွှန်အား အသုံးပြုခွင့်ပေးမလား။"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> အား <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> စာရင်းကို အသုံးပြုခွင့်ပေးမလား။"</string>
diff --git a/packages/DocumentsUI/res/values-nb/strings.xml b/packages/DocumentsUI/res/values-nb/strings.xml
index dbce31f..d3b1996 100644
--- a/packages/DocumentsUI/res/values-nb/strings.xml
+++ b/packages/DocumentsUI/res/values-nb/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Kan ikke lime inn de valgte filene her."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Gi nytt navn"</string>
     <string name="rename_error" msgid="4203041674883412606">"Kunne ikke gi dokumentet nytt navn"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Løs ut"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Noen filer er konvertert"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Vil du gi <xliff:g id="APPNAME"><b>^1</b></xliff:g> tilgang til <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-katalogen på <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vil du gi <xliff:g id="APPNAME"><b>^1</b></xliff:g> tilgang til <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-katalogen?"</string>
diff --git a/packages/DocumentsUI/res/values-ne-rNP/strings.xml b/packages/DocumentsUI/res/values-ne-rNP/strings.xml
index 2c6e380..ab8f8b1 100644
--- a/packages/DocumentsUI/res/values-ne-rNP/strings.xml
+++ b/packages/DocumentsUI/res/values-ne-rNP/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"यो स्थानमा चयन गरिएका फाइलहरू टाँस्न सकिँदैन।"</string>
     <string name="menu_rename" msgid="7678802479104285353">"पुन: नामाकरण गर्नुहोस्"</string>
     <string name="rename_error" msgid="4203041674883412606">"कागजात पुन: नामाकरण गर्न असफल भयो"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"निकाल्नुहोस्"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"केही फाइलहरू परिवर्तन गरिएका थिए"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> लाई <xliff:g id="STORAGE"><i>^3</i></xliff:g> मा भएको <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकामा पहुँच गर्न अनुमति दिने हो?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> लाई <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकामाथि पहुँच गर्न अनुमति प्रदान गर्ने हो?"</string>
diff --git a/packages/DocumentsUI/res/values-nl/strings.xml b/packages/DocumentsUI/res/values-nl/strings.xml
index 9b46a34..6eb9aac 100644
--- a/packages/DocumentsUI/res/values-nl/strings.xml
+++ b/packages/DocumentsUI/res/values-nl/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Kan de geselecteerde bestanden niet plakken op deze locatie."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Naam wijzigen"</string>
     <string name="rename_error" msgid="4203041674883412606">"Kan naam van document niet wijzigen"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Uitwerpen"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sommige bestanden zijn geconverteerd"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang verlenen tot de map <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> op <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang verlenen tot de map <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-pa-rIN/strings.xml b/packages/DocumentsUI/res/values-pa-rIN/strings.xml
index 7d3e57d..f53cccf 100644
--- a/packages/DocumentsUI/res/values-pa-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-pa-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ਇਸ ਸਥਾਨ ਵਿੱਚ ਚੁਣੀਆਂ ਗਈਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੇਸਟ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ।"</string>
     <string name="menu_rename" msgid="7678802479104285353">"ਮੁੜ-ਨਾਮਕਰਨ ਕਰੋ"</string>
     <string name="rename_error" msgid="4203041674883412606">"ਦਸਤਾਵੇਜ਼ ਦਾ ਮੁੜ-ਨਾਮਕਰਨ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"ਬਾਹਰ ਕੱਢੋ"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ਕੁਝ ਫ਼ਾਈਲਾਂ ਤਬਦੀਲ ਕੀਤੀਆਂ ਗਈਆਂ ਸਨ"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"ਕੀ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ਨੂੰ <xliff:g id="STORAGE"><i>^3</i></xliff:g> \'ਤੇ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ਡਾਇਰੈਕਟਰੀ \'ਤੇ ਪਹੁੰਚ ਦੇਣੀ ਹੈ?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ਕੀ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ਨੂੰ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ਡਾਇਰੈਕਟਰੀ \'ਤੇ ਪਹੁੰਚ ਦੇਣੀ ਹੈ?"</string>
diff --git a/packages/DocumentsUI/res/values-pl/strings.xml b/packages/DocumentsUI/res/values-pl/strings.xml
index 1ce95295..33baba9 100644
--- a/packages/DocumentsUI/res/values-pl/strings.xml
+++ b/packages/DocumentsUI/res/values-pl/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Nie można wkleić wybranych plików w tej lokalizacji."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Zmień nazwę"</string>
     <string name="rename_error" msgid="4203041674883412606">"Nie udało się zmienić nazwy dokumentu"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Odłącz"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Niektóre pliki zostały przekonwertowane"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Zezwolić aplikacji <xliff:g id="APPNAME"><b>^1</b></xliff:g> na dostęp do katalogu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> w pamięci masowej <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Przyznać aplikacji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dostęp do katalogu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-pt-rBR/strings.xml b/packages/DocumentsUI/res/values-pt-rBR/strings.xml
index 240980c..718d70f 100644
--- a/packages/DocumentsUI/res/values-pt-rBR/strings.xml
+++ b/packages/DocumentsUI/res/values-pt-rBR/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Não é possível colar os arquivos selecionados neste local."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Renomear"</string>
     <string name="rename_error" msgid="4203041674883412606">"Falha ao renomear documento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Ejetar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alguns arquivos foram convertidos"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Conceder ao <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Conceder acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> para <xliff:g id="APPNAME"><b>^1</b></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-pt-rPT/strings.xml b/packages/DocumentsUI/res/values-pt-rPT/strings.xml
index 947605e..e382def 100644
--- a/packages/DocumentsUI/res/values-pt-rPT/strings.xml
+++ b/packages/DocumentsUI/res/values-pt-rPT/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Não é possível colar os ficheiros selecionados nesta localização."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Mudar o nome"</string>
     <string name="rename_error" msgid="4203041674883412606">"Falha ao mudar o nome do documento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Ejetar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alguns ficheiros foram convertidos"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Pretende conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no(a) <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Pretende conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-pt/strings.xml b/packages/DocumentsUI/res/values-pt/strings.xml
index 240980c..718d70f 100644
--- a/packages/DocumentsUI/res/values-pt/strings.xml
+++ b/packages/DocumentsUI/res/values-pt/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Não é possível colar os arquivos selecionados neste local."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Renomear"</string>
     <string name="rename_error" msgid="4203041674883412606">"Falha ao renomear documento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Ejetar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alguns arquivos foram convertidos"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Conceder ao <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Conceder acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> para <xliff:g id="APPNAME"><b>^1</b></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-ro/strings.xml b/packages/DocumentsUI/res/values-ro/strings.xml
index d7ef0be..8bf3880 100644
--- a/packages/DocumentsUI/res/values-ro/strings.xml
+++ b/packages/DocumentsUI/res/values-ro/strings.xml
@@ -118,6 +118,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Fișierele selectate nu au putut fi inserate în această locație."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Redenumiți"</string>
     <string name="rename_error" msgid="4203041674883412606">"Documentul nu a putut fi redenumit"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Scoateți"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Unele fișiere au fost convertite"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Permiteți aplicației <xliff:g id="APPNAME"><b>^1</b></xliff:g> accesul la directorul <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> de pe <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Permiteți aplicației <xliff:g id="APPNAME"><b>^1</b></xliff:g> să acceseze directorul <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-ru/strings.xml b/packages/DocumentsUI/res/values-ru/strings.xml
index e5785ed..eb7278e 100644
--- a/packages/DocumentsUI/res/values-ru/strings.xml
+++ b/packages/DocumentsUI/res/values-ru/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Не удается вставить сюда выбранные файлы"</string>
     <string name="menu_rename" msgid="7678802479104285353">"Переименовать"</string>
     <string name="rename_error" msgid="4203041674883412606">"Не удалось переименовать документ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Извлечь"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Формат некоторых файлов изменен"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Открыть приложению \"<xliff:g id="APPNAME"><b>^1</b></xliff:g>\" доступ к папке \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\" на устройстве \"<xliff:g id="STORAGE"><i>^3</i></xliff:g>\"?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Открыть приложению \"<xliff:g id="APPNAME"><b>^1</b></xliff:g>\" доступ к папке \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\"?"</string>
diff --git a/packages/DocumentsUI/res/values-si-rLK/strings.xml b/packages/DocumentsUI/res/values-si-rLK/strings.xml
index 9bfc82a..956a59c 100644
--- a/packages/DocumentsUI/res/values-si-rLK/strings.xml
+++ b/packages/DocumentsUI/res/values-si-rLK/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"මෙම ස්ථානය තුළ තෝරාගත් ගොනු ඇලවිය නොහැක."</string>
     <string name="menu_rename" msgid="7678802479104285353">"යළි නම් කරන්න"</string>
     <string name="rename_error" msgid="4203041674883412606">"ලේඛනය යළි නම් කිරීම අසාර්ථක විය"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"පිටතට ගන්න"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"සමහර ගොනු පරිවර්තනය කරන ලදී"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> හට <xliff:g id="STORAGE"><i>^3</i></xliff:g> මත <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> නාමාවලිය වෙත ප්‍රවේශය දෙන්නද?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ප්‍රවේශය <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> නාමාවලිය වෙත ලබා දෙන්නද?"</string>
diff --git a/packages/DocumentsUI/res/values-sk/strings.xml b/packages/DocumentsUI/res/values-sk/strings.xml
index ba480fc..c760868 100644
--- a/packages/DocumentsUI/res/values-sk/strings.xml
+++ b/packages/DocumentsUI/res/values-sk/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Do tohto umiestnenia nie je možné prilepiť vybrané súbory"</string>
     <string name="menu_rename" msgid="7678802479104285353">"Premenovať"</string>
     <string name="rename_error" msgid="4203041674883412606">"Premenovanie dokumentu zlyhalo"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Odpojiť"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Niektoré súbory boli konvertované"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Udeliť aplikácii <xliff:g id="APPNAME"><b>^1</b></xliff:g> prístup k adresáru <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> v úložisku <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Udeliť aplikácii <xliff:g id="APPNAME"><b>^1</b></xliff:g> prístup k adresáru <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-sl/strings.xml b/packages/DocumentsUI/res/values-sl/strings.xml
index 29d7cac..5a46141 100644
--- a/packages/DocumentsUI/res/values-sl/strings.xml
+++ b/packages/DocumentsUI/res/values-sl/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Izbranih datotek ni mogoče prilepiti sem."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Preimenuj"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokumenta ni bilo mogoče preimenovati"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Izvrzi"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Nekatere datoteke so bile pretvorjene"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Želite aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dovoliti dostop do imenika <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> v shrambi <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Želite aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dovoliti dostop do imenika <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-sq-rAL/strings.xml b/packages/DocumentsUI/res/values-sq-rAL/strings.xml
index 724dcf2..732996a 100644
--- a/packages/DocumentsUI/res/values-sq-rAL/strings.xml
+++ b/packages/DocumentsUI/res/values-sq-rAL/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Skedarët e zgjedhur nuk mund të ngjiten në këtë vendndodhje."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Riemërto"</string>
     <string name="rename_error" msgid="4203041674883412606">"Riemërtimi i dokumentit dështoi"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Nxirr"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Disa skedarë u konvertuan"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Jepi aplikacionit <xliff:g id="APPNAME"><b>^1</b></xliff:g> qasje te direktoria <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> në <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"T\'i jepet aplikacionit <xliff:g id="APPNAME"><b>^1</b></xliff:g> qasje te direktoria <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-sr/strings.xml b/packages/DocumentsUI/res/values-sr/strings.xml
index fdb0ac5..21aadee 100644
--- a/packages/DocumentsUI/res/values-sr/strings.xml
+++ b/packages/DocumentsUI/res/values-sr/strings.xml
@@ -118,6 +118,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Изабране датотеке не могу да се налепе на овој локацији."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Преименуј"</string>
     <string name="rename_error" msgid="4203041674883412606">"Преименовање документа није успело"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Избаци"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Неке датотеке су конвертоване"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Желите ли да апликацији <xliff:g id="APPNAME"><b>^1</b></xliff:g> одобрите приступ директоријуму <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> на меморијском простору <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Желите да дозволите да <xliff:g id="APPNAME"><b>^1</b></xliff:g> приступа директоријуму <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-sv/strings.xml b/packages/DocumentsUI/res/values-sv/strings.xml
index ad83577..5ef9ab2 100644
--- a/packages/DocumentsUI/res/values-sv/strings.xml
+++ b/packages/DocumentsUI/res/values-sv/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Det går inte att klistra in den valda filen på den här platsen."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Byt namn"</string>
     <string name="rename_error" msgid="4203041674883412606">"Det gick inte att byta namn på dokumentet"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Mata ut"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Vissa filer konverterades"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Vill du ge <xliff:g id="APPNAME"><b>^1</b></xliff:g> åtkomst till katalogen <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> på <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vill du ge <xliff:g id="APPNAME"><b>^1</b></xliff:g> åtkomst till katalogen <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-sw/strings.xml b/packages/DocumentsUI/res/values-sw/strings.xml
index 1a6e38d..82bc4bb 100644
--- a/packages/DocumentsUI/res/values-sw/strings.xml
+++ b/packages/DocumentsUI/res/values-sw/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Haiwezi kubandika faili zilizochaguliwa katika eneo hili."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Badilisha jina"</string>
     <string name="rename_error" msgid="4203041674883412606">"Imeshindwa kubadilisha jina la hati"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Ondoa"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Baadhi ya faili zimebadilishwa muundo"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Ungependa kuruhusu <xliff:g id="APPNAME"><b>^1</b></xliff:g> ifikie saraka ya <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> kwenye <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Ungependa kuruhusu <xliff:g id="APPNAME"><b>^1</b></xliff:g> ifikie saraka ya <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-ta-rIN/strings.xml b/packages/DocumentsUI/res/values-ta-rIN/strings.xml
index 91bda37..1573299 100644
--- a/packages/DocumentsUI/res/values-ta-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-ta-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"தேர்ந்தெடுத்த கோப்புகளை இங்கு ஒட்ட முடியாது."</string>
     <string name="menu_rename" msgid="7678802479104285353">"மறுபெயரிடு"</string>
     <string name="rename_error" msgid="4203041674883412606">"ஆவணத்திற்கு மறுபெயரிடுவதில் தோல்வி"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"வெளியேற்று"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"சில கோப்புகள் மாற்றப்பட்டன"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> இல் உள்ள <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> கோப்பகத்தை அணுக <xliff:g id="APPNAME"><b>^1</b></xliff:g>ஐ அனுமதிக்கவா?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> கோப்பகத்தை அணுக, <xliff:g id="APPNAME"><b>^1</b></xliff:g>ஐ அனுமதிக்கவா?"</string>
diff --git a/packages/DocumentsUI/res/values-te-rIN/strings.xml b/packages/DocumentsUI/res/values-te-rIN/strings.xml
index 2fbba15..3bb9720 100644
--- a/packages/DocumentsUI/res/values-te-rIN/strings.xml
+++ b/packages/DocumentsUI/res/values-te-rIN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ఎంచుకున్న ఫైల్‌లను ఈ స్థానంలోకి తీసుకురావడం సాధ్యపడదు."</string>
     <string name="menu_rename" msgid="7678802479104285353">"పేరు మార్చు"</string>
     <string name="rename_error" msgid="4203041674883412606">"పత్రం పేరు మార్చడంలో విఫలమైంది"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"తొలగించు"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"కొన్ని పైల్‌లు మార్చబడ్డాయి"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>కి <xliff:g id="STORAGE"><i>^3</i></xliff:g>లో <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> డైరెక్టరీ ప్రాప్యతను మంజూరు చేయాలా?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>కి <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> డైరెక్టరీ ప్రాప్యతను మంజూరు చేయాలా?"</string>
diff --git a/packages/DocumentsUI/res/values-th/strings.xml b/packages/DocumentsUI/res/values-th/strings.xml
index ebfeb72..7c587c3 100644
--- a/packages/DocumentsUI/res/values-th/strings.xml
+++ b/packages/DocumentsUI/res/values-th/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ไม่สามารถวางไฟล์ที่เลือกในตำแหน่งนี้"</string>
     <string name="menu_rename" msgid="7678802479104285353">"เปลี่ยนชื่อ"</string>
     <string name="rename_error" msgid="4203041674883412606">"ไม่สามารถเปลี่ยนชื่อเอกสาร"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"นำอุปกรณ์ออก"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"แปลงบางไฟล์แล้ว"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"ให้สิทธิ์ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ในการเข้าถึงไดเรกทอรี <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ใน <xliff:g id="STORAGE"><i>^3</i></xliff:g> ไหม"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ให้สิทธิ์ <xliff:g id="APPNAME"><b>^1</b></xliff:g> เข้าถึงไดเรกทอรี <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ไหม"</string>
diff --git a/packages/DocumentsUI/res/values-tl/strings.xml b/packages/DocumentsUI/res/values-tl/strings.xml
index 041061b..63c2334 100644
--- a/packages/DocumentsUI/res/values-tl/strings.xml
+++ b/packages/DocumentsUI/res/values-tl/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Hindi mai-paste sa lokasyong ito ang mga piniling file."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Palitan ang pangalan"</string>
     <string name="rename_error" msgid="4203041674883412606">"Hindi napalitan ang pangalan ng dokumento"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"I-eject"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Na-convert ang ilang file"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Bigyan ang <xliff:g id="APPNAME"><b>^1</b></xliff:g> ng access sa directory ng <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> sa <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Bibigyan ang <xliff:g id="APPNAME"><b>^1</b></xliff:g> ng access sa direktoryong <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-tr/strings.xml b/packages/DocumentsUI/res/values-tr/strings.xml
index 7b1a9d0..402d320 100644
--- a/packages/DocumentsUI/res/values-tr/strings.xml
+++ b/packages/DocumentsUI/res/values-tr/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Seçili dosyalar bu konuma yapıştırılamıyor."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Yeniden adlandır"</string>
     <string name="rename_error" msgid="4203041674883412606">"Dokümanın adı değiştirilemedi"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Çıkar"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Bazı dosyalar dönüştürüldü"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> uygulamasına <xliff:g id="STORAGE"><i>^3</i></xliff:g> depolama alanındaki <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> dizinine erişim izni verilsin mi?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> dizinine erişmek için <xliff:g id="APPNAME"><b>^1</b></xliff:g> uygulamasına izin verilsin mi?"</string>
diff --git a/packages/DocumentsUI/res/values-uk/strings.xml b/packages/DocumentsUI/res/values-uk/strings.xml
index d1cacdf..e95539f 100644
--- a/packages/DocumentsUI/res/values-uk/strings.xml
+++ b/packages/DocumentsUI/res/values-uk/strings.xml
@@ -125,6 +125,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Не вдається вставити вибрані файли в цю папку."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Перейменувати"</string>
     <string name="rename_error" msgid="4203041674883412606">"Не вдалося перейменувати документ"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Вийняти"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Деякі файли конвертовано"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Надати додатку <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ до каталогу <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> на пристрої пам’яті <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Надати додатку <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ до каталогу \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\"?"</string>
diff --git a/packages/DocumentsUI/res/values-ur-rPK/strings.xml b/packages/DocumentsUI/res/values-ur-rPK/strings.xml
index 6210fcf..7c81eba 100644
--- a/packages/DocumentsUI/res/values-ur-rPK/strings.xml
+++ b/packages/DocumentsUI/res/values-ur-rPK/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"منتخب کردہ فائلز کو اس مقام پر پیسٹ نہیں کیا جا سکتا۔"</string>
     <string name="menu_rename" msgid="7678802479104285353">"نام تبدیل کریں"</string>
     <string name="rename_error" msgid="4203041674883412606">"دستاویز کا نام تبدیل کرنے میں ناکام"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"خارج کریں"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"کچھ فائلوں کو تبدیل کیا گیا تھا"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> کو <xliff:g id="STORAGE"><i>^3</i></xliff:g> پر <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ڈائرکٹری تک رسائی عطا کریں؟"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> کو <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ڈائرکٹری تک رسائی دیں؟"</string>
diff --git a/packages/DocumentsUI/res/values-uz-rUZ/strings.xml b/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
index 14147f9..5090409 100644
--- a/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
+++ b/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Tanlangan fayllarni bu yerga joylab bo‘lmadi."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Qayta nomlash"</string>
     <string name="rename_error" msgid="4203041674883412606">"Hujjatni qayta nomlab bo‘lmadi"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Chiqarish"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Bir nechta fayllar o‘girildi"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ilovasiga <xliff:g id="STORAGE"><i>^3</i></xliff:g> xotirasidagi “<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>” jildidan foydalanishiga ruxsat berilsinmi?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ilovasiga “<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>” jildidan foydalanishiga ruxsat berilsinmi?"</string>
diff --git a/packages/DocumentsUI/res/values-vi/strings.xml b/packages/DocumentsUI/res/values-vi/strings.xml
index c8fd687..b9c99b6 100644
--- a/packages/DocumentsUI/res/values-vi/strings.xml
+++ b/packages/DocumentsUI/res/values-vi/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Không thể dán các tệp đã chọn vào vị trí này."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Đổi tên"</string>
     <string name="rename_error" msgid="4203041674883412606">"Không đổi được tên tài liệu"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Đẩy ra"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Đã chuyển đổi một số tệp"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Cấp cho <xliff:g id="APPNAME"><b>^1</b></xliff:g> quyền truy cập vào thư mục <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> trong <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Cấp cho <xliff:g id="APPNAME"><b>^1</b></xliff:g> quyền truy cập thư mục <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values-zh-rCN/strings.xml b/packages/DocumentsUI/res/values-zh-rCN/strings.xml
index 41a411d..718ce0d 100644
--- a/packages/DocumentsUI/res/values-zh-rCN/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rCN/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"无法将所选文件粘贴到此位置。"</string>
     <string name="menu_rename" msgid="7678802479104285353">"重命名"</string>
     <string name="rename_error" msgid="4203041674883412606">"无法重命名文档"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"弹出"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"部分文件已转换成其他格式"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"要授权<xliff:g id="APPNAME"><b>^1</b></xliff:g>访问 <xliff:g id="STORAGE"><i>^3</i></xliff:g>上的“<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>”目录吗？"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"要授权<xliff:g id="APPNAME"><b>^1</b></xliff:g>访问“<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>”目录吗？"</string>
diff --git a/packages/DocumentsUI/res/values-zh-rHK/strings.xml b/packages/DocumentsUI/res/values-zh-rHK/strings.xml
index 67f39e2..552c858 100644
--- a/packages/DocumentsUI/res/values-zh-rHK/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rHK/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"無法在此位置貼上選取檔案。"</string>
     <string name="menu_rename" msgid="7678802479104285353">"重新命名"</string>
     <string name="rename_error" msgid="4203041674883412606">"無法重新命名文件"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"逐出"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"部分檔案已轉換成其他格式"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"要為「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」開放 <xliff:g id="STORAGE"><i>^3</i></xliff:g>上的「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄存取權嗎？"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"要為「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」開放「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄的存取權嗎？"</string>
diff --git a/packages/DocumentsUI/res/values-zh-rTW/strings.xml b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
index a088f1b..1a6a883 100644
--- a/packages/DocumentsUI/res/values-zh-rTW/strings.xml
+++ b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"無法將所選檔案貼到這個位置。"</string>
     <string name="menu_rename" msgid="7678802479104285353">"重新命名"</string>
     <string name="rename_error" msgid="4203041674883412606">"無法重新命名文件"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"退出"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"部分檔案已轉換成其他格式"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"要允許<xliff:g id="APPNAME"><b>^1</b></xliff:g>存取 <xliff:g id="STORAGE"><i>^3</i></xliff:g>上的「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄嗎？"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"要允許<xliff:g id="APPNAME"><b>^1</b></xliff:g>存取「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄嗎？"</string>
diff --git a/packages/DocumentsUI/res/values-zu/strings.xml b/packages/DocumentsUI/res/values-zu/strings.xml
index 9ec798b..285047e 100644
--- a/packages/DocumentsUI/res/values-zu/strings.xml
+++ b/packages/DocumentsUI/res/values-zu/strings.xml
@@ -111,6 +111,7 @@
     <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Ayikwazi ukunamathisela amafayela akhethiwe kule ndawo."</string>
     <string name="menu_rename" msgid="7678802479104285353">"Qamba kabusha"</string>
     <string name="rename_error" msgid="4203041674883412606">"Yehlulekile ukuqamba kabusha idokhumenti"</string>
+    <string name="menu_eject_root" msgid="2768224615494227325">"Khipha"</string>
     <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Amanye amafayela aguqulelwe"</string>
     <string name="open_external_dialog_request" msgid="5789329484285817629">"Nika i-<xliff:g id="APPNAME"><b>^1</b></xliff:g> ukufinyelela ekuqondiseni kwe-<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ku-<xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
     <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Nika ukufinyelela kwe-<xliff:g id="APPNAME"><b>^1</b></xliff:g> kwinkomba ye-<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
diff --git a/packages/DocumentsUI/res/values/config.xml b/packages/DocumentsUI/res/values/config.xml
index f0cab08..f883164 100644
--- a/packages/DocumentsUI/res/values/config.xml
+++ b/packages/DocumentsUI/res/values/config.xml
@@ -21,9 +21,6 @@
     <!-- Intentionally unset. Vendors should set this in an overlay. -->
     <string name="trusted_quick_viewer_package" translatable="false"></string>
 
-    <!-- overridden for RTL langs -->
-    <bool name="list_divider_inset_left">true</bool>
-
     <!-- Flags setup as productivity oriented in which case Downloads app will be presented
              as Files app. Including showing of the Documents and "advanced" roots. -->
     <bool name="productivity_device">false</bool>
diff --git a/packages/DocumentsUI/res/values/strings.xml b/packages/DocumentsUI/res/values/strings.xml
index 28f5f88..416bb6f 100644
--- a/packages/DocumentsUI/res/values/strings.xml
+++ b/packages/DocumentsUI/res/values/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Title of the documents application [CHAR LIMIT=32] -->
-    <string name="app_label">Documents</string>
+    <string name="app_label">Files</string>
 
     <!-- Title of the standalone downloads activity. [CHAR LIMIT=32] -->
     <string name="downloads_label">Downloads</string>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index f40e771..d8d8d3e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -60,6 +60,8 @@
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.services.FileOperationService;
+import com.android.documentsui.services.FileOperations;
 
 import java.io.FileNotFoundException;
 import java.util.ArrayList;
@@ -71,6 +73,32 @@
 public abstract class BaseActivity extends Activity
         implements SearchManagerListener, NavigationViewManager.Environment {
 
+    public final FileOperations.Callback fileOpCallback = (status, opType, docCount) -> {
+        if (status == FileOperations.Callback.STATUS_REJECTED) {
+            Snackbars.showPasteFailed(this);
+            return;
+        }
+
+        if (docCount == 0) {
+            // Nothing has been pasted, so there is no need to show a snackbar.
+            return;
+        }
+
+        switch (opType) {
+            case FileOperationService.OPERATION_MOVE:
+                Snackbars.showMove(this, docCount);
+                break;
+            case FileOperationService.OPERATION_COPY:
+                Snackbars.showCopy(this, docCount);
+                break;
+            case FileOperationService.OPERATION_DELETE:
+                // We don't show anything for deletion.
+                break;
+            default:
+                throw new UnsupportedOperationException("Unsupported Operation: " + opType);
+        }
+    };
+
     private static final String BENCHMARK_TESTING_PACKAGE = "com.android.documentsui.appperftests";
 
     State mState;
@@ -103,7 +131,6 @@
 
     abstract void onTaskFinished(Uri... uris);
     abstract void refreshDirectory(int anim);
-    abstract void openRootSettings(RootInfo root);
     /** Allows sub-classes to include information in a newly created State instance. */
     abstract void includeState(State initialState);
 
@@ -707,17 +734,6 @@
         mNavDrawerHasFocus = !mNavDrawerHasFocus;
     }
 
-    DocumentInfo getRootDocumentBlocking(RootInfo root) {
-        try {
-            final Uri uri = DocumentsContract.buildDocumentUri(
-                    root.authority, root.documentId);
-            return DocumentInfo.fromUri(getContentResolver(), uri);
-        } catch (FileNotFoundException e) {
-            Log.w(mTag, "Failed to find root", e);
-            return null;
-        }
-    }
-
     /**
      * Pops the top entry off the directory stack, and returns the user to the previous directory.
      * If the directory stack only contains one item, this method does nothing.
@@ -781,7 +797,7 @@
 
         @Override
         protected DocumentInfo run(Void... params) {
-            return mOwner.getRootDocumentBlocking(mRoot);
+            return mRoot.getRootDocumentBlocking(mOwner);
         }
 
         @Override
@@ -817,7 +833,7 @@
             final RootInfo defaultRoot = mOwner.mRoots.getDefaultRootBlocking(mOwner.mState);
             assert(defaultRoot != null);
             if (!defaultRoot.isRecents()) {
-                mDefaultRootDocument = mOwner.getRootDocumentBlocking(defaultRoot);
+                mDefaultRootDocument = defaultRoot.getRootDocumentBlocking(mOwner);
             }
             return defaultRoot;
         }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java b/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java
index ae15902..747eb9c 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java
@@ -34,7 +34,7 @@
 abstract class CheckedTask<Input, Output>
         extends AsyncTask<Input, Void, Output> {
 
-    private Check mCheck ;
+    private Check mCheck;
 
     public CheckedTask(Check check) {
         mCheck = check;
@@ -73,6 +73,7 @@
         finish(result);
     }
 
+    @FunctionalInterface
     interface Check {
         boolean stop();
     }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ClipStorage.java b/packages/DocumentsUI/src/com/android/documentsui/ClipStorage.java
deleted file mode 100644
index 5102718..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/ClipStorage.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * 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.documentsui;
-
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.channels.FileLock;
-import java.util.Scanner;
-
-/**
- * Provides support for storing lists of documents identified by Uri.
- *
- * <li>Access to this object *must* be synchronized externally.
- * <li>All calls to this class are I/O intensive and must be wrapped in an AsyncTask.
- */
-public final class ClipStorage {
-
-    private static final String TAG = "ClipStorage";
-
-    private static final byte[] LINE_SEPARATOR = System.lineSeparator().getBytes();
-    public static final long NO_SELECTION_TAG = -1;
-
-    private final File mOutDir;
-
-    /**
-     * @param outDir see {@link #prepareStorage(File)}.
-     */
-    public ClipStorage(File outDir) {
-        assert(outDir.isDirectory());
-        mOutDir = outDir;
-    }
-
-    /**
-     * Creates a clip tag.
-     *
-     * NOTE: this tag doesn't guarantee perfect uniqueness, but should work well unless user creates
-     * clips more than hundreds of times per second.
-     */
-    public long createTag() {
-        return System.currentTimeMillis();
-    }
-
-    /**
-     * Returns a writer. Callers must close the writer when finished.
-     */
-    public Writer createWriter(long tag) throws IOException {
-        File file = toTagFile(tag);
-        return new Writer(file);
-    }
-
-    @VisibleForTesting
-    public Reader createReader(long tag) throws IOException {
-        File file = toTagFile(tag);
-        return new Reader(file);
-    }
-
-    @VisibleForTesting
-    public void delete(long tag) throws IOException {
-        toTagFile(tag).delete();
-    }
-
-    private File toTagFile(long tag) {
-        return new File(mOutDir, String.valueOf(tag));
-    }
-
-    /**
-     * Provides initialization of the clip data storage directory.
-     */
-    static File prepareStorage(File cacheDir) {
-        File clipDir = getClipDir(cacheDir);
-        clipDir.mkdir();
-
-        assert(clipDir.isDirectory());
-        return clipDir;
-    }
-
-    public static boolean hasDocList(long tag) {
-        return tag != NO_SELECTION_TAG;
-    }
-
-    private static File getClipDir(File cacheDir) {
-        return new File(cacheDir, "clippings");
-    }
-
-    static final class Reader implements Iterable<Uri>, Closeable {
-
-        private final Scanner mScanner;
-        private final FileLock mLock;
-
-        private Reader(File file) throws IOException {
-            FileInputStream inStream = new FileInputStream(file);
-
-            // Lock the file here so it won't pass this line until the corresponding writer is done
-            // writing.
-            mLock = inStream.getChannel().lock(0L, Long.MAX_VALUE, true);
-
-            mScanner = new Scanner(inStream);
-        }
-
-        @Override
-        public Iterator iterator() {
-            return new Iterator(mScanner);
-        }
-
-        @Override
-        public void close() throws IOException {
-            if (mLock != null) {
-                mLock.release();
-            }
-
-            if (mScanner != null) {
-                mScanner.close();
-            }
-        }
-    }
-
-    private static final class Iterator implements java.util.Iterator {
-        private final Scanner mScanner;
-
-        private Iterator(Scanner scanner) {
-            mScanner = scanner;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return mScanner.hasNextLine();
-        }
-
-        @Override
-        public Uri next() {
-            String line = mScanner.nextLine();
-            return Uri.parse(line);
-        }
-    }
-
-    private static final class Writer implements Closeable {
-
-        private final FileOutputStream mOut;
-        private final FileLock mLock;
-
-        private Writer(File file) throws IOException {
-            mOut = new FileOutputStream(file);
-
-            // Lock the file here so copy tasks would wait until everything is flushed to disk
-            // before start to run.
-            mLock = mOut.getChannel().lock();
-        }
-
-        public void write(Uri uri) throws IOException {
-            mOut.write(uri.toString().getBytes());
-            mOut.write(LINE_SEPARATOR);
-        }
-
-        @Override
-        public void close() throws IOException {
-            if (mLock != null) {
-                mLock.release();
-            }
-
-            if (mOut != null) {
-                mOut.close();
-            }
-        }
-    }
-
-    /**
-     * An {@link AsyncTask} that persists doc uris in {@link ClipStorage}.
-     */
-    static final class PersistTask extends AsyncTask<Void, Void, Void> {
-
-        private final ClipStorage mClipStorage;
-        private final Iterable<Uri> mUris;
-        private final long mTag;
-
-        PersistTask(ClipStorage clipStorage, Iterable<Uri> uris, long tag) {
-            mClipStorage = clipStorage;
-            mUris = uris;
-            mTag = tag;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            try (ClipStorage.Writer writer = mClipStorage.createWriter(mTag)) {
-                for (Uri uri: mUris) {
-                    assert(uri != null);
-                    writer.write(uri);
-                }
-            } catch (IOException e) {
-                Log.e(TAG, "Caught exception trying to write jumbo clip to disk.", e);
-            }
-
-            return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index 8041a1b..05f36e8 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -97,7 +97,7 @@
                    mState.action == ACTION_CREATE ||
                    mState.action == ACTION_OPEN_TREE ||
                    mState.action == ACTION_PICK_COPY_DESTINATION) {
-            RootsFragment.show(getFragmentManager(), null);
+            RootsFragment.show(getFragmentManager(), (Intent) null);
         }
 
         if (mState.restored) {
@@ -233,11 +233,6 @@
     }
 
     @Override
-    void openRootSettings(RootInfo root) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     void refreshDirectory(int anim) {
         final FragmentManager fm = getFragmentManager();
         final RootInfo root = getCurrentRoot();
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
index 3d3902d..3b2529f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
@@ -28,6 +28,9 @@
 import android.os.RemoteException;
 import android.text.format.DateUtils;
 
+import com.android.documentsui.clipping.ClipStorage;
+import com.android.documentsui.clipping.DocumentClipper;
+
 public class DocumentsApplication extends Application {
     private static final long PROVIDER_ANR_TIMEOUT = 20 * DateUtils.SECOND_IN_MILLIS;
 
@@ -77,7 +80,9 @@
 
         mThumbnailCache = new ThumbnailCache(memoryClassBytes / 4);
 
-        mClipStorage = new ClipStorage(ClipStorage.prepareStorage(getCacheDir()));
+        mClipStorage = new ClipStorage(
+                ClipStorage.prepareStorage(getCacheDir()),
+                getSharedPreferences(ClipStorage.PREF_NAME, 0));
         mClipper = new DocumentClipper(this, mClipStorage);
 
         final IntentFilter packageFilter = new IntentFilter();
diff --git a/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java b/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java
index fcee472..e47a262 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java
@@ -23,25 +23,30 @@
 import android.provider.DocumentsContract;
 import android.util.Log;
 
+import java.util.function.BooleanSupplier;
 import java.util.function.Consumer;
 
-final class EjectRootTask
-        extends CheckedTask<Void, Boolean> {
+final class EjectRootTask extends CheckedTask<Void, Boolean> {
     private final String mAuthority;
     private final String mRootId;
-    private final Consumer<Boolean> mListener;
+    private final Consumer<Boolean> mCallback;
     private Context mContext;
 
-    public EjectRootTask(Check check,
+    /**
+     * @param ejectCanceledCheck The method reference we use to see whether eject should be stopped
+     * at any point
+     * @param finishCallback The end callback necessary when the eject task finishes
+     */
+    public EjectRootTask(Context context,
             String authority,
             String rootId,
-            Context context,
-            Consumer<Boolean> listener) {
-        super(check);
+            BooleanSupplier ejectCanceledCheck,
+            Consumer<Boolean> finishCallback) {
+        super(ejectCanceledCheck::getAsBoolean);
         mAuthority = authority;
         mRootId = rootId;
         mContext = context;
-        mListener = listener;
+        mCallback = finishCallback;
     }
 
     @Override
@@ -65,6 +70,6 @@
 
     @Override
     protected void finish(Boolean ejected) {
-        mListener.accept(ejected);
+        mCallback.accept(ejected);
     }
 }
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Events.java b/packages/DocumentsUI/src/com/android/documentsui/Events.java
index 691f95a..95934c3f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/Events.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/Events.java
@@ -35,34 +35,13 @@
      * Returns true if event was triggered by a mouse.
      */
     public static boolean isMouseEvent(MotionEvent e) {
-        return isMouseType(e.getToolType(0));
-    }
-
-    /**
-     * Returns true if event was triggered by a finger or stylus touch.
-     */
-    public static boolean isTouchEvent(MotionEvent e) {
-        return isTouchType(e.getToolType(0));
-    }
-
-    /**
-     * Returns true if event was triggered by a mouse.
-     */
-    public static boolean isMouseType(int toolType) {
+        int toolType = e.getToolType(0);
         return toolType == MotionEvent.TOOL_TYPE_MOUSE;
     }
 
     /**
      * Returns true if event was triggered by a finger or stylus touch.
      */
-    public static boolean isTouchType(int toolType) {
-        return toolType == MotionEvent.TOOL_TYPE_FINGER
-                || toolType == MotionEvent.TOOL_TYPE_STYLUS;
-    }
-
-    /**
-     * Returns true if event was triggered by a finger or stylus touch.
-     */
     public static boolean isActionDown(MotionEvent e) {
         return e.getActionMasked() == MotionEvent.ACTION_DOWN;
     }
@@ -115,7 +94,7 @@
      * A facade over MotionEvent primarily designed to permit for unit testing
      * of related code.
      */
-    public interface InputEvent {
+    public interface InputEvent extends AutoCloseable {
         boolean isMouseEvent();
         boolean isPrimaryButtonPressed();
         boolean isSecondaryButtonPressed();
@@ -127,9 +106,15 @@
         /** Returns true if the action is the final release of a mouse or touch. */
         boolean isActionUp();
 
+        // Eliminate the checked Exception from Autoclosable.
+        @Override
+        public void close();
+
         Point getOrigin();
         float getX();
         float getY();
+        float getRawX();
+        float getRawY();
 
         /** Returns true if the there is an item under the finger/cursor. */
         boolean isOverItem();
@@ -138,7 +123,7 @@
         int getItemPosition();
     }
 
-    public static final class MotionInputEvent implements InputEvent, AutoCloseable {
+    public static final class MotionInputEvent implements InputEvent {
         private static final String TAG = "MotionInputEvent";
 
         private static final Pools.SimplePool<MotionInputEvent> sPool = new Pools.SimplePool<>(1);
@@ -250,6 +235,16 @@
         }
 
         @Override
+        public float getRawX() {
+            return mEvent.getRawX();
+        }
+
+        @Override
+        public float getRawY() {
+            return mEvent.getRawY();
+        }
+
+        @Override
         public boolean isOverItem() {
             return getItemPosition() != RecyclerView.NO_POSITION;
         }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Files.java b/packages/DocumentsUI/src/com/android/documentsui/Files.java
index 38f98be..009fecb4 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/Files.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/Files.java
@@ -26,13 +26,11 @@
     private Files() {}  // no initialization for utility classes.
 
     public static void deleteRecursively(File file) {
-        if (file.exists()) {
-            if (file.isDirectory()) {
-                for (File child : file.listFiles()) {
-                    deleteRecursively(child);
-                }
+        if (file.isDirectory()) {
+            for (File child : file.listFiles()) {
+                deleteRecursively(child);
             }
-            file.delete();
         }
+        file.delete();
     }
 }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
index c7c53ba..54f3e61 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
@@ -39,6 +39,7 @@
 import com.android.documentsui.MenuManager.DirectoryDetails;
 import com.android.documentsui.OperationDialogFragment.DialogType;
 import com.android.documentsui.RecentsProvider.ResumeColumns;
+import com.android.documentsui.clipping.DocumentClipper;
 import com.android.documentsui.dirlist.AnimationView;
 import com.android.documentsui.dirlist.DirectoryFragment;
 import com.android.documentsui.dirlist.FragmentTuner;
@@ -90,7 +91,7 @@
             }
         };
 
-        RootsFragment.show(getFragmentManager(), null);
+        RootsFragment.show(getFragmentManager(), this::openRootSettings);
 
         final Intent intent = getIntent();
         final Uri uri = intent.getData();
@@ -240,7 +241,6 @@
         return true;
     }
 
-    @Override
     void openRootSettings(RootInfo root) {
         Metrics.logUserAction(this, Metrics.USER_ACTION_SETTINGS);
         final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS);
@@ -519,7 +519,7 @@
             } catch (FileNotFoundException e) {
                 Log.e(TAG, "Failed to resolve DocumentInfo from Uri: " + uri);
             }
-            mState.stack.add(mOwner.getRootDocumentBlocking(root));
+            mState.stack.add(root.getRootDocumentBlocking(mOwner));
             return null;
         }
 
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java b/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
index e1da944..a7e4905 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
@@ -16,7 +16,6 @@
 
 package com.android.documentsui;
 
-import android.provider.DocumentsContract.Root;
 import android.view.Menu;
 import android.view.MenuItem;
 
@@ -45,7 +44,7 @@
     @Override
     void updateEject(MenuItem eject, RootInfo root) {
         eject.setVisible(true);
-        eject.setEnabled(((root.flags & Root.FLAG_SUPPORTS_EJECT) > 0) && !root.ejecting);
+        eject.setEnabled(root.supportsEject() && !root.ejecting);
     }
 
     @Override
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java b/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java
index 66b94fc..152d3a0 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java
@@ -22,7 +22,6 @@
 import android.view.DragEvent;
 import android.view.View;
 import android.view.View.OnDragListener;
-import android.view.ViewConfiguration;
 
 import com.android.documentsui.ItemDragListener.DragHost;
 import com.android.internal.annotations.VisibleForTesting;
@@ -39,7 +38,7 @@
     private static final String TAG = "ItemDragListener";
 
     @VisibleForTesting
-    static final int SPRING_TIMEOUT = ViewConfiguration.getLongPressTimeout();
+    static final int SPRING_TIMEOUT = 1000;
 
     protected final H mDragHost;
     private final Timer mHoverTimer;
@@ -82,7 +81,7 @@
         TimerTask task = createOpenTask(v);
         assert (task != null);
         v.setTag(R.id.drag_hovering_tag, task);
-        mHoverTimer.schedule(task, ViewConfiguration.getLongPressTimeout());
+        mHoverTimer.schedule(task, SPRING_TIMEOUT);
     }
 
     private void handleLocationEvent(View v, float x, float y) {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
index a33b35b..ca28622 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
@@ -24,6 +24,7 @@
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
 import android.app.LoaderManager.LoaderCallbacks;
+import android.content.ClipData;
 import android.content.Context;
 import android.content.Intent;
 import android.content.Loader;
@@ -33,16 +34,14 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Looper;
-import android.provider.DocumentsContract.Root;
-import android.provider.DocumentsContract;
 import android.provider.Settings;
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import android.text.format.Formatter;
 import android.util.Log;
 import android.view.ContextMenu;
+import android.view.DragEvent;
 import android.view.LayoutInflater;
-import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.MotionEvent;
@@ -60,7 +59,11 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import com.android.documentsui.CheckedTask.Check;
+import com.android.documentsui.clipping.DocumentClipper;
+import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.services.FileOperations;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -81,11 +84,33 @@
     private static final String TAG = "RootsFragment";
     private static final String EXTRA_INCLUDE_APPS = "includeApps";
 
+    private final OnDragListener mDragListener = new ItemDragListener<RootsFragment>(this) {
+        @Override
+        public boolean handleDropEventChecked(View v, DragEvent event) {
+            final int position = (Integer) v.getTag(R.id.item_position_tag);
+            final Item item = mAdapter.getItem(position);
+
+            assert(item.isDropTarget());
+
+            BaseActivity activity = getBaseActivity();
+            return item.dropOn(event.getClipData(), activity, RootsFragment.this::isDetached,
+                    activity.fileOpCallback);
+        }
+    };
+
     private ListView mList;
     private RootsAdapter mAdapter;
     private LoaderCallbacks<Collection<RootInfo>> mCallbacks;
+    private Consumer<RootInfo> mOpenSettings = (RootInfo) -> {
+        throw new UnsupportedOperationException("Can't open settings.");
+    };
 
-    public static void show(FragmentManager fm, Intent includeApps) {
+    public static void show(FragmentManager fm, Consumer<RootInfo> openSettings) {
+        RootsFragment fragment = show(fm, (Intent) null);
+        fragment.mOpenSettings = openSettings;
+    }
+
+    public static RootsFragment show(FragmentManager fm, Intent includeApps) {
         final Bundle args = new Bundle();
         args.putParcelable(EXTRA_INCLUDE_APPS, includeApps);
 
@@ -95,6 +120,8 @@
         final FragmentTransaction ft = fm.beginTransaction();
         ft.replace(R.id.container_roots, fragment);
         ft.commitAllowingStateLoss();
+
+        return fragment;
     }
 
     public static RootsFragment get(FragmentManager fm) {
@@ -108,8 +135,12 @@
         final View view = inflater.inflate(R.layout.fragment_roots, container, false);
         mList = (ListView) view.findViewById(R.id.roots_list);
         mList.setOnItemClickListener(mItemListener);
-        // For right-clicks, we want to trap the click and not pass it to OnClickListener
-        // For all other clicks, we will pass the events down
+        // ListView does not have right-click specific listeners, so we will have a
+        // GenericMotionListener to listen for it.
+        // Currently, right click is viewed the same as long press, so we will have to quickly
+        // register for context menu when we receive a right click event, and quickly unregister
+        // it afterwards to prevent context menus popping up upon long presses.
+        // All other motion events will then get passed to OnItemClickListener.
         mList.setOnGenericMotionListener(
                 new OnGenericMotionListener() {
             @Override
@@ -151,8 +182,8 @@
 
                 Intent handlerAppIntent = getArguments().getParcelable(EXTRA_INCLUDE_APPS);
 
-                mAdapter = new RootsAdapter(context, result, handlerAppIntent, state,
-                        new ItemDragListener<>(RootsFragment.this));
+                mAdapter =
+                        new RootsAdapter(context, result, handlerAppIntent, state, mDragListener);
                 mList.setAdapter(mAdapter);
 
                 onCurrentRootChanged();
@@ -233,12 +264,12 @@
      * In RootsFragment we open the hovered root.
      */
     @Override
-    public void onViewHovered(View view) {
+    public void onViewHovered(View v) {
         // SpacerView doesn't have DragListener so this view is guaranteed to be a RootItemView.
-        RootItemView itemView = (RootItemView) view;
+        RootItemView itemView = (RootItemView) v;
         itemView.drawRipple();
 
-        final int position = (Integer) view.getTag(R.id.item_position_tag);
+        final int position = (Integer) v.getTag(R.id.item_position_tag);
         final Item item = mAdapter.getItem(position);
         item.open(this);
     }
@@ -267,15 +298,21 @@
     @Override
     public boolean onContextItemSelected(MenuItem item) {
         AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
+        // There is a possibility that this is called from DirectoryFragment since
+        // all fragments' onContextItemSelected gets called when any menu item is selected
+        // This is to guard against it since DirectoryFragment's RecylerView does not have a
+        // menuInfo
+        if (adapterMenuInfo == null) {
+            return false;
+        }
         final RootItem rootItem = (RootItem) mAdapter.getItem(adapterMenuInfo.position);
-        switch(item.getItemId()) {
+        switch (item.getItemId()) {
             case R.id.menu_eject_root:
-                final View unmountIcon = adapterMenuInfo.targetView.findViewById(R.id.unmount_icon);
-                ejectClicked(unmountIcon, rootItem.root);
+                final View ejectIcon = adapterMenuInfo.targetView.findViewById(R.id.eject_icon);
+                ejectClicked(ejectIcon, rootItem.root);
                 return true;
             case R.id.menu_settings:
-                final RootInfo root = rootItem.root;
-                getBaseActivity().openRootSettings(root);
+                mOpenSettings.accept(rootItem.root);
                 return true;
             default:
                 if (DEBUG) Log.d(TAG, "Unhandled menu item selected: " + item);
@@ -286,6 +323,7 @@
     private static void ejectClicked(View ejectIcon, RootInfo root) {
         assert(ejectIcon != null);
         assert(ejectIcon.getContext() instanceof BaseActivity);
+        assert (!root.ejecting);
         ejectIcon.setEnabled(false);
         root.ejecting = true;
         ejectRoot(
@@ -306,10 +344,10 @@
         BooleanSupplier predicate = () -> {
             return !(ejectIcon.getVisibility() == View.VISIBLE);
         };
-        new EjectRootTask(predicate::getAsBoolean,
+        new EjectRootTask(ejectIcon.getContext(),
                 authority,
                 rootId,
-                ejectIcon.getContext(),
+                predicate,
                 listener).executeOnExecutor(ProviderExecutor.forAuthority(authority));
     }
 
@@ -360,6 +398,11 @@
         abstract boolean isDropTarget();
 
         abstract void open(RootsFragment fragment);
+
+        boolean dropOn(ClipData data, Context context, Check check,
+                FileOperations.Callback callback) {
+            return false;
+        }
     }
 
     private static class RootItem extends Item {
@@ -385,24 +428,24 @@
             final ImageView icon = (ImageView) convertView.findViewById(android.R.id.icon);
             final TextView title = (TextView) convertView.findViewById(android.R.id.title);
             final TextView summary = (TextView) convertView.findViewById(android.R.id.summary);
-            final ImageView unmountIcon = (ImageView) convertView.findViewById(R.id.unmount_icon);
+            final ImageView ejectIcon = (ImageView) convertView.findViewById(R.id.eject_icon);
 
             final Context context = convertView.getContext();
             icon.setImageDrawable(root.loadDrawerIcon(context));
             title.setText(root.title);
 
             if (root.supportsEject()) {
-                unmountIcon.setVisibility(View.VISIBLE);
-                unmountIcon.setImageDrawable(root.loadEjectIcon(context));
-                unmountIcon.setOnClickListener(new OnClickListener() {
+                ejectIcon.setVisibility(View.VISIBLE);
+                ejectIcon.setImageDrawable(root.loadEjectIcon(context));
+                ejectIcon.setOnClickListener(new OnClickListener() {
                     @Override
                     public void onClick(View unmountIcon) {
                         RootsFragment.ejectClicked(unmountIcon, root);
                     }
                 });
             } else {
-                unmountIcon.setVisibility(View.GONE);
-                unmountIcon.setOnClickListener(null);
+                ejectIcon.setVisibility(View.GONE);
+                ejectIcon.setOnClickListener(null);
             }
             // Show available space if no summary
             String summaryText = root.summary;
@@ -426,6 +469,14 @@
             Metrics.logRootVisited(fragment.getActivity(), root);
             activity.onRootPicked(root);
         }
+
+        @Override
+        boolean dropOn(
+                ClipData data, Context context, Check check, FileOperations.Callback callback) {
+            ProviderExecutor executor = ProviderExecutor.forAuthority(root.authority);
+            new DropOnRootTask(data, root, context, check, callback).executeOnExecutor(executor);
+            return true;
+        }
     }
 
     private static class SpacerItem extends Item {
@@ -504,6 +555,38 @@
         }
     }
 
+    private static class DropOnRootTask extends CheckedTask<Void, DocumentInfo> {
+        private ClipData mData;
+        private RootInfo mDstRoot;
+        private Context mContext;
+        private FileOperations.Callback mCallback;
+
+        private DropOnRootTask(ClipData data, RootInfo dstRoot, Context context, Check check,
+                FileOperations.Callback callback) {
+            super(check);
+            mData = data;
+            mDstRoot = dstRoot;
+            mContext = context;
+            mCallback = callback;
+        }
+
+        @Override
+        public DocumentInfo run(Void... args) {
+            return mDstRoot.getRootDocumentBlocking(mContext);
+        }
+
+        @Override
+        public void finish(DocumentInfo doc) {
+            if (doc != null) {
+                DocumentClipper clipper =
+                        DocumentsApplication.getDocumentClipper(mContext);
+                clipper.copyFromClipData(mDstRoot, doc, mData, mCallback);
+            } else {
+                Log.e(TAG, "Failed to get doc.");
+            }
+        }
+    }
+
     private static class RootsAdapter extends ArrayAdapter<Item> {
         private static final Map<String, Long> sIdMap = new HashMap<String, Long>();
         // the next available id to associate with a new string id
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
index d830c61..a37590d 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.text.Editable;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -91,6 +92,14 @@
                             return false;
                         }
 
+                        // Returning false in this method will bubble the event up to
+                        // {@link BaseActivity#onKeyDown}. In order to prevent backspace popping
+                        // documents once the textView is empty, we are going to trap it here.
+                        if (keyCode == KeyEvent.KEYCODE_DEL
+                                && TextUtils.isEmpty(mDisplayName.getText())) {
+                            return true;
+                        }
+
                         if (keyCode == KeyEvent.KEYCODE_ENTER && mSave.isEnabled()) {
                             performSave();
                             return true;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Shared.java b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
index c1db87d..0cd568a 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/Shared.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.net.Uri;
 import android.os.Looper;
 import android.provider.DocumentsContract;
 import android.text.TextUtils;
@@ -29,6 +30,10 @@
 import android.util.Log;
 import android.view.WindowManager;
 
+import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.model.RootInfo;
+
+import java.io.FileNotFoundException;
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
new file mode 100644
index 0000000..49edbcf
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
@@ -0,0 +1,270 @@
+/*
+ * 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.documentsui.clipping;
+
+import android.content.SharedPreferences;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.support.annotation.VisibleForTesting;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.util.Log;
+
+import com.android.documentsui.Files;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileLock;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Provides support for storing lists of documents identified by Uri.
+ *
+ * This class uses a ring buffer to recycle clip file slots, to mitigate the issue of clip file
+ * deletions. Below is the directory layout:
+ * [cache dir]
+ *      - [dir] 1
+ *      - [dir] 2
+ *      - ... to {@link #NUM_OF_SLOTS}
+ * When a clip data is actively being used:
+ * [cache dir]
+ *      - [dir] 1
+ *          - [file] primary
+ *          - [symlink] 1 > primary # copying to location X
+ *          - [symlink] 2 > primary # copying to location Y
+ */
+public final class ClipStorage {
+
+    public static final int NO_SELECTION_TAG = -1;
+
+    public static final String PREF_NAME = "ClipStoragePref";
+
+    @VisibleForTesting
+    static final int NUM_OF_SLOTS = 20;
+
+    private static final String TAG = "ClipStorage";
+
+    private static final long STALENESS_THRESHOLD = TimeUnit.DAYS.toMillis(2);
+
+    private static final String NEXT_POS_TAG = "NextPosTag";
+    private static final String PRIMARY_DATA_FILE_NAME = "primary";
+
+    private static final byte[] LINE_SEPARATOR = System.lineSeparator().getBytes();
+
+    private final File mOutDir;
+    private final SharedPreferences mPref;
+
+    private final File[] mSlots = new File[NUM_OF_SLOTS];
+    private int mNextPos;
+
+    /**
+     * @param outDir see {@link #prepareStorage(File)}.
+     */
+    public ClipStorage(File outDir, SharedPreferences pref) {
+        assert(outDir.isDirectory());
+        mOutDir = outDir;
+        mPref = pref;
+
+        mNextPos = mPref.getInt(NEXT_POS_TAG, 0);
+    }
+
+    /**
+     * Tries to get the next available clip slot. It's guaranteed to return one. If none of
+     * slots is available, it returns the next slot of the most recently returned slot by this
+     * method.
+     *
+     * <p>This is not a perfect solution, but should be enough for most regular use. There are
+     * several situations this method may not work:
+     * <ul>
+     *     <li>Making {@link #NUM_OF_SLOTS} - 1 times of large drag and drop or moveTo/copyTo/delete
+     *     operations after cutting a primary clip, then the primary clip is overwritten.</li>
+     *     <li>Having more than {@link #NUM_OF_SLOTS} queued jumbo file operations, one or more clip
+     *     file may be overwritten.</li>
+     * </ul>
+     */
+    synchronized int claimStorageSlot() {
+        int curPos = mNextPos;
+        for (int i = 0; i < NUM_OF_SLOTS; ++i, curPos = (curPos + 1) % NUM_OF_SLOTS) {
+            createSlotFileObject(curPos);
+
+            if (!mSlots[curPos].exists()) {
+                break;
+            }
+
+            // No file or only primary file exists, we deem it available.
+            if (mSlots[curPos].list().length <= 1) {
+                break;
+            }
+            // This slot doesn't seem available, but still need to check if it's a legacy of
+            // service being killed or a service crash etc. If it's stale, it's available.
+            else if (checkStaleFiles(curPos)) {
+                break;
+            }
+        }
+
+        prepareSlot(curPos);
+
+        mNextPos = (curPos + 1) % NUM_OF_SLOTS;
+        mPref.edit().putInt(NEXT_POS_TAG, mNextPos).commit();
+        return curPos;
+    }
+
+    private boolean checkStaleFiles(int pos) {
+        File slotData = toSlotDataFile(pos);
+
+        // No need to check if the file exists. File.lastModified() returns 0L if the file doesn't
+        // exist.
+        return slotData.lastModified() + STALENESS_THRESHOLD <= System.currentTimeMillis();
+    }
+
+    private void prepareSlot(int pos) {
+        assert(mSlots[pos] != null);
+
+        Files.deleteRecursively(mSlots[pos]);
+        mSlots[pos].mkdir();
+        assert(mSlots[pos].isDirectory());
+    }
+
+    /**
+     * Returns a writer. Callers must close the writer when finished.
+     */
+    private Writer createWriter(int tag) throws IOException {
+        File file = toSlotDataFile(tag);
+        return new Writer(file);
+    }
+
+    /**
+     * Gets a {@link File} instance given a tag.
+     *
+     * This method creates a symbolic link in the slot folder to the data file as a reference
+     * counting method. When someone is done using this symlink, it's responsible to delete it.
+     * Therefore we can have a neat way to track how many things are still using this slot.
+     */
+    public synchronized File getFile(int tag) throws IOException {
+        createSlotFileObject(tag);
+
+        File primary = toSlotDataFile(tag);
+
+        String linkFileName = Integer.toString(mSlots[tag].list().length);
+        File link = new File(mSlots[tag], linkFileName);
+
+        try {
+            Os.symlink(primary.getAbsolutePath(), link.getAbsolutePath());
+        } catch (ErrnoException e) {
+            e.rethrowAsIOException();
+        }
+        return link;
+    }
+
+    /**
+     * Returns a Reader. Callers must close the reader when finished.
+     */
+    ClipStorageReader createReader(File file) throws IOException {
+        assert(file.getParentFile().getParentFile().equals(mOutDir));
+        return new ClipStorageReader(file);
+    }
+
+    private File toSlotDataFile(int pos) {
+        assert(mSlots[pos] != null);
+        return new File(mSlots[pos], PRIMARY_DATA_FILE_NAME);
+    }
+
+    private void createSlotFileObject(int pos) {
+        if (mSlots[pos] == null) {
+            mSlots[pos] = new File(mOutDir, Integer.toString(pos));
+        }
+    }
+
+    /**
+     * Provides initialization of the clip data storage directory.
+     */
+    public static File prepareStorage(File cacheDir) {
+        File clipDir = getClipDir(cacheDir);
+        clipDir.mkdir();
+
+        assert(clipDir.isDirectory());
+        return clipDir;
+    }
+
+    private static File getClipDir(File cacheDir) {
+        return new File(cacheDir, "clippings");
+    }
+
+    private static final class Writer implements Closeable {
+
+        private final FileOutputStream mOut;
+        private final FileLock mLock;
+
+        private Writer(File file) throws IOException {
+            assert(!file.exists());
+
+            mOut = new FileOutputStream(file);
+
+            // Lock the file here so copy tasks would wait until everything is flushed to disk
+            // before start to run.
+            mLock = mOut.getChannel().lock();
+        }
+
+        public void write(Uri uri) throws IOException {
+            mOut.write(uri.toString().getBytes());
+            mOut.write(LINE_SEPARATOR);
+        }
+
+        @Override
+        public void close() throws IOException {
+            if (mLock != null) {
+                mLock.release();
+            }
+
+            if (mOut != null) {
+                mOut.close();
+            }
+        }
+    }
+
+    /**
+     * An {@link AsyncTask} that persists doc uris in {@link ClipStorage}.
+     */
+    static final class PersistTask extends AsyncTask<Void, Void, Void> {
+
+        private final ClipStorage mClipStorage;
+        private final Iterable<Uri> mUris;
+        private final int mTag;
+
+        PersistTask(ClipStorage clipStorage, Iterable<Uri> uris, int tag) {
+            mClipStorage = clipStorage;
+            mUris = uris;
+            mTag = tag;
+        }
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            try(Writer writer = mClipStorage.createWriter(mTag)){
+                for (Uri uri: mUris) {
+                    assert(uri != null);
+                    writer.write(uri);
+                }
+            } catch (IOException e) {
+                Log.e(TAG, "Caught exception trying to write jumbo clip to disk.", e);
+            }
+
+            return null;
+        }
+    }
+}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java
new file mode 100644
index 0000000..2bae0f8
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java
@@ -0,0 +1,125 @@
+/*
+ * 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.documentsui.clipping;
+
+import android.net.Uri;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.channels.FileLock;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Scanner;
+
+/**
+ * Reader class used to read uris from clip files stored in {@link ClipStorage}. It provides
+ * synchronization within a single process as an addition to {@link FileLock} which is for
+ * cross-process synchronization.
+ */
+class ClipStorageReader implements Iterable<Uri>, Closeable {
+
+    /**
+     * FileLock can't be held multiple times in a single JVM, but it's possible to have multiple
+     * readers reading the same clip file. Share the FileLock here so that it can be released
+     * when it's not needed.
+     */
+    private static final Map<String, FileLockEntry> sLocks = new HashMap<>();
+
+    private final String mCanonicalPath;
+    private final Scanner mScanner;
+
+    ClipStorageReader(File file) throws IOException {
+        FileInputStream inStream = new FileInputStream(file);
+        mScanner = new Scanner(inStream);
+
+        mCanonicalPath = file.getCanonicalPath(); // Resolve symlink
+        synchronized (sLocks) {
+            if (sLocks.containsKey(mCanonicalPath)) {
+                // Read lock is already held by someone in this JVM, just increment the ref
+                // count.
+                sLocks.get(mCanonicalPath).mCount++;
+            } else {
+                // No map entry, need to lock the file so it won't pass this line until the
+                // corresponding writer is done writing.
+                FileLock lock = inStream.getChannel().lock(0L, Long.MAX_VALUE, true);
+                sLocks.put(mCanonicalPath, new FileLockEntry(1, lock, mScanner));
+            }
+        }
+    }
+
+    @Override
+    public Iterator iterator() {
+        return new Iterator(mScanner);
+    }
+
+    @Override
+    public void close() throws IOException {
+        FileLockEntry ref;
+        synchronized (sLocks) {
+            ref = sLocks.get(mCanonicalPath);
+
+            assert(ref.mCount > 0);
+            if (--ref.mCount == 0) {
+                // If ref count is 0 now, then there is no one who needs to hold the read lock.
+                // Release the lock, and remove the entry.
+                ref.mLock.release();
+                ref.mScanner.close();
+                sLocks.remove(mCanonicalPath);
+            }
+        }
+
+        if (mScanner != ref.mScanner) {
+            mScanner.close();
+        }
+    }
+
+    private static final class Iterator implements java.util.Iterator {
+        private final Scanner mScanner;
+
+        private Iterator(Scanner scanner) {
+            mScanner = scanner;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return mScanner.hasNextLine();
+        }
+
+        @Override
+        public Uri next() {
+            String line = mScanner.nextLine();
+            return Uri.parse(line);
+        }
+    }
+
+    private static final class FileLockEntry {
+        private final FileLock mLock;
+        // We need to keep this scanner here because if the scanner is closed, the file lock is
+        // closed too.
+        private final Scanner mScanner;
+
+        private int mCount;
+
+        private FileLockEntry(int count, FileLock lock, Scanner scanner) {
+            mCount = count;
+            mLock = lock;
+            mScanner = scanner;
+        }
+    }
+}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
similarity index 62%
rename from packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
rename to packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
index 72413bd..bdc1836 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * 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.
@@ -14,24 +14,24 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
 import android.content.ClipData;
 import android.content.ClipDescription;
 import android.content.ClipboardManager;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.SharedPreferences;
 import android.net.Uri;
-import android.os.BaseBundle;
 import android.os.PersistableBundle;
 import android.provider.DocumentsContract;
 import android.support.annotation.Nullable;
 import android.util.Log;
 
+import com.android.documentsui.Shared;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
+import com.android.documentsui.model.RootInfo;
 import com.android.documentsui.services.FileOperation;
 import com.android.documentsui.services.FileOperationService;
 import com.android.documentsui.services.FileOperationService.OpType;
@@ -48,7 +48,7 @@
  * ClipboardManager wrapper class providing higher level logical
  * support for dealing with Documents.
  */
-public final class DocumentClipper implements ClipboardManager.OnPrimaryClipChangedListener {
+public final class DocumentClipper {
 
     private static final String TAG = "DocumentClipper";
 
@@ -57,34 +57,14 @@
     static final String OP_JUMBO_SELECTION_SIZE = "jumboSelection-size";
     static final String OP_JUMBO_SELECTION_TAG = "jumboSelection-tag";
 
-    // Use shared preference to store last seen primary clip tag, so that we can delete the file
-    // when we realize primary clip has been changed when we're not running.
-    private static final String PREF_NAME = "DocumentClipperPref";
-    private static final String LAST_PRIMARY_CLIP_TAG = "lastPrimaryClipTag";
-
     private final Context mContext;
     private final ClipStorage mClipStorage;
     private final ClipboardManager mClipboard;
 
-    // Here we're tracking the last clipped tag ids so we can delete them later.
-    private long mLastDragClipTag = ClipStorage.NO_SELECTION_TAG;
-    private long mLastUnusedPrimaryClipTag = ClipStorage.NO_SELECTION_TAG;
-
-    private final SharedPreferences mPref;
-
-    DocumentClipper(Context context, ClipStorage storage) {
+    public DocumentClipper(Context context, ClipStorage storage) {
         mContext = context;
         mClipStorage = storage;
         mClipboard = context.getSystemService(ClipboardManager.class);
-
-        mClipboard.addPrimaryClipChangedListener(this);
-
-        // Primary clips may be changed when we're not running, now it's time to clean up the
-        // remnant.
-        mPref = context.getSharedPreferences(PREF_NAME, 0);
-        mLastUnusedPrimaryClipTag =
-                mPref.getLong(LAST_PRIMARY_CLIP_TAG, ClipStorage.NO_SELECTION_TAG);
-        deleteLastUnusedPrimaryClip();
     }
 
     public boolean hasItemsToPaste() {
@@ -112,24 +92,8 @@
     /**
      * Returns {@link ClipData} representing the selection, or null if selection is empty,
      * or cannot be converted.
-     *
-     * This is specialized for drag and drop so that we know which file to delete if nobody accepts
-     * the drop.
      */
-    public @Nullable ClipData getClipDataForDrag(
-            Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
-        ClipData data = getClipDataForDocuments(uriBuilder, selection, opType);
-
-        mLastDragClipTag = getTag(data);
-
-        return data;
-    }
-
-    /**
-     * Returns {@link ClipData} representing the selection, or null if selection is empty,
-     * or cannot be converted.
-     */
-    private @Nullable ClipData getClipDataForDocuments(
+    public ClipData getClipDataForDocuments(
         Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
 
         assert(selection != null);
@@ -147,7 +111,7 @@
     /**
      * Returns ClipData representing the selection.
      */
-    private @Nullable ClipData createStandardClipData(
+    private ClipData createStandardClipData(
             Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
 
         assert(!selection.isEmpty());
@@ -178,7 +142,7 @@
     /**
      * Returns ClipData representing the list of docs
      */
-    private @Nullable ClipData createJumboClipData(
+    private ClipData createJumboClipData(
             Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
 
         assert(!selection.isEmpty());
@@ -210,8 +174,8 @@
         bundle.putInt(OP_JUMBO_SELECTION_SIZE, selection.size());
 
         // Creates a clip tag
-        long tag = mClipStorage.createTag();
-        bundle.putLong(OP_JUMBO_SELECTION_TAG, tag);
+        int tag = mClipStorage.claimStorageSlot();
+        bundle.putInt(OP_JUMBO_SELECTION_TAG, tag);
 
         ClipDescription description = new ClipDescription(
                 "", // Currently "label" is not displayed anywhere in the UI.
@@ -232,7 +196,7 @@
                 getClipDataForDocuments(uriBuilder, selection, FileOperationService.OPERATION_COPY);
         assert(data != null);
 
-        setPrimaryClip(data);
+        mClipboard.setPrimaryClip(data);
     }
 
     /**
@@ -250,68 +214,10 @@
         PersistableBundle bundle = data.getDescription().getExtras();
         bundle.putString(SRC_PARENT_KEY, parent.derivedUri.toString());
 
-        setPrimaryClip(data);
-    }
-
-    private void setPrimaryClip(ClipData data) {
-        deleteLastPrimaryClip();
-
-        long tag = getTag(data);
-        setLastUnusedPrimaryClipTag(tag);
-
         mClipboard.setPrimaryClip(data);
     }
 
     /**
-     * Sets this primary tag to both class variable and shared preference.
-     */
-    private void setLastUnusedPrimaryClipTag(long tag) {
-        mLastUnusedPrimaryClipTag = tag;
-        mPref.edit().putLong(LAST_PRIMARY_CLIP_TAG, tag).commit();
-    }
-
-    /**
-     * This is a good chance for us to remove previous clip file for cut/copy because we know a new
-     * primary clip is set.
-     */
-    @Override
-    public void onPrimaryClipChanged() {
-        deleteLastUnusedPrimaryClip();
-    }
-
-    private void deleteLastUnusedPrimaryClip() {
-        ClipData primary = mClipboard.getPrimaryClip();
-        long primaryTag = getTag(primary);
-
-        // onPrimaryClipChanged is also called after we call setPrimaryClip(), so make sure we don't
-        // delete the clip file we just created.
-        if (mLastUnusedPrimaryClipTag != primaryTag) {
-            deleteLastPrimaryClip();
-        }
-    }
-
-    private void deleteLastPrimaryClip() {
-        deleteClip(mLastUnusedPrimaryClipTag);
-        setLastUnusedPrimaryClipTag(ClipStorage.NO_SELECTION_TAG);
-    }
-
-    /**
-     * Deletes the last seen drag clip file.
-     */
-    public void deleteDragClip() {
-        deleteClip(mLastDragClipTag);
-        mLastDragClipTag = ClipStorage.NO_SELECTION_TAG;
-    }
-
-    private void deleteClip(long tag) {
-        try {
-            mClipStorage.delete(tag);
-        } catch (IOException e) {
-            Log.w(TAG, "Error deleting clip file with tag: " + tag, e);
-        }
-    }
-
-    /**
      * Copies documents from clipboard. It's the same as {@link #copyFromClipData} with clipData
      * returned from {@link ClipboardManager#getPrimaryClip()}.
      *
@@ -324,24 +230,46 @@
             DocumentStack docStack,
             FileOperations.Callback callback) {
 
-        // The primary clip has been claimed by a file operation. It's now the operation's duty
-        // to make sure the clip file is deleted after use.
-        setLastUnusedPrimaryClipTag(ClipStorage.NO_SELECTION_TAG);
-
         copyFromClipData(destination, docStack, mClipboard.getPrimaryClip(), callback);
     }
 
     /**
-     * Copies documents from given clip data.
+     * Copied documents from given clip data to a root directory.
+     * @param root the root which root directory to copy to
+     * @param destination the root directory
+     * @param clipData the clipData to copy from
+     * @param callback callback to notify when operation finishes
+     */
+    public void copyFromClipData(
+            final RootInfo root,
+            final DocumentInfo destination,
+            final @Nullable ClipData clipData,
+            final FileOperations.Callback callback) {
+        DocumentStack dstStack = new DocumentStack(root, destination);
+        copyFromClipData(dstStack, clipData, callback);
+    }
+
+    /**
+     * Copies documents from given clip data to a folder.
      *
-     * @param destination destination document
-     * @param docStack the document stack to the destination folder
-     * @param clipData the clipData to copy from, or null to copy from clipboard
+     * @param destination destination folder
+     * @param docStack the document stack to the destination folder (not including the destination
+     *                 folder)
+     * @param clipData the clipData to copy from
      * @param callback callback to notify when operation finishes
      */
     public void copyFromClipData(
             final DocumentInfo destination,
-            DocumentStack docStack,
+            final DocumentStack docStack,
+            final @Nullable ClipData clipData,
+            final FileOperations.Callback callback) {
+
+        DocumentStack dstStack = new DocumentStack(docStack, destination);
+        copyFromClipData(dstStack, clipData, callback);
+    }
+
+    private void copyFromClipData(
+            final DocumentStack dstStack,
             final @Nullable ClipData clipData,
             final FileOperations.Callback callback) {
 
@@ -352,33 +280,36 @@
 
         PersistableBundle bundle = clipData.getDescription().getExtras();
         @OpType int opType = getOpType(bundle);
-        UrisSupplier uris = UrisSupplier.create(clipData);
+        try {
+            if (!canCopy(dstStack.peek())) {
+                callback.onOperationResult(
+                        FileOperations.Callback.STATUS_REJECTED, getOpType(clipData), 0);
+                return;
+            }
 
-        if (!canCopy(destination)) {
-            callback.onOperationResult(
-                    FileOperations.Callback.STATUS_REJECTED, opType, 0);
+            UrisSupplier uris = UrisSupplier.create(clipData, mContext);
+            if (uris.getItemCount() == 0) {
+                callback.onOperationResult(
+                        FileOperations.Callback.STATUS_ACCEPTED, opType, 0);
+                return;
+            }
+
+            String srcParentString = bundle.getString(SRC_PARENT_KEY);
+            Uri srcParent = srcParentString == null ? null : Uri.parse(srcParentString);
+
+            FileOperation operation = new FileOperation.Builder()
+                    .withOpType(opType)
+                    .withSrcParent(srcParent)
+                    .withDestination(dstStack)
+                    .withSrcs(uris)
+                    .build();
+
+            FileOperations.start(mContext, operation, callback);
+        } catch(IOException e) {
+            Log.e(TAG, "Cannot create uris supplier.", e);
+            callback.onOperationResult(FileOperations.Callback.STATUS_REJECTED, opType, 0);
             return;
         }
-
-        if (uris.getItemCount() == 0) {
-            callback.onOperationResult(
-                    FileOperations.Callback.STATUS_ACCEPTED, opType, 0);
-            return;
-        }
-
-        DocumentStack dstStack = new DocumentStack(docStack, destination);
-
-        String srcParentString = bundle.getString(SRC_PARENT_KEY);
-        Uri srcParent = srcParentString == null ? null : Uri.parse(srcParentString);
-
-        FileOperation operation = new FileOperation.Builder()
-                .withOpType(opType)
-                .withSrcParent(srcParent)
-                .withDestination(dstStack)
-                .withSrcs(uris)
-                .build();
-
-        FileOperations.start(mContext, operation, callback);
     }
 
     /**
@@ -397,28 +328,6 @@
         return true;
     }
 
-    /**
-     * Obtains tag from {@link ClipData}. Returns {@link ClipStorage#NO_SELECTION_TAG}
-     * if it's not a jumbo clip.
-     */
-    private static long getTag(@Nullable ClipData data) {
-        if (data == null) {
-            return ClipStorage.NO_SELECTION_TAG;
-        }
-
-        ClipDescription description = data.getDescription();
-        if (description == null) {
-            return ClipStorage.NO_SELECTION_TAG;
-        }
-
-        BaseBundle bundle = description.getExtras();
-        if (bundle == null) {
-            return ClipStorage.NO_SELECTION_TAG;
-        }
-
-        return bundle.getLong(OP_JUMBO_SELECTION_TAG, ClipStorage.NO_SELECTION_TAG);
-    }
-
     public static @OpType int getOpType(ClipData data) {
         PersistableBundle bundle = data.getDescription().getExtras();
         return getOpType(bundle);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/UrisSupplier.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
similarity index 73%
rename from packages/DocumentsUI/src/com/android/documentsui/UrisSupplier.java
rename to packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
index c5d30aa..7b1ba34 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/UrisSupplier.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
-import static com.android.documentsui.DocumentClipper.OP_JUMBO_SELECTION_SIZE;
-import static com.android.documentsui.DocumentClipper.OP_JUMBO_SELECTION_TAG;
+import static com.android.documentsui.clipping.DocumentClipper.OP_JUMBO_SELECTION_SIZE;
+import static com.android.documentsui.clipping.DocumentClipper.OP_JUMBO_SELECTION_TAG;
 
 import android.content.ClipData;
 import android.content.Context;
@@ -28,9 +28,12 @@
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
+import com.android.documentsui.DocumentsApplication;
+import com.android.documentsui.Shared;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
 import com.android.documentsui.services.FileOperation;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -54,31 +57,25 @@
      *
      * @param context We need context to obtain {@link ClipStorage}. It can't be sent in a parcel.
      */
-    public Iterable<Uri> getDocs(Context context) throws IOException {
-        return getDocs(DocumentsApplication.getClipStorage(context));
+    public Iterable<Uri> getUris(Context context) throws IOException {
+        return getUris(DocumentsApplication.getClipStorage(context));
     }
 
     @VisibleForTesting
-    abstract Iterable<Uri> getDocs(ClipStorage storage) throws IOException;
+    abstract Iterable<Uri> getUris(ClipStorage storage) throws IOException;
 
-    public void dispose(Context context) {
-        ClipStorage storage = DocumentsApplication.getClipStorage(context);
-        dispose(storage);
-    }
-
-    @VisibleForTesting
-    void dispose(ClipStorage storage) {}
+    public void dispose() {}
 
     @Override
     public int describeContents() {
         return 0;
     }
 
-    public static UrisSupplier create(ClipData clipData) {
+    public static UrisSupplier create(ClipData clipData, Context context) throws IOException {
         UrisSupplier uris;
         PersistableBundle bundle = clipData.getDescription().getExtras();
         if (bundle.containsKey(OP_JUMBO_SELECTION_TAG)) {
-            uris = new JumboUrisSupplier(clipData);
+            uris = new JumboUrisSupplier(clipData, context);
         } else {
             uris = new StandardUrisSupplier(clipData);
         }
@@ -87,7 +84,9 @@
     }
 
     public static UrisSupplier create(
-            Selection selection, Function<String, Uri> uriBuilder, Context context) {
+            Selection selection, Function<String, Uri> uriBuilder, Context context)
+            throws IOException {
+
         ClipStorage storage = DocumentsApplication.getClipStorage(context);
 
         List<Uri> uris = new ArrayList<>(selection.size());
@@ -99,7 +98,7 @@
     }
 
     @VisibleForTesting
-    static UrisSupplier create(List<Uri> uris, ClipStorage storage) {
+    static UrisSupplier create(List<Uri> uris, ClipStorage storage) throws IOException {
         UrisSupplier urisSupplier = (uris.size() > Shared.MAX_DOCS_IN_INTENT)
                 ? new JumboUrisSupplier(uris, storage)
                 : new StandardUrisSupplier(uris);
@@ -110,24 +109,32 @@
     private static class JumboUrisSupplier extends UrisSupplier {
         private static final String TAG = "JumboUrisSupplier";
 
-        private final long mSelectionTag;
+        private final File mFile;
         private final int mSelectionSize;
 
-        private final transient AtomicReference<ClipStorage.Reader> mReader =
+        private final transient AtomicReference<ClipStorageReader> mReader =
                 new AtomicReference<>();
 
-        private JumboUrisSupplier(ClipData clipData) {
+        private JumboUrisSupplier(ClipData clipData, Context context) throws IOException {
             PersistableBundle bundle = clipData.getDescription().getExtras();
-            mSelectionTag = bundle.getLong(OP_JUMBO_SELECTION_TAG, ClipStorage.NO_SELECTION_TAG);
-            assert(mSelectionTag != ClipStorage.NO_SELECTION_TAG);
+            final int tag = bundle.getInt(OP_JUMBO_SELECTION_TAG, ClipStorage.NO_SELECTION_TAG);
+            assert(tag != ClipStorage.NO_SELECTION_TAG);
+            mFile = DocumentsApplication.getClipStorage(context).getFile(tag);
+            assert(mFile.exists());
 
             mSelectionSize = bundle.getInt(OP_JUMBO_SELECTION_SIZE);
             assert(mSelectionSize > Shared.MAX_DOCS_IN_INTENT);
         }
 
-        private JumboUrisSupplier(Collection<Uri> uris, ClipStorage storage) {
-            mSelectionTag = storage.createTag();
-            new ClipStorage.PersistTask(storage, uris, mSelectionTag).execute();
+        private JumboUrisSupplier(Collection<Uri> uris, ClipStorage storage) throws IOException {
+            final int tag = storage.claimStorageSlot();
+            new ClipStorage.PersistTask(storage, uris, tag).execute();
+
+            // There is a tiny race condition here. A job may starts to read before persist task
+            // starts to write, but it has to beat an IPC and background task schedule, which is
+            // pretty rare. Creating a symlink doesn't need that file to exist, but we can't assert
+            // on its existence.
+            mFile = storage.getFile(tag);
             mSelectionSize = uris.size();
         }
 
@@ -137,8 +144,8 @@
         }
 
         @Override
-        Iterable<Uri> getDocs(ClipStorage storage) throws IOException {
-            ClipStorage.Reader reader = mReader.getAndSet(storage.createReader(mSelectionTag));
+        Iterable<Uri> getUris(ClipStorage storage) throws IOException {
+            ClipStorageReader reader = mReader.getAndSet(storage.createReader(mFile));
             if (reader != null) {
                 reader.close();
                 mReader.get().close();
@@ -149,27 +156,27 @@
         }
 
         @Override
-        void dispose(ClipStorage storage) {
+        public void dispose() {
             try {
-                ClipStorage.Reader reader = mReader.get();
+                ClipStorageReader reader = mReader.get();
                 if (reader != null) {
                     reader.close();
                 }
             } catch (IOException e) {
                 Log.w(TAG, "Failed to close the reader.", e);
             }
-            try {
-                storage.delete(mSelectionTag);
-            } catch(IOException e) {
-                Log.w(TAG, "Failed to delete clip with tag: " + mSelectionTag + ".", e);
-            }
+
+            // mFile is a symlink to the actual data file. Delete the symlink here so that we know
+            // there is one fewer referrer that needs the data file. The actual data file will be
+            // cleaned up during file slot rotation. See ClipStorage for more details.
+            mFile.delete();
         }
 
         @Override
         public String toString() {
             StringBuilder builder = new StringBuilder();
             builder.append("JumboUrisSupplier{");
-            builder.append("selectionTag=").append(mSelectionTag);
+            builder.append("file=").append(mFile.getAbsolutePath());
             builder.append(", selectionSize=").append(mSelectionSize);
             builder.append("}");
             return builder.toString();
@@ -177,12 +184,12 @@
 
         @Override
         public void writeToParcel(Parcel dest, int flags) {
-            dest.writeLong(mSelectionTag);
+            dest.writeString(mFile.getAbsolutePath());
             dest.writeInt(mSelectionSize);
         }
 
         private JumboUrisSupplier(Parcel in) {
-            mSelectionTag = in.readLong();
+            mFile = new File(in.readString());
             mSelectionSize = in.readInt();
         }
 
@@ -236,7 +243,7 @@
         }
 
         @Override
-        Iterable<Uri> getDocs(ClipStorage storage) {
+        Iterable<Uri> getUris(ClipStorage storage) {
             return mDocs;
         }
 
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java
index 7320dc0..eb53ec1 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java
@@ -85,14 +85,14 @@
                 new RecyclerView.OnItemTouchListener() {
                     @Override
                     public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
-                        try (MotionInputEvent event = MotionInputEvent.obtain(e, view)) {
+                        try (InputEvent event = MotionInputEvent.obtain(e, view)) {
                             return handleEvent(event);
                         }
                     }
                     @Override
                     public void onTouchEvent(RecyclerView rv, MotionEvent e) {
                         if (Events.isMouseEvent(e)) {
-                            try (MotionInputEvent event = MotionInputEvent.obtain(e, view)) {
+                            try (InputEvent event = MotionInputEvent.obtain(e, view)) {
                                 processInputEvent(event);
                             }
                         }
@@ -177,7 +177,12 @@
         mSelection = selection;
     }
 
-    private boolean handleEvent(MotionInputEvent e) {
+    private boolean handleEvent(InputEvent e) {
+        // Don't start, or extend bands on right click.
+        if (e.isSecondaryButtonPressed()) {
+            return false;
+        }
+
         if (!e.isMouseEvent() && isActive()) {
             // Weird things happen if we keep up band select
             // when touch events happen.
@@ -225,7 +230,7 @@
         }
     }
 
-    boolean shouldStart(MotionInputEvent e) {
+    boolean shouldStart(InputEvent e) {
         return !isActive()
                 && e.isActionDown()  // the initial button press
                 && mAdapter.getItemCount() > 0
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 21f772e..ca7b2ca 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -46,6 +46,7 @@
 import android.provider.DocumentsContract;
 import android.provider.DocumentsContract.Document;
 import android.support.v13.view.DragStartHelper;
+import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.GridLayoutManager.SpanSizeLookup;
 import android.support.v7.widget.RecyclerView;
@@ -63,6 +64,7 @@
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
@@ -72,9 +74,10 @@
 import com.android.documentsui.BaseActivity;
 import com.android.documentsui.DirectoryLoader;
 import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.DocumentClipper;
+import com.android.documentsui.clipping.DocumentClipper;
 import com.android.documentsui.DocumentsActivity;
 import com.android.documentsui.DocumentsApplication;
+import com.android.documentsui.Events.InputEvent;
 import com.android.documentsui.Events.MotionInputEvent;
 import com.android.documentsui.ItemDragListener;
 import com.android.documentsui.MenuManager;
@@ -90,8 +93,9 @@
 import com.android.documentsui.Snackbars;
 import com.android.documentsui.State;
 import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
+import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.RootInfo;
 import com.android.documentsui.services.FileOperation;
@@ -99,12 +103,14 @@
 import com.android.documentsui.services.FileOperationService.OpType;
 import com.android.documentsui.services.FileOperations;
 
+import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.function.Function;
 
 import javax.annotation.Nullable;
 
@@ -113,7 +119,7 @@
  */
 public class DirectoryFragment extends Fragment
         implements DocumentsAdapter.Environment, LoaderCallbacks<DirectoryResult>,
-        ItemDragListener.DragHost {
+        ItemDragListener.DragHost, SwipeRefreshLayout.OnRefreshListener {
 
     @IntDef(flag = true, value = {
             TYPE_NORMAL,
@@ -135,14 +141,15 @@
     private static final int LOADER_ID = 42;
 
     private Model mModel;
-    private MultiSelectManager mSelectionManager;
+    private MultiSelectManager mSelectionMgr;
     private Model.UpdateListener mModelUpdateListener = new ModelUpdateListener();
-    private ItemEventListener mItemEventListener;
+    private UserInputHandler<InputEvent> mInputHandler;
     private SelectionModeListener mSelectionModeListener;
     private FocusManager mFocusManager;
 
     private IconHelper mIconHelper;
 
+    private SwipeRefreshLayout mRefreshLayout;
     private View mEmptyView;
     private RecyclerView mRecView;
     private ListeningGestureDetector mGestureDetector;
@@ -179,35 +186,6 @@
     private DirectoryDragListener mOnDragListener;
     private MenuManager mMenuManager;
 
-    /**
-     * A callback to show snackbar at the beginning of moving and copying.
-     */
-    private final FileOperations.Callback mFileOpCallback = (status, opType, docCount) -> {
-        if (status == FileOperations.Callback.STATUS_REJECTED) {
-            Snackbars.showPasteFailed(getActivity());
-            return;
-        }
-
-        if (docCount == 0) {
-            // Nothing has been pasted, so there is no need to show a snackbar.
-            return;
-        }
-
-        switch (opType) {
-            case FileOperationService.OPERATION_MOVE:
-                Snackbars.showMove(getActivity(), docCount);
-                break;
-            case FileOperationService.OPERATION_COPY:
-                Snackbars.showCopy(getActivity(), docCount);
-                break;
-            case FileOperationService.OPERATION_DELETE:
-                // We don't show anything for deletion.
-                break;
-            default:
-                throw new UnsupportedOperationException("Unsupported Operation: " + opType);
-        }
-    };
-
     @Override
     public View onCreateView(
             LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -216,6 +194,10 @@
 
         mMessageBar = MessageBar.create(getChildFragmentManager());
         mProgressBar = view.findViewById(R.id.progressbar);
+
+        mRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.refresh_layout);
+        mRefreshLayout.setOnRefreshListener(this);
+
         mEmptyView = view.findViewById(android.R.id.empty);
         mRecView = (RecyclerView) view.findViewById(R.id.dir_list);
         mRecView.setRecyclerListener(
@@ -239,7 +221,7 @@
 
     @Override
     public void onDestroyView() {
-        mSelectionManager.clearSelection();
+        mSelectionMgr.clearSelection();
 
         // Cancel any outstanding thumbnail requests
         final int count = mRecView.getChildCount();
@@ -295,46 +277,49 @@
         // TODO: instead of inserting the view into the constructor, extract listener-creation code
         // and set the listener on the view after the fact.  Then the view doesn't need to be passed
         // into the selection manager.
-        mSelectionManager = new MultiSelectManager(
+        mSelectionMgr = new MultiSelectManager(
                 mAdapter,
                 state.allowMultiple
                     ? MultiSelectManager.MODE_MULTIPLE
                     : MultiSelectManager.MODE_SINGLE);
 
-        GestureListener gestureListener = new GestureListener(
-                mSelectionManager,
-                mRecView,
+        // Make sure this is done after the RecyclerView is set up.
+        mFocusManager = new FocusManager(context, mRecView, mModel);
+
+        mInputHandler = new UserInputHandler<>(
+                mSelectionMgr,
+                mFocusManager,
+                new Function<MotionEvent, InputEvent>() {
+                    @Override
+                    public InputEvent apply(MotionEvent t) {
+                        return MotionInputEvent.obtain(t, mRecView);
+                    }
+                },
                 this::getTarget,
-                this::onDoubleTap,
-                this::onRightClick);
+                this::canSelect,
+                this::onRightClick,
+                this::onActivate,
+                (DocumentDetails ignored) -> {
+                    return onDeleteSelectedDocuments();
+                });
 
         mGestureDetector =
-                new ListeningGestureDetector(this.getContext(), mDragHelper, gestureListener);
+                new ListeningGestureDetector(this.getContext(), mDragHelper, mInputHandler);
 
         mRecView.addOnItemTouchListener(mGestureDetector);
         mEmptyView.setOnTouchListener(mGestureDetector);
 
         if (state.allowMultiple) {
-            mBandController = new BandController(mRecView, mAdapter, mSelectionManager);
+            mBandController = new BandController(mRecView, mAdapter, mSelectionMgr);
         }
 
         mSelectionModeListener = new SelectionModeListener();
-        mSelectionManager.addCallback(mSelectionModeListener);
+        mSelectionMgr.addCallback(mSelectionModeListener);
 
         mModel = new Model();
         mModel.addUpdateListener(mAdapter);
         mModel.addUpdateListener(mModelUpdateListener);
 
-        // Make sure this is done after the RecyclerView is set up.
-        mFocusManager = new FocusManager(context, mRecView, mModel);
-
-        mItemEventListener = new ItemEventListener(
-                mSelectionManager,
-                mFocusManager,
-                this::handleViewItem,
-                this::deleteDocuments,
-                this::canSelect);
-
         final BaseActivity activity = getBaseActivity();
         mTuner = activity.createFragmentTuner();
         mMenuManager = activity.getMenuManager();
@@ -350,7 +335,7 @@
     }
 
     public void retainState(RetainedState state) {
-        state.selection = mSelectionManager.getSelection(new Selection());
+        state.selection = mSelectionMgr.getSelection(new Selection());
     }
 
     @Override
@@ -409,58 +394,47 @@
         if (resultCode == Activity.RESULT_CANCELED || data == null) {
             // User pressed the back button or otherwise cancelled the destination pick. Don't
             // proceed with the copy.
-            operation.dispose(getContext());
+            operation.dispose();
             return;
         }
 
         operation.setDestination(data.getParcelableExtra(Shared.EXTRA_STACK));
 
-        FileOperations.start(getContext(), operation, mFileOpCallback);
+        BaseActivity activity = getBaseActivity();
+        FileOperations.start(activity, operation, activity.fileOpCallback);
     }
 
-    protected boolean onDoubleTap(MotionInputEvent event) {
-        if (event.isMouseEvent()) {
-            String id = getModelId(event);
-            if (id != null) {
-                return handleViewItem(id);
-            }
-        }
-        return false;
-    }
-
-    protected boolean onRightClick(MotionInputEvent e) {
+    protected boolean onRightClick(InputEvent e) {
         if (e.getItemPosition() != RecyclerView.NO_POSITION) {
-            final DocumentHolder holder = getTarget(e);
-            String modelId = getModelId(holder.itemView);
-            if (!mSelectionManager.getSelection().contains(modelId)) {
-                mSelectionManager.clearSelection();
-                // Set selection on the one single item
-                List<String> ids = Collections.singletonList(modelId);
-                mSelectionManager.setItemsSelected(ids, true);
+            final DocumentHolder doc = getTarget(e);
+            if (!mSelectionMgr.getSelection().contains(doc.modelId)) {
+                mSelectionMgr.replaceSelection(Collections.singleton(doc.modelId));
             }
 
             // We are registering for context menu here so long-press doesn't trigger this
             // floating context menu, and then quickly unregister right afterwards
-            registerForContextMenu(holder.itemView);
-            mRecView.showContextMenuForChild(holder.itemView,
-                    e.getX() - holder.itemView.getLeft(), e.getY() - holder.itemView.getTop());
-            unregisterForContextMenu(holder.itemView);
+            registerForContextMenu(doc.itemView);
+            mRecView.showContextMenuForChild(doc.itemView,
+                    e.getX() - doc.itemView.getLeft(), e.getY() - doc.itemView.getTop());
+            unregisterForContextMenu(doc.itemView);
+            return true;
         }
+
         // If there was no corresponding item pos, that means user right-clicked on the blank
         // pane
         // We would want to show different options then, and not select any item
         // The blank pane could be the recyclerView or the emptyView, so we need to register
         // according to whichever one is visible
-        else if (mEmptyView.getVisibility() == View.VISIBLE) {
+        if (mEmptyView.getVisibility() == View.VISIBLE) {
             registerForContextMenu(mEmptyView);
             mEmptyView.showContextMenu(e.getX(), e.getY());
             unregisterForContextMenu(mEmptyView);
             return true;
-        } else {
-            registerForContextMenu(mRecView);
-            mRecView.showContextMenu(e.getX(), e.getY());
-            unregisterForContextMenu(mRecView);
         }
+
+        registerForContextMenu(mRecView);
+        mRecView.showContextMenu(e.getX(), e.getY());
+        unregisterForContextMenu(mRecView);
         return true;
     }
 
@@ -477,7 +451,7 @@
         if (mTuner.isDocumentEnabled(docMimeType, docFlags)) {
             final DocumentInfo doc = DocumentInfo.fromDirectoryCursor(cursor);
             getBaseActivity().onDocumentPicked(doc, mModel);
-            mSelectionManager.clearSelection();
+            mSelectionMgr.clearSelection();
             return true;
         }
         return false;
@@ -494,26 +468,6 @@
         state.dirState.put(mStateKey, container);
     }
 
-    void dragStarted() {
-        // When files are selected for dragging, ActionMode is started. This obscures the breadcrumb
-        // with an ActionBar. In order to make drag and drop to the breadcrumb possible, we first
-        // end ActionMode so the breadcrumb is visible to the user.
-        if (mActionMode != null) {
-            mActionMode.finish();
-        }
-    }
-
-    void dragStopped(boolean result) {
-        if (result) {
-            clearSelection();
-        } else {
-            // When drag starts we might write a new clip file to disk.
-            // No drop event happens, remove clip file here. This may be called multiple times,
-            // but it should be OK because deletion is idempotent and cheap.
-            deleteDragClipFile();
-        }
-    }
-
     public void onDisplayStateChanged() {
         updateDisplayState();
     }
@@ -662,7 +616,7 @@
 
         @Override
         public void onSelectionChanged() {
-            mSelectionManager.getSelection(mSelected);
+            mSelectionMgr.getSelection(mSelected);
             if (mSelected.size() > 0) {
                 if (DEBUG) Log.d(TAG, "Maybe starting action mode.");
                 if (mActionMode == null) {
@@ -692,7 +646,7 @@
             if (DEBUG) Log.d(TAG, "Handling action mode destroyed.");
             mActionMode = null;
             // clear selection
-            mSelectionManager.clearSelection();
+            mSelectionMgr.clearSelection();
             mSelected.clear();
 
             mDirectoryCount = 0;
@@ -723,7 +677,7 @@
                 mRecView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
             }
 
-            int size = mSelectionManager.getSelection().size();
+            int size = mSelectionMgr.getSelection().size();
             mode.getMenuInflater().inflate(R.menu.mode_directory, menu);
             mode.setTitle(TextUtils.formatSelectedCount(size));
 
@@ -771,7 +725,7 @@
 
         @Override
         public boolean canRename() {
-            return mNoRenameCount == 0 && mSelectionManager.getSelection().size() == 1;
+            return mNoRenameCount == 0 && mSelectionMgr.getSelection().size() == 1;
         }
 
         private void updateActionMenu() {
@@ -787,7 +741,7 @@
     }
 
     private boolean handleMenuItemClick(MenuItem item) {
-        Selection selection = mSelectionManager.getSelection(new Selection());
+        Selection selection = mSelectionMgr.getSelection(new Selection());
 
         switch (item.getItemId()) {
             case R.id.menu_open:
@@ -854,9 +808,9 @@
     }
 
     public final boolean onBackPressed() {
-        if (mSelectionManager.hasSelection()) {
+        if (mSelectionMgr.hasSelection()) {
             if (DEBUG) Log.d(TAG, "Clearing selection on selection manager.");
-            mSelectionManager.clearSelection();
+            mSelectionMgr.clearSelection();
             return true;
         }
         return false;
@@ -968,6 +922,29 @@
         return message;
     }
 
+    private boolean onDeleteSelectedDocuments() {
+        if (mSelectionMgr.hasSelection()) {
+            deleteDocuments(mSelectionMgr.getSelection(new Selection()));
+        }
+        return false;
+    }
+
+    private boolean onActivate(DocumentDetails doc) {
+        // Toggle selection if we're in selection mode, othewise, view item.
+        if (mSelectionMgr.hasSelection()) {
+            mSelectionMgr.toggleSelection(doc.getModelId());
+        } else {
+            handleViewItem(doc.getModelId());
+        }
+        return true;
+    }
+
+//    private boolean onSelect(DocumentDetails doc) {
+//        mSelectionMgr.toggleSelection(doc.getModelId());
+//        mSelectionMgr.setSelectionRangeBegin(doc.getAdapterPosition());
+//        return true;
+//    }
+
     private void deleteDocuments(final Selection selected) {
         Metrics.logUserAction(getContext(), Metrics.USER_ACTION_DELETE);
 
@@ -1005,10 +982,15 @@
                                     Log.w(TAG, "Action mode is null before deleting documents.");
                                 }
 
-                                UrisSupplier srcs = UrisSupplier.create(
-                                        selected,
-                                        mModel::getItemUri,
-                                        getContext());
+                                UrisSupplier srcs;
+                                try {
+                                    srcs = UrisSupplier.create(
+                                            selected,
+                                            mModel::getItemUri,
+                                            getContext());
+                                } catch(IOException e) {
+                                    throw new RuntimeException("Failed to create uri supplier.", e);
+                                }
 
                                 FileOperation operation = new FileOperation.Builder()
                                         .withOpType(FileOperationService.OPERATION_DELETE)
@@ -1017,7 +999,8 @@
                                         .withSrcParent(srcParent.derivedUri)
                                         .build();
 
-                                FileOperations.start(getActivity(), operation, mFileOpCallback);
+                                BaseActivity activity = getBaseActivity();
+                                FileOperations.start(activity, operation, activity.fileOpCallback);
                             }
                         })
                     .setNegativeButton(android.R.string.cancel, null)
@@ -1041,8 +1024,12 @@
                 getActivity(),
                 DocumentsActivity.class);
 
-        UrisSupplier srcs =
-                UrisSupplier.create(selected, mModel::getItemUri, getContext());
+        UrisSupplier srcs;
+        try {
+            srcs = UrisSupplier.create(selected, mModel::getItemUri, getContext());
+        } catch(IOException e) {
+            throw new RuntimeException("Failed to create uri supplier.", e);
+        }
 
         Uri srcParent = getDisplayState().stack.peek().derivedUri;
         mPendingOperation = new FileOperation.Builder()
@@ -1110,7 +1097,7 @@
 
     @Override
     public void initDocumentHolder(DocumentHolder holder) {
-        holder.addEventListener(mItemEventListener);
+        holder.addKeyEventListener(mInputHandler);
         holder.itemView.setOnFocusChangeListener(mFocusManager);
     }
 
@@ -1196,11 +1183,11 @@
     public void copySelectedToClipboard() {
         Metrics.logUserAction(getContext(), Metrics.USER_ACTION_COPY_CLIPBOARD);
 
-        Selection selection = mSelectionManager.getSelection(new Selection());
+        Selection selection = mSelectionMgr.getSelection(new Selection());
         if (selection.isEmpty()) {
             return;
         }
-        mSelectionManager.clearSelection();
+        mSelectionMgr.clearSelection();
 
         mClipper.clipDocumentsForCopy(mModel::getItemUri, selection);
 
@@ -1210,11 +1197,11 @@
     public void cutSelectedToClipboard() {
         Metrics.logUserAction(getContext(), Metrics.USER_ACTION_CUT_CLIPBOARD);
 
-        Selection selection = mSelectionManager.getSelection(new Selection());
+        Selection selection = mSelectionMgr.getSelection(new Selection());
         if (selection.isEmpty()) {
             return;
         }
-        mSelectionManager.clearSelection();
+        mSelectionMgr.clearSelection();
 
         mClipper.clipDocumentsForCut(mModel::getItemUri, selection, getDisplayState().stack.peek());
 
@@ -1226,7 +1213,8 @@
 
         BaseActivity activity = (BaseActivity) getActivity();
         DocumentInfo destination = activity.getCurrentDirectory();
-        mClipper.copyFromClipboard(destination, activity.getDisplayState().stack, mFileOpCallback);
+        mClipper.copyFromClipboard(
+                destination, activity.getDisplayState().stack, activity.fileOpCallback);
         getActivity().invalidateOptionsMenu();
     }
 
@@ -1249,7 +1237,7 @@
         }
 
         // Only select things currently visible in the adapter.
-        boolean changed = mSelectionManager.setItemsSelected(enabled, true);
+        boolean changed = mSelectionMgr.setItemsSelected(enabled, true);
         if (changed) {
             updateDisplayState();
         }
@@ -1276,8 +1264,19 @@
         }
     }
 
-    public void clearSelection() {
-        mSelectionManager.clearSelection();
+    void dragStarted() {
+        // When files are selected for dragging, ActionMode is started. This obscures the breadcrumb
+        // with an ActionBar. In order to make drag and drop to the breadcrumb possible, we first
+        // end ActionMode so the breadcrumb is visible to the user.
+        if (mActionMode != null) {
+            mActionMode.finish();
+        }
+    }
+
+    void dragStopped(boolean result) {
+        if (result) {
+            mSelectionMgr.clearSelection();
+        }
     }
 
     @Override
@@ -1300,10 +1299,6 @@
         activity.setRootsDrawerOpen(false);
     }
 
-    private void deleteDragClipFile() {
-        mClipper.deleteDragClip();
-    }
-
     boolean handleDropEvent(View v, DragEvent event) {
         BaseActivity activity = (BaseActivity) getActivity();
         activity.setRootsDrawerOpen(false);
@@ -1332,7 +1327,7 @@
                 src == null ? Metrics.USER_ACTION_DRAG_N_DROP_MULTI_WINDOW
                         : Metrics.USER_ACTION_DRAG_N_DROP);
 
-        mClipper.copyFromClipData(dst, getDisplayState().stack, clipData, mFileOpCallback);
+        mClipper.copyFromClipData(dst, getDisplayState().stack, clipData, activity.fileOpCallback);
         return true;
     }
 
@@ -1366,19 +1361,7 @@
         }
     }
 
-    /**
-     * Gets the model ID for a given motion event (using the event position)
-     */
-    private String getModelId(MotionInputEvent e) {
-        RecyclerView.ViewHolder vh = getTarget(e);
-        if (vh instanceof DocumentHolder) {
-            return ((DocumentHolder) vh).modelId;
-        } else {
-            return null;
-        }
-    }
-
-    private @Nullable DocumentHolder getTarget(MotionInputEvent e) {
+    private @Nullable DocumentHolder getTarget(InputEvent e) {
         View childView = mRecView.findChildViewUnder(e.getX(), e.getY());
         if (childView != null) {
             return (DocumentHolder) mRecView.getChildViewHolder(childView);
@@ -1426,7 +1409,7 @@
 
     @Override
     public boolean isSelected(String modelId) {
-        return mSelectionManager.getSelection().contains(modelId);
+        return mSelectionMgr.getSelection().contains(modelId);
     }
 
     private final class ModelUpdateListener implements Model.UpdateListener {
@@ -1483,7 +1466,7 @@
 
     private DocumentInfo getSingleSelectedDocument(Selection selection) {
         assert (selection.size() == 1);
-        final List<DocumentInfo> docs = mModel.getDocuments(mSelectionManager.getSelection());
+        final List<DocumentInfo> docs = mModel.getDocuments(mSelectionMgr.getSelection());
         assert (docs.size() == 1);
         return docs.get(0);
     }
@@ -1492,7 +1475,7 @@
             new DragStartHelper.OnDragStartListener() {
                 @Override
                 public boolean onDragStart(View v, DragStartHelper helper) {
-                    Selection selection = mSelectionManager.getSelection();
+                    Selection selection = mSelectionMgr.getSelection();
 
                     if (v == null) {
                         Log.d(TAG, "Ignoring drag event, null view");
@@ -1508,7 +1491,7 @@
                     // the current code layout and framework assumptions don't support
                     // this. So for now, we could end up doing a bunch of i/o on main thread.
                     v.startDragAndDrop(
-                            mClipper.getClipDataForDrag(
+                            mClipper.getClipDataForDocuments(
                                     mModel::getItemUri,
                                     selection,
                                     FileOperationService.OPERATION_COPY),
@@ -1535,6 +1518,10 @@
         }
     };
 
+    private boolean canSelect(DocumentDetails doc) {
+        return canSelect(doc.getModelId());
+    }
+
     private boolean canSelect(String modelId) {
 
         // TODO: Combine this method with onBeforeItemStateChange, as both of them are almost
@@ -1621,6 +1608,11 @@
     }
 
     @Override
+    public void onRefresh() {
+        getLoaderManager().restartLoader(LOADER_ID, null, this);
+    }
+
+    @Override
     public Loader<DirectoryResult> onCreateLoader(int id, Bundle args) {
         Context context = getActivity();
         State state = getDisplayState();
@@ -1665,7 +1657,7 @@
         updateLayout(state.derivedMode);
 
         if (mRestoredSelection != null) {
-            mSelectionManager.restoreSelection(mRestoredSelection);
+            mSelectionMgr.restoreSelection(mRestoredSelection);
             // Note, we'll take care of cleaning up retained selection
             // in the selection handler where we already have some
             // specialized code to handle when selection was restored.
@@ -1686,10 +1678,13 @@
 
         mTuner.onModelLoaded(mModel, mType, mSearchMode);
 
+        mRefreshLayout.setRefreshing(false);
     }
 
     @Override
     public void onLoaderReset(Loader<DirectoryResult> loader) {
         mModel.update(null);
+
+        mRefreshLayout.setRefreshing(false);
     }
   }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java
index 2288fe74..c2b0bf2 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java
@@ -24,28 +24,31 @@
 import android.support.v7.widget.RecyclerView;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
-import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.android.documentsui.Events;
+import com.android.documentsui.Events.InputEvent;
 import com.android.documentsui.R;
 import com.android.documentsui.State;
+import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 
 public abstract class DocumentHolder
         extends RecyclerView.ViewHolder
-        implements View.OnKeyListener {
+        implements View.OnKeyListener,
+        DocumentDetails {
 
     static final float DISABLED_ALPHA = 0.3f;
 
+    @Deprecated  // Public access is deprecated, use #getModelId.
     public @Nullable String modelId;
 
     final Context mContext;
     final @ColorInt int mDefaultBgColor;
     final @ColorInt int mSelectedBgColor;
 
-    DocumentHolder.EventListener mEventListener;
-    private View.OnKeyListener mKeyListener;
+    // See #addKeyEventListener for details on the need for this field.
+    KeyboardEventListener mKeyEventListener;
+
     private View mSelectionHotspot;
 
 
@@ -74,6 +77,11 @@
      */
     public abstract void bind(Cursor cursor, String modelId, State state);
 
+    @Override
+    public String getModelId() {
+        return modelId;
+    }
+
     /**
      * Makes the associated item view appear selected. Note that this merely affects the appearance
      * of the view, it doesn't actually select the item.
@@ -107,54 +115,36 @@
 
     @Override
     public boolean onKey(View v, int keyCode, KeyEvent event) {
-        // Event listener should always be set.
-        assert(mEventListener != null);
-
-        return mEventListener.onKey(this,  keyCode,  event);
+        assert(mKeyEventListener != null);
+        return mKeyEventListener.onKey(this,  keyCode,  event);
     }
 
-    public void addEventListener(DocumentHolder.EventListener listener) {
-        // Just handle one for now; switch to a list if necessary.
-        assert(mEventListener == null);
-        mEventListener = listener;
+    /**
+     * Installs a delegate to receive keyboard input events. This arrangement is necessitated
+     * by the fact that a single listener cannot listen to all keyboard events
+     * on RecyclerView (our parent view). Not sure why this is, but have been
+     * assured it is the case.
+     *
+     * <p>Ideally we'd not involve DocumentHolder in propagation of events like this.
+     */
+    public void addKeyEventListener(KeyboardEventListener listener) {
+        assert(mKeyEventListener == null);
+        mKeyEventListener = listener;
     }
 
-    public void addOnKeyListener(View.OnKeyListener listener) {
-        // Just handle one for now; switch to a list if necessary.
-        assert(mKeyListener == null);
-        mKeyListener = listener;
+    @Override
+    public boolean isInSelectionHotspot(InputEvent event) {
+        // Do everything in global coordinates - it makes things simpler.
+        int[] coords = new int[2];
+        mSelectionHotspot.getLocationOnScreen(coords);
+        Rect rect = new Rect(coords[0], coords[1], coords[0] + mSelectionHotspot.getWidth(),
+                coords[1] + mSelectionHotspot.getHeight());
+
+        // If the tap occurred within the icon rect, consider it a selection.
+        return rect.contains((int) event.getRawX(), (int) event.getRawY());
     }
 
-    public boolean onSingleTapUp(MotionEvent event) {
-        if (Events.isMouseEvent(event)) {
-            // Mouse clicks select.
-            // TODO:  && input.isPrimaryButtonPressed(), but it is returning false.
-            if (mEventListener != null) {
-                return mEventListener.onSelect(this);
-            }
-        } else if (Events.isTouchEvent(event)) {
-            // Touch events select if they occur in the selection hotspot, otherwise they activate.
-            if (mEventListener == null) {
-                return false;
-            }
-
-            // Do everything in global coordinates - it makes things simpler.
-            int[] coords = new int[2];
-            mSelectionHotspot.getLocationOnScreen(coords);
-            Rect rect = new Rect(coords[0], coords[1], coords[0] + mSelectionHotspot.getWidth(),
-                    coords[1] + mSelectionHotspot.getHeight());
-
-            // If the tap occurred within the icon rect, consider it a selection.
-            if (rect.contains((int) event.getRawX(), (int) event.getRawY())) {
-                return mEventListener.onSelect(this);
-            } else {
-                return mEventListener.onActivate(this);
-            }
-        }
-        return false;
-    }
-
-    static void setEnabledRecursive(View itemView, boolean enabled) {
+        static void setEnabledRecursive(View itemView, boolean enabled) {
         if (itemView == null) return;
         if (itemView.isEnabled() == enabled) return;
         itemView.setEnabled(enabled);
@@ -174,23 +164,9 @@
 
     /**
      * Implement this in order to be able to respond to events coming from DocumentHolders.
+     * TODO: Make this bubble up logic events rather than having imperative commands.
      */
-    interface EventListener {
-        /**
-         * Handles activation events on the document holder.
-         *
-         * @param doc The target DocumentHolder
-         * @return Whether the event was handled.
-         */
-        public boolean onActivate(DocumentHolder doc);
-
-        /**
-         * Handles selection events on the document holder.
-         *
-         * @param doc The target DocumentHolder
-         * @return Whether the event was handled.
-         */
-        public boolean onSelect(DocumentHolder doc);
+    interface KeyboardEventListener {
 
         /**
          * Handles key events on the document holder.
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusHandler.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusHandler.java
new file mode 100644
index 0000000..ba26d65
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusHandler.java
@@ -0,0 +1,51 @@
+/*
+ * 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.documentsui.dirlist;
+
+import android.view.KeyEvent;
+import android.view.View;
+
+/**
+ * A class that handles navigation and focus within the DirectoryFragment.
+ */
+interface FocusHandler extends View.OnFocusChangeListener {
+
+    /**
+     * Handles navigation (setting focus, adjusting selection if needed) arising from incoming key
+     * events.
+     *
+     * @param doc The DocumentHolder receiving the key event.
+     * @param keyCode
+     * @param event
+     * @return Whether the event was handled.
+     */
+    boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event);
+
+    @Override
+    void onFocusChange(View v, boolean hasFocus);
+
+    /**
+     * Requests focus on the item that last had focus. Scrolls to that item if necessary.
+     */
+    void restoreLastFocus();
+
+    /**
+     * @return The adapter position of the last focused item.
+     */
+    int getFocusPosition();
+
+}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java
index f274df3..1be2f65 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java
@@ -49,7 +49,7 @@
 /**
  * A class that handles navigation and focus within the DirectoryFragment.
  */
-class FocusManager implements View.OnFocusChangeListener {
+final class FocusManager implements FocusHandler {
     private static final String TAG = "FocusManager";
 
     private RecyclerView mView;
@@ -70,15 +70,7 @@
         mSearchHelper = new TitleSearchHelper(context);
     }
 
-    /**
-     * Handles navigation (setting focus, adjusting selection if needed) arising from incoming key
-     * events.
-     *
-     * @param doc The DocumentHolder receiving the key event.
-     * @param keyCode
-     * @param event
-     * @return Whether the event was handled.
-     */
+    @Override
     public boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event) {
         // Search helper gets first crack, for doing type-to-focus.
         if (mSearchHelper.handleKey(doc, keyCode, event)) {
@@ -116,9 +108,7 @@
         }
     }
 
-    /**
-     * Requests focus on the item that last had focus. Scrolls to that item if necessary.
-     */
+    @Override
     public void restoreLastFocus() {
         if (mAdapter.getItemCount() == 0) {
             // Nothing to focus.
@@ -134,9 +124,7 @@
         }
     }
 
-    /**
-     * @return The adapter position of the last focused item.
-     */
+    @Override
     public int getFocusPosition() {
         return mLastFocusPosition;
     }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/GestureListener.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/GestureListener.java
deleted file mode 100644
index 1af26d0..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/GestureListener.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.documentsui.dirlist;
-
-import android.support.v7.widget.RecyclerView;
-import android.view.GestureDetector;
-import android.view.MotionEvent;
-
-import com.android.documentsui.Events;
-import com.android.documentsui.Events.MotionInputEvent;
-
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-/**
- * The gesture listener for items in the directly list, interprets gestures, and sends the
- * events to the target DocumentHolder, whence they are routed to the appropriate listener.
- */
-final class GestureListener extends GestureDetector.SimpleOnGestureListener {
-    // From the RecyclerView, we get two events sent to
-    // ListeningGestureDetector#onInterceptTouchEvent on a mouse click; we first get an
-    // ACTION_DOWN Event for clicking on the mouse, and then an ACTION_UP event from releasing
-    // the mouse click. ACTION_UP event doesn't have information regarding the button (primary
-    // vs. secondary), so we have to save that somewhere first from ACTION_DOWN, and then reuse
-    // it later. The ACTION_DOWN event doesn't get forwarded to GestureListener, so we have open
-    // up a public set method to set it.
-    private int mLastButtonState = -1;
-    private MultiSelectManager mSelectionMgr;
-    private RecyclerView mRecView;
-    private Function<MotionInputEvent, DocumentHolder> mDocFinder;
-    private Predicate<MotionInputEvent> mDoubleTapHandler;
-    private Predicate<MotionInputEvent> mRightClickHandler;
-
-    public GestureListener(
-            MultiSelectManager selectionMgr,
-            RecyclerView recView,
-            Function<MotionInputEvent, DocumentHolder> docFinder,
-            Predicate<MotionInputEvent> doubleTapHandler,
-            Predicate<MotionInputEvent> rightClickHandler) {
-        mSelectionMgr = selectionMgr;
-        mRecView = recView;
-        mDocFinder = docFinder;
-        mDoubleTapHandler = doubleTapHandler;
-        mRightClickHandler = rightClickHandler;
-    }
-
-    public void setLastButtonState(int state) {
-        mLastButtonState = state;
-    }
-
-    @Override
-    public boolean onSingleTapUp(MotionEvent e) {
-        // Single tap logic:
-        // We first see if it's a mouse event, and if it was right click by checking on
-        // @{code ListeningGestureDetector#mLastButtonState}
-        // If the selection manager is active, it gets first whack at handling tap
-        // events. Otherwise, tap events are routed to the target DocumentHolder.
-        if (Events.isMouseEvent(e) && mLastButtonState == MotionEvent.BUTTON_SECONDARY) {
-            mLastButtonState = -1;
-            return onRightClick(e);
-        }
-
-        try (MotionInputEvent event = MotionInputEvent.obtain(e, mRecView)) {
-            boolean handled = mSelectionMgr.onSingleTapUp(event);
-
-            if (handled) {
-                return handled;
-            }
-
-            // Give the DocumentHolder a crack at the event.
-            DocumentHolder holder = mDocFinder.apply(event);
-            if (holder != null) {
-                handled = holder.onSingleTapUp(e);
-            }
-
-            return handled;
-        }
-    }
-
-    @Override
-    public void onLongPress(MotionEvent e) {
-        // Long-press events get routed directly to the selection manager. They can be
-        // changed to route through the DocumentHolder if necessary.
-        try (MotionInputEvent event = MotionInputEvent.obtain(e, mRecView)) {
-            mSelectionMgr.onLongPress(event);
-        }
-    }
-
-    @Override
-    public boolean onDoubleTap(MotionEvent e) {
-        // Double-tap events are handled directly by the DirectoryFragment. They can be changed
-        // to route through the DocumentHolder if necessary.
-
-        try (MotionInputEvent event = MotionInputEvent.obtain(e, mRecView)) {
-            return mDoubleTapHandler.test(event);
-        }
-    }
-
-    public boolean onRightClick(MotionEvent e) {
-        try (MotionInputEvent event = MotionInputEvent.obtain(e, mRecView)) {
-            return mRightClickHandler.test(event);
-        }
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ItemEventListener.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ItemEventListener.java
deleted file mode 100644
index cffba8d..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ItemEventListener.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.documentsui.dirlist;
-
-import android.view.KeyEvent;
-
-import com.android.documentsui.Events;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-
-import java.util.function.Consumer;
-import java.util.function.Predicate;
-
-/**
- * Handles click/tap/key events on individual DocumentHolders.
- */
-class ItemEventListener implements DocumentHolder.EventListener {
-    private MultiSelectManager mSelectionManager;
-    private FocusManager mFocusManager;
-
-    private Consumer<String> mViewItemCallback;
-    private Consumer<Selection> mDeleteDocumentsCallback;
-    private Predicate<String> mCanSelectPredicate;
-
-    public ItemEventListener(
-            MultiSelectManager selectionManager,
-            FocusManager focusManager,
-            Consumer<String> viewItemCallback,
-            Consumer<Selection> deleteDocumentsCallback,
-            Predicate<String> canSelectPredicate) {
-
-        mSelectionManager = selectionManager;
-        mFocusManager = focusManager;
-        mViewItemCallback = viewItemCallback;
-        mDeleteDocumentsCallback = deleteDocumentsCallback;
-        mCanSelectPredicate = canSelectPredicate;
-    }
-
-    @Override
-    public boolean onActivate(DocumentHolder doc) {
-        // Toggle selection if we're in selection mode, othewise, view item.
-        if (mSelectionManager.hasSelection()) {
-            mSelectionManager.toggleSelection(doc.modelId);
-        } else {
-            mViewItemCallback.accept(doc.modelId);
-        }
-        return true;
-    }
-
-    @Override
-    public boolean onSelect(DocumentHolder doc) {
-        mSelectionManager.toggleSelection(doc.modelId);
-        mSelectionManager.setSelectionRangeBegin(doc.getAdapterPosition());
-        return true;
-    }
-
-    @Override
-    public boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-        // Only handle key-down events. This is simpler, consistent with most other UIs, and
-        // enables the handling of repeated key events from holding down a key.
-        if (event.getAction() != KeyEvent.ACTION_DOWN) {
-            return false;
-        }
-
-        // Ignore tab key events.  Those should be handled by the top-level key handler.
-        if (keyCode == KeyEvent.KEYCODE_TAB) {
-            return false;
-        }
-
-        if (mFocusManager.handleKey(doc, keyCode, event)) {
-            // Handle range selection adjustments. Extending the selection will adjust the
-            // bounds of the in-progress range selection. Each time an unshifted navigation
-            // event is received, the range selection is restarted.
-            if (shouldExtendSelection(doc, event)) {
-                if (!mSelectionManager.isRangeSelectionActive()) {
-                    // Start a range selection if one isn't active
-                    mSelectionManager.startRangeSelection(doc.getAdapterPosition());
-                }
-                mSelectionManager.snapRangeSelection(mFocusManager.getFocusPosition());
-            } else {
-                mSelectionManager.endRangeSelection();
-            }
-            return true;
-        }
-
-        // Handle enter key events
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_ENTER:
-                if (event.isShiftPressed()) {
-                    return onSelect(doc);
-                }
-                // For non-shifted enter keypresses, fall through.
-            case KeyEvent.KEYCODE_DPAD_CENTER:
-            case KeyEvent.KEYCODE_BUTTON_A:
-                return onActivate(doc);
-            case KeyEvent.KEYCODE_FORWARD_DEL:
-                // This has to be handled here instead of in a keyboard shortcut, because
-                // keyboard shortcuts all have to be modified with the 'Ctrl' key.
-                if (mSelectionManager.hasSelection()) {
-                    Selection selection = mSelectionManager.getSelection(new Selection());
-                    mDeleteDocumentsCallback.accept(selection);
-                }
-                // Always handle the key, even if there was nothing to delete. This is a
-                // precaution to prevent other handlers from potentially picking up the event
-                // and triggering extra behaviours.
-                return true;
-        }
-
-        return false;
-    }
-
-    private boolean shouldExtendSelection(DocumentHolder doc, KeyEvent event) {
-        if (!Events.isNavigationKeyCode(event.getKeyCode()) || !event.isShiftPressed()) {
-            return false;
-        }
-
-        return mCanSelectPredicate.test(doc.modelId);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
index 50e595d..85ff6ed 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
@@ -34,20 +34,21 @@
         implements OnItemTouchListener, OnTouchListener {
 
     private DragStartHelper mDragHelper;
-    private GestureListener mGestureListener;
+    private UserInputHandler mInputHandler;
 
     public ListeningGestureDetector(
-            Context context, DragStartHelper dragHelper, GestureListener listener) {
-        super(context, listener);
+            Context context, DragStartHelper dragHelper, UserInputHandler handler) {
+        super(context, handler);
         mDragHelper = dragHelper;
-        mGestureListener = listener;
-        setOnDoubleTapListener(listener);
+        mInputHandler = handler;
+        setOnDoubleTapListener(handler);
     }
 
     @Override
     public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+        // TODO: If possible, move this into UserInputHandler.
         if (e.getAction() == MotionEvent.ACTION_DOWN && Events.isMouseEvent(e)) {
-            mGestureListener.setLastButtonState(e.getButtonState());
+            mInputHandler.setLastButtonState(e.getButtonState());
         }
 
         // Detect drag events. When a drag is detected, intercept the rest of the gesture.
@@ -78,7 +79,7 @@
     @Override
     public boolean onTouch(View v, MotionEvent event) {
         if (event.getButtonState() == MotionEvent.BUTTON_SECONDARY) {
-            return mGestureListener.onRightClick(event);
+            return mInputHandler.onSingleRightClickUp(event);
         }
         return false;
     }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
index e0fc541..9c0b967 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
@@ -21,13 +21,10 @@
 import android.annotation.IntDef;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.widget.RecyclerView;
 import android.util.Log;
 
-import com.android.documentsui.Events.InputEvent;
-
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -39,6 +36,8 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.annotation.Nullable;
+
 /**
  * MultiSelectManager provides support traditional multi-item selection support to RecyclerView.
  * Additionally it can be configured to restrict selection to a single element, @see
@@ -62,7 +61,7 @@
     private final DocumentsAdapter mAdapter;
     private final List<MultiSelectManager.Callback> mCallbacks = new ArrayList<>(1);
 
-    private Range mRanger;
+    private @Nullable Range mRanger;
     private boolean mSingleSelect;
 
     public MultiSelectManager(DocumentsAdapter adapter, @SelectionMode int mode) {
@@ -158,6 +157,11 @@
         return dest;
     }
 
+    public void replaceSelection(Iterable<String> ids) {
+        clearSelection();
+        setItemsSelected(ids, true);
+    }
+
     /**
      * Returns an unordered array of selected positions, including any
      * provisional selection currently in effect.
@@ -218,70 +222,13 @@
         }
     }
 
-    @VisibleForTesting
-    void onLongPress(InputEvent input) {
-        if (DEBUG) Log.d(TAG, "Handling long press event.");
+    void snapSelection(int position) {
+        mRanger.snapSelection(position);
 
-        if (!input.isOverItem()) {
-            if (DEBUG) Log.i(TAG, "Cannot handle tap. No adapter position available.");
-        }
-
-        handleAdapterEvent(input);
-    }
-
-    boolean onSingleTapUp(InputEvent input) {
-        if (DEBUG) Log.d(TAG, "Processing tap event.");
-        if (!hasSelection()) {
-            // No selection active - do nothing.
-            return false;
-        }
-
-        if (!input.isOverItem()) {
-            if (DEBUG) Log.d(TAG, "Activity has no position. Canceling selection.");
-            clearSelection();
-            return false;
-        }
-
-        handleAdapterEvent(input);
-        return true;
-    }
-
-    /**
-     * Handles a change caused by a click on the item with the given position. If the Shift key is
-     * held down, this performs a range select; otherwise, it simply toggles the item's selection
-     * state.
-     */
-    private void handleAdapterEvent(InputEvent input) {
-        if (mRanger != null && input.isShiftKeyDown()) {
-            mRanger.snapSelection(input.getItemPosition());
-
-            // We're being lazy here notifying even when something might not have changed.
-            // To make this more correct, we'd need to update the Ranger class to return
-            // information about what has changed.
-            notifySelectionChanged();
-        } else {
-            int position = input.getItemPosition();
-            toggleSelection(position);
-            setSelectionRangeBegin(position);
-        }
-    }
-
-    /**
-     * A convenience method for toggling selection by adapter position.
-     *
-     * @param position Adapter position to toggle.
-     */
-    private void toggleSelection(int position) {
-        // Position may be special "no position" during certain
-        // transitional phases. If so, skip handling of the event.
-        if (position == RecyclerView.NO_POSITION) {
-            if (DEBUG) Log.d(TAG, "Ignoring toggle for element with no position.");
-            return;
-        }
-        String id = mAdapter.getModelId(position);
-        if (id != null) {
-            toggleSelection(id);
-        }
+        // We're being lazy here notifying even when something might not have changed.
+        // To make this more correct, we'd need to update the Ranger class to return
+        // information about what has changed.
+        notifySelectionChanged();
     }
 
     /**
@@ -324,7 +271,9 @@
      * @param pos The new end position for the selection range.
      */
     void snapRangeSelection(int pos) {
-        assert(mRanger != null);
+        if (!isRangeSelectionActive()) {
+            throw new IllegalStateException("Range start point not set.");
+        }
 
         mRanger.snapSelection(pos);
         notifySelectionChanged();
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/TouchSwipeRefreshLayout.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/TouchSwipeRefreshLayout.java
new file mode 100644
index 0000000..42634ba
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/TouchSwipeRefreshLayout.java
@@ -0,0 +1,43 @@
+/*
+ * 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.documentsui.dirlist;
+
+import android.content.Context;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+import com.android.documentsui.Events;
+
+/**
+ * A {@link SwipeRefreshLayout} that only refresh on touch events.
+ */
+public class TouchSwipeRefreshLayout extends SwipeRefreshLayout {
+
+    public TouchSwipeRefreshLayout(Context context) {
+        this(context, null);
+    }
+
+    public TouchSwipeRefreshLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent e) {
+        return Events.isMouseEvent(e) ? false : super.onInterceptTouchEvent(e);
+    }
+}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/UserInputHandler.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/UserInputHandler.java
new file mode 100644
index 0000000..07b0cd8
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/UserInputHandler.java
@@ -0,0 +1,423 @@
+/*
+ * 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.documentsui.dirlist;
+
+import static com.android.documentsui.Shared.DEBUG;
+
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+import android.view.GestureDetector;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+
+import com.android.documentsui.Events;
+import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.dirlist.DocumentHolder.KeyboardEventListener;
+
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+/**
+ * Grand unified-ish gesture/event listener for items in the directory list.
+ */
+public final class UserInputHandler<T extends InputEvent>
+        extends GestureDetector.SimpleOnGestureListener
+        implements KeyboardEventListener {
+
+    private static final String TAG = "UserInputHandler";
+
+    private final MultiSelectManager mSelectionMgr;
+    private final FocusHandler mFocusHandler;
+    private final Function<MotionEvent, T> mEventConverter;
+    private final Function<T, DocumentDetails> mDocFinder;
+    private final Predicate<DocumentDetails> mSelectable;
+    private final EventHandler mRightClickHandler;
+    private final DocumentHandler mActivateHandler;
+    private final DocumentHandler mDeleteHandler;
+    private final TouchInputDelegate mTouchDelegate;
+    private final MouseInputDelegate mMouseDelegate;
+    private final KeyInputHandler mKeyListener;
+
+    public UserInputHandler(
+            MultiSelectManager selectionMgr,
+            FocusHandler focusHandler,
+            Function<MotionEvent, T> eventConverter,
+            Function<T, DocumentDetails> docFinder,
+            Predicate<DocumentDetails> selectable,
+            EventHandler rightClickHandler,
+            DocumentHandler activateHandler,
+            DocumentHandler deleteHandler) {
+
+        mSelectionMgr = selectionMgr;
+        mFocusHandler = focusHandler;
+        mEventConverter = eventConverter;
+        mDocFinder = docFinder;
+        mSelectable = selectable;
+        mRightClickHandler = rightClickHandler;
+        mActivateHandler = activateHandler;
+        mDeleteHandler = deleteHandler;
+
+        mTouchDelegate = new TouchInputDelegate();
+        mMouseDelegate = new MouseInputDelegate();
+        mKeyListener = new KeyInputHandler();
+    }
+
+    @Override
+    public boolean onSingleTapUp(MotionEvent e) {
+        try (T event = mEventConverter.apply(e)) {
+            return onSingleTapUp(event);
+        }
+    }
+
+    @VisibleForTesting
+    boolean onSingleTapUp(T event) {
+        return event.isMouseEvent()
+                ? mMouseDelegate.onSingleTapUp(event)
+                : mTouchDelegate.onSingleTapUp(event);
+    }
+
+    @Override
+    public boolean onSingleTapConfirmed(MotionEvent e) {
+        try (T event = mEventConverter.apply(e)) {
+            return onSingleTapConfirmed(event);
+        }
+    }
+
+    @VisibleForTesting
+    boolean onSingleTapConfirmed(T event) {
+        return event.isMouseEvent()
+                ? mMouseDelegate.onSingleTapConfirmed(event)
+                : mTouchDelegate.onSingleTapConfirmed(event);
+    }
+
+    @Override
+    public boolean onDoubleTap(MotionEvent e) {
+        try (T event = mEventConverter.apply(e)) {
+            return onDoubleTap(event);
+        }
+    }
+
+    @VisibleForTesting
+    boolean onDoubleTap(T event) {
+        return event.isMouseEvent()
+                ? mMouseDelegate.onDoubleTap(event)
+                : mTouchDelegate.onDoubleTap(event);
+    }
+
+    @Override
+    public void onLongPress(MotionEvent e) {
+        try (T event = mEventConverter.apply(e)) {
+            onLongPress(event);
+        }
+    }
+
+    @VisibleForTesting
+    void onLongPress(T event) {
+        if (event.isMouseEvent()) {
+            mMouseDelegate.onLongPress(event);
+        }
+        mTouchDelegate.onLongPress(event);
+    }
+
+    public boolean onSingleRightClickUp(MotionEvent e) {
+        try (T event = mEventConverter.apply(e)) {
+            return mMouseDelegate.onSingleRightClickUp(event);
+        }
+    }
+
+    @Override
+    public boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
+        return mKeyListener.onKey(doc, keyCode, event);
+    }
+
+    // TODO: Isolate this hack...see if we can't get this solved at the platform level.
+    public void setLastButtonState(int state) {
+        mMouseDelegate.setLastButtonState(state);
+    }
+
+    private boolean activateDocument(DocumentDetails doc) {
+        return mActivateHandler.accept(doc);
+    }
+
+    private boolean selectDocument(DocumentDetails doc) {
+        assert(doc != null);
+        mSelectionMgr.toggleSelection(doc.getModelId());
+        mSelectionMgr.setSelectionRangeBegin(doc.getAdapterPosition());
+        return true;
+    }
+
+    boolean isRangeExtension(T event) {
+        return event.isShiftKeyDown() && mSelectionMgr.isRangeSelectionActive();
+    }
+
+    private void extendSelectionRange(T event) {
+        mSelectionMgr.snapSelection(event.getItemPosition());
+    }
+
+    private final class TouchInputDelegate {
+
+        boolean onSingleTapUp(T event) {
+            if (!event.isOverItem()) {
+                if (DEBUG) Log.d(TAG, "Tap on non-item. Clearing selection.");
+                mSelectionMgr.clearSelection();
+                return false;
+            }
+
+            if (mSelectionMgr.hasSelection()) {
+                if (isRangeExtension(event)) {
+                    mSelectionMgr.snapSelection(event.getItemPosition());
+                } else {
+                    selectDocument(mDocFinder.apply(event));
+                }
+                return true;
+            }
+
+            // Give the DocumentHolder a crack at the event.
+            DocumentDetails doc = mDocFinder.apply(event);
+            if (doc != null) {
+                // Touch events select if they occur in the selection hotspot,
+                // otherwise they activate.
+                return doc.isInSelectionHotspot(event)
+                        ? selectDocument(doc)
+                        : activateDocument(doc);
+            }
+
+            return false;
+        }
+
+        boolean onSingleTapConfirmed(T event) {
+            return false;
+        }
+
+        boolean onDoubleTap(T event) {
+            return false;
+        }
+
+        final void onLongPress(T event) {
+            if (!event.isOverItem()) {
+                return;
+            }
+
+            if (isRangeExtension(event)) {
+                extendSelectionRange(event);
+            } else {
+                selectDocument(mDocFinder.apply(event));
+            }
+        }
+    }
+
+    private final class MouseInputDelegate {
+
+        // From the RecyclerView, we get two events sent to
+        // ListeningGestureDetector#onInterceptTouchEvent on a mouse click; we first get an
+        // ACTION_DOWN Event for clicking on the mouse, and then an ACTION_UP event from releasing
+        // the mouse click. ACTION_UP event doesn't have information regarding the button (primary
+        // vs. secondary), so we have to save that somewhere first from ACTION_DOWN, and then reuse
+        // it later. The ACTION_DOWN event doesn't get forwarded to UserInputListener,
+        // so we have open up a public set method to set it.
+        private int mLastButtonState = -1;
+
+        // true when the previous event has consumed a right click motion event
+        private boolean mAteRightClick;
+
+        // The event has been handled in onSingleTapUp
+        private boolean mHandledTapUp;
+
+        boolean onSingleTapUp(T event) {
+            if (eatRightClick()) {
+                return onSingleRightClickUp(event);
+            }
+
+            if (!event.isOverItem()) {
+                mSelectionMgr.clearSelection();
+                return false;
+            }
+
+            if (mSelectionMgr.hasSelection()) {
+                if (isRangeExtension(event)) {
+                    extendSelectionRange(event);
+                } else {
+                    selectDocument(mDocFinder.apply(event));
+                }
+                mHandledTapUp = true;
+                return true;
+            }
+
+            // We'll toggle selection in onSingleTapConfirmed
+            // This avoids flickering on/off action mode when an item is double clicked.
+            if (!mSelectionMgr.hasSelection()) {
+                return false;
+            }
+
+            DocumentDetails doc = mDocFinder.apply(event);
+            if (doc == null) {
+                return false;
+            }
+
+            mHandledTapUp = true;
+            return selectDocument(doc);
+        }
+
+        boolean onSingleTapConfirmed(T event) {
+            if (mAteRightClick) {
+                mAteRightClick = false;
+                return false;
+            }
+            if (mHandledTapUp) {
+                mHandledTapUp = false;
+                return false;
+            }
+
+            if (mSelectionMgr.hasSelection()) {
+                return false;  // should have been handled by onSingleTapUp.
+            }
+
+            DocumentDetails doc = mDocFinder.apply(event);
+            if (doc == null) {
+                return false;
+            }
+
+            return selectDocument(doc);
+        }
+
+        boolean onDoubleTap(T event) {
+            mHandledTapUp = false;
+            DocumentDetails doc = mDocFinder.apply(event);
+            if (doc != null) {
+                return mSelectionMgr.hasSelection()
+                        ? selectDocument(doc)
+                        : activateDocument(doc);
+            }
+            return false;
+        }
+
+        final void onLongPress(T event) {
+            if (!event.isOverItem()) {
+                return;
+            }
+
+            if (isRangeExtension(event)) {
+                extendSelectionRange(event);
+            } else {
+                selectDocument(mDocFinder.apply(event));
+            }
+        }
+
+        private boolean onSingleRightClickUp(T event) {
+            return mRightClickHandler.apply(event);
+        }
+
+        // hack alert from here through end of class.
+        private void setLastButtonState(int state) {
+            mLastButtonState = state;
+        }
+
+        private boolean eatRightClick() {
+            if (mLastButtonState == MotionEvent.BUTTON_SECONDARY) {
+                mLastButtonState = -1;
+                mAteRightClick = true;
+                return true;
+            }
+            return false;
+        }
+    }
+
+    private final class KeyInputHandler {
+        // TODO: Refactor FocusManager to depend only on DocumentDetails so we can eliminate
+        // difficult to test dependency on DocumentHolder.
+
+        boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
+            // Only handle key-down events. This is simpler, consistent with most other UIs, and
+            // enables the handling of repeated key events from holding down a key.
+            if (event.getAction() != KeyEvent.ACTION_DOWN) {
+                return false;
+            }
+
+            // Ignore tab key events.  Those should be handled by the top-level key handler.
+            if (keyCode == KeyEvent.KEYCODE_TAB) {
+                return false;
+            }
+
+            if (mFocusHandler.handleKey(doc, keyCode, event)) {
+                // Handle range selection adjustments. Extending the selection will adjust the
+                // bounds of the in-progress range selection. Each time an unshifted navigation
+                // event is received, the range selection is restarted.
+                if (shouldExtendSelection(doc, event)) {
+                    if (!mSelectionMgr.isRangeSelectionActive()) {
+                        // Start a range selection if one isn't active
+                        mSelectionMgr.startRangeSelection(doc.getAdapterPosition());
+                    }
+                    mSelectionMgr.snapRangeSelection(mFocusHandler.getFocusPosition());
+                } else {
+                    mSelectionMgr.endRangeSelection();
+                }
+                return true;
+            }
+
+            // Handle enter key events
+            switch (keyCode) {
+                case KeyEvent.KEYCODE_ENTER:
+                    if (event.isShiftPressed()) {
+                        selectDocument(doc);
+                    }
+                    // For non-shifted enter keypresses, fall through.
+                case KeyEvent.KEYCODE_DPAD_CENTER:
+                case KeyEvent.KEYCODE_BUTTON_A:
+                    return activateDocument(doc);
+                case KeyEvent.KEYCODE_FORWARD_DEL:
+                    // This has to be handled here instead of in a keyboard shortcut, because
+                    // keyboard shortcuts all have to be modified with the 'Ctrl' key.
+                    if (mSelectionMgr.hasSelection()) {
+                        mDeleteHandler.accept(doc);
+                    }
+                    // Always handle the key, even if there was nothing to delete. This is a
+                    // precaution to prevent other handlers from potentially picking up the event
+                    // and triggering extra behaviors.
+                    return true;
+            }
+
+            return false;
+        }
+
+        private boolean shouldExtendSelection(DocumentDetails doc, KeyEvent event) {
+            if (!Events.isNavigationKeyCode(event.getKeyCode()) || !event.isShiftPressed()) {
+                return false;
+            }
+
+            return mSelectable.test(doc);
+        }
+    }
+
+    /**
+     * Class providing limited access to document view info.
+     */
+    public interface DocumentDetails {
+        String getModelId();
+        int getAdapterPosition();
+        boolean isInSelectionHotspot(InputEvent event);
+    }
+
+    @FunctionalInterface
+    interface EventHandler {
+        boolean apply(InputEvent event);
+    }
+
+    @FunctionalInterface
+    interface DocumentHandler {
+        boolean accept(DocumentDetails doc);
+    }
+}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java
index c4f4dc1..ae7e820 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java
@@ -42,11 +42,20 @@
     public DocumentStack() {};
 
     /**
+     * Creates an instance, and pushes all docs to it in the same order as they're passed as
+     * parameters, i.e. the last document will be at the top of the stack.
+     */
+    public DocumentStack(RootInfo root, DocumentInfo... docs) {
+        for (DocumentInfo doc : docs) {
+            push(doc);
+        }
+
+        this.root = root;
+    }
+
+    /**
      * Makes a new copy, and pushes all docs to the new copy in the same order as they're passed
      * as parameters, i.e. the last document will be at the top of the stack.
-     *
-     * @param src
-     * @param docs
      */
     public DocumentStack(DocumentStack src, DocumentInfo... docs) {
         super(src);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
index 92eea5e..e062dfb 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
@@ -23,6 +23,7 @@
 import static com.android.documentsui.model.DocumentInfo.getCursorString;
 
 import android.annotation.IntDef;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.database.Cursor;
 import android.graphics.drawable.Drawable;
@@ -39,6 +40,7 @@
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -346,6 +348,19 @@
         return IconUtils.applyTintColor(context, R.drawable.ic_eject, R.color.item_eject_icon);
     }
 
+    /**
+     * Gets the {@link DocumentInfo} of the root folder of this root.
+     */
+    public @Nullable DocumentInfo getRootDocumentBlocking(Context context) {
+        try {
+            final Uri uri = DocumentsContract.buildDocumentUri(authority, documentId);
+            return DocumentInfo.fromUri(context.getContentResolver(), uri);
+        } catch (FileNotFoundException e) {
+            Log.w(TAG, "Failed to find root", e);
+            return null;
+        }
+    }
+
     @Override
     public boolean equals(Object o) {
         if (o == null) {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
index 54ccc2a..c8f6a64 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
@@ -55,7 +55,7 @@
 import com.android.documentsui.Metrics;
 import com.android.documentsui.R;
 import com.android.documentsui.RootsCache;
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.model.RootInfo;
@@ -272,7 +272,7 @@
     private void buildDocumentList() throws ResourceException {
         try {
             final ContentResolver resolver = appContext.getContentResolver();
-            final Iterable<Uri> uris = srcs.getDocs(appContext);
+            final Iterable<Uri> uris = srcs.getUris(appContext);
             for (Uri uri : uris) {
                 DocumentInfo doc = DocumentInfo.fromUri(resolver, uri);
                 if (canCopy(doc, stack.root)) {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
index f6202c5..64bc1a7 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
@@ -26,7 +26,7 @@
 import android.net.Uri;
 import android.util.Log;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.Metrics;
 import com.android.documentsui.R;
 import com.android.documentsui.model.DocumentInfo;
@@ -97,7 +97,7 @@
         try {
             final List<DocumentInfo> srcs = new ArrayList<>(this.srcs.getItemCount());
 
-            final Iterable<Uri> uris = this.srcs.getDocs(appContext);
+            final Iterable<Uri> uris = this.srcs.getUris(appContext);
 
             final ContentResolver resolver = appContext.getContentResolver();
             final DocumentInfo srcParent = DocumentInfo.fromUri(resolver, mSrcParent);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
index ce63864..43c3bd7 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
@@ -27,7 +27,7 @@
 import android.os.Parcelable;
 import android.support.annotation.VisibleForTesting;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.services.FileOperationService.OpType;
 
@@ -71,8 +71,8 @@
         mDestination = destination;
     }
 
-    public void dispose(Context context) {
-        mSrcs.dispose(context);
+    public void dispose() {
+        mSrcs.dispose();
     }
 
     abstract Job createJob(Context service, Job.Listener listener, String id);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/Job.java b/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
index 29e02101..14ae66e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
@@ -40,7 +40,7 @@
 import android.provider.DocumentsContract;
 import android.util.Log;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.FilesActivity;
 import com.android.documentsui.Metrics;
 import com.android.documentsui.OperationDialogFragment;
@@ -151,7 +151,7 @@
 
             // NOTE: If this details is a JumboClipDetails, and it's still referred in primary clip
             // at this point, user won't be able to paste it to anywhere else because the underlying
-            srcs.dispose(appContext);
+            srcs.dispose();
         }
     }
 
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
index beae9a8..ab0fae1 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
@@ -30,7 +30,7 @@
 import android.util.Log;
 
 import com.android.documentsui.R;
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/ClipStorageTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/ClipStorageTest.java
deleted file mode 100644
index 851000b..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/ClipStorageTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.documentsui;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.android.documentsui.ClipStorage.Reader;
-import com.android.documentsui.dirlist.TestModel;
-import com.android.documentsui.testing.TestScheduledExecutorService;
-
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.junit.runner.RunWith;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class ClipStorageTest {
-    private static final List<Uri> TEST_URIS = createList(
-            "content://ham/fancy",
-            "content://poodle/monkey/giraffe");
-
-    @Rule
-    public TemporaryFolder folder = new TemporaryFolder();
-
-    private TestScheduledExecutorService mExecutor;
-
-    private ClipStorage mStorage;
-    private TestModel mModel;
-
-    private long mTag;
-
-    @Before
-    public void setUp() {
-        File clipDir = ClipStorage.prepareStorage(folder.getRoot());
-        mStorage = new ClipStorage(clipDir);
-
-        mExecutor = new TestScheduledExecutorService();
-        AsyncTask.setDefaultExecutor(mExecutor);
-
-        mTag = mStorage.createTag();
-    }
-
-    @AfterClass
-    public static void tearDownOnce() {
-        AsyncTask.setDefaultExecutor(AsyncTask.SERIAL_EXECUTOR);
-    }
-
-    @Test
-    public void testWrite() throws Exception {
-        writeAll(mTag, TEST_URIS);
-    }
-
-    @Test
-    public void testRead() throws Exception {
-        writeAll(mTag, TEST_URIS);
-        List<Uri> uris = new ArrayList<>();
-        try(Reader provider = mStorage.createReader(mTag)) {
-            for (Uri uri : provider) {
-                uris.add(uri);
-            }
-        }
-        assertEquals(TEST_URIS, uris);
-    }
-
-    @Test
-    public void testDelete() throws Exception {
-        writeAll(mTag, TEST_URIS);
-        mStorage.delete(mTag);
-        try {
-            mStorage.createReader(mTag);
-        } catch (IOException expected) {}
-    }
-
-    @Test
-    public void testPrepareStorage_CreatesDir() throws Exception {
-        File clipDir = ClipStorage.prepareStorage(folder.getRoot());
-        assertTrue(clipDir.exists());
-        assertTrue(clipDir.isDirectory());
-        assertFalse(clipDir.equals(folder.getRoot()));
-    }
-
-    private void writeAll(long tag, List<Uri> uris) {
-        new ClipStorage.PersistTask(mStorage, uris, tag).execute();
-        mExecutor.runAll();
-    }
-
-    private static List<Uri> createList(String... values) {
-        List<Uri> uris = new ArrayList<>(values.length);
-        for (int i = 0; i < values.length; i++) {
-            uris.add(i, Uri.parse(values[i]));
-        }
-        return uris;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
index b23dd7a..ec03173 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
@@ -222,11 +222,8 @@
         DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
         mgr.updateRootContextMenu(testMenu, testRootInfo);
 
-        eject.assertVisible();
-        eject.assertDisabled();
-
-        settings.assertVisible();
-        settings.assertDisabled();
+        eject.assertInvisible();
+        settings.assertInvisible();
     }
 
     @Test
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java
index 76ca2f3..3644abc 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java
@@ -266,11 +266,21 @@
     }
 
     @Test
-    public void testRootContextMenu_canEject() {
+    public void testRootContextMenu_eject() {
         testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
         FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
         mgr.updateRootContextMenu(testMenu, testRootInfo);
 
         eject.assertEnabled();
     }
+
+    @Test
+    public void testRootContextMenu_ejectInProcess() {
+        testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
+        testRootInfo.ejecting = true;
+        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+        mgr.updateRootContextMenu(testMenu, testRootInfo);
+
+        eject.assertDisabled();
+    }
 }
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java b/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java
index a215488..e6936d6 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java
@@ -12,6 +12,7 @@
     public boolean actionDown;
     public boolean actionUp;
     public Point location;
+    public Point rawLocation;
     public int position = Integer.MIN_VALUE;
 
     public TestInputEvent() {}
@@ -66,6 +67,16 @@
     }
 
     @Override
+    public float getRawX() {
+        return rawLocation.x;
+    }
+
+    @Override
+    public float getRawY() {
+        return rawLocation.y;
+    }
+
+    @Override
     public boolean isOverItem() {
         return position != Integer.MIN_VALUE && position != RecyclerView.NO_POSITION;
     }
@@ -75,6 +86,9 @@
         return position;
     }
 
+    @Override
+    public void close() {}
+
     public static TestInputEvent tap(int position) {
         return new TestInputEvent(position);
     }
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
new file mode 100644
index 0000000..73366f8
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
@@ -0,0 +1,159 @@
+/*
+ * 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.documentsui.clipping;
+
+import static com.android.documentsui.clipping.ClipStorage.NUM_OF_SLOTS;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.content.SharedPreferences;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.documentsui.testing.TestScheduledExecutorService;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class ClipStorageTest {
+    private static final String PREF_NAME = "pref";
+    private static final List<Uri> TEST_URIS = createList(
+            "content://ham/fancy",
+            "content://poodle/monkey/giraffe");
+
+    @Rule
+    public TemporaryFolder folder = new TemporaryFolder();
+
+    private SharedPreferences mPref;
+    private TestScheduledExecutorService mExecutor;
+    private ClipStorage mStorage;
+
+    private int mTag;
+
+    @Before
+    public void setUp() {
+        mPref = InstrumentationRegistry.getContext().getSharedPreferences(PREF_NAME, 0);
+        File clipDir = ClipStorage.prepareStorage(folder.getRoot());
+        mStorage = new ClipStorage(clipDir, mPref);
+
+        mExecutor = new TestScheduledExecutorService();
+        AsyncTask.setDefaultExecutor(mExecutor);
+
+        mTag = mStorage.claimStorageSlot();
+    }
+
+    @AfterClass
+    public static void tearDownOnce() {
+        AsyncTask.setDefaultExecutor(AsyncTask.SERIAL_EXECUTOR);
+    }
+
+    @Test
+    public void testWrite() throws Exception {
+        writeAll(mTag, TEST_URIS);
+    }
+
+    @Test
+    public void testRead() throws Exception {
+        writeAll(mTag, TEST_URIS);
+        List<Uri> uris = new ArrayList<>();
+
+        File copy = mStorage.getFile(mTag);
+        try(ClipStorageReader provider = mStorage.createReader(copy)) {
+            for (Uri uri : provider) {
+                uris.add(uri);
+            }
+        }
+        assertEquals(TEST_URIS, uris);
+    }
+
+    @Test
+    public void testClaimStorageSlot_NoAvailableSlot() throws Exception {
+        int firstTag = mStorage.claimStorageSlot();
+        writeAll(firstTag, TEST_URIS);
+        mStorage.getFile(firstTag);
+        for (int i = 0; i < NUM_OF_SLOTS - 1; ++i) {
+            int tag = mStorage.claimStorageSlot();
+            writeAll(tag, TEST_URIS);
+            mStorage.getFile(tag);
+        }
+
+        assertEquals(firstTag, mStorage.claimStorageSlot());
+    }
+
+    @Test
+    public void testReadConcurrently() throws Exception {
+        writeAll(mTag, TEST_URIS);
+        List<Uri> uris = new ArrayList<>();
+        List<Uri> uris2 = new ArrayList<>();
+
+        File copy = mStorage.getFile(mTag);
+        File copy2 = mStorage.getFile(mTag);
+        try(ClipStorageReader reader = mStorage.createReader(copy)) {
+            try(ClipStorageReader reader2 = mStorage.createReader(copy2)){
+                Iterator<Uri> iter = reader.iterator();
+                Iterator<Uri> iter2 = reader2.iterator();
+
+                while (iter.hasNext() && iter2.hasNext()) {
+                    uris.add(iter.next());
+                    uris2.add(iter2.next());
+                }
+
+                assertFalse(iter.hasNext());
+                assertFalse(iter2.hasNext());
+            }
+        }
+        assertEquals(TEST_URIS, uris);
+        assertEquals(TEST_URIS, uris2);
+    }
+
+    @Test
+    public void testPrepareStorage_CreatesDir() throws Exception {
+        File clipDir = ClipStorage.prepareStorage(folder.getRoot());
+        assertTrue(clipDir.exists());
+        assertTrue(clipDir.isDirectory());
+        assertFalse(clipDir.equals(folder.getRoot()));
+    }
+
+    private void writeAll(int tag, List<Uri> uris) {
+        new ClipStorage.PersistTask(mStorage, uris, tag).execute();
+        mExecutor.runAll();
+    }
+
+    private static List<Uri> createList(String... values) {
+        List<Uri> uris = new ArrayList<>(values.length);
+        for (int i = 0; i < values.length; i++) {
+            uris.add(i, Uri.parse(values[i]));
+        }
+        return uris;
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/UrisSupplierTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
similarity index 81%
rename from packages/DocumentsUI/tests/src/com/android/documentsui/UrisSupplierTest.java
rename to packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
index 719f0e2..9815d0e 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/UrisSupplierTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
@@ -14,17 +14,20 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 
+import android.content.SharedPreferences;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.provider.DocumentsContract;
+import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.MediumTest;
 import android.support.test.runner.AndroidJUnit4;
 
+import com.android.documentsui.Shared;
 import com.android.documentsui.testing.TestScheduledExecutorService;
 
 import org.junit.AfterClass;
@@ -42,6 +45,7 @@
 @MediumTest
 public class UrisSupplierTest {
 
+    private static final String PREF_NAME = "pref";
     private static final String AUTHORITY = "foo";
     private static final List<Uri> SHORT_URI_LIST = createList(3);
     private static final List<Uri> LONG_URI_LIST = createList(Shared.MAX_DOCS_IN_INTENT + 5);
@@ -49,6 +53,7 @@
     @Rule
     public TemporaryFolder folder = new TemporaryFolder();
 
+    private SharedPreferences mPref;
     private TestScheduledExecutorService mExecutor;
     private ClipStorage mStorage;
 
@@ -57,7 +62,8 @@
         mExecutor = new TestScheduledExecutorService();
         AsyncTask.setDefaultExecutor(mExecutor);
 
-        mStorage = new ClipStorage(folder.getRoot());
+        mPref = InstrumentationRegistry.getContext().getSharedPreferences(PREF_NAME, 0);
+        mStorage = new ClipStorage(folder.getRoot(), mPref);
     }
 
     @AfterClass
@@ -66,14 +72,14 @@
     }
 
     @Test
-    public void testItemCountEquals_shortList() {
+    public void testItemCountEquals_shortList() throws Exception {
         UrisSupplier uris = createWithShortList();
 
         assertEquals(SHORT_URI_LIST.size(), uris.getItemCount());
     }
 
     @Test
-    public void testItemCountEquals_longList() {
+    public void testItemCountEquals_longList() throws Exception {
         UrisSupplier uris = createWithLongList();
 
         assertEquals(LONG_URI_LIST.size(), uris.getItemCount());
@@ -83,35 +89,35 @@
     public void testGetDocsEquals_shortList() throws Exception {
         UrisSupplier uris = createWithShortList();
 
-        assertIterableEquals(SHORT_URI_LIST, uris.getDocs(mStorage));
+        assertIterableEquals(SHORT_URI_LIST, uris.getUris(mStorage));
     }
 
     @Test
     public void testGetDocsEquals_longList() throws Exception {
         UrisSupplier uris = createWithLongList();
 
-        assertIterableEquals(LONG_URI_LIST, uris.getDocs(mStorage));
+        assertIterableEquals(LONG_URI_LIST, uris.getUris(mStorage));
     }
 
     @Test
     public void testDispose_shortList() throws Exception {
         UrisSupplier uris = createWithShortList();
 
-        uris.dispose(mStorage);
+        uris.dispose();
     }
 
     @Test
     public void testDispose_longList() throws Exception {
         UrisSupplier uris = createWithLongList();
 
-        uris.dispose(mStorage);
+        uris.dispose();
     }
 
-    private UrisSupplier createWithShortList() {
+    private UrisSupplier createWithShortList() throws Exception {
         return UrisSupplier.create(SHORT_URI_LIST, mStorage);
     }
 
-    private UrisSupplier createWithLongList() {
+    private UrisSupplier createWithLongList() throws Exception {
         UrisSupplier uris =
                 UrisSupplier.create(LONG_URI_LIST, mStorage);
 
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
index 87cd42f..949f6b7 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
@@ -20,6 +20,7 @@
 import android.database.Cursor;
 import android.graphics.Rect;
 import android.os.SystemClock;
+import android.support.test.filters.Suppress;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.view.KeyEvent;
@@ -37,6 +38,7 @@
     DocumentHolder mHolder;
     TestListener mListener;
 
+    @Override
     public void setUp() throws Exception {
         Context context = getContext();
         LayoutInflater inflater = LayoutInflater.from(context);
@@ -46,28 +48,20 @@
         };
 
         mListener = new TestListener();
-        mHolder.addEventListener(mListener);
+        mHolder.addKeyEventListener(mListener);
 
         mHolder.itemView.requestLayout();
         mHolder.itemView.invalidate();
     }
 
-    public void testClickActivates() {
-        click();
-        mListener.assertSelected();
+    @Suppress
+    public void testIsInSelectionHotspot() {
+        fail();
     }
 
-    public void testTapActivates() {
-        tap();
-        mListener.assertActivated();
-    }
-
-    public void click() {
-        mHolder.onSingleTapUp(createEvent(MotionEvent.TOOL_TYPE_MOUSE));
-    }
-
-    public void tap() {
-        mHolder.onSingleTapUp(createEvent(MotionEvent.TOOL_TYPE_FINGER));
+    @Suppress
+    public void testDelegatesKeyEvents() {
+        fail();
     }
 
     public MotionEvent createEvent(int tooltype) {
@@ -105,32 +99,7 @@
                 );
     }
 
-    private class TestListener implements DocumentHolder.EventListener {
-        private boolean mActivated = false;
-        private boolean mSelected = false;
-
-        public void assertActivated() {
-            assertTrue(mActivated);
-            assertFalse(mSelected);
-        }
-
-        public void assertSelected() {
-            assertTrue(mSelected);
-            assertFalse(mActivated);
-        }
-
-        @Override
-        public boolean onActivate(DocumentHolder doc) {
-            mActivated = true;
-            return true;
-        }
-
-        @Override
-        public boolean onSelect(DocumentHolder doc) {
-            mSelected = true;
-            return true;
-        }
-
+    private class TestListener implements DocumentHolder.KeyboardEventListener {
         @Override
         public boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
             return false;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java
index 7864e98..57b9f92 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java
@@ -16,17 +16,14 @@
 
 package com.android.documentsui.dirlist;
 
-import android.support.v7.widget.RecyclerView;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.util.SparseBooleanArray;
 
-import com.android.documentsui.TestInputEvent;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
+import com.android.documentsui.testing.dirlist.SelectionProbe;
+import com.android.documentsui.testing.dirlist.TestSelectionListener;
 
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -34,186 +31,66 @@
 @SmallTest
 public class MultiSelectManagerTest extends AndroidTestCase {
 
-    private static final List<String> items;
-    static {
-        items = new ArrayList<String>();
-        for (int i = 0; i < 100; ++i) {
-            items.add(Integer.toString(i));
-        }
-    }
+    private static final List<String> ITEMS = TestData.create(100);
 
     private MultiSelectManager mManager;
-    private TestCallback mCallback;
+    private TestSelectionListener mCallback;
     private TestDocumentsAdapter mAdapter;
+    private SelectionProbe mSelection;
 
     @Override
     public void setUp() throws Exception {
-        mCallback = new TestCallback();
-        mAdapter = new TestDocumentsAdapter(items);
+        mCallback = new TestSelectionListener();
+        mAdapter = new TestDocumentsAdapter(ITEMS);
         mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
         mManager.addCallback(mCallback);
+
+        mSelection = new SelectionProbe(mManager);
     }
 
     public void testSelection() {
         // Check selection.
-        mManager.toggleSelection(items.get(7));
-        assertSelection(items.get(7));
+        mManager.toggleSelection(ITEMS.get(7));
+        mSelection.assertSelection(7);
         // Check deselection.
-        mManager.toggleSelection(items.get(7));
-        assertSelectionSize(0);
+        mManager.toggleSelection(ITEMS.get(7));
+        mSelection.assertNoSelection();
     }
 
     public void testSelection_NotifiesSelectionChanged() {
         // Selection should notify.
-        mManager.toggleSelection(items.get(7));
+        mManager.toggleSelection(ITEMS.get(7));
         mCallback.assertSelectionChanged();
         // Deselection should notify.
-        mManager.toggleSelection(items.get(7));
+        mManager.toggleSelection(ITEMS.get(7));
         mCallback.assertSelectionChanged();
     }
 
-    public void testMouseClick_ShiftClickExtendsSelection() {
-        longPress(7);
-        shiftClick(11);
-        assertRangeSelection(7, 11);
-    }
-
-    public void testMouseClick_NoPosition_ClearsSelection() {
-        longPress(7);
-        click(11);
-        click(RecyclerView.NO_POSITION);
-        assertSelection();
-    }
-
-    public void testSetSelectionFocusBegin() {
-        mManager.setItemsSelected(Lists.newArrayList(items.get(7)), true);
-        mManager.setSelectionRangeBegin(7);
-        shiftClick(11);
-        assertRangeSelection(7, 11);
-    }
-
-    public void testLongPress_StartsSelectionMode() {
-        longPress(7);
-        assertSelection(items.get(7));
-    }
-
-    public void testLongPress_SecondPressExtendsSelection() {
-        longPress(7);
-        longPress(99);
-        assertSelection(items.get(7), items.get(99));
-    }
-
-    public void testSingleTapUp_UnselectsSelectedItem() {
-        longPress(7);
-        tap(7);
-        assertSelection();
-    }
-
-    public void testSingleTapUp_NoPosition_ClearsSelection() {
-        longPress(7);
-        tap(11);
-        tap(RecyclerView.NO_POSITION);
-        assertSelection();
-    }
-
-    public void testSingleTapUp_ExtendsSelection() {
-        longPress(99);
-        tap(7);
-        tap(13);
-        assertSelection(items.get(7), items.get(99), items.get(13));
-    }
-
-    public void testSingleTapUp_ShiftCreatesRangeSelection() {
-        longPress(7);
-        shiftTap(17);
-        assertRangeSelection(7, 17);
-    }
-
-    public void testSingleTapUp_ShiftCreatesRangeSeletion_Backwards() {
-        longPress(17);
-        shiftTap(7);
-        assertRangeSelection(7, 17);
-    }
-
-    public void testSingleTapUp_SecondShiftClickExtendsSelection() {
-        longPress(7);
-        shiftTap(11);
-        shiftTap(17);
-        assertRangeSelection(7, 17);
-    }
-
-    public void testSingleTapUp_MultipleContiguousRangesSelected() {
-        longPress(7);
-        shiftTap(11);
-        tap(20);
-        shiftTap(25);
-        assertRangeSelected(7, 11);
-        assertRangeSelected(20, 25);
-        assertSelectionSize(11);
-    }
-
-    public void testSingleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick() {
-        longPress(7);
-        shiftTap(17);
-        shiftTap(10);
-        assertRangeSelection(7, 10);
-    }
-
-    public void testSingleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick_Backwards() {
-        mManager.onLongPress(TestInputEvent.tap(17));
-        shiftTap(7);
-        shiftTap(14);
-        assertRangeSelection(14, 17);
-    }
-
-    public void testSingleTapUp_ShiftReversesSelectionDirection() {
-        longPress(7);
-        shiftTap(17);
-        shiftTap(0);
-        assertRangeSelection(0, 7);
-    }
-
-    public void testSingleSelectMode() {
-        mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_SINGLE);
-        mManager.addCallback(mCallback);
-        longPress(20);
-        tap(13);
-        assertSelection(items.get(13));
-    }
-
-    public void testSingleSelectMode_ShiftTap() {
-        mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_SINGLE);
-        mManager.addCallback(mCallback);
-        longPress(13);
-        shiftTap(20);
-        assertSelection(items.get(20));
-    }
-
     public void testRangeSelection() {
         mManager.startRangeSelection(15);
         mManager.snapRangeSelection(19);
-        assertRangeSelection(15, 19);
+        mSelection.assertRangeSelection(15, 19);
     }
 
     public void testRangeSelection_snapExpand() {
         mManager.startRangeSelection(15);
         mManager.snapRangeSelection(19);
         mManager.snapRangeSelection(27);
-        assertRangeSelection(15, 27);
+        mSelection.assertRangeSelection(15, 27);
     }
 
     public void testRangeSelection_snapContract() {
         mManager.startRangeSelection(15);
         mManager.snapRangeSelection(27);
         mManager.snapRangeSelection(19);
-        assertRangeSelection(15, 19);
+        mSelection.assertRangeSelection(15, 19);
     }
 
     public void testRangeSelection_snapInvert() {
         mManager.startRangeSelection(15);
         mManager.snapRangeSelection(27);
         mManager.snapRangeSelection(3);
-        assertRangeSelection(3, 15);
+        mSelection.assertRangeSelection(3, 15);
     }
 
     public void testRangeSelection_multiple() {
@@ -222,30 +99,21 @@
         mManager.endRangeSelection();
         mManager.startRangeSelection(42);
         mManager.snapRangeSelection(57);
-        assertSelectionSize(29);
-        assertRangeSelected(15, 27);
-        assertRangeSelected(42, 57);
+        mSelection.assertSelectionSize(29);
+        mSelection.assertRangeSelected(15, 27);
+        mSelection.assertRangeSelected(42, 57);
 
     }
 
-    public void testRangeSelection_singleSelect() {
-        mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_SINGLE);
-        mManager.addCallback(mCallback);
-        mManager.startRangeSelection(11);
-        mManager.snapRangeSelection(19);
-        assertSelectionSize(1);
-        assertSelection(items.get(19));
-    }
-
     public void testProvisionalSelection() {
         Selection s = mManager.getSelection();
-        assertSelection();
+        mSelection.assertNoSelection();
 
         SparseBooleanArray provisional = new SparseBooleanArray();
         provisional.append(1, true);
         provisional.append(2, true);
         s.setProvisionalSelection(getItemIds(provisional));
-        assertSelection(items.get(1), items.get(2));
+        mSelection.assertSelection(1, 2);
     }
 
     public void testProvisionalSelection_Replace() {
@@ -260,7 +128,7 @@
         provisional.append(3, true);
         provisional.append(4, true);
         s.setProvisionalSelection(getItemIds(provisional));
-        assertSelection(items.get(3), items.get(4));
+        mSelection.assertSelection(3, 4);
     }
 
     public void testProvisionalSelection_IntersectsExistingProvisionalSelection() {
@@ -274,7 +142,7 @@
         provisional.clear();
         provisional.append(1, true);
         s.setProvisionalSelection(getItemIds(provisional));
-        assertSelection(items.get(1));
+        mSelection.assertSelection(1);
     }
 
     public void testProvisionalSelection_Apply() {
@@ -285,12 +153,12 @@
         provisional.append(2, true);
         s.setProvisionalSelection(getItemIds(provisional));
         s.applyProvisionalSelection();
-        assertSelection(items.get(1), items.get(2));
+        mSelection.assertSelection(1, 2);
     }
 
     public void testProvisionalSelection_Cancel() {
-        mManager.toggleSelection(items.get(1));
-        mManager.toggleSelection(items.get(2));
+        mManager.toggleSelection(ITEMS.get(1));
+        mManager.toggleSelection(ITEMS.get(2));
         Selection s = mManager.getSelection();
 
         SparseBooleanArray provisional = new SparseBooleanArray();
@@ -300,19 +168,19 @@
         s.cancelProvisionalSelection();
 
         // Original selection should remain.
-        assertSelection(items.get(1), items.get(2));
+        mSelection.assertSelection(1, 2);
     }
 
     public void testProvisionalSelection_IntersectsAppliedSelection() {
-        mManager.toggleSelection(items.get(1));
-        mManager.toggleSelection(items.get(2));
+        mManager.toggleSelection(ITEMS.get(1));
+        mManager.toggleSelection(ITEMS.get(2));
         Selection s = mManager.getSelection();
 
         SparseBooleanArray provisional = new SparseBooleanArray();
         provisional.append(2, true);
         provisional.append(3, true);
         s.setProvisionalSelection(getItemIds(provisional));
-        assertSelection(items.get(1), items.get(2), items.get(3));
+        mSelection.assertSelection(1, 2, 3);
     }
 
     private static Set<String> getItemIds(SparseBooleanArray selection) {
@@ -320,82 +188,9 @@
 
         int count = selection.size();
         for (int i = 0; i < count; ++i) {
-            ids.add(items.get(selection.keyAt(i)));
+            ids.add(ITEMS.get(selection.keyAt(i)));
         }
 
         return ids;
     }
-
-    private void longPress(int position) {
-        mManager.onLongPress(TestInputEvent.tap(position));
-    }
-
-    private void tap(int position) {
-        mManager.onSingleTapUp(TestInputEvent.tap(position));
-    }
-
-    private void shiftTap(int position) {
-        mManager.onSingleTapUp(TestInputEvent.shiftTap(position));
-    }
-
-    private void click(int position) {
-        mManager.onSingleTapUp(TestInputEvent.click(position));
-    }
-
-    private void shiftClick(int position) {
-        mManager.onSingleTapUp(TestInputEvent.shiftClick(position));
-    }
-
-    private void assertSelected(String... expected) {
-        for (int i = 0; i < expected.length; i++) {
-            Selection selection = mManager.getSelection();
-            String err = String.format(
-                    "Selection %s does not contain %s", selection, expected[i]);
-            assertTrue(err, selection.contains(expected[i]));
-        }
-    }
-
-    private void assertSelection(String... expected) {
-        assertSelectionSize(expected.length);
-        assertSelected(expected);
-    }
-
-    private void assertRangeSelected(int begin, int end) {
-        for (int i = begin; i <= end; i++) {
-            assertSelected(items.get(i));
-        }
-    }
-
-    private void assertRangeSelection(int begin, int end) {
-        assertSelectionSize(end - begin + 1);
-        assertRangeSelected(begin, end);
-    }
-
-    private void assertSelectionSize(int expected) {
-        Selection selection = mManager.getSelection();
-        assertEquals(selection.toString(), expected, selection.size());
-    }
-
-    private static final class TestCallback implements MultiSelectManager.Callback {
-
-        Set<String> ignored = new HashSet<>();
-        private boolean mSelectionChanged = false;
-
-        @Override
-        public void onItemStateChanged(String modelId, boolean selected) {}
-
-        @Override
-        public boolean onBeforeItemStateChange(String modelId, boolean selected) {
-            return !ignored.contains(modelId);
-        }
-
-        @Override
-        public void onSelectionChanged() {
-            mSelectionChanged = true;
-        }
-
-        void assertSelectionChanged() {
-            assertTrue(mSelectionChanged);
-        }
-    }
 }
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SingleSelectTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SingleSelectTest.java
new file mode 100644
index 0000000..62cb1b0
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SingleSelectTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2015 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.documentsui.dirlist;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.documentsui.testing.dirlist.SelectionProbe;
+import com.android.documentsui.testing.dirlist.TestSelectionListener;
+
+import java.util.List;
+
+@SmallTest
+public class MultiSelectManager_SingleSelectTest extends AndroidTestCase {
+
+    private static final List<String> ITEMS = TestData.create(100);
+
+    private MultiSelectManager mManager;
+    private TestSelectionListener mCallback;
+    private TestDocumentsAdapter mAdapter;
+    private SelectionProbe mSelection;
+
+    @Override
+    public void setUp() throws Exception {
+        mCallback = new TestSelectionListener();
+        mAdapter = new TestDocumentsAdapter(ITEMS);
+        mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_SINGLE);
+        mManager.addCallback(mCallback);
+
+        mSelection = new SelectionProbe(mManager);
+    }
+
+    public void testSimpleSelect() {
+        mManager.toggleSelection(ITEMS.get(3));
+        mManager.toggleSelection(ITEMS.get(4));
+        mCallback.assertSelectionChanged();
+        mSelection.assertSelection(4);
+    }
+
+    public void testRangeSelectionNotEstablished() {
+        mManager.toggleSelection(ITEMS.get(3));
+        mCallback.reset();
+
+        try {
+            mManager.snapRangeSelection(10);
+            fail("Should have thrown.");
+        } catch (Exception expected) {}
+
+        mCallback.assertSelectionUnchanged();
+        mSelection.assertSelection(3);
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestData.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestData.java
new file mode 100644
index 0000000..5c1d987
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestData.java
@@ -0,0 +1,30 @@
+/*
+ * 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.documentsui.dirlist;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestData {
+    public static List<String> create(int num) {
+        List<String> items = new ArrayList<String>(num);
+        for (int i = 0; i < num; ++i) {
+            items.add(Integer.toString(i));
+        }
+        return items;
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestFocusHandler.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestFocusHandler.java
new file mode 100644
index 0000000..0585b9f
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestFocusHandler.java
@@ -0,0 +1,44 @@
+/*
+ * 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.documentsui.dirlist;
+
+import android.view.KeyEvent;
+import android.view.View;
+
+/**
+ * A purely dummy instance of FocusHandler.
+ */
+public final class TestFocusHandler implements FocusHandler {
+
+    @Override
+    public boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public void onFocusChange(View v, boolean hasFocus) {
+    }
+
+    @Override
+    public void restoreLastFocus() {
+    }
+
+    @Override
+    public int getFocusPosition() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
new file mode 100644
index 0000000..4c34546
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
@@ -0,0 +1,110 @@
+/*
+ * 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.documentsui.dirlist;
+
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.support.v7.widget.RecyclerView;
+import android.view.MotionEvent;
+
+import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
+import com.android.documentsui.testing.TestEvent;
+import com.android.documentsui.testing.TestEvent.Builder;
+import com.android.documentsui.testing.TestPredicate;
+import com.android.documentsui.testing.dirlist.SelectionProbe;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public final class UserInputHandler_MouseTest {
+
+    private static final List<String> ITEMS = TestData.create(100);
+
+    private UserInputHandler<TestEvent> mInputHandler;
+
+    private TestDocumentsAdapter mAdapter;
+    private SelectionProbe mSelection;
+    private TestPredicate<DocumentDetails> mCanSelect;
+    private TestPredicate<InputEvent> mRightClickHandler;
+    private TestPredicate<DocumentDetails> mActivateHandler;
+    private TestPredicate<DocumentDetails> mDeleteHandler;
+
+    private Builder mEvent;
+
+    @Before
+    public void setUp() {
+
+        mAdapter = new TestDocumentsAdapter(ITEMS);
+        MultiSelectManager selectionMgr =
+                new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
+
+        mSelection = new SelectionProbe(selectionMgr);
+        mCanSelect = new TestPredicate<>();
+        mRightClickHandler = new TestPredicate<>();
+        mActivateHandler = new TestPredicate<>();
+        mDeleteHandler = new TestPredicate<>();
+
+        mInputHandler = new UserInputHandler<>(
+                selectionMgr,
+                new TestFocusHandler(),
+                (MotionEvent event) -> {
+                    throw new UnsupportedOperationException("Not exercised in tests.");
+                },
+                (TestEvent event) -> {
+                    return event.getDocument();
+                },
+                mCanSelect,
+                mRightClickHandler::test,
+                mActivateHandler::test,
+                mDeleteHandler::test);
+
+        mEvent = TestEvent.builder().mouse();
+    }
+
+    @Test
+    public void testConfirmedClick_StartsSelection() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(11).build());
+        mSelection.assertSelection(11);
+    }
+
+    @Test
+    public void testUnconfirmedClick_AddsToExistingSelection() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
+
+        mInputHandler.onSingleTapUp(mEvent.at(11).build());
+        mSelection.assertSelection(7, 11);
+    }
+
+    @Test
+    public void testDoubleClick_Activates() {
+        mInputHandler.onDoubleTap(mEvent.at(11).build());
+        mActivateHandler.assertLastArgument(mEvent.build());
+    }
+
+    @Test
+    public void testClickOff_ClearsSelection() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(11).build());
+        mInputHandler.onSingleTapUp(mEvent.at(RecyclerView.NO_POSITION).build());
+        mSelection.assertNoSelection();
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
new file mode 100644
index 0000000..1d763f9
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
@@ -0,0 +1,147 @@
+/*
+ * 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.documentsui.dirlist;
+
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.view.MotionEvent;
+
+import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
+import com.android.documentsui.testing.TestEvent;
+import com.android.documentsui.testing.TestEvent.Builder;
+import com.android.documentsui.testing.TestPredicate;
+import com.android.documentsui.testing.dirlist.SelectionProbe;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+/**
+ * UserInputHandler / MultiSelectManager integration test covering the shared
+ * responsibility of range selection.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public final class UserInputHandler_RangeTest {
+
+    private static final List<String> ITEMS = TestData.create(100);
+
+    private UserInputHandler<TestEvent> mInputHandler;
+
+    private TestDocumentsAdapter mAdapter;
+    private SelectionProbe mSelection;
+    private TestPredicate<DocumentDetails> mCanSelect;
+    private TestPredicate<InputEvent> mRightClickHandler;
+    private TestPredicate<DocumentDetails> mActivateHandler;
+    private TestPredicate<DocumentDetails> mDeleteHandler;
+    private Builder mEvent;
+
+    @Before
+    public void setUp() {
+
+        mAdapter = new TestDocumentsAdapter(ITEMS);
+        MultiSelectManager selectionMgr =
+                new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
+
+        mSelection = new SelectionProbe(selectionMgr);
+        mCanSelect = new TestPredicate<>();
+        mRightClickHandler = new TestPredicate<>();
+        mActivateHandler = new TestPredicate<>();
+        mDeleteHandler = new TestPredicate<>();
+
+        mInputHandler = new UserInputHandler<>(
+                selectionMgr,
+                new TestFocusHandler(),
+                (MotionEvent event) -> {
+                    throw new UnsupportedOperationException("Not exercised in tests.");
+                },
+                (TestEvent event) -> {
+                    return event.getDocument();
+                },
+                mCanSelect,
+                mRightClickHandler::test,
+                mActivateHandler::test,
+                mDeleteHandler::test);
+
+        mEvent = TestEvent.builder().mouse();
+    }
+
+    @Test
+    public void testExtendRange() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
+        mSelection.assertRangeSelection(7, 11);
+    }
+
+    @Test
+    public void testExtendRangeContinues() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
+        mInputHandler.onSingleTapUp(mEvent.at(21).shift().build());
+        mSelection.assertRangeSelection(7, 21);
+    }
+
+    @Test
+    public void testMultipleContiguousRanges() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
+
+        // click without shift sets a new range start point.
+        mInputHandler.onSingleTapUp(mEvent.at(20).unshift().build());
+        mInputHandler.onSingleTapUp(mEvent.at(25).shift().build());
+
+        mSelection.assertRangeSelected(7, 11);
+        mSelection.assertRangeSelected(20, 25);
+
+        mSelection.assertRangeNotSelected(12, 19);
+        mSelection.assertSelectionSize(11);
+    }
+
+    @Test
+    public void testReducesSelectionRange() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(17).shift().build());
+        mInputHandler.onSingleTapUp(mEvent.at(10).shift().build());
+        mSelection.assertRangeSelection(7, 10);
+    }
+
+    @Test
+    public void testReducesSelectionRange_Reverse() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(17).build());
+        mInputHandler.onSingleTapUp(mEvent.at(7).shift().build());
+        mInputHandler.onSingleTapUp(mEvent.at(14).shift().build());
+        mSelection.assertRangeSelection(14, 17);
+    }
+
+    @Test
+    public void testExtendsRange_Reverse() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(12).build());
+        mInputHandler.onSingleTapUp(mEvent.at(5).shift().build());
+        mSelection.assertRangeSelection(5, 12);
+    }
+
+    @Test
+    public void testExtendsRange_ReversesAfterForwardClick() {
+        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
+        mInputHandler.onSingleTapUp(mEvent.at(0).shift().build());
+        mSelection.assertRangeSelection(0, 7);
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
new file mode 100644
index 0000000..2d1453e
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
@@ -0,0 +1,118 @@
+/*
+ * 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.documentsui.dirlist;
+
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.support.v7.widget.RecyclerView;
+import android.view.MotionEvent;
+
+import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
+import com.android.documentsui.testing.TestEvent;
+import com.android.documentsui.testing.TestEvent.Builder;
+import com.android.documentsui.testing.TestPredicate;
+import com.android.documentsui.testing.dirlist.SelectionProbe;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public final class UserInputHandler_TouchTest {
+
+    private static final List<String> ITEMS = TestData.create(100);
+
+    private UserInputHandler<TestEvent> mInputHandler;
+
+    private TestDocumentsAdapter mAdapter;
+    private SelectionProbe mSelection;
+    private TestPredicate<DocumentDetails> mCanSelect;
+    private TestPredicate<InputEvent> mRightClickHandler;
+    private TestPredicate<DocumentDetails> mActivateHandler;
+    private TestPredicate<DocumentDetails> mDeleteHandler;
+
+    private Builder mEvent;
+
+    @Before
+    public void setUp() {
+
+        mAdapter = new TestDocumentsAdapter(ITEMS);
+        MultiSelectManager selectionMgr =
+                new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
+
+        mSelection = new SelectionProbe(selectionMgr);
+        mCanSelect = new TestPredicate<>();
+        mRightClickHandler = new TestPredicate<>();
+        mActivateHandler = new TestPredicate<>();
+        mDeleteHandler = new TestPredicate<>();
+
+        mInputHandler = new UserInputHandler<>(
+                selectionMgr,
+                new TestFocusHandler(),
+                (MotionEvent event) -> {
+                    throw new UnsupportedOperationException("Not exercised in tests.");
+                },
+                (TestEvent event) -> {
+                    return event.getDocument();
+                },
+                mCanSelect,
+                mRightClickHandler::test,
+                mActivateHandler::test,
+                mDeleteHandler::test);
+
+        mEvent = TestEvent.builder();
+    }
+
+    @Test
+    public void testTap_ActivatesWhenNoExistingSelection() {
+        mInputHandler.onSingleTapUp(mEvent.at(11).build());
+        mActivateHandler.assertLastArgument(mEvent.build());
+    }
+
+    @Test
+    public void testLongPress_StartsSelectionMode() {
+        mInputHandler.onLongPress(mEvent.at(7).build());
+        mSelection.assertSelection(7);
+    }
+
+    @Test
+    public void testLongPress_SecondPressExtendsSelection() {
+        mInputHandler.onLongPress(mEvent.at(7).build());
+        mInputHandler.onLongPress(mEvent.at(99).build());
+        mInputHandler.onLongPress(mEvent.at(13).build());
+        mSelection.assertSelection(7, 13, 99);
+    }
+
+    @Test
+    public void testTap_UnselectsSelectedItem() {
+        mInputHandler.onLongPress(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(7).build());
+        mSelection.assertNoSelection();
+    }
+
+    @Test
+    public void testTapOff_ClearsSelection() {
+        mInputHandler.onLongPress(mEvent.at(7).build());
+        mInputHandler.onSingleTapUp(mEvent.at(11).build());
+        mInputHandler.onSingleTapUp(mEvent.at(RecyclerView.NO_POSITION).build());
+        mSelection.assertNoSelection();
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
index 053942b..6e4e534 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
@@ -27,7 +27,7 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.DocumentsProviderHelper;
 import com.android.documentsui.StubProvider;
 import com.android.documentsui.model.DocumentInfo;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
index b49d15d..d6bbe5a 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
@@ -32,7 +32,7 @@
 import android.test.ServiceTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.testing.DocsProviders;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
index 0c273c0..1fbcf37 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
@@ -23,7 +23,7 @@
 import android.app.Notification.Builder;
 import android.content.Context;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.R;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
index d438892..c08157f 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
@@ -18,7 +18,7 @@
 
 import android.net.Uri;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 
 import java.util.List;
 
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestEvent.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestEvent.java
new file mode 100644
index 0000000..98fa2de
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestEvent.java
@@ -0,0 +1,138 @@
+/*
+ * 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.documentsui.testing;
+
+import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.TestInputEvent;
+import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
+
+/**
+ * Events and DocDetails are closely related. For the pursposes of this test
+ * we coalesce the two in a single, handy-dandy test class.
+ */
+public class TestEvent extends TestInputEvent implements DocumentDetails {
+
+    private String modelId;
+    private boolean inHotspot;
+
+    @Override
+    public String getModelId() {
+        return modelId;
+    }
+
+    @Override
+    public int getAdapterPosition() {
+        return getItemPosition();
+    }
+
+    @Override
+    public boolean isInSelectionHotspot(InputEvent event) {
+        return inHotspot;
+    }
+
+    public TestEvent at(int position) {
+        this.position = position;  // this is both "adapter position" and "item position".
+        modelId = String.valueOf(position);
+        return this;
+    }
+
+    public TestEvent shift() {
+        this.shiftKeyDow = true;
+        return this;
+    }
+
+    public TestEvent inHotspot() {
+        this.inHotspot = true;
+        return this;
+    }
+
+    public DocumentDetails getDocument() {
+        return this;
+    }
+
+    @Override
+    public int hashCode() {
+        return modelId != null ? modelId.hashCode() : -1;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) {
+          return true;
+      }
+
+      if (!(o instanceof TestEvent)) {
+          return false;
+      }
+
+      TestEvent other = (TestEvent) o;
+      return position == other.position
+              && modelId == other.modelId
+              && shiftKeyDow == other.shiftKeyDow
+              && mouseEvent == other.mouseEvent;
+    }
+
+    public static final Builder builder() {
+        return new Builder();
+    }
+
+    public static final class Builder {
+
+        private TestEvent mState = new TestEvent();
+
+        public Builder reset() {
+            mState = new TestEvent();
+            return this;
+        }
+
+        public Builder at(int position) {
+            mState.position = position;  // this is both "adapter position" and "item position".
+            mState.modelId = String.valueOf(position);
+            return this;
+        }
+
+        public Builder shift() {
+            mState.shiftKeyDow = true;
+            return this;
+        }
+
+        public Builder unshift() {
+            mState.shiftKeyDow = false;
+            return this;
+        }
+
+        public Builder inHotspot() {
+            mState.inHotspot = true;
+            return this;
+        }
+
+        public Builder mouse() {
+            mState.mouseEvent = true;
+            return this;
+        }
+
+        public TestEvent build() {
+            // Return a copy, so nobody can mess w/ our internal state.
+            TestEvent e = new TestEvent();
+            e.position = mState.position;
+            e.modelId = mState.modelId;
+            e.shiftKeyDow = mState.shiftKeyDow;
+            e.mouseEvent = mState.mouseEvent;
+            return e;
+        }
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestPredicate.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestPredicate.java
new file mode 100644
index 0000000..f8ee21e
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestPredicate.java
@@ -0,0 +1,47 @@
+/*
+ * 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.documentsui.testing;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.function.Predicate;
+
+import javax.annotation.Nullable;
+
+/**
+ * Test predicate that can be used to spy control responses and make
+ * assertions against values tested.
+ */
+public class TestPredicate<T> implements Predicate<T> {
+
+    private @Nullable T lastValue;
+    private boolean nextReturnValue;
+
+    @Override
+    public boolean test(T t) {
+        lastValue = t;
+        return nextReturnValue;
+    }
+
+    public void assertLastArgument(@Nullable T expected) {
+        assertEquals(expected, lastValue);
+    }
+
+    public void nextReturn(boolean value) {
+        nextReturnValue = value;
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/SelectionProbe.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/SelectionProbe.java
new file mode 100644
index 0000000..12f4642
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/SelectionProbe.java
@@ -0,0 +1,89 @@
+/*
+ * 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.documentsui.testing.dirlist;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import com.android.documentsui.dirlist.MultiSelectManager;
+import com.android.documentsui.dirlist.MultiSelectManager.Selection;
+
+/**
+ * Helper class for making assertions against the state of a MultiSelectManager instance.
+ */
+public final class SelectionProbe {
+
+    private final MultiSelectManager mMgr;
+
+    public SelectionProbe(MultiSelectManager mgr) {
+        mMgr = mgr;
+    }
+
+    public void assertRangeSelected(int begin, int end) {
+        for (int i = begin; i <= end; i++) {
+            assertSelected(i);
+        }
+    }
+
+    public void assertRangeNotSelected(int begin, int end) {
+        for (int i = begin; i <= end; i++) {
+            assertNotSelected(i);
+        }
+    }
+
+    public void assertRangeSelection(int begin, int end) {
+        assertSelectionSize(end - begin + 1);
+        assertRangeSelected(begin, end);
+    }
+
+    public void assertSelectionSize(int expected) {
+        Selection selection = mMgr.getSelection();
+        assertEquals(selection.toString(), expected, selection.size());
+    }
+
+    public void assertNoSelection() {
+        assertSelectionSize(0);
+    }
+
+    public void assertSelection(int... ids) {
+        assertSelected(ids);
+        assertEquals(ids.length, mMgr.getSelection().size());
+    }
+
+    public void assertSelected(int... ids) {
+        Selection sel = mMgr.getSelection();
+        for (int id : ids) {
+            String sid = String.valueOf(id);
+            assertTrue(sid + " is not in selection " + sel, sel.contains(sid));
+        }
+    }
+
+    public void assertNotSelected(int... ids) {
+        Selection sel = mMgr.getSelection();
+        for (int id : ids) {
+            String sid = String.valueOf(id);
+            assertFalse(sid + " is in selection " + sel, sel.contains(sid));
+        }
+    }
+
+    public void select(int...positions) {
+        for (int position : positions) {
+            mMgr.toggleSelection(String.valueOf(position));
+        }
+    }
+}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/TestSelectionListener.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/TestSelectionListener.java
new file mode 100644
index 0000000..08f29f0
--- /dev/null
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/TestSelectionListener.java
@@ -0,0 +1,56 @@
+/*
+ * 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.documentsui.testing.dirlist;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import com.android.documentsui.dirlist.MultiSelectManager;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public final class TestSelectionListener implements MultiSelectManager.Callback {
+
+    Set<String> ignored = new HashSet<>();
+    private boolean mSelectionChanged = false;
+
+    @Override
+    public void onItemStateChanged(String modelId, boolean selected) {}
+
+    @Override
+    public boolean onBeforeItemStateChange(String modelId, boolean selected) {
+        return !ignored.contains(modelId);
+    }
+
+    @Override
+    public void onSelectionChanged() {
+        mSelectionChanged = true;
+    }
+
+    public void reset() {
+        mSelectionChanged = false;
+    }
+
+    public void assertSelectionChanged() {
+        assertTrue(mSelectionChanged);
+    }
+
+    public void assertSelectionUnchanged() {
+        assertFalse(mSelectionChanged);
+    }
+}
\ No newline at end of file
diff --git a/packages/EasterEgg/src/com/android/egg/neko/Cat.java b/packages/EasterEgg/src/com/android/egg/neko/Cat.java
index 8c44fd6..f74a229 100644
--- a/packages/EasterEgg/src/com/android/egg/neko/Cat.java
+++ b/packages/EasterEgg/src/com/android/egg/neko/Cat.java
@@ -312,6 +312,10 @@
         logCatAction(context, "egg_neko_add");
     }
 
+    public void logRename(Context context) {
+        logCatAction(context, "egg_neko_rename");
+    }
+
     public void logRemove(Context context) {
         logCatAction(context, "egg_neko_remove");
     }
diff --git a/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java b/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java
index feada7f..3629162 100644
--- a/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java
+++ b/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java
@@ -24,6 +24,7 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.media.MediaScannerConnection;
 import android.net.Uri;
@@ -50,6 +51,9 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 
 public class NekoLand extends Activity implements PrefsListener {
     public static boolean DEBUG = false;
@@ -98,7 +102,19 @@
                 cats[i] = Cat.create(this);
             }
         } else {
-            cats = mPrefs.getCats().toArray(new Cat[0]);
+            final float[] hsv = new float[3];
+            List<Cat> list = mPrefs.getCats();
+            Collections.sort(list, new Comparator<Cat>() {
+                @Override
+                public int compare(Cat cat, Cat cat2) {
+                    Color.colorToHSV(cat.getBodyColor(), hsv);
+                    float bodyH1 = hsv[0];
+                    Color.colorToHSV(cat2.getBodyColor(), hsv);
+                    float bodyH2 = hsv[0];
+                    return Float.compare(bodyH1, bodyH2);
+                }
+            });
+            cats = list.toArray(new Cat[0]);
         }
         mAdapter.setCats(cats);
         return cats.length;
@@ -138,7 +154,7 @@
                 .setPositiveButton(android.R.string.ok, new OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
-                        MetricsLogger.count(context, "egg_neko_rename_cat", 1);
+                        cat.logRename(context);
                         cat.setName(text.getText().toString().trim());
                         mPrefs.addCat(cat);
                     }
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index 239f6a6..1341476 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -491,6 +491,8 @@
     @Override
     public void deleteDocument(String docId) throws FileNotFoundException {
         final File file = getFileForDocId(docId);
+        final File visibleFile = getFileForDocId(docId, true);
+
         final boolean isDirectory = file.isDirectory();
         if (isDirectory) {
             FileUtils.deleteContents(file);
@@ -499,7 +501,6 @@
             throw new IllegalStateException("Failed to delete " + file);
         }
 
-        final File visibleFile = getFileForDocId(docId, true);
         if (visibleFile != null) {
             final ContentResolver resolver = getContext().getContentResolver();
             final Uri externalUri = MediaStore.Files.getContentUri("external");
diff --git a/packages/Keyguard/Android.mk b/packages/Keyguard/Android.mk
index 9083212..f9e2686 100644
--- a/packages/Keyguard/Android.mk
+++ b/packages/Keyguard/Android.mk
@@ -16,6 +16,8 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
+LOCAL_USE_AAPT2 := true
+
 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-subdir-Iaidl-files)
 
 LOCAL_MODULE := Keyguard
@@ -30,6 +32,8 @@
 
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 
+LOCAL_JAR_EXCLUDE_FILES := none
+
 include $(BUILD_STATIC_JAVA_LIBRARY)
 
 #include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/packages/Keyguard/res/values-my-rMM/dimens.xml b/packages/Keyguard/res/values-my-rMM/dimens.xml
new file mode 100644
index 0000000..21b2a46
--- /dev/null
+++ b/packages/Keyguard/res/values-my-rMM/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<resources>
+    <dimen name="bottom_text_spacing_digital">4dp</dimen>
+</resources>
diff --git a/packages/Keyguard/res/values-my-rMM/strings.xml b/packages/Keyguard/res/values-my-rMM/strings.xml
index 5db7e95..fd800e4 100644
--- a/packages/Keyguard/res/values-my-rMM/strings.xml
+++ b/packages/Keyguard/res/values-my-rMM/strings.xml
@@ -55,7 +55,7 @@
     <string name="keyguard_accessibility_sim_pin_area" msgid="3887780775111719336">"SIM PIN နေရာ"</string>
     <string name="keyguard_accessibility_sim_puk_area" msgid="1880823406954996207">"SIM PUK နေရာ"</string>
     <string name="keyguard_accessibility_next_alarm" msgid="7269583073750518672">"<xliff:g id="ALARM">%1$s</xliff:g> အတွက် နောက် သတိပေးရန် သတ်မှတ်ချက်"</string>
-    <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ဖျက်ရန်ခလုတ်"</string>
+    <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ဖျက်ရန်"</string>
     <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"Enterခလုတ်"</string>
     <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"ပုံဖော်မှုအား မေ့လျော့ခြင်း"</string>
     <string name="kg_wrong_pattern" msgid="1850806070801358830">"ပုံဆွဲအမှား"</string>
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java
index cca9163..766eab7 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardAbsKeyInputView.java
@@ -137,12 +137,21 @@
                 entry,
                 userId,
                 new LockPatternChecker.OnCheckCallback() {
+
+                    @Override
+                    public void onEarlyMatched() {
+                        onPasswordChecked(userId, true /* matched */, 0 /* timeoutMs */,
+                                true /* isValidPassword */);
+                    }
+
                     @Override
                     public void onChecked(boolean matched, int timeoutMs) {
                         setPasswordEntryInputEnabled(true);
                         mPendingLockCheck = null;
-                        onPasswordChecked(userId, matched, timeoutMs,
-                                true /* isValidPassword */);
+                        if (!matched) {
+                            onPasswordChecked(userId, false /* matched */, timeoutMs,
+                                    true /* isValidPassword */);
+                        }
                     }
                 });
     }
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java
index 7ea767c..4f5152a 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java
@@ -36,6 +36,7 @@
 
     private final AppearAnimationUtils mAppearAnimationUtils;
     private final DisappearAnimationUtils mDisappearAnimationUtils;
+    private final DisappearAnimationUtils mDisappearAnimationUtilsLocked;
     private ViewGroup mContainer;
     private ViewGroup mRow0;
     private ViewGroup mRow1;
@@ -44,6 +45,7 @@
     private View mDivider;
     private int mDisappearYTranslation;
     private View[][] mViews;
+    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
 
     public KeyguardPINView(Context context) {
         this(context, null);
@@ -56,8 +58,14 @@
                 125, 0.6f /* translationScale */,
                 0.45f /* delayScale */, AnimationUtils.loadInterpolator(
                         mContext, android.R.interpolator.fast_out_linear_in));
+        mDisappearAnimationUtilsLocked = new DisappearAnimationUtils(context,
+                (long) (125 * KeyguardPatternView.DISAPPEAR_MULTIPLIER_LOCKED),
+                0.6f /* translationScale */,
+                0.45f /* delayScale */, AnimationUtils.loadInterpolator(
+                        mContext, android.R.interpolator.fast_out_linear_in));
         mDisappearYTranslation = getResources().getDimensionPixelSize(
                 R.dimen.disappear_y_translation);
+        mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(context);
     }
 
     @Override
@@ -136,7 +144,10 @@
         setTranslationY(0);
         AppearAnimationUtils.startTranslationYAnimation(this, 0 /* delay */, 280 /* duration */,
                 mDisappearYTranslation, mDisappearAnimationUtils.getInterpolator());
-        mDisappearAnimationUtils.startAnimation2d(mViews,
+        DisappearAnimationUtils disappearAnimationUtils = mKeyguardUpdateMonitor.isUserUnlocked()
+                ? mDisappearAnimationUtils
+                : mDisappearAnimationUtilsLocked;
+        disappearAnimationUtils.startAnimation2d(mViews,
                 new Runnable() {
                     @Override
                     public void run() {
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java
index 23015b5..69eb538 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java
@@ -55,9 +55,13 @@
     // how many cells the user has to cross before we poke the wakelock
     private static final int MIN_PATTERN_BEFORE_POKE_WAKELOCK = 2;
 
+    // How much we scale up the duration of the disappear animation when the current user is locked
+    public static final float DISAPPEAR_MULTIPLIER_LOCKED = 1.5f;
+
     private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
     private final AppearAnimationUtils mAppearAnimationUtils;
     private final DisappearAnimationUtils mDisappearAnimationUtils;
+    private final DisappearAnimationUtils mDisappearAnimationUtilsLocked;
 
     private CountDownTimer mCountdownTimer = null;
     private LockPatternUtils mLockPatternUtils;
@@ -109,6 +113,10 @@
                 125, 1.2f /* translationScale */,
                 0.6f /* delayScale */, AnimationUtils.loadInterpolator(
                         mContext, android.R.interpolator.fast_out_linear_in));
+        mDisappearAnimationUtilsLocked = new DisappearAnimationUtils(context,
+                (long) (125 * DISAPPEAR_MULTIPLIER_LOCKED), 1.2f /* translationScale */,
+                0.6f /* delayScale */, AnimationUtils.loadInterpolator(
+                mContext, android.R.interpolator.fast_out_linear_in));
         mDisappearYTranslation = getResources().getDimensionPixelSize(
                 R.dimen.disappear_y_translation);
     }
@@ -239,11 +247,21 @@
                     pattern,
                     userId,
                     new LockPatternChecker.OnCheckCallback() {
+
+                        @Override
+                        public void onEarlyMatched() {
+                            onPatternChecked(userId, true /* matched */, 0 /* timeoutMs */,
+                                    true /* isValidPattern */);
+                        }
+
                         @Override
                         public void onChecked(boolean matched, int timeoutMs) {
                             mLockPatternView.enableInput();
                             mPendingLockCheck = null;
-                            onPatternChecked(userId, matched, timeoutMs, true);
+                            if (!matched) {
+                                onPatternChecked(userId, false /* matched */, timeoutMs,
+                                        true /* isValidPattern */);
+                            }
                         }
                     });
             if (pattern.size() > MIN_PATTERN_BEFORE_POKE_WAKELOCK) {
@@ -390,25 +408,30 @@
 
     @Override
     public boolean startDisappearAnimation(final Runnable finishRunnable) {
+        float durationMultiplier = mKeyguardUpdateMonitor.isUserUnlocked()
+                ? 1f
+                : DISAPPEAR_MULTIPLIER_LOCKED;
         mLockPatternView.clearPattern();
         enableClipping(false);
         setTranslationY(0);
-        AppearAnimationUtils.startTranslationYAnimation(this, 0 /* delay */, 300 /* duration */,
+        AppearAnimationUtils.startTranslationYAnimation(this, 0 /* delay */,
+                (long) (300 * durationMultiplier),
                 -mDisappearAnimationUtils.getStartTranslation(),
                 mDisappearAnimationUtils.getInterpolator());
-        mDisappearAnimationUtils.startAnimation2d(mLockPatternView.getCellStates(),
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        enableClipping(true);
-                        if (finishRunnable != null) {
-                            finishRunnable.run();
-                        }
+
+        DisappearAnimationUtils disappearAnimationUtils = mKeyguardUpdateMonitor.isUserUnlocked()
+                ? mDisappearAnimationUtils
+                : mDisappearAnimationUtilsLocked;
+        disappearAnimationUtils.startAnimation2d(mLockPatternView.getCellStates(),
+                () -> {
+                    enableClipping(true);
+                    if (finishRunnable != null) {
+                        finishRunnable.run();
                     }
                 }, KeyguardPatternView.this);
         if (!TextUtils.isEmpty(mSecurityMessageDisplay.getText())) {
             mDisappearAnimationUtils.createAnimation(mSecurityMessageDisplay, 0,
-                    200,
+                    (long) (200 * durationMultiplier),
                     - mDisappearAnimationUtils.getStartTranslation() * 3,
                     false /* appearing */,
                     mDisappearAnimationUtils.getInterpolator(),
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
index 9d1df26..e1657c7 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java
@@ -127,6 +127,11 @@
         super.onConfigurationChanged(newConfig);
         mClockView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
                 getResources().getDimensionPixelSize(R.dimen.widget_big_font_size));
+        // Some layouts like burmese have a different margin for the clock
+        MarginLayoutParams layoutParams = (MarginLayoutParams) mClockView.getLayoutParams();
+        layoutParams.bottomMargin = getResources().getDimensionPixelSize(
+                R.dimen.bottom_text_spacing_digital);
+        mClockView.setLayoutParams(layoutParams);
         mDateView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
                 getResources().getDimensionPixelSize(R.dimen.widget_label_font_size));
         mOwnerInfo.setTextSize(TypedValue.COMPLEX_UNIT_PX,
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 94d9550..dec1fd2 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -16,6 +16,16 @@
 
 package com.android.keyguard;
 
+import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
+import static android.os.BatteryManager.BATTERY_STATUS_FULL;
+import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
+import static android.os.BatteryManager.EXTRA_HEALTH;
+import static android.os.BatteryManager.EXTRA_LEVEL;
+import static android.os.BatteryManager.EXTRA_MAX_CHARGING_CURRENT;
+import static android.os.BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE;
+import static android.os.BatteryManager.EXTRA_PLUGGED;
+import static android.os.BatteryManager.EXTRA_STATUS;
+
 import android.app.ActivityManager;
 import android.app.ActivityManagerNative;
 import android.app.AlarmManager;
@@ -29,7 +39,6 @@
 import android.content.IntentFilter;
 import android.database.ContentObserver;
 import android.graphics.Bitmap;
-import android.hardware.fingerprint.Fingerprint;
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
 import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
@@ -42,6 +51,7 @@
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
@@ -69,16 +79,6 @@
 import java.util.List;
 import java.util.Map.Entry;
 
-import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
-import static android.os.BatteryManager.BATTERY_STATUS_FULL;
-import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
-import static android.os.BatteryManager.EXTRA_HEALTH;
-import static android.os.BatteryManager.EXTRA_LEVEL;
-import static android.os.BatteryManager.EXTRA_MAX_CHARGING_CURRENT;
-import static android.os.BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE;
-import static android.os.BatteryManager.EXTRA_PLUGGED;
-import static android.os.BatteryManager.EXTRA_STATUS;
-
 /**
  * Watches for updates that may be interesting to the keyguard, and provides
  * the up to date information as well as a registration for callbacks that care
@@ -176,6 +176,7 @@
     private boolean mGoingToSleep;
     private boolean mBouncer;
     private boolean mBootCompleted;
+    private boolean mUserUnlocked;
 
     // Device provisioning state
     private boolean mDeviceProvisioned;
@@ -202,6 +203,7 @@
     private AlarmManager mAlarmManager;
     private List<SubscriptionInfo> mSubscriptionInfo;
     private TrustManager mTrustManager;
+    private UserManager mUserManager;
     private int mFingerprintRunningState = FINGERPRINT_STATE_STOPPED;
 
     private final Handler mHandler = new Handler() {
@@ -554,6 +556,10 @@
                 && !hasFingerprintUnlockTimedOut(sCurrentUser);
     }
 
+    public boolean isUserUnlocked() {
+        return mUserUnlocked;
+    }
+
     public StrongAuthTracker getStrongAuthTracker() {
         return mStrongAuthTracker;
     }
@@ -1058,6 +1064,8 @@
         if (mFpm != null) {
             mFpm.addLockoutResetCallback(mLockoutResetCallback);
         }
+
+        mUserManager = context.getSystemService(UserManager.class);
     }
 
     private void updateFingerprintListeningState() {
@@ -1390,6 +1398,7 @@
     private void handleKeyguardReset() {
         if (DEBUG) Log.d(TAG, "handleKeyguardReset");
         updateFingerprintListeningState();
+        mUserUnlocked = mUserManager.isUserUnlocked(getCurrentUser());
     }
 
     /**
diff --git a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
index 2ff7e12..1518bdc 100644
--- a/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
+++ b/packages/Keyguard/src/com/android/keyguard/NumPadKey.java
@@ -23,6 +23,7 @@
 import android.util.AttributeSet;
 import android.view.HapticFeedbackConstants;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
@@ -53,8 +54,7 @@
             if (mTextView != null && mTextView.isEnabled()) {
                 mTextView.append(Character.forDigit(mDigit, 10));
             }
-            userActivity();
-            doHapticKeyClick();
+            userActivity();;
         }
     };
 
@@ -126,6 +126,14 @@
     }
 
     @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+            doHapticKeyClick();
+        }
+        return super.onTouchEvent(event);
+    }
+
+    @Override
     public void onDetachedFromWindow() {
         super.onDetachedFromWindow();
 
diff --git a/packages/Keyguard/test/Android.mk b/packages/Keyguard/test/Android.mk
index 15059c6..54224b7 100644
--- a/packages/Keyguard/test/Android.mk
+++ b/packages/Keyguard/test/Android.mk
@@ -16,6 +16,8 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
+LOCAL_USE_AAPT2 := true
+
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_PACKAGE_NAME := KeyguardTest
diff --git a/packages/Keyguard/test/SampleTrustAgent/Android.mk b/packages/Keyguard/test/SampleTrustAgent/Android.mk
index 2a18ee1..6ffb018 100644
--- a/packages/Keyguard/test/SampleTrustAgent/Android.mk
+++ b/packages/Keyguard/test/SampleTrustAgent/Android.mk
@@ -16,6 +16,8 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
+LOCAL_USE_AAPT2 := true
+
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_PACKAGE_NAME := SampleTrustAgent
@@ -27,6 +29,6 @@
 
 # LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
+LOCAL_STATIC_ANDROID_LIBRARIES := android-support-v4
 
 include $(BUILD_PACKAGE)
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
index 90dd440..8f254e9 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
@@ -282,8 +282,8 @@
             }
             final MtpDeviceInfo info = mtpDevice.getDeviceInfo();
             if (info != null) {
-                operationsSupported = mtpDevice.getDeviceInfo().getOperationsSupported();
-                eventsSupported = mtpDevice.getDeviceInfo().getEventsSupported();
+                operationsSupported = info.getOperationsSupported();
+                eventsSupported = info.getEventsSupported();
             }
         } else {
             roots = new MtpRoot[0];
diff --git a/packages/PrintSpooler/res/drawable/print_button.xml b/packages/PrintSpooler/res/drawable/print_button.xml
index b59afba..0114103 100644
--- a/packages/PrintSpooler/res/drawable/print_button.xml
+++ b/packages/PrintSpooler/res/drawable/print_button.xml
@@ -16,7 +16,7 @@
 -->
 
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="@color/print_button_tint_color">
+    android:color="?android:attr/colorControlHighlight">
     <item
         android:drawable="@drawable/print_button_background">
     </item>
diff --git a/packages/PrintSpooler/res/values/colors.xml b/packages/PrintSpooler/res/values/colors.xml
index 9b4e944..d83d364 100644
--- a/packages/PrintSpooler/res/values/colors.xml
+++ b/packages/PrintSpooler/res/values/colors.xml
@@ -16,8 +16,6 @@
 
 <resources>
 
-    <color name="print_button_tint_color">#EEFF41</color>
-
     <color name="print_preview_scrim_color">#99000000</color>
 
     <color name="print_preview_background_color">#F2F1F2</color>
diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java b/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java
index 5b9b169..6e1385a 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java
@@ -94,6 +94,7 @@
                     // but the content has changed.
                     if (mNextCommand == null) {
                         if (mUpdateSpec.pages != null && (mDocumentInfo.changed
+                                || mDocumentInfo.writtenPages == null
                                 || (mDocumentInfo.info.getPageCount()
                                         != PrintDocumentInfo.PAGE_COUNT_UNKNOWN
                                 && !PageRangeUtils.contains(mDocumentInfo.writtenPages,
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index 2c5f99e..906a146 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -549,6 +549,14 @@
                     .setContentType(info.getContentType())
                     .setPageCount(pageCount)
                     .build();
+
+            File file = mFileProvider.acquireFile(null);
+            try {
+                adjustedInfo.setDataSize(file.length());
+            } finally {
+                mFileProvider.releaseFile();
+            }
+
             mPrintJob.setDocumentInfo(adjustedInfo);
             mPrintJob.setPages(document.printedPages);
         }
@@ -3199,6 +3207,14 @@
                     .setContentType(oldDocInfo.getContentType())
                     .setPageCount(newPageCount)
                     .build();
+
+            File file = mFileProvider.acquireFile(null);
+            try {
+                newDocInfo.setDataSize(file.length());
+            } finally {
+                mFileProvider.releaseFile();
+            }
+
             mPrintJob.setDocumentInfo(newDocInfo);
         }
 
diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml
index 5193384..13c22c4 100644
--- a/packages/SettingsLib/res/values-af/arrays.xml
+++ b/packages/SettingsLib/res/values-af/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Af"</item>
     <item msgid="3054662377365844197">"Alles"</item>
     <item msgid="688870735111627832">"Alles behalwe radio"</item>
+    <item msgid="2850427388488887328">"net kern"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Af"</item>
     <item msgid="172978079776521897">"Alle loglêerbuffers"</item>
     <item msgid="3873873912383879240">"Alles behalwe radiologlêerbuffers"</item>
+    <item msgid="8489661142527693381">"net kernloglêerbuffer"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animasie af"</item>
diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml
index e8176e1..5767829 100644
--- a/packages/SettingsLib/res/values-am/arrays.xml
+++ b/packages/SettingsLib/res/values-am/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ጠፍቷል"</item>
     <item msgid="3054662377365844197">"ሁሉም"</item>
     <item msgid="688870735111627832">"ከሬዲዮ በስተቀር ሁሉም"</item>
+    <item msgid="2850427388488887328">"አውራ ከዋኝ ብቻ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ጠፍቷል"</item>
     <item msgid="172978079776521897">"የሁሉም ምዝግብ ማስታወሻ ቋቶች"</item>
     <item msgid="3873873912383879240">"ከሬዲዮ ምዝግብ ማስታወሻ ቋቶች በስተቀር ሁሉም"</item>
+    <item msgid="8489661142527693381">"የአውራ ከዋኝ ምዝግብ ማስታወሻ ቋት ብቻ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"እነማ ጠፍቷል"</item>
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
index e50421e..e3d70fe 100644
--- a/packages/SettingsLib/res/values-ar/arrays.xml
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"إيقاف"</item>
     <item msgid="3054662377365844197">"الكل"</item>
     <item msgid="688870735111627832">"الكل دون اللاسلكي"</item>
+    <item msgid="2850427388488887328">"‏kernel فقط"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"إيقاف"</item>
     <item msgid="172978079776521897">"كل المخازن المؤقتة للسجلات"</item>
     <item msgid="3873873912383879240">"كل المخازن المؤقتة باستثناء مخازن سجلات اللاسلكي"</item>
+    <item msgid="8489661142527693381">"‏التخزين المؤقت لسجل kernel فقط"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"إيقاف الرسوم المتحركة"</item>
diff --git a/packages/SettingsLib/res/values-az-rAZ/arrays.xml b/packages/SettingsLib/res/values-az-rAZ/arrays.xml
index 49bc262..396dfa1 100644
--- a/packages/SettingsLib/res/values-az-rAZ/arrays.xml
+++ b/packages/SettingsLib/res/values-az-rAZ/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Deaktiv"</item>
     <item msgid="3054662377365844197">"Bütün"</item>
     <item msgid="688870735111627832">"Radiodan başqa hamısı"</item>
+    <item msgid="2850427388488887328">"yalnız kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Qeyri-aktiv"</item>
     <item msgid="172978079776521897">"Bütün loq buferləri"</item>
     <item msgid="3873873912383879240">"Radio loq buferlərindən başqa hamısı"</item>
+    <item msgid="8489661142527693381">"yalnız kernel loq bufferi"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animasiya deaktiv"</item>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
index 47c6a28..3e9f904 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Isključeno"</item>
     <item msgid="3054662377365844197">"Sve"</item>
     <item msgid="688870735111627832">"Sve sem radija"</item>
+    <item msgid="2850427388488887328">"samo jezgro"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Isključeno"</item>
     <item msgid="172978079776521897">"Sve međumemorije evidencija"</item>
     <item msgid="3873873912383879240">"Sve osim međumemorija evidencija za radio"</item>
+    <item msgid="8489661142527693381">"samo međumemorija evidencije jezgra"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacija je isključena"</item>
diff --git a/packages/SettingsLib/res/values-be-rBY/arrays.xml b/packages/SettingsLib/res/values-be-rBY/arrays.xml
index 5374d28..20106ef 100644
--- a/packages/SettingsLib/res/values-be-rBY/arrays.xml
+++ b/packages/SettingsLib/res/values-be-rBY/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Адключана"</item>
     <item msgid="3054662377365844197">"Усе"</item>
     <item msgid="688870735111627832">"Усе, акрамя радыё"</item>
+    <item msgid="2850427388488887328">"толькі ядро"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Адключана"</item>
     <item msgid="172978079776521897">"Усе буферы журналаў"</item>
     <item msgid="3873873912383879240">"Усе, акрамя буфераў журналаў радыё"</item>
+    <item msgid="8489661142527693381">"толькі буфер журнала ядра"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Анімацыя выключаная"</item>
diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml
index 58314566..8e803f5 100644
--- a/packages/SettingsLib/res/values-bg/arrays.xml
+++ b/packages/SettingsLib/res/values-bg/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Изкл."</item>
     <item msgid="3054662377365844197">"Всички"</item>
     <item msgid="688870735111627832">"Вс. без радио"</item>
+    <item msgid="2850427388488887328">"само ядрото"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Изкл."</item>
     <item msgid="172978079776521897">"Всички регистрационни буфери"</item>
     <item msgid="3873873912383879240">"Всички регистрационни буфери освен тези за радиото"</item>
+    <item msgid="8489661142527693381">"само регистрационния буфер на ядрото"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Анимацията е изключена"</item>
diff --git a/packages/SettingsLib/res/values-bn-rBD/arrays.xml b/packages/SettingsLib/res/values-bn-rBD/arrays.xml
index bf666cf..d653a97 100644
--- a/packages/SettingsLib/res/values-bn-rBD/arrays.xml
+++ b/packages/SettingsLib/res/values-bn-rBD/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"বন্ধ আছে"</item>
     <item msgid="3054662377365844197">"সমস্ত"</item>
     <item msgid="688870735111627832">"সমস্ত কিন্তু রেডিও"</item>
+    <item msgid="2850427388488887328">"শুধুমাত্র কার্নেল"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"বন্ধ আছে"</item>
     <item msgid="172978079776521897">"সমস্ত লগ বাফার"</item>
     <item msgid="3873873912383879240">"সমস্ত কিন্তু রেডিও লগ বাফারগুলি"</item>
+    <item msgid="8489661142527693381">"শুধুমাত্র কার্নেল লগ বাফার"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"অ্যানিমেশন বন্ধ করুন"</item>
diff --git a/packages/SettingsLib/res/values-bs-rBA/arrays.xml b/packages/SettingsLib/res/values-bs-rBA/arrays.xml
index a02e0b2..8452696 100644
--- a/packages/SettingsLib/res/values-bs-rBA/arrays.xml
+++ b/packages/SettingsLib/res/values-bs-rBA/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Isključeno"</item>
     <item msgid="3054662377365844197">"Svi"</item>
     <item msgid="688870735111627832">"Svi osim radija"</item>
+    <item msgid="2850427388488887328">"samo kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Isključeno"</item>
     <item msgid="172978079776521897">"Međuspremnici svih zapisnika"</item>
     <item msgid="3873873912383879240">"Međuspremnici svih zapisnika osim radija"</item>
+    <item msgid="8489661142527693381">"samo međuspremnik zapisnika kernela"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacija isključena"</item>
diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml
index 9f987e6..e4f618e 100644
--- a/packages/SettingsLib/res/values-ca/arrays.xml
+++ b/packages/SettingsLib/res/values-ca/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desactivat"</item>
     <item msgid="3054662377365844197">"Tot"</item>
     <item msgid="688870735111627832">"Tot menys mòbil"</item>
+    <item msgid="2850427388488887328">"només kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desactivat"</item>
     <item msgid="172978079776521897">"Totes les memòries intermèdies de registre"</item>
     <item msgid="3873873912383879240">"Tot menys mem. interm. de registre de senyal mòbil"</item>
+    <item msgid="8489661142527693381">"només memòria intermèdia del registre de kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animació desactivada"</item>
diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml
index f70eb78..b0185e8 100644
--- a/packages/SettingsLib/res/values-cs/arrays.xml
+++ b/packages/SettingsLib/res/values-cs/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Vypnuto"</item>
     <item msgid="3054662377365844197">"Vše"</item>
     <item msgid="688870735111627832">"Bezdrát. ne"</item>
+    <item msgid="2850427388488887328">"pouze jádro"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Vypnuto"</item>
     <item msgid="172978079776521897">"Všechny vyrovnávací paměti protokolů"</item>
     <item msgid="3873873912383879240">"Všechny kromě protokolu bezdrátových modulů"</item>
+    <item msgid="8489661142527693381">"pouze protokol vyrovnávací paměti jádra"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animace je vypnuta"</item>
diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml
index 7413f65..d06f39f 100644
--- a/packages/SettingsLib/res/values-da/arrays.xml
+++ b/packages/SettingsLib/res/values-da/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Slået fra"</item>
     <item msgid="3054662377365844197">"Alle"</item>
     <item msgid="688870735111627832">"Radio undtaget"</item>
+    <item msgid="2850427388488887328">"kun kerne"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Slået fra"</item>
     <item msgid="172978079776521897">"Alle logbuffere"</item>
     <item msgid="3873873912383879240">"Alle undtagen radiologbuffere"</item>
+    <item msgid="8489661142527693381">"kun logbuffer for kerne"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation fra"</item>
diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml
index ab62cd2..9a81e8f 100644
--- a/packages/SettingsLib/res/values-de/arrays.xml
+++ b/packages/SettingsLib/res/values-de/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Aus"</item>
     <item msgid="3054662377365844197">"Alle"</item>
     <item msgid="688870735111627832">"Alle außer Funkschnittstelle"</item>
+    <item msgid="2850427388488887328">"Nur Kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Aus"</item>
     <item msgid="172978079776521897">"Alle Protokollzwischenspeicher"</item>
     <item msgid="3873873912383879240">"Alle Protokollzwischenspeicher außer Funkschnittstelle"</item>
+    <item msgid="8489661142527693381">"Nur Kernelprotokoll-Zwischenspeicher"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation aus"</item>
diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml
index 8a0ff8c..a6ce80a 100644
--- a/packages/SettingsLib/res/values-el/arrays.xml
+++ b/packages/SettingsLib/res/values-el/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Ανενεργό"</item>
     <item msgid="3054662377365844197">"Όλα"</item>
     <item msgid="688870735111627832">"Όλοι εκτός από του αποστολέα"</item>
+    <item msgid="2850427388488887328">"μόνο πυρήνας"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Ανενεργό"</item>
     <item msgid="172978079776521897">"Όλα τα αρχεία καταγραφής προσωρινής μνήμης"</item>
     <item msgid="3873873912383879240">"Όλα εκτός από τα αρχεία κατ.προσ.μνήμης αποστολέα"</item>
+    <item msgid="8489661142527693381">"μόνο προσωρινή μνήμη αρχείου καταγραφής πυρήνα"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Κινούμ.εικόνες απενεργοποιημένες"</item>
diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml
index 465fffa..2ee613f 100644
--- a/packages/SettingsLib/res/values-en-rAU/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Off"</item>
     <item msgid="3054662377365844197">"All"</item>
     <item msgid="688870735111627832">"All but radio"</item>
+    <item msgid="2850427388488887328">"kernel only"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Off"</item>
     <item msgid="172978079776521897">"All log buffers"</item>
     <item msgid="3873873912383879240">"All but radio log buffers"</item>
+    <item msgid="8489661142527693381">"kernel log buffer only"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation off"</item>
diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml
index 465fffa..2ee613f 100644
--- a/packages/SettingsLib/res/values-en-rGB/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Off"</item>
     <item msgid="3054662377365844197">"All"</item>
     <item msgid="688870735111627832">"All but radio"</item>
+    <item msgid="2850427388488887328">"kernel only"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Off"</item>
     <item msgid="172978079776521897">"All log buffers"</item>
     <item msgid="3873873912383879240">"All but radio log buffers"</item>
+    <item msgid="8489661142527693381">"kernel log buffer only"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation off"</item>
diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml
index 465fffa..2ee613f 100644
--- a/packages/SettingsLib/res/values-en-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Off"</item>
     <item msgid="3054662377365844197">"All"</item>
     <item msgid="688870735111627832">"All but radio"</item>
+    <item msgid="2850427388488887328">"kernel only"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Off"</item>
     <item msgid="172978079776521897">"All log buffers"</item>
     <item msgid="3873873912383879240">"All but radio log buffers"</item>
+    <item msgid="8489661142527693381">"kernel log buffer only"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation off"</item>
diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml
index d01c810..eae9b1b 100644
--- a/packages/SettingsLib/res/values-es-rUS/arrays.xml
+++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desactivado"</item>
     <item msgid="3054662377365844197">"Todo"</item>
     <item msgid="688870735111627832">"Excepto radio"</item>
+    <item msgid="2850427388488887328">"solo kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desactivado"</item>
     <item msgid="172978079776521897">"Todos los búferes de registro"</item>
     <item msgid="3873873912383879240">"Todos los búferes de registro, excepto radio"</item>
+    <item msgid="8489661142527693381">"solo búfer de registro de kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animación desactivada"</item>
diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml
index 42d9863..168f378 100644
--- a/packages/SettingsLib/res/values-es/arrays.xml
+++ b/packages/SettingsLib/res/values-es/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"No"</item>
     <item msgid="3054662377365844197">"Todo"</item>
     <item msgid="688870735111627832">"Todo menos señal móvil"</item>
+    <item msgid="2850427388488887328">"solo kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"No"</item>
     <item msgid="172978079776521897">"Todos los búferes de registro"</item>
     <item msgid="3873873912383879240">"Todo excepto búferes de registro de señal móvil"</item>
+    <item msgid="8489661142527693381">"solo búfer de registro del kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animación desactivada"</item>
diff --git a/packages/SettingsLib/res/values-et-rEE/arrays.xml b/packages/SettingsLib/res/values-et-rEE/arrays.xml
index 1df93cf..019bf50 100644
--- a/packages/SettingsLib/res/values-et-rEE/arrays.xml
+++ b/packages/SettingsLib/res/values-et-rEE/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Väljas"</item>
     <item msgid="3054662377365844197">"Kõik"</item>
     <item msgid="688870735111627832">"Kõik, v.a raadio"</item>
+    <item msgid="2850427388488887328">"ainult tuum"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Väljas"</item>
     <item msgid="172978079776521897">"Kõik logi puhvrid"</item>
     <item msgid="3873873912383879240">"Kõik, v.a raadiologi puhvrid"</item>
+    <item msgid="8489661142527693381">"ainult tuuma logi puhver"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animatsioon väljas"</item>
diff --git a/packages/SettingsLib/res/values-eu-rES/arrays.xml b/packages/SettingsLib/res/values-eu-rES/arrays.xml
index e349774..c617445 100644
--- a/packages/SettingsLib/res/values-eu-rES/arrays.xml
+++ b/packages/SettingsLib/res/values-eu-rES/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desaktibatuta"</item>
     <item msgid="3054662377365844197">"Guztiak"</item>
     <item msgid="688870735111627832">"Guztiak, irratiarenak izan ezik"</item>
+    <item msgid="2850427388488887328">"kernela soilik"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desaktibatuta"</item>
     <item msgid="172978079776521897">"Erregistroen buffer guztiak"</item>
     <item msgid="3873873912383879240">"Erregistroen buffer guztiak, irratiarenak izan ezik"</item>
+    <item msgid="8489661142527693381">"kernelaren erregistroaren bufferra soilik"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animazioa desaktibatuta"</item>
diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml
index 60f1757..6dc8491 100644
--- a/packages/SettingsLib/res/values-fa/arrays.xml
+++ b/packages/SettingsLib/res/values-fa/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"خاموش"</item>
     <item msgid="3054662377365844197">"همه"</item>
     <item msgid="688870735111627832">"همه به‌جز رادیو"</item>
+    <item msgid="2850427388488887328">"فقط هسته اصلی"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"خاموش"</item>
     <item msgid="172978079776521897">"همه بافرهای گزارش"</item>
     <item msgid="3873873912383879240">"همه به‌جز بافرهای گزارش رادیو"</item>
+    <item msgid="8489661142527693381">"فقط بافر گزارش هسته اصلی"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"پویانمایی خاموش"</item>
diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml
index 6796235..3c2fe61 100644
--- a/packages/SettingsLib/res/values-fi/arrays.xml
+++ b/packages/SettingsLib/res/values-fi/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Ei käytössä"</item>
     <item msgid="3054662377365844197">"Kaikki"</item>
     <item msgid="688870735111627832">"Kaikki paitsi radio"</item>
+    <item msgid="2850427388488887328">"vain kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Ei käytössä"</item>
     <item msgid="172978079776521897">"Kaikki lokipuskurit"</item>
     <item msgid="3873873912383879240">"Kaikki paitsi radiolokipuskurit"</item>
+    <item msgid="8489661142527693381">"vain kernel-lokipuskuri"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animaatio pois käytöstä"</item>
diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
index b0be48a..ba25d27 100644
--- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Désactivé"</item>
     <item msgid="3054662377365844197">"Tous"</item>
     <item msgid="688870735111627832">"Tous sauf radio"</item>
+    <item msgid="2850427388488887328">"noyau uniquement"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Désactivé"</item>
     <item msgid="172978079776521897">"Tous les tampons de journal"</item>
     <item msgid="3873873912383879240">"Tous les tampons de journal sauf celui de la radio"</item>
+    <item msgid="8489661142527693381">"tampon journal du noyau uniquement"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation désactivée"</item>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
index 14f175c..3340afb 100644
--- a/packages/SettingsLib/res/values-fr/arrays.xml
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Désactivé"</item>
     <item msgid="3054662377365844197">"Tous"</item>
     <item msgid="688870735111627832">"Tous sauf radio"</item>
+    <item msgid="2850427388488887328">"noyau uniquement"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Désactivé"</item>
     <item msgid="172978079776521897">"Toutes les mémoires tampon journal"</item>
     <item msgid="3873873912383879240">"Toutes sauf les mémoires tampon journal radio"</item>
+    <item msgid="8489661142527693381">"tampon journal du noyau uniquement"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animation désactivée"</item>
diff --git a/packages/SettingsLib/res/values-gl-rES/arrays.xml b/packages/SettingsLib/res/values-gl-rES/arrays.xml
index db7184d..201cda2 100644
--- a/packages/SettingsLib/res/values-gl-rES/arrays.xml
+++ b/packages/SettingsLib/res/values-gl-rES/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desactivado"</item>
     <item msgid="3054662377365844197">"Todo"</item>
     <item msgid="688870735111627832">"Agás radio"</item>
+    <item msgid="2850427388488887328">"só kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desactivado"</item>
     <item msgid="172978079776521897">"Todos os búfers de rexistro"</item>
     <item msgid="3873873912383879240">"Todo agás os búfers de rexistro de radio"</item>
+    <item msgid="8489661142527693381">"só búfer do rexistro do kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animación desactivada"</item>
diff --git a/packages/SettingsLib/res/values-gu-rIN/arrays.xml b/packages/SettingsLib/res/values-gu-rIN/arrays.xml
index e2d4a06..c746188 100644
--- a/packages/SettingsLib/res/values-gu-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-gu-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"બંધ"</item>
     <item msgid="3054662377365844197">"તમામ"</item>
     <item msgid="688870735111627832">"તમામ પરંતુ રેડિઓ"</item>
+    <item msgid="2850427388488887328">"ફક્ત કર્નલ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"બંધ"</item>
     <item msgid="172978079776521897">"તમામ લૉગ બફર્સ"</item>
     <item msgid="3873873912383879240">"તમામ પરંતુ રેડિઓ લૉગ બફર્સ"</item>
+    <item msgid="8489661142527693381">"ફક્ત કર્નલ લૉગ બફર"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"એનિમેશન બંધ"</item>
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
index e54b8c5..29b6bef 100644
--- a/packages/SettingsLib/res/values-hi/arrays.xml
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"बंद"</item>
     <item msgid="3054662377365844197">"सभी"</item>
     <item msgid="688870735111627832">"रेडियो छोड़कर सभी"</item>
+    <item msgid="2850427388488887328">"केवल कर्नल"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"बंद"</item>
     <item msgid="172978079776521897">"सभी लॉग बफ़र"</item>
     <item msgid="3873873912383879240">"रेडियो लॉग बफ़र को छोड़कर सभी"</item>
+    <item msgid="8489661142527693381">"केवल कर्नल लॉग बफ़र"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"एनिमेशन बंद"</item>
diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml
index 795cf68..a2d253c 100644
--- a/packages/SettingsLib/res/values-hr/arrays.xml
+++ b/packages/SettingsLib/res/values-hr/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Isključeno"</item>
     <item msgid="3054662377365844197">"Sve"</item>
     <item msgid="688870735111627832">"Sve osim radija"</item>
+    <item msgid="2850427388488887328">"samo jezgra"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Isključeno"</item>
     <item msgid="172978079776521897">"Svi međuspremnici zapisa"</item>
     <item msgid="3873873912383879240">"Sve osim međuspremnika zapisnika radija"</item>
+    <item msgid="8489661142527693381">"samo međuspremnik zapisnika jezgre"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacija isključena"</item>
diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml
index 850ef5d..41ce4b0 100644
--- a/packages/SettingsLib/res/values-hu/arrays.xml
+++ b/packages/SettingsLib/res/values-hu/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Kikapcsolva"</item>
     <item msgid="3054662377365844197">"Összes"</item>
     <item msgid="688870735111627832">"Rádiót kivéve"</item>
+    <item msgid="2850427388488887328">"csak kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Kikapcsolva"</item>
     <item msgid="172978079776521897">"Minden naplópuffer"</item>
     <item msgid="3873873912383879240">"A rádiónapló-pufferen kívül mindegyik"</item>
+    <item msgid="8489661142527693381">"csak kernelnaplópuffer"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animáció ki"</item>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 84aee5b..0d8ec26 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -326,7 +326,7 @@
     <string name="disabled_by_admin_summary_text" msgid="6750513964908334617">"Rendszergazda által irányítva"</string>
     <string name="enabled_by_admin" msgid="2386503803463071894">"Engedélyezve a rendszergazda által"</string>
     <string name="disabled_by_admin" msgid="3669999613095206948">"Letiltva a rendszergazda által"</string>
-    <string name="home" msgid="3256884684164448244">"Kezdőlap beállítása"</string>
+    <string name="home" msgid="3256884684164448244">"Beállítások kezdőlapja"</string>
   <string-array name="battery_labels">
     <item msgid="8494684293649631252">"0%"</item>
     <item msgid="8934126114226089439">"50%"</item>
diff --git a/packages/SettingsLib/res/values-hy-rAM/arrays.xml b/packages/SettingsLib/res/values-hy-rAM/arrays.xml
index 43c5eab..e93cbfc 100644
--- a/packages/SettingsLib/res/values-hy-rAM/arrays.xml
+++ b/packages/SettingsLib/res/values-hy-rAM/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Անջատված է"</item>
     <item msgid="3054662377365844197">"Բոլորը"</item>
     <item msgid="688870735111627832">"Բոլորը, ռադիոյից բացի"</item>
+    <item msgid="2850427388488887328">"միայն միջուկը"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Անջատված է"</item>
     <item msgid="172978079776521897">"Մատյանի բոլոր բուֆերները"</item>
     <item msgid="3873873912383879240">"Մատյանի բոլոր բուֆերները, ռադիո բուֆերներից բացի"</item>
+    <item msgid="8489661142527693381">"միայն միջուկի մատյանի պահնակը"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Անջատել շարժապատկերը"</item>
diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml
index 47223d2..a612639 100644
--- a/packages/SettingsLib/res/values-in/arrays.xml
+++ b/packages/SettingsLib/res/values-in/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Nonaktif"</item>
     <item msgid="3054662377365844197">"Semua"</item>
     <item msgid="688870735111627832">"Selain radio"</item>
+    <item msgid="2850427388488887328">"khusus kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Nonaktif"</item>
     <item msgid="172978079776521897">"Semua penyangga log"</item>
     <item msgid="3873873912383879240">"Semua kecuali penyangga log radio"</item>
+    <item msgid="8489661142527693381">"khusus penyangga log kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animasi mati"</item>
diff --git a/packages/SettingsLib/res/values-is-rIS/arrays.xml b/packages/SettingsLib/res/values-is-rIS/arrays.xml
index 324f689..64d4da2 100644
--- a/packages/SettingsLib/res/values-is-rIS/arrays.xml
+++ b/packages/SettingsLib/res/values-is-rIS/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Slökkt"</item>
     <item msgid="3054662377365844197">"Allt"</item>
     <item msgid="688870735111627832">"Allt n. útvarp"</item>
+    <item msgid="2850427388488887328">"einungis kjarni"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Slökkt"</item>
     <item msgid="172978079776521897">"Allt biðminni"</item>
     <item msgid="3873873912383879240">"Allt nema útvarpsbiðminni"</item>
+    <item msgid="8489661142527693381">"einungis kjarnaannálabiðminni"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Slökkt á hreyfiáhrifum"</item>
diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml
index 45fe546..e6938e0 100644
--- a/packages/SettingsLib/res/values-it/arrays.xml
+++ b/packages/SettingsLib/res/values-it/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Off"</item>
     <item msgid="3054662377365844197">"Tutti"</item>
     <item msgid="688870735111627832">"Tutti tranne il segnale radio"</item>
+    <item msgid="2850427388488887328">"solo kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Off"</item>
     <item msgid="172978079776521897">"Tutti i buffer log"</item>
     <item msgid="3873873912383879240">"Tutti tranne i buffer log del segnale radio"</item>
+    <item msgid="8489661142527693381">"solo buffer log kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animazione disattivata"</item>
diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml
index 7a186a0a..7bd46ad 100644
--- a/packages/SettingsLib/res/values-iw/arrays.xml
+++ b/packages/SettingsLib/res/values-iw/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"כבוי"</item>
     <item msgid="3054662377365844197">"הכול"</item>
     <item msgid="688870735111627832">"הכול מלבד רדיו"</item>
+    <item msgid="2850427388488887328">"ליבה בלבד"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"כבוי"</item>
     <item msgid="172978079776521897">"כל מאגרי הנתונים הזמניים של היומן"</item>
     <item msgid="3873873912383879240">"הכול מלבד מאגרי הנתונים הזמניים של יומן הרדיו"</item>
+    <item msgid="8489661142527693381">"מאגר נתונים זמני של היומן השמור בליבה בלבד"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"אנימציה כבויה"</item>
diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml
index e34f270..5b9b41c 100644
--- a/packages/SettingsLib/res/values-ja/arrays.xml
+++ b/packages/SettingsLib/res/values-ja/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"OFF"</item>
     <item msgid="3054662377365844197">"すべて"</item>
     <item msgid="688870735111627832">"ラジオ以外すべて"</item>
+    <item msgid="2850427388488887328">"カーネルのみ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"OFF"</item>
     <item msgid="172978079776521897">"すべてのログバッファ"</item>
     <item msgid="3873873912383879240">"ラジオ ログバッファ以外すべて"</item>
+    <item msgid="8489661142527693381">"カーネル ログ バッファのみ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"アニメーションオフ"</item>
diff --git a/packages/SettingsLib/res/values-ka-rGE/arrays.xml b/packages/SettingsLib/res/values-ka-rGE/arrays.xml
index d3fdb2b..5e63ddd 100644
--- a/packages/SettingsLib/res/values-ka-rGE/arrays.xml
+++ b/packages/SettingsLib/res/values-ka-rGE/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"გამორთული"</item>
     <item msgid="3054662377365844197">"ყველა"</item>
     <item msgid="688870735111627832">"რადიოს გარდა ყველა"</item>
+    <item msgid="2850427388488887328">"მხოლოდ ბირთვი"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"გამორთული"</item>
     <item msgid="172978079776521897">"ჟურნალების ყველა ბუფერი"</item>
     <item msgid="3873873912383879240">"რადიოჟურნალების ბუფერების გარდა ყველა"</item>
+    <item msgid="8489661142527693381">"მხოლოდ ბირთვის ჟურნალის ბუფერი"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"ანიმაციის გამორთვა"</item>
diff --git a/packages/SettingsLib/res/values-kk-rKZ/arrays.xml b/packages/SettingsLib/res/values-kk-rKZ/arrays.xml
index c7103ab..d1dae87 100644
--- a/packages/SettingsLib/res/values-kk-rKZ/arrays.xml
+++ b/packages/SettingsLib/res/values-kk-rKZ/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Өшірулі"</item>
     <item msgid="3054662377365844197">"Барлығы"</item>
     <item msgid="688870735111627832">"Радиодан басқасының барлығы"</item>
+    <item msgid="2850427388488887328">"тек ядро"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Өшірулі"</item>
     <item msgid="172978079776521897">"Барлық журнал буфері"</item>
     <item msgid="3873873912383879240">"Радио журналының буферлерінен басқасының барлығы"</item>
+    <item msgid="8489661142527693381">"тек ядро журналының буфері"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Aнимация өшірілген"</item>
diff --git a/packages/SettingsLib/res/values-km-rKH/arrays.xml b/packages/SettingsLib/res/values-km-rKH/arrays.xml
index 08d3880..17371f6 100644
--- a/packages/SettingsLib/res/values-km-rKH/arrays.xml
+++ b/packages/SettingsLib/res/values-km-rKH/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"បិទ"</item>
     <item msgid="3054662377365844197">"ទាំង​អស់"</item>
     <item msgid="688870735111627832">"ទាំងអស់ក្រៅពីវិទ្យុ"</item>
+    <item msgid="2850427388488887328">"kernel តែប៉ុណ្ណោះ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"បិទ"</item>
     <item msgid="172978079776521897">"អង្គចងចាំកំណត់ហេតុបណ្តោះអាសន្នទាំងអស់"</item>
     <item msgid="3873873912383879240">"ទាំងអស់ក្រៅពីអង្គចងចាំកំណត់ហេតុវិទ្យុបណ្តោះអាសន្ន"</item>
+    <item msgid="8489661142527693381">"អង្គចងចាំបណ្ដោះអាសន្នកំណត់ហេតុ kernel តែប៉ុណ្ណោះ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"បិទ​ចលនា"</item>
diff --git a/packages/SettingsLib/res/values-kn-rIN/arrays.xml b/packages/SettingsLib/res/values-kn-rIN/arrays.xml
index 432d46c..5f6d699 100644
--- a/packages/SettingsLib/res/values-kn-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-kn-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ಆಫ್"</item>
     <item msgid="3054662377365844197">"ಎಲ್ಲಾ"</item>
     <item msgid="688870735111627832">"ಎಲ್ಲಾ ಆದರೆ ರೇಡಿಯೊ"</item>
+    <item msgid="2850427388488887328">"ಕೆರ್ನಲ್ ಮಾತ್ರ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ಆಫ್ ಆಗಿದೆ"</item>
     <item msgid="172978079776521897">"ಎಲ್ಲಾ ಲಾಗ್ ಬಫರ್‌ಗಳು"</item>
     <item msgid="3873873912383879240">"ಎಲ್ಲಾ ಆದರೆ ರೇಡಿಯೊ ಲಾಗ್ ಬಫರ್‌ಗಳು"</item>
+    <item msgid="8489661142527693381">"ಕೆರ್ನಲ್ ಲಾಗ್ ಬಫರ್ ಮಾತ್ರ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"ಆನಿಮೇಶನ್ ಆಫ್"</item>
diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml
index 936e7d8..596f93e 100644
--- a/packages/SettingsLib/res/values-ko/arrays.xml
+++ b/packages/SettingsLib/res/values-ko/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"사용 안함"</item>
     <item msgid="3054662377365844197">"전체"</item>
     <item msgid="688870735111627832">"라디오 외 모두"</item>
+    <item msgid="2850427388488887328">"커널만"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"사용 안함"</item>
     <item msgid="172978079776521897">"모든 로그 버퍼"</item>
     <item msgid="3873873912383879240">"라디오 로그 버퍼를 제외한 모든 버퍼"</item>
+    <item msgid="8489661142527693381">"커널 로그 버퍼만"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"애니메이션 사용 안함"</item>
diff --git a/packages/SettingsLib/res/values-ky-rKG/arrays.xml b/packages/SettingsLib/res/values-ky-rKG/arrays.xml
index ffaaa5c..33a0b5d 100644
--- a/packages/SettingsLib/res/values-ky-rKG/arrays.xml
+++ b/packages/SettingsLib/res/values-ky-rKG/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Өчүк"</item>
     <item msgid="3054662377365844197">"Бардыгы"</item>
     <item msgid="688870735111627832">"Радиодон башка"</item>
+    <item msgid="2850427388488887328">"өзөк гана"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Өчүк"</item>
     <item msgid="172978079776521897">"Бардык таржымал буферлери"</item>
     <item msgid="3873873912383879240">"Радио таржымал буферлеринен башкаларынын баары"</item>
+    <item msgid="8489661142527693381">"өзөктүк журнал буфери гана"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Анимацияны өчүрүү"</item>
diff --git a/packages/SettingsLib/res/values-lo-rLA/arrays.xml b/packages/SettingsLib/res/values-lo-rLA/arrays.xml
index 11ec7a8..7a6b77a 100644
--- a/packages/SettingsLib/res/values-lo-rLA/arrays.xml
+++ b/packages/SettingsLib/res/values-lo-rLA/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ປິດ"</item>
     <item msgid="3054662377365844197">"ທັງໝົດ"</item>
     <item msgid="688870735111627832">"ທັງໝົດຍົກເວັ້ນວິທະຍຸ"</item>
+    <item msgid="2850427388488887328">"ເຄີນເນວເທົ່ານັ້ນ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ປິດ"</item>
     <item msgid="172978079776521897">"ບັບເຟີບັນທຶກທັງໝົດ"</item>
     <item msgid="3873873912383879240">"ທັງໝົດຍົກເວັ້ນບັບເຟີບັນທຶກວິທະຍຸ"</item>
+    <item msgid="8489661142527693381">"ບັບເຟີບັນທຶກເຄີນເນວເທົ່ານັ້ນ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"ປິດອະນິເມຊັນ"</item>
diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml
index 04bb2ed..49908ad 100644
--- a/packages/SettingsLib/res/values-lt/arrays.xml
+++ b/packages/SettingsLib/res/values-lt/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Išjungta"</item>
     <item msgid="3054662377365844197">"Viskas"</item>
     <item msgid="688870735111627832">"Viskas, išsk. rad. r."</item>
+    <item msgid="2850427388488887328">"tik branduolys"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Išjungta"</item>
     <item msgid="172978079776521897">"Visi žurnalų buferiai"</item>
     <item msgid="3873873912383879240">"Visi, išskyrus radijo ryšio žurnalų buferius"</item>
+    <item msgid="8489661142527693381">"tik branduolio žurnalo buferis"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacija išjungta"</item>
diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml
index f59a870..801de5d 100644
--- a/packages/SettingsLib/res/values-lv/arrays.xml
+++ b/packages/SettingsLib/res/values-lv/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Izslēgts"</item>
     <item msgid="3054662377365844197">"Visi"</item>
     <item msgid="688870735111627832">"Visi, izņemot radio"</item>
+    <item msgid="2850427388488887328">"tikai kodolā"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Izslēgts"</item>
     <item msgid="172978079776521897">"Visi reģistra buferi"</item>
     <item msgid="3873873912383879240">"Visi, izņemot radio reģistra buferus"</item>
+    <item msgid="8489661142527693381">"tikai kodola žurnāla buferī"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animācija ir izslēgta"</item>
diff --git a/packages/SettingsLib/res/values-mk-rMK/arrays.xml b/packages/SettingsLib/res/values-mk-rMK/arrays.xml
index 7a1c320..a72bcd3 100644
--- a/packages/SettingsLib/res/values-mk-rMK/arrays.xml
+++ b/packages/SettingsLib/res/values-mk-rMK/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Исклучено"</item>
     <item msgid="3054662377365844197">"Сите"</item>
     <item msgid="688870735111627832">"Сите освен радио"</item>
+    <item msgid="2850427388488887328">"само јадро"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Исклучено"</item>
     <item msgid="172978079776521897">"Привремена меморија на целата евиденција"</item>
     <item msgid="3873873912383879240">"Привремена мем. на цела евиденција освен за радио"</item>
+    <item msgid="8489661142527693381">"само привремена меморија за евиденција на јадро"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Без анимација"</item>
diff --git a/packages/SettingsLib/res/values-ml-rIN/arrays.xml b/packages/SettingsLib/res/values-ml-rIN/arrays.xml
index ff0652f..ac6841e 100644
--- a/packages/SettingsLib/res/values-ml-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-ml-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ഓഫ്"</item>
     <item msgid="3054662377365844197">"എല്ലാം"</item>
     <item msgid="688870735111627832">"റേഡിയോ ഒഴികെയുള്ള എല്ലാം"</item>
+    <item msgid="2850427388488887328">"കേർനൽ മാത്രം"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ഓഫ്"</item>
     <item msgid="172978079776521897">"എല്ലാ ലോഗ് ബഫറുകളും"</item>
     <item msgid="3873873912383879240">"റേഡിയോ ലോഗ് ബഫറുകൾ ഒഴികെയുള്ള എല്ലാം"</item>
+    <item msgid="8489661142527693381">"കേർനൽ ലോഗ് ബഫർ മാത്രം"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"ആനിമേഷൻ ഓഫുചെയ്യുക"</item>
diff --git a/packages/SettingsLib/res/values-mn-rMN/arrays.xml b/packages/SettingsLib/res/values-mn-rMN/arrays.xml
index f7c81bc8..e812043 100644
--- a/packages/SettingsLib/res/values-mn-rMN/arrays.xml
+++ b/packages/SettingsLib/res/values-mn-rMN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Идэвхгүй"</item>
     <item msgid="3054662377365844197">"Бүгд"</item>
     <item msgid="688870735111627832">"Радиогоос бусад бүх"</item>
+    <item msgid="2850427388488887328">"зөвхөн төвд"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Идэвхгүй"</item>
     <item msgid="172978079776521897">"Бүх логийн хамгаалалт"</item>
     <item msgid="3873873912383879240">"Радиогоос бусад бүх логийн хамгаалалт"</item>
+    <item msgid="8489661142527693381">"зөвхөн үйлдлийн системийн төв логийн хамгаалалтад"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Дүрс амилуулалт идэвхгүй"</item>
diff --git a/packages/SettingsLib/res/values-mr-rIN/arrays.xml b/packages/SettingsLib/res/values-mr-rIN/arrays.xml
index 956539c..5de2f49 100644
--- a/packages/SettingsLib/res/values-mr-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-mr-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"बंद"</item>
     <item msgid="3054662377365844197">"सर्व"</item>
     <item msgid="688870735111627832">"सर्व परंतु रेडिओ"</item>
+    <item msgid="2850427388488887328">"फक्त कर्नेल"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"बंद"</item>
     <item msgid="172978079776521897">"सर्व लॉग बफर"</item>
     <item msgid="3873873912383879240">"सर्व परंतु रेडिओ लॉग बफर"</item>
+    <item msgid="8489661142527693381">"फक्त कर्नेल लॉग बफर"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"अॅनिमेशन बंद"</item>
diff --git a/packages/SettingsLib/res/values-ms-rMY/arrays.xml b/packages/SettingsLib/res/values-ms-rMY/arrays.xml
index 245af94..d6ea50c 100644
--- a/packages/SettingsLib/res/values-ms-rMY/arrays.xml
+++ b/packages/SettingsLib/res/values-ms-rMY/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Mati"</item>
     <item msgid="3054662377365844197">"Semua"</item>
     <item msgid="688870735111627832">"Sma kcli radio"</item>
+    <item msgid="2850427388488887328">"inti sahaja"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Mati"</item>
     <item msgid="172978079776521897">"Semua penimbal log"</item>
     <item msgid="3873873912383879240">"Semua kecuali penimbal log radio"</item>
+    <item msgid="8489661142527693381">"penimbal log inti sahaja"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animasi dimatikan"</item>
diff --git a/packages/SettingsLib/res/values-my-rMM/arrays.xml b/packages/SettingsLib/res/values-my-rMM/arrays.xml
index 14981b6..7ba8e94 100644
--- a/packages/SettingsLib/res/values-my-rMM/arrays.xml
+++ b/packages/SettingsLib/res/values-my-rMM/arrays.xml
@@ -49,12 +49,12 @@
     <item msgid="1805837518286731242">"နှေးကွေးသောဆက်သွယ်မှုကို ယာယီရှောင်ရှားထားသည်"</item>
   </string-array>
   <string-array name="hdcp_checking_titles">
-    <item msgid="441827799230089869">"မည်သည့်အခါမှ မစစ်ဆေးပါနှင့်"</item>
+    <item msgid="441827799230089869">"ဘယ်တော့မှ မစစ်ဆေးပါနှင့်"</item>
     <item msgid="6042769699089883931">"DRMအကြောင်းအရာကိုသာ စစ်ဆေးမည်"</item>
     <item msgid="9174900380056846820">"အမြဲစစ်ဆေးရန်"</item>
   </string-array>
   <string-array name="hdcp_checking_summaries">
-    <item msgid="505558545611516707">"HDCP checkingအားမည်သည့်အခါမျှမသုံးပါနှင့်"</item>
+    <item msgid="505558545611516707">"HDCP checking အား ဘယ်တော့မှ မသုံးပါနှင့်"</item>
     <item msgid="3878793616631049349">"DRMအကြောင်းအရာအတွက် HDCPစစ်ဆေးခြင်းကိုသုံးမည်"</item>
     <item msgid="45075631231212732">"HDCP checkingအားအမြဲသုံးပါ"</item>
   </string-array>
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ပိတ်ပါ"</item>
     <item msgid="3054662377365844197">"အားလုံး"</item>
     <item msgid="688870735111627832">"ရေဒီယိုမှလွဲ၍ အားလုံး"</item>
+    <item msgid="2850427388488887328">"ကာနယ်သာ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ပိတ်ပါ"</item>
     <item msgid="172978079776521897">"မှတ်တမ်းသိမ်းဆည်းရန် လျာထားချက်များ အားလုံး"</item>
     <item msgid="3873873912383879240">"ရေဒီယို မှတ်တမ်းသိမ်းဆည်းရန်လျာထားချက်မှလွဲ၍ အားလုံး"</item>
+    <item msgid="8489661142527693381">"ကာနယ်မှတ်တမ်းသိမ်းဆည်းရန် လျာထားချက်သာ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"လှုပ်ရှားသက်ဝင်မှုပုံများကိုပိတ်ပါ"</item>
diff --git a/packages/SettingsLib/res/values-my-rMM/strings.xml b/packages/SettingsLib/res/values-my-rMM/strings.xml
index 096b0e0..6a1c331 100644
--- a/packages/SettingsLib/res/values-my-rMM/strings.xml
+++ b/packages/SettingsLib/res/values-my-rMM/strings.xml
@@ -204,7 +204,7 @@
     <string name="select_application" msgid="5156029161289091703">"အပလီကေးရှင်းရွေးချယ်ရန်"</string>
     <string name="no_application" msgid="2813387563129153880">"တခုမှမရှိ"</string>
     <string name="wait_for_debugger" msgid="1202370874528893091">"အပြစ်ရှာဖွေ ဖယ်ရှားချက်ကိုစောင့်ရန်"</string>
-    <string name="wait_for_debugger_summary" msgid="1766918303462746804">"အမှားပြင်ဆင်ရှာဖွေသည့် အပလီကေးရှင်းသည် လုပ်ငန်းမစမှီ တွဲဖက်ရန် အမှားရှာဖွေမည့်သူကို စောင့်နေသည်။"</string>
+    <string name="wait_for_debugger_summary" msgid="1766918303462746804">"အမှားပြင်ဆင်ရှာဖွေသည့် အပလီကေးရှင်းသည် လုပ်ငန်းမစမီ တွဲဖက်ရန် အမှားရှာဖွေမည့်သူကို စောင့်နေသည်။"</string>
     <string name="debug_input_category" msgid="1811069939601180246">"ထည့်သွင်းရန်"</string>
     <string name="debug_drawing_category" msgid="6755716469267367852">"ရေးဆွဲခြင်း"</string>
     <string name="debug_hw_drawing_category" msgid="6220174216912308658">"ဟာ့ဒ်ဝဲ အရှိန်မြှင့် ပုံဖော်ခြင်း"</string>
@@ -217,11 +217,11 @@
     <string name="show_touches" msgid="2642976305235070316">"တို့ခြင်းများကို ပြပါ"</string>
     <string name="show_touches_summary" msgid="6101183132903926324">"တို့ခြင်းများအတွက် အမြင်ဖြင့် တုံ့ပြန်မှုပြပါ"</string>
     <string name="show_screen_updates" msgid="5470814345876056420">"surface အဆင့်မြှင့်မှုများပြပါ"</string>
-    <string name="show_screen_updates_summary" msgid="2569622766672785529">"အဆင့်မြှင့်နေစဉ် ဝင်းဒိုးမျက်နှာတပြင်လုံးကို အချက်ပြရန်"</string>
+    <string name="show_screen_updates_summary" msgid="2569622766672785529">"အပ်ဒိတ်လုပ်စဉ် ဝင်းဒိုးမျက်နှာပြင်တွင် အချက်ပြရန်"</string>
     <string name="show_hw_screen_updates" msgid="5036904558145941590">"GPUမြင်ကွင်းအဆင့်မြှင့်ခြင်းများပြရန်"</string>
     <string name="show_hw_screen_updates_summary" msgid="1115593565980196197">"GPU နှင့်ဆွဲစဉ် ၀င်းဒိုးအတွင်းပိုင်း လျှပ်တပြက်မြင်ကွင်းများ"</string>
     <string name="show_hw_layers_updates" msgid="5645728765605699821">"ဟာ့ဒ်ဝဲအလွှာများအဆင်မြှင့်မှုကိုပြရန်"</string>
-    <string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"အဆင့်မြှင်ချိန် ဟာ့ဒ်ဝဲအလွှာများကို အစိမ်းရောင်ဖြင့်အချက်ပြရန်"</string>
+    <string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"အပ်ဒိတ်လုပ်ချိန် ဟာ့ဒ်ဝဲအလွှာများ အစိမ်းရောင်ပြပါ"</string>
     <string name="debug_hw_overdraw" msgid="2968692419951565417">"GPU ပိုသုံးစွဲမှုအမှားရှာဖွေပြင်ဆင်ရန်"</string>
     <string name="disable_overlays" msgid="2074488440505934665">"HWထပ်ဆင့်အရာများပိတ်ရန်"</string>
     <string name="disable_overlays_summary" msgid="3578941133710758592">"GPU ကိုမျက်နှာပြင်ခင်းကျင်းရာတွင် အမြဲသုံးပါ။"</string>
@@ -287,7 +287,7 @@
     <string name="convert_to_file_encryption_enabled" msgid="2861258671151428346">"ပြောင်းရန်…"</string>
     <string name="convert_to_file_encryption_done" msgid="7859766358000523953">"ဖိုင်ကို လုံခြုံအောင်ပြုလုပ်ပြီးပါပြီ"</string>
     <string name="title_convert_fbe" msgid="1263622876196444453">"ဖိုင်အခြေပြုလုံခြုံအောင်ပြုလုပ်ခြင်းသို့ ပြောင်းလဲရန်"</string>
-    <string name="convert_to_fbe_warning" msgid="6139067817148865527">"အချက်အလက်အပိုင်းကို ဖိုင်အခြေပြုလုံခြုံအောင်ပြုလုပ်ခြင်းသို့ ပြောင်းပါ။\n !!သတိ!! ၎င်းသည်သင့် အချက်အလက်များအားလုံးကို ဖျက်ပါမည်။ \n ဤလုပ်ဆောင်ချက်သည် ပထမအဆင့်တွင်သာ ရှိသေးပြီး မှန်ကန်စွာ လုပ်ဆောင်လိမ့်မည် မဟုတ်ပါ။\n ရှေ့ဆက်ရန် \'ရှင်းလင်းပြီး ပြောင်းလဲရန်…\' ကိုနှိပ်ပါ။"</string>
+    <string name="convert_to_fbe_warning" msgid="6139067817148865527">"အချက်အလက်အပိုင်းကို ဖိုင်အခြေပြုလုံခြုံအောင်ပြုလုပ်ခြင်းသို့ ပြောင်းပါ။\n !!သတိ!! ၎င်းသည်သင့် အချက်အလက်များအားလုံးကို ဖျက်ပါမည်။ \n ဤလုပ်ဆောင်ချက်သည် ပထမအဆင့်တွင်သာ ရှိသေးပြီး မှန်ကန်စွာ လုပ်ဆောင်လိမ့်မည် မဟုတ်ပါ။\n ဆက်လုပ်ရန် \'ရှင်းလင်းပြီး ပြောင်းလဲရန်…\' ကိုနှိပ်ပါ။"</string>
     <string name="button_convert_fbe" msgid="5152671181309826405">"ရှင်းလင်းပြီး ပြောင်းလဲရန်…"</string>
     <string name="picture_color_mode" msgid="4560755008730283695">"ဓာတ်ပုံအရောင်မုဒ်"</string>
     <string name="picture_color_mode_desc" msgid="1141891467675548590">"sRGB ကို အသုံးပြုပါ"</string>
diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml
index 45fcb87..bc4ff27 100644
--- a/packages/SettingsLib/res/values-nb/arrays.xml
+++ b/packages/SettingsLib/res/values-nb/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Av"</item>
     <item msgid="3054662377365844197">"Alle"</item>
     <item msgid="688870735111627832">"Unntatt radio"</item>
+    <item msgid="2850427388488887328">"bare kjerne"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Av"</item>
     <item msgid="172978079776521897">"Alle loggbuffere"</item>
     <item msgid="3873873912383879240">"Alle unntatt radiologgbuffere"</item>
+    <item msgid="8489661142527693381">"bare kjerneloggbuffer"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animasjon av"</item>
diff --git a/packages/SettingsLib/res/values-ne-rNP/arrays.xml b/packages/SettingsLib/res/values-ne-rNP/arrays.xml
index 39b32d99..2063f17 100644
--- a/packages/SettingsLib/res/values-ne-rNP/arrays.xml
+++ b/packages/SettingsLib/res/values-ne-rNP/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"निष्क्रिय"</item>
     <item msgid="3054662377365844197">"सबै"</item>
     <item msgid="688870735111627832">"रेडियो बाहेक सबै"</item>
+    <item msgid="2850427388488887328">"कर्नेल मात्र"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"निष्क्रिय"</item>
     <item msgid="172978079776521897">"सबै लग सम्बन्धी बफरहरू"</item>
     <item msgid="3873873912383879240">"रेडियो सम्बन्धी लगका बफरहरू बाहेक सबै"</item>
+    <item msgid="8489661142527693381">"कर्नेलको लग सम्बन्धी बफर मात्र"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"सजीविकरण बन्द"</item>
diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml
index e4c1902..4cdd4fa 100644
--- a/packages/SettingsLib/res/values-nl/arrays.xml
+++ b/packages/SettingsLib/res/values-nl/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Uit"</item>
     <item msgid="3054662377365844197">"Alle"</item>
     <item msgid="688870735111627832">"Alle beh. keuzerondje"</item>
+    <item msgid="2850427388488887328">"alleen kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Uit"</item>
     <item msgid="172978079776521897">"Alle logboekbuffers"</item>
     <item msgid="3873873912383879240">"Alle logboekbuffers behalve voor keuzerondjes"</item>
+    <item msgid="8489661142527693381">"alleen kernel-logbuffer"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animatie uit"</item>
diff --git a/packages/SettingsLib/res/values-pa-rIN/arrays.xml b/packages/SettingsLib/res/values-pa-rIN/arrays.xml
index 1a035e7..d0a26c8 100644
--- a/packages/SettingsLib/res/values-pa-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-pa-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ਬੰਦ"</item>
     <item msgid="3054662377365844197">"ਸਭ"</item>
     <item msgid="688870735111627832">"ਸਭ ਪਰ ਰੇਡੀਓ"</item>
+    <item msgid="2850427388488887328">"ਸਿਰਫ਼ ਕਰਨਲ"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ਬੰਦ"</item>
     <item msgid="172978079776521897">"ਸਭ ਲੌਗ ਬਫ਼ਰ"</item>
     <item msgid="3873873912383879240">"ਸਭ ਪਰ ਰੇਡੀਓ ਲੌਗ ਬਫ਼ਰ"</item>
+    <item msgid="8489661142527693381">"ਸਿਰਫ਼ ਕਰਨਲ ਲੌਗ ਬਫ਼ਰ"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"ਐਨੀਮੇਸ਼ਨ ਬੰਦ"</item>
diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml
index b12ea23..ff36e42 100644
--- a/packages/SettingsLib/res/values-pl/arrays.xml
+++ b/packages/SettingsLib/res/values-pl/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Wyłączone"</item>
     <item msgid="3054662377365844197">"Wszystkie"</item>
     <item msgid="688870735111627832">"Bez radiowych"</item>
+    <item msgid="2850427388488887328">"tylko jądro"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Wyłączone"</item>
     <item msgid="172978079776521897">"Wszystkie bufory dziennika"</item>
     <item msgid="3873873912383879240">"Wszystkie oprócz buforów dzienników radiowych"</item>
+    <item msgid="8489661142527693381">"tylko bufor dziennika jądra"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacja wyłączona"</item>
diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
index e39427d..90f061c 100644
--- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desativado"</item>
     <item msgid="3054662377365844197">"Todos"</item>
     <item msgid="688870735111627832">"Todos, exceto o rádio"</item>
+    <item msgid="2850427388488887328">"somente kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desativado"</item>
     <item msgid="172978079776521897">"Todos os buffers de registro"</item>
     <item msgid="3873873912383879240">"Todos, exceto os buffers de registro de rádio"</item>
+    <item msgid="8489661142527693381">"somente buffer de registro de kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animação desligada"</item>
diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
index 92657e8..2c8b835 100644
--- a/packages/SettingsLib/res/values-pt-rPT/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desativado"</item>
     <item msgid="3054662377365844197">"Todos"</item>
     <item msgid="688870735111627832">"Td, exc. rádio"</item>
+    <item msgid="2850427388488887328">"apenas kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desativado"</item>
     <item msgid="172978079776521897">"Todos os buffers de registo"</item>
     <item msgid="3873873912383879240">"Todos, exceto os buffers de registo de rádio"</item>
+    <item msgid="8489661142527693381">"apenas buffer do registo do kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animação desativada"</item>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 10b529a68..40dfc74 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -225,7 +225,7 @@
     <string name="debug_hw_overdraw" msgid="2968692419951565417">"Depurar sobreposição GPU"</string>
     <string name="disable_overlays" msgid="2074488440505934665">"Desativ. sobreposições HW"</string>
     <string name="disable_overlays_summary" msgid="3578941133710758592">"Utilizar sempre GPU para a composição do ecrã"</string>
-    <string name="simulate_color_space" msgid="6745847141353345872">"Simular espaço de cor"</string>
+    <string name="simulate_color_space" msgid="6745847141353345872">"Simular espaço da cor"</string>
     <string name="enable_opengl_traces_title" msgid="6790444011053219871">"Ativar vestígios OpenGL"</string>
     <string name="usb_audio_disable_routing" msgid="8114498436003102671">"Desativ. encam. áudio USB"</string>
     <string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"Desativar encam. auto. para periféricos áudio USB"</string>
diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml
index e39427d..90f061c 100644
--- a/packages/SettingsLib/res/values-pt/arrays.xml
+++ b/packages/SettingsLib/res/values-pt/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Desativado"</item>
     <item msgid="3054662377365844197">"Todos"</item>
     <item msgid="688870735111627832">"Todos, exceto o rádio"</item>
+    <item msgid="2850427388488887328">"somente kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Desativado"</item>
     <item msgid="172978079776521897">"Todos os buffers de registro"</item>
     <item msgid="3873873912383879240">"Todos, exceto os buffers de registro de rádio"</item>
+    <item msgid="8489661142527693381">"somente buffer de registro de kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animação desligada"</item>
diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml
index 35d39bd..d5574dd 100644
--- a/packages/SettingsLib/res/values-ro/arrays.xml
+++ b/packages/SettingsLib/res/values-ro/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Dezactivată"</item>
     <item msgid="3054662377365844197">"Toate"</item>
     <item msgid="688870735111627832">"Toate, fără radio"</item>
+    <item msgid="2850427388488887328">"numai nucleul"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Dezactivată"</item>
     <item msgid="172978079776521897">"Toate zonele-tampon pentru jurnale"</item>
     <item msgid="3873873912383879240">"Toate zonele-tampon pentru jurnale fără cele radio"</item>
+    <item msgid="8489661142527693381">"numai zona-tampon pentru jurnalul nucleului"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animație dezactivată"</item>
diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml
index 48406e4..2fff9dd 100644
--- a/packages/SettingsLib/res/values-ru/arrays.xml
+++ b/packages/SettingsLib/res/values-ru/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Отключено"</item>
     <item msgid="3054662377365844197">"Все"</item>
     <item msgid="688870735111627832">"Все, кроме системных"</item>
+    <item msgid="2850427388488887328">"только ядро"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Отключено"</item>
     <item msgid="172978079776521897">"Все буферы журналов"</item>
     <item msgid="3873873912383879240">"Все, кроме буферов системного журнала"</item>
+    <item msgid="8489661142527693381">"только буфер журнала ядра"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Без анимации"</item>
diff --git a/packages/SettingsLib/res/values-si-rLK/arrays.xml b/packages/SettingsLib/res/values-si-rLK/arrays.xml
index 328cf99..518a330 100644
--- a/packages/SettingsLib/res/values-si-rLK/arrays.xml
+++ b/packages/SettingsLib/res/values-si-rLK/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ක්‍රියාවිරහිතය"</item>
     <item msgid="3054662377365844197">"සියලු"</item>
     <item msgid="688870735111627832">"සැම වුවද රේඩි."</item>
+    <item msgid="2850427388488887328">"කර්නල පමණි"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ක්‍රියාවිරහිතයි"</item>
     <item msgid="172978079776521897">"සියලු ලොග අන්තරාචය"</item>
     <item msgid="3873873912383879240">"සියලු නමුත් රේඩියෝ ලොග අන්තරාචය"</item>
+    <item msgid="8489661142527693381">"කර්නල ලොග් අන්තරාචය පමණි"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"සජිවිකරණය අක්‍රිය කිරීම"</item>
diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml
index c8f9a06..2848040 100644
--- a/packages/SettingsLib/res/values-sk/arrays.xml
+++ b/packages/SettingsLib/res/values-sk/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Vypnuté"</item>
     <item msgid="3054662377365844197">"Všetko"</item>
     <item msgid="688870735111627832">"Okrem rádia"</item>
+    <item msgid="2850427388488887328">"iba jadro"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Vypnuté"</item>
     <item msgid="172978079776521897">"Všetky vyrovnávacie pamäte denníka"</item>
     <item msgid="3873873912383879240">"Všetky vyrovnávacie pamäte denníka (okrem rádia)"</item>
+    <item msgid="8489661142527693381">"iba vyrovnávacia pamäť denníka jadra"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animácia je vypnutá"</item>
diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml
index 124b5d8..baa16ac 100644
--- a/packages/SettingsLib/res/values-sl/arrays.xml
+++ b/packages/SettingsLib/res/values-sl/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Izklopljeno"</item>
     <item msgid="3054662377365844197">"Vse"</item>
     <item msgid="688870735111627832">"Vse (brez rad.)"</item>
+    <item msgid="2850427388488887328">"samo jedro"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Izklopljeno"</item>
     <item msgid="172978079776521897">"Vsi medpomnilniki dnevnika"</item>
     <item msgid="3873873912383879240">"Vsi medpomnilniki dnevnika, razen za radio"</item>
+    <item msgid="8489661142527693381">"samo medpomnilnik dnevnika jedra"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacija je izključena"</item>
diff --git a/packages/SettingsLib/res/values-sq-rAL/arrays.xml b/packages/SettingsLib/res/values-sq-rAL/arrays.xml
index 7c0cf61..c40ad83 100644
--- a/packages/SettingsLib/res/values-sq-rAL/arrays.xml
+++ b/packages/SettingsLib/res/values-sq-rAL/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Joaktive"</item>
     <item msgid="3054662377365844197">"Të gjitha"</item>
     <item msgid="688870735111627832">"Të gjitha përveç atyre radio"</item>
+    <item msgid="2850427388488887328">"vetëm bërthama"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Joaktive"</item>
     <item msgid="172978079776521897">"Të gjitha memoriet e regjistrit"</item>
     <item msgid="3873873912383879240">"Të gjitha memoriet e regjistrit, përveç atyre radio"</item>
+    <item msgid="8489661142527693381">"vetëm memoria e regjistrimit të bërthamës"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animacioni është i çaktivizuar"</item>
diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml
index fd93d4b..1817558 100644
--- a/packages/SettingsLib/res/values-sr/arrays.xml
+++ b/packages/SettingsLib/res/values-sr/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Искључено"</item>
     <item msgid="3054662377365844197">"Све"</item>
     <item msgid="688870735111627832">"Све сeм радија"</item>
+    <item msgid="2850427388488887328">"само језгро"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Искључено"</item>
     <item msgid="172978079776521897">"Све међумеморије евиденција"</item>
     <item msgid="3873873912383879240">"Све осим међумеморија евиденција за радио"</item>
+    <item msgid="8489661142527693381">"само међумеморија евиденције језгра"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Анимација је искључена"</item>
diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml
index b8cd869..9ecedca 100644
--- a/packages/SettingsLib/res/values-sv/arrays.xml
+++ b/packages/SettingsLib/res/values-sv/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Av"</item>
     <item msgid="3054662377365844197">"Alla"</item>
     <item msgid="688870735111627832">"Alla utom radio"</item>
+    <item msgid="2850427388488887328">"endast kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Av"</item>
     <item msgid="172978079776521897">"Alla loggbuffertar"</item>
     <item msgid="3873873912383879240">"Alla loggbuffertar utom för radio"</item>
+    <item msgid="8489661142527693381">"endast buffert av kernellogg"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animering avstängd"</item>
diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml
index 0f78b8b..e2fbfc3 100644
--- a/packages/SettingsLib/res/values-sw/arrays.xml
+++ b/packages/SettingsLib/res/values-sw/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Yamezimwa"</item>
     <item msgid="3054662377365844197">"Zote"</item>
     <item msgid="688870735111627832">"Zote isipokuwa redio"</item>
+    <item msgid="2850427388488887328">"keneli pekee"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Imezimwa"</item>
     <item msgid="172978079776521897">"Akiba ya kumbukumbu zote"</item>
     <item msgid="3873873912383879240">"Zote isipokuwa akiba ya kumbukumbu za redio"</item>
+    <item msgid="8489661142527693381">"akiba ya kumbukumbu ya keneli pekee"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Haiwani imezimwa"</item>
diff --git a/packages/SettingsLib/res/values-ta-rIN/arrays.xml b/packages/SettingsLib/res/values-ta-rIN/arrays.xml
index faecb0a..fed3cd1 100644
--- a/packages/SettingsLib/res/values-ta-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-ta-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"முடக்கத்தில்"</item>
     <item msgid="3054662377365844197">"எல்லாம்"</item>
     <item msgid="688870735111627832">"எல்லாம் (ரேடியோ தவிர்த்து)"</item>
+    <item msgid="2850427388488887328">"கெர்னல் மட்டும்"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"முடக்கத்தில்"</item>
     <item msgid="172978079776521897">"தற்காலிகமாகச் சேமித்த எல்லா பதிவுகளும்"</item>
     <item msgid="3873873912383879240">"எல்லாம் (தற்காலிகமாகச் சேமித்த ரேடியோ பதிவுகள் தவிர்த்து)"</item>
+    <item msgid="8489661142527693381">"கெர்னல் லாக் பஃபர் மட்டும்"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"அனிமேஷனை முடக்கு"</item>
diff --git a/packages/SettingsLib/res/values-te-rIN/arrays.xml b/packages/SettingsLib/res/values-te-rIN/arrays.xml
index 9d48a83..482a1da 100644
--- a/packages/SettingsLib/res/values-te-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-te-rIN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ఆఫ్ చేయి"</item>
     <item msgid="3054662377365844197">"అన్నీ"</item>
     <item msgid="688870735111627832">"అన్నీ కానీ రేడియో"</item>
+    <item msgid="2850427388488887328">"కెర్నెల్ మాత్రమే"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ఆఫ్ చేయి"</item>
     <item msgid="172978079776521897">"అన్ని లాగ్ బఫర్‌లు"</item>
     <item msgid="3873873912383879240">"అన్నీ కానీ రేడియో లాగ్ బఫర్‌లు"</item>
+    <item msgid="8489661142527693381">"కెర్నెల్ లాగ్ బఫర్ మాత్రమే"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"యానిమేషన్ ఆఫ్‌లో ఉంది"</item>
diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml
index e61d5ff..08caeb6 100644
--- a/packages/SettingsLib/res/values-th/arrays.xml
+++ b/packages/SettingsLib/res/values-th/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"ปิด"</item>
     <item msgid="3054662377365844197">"ทั้งหมด"</item>
     <item msgid="688870735111627832">"ทั้งหมดเว้นวิทยุ"</item>
+    <item msgid="2850427388488887328">"เฉพาะเคอร์เนล"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"ปิด"</item>
     <item msgid="172978079776521897">"บัฟเฟอร์บันทึกทั้งหมด"</item>
     <item msgid="3873873912383879240">"ทั้งหมดยกเว้นบัฟเฟอร์บันทึกวิทยุ"</item>
+    <item msgid="8489661142527693381">"เฉพาะบัฟเฟอร์ไฟล์บันทึกเคอร์เนล"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"ปิดภาพเคลื่อนไหว"</item>
diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml
index 032d41b..a1505dc 100644
--- a/packages/SettingsLib/res/values-tl/arrays.xml
+++ b/packages/SettingsLib/res/values-tl/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Naka-off"</item>
     <item msgid="3054662377365844197">"Lahat"</item>
     <item msgid="688870735111627832">"Maliban sa radyo"</item>
+    <item msgid="2850427388488887328">"kernel lang"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Naka-off"</item>
     <item msgid="172978079776521897">"Lahat ng buffer ng log"</item>
     <item msgid="3873873912383879240">"Lahat maliban sa buffer ng log ng radyo"</item>
+    <item msgid="8489661142527693381">"kernel log buffer lang"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Naka-off ang animation"</item>
diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml
index f706a70..c97e79c 100644
--- a/packages/SettingsLib/res/values-tr/arrays.xml
+++ b/packages/SettingsLib/res/values-tr/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Kapalı"</item>
     <item msgid="3054662377365844197">"Tümü"</item>
     <item msgid="688870735111627832">"Radyo hariç tümü"</item>
+    <item msgid="2850427388488887328">"yaln. çekirdek"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Kapalı"</item>
     <item msgid="172978079776521897">"Günlük arabelleklerin tümü"</item>
     <item msgid="3873873912383879240">"Radyo günlük arabellekleri hariç tümü"</item>
+    <item msgid="8489661142527693381">"yalnızca çekirdek günlük arabelleği"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animasyon kapalı"</item>
diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml
index f6cc7b1..7b720f3 100644
--- a/packages/SettingsLib/res/values-uk/arrays.xml
+++ b/packages/SettingsLib/res/values-uk/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Вимкнено"</item>
     <item msgid="3054662377365844197">"Усі"</item>
     <item msgid="688870735111627832">"Усі, крім радіо"</item>
+    <item msgid="2850427388488887328">"лише ядро"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Вимкнено"</item>
     <item msgid="172978079776521897">"Буфери всіх журналів"</item>
     <item msgid="3873873912383879240">"Буфери всіх журналів, крім радіо"</item>
+    <item msgid="8489661142527693381">"лише буфер журналу ядра"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Анімацію вимкнено"</item>
diff --git a/packages/SettingsLib/res/values-ur-rPK/arrays.xml b/packages/SettingsLib/res/values-ur-rPK/arrays.xml
index 4b5e3f6..4f081e5 100644
--- a/packages/SettingsLib/res/values-ur-rPK/arrays.xml
+++ b/packages/SettingsLib/res/values-ur-rPK/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"آف"</item>
     <item msgid="3054662377365844197">"تمام"</item>
     <item msgid="688870735111627832">"ریڈیو کے سوا تمام"</item>
+    <item msgid="2850427388488887328">"صرف کرنل"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"آف"</item>
     <item msgid="172978079776521897">"تمام لاگ بفرز"</item>
     <item msgid="3873873912383879240">"ریڈیو لاگ بفرز کے سوا تمام"</item>
+    <item msgid="8489661142527693381">"صرف کرنل لاگ بفر"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"اینیمیشن آف ہے"</item>
diff --git a/packages/SettingsLib/res/values-uz-rUZ/arrays.xml b/packages/SettingsLib/res/values-uz-rUZ/arrays.xml
index ce81fee..f501242 100644
--- a/packages/SettingsLib/res/values-uz-rUZ/arrays.xml
+++ b/packages/SettingsLib/res/values-uz-rUZ/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"O‘chiq"</item>
     <item msgid="3054662377365844197">"Hammasi"</item>
     <item msgid="688870735111627832">"Radiodan boshqa hammasi"</item>
+    <item msgid="2850427388488887328">"faqat yadro"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"O‘chiq"</item>
     <item msgid="172978079776521897">"Barcha jurnallar buferi"</item>
     <item msgid="3873873912383879240">"Radio jurnallar buferidan tashqari hammasi"</item>
+    <item msgid="8489661142527693381">"faqat yadro jurnali buferi"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Animatsiya o‘chiq"</item>
diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml
index ba2d4b9..237b4f4 100644
--- a/packages/SettingsLib/res/values-vi/arrays.xml
+++ b/packages/SettingsLib/res/values-vi/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Tắt"</item>
     <item msgid="3054662377365844197">"Tất cả"</item>
     <item msgid="688870735111627832">"Tất cả trừ đài"</item>
+    <item msgid="2850427388488887328">"chỉ kernel"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Tắt"</item>
     <item msgid="172978079776521897">"Tất cả lần tải nhật ký"</item>
     <item msgid="3873873912383879240">"Tất cả trừ lần tải nhật ký qua đài"</item>
+    <item msgid="8489661142527693381">"chỉ vùng đệm nhật ký kernel"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Tắt hình động"</item>
diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
index fa1e909..8a3febd 100644
--- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"关闭"</item>
     <item msgid="3054662377365844197">"全部"</item>
     <item msgid="688870735111627832">"所有非无线电"</item>
+    <item msgid="2850427388488887328">"仅限内核"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"关闭"</item>
     <item msgid="172978079776521897">"所有日志缓冲区"</item>
     <item msgid="3873873912383879240">"所有非无线电日志缓冲区"</item>
+    <item msgid="8489661142527693381">"仅限内核日志缓冲区"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"关闭动画"</item>
diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
index 63c7cac..fe65884 100644
--- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"關閉"</item>
     <item msgid="3054662377365844197">"全部"</item>
     <item msgid="688870735111627832">"所有非無線電"</item>
+    <item msgid="2850427388488887328">"只限核心"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"關閉"</item>
     <item msgid="172978079776521897">"所有記錄緩衝區"</item>
     <item msgid="3873873912383879240">"所有非無線電記錄緩衝區"</item>
+    <item msgid="8489661142527693381">"只限核心記錄緩衝區"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"關閉動畫"</item>
diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
index e816f1a..0939e93 100644
--- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"關閉"</item>
     <item msgid="3054662377365844197">"全部"</item>
     <item msgid="688870735111627832">"無線電以外"</item>
+    <item msgid="2850427388488887328">"僅限核心"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"關閉"</item>
     <item msgid="172978079776521897">"所有紀錄緩衝區"</item>
     <item msgid="3873873912383879240">"無線電紀錄緩衝區以外的所有紀錄緩衝區"</item>
+    <item msgid="8489661142527693381">"僅限核心紀錄緩衝區"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"關閉動畫"</item>
diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml
index f6a1f16..772dee8 100644
--- a/packages/SettingsLib/res/values-zu/arrays.xml
+++ b/packages/SettingsLib/res/values-zu/arrays.xml
@@ -84,11 +84,13 @@
     <item msgid="1744840221860799971">"Valiwe"</item>
     <item msgid="3054662377365844197">"Konke"</item>
     <item msgid="688870735111627832">"Konke ngaphandle kwerediyo"</item>
+    <item msgid="2850427388488887328">"i-kernel kuphela"</item>
   </string-array>
   <string-array name="select_logpersist_summaries">
     <item msgid="2216470072500521830">"Valiwe"</item>
     <item msgid="172978079776521897">"Onke amabhafa elogi"</item>
     <item msgid="3873873912383879240">"Konke ngaphandle kwamabhafa elogi yerediyo"</item>
+    <item msgid="8489661142527693381">"ilogi ye-kernel kuphela"</item>
   </string-array>
   <string-array name="window_animation_scale_entries">
     <item msgid="8134156599370824081">"Isithombe esinyakazayo sivliwe"</item>
diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml
index eac3964..920e061 100644
--- a/packages/SettingsLib/res/values/arrays.xml
+++ b/packages/SettingsLib/res/values/arrays.xml
@@ -386,4 +386,12 @@
         <item>3</item>
     </string-array>
 
+    <!-- IDs for each color mode. The values must match the corresponding constants in
+         android.view.Display -->
+    <integer-array name="color_mode_ids">
+        <item>0</item>
+        <item>-1</item>
+        <item>7</item>
+    </integer-array>
+
 </resources>
diff --git a/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java b/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java
index 5791168..21116b8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java
@@ -26,6 +26,7 @@
 import android.content.res.Resources.Theme;
 import android.content.res.TypedArray;
 import android.net.Uri;
+import android.provider.Settings.Global;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
@@ -92,6 +93,9 @@
      */
     public static boolean prepareHelpMenuItem(final Activity activity, MenuItem helpMenuItem,
             String helpUriString, String backupContext) {
+        if (Global.getInt(activity.getContentResolver(), Global.DEVICE_PROVISIONED, 0) == 0) {
+            return false;
+        }
         if (TextUtils.isEmpty(helpUriString)) {
             // The help url string is empty or null, so set the help menu item to be invisible.
             helpMenuItem.setVisible(false);
@@ -129,6 +133,9 @@
 
     public static Intent getHelpIntent(Context context, String helpUriString,
             String backupContext) {
+        if (Global.getInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0) == 0) {
+            return null;
+        }
         // Try to handle as Intent Uri, otherwise just treat as Uri.
         try {
             Intent intent = Intent.parseUri(helpUriString,
diff --git a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java
index d368de9..151e0ea 100644
--- a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java
+++ b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java
@@ -16,18 +16,11 @@
 package com.android.settingslib;
 
 import android.content.Context;
-import android.net.wifi.WifiManager;
 import android.os.SystemProperties;
 import android.telephony.CarrierConfigManager;
 
 public class TetherUtil {
 
-    public static boolean setWifiTethering(boolean enable, Context context) {
-        final WifiManager wifiManager =
-                (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
-        return wifiManager.setWifiApEnabled(null, enable);
-    }
-
     private static boolean isEntitlementCheckRequired(Context context) {
         final CarrierConfigManager configManager = (CarrierConfigManager) context
              .getSystemService(Context.CARRIER_CONFIG_SERVICE);
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java
index 548ddf8..e049079 100644
--- a/packages/SettingsLib/src/com/android/settingslib/Utils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java
@@ -169,7 +169,7 @@
      * Determine whether a package is a "system package", in which case certain things (like
      * disabling notifications or disabling the package altogether) should be disallowed.
      */
-    public static boolean isSystemPackage(PackageManager pm, PackageInfo pkg) {
+    public static boolean isSystemPackage(Resources resources, PackageManager pm, PackageInfo pkg) {
         if (sSystemSignature == null) {
             sSystemSignature = new Signature[]{ getSystemSignature(pm) };
         }
@@ -187,7 +187,8 @@
                 || pkg.packageName.equals(sPermissionControllerPackageName)
                 || pkg.packageName.equals(sServicesSystemSharedLibPackageName)
                 || pkg.packageName.equals(sSharedSystemSharedLibPackageName)
-                || pkg.packageName.equals(PrintManager.PRINT_SPOOLER_PACKAGE_NAME);
+                || pkg.packageName.equals(PrintManager.PRINT_SPOOLER_PACKAGE_NAME)
+                || isDeviceProvisioningPackage(resources, pkg.packageName);
     }
 
     private static Signature getFirstSignature(PackageInfo pkg) {
@@ -205,4 +206,14 @@
         }
         return null;
     }
+
+    /**
+     * Returns {@code true} if the supplied package is the device provisioning app. Otherwise,
+     * returns {@code false}.
+     */
+    public static boolean isDeviceProvisioningPackage(Resources resources, String packageName) {
+        String deviceProvisioningPackage = resources.getString(
+                com.android.internal.R.string.config_deviceProvisioningPackage);
+        return deviceProvisioningPackage != null && deviceProvisioningPackage.equals(packageName);
+    }
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index 7392453..16bfc56 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -582,10 +582,10 @@
         public ArrayList<AppEntry> rebuild(AppFilter filter, Comparator<AppEntry> comparator,
                 boolean foreground) {
             synchronized (mRebuildSync) {
-                synchronized (mEntriesMap) {
+                synchronized (mRebuildingSessions) {
                     mRebuildingSessions.add(this);
                     mRebuildRequested = true;
-                    mRebuildAsync = false;
+                    mRebuildAsync = true;
                     mRebuildFilter = filter;
                     mRebuildComparator = comparator;
                     mRebuildForeground = foreground;
@@ -597,23 +597,7 @@
                     }
                 }
 
-                // We will wait for .25s for the list to be built.
-                long waitend = SystemClock.uptimeMillis()+250;
-
-                while (mRebuildResult == null) {
-                    long now = SystemClock.uptimeMillis();
-                    if (now >= waitend) {
-                        break;
-                    }
-                    try {
-                        mRebuildSync.wait(waitend - now);
-                    } catch (InterruptedException e) {
-                    }
-                }
-
-                mRebuildAsync = true;
-
-                return mRebuildResult;
+                return null;
             }
         }
 
@@ -776,7 +760,7 @@
         public void handleMessage(Message msg) {
             // Always try rebuilding list first thing, if needed.
             ArrayList<Session> rebuildingSessions = null;
-            synchronized (mEntriesMap) {
+            synchronized (mRebuildingSessions) {
                 if (mRebuildingSessions.size() > 0) {
                     rebuildingSessions = new ArrayList<Session>(mRebuildingSessions);
                     mRebuildingSessions.clear();
diff --git a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
index 78d7c56..a99e668 100644
--- a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java
@@ -20,6 +20,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.hardware.display.DisplayManager;
 import android.os.AsyncTask;
 import android.os.RemoteException;
 import android.util.DisplayMetrics;
@@ -95,7 +96,9 @@
         }
 
         final Resources res = context.getResources();
-        final DisplayMetrics metrics = res.getDisplayMetrics();
+        final DisplayMetrics metrics = new DisplayMetrics();
+        context.getDisplay().getRealMetrics(metrics);
+
         final int currentDensity = metrics.densityDpi;
         int currentDensityIndex = -1;
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
index b9c758c..e70cc29 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
@@ -27,6 +27,7 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.provider.Settings.Global;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Pair;
@@ -115,6 +116,8 @@
     public static List<DashboardCategory> getCategories(Context context,
             HashMap<Pair<String, String>, Tile> cache) {
         final long startTime = System.currentTimeMillis();
+        boolean setup = Global.getInt(context.getContentResolver(), Global.DEVICE_PROVISIONED, 0)
+                != 0;
         ArrayList<Tile> tiles = new ArrayList<>();
         UserManager userManager = UserManager.get(context);
         for (UserHandle user : userManager.getUserProfiles()) {
@@ -127,7 +130,9 @@
                 getTilesForAction(context, user, MANUFACTURER_SETTINGS, cache,
                         MANUFACTURER_DEFAULT_CATEGORY, tiles, false);
             }
-            getTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);
+            if (setup) {
+                getTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);
+            }
         }
         HashMap<String, DashboardCategory> categoryMap = new HashMap<>();
         for (Tile tile : tiles) {
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 108814e..978ca94 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -216,7 +216,4 @@
 
     <!-- Default setting for ability to add users from the lock screen -->
     <bool name="def_add_users_from_lockscreen">false</bool>
-
-    <!-- Default setting for disallow oem unlock. -->
-    <bool name="def_oem_unlock_disallow">false</bool>
 </resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
index b79ce80..bf48e5d 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
@@ -247,7 +247,6 @@
                 return Settings.Secure.getInt(mContext.getContentResolver(), name, 0) != 0;
             case Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES:
             case Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES:
-            case Settings.Secure.ACCESSIBILITY_DISPLAY_COLOR_MATRIX:
             case Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER:
             case Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE:
                 return !TextUtils.isEmpty(Settings.Secure.getString(
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 950c7d3..1928f92 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -799,7 +799,8 @@
 
         // If this is a setting that is currently restricted for this user, do not allow
         // unrestricting changes.
-        if (isGlobalOrSecureSettingRestrictedForUser(name, callingUserId, value)) {
+        if (isGlobalOrSecureSettingRestrictedForUser(name, callingUserId, value,
+                Binder.getCallingUid())) {
             return false;
         }
 
@@ -930,7 +931,8 @@
 
         // If this is a setting that is currently restricted for this user, do not allow
         // unrestricting changes.
-        if (isGlobalOrSecureSettingRestrictedForUser(name, callingUserId, value)) {
+        if (isGlobalOrSecureSettingRestrictedForUser(name, callingUserId, value,
+                Binder.getCallingUid())) {
             return false;
         }
 
@@ -1153,7 +1155,7 @@
      * @return true if the change is prohibited, false if the change is allowed.
      */
     private boolean isGlobalOrSecureSettingRestrictedForUser(String setting, int userId,
-            String value) {
+            String value, int callingUid) {
         String restriction;
         switch (setting) {
             case Settings.Secure.LOCATION_MODE:
@@ -1191,6 +1193,15 @@
                 restriction = UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
                 break;
 
+            case Settings.Secure.ALWAYS_ON_VPN_APP:
+            case Settings.Secure.ALWAYS_ON_VPN_LOCKDOWN:
+                // Whitelist system uid (ConnectivityService) and root uid to change always-on vpn
+                if (callingUid == Process.SYSTEM_UID || callingUid == Process.ROOT_UID) {
+                    return false;
+                }
+                restriction = UserManager.DISALLOW_CONFIG_VPN;
+                break;
+
             default:
                 if (setting != null && setting.startsWith(Settings.Global.DATA_ROAMING)) {
                     if ("0".equals(value)) return false;
@@ -2074,7 +2085,7 @@
         }
 
         private final class UpgradeController {
-            private static final int SETTINGS_VERSION = 128;
+            private static final int SETTINGS_VERSION = 129;
 
             private final int mUserId;
 
@@ -2330,17 +2341,41 @@
                 }
 
                 if (currentVersion == 127) {
-                    // Version 127: Disable OEM unlock setting by default on some devices.
-                    final SettingsState globalSettings = getGlobalSettingsLocked();
-                    String defaultOemUnlockDisabled = (getContext().getResources()
-                            .getBoolean(R.bool.def_oem_unlock_disallow) ? "1" : "0");
-                    globalSettings.insertSettingLocked(
-                            Settings.Global.OEM_UNLOCK_DISALLOWED,
-                            defaultOemUnlockDisabled,
-                            SettingsState.SYSTEM_PACKAGE_NAME);
+                    // version 127 is no longer used.
                     currentVersion = 128;
                 }
 
+                if (currentVersion == 128) {
+                    // Version 128: Allow OEMs to grant DND access to default apps. Note that
+                    // the new apps are appended to the list of already approved apps.
+                    final SettingsState systemSecureSettings =
+                            getSecureSettingsLocked(userId);
+
+                    final Setting policyAccess = systemSecureSettings.getSettingLocked(
+                            Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES);
+                    String defaultPolicyAccess = getContext().getResources().getString(
+                            com.android.internal.R.string.config_defaultDndAccessPackages);
+                    if (!TextUtils.isEmpty(defaultPolicyAccess)) {
+                        if (policyAccess.isNull()) {
+                            systemSecureSettings.insertSettingLocked(
+                                    Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES,
+                                    defaultPolicyAccess,
+                                    SettingsState.SYSTEM_PACKAGE_NAME);
+                        } else {
+                            StringBuilder currentSetting =
+                                    new StringBuilder(policyAccess.getValue());
+                            currentSetting.append(":");
+                            currentSetting.append(defaultPolicyAccess);
+                            systemSecureSettings.updateSettingLocked(
+                                    Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES,
+                                    currentSetting.toString(),
+                                    SettingsState.SYSTEM_PACKAGE_NAME);
+                        }
+                    }
+
+                    currentVersion = 129;
+                }
+
                 // vXXX: Add new settings above this point.
 
                 // Return the current version.
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 2efefb3..f1789ea 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -142,7 +142,7 @@
 
         <activity
             android:name=".BugreportWarningActivity"
-            android:theme="@android:style/Theme.Material.Light.Dialog.Alert"
+            android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert"
             android:finishOnCloseSystemDialogs="true"
             android:excludeFromRecents="true"
             android:exported="false" />
diff --git a/packages/Shell/res/layout/confirm_repeat.xml b/packages/Shell/res/layout/confirm_repeat.xml
index ad90af1..9f1d53e 100644
--- a/packages/Shell/res/layout/confirm_repeat.xml
+++ b/packages/Shell/res/layout/confirm_repeat.xml
@@ -18,10 +18,10 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingStart="16dip"
-    android:paddingEnd="16dip"
-    android:paddingTop="8dip"
-    android:paddingBottom="16dip"
+    android:paddingStart="24dip"
+    android:paddingEnd="24dip"
+    android:paddingTop="24dip"
+    android:paddingBottom="8dip"
     android:orientation="vertical"
     android:keepScreenOn="true">
     <ScrollView
diff --git a/packages/Shell/res/values-my-rMM/strings.xml b/packages/Shell/res/values-my-rMM/strings.xml
index c9486c9..7b9608e 100644
--- a/packages/Shell/res/values-my-rMM/strings.xml
+++ b/packages/Shell/res/values-my-rMM/strings.xml
@@ -39,5 +39,5 @@
     <string name="bugreport_info_name" msgid="4414036021935139527">"ဖိုင်အမည်"</string>
     <string name="bugreport_info_title" msgid="2306030793918239804">"ချွတ်ယွင်းချက် ခေါင်းစဉ်"</string>
     <string name="bugreport_info_description" msgid="5072835127481627722">"ချွတ်ယွင်းချက် အကျဉ်းချုပ်"</string>
-    <string name="save" msgid="4781509040564835759">"သိမ်းဆည်းပါ"</string>
+    <string name="save" msgid="4781509040564835759">"သိမ်းရန်"</string>
 </resources>
diff --git a/packages/Shell/res/values/strings.xml b/packages/Shell/res/values/strings.xml
index 3d6643d..5dfac95 100644
--- a/packages/Shell/res/values/strings.xml
+++ b/packages/Shell/res/values/strings.xml
@@ -25,8 +25,8 @@
     <!-- Content notification indicating a bugreport is being updated before it can be shared, asking the user to wait [CHAR LIMIT=50] -->
     <string name="bugreport_updating_wait">Please wait\u2026</string>
 
-    <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] -->
-    <string name="bugreport_finished_text" product="watch">Swipe left to share your bug report</string>
+    <!-- Text of notification indicating that bugreport will appear on the phone. [CHAR LIMIT=100] -->
+    <string name="bugreport_finished_text" product="watch">The bug report will appear on the phone shortly</string>
     <!-- Text of notification indicating that tapping will share the captured bugreport. [CHAR LIMIT=100] -->
     <string name="bugreport_finished_text" product="default">Tap to share your bug report</string>
     <!-- Text of notification indicating that swipe left will share the captured bugreport, but giving user the option to wait for the screenshot. [CHAR LIMIT=100] -->
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index 6bc4df7..235bfcc 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -17,6 +17,7 @@
 package com.android.shell;
 
 import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
+
 import static com.android.shell.BugreportPrefs.STATE_HIDE;
 import static com.android.shell.BugreportPrefs.STATE_UNKNOWN;
 import static com.android.shell.BugreportPrefs.getWarningState;
@@ -44,6 +45,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
+
 import com.google.android.collect.Lists;
 
 import android.accounts.Account;
@@ -78,6 +80,7 @@
 import android.util.Log;
 import android.util.Patterns;
 import android.util.SparseArray;
+import android.view.KeyEvent;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.View.OnFocusChangeListener;
@@ -212,6 +215,8 @@
 
     private static final Bundle sNotificationBundle = new Bundle();
 
+    private boolean mIsWatch;
+
     @Override
     public void onCreate() {
         mContext = getApplicationContext();
@@ -225,6 +230,9 @@
                 Log.w(TAG, "Could not create directory " + mScreenshotsDir);
             }
         }
+        final Configuration conf = mContext.getResources().getConfiguration();
+        mIsWatch = (conf.uiMode & Configuration.UI_MODE_TYPE_MASK) ==
+                Configuration.UI_MODE_TYPE_WATCH;
     }
 
     @Override
@@ -439,56 +447,68 @@
             return;
         }
 
-        final NumberFormat nf = NumberFormat.getPercentInstance();
-        nf.setMinimumFractionDigits(2);
-        nf.setMaximumFractionDigits(2);
-        final String percentageText = nf.format((double) info.progress / info.max);
-        final Action cancelAction = new Action.Builder(null, mContext.getString(
-                com.android.internal.R.string.cancel), newCancelIntent(mContext, info)).build();
-        final Intent infoIntent = new Intent(mContext, BugreportProgressService.class);
-        infoIntent.setAction(INTENT_BUGREPORT_INFO_LAUNCH);
-        infoIntent.putExtra(EXTRA_ID, info.id);
-        final PendingIntent infoPendingIntent =
-                PendingIntent.getService(mContext, info.id, infoIntent,
-                PendingIntent.FLAG_UPDATE_CURRENT);
-        final Action infoAction = new Action.Builder(null,
-                mContext.getString(R.string.bugreport_info_action),
-                infoPendingIntent).build();
-        final Intent screenshotIntent = new Intent(mContext, BugreportProgressService.class);
-        screenshotIntent.setAction(INTENT_BUGREPORT_SCREENSHOT);
-        screenshotIntent.putExtra(EXTRA_ID, info.id);
-        PendingIntent screenshotPendingIntent = mTakingScreenshot ? null : PendingIntent
-                .getService(mContext, info.id, screenshotIntent,
-                        PendingIntent.FLAG_UPDATE_CURRENT);
-        final Action screenshotAction = new Action.Builder(null,
-                mContext.getString(R.string.bugreport_screenshot_action),
-                screenshotPendingIntent).build();
-
-        final String title = mContext.getString(R.string.bugreport_in_progress_title, info.id);
-
-        final String name =
-                info.name != null ? info.name : mContext.getString(R.string.bugreport_unnamed);
-
-        final Notification notification = newBaseNotification(mContext)
-                .setContentTitle(title)
-                .setTicker(title)
-                .setContentText(name)
-                .setProgress(info.max, info.progress, false)
-                .setOngoing(true)
-                .setContentIntent(infoPendingIntent)
-                .setActions(infoAction, screenshotAction, cancelAction)
-                .build();
-
         if (info.finished) {
             Log.w(TAG, "Not sending progress notification because bugreport has finished already ("
                     + info + ")");
             return;
         }
+
+        final NumberFormat nf = NumberFormat.getPercentInstance();
+        nf.setMinimumFractionDigits(2);
+        nf.setMaximumFractionDigits(2);
+        final String percentageText = nf.format((double) info.progress / info.max);
+
+        String title = mContext.getString(R.string.bugreport_in_progress_title, info.id);
+
+        // TODO: Remove this workaround when notification progress is implemented on Wear.
+        if (mIsWatch) {
+            nf.setMinimumFractionDigits(0);
+            nf.setMaximumFractionDigits(0);
+            final String watchPercentageText = nf.format((double) info.progress / info.max);
+            title = title + "\n" + watchPercentageText;
+        }
+
+        final String name =
+                info.name != null ? info.name : mContext.getString(R.string.bugreport_unnamed);
+
+        final Notification.Builder builder = newBaseNotification(mContext)
+                .setContentTitle(title)
+                .setTicker(title)
+                .setContentText(name)
+                .setProgress(info.max, info.progress, false)
+                .setOngoing(true);
+
+        // Wear bugreport doesn't need the bug info dialog, screenshot and cancel action.
+        if (!mIsWatch) {
+            final Action cancelAction = new Action.Builder(null, mContext.getString(
+                    com.android.internal.R.string.cancel), newCancelIntent(mContext, info)).build();
+            final Intent infoIntent = new Intent(mContext, BugreportProgressService.class);
+            infoIntent.setAction(INTENT_BUGREPORT_INFO_LAUNCH);
+            infoIntent.putExtra(EXTRA_ID, info.id);
+            final PendingIntent infoPendingIntent =
+                    PendingIntent.getService(mContext, info.id, infoIntent,
+                    PendingIntent.FLAG_UPDATE_CURRENT);
+            final Action infoAction = new Action.Builder(null,
+                    mContext.getString(R.string.bugreport_info_action),
+                    infoPendingIntent).build();
+            final Intent screenshotIntent = new Intent(mContext, BugreportProgressService.class);
+            screenshotIntent.setAction(INTENT_BUGREPORT_SCREENSHOT);
+            screenshotIntent.putExtra(EXTRA_ID, info.id);
+            PendingIntent screenshotPendingIntent = mTakingScreenshot ? null : PendingIntent
+                    .getService(mContext, info.id, screenshotIntent,
+                            PendingIntent.FLAG_UPDATE_CURRENT);
+            final Action screenshotAction = new Action.Builder(null,
+                    mContext.getString(R.string.bugreport_screenshot_action),
+                    screenshotPendingIntent).build();
+            builder.setContentIntent(infoPendingIntent)
+                .setActions(infoAction, screenshotAction, cancelAction);
+        }
+
         if (DEBUG) {
             Log.d(TAG, "Sending 'Progress' notification for id " + info.id + " (pid " + info.pid
                     + "): " + percentageText);
         }
-        sendForegroundabledNotification(info.id, notification);
+        sendForegroundabledNotification(info.id, builder.build());
     }
 
     private void sendForegroundabledNotification(int id, Notification notification) {
@@ -543,6 +563,7 @@
             deleteScreenshots(info);
         }
         stopProgress(id);
+        mInfoDialog.cancel();
     }
 
     /**
@@ -854,10 +875,7 @@
         // Stop running on foreground, otherwise share notification cannot be dismissed.
         stopForegroundWhenDone(id);
 
-        final Configuration conf = mContext.getResources().getConfiguration();
-        if ((conf.uiMode & Configuration.UI_MODE_TYPE_MASK) != Configuration.UI_MODE_TYPE_WATCH) {
-            triggerLocalNotification(mContext, info);
-        }
+        triggerLocalNotification(mContext, info);
     }
 
     /**
@@ -1404,7 +1422,7 @@
         /**
          * Sets its internal state and displays the dialog.
          */
-        private void initialize(final Context context, BugreportInfo info) {
+        void initialize(final Context context, BugreportInfo info) {
             final String dialogTitle =
                     context.getString(R.string.bugreport_info_dialog_title, info.id);
             // First initializes singleton.
@@ -1450,6 +1468,7 @@
                                     }
                                 })
                         .create();
+                mDialog.setCancelable(true);
 
                 mDialog.getWindow().setAttributes(
                         new WindowManager.LayoutParams(
@@ -1545,13 +1564,18 @@
          * <p>Once the bugreport is finished dumpstate has already generated the final files, so
          * changing the name would have no effect.
          */
-        private void onBugreportFinished(int id) {
+        void onBugreportFinished(int id) {
             if (mInfoName != null) {
                 mInfoName.setEnabled(false);
                 mInfoName.setText(mSavedName);
             }
         }
 
+        void cancel() {
+            if (mDialog != null) {
+                mDialog.cancel();
+            }
+        }
     }
 
     /**
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
index 44e956a..ad66dfc 100644
--- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
+++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
@@ -153,7 +153,7 @@
         Log.i(TAG, "#### setup() on " + getName());
         Instrumentation instrumentation = getInstrumentation();
         mContext = instrumentation.getTargetContext();
-        mUiBot = new UiBot(UiDevice.getInstance(instrumentation), TIMEOUT);
+        mUiBot = new UiBot(instrumentation, TIMEOUT);
         mListener = ActionSendMultipleConsumerActivity.getListener(mContext);
 
         cancelExistingNotifications();
@@ -233,10 +233,7 @@
 
         assertProgressNotification(NAME, 00.00f);
 
-        openProgressNotification(ID);
-        UiObject cancelButton = mUiBot.getVisibleObject(mContext.getString(
-                com.android.internal.R.string.cancel).toUpperCase());
-        mUiBot.click(cancelButton, "cancel_button");
+        cancelFromNotification();
 
         waitForService(false);
     }
@@ -323,6 +320,21 @@
         assertServiceNotRunning();
     }
 
+    public void testProgress_cancelBugClosesDetailsDialog() throws Exception {
+        resetProperties();
+        sendBugreportStarted(1000);
+        waitForScreenshotButtonEnabled(true);
+
+        DetailsUi detailsUi = new DetailsUi(mUiBot, ID);
+        detailsUi.assertName(NAME);  // Sanity check
+
+        cancelFromNotification();
+        mUiBot.closeNotifications();
+
+        assertDetailsUiClosed();
+        assertServiceNotRunning();
+    }
+
     public void testProgress_changeDetailsPlainBugreport() throws Exception {
         changeDetailsTest(true);
     }
@@ -579,6 +591,13 @@
         }
     }
 
+    private void cancelFromNotification() {
+        openProgressNotification(ID);
+        UiObject cancelButton = mUiBot.getVisibleObject(mContext.getString(
+                com.android.internal.R.string.cancel).toUpperCase());
+        mUiBot.click(cancelButton, "cancel_button");
+    }
+
     private void assertProgressNotification(String name, float percent) {
         // TODO: it currently looks for 3 distinct objects, without taking advantage of their
         // relationship.
@@ -929,6 +948,11 @@
                 screenshotButton.isEnabled());
     }
 
+    private void assertDetailsUiClosed() {
+        // TODO: unhardcode resource ids
+        mUiBot.assertNotVisibleById("android:id/alertTitle");
+    }
+
     /**
      * Helper class containing the UiObjects present in the bugreport info dialog.
      */
diff --git a/packages/Shell/tests/src/com/android/shell/UiBot.java b/packages/Shell/tests/src/com/android/shell/UiBot.java
index 30f1692..ef24791 100644
--- a/packages/Shell/tests/src/com/android/shell/UiBot.java
+++ b/packages/Shell/tests/src/com/android/shell/UiBot.java
@@ -16,6 +16,8 @@
 
 package com.android.shell;
 
+import android.app.Instrumentation;
+import android.app.StatusBarManager;
 import android.support.test.uiautomator.By;
 import android.support.test.uiautomator.UiDevice;
 import android.support.test.uiautomator.UiObject;
@@ -24,6 +26,8 @@
 import android.support.test.uiautomator.UiSelector;
 import android.support.test.uiautomator.Until;
 import android.util.Log;
+
+import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
 /**
@@ -34,11 +38,13 @@
     private static final String TAG = "UiBot";
     private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
 
+    private final Instrumentation mInstrumentation;
     private final UiDevice mDevice;
     private final int mTimeout;
 
-    public UiBot(UiDevice device, int timeout) {
-        mDevice = device;
+    public UiBot(Instrumentation instrumentation, int timeout) {
+        mInstrumentation = instrumentation;
+        mDevice = UiDevice.getInstance(instrumentation);
         mTimeout = timeout;
     }
 
@@ -57,6 +63,13 @@
         return getObject(text);
     }
 
+    public void closeNotifications() throws Exception {
+        // TODO: mDevice should provide such method..
+        StatusBarManager sbm =
+                (StatusBarManager) mInstrumentation.getContext().getSystemService("statusbar");
+        sbm.collapsePanels();
+    }
+
     /**
      * Opens the system notification and clicks a given notification.
      *
@@ -111,6 +124,16 @@
         return uiObject;
     }
 
+    /**
+     * Asserts an object is not visible.
+     */
+    public void assertNotVisibleById(String id) {
+        // TODO: not working when the bugreport dialog is shown, it hangs until the dialog is
+        // dismissed and hence always work.
+        boolean hasIt = mDevice.hasObject(By.res(id));
+        assertFalse("should not have found object with id '" + id+ "'", hasIt);
+    }
+
 
     /**
      * Clicks on a UI element.
diff --git a/packages/SystemUI/Android.mk b/packages/SystemUI/Android.mk
index 6d8b9f6..258c82e 100644
--- a/packages/SystemUI/Android.mk
+++ b/packages/SystemUI/Android.mk
@@ -16,17 +16,21 @@
 
 include $(CLEAR_VARS)
 
+LOCAL_USE_AAPT2 := true
+
 LOCAL_MODULE_TAGS := optional
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
 
-LOCAL_STATIC_JAVA_LIBRARIES := \
+LOCAL_STATIC_ANDROID_LIBRARIES := \
     Keyguard \
     android-support-v7-recyclerview \
     android-support-v7-preference \
     android-support-v7-appcompat \
     android-support-v14-preference \
-    android-support-v17-leanback \
+    android-support-v17-leanback
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
     framework-protos \
     SystemUI-proto-tags
 
@@ -39,19 +43,6 @@
 
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 
-LOCAL_RESOURCE_DIR := \
-    frameworks/base/packages/Keyguard/res \
-    $(LOCAL_PATH)/res \
-    frameworks/support/v7/preference/res \
-    frameworks/support/v14/preference/res \
-    frameworks/support/v7/appcompat/res \
-    frameworks/support/v7/recyclerview/res \
-    frameworks/support/v17/leanback/res
-
-LOCAL_AAPT_FLAGS := --auto-add-overlay \
-    --extra-packages com.android.keyguard:android.support.v7.recyclerview:android.support.v7.preference:android.support.v14.preference:android.support.v7.appcompat \
-    --extra-packages android.support.v17.leanback
-
 ifneq ($(SYSTEM_UI_INCREMENTAL_BUILDS),)
     LOCAL_PROGUARD_ENABLED := disabled
     LOCAL_JACK_ENABLED := incremental
diff --git a/packages/SystemUI/res/drawable/ic_qs_night_display_off.xml b/packages/SystemUI/res/drawable/ic_qs_night_display_off.xml
new file mode 100644
index 0000000..778ccbc
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_night_display_off.xml
@@ -0,0 +1,27 @@
+<!--
+    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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="64dp"
+    android:height="64dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:alpha="0.3">
+
+    <path
+        android:fillColor="#FFF"
+        android:pathData="M6,12c0,5.5,4.5,10,10,10c1,0,2-0.2,3-0.5c-4.1-1.3-7-5.1-7-9.5s2.9-8.3,7-9.5C18.1,2.2,17.1,2,16,2C10.5,2,6,6.5,6,12z" />
+
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_night_display_on.xml b/packages/SystemUI/res/drawable/ic_qs_night_display_on.xml
new file mode 100644
index 0000000..aaca663
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_night_display_on.xml
@@ -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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="64dp"
+    android:height="64dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="#FFF"
+        android:pathData="M6,12c0,5.5,4.5,10,10,10c1,0,2-0.2,3-0.5c-4.1-1.3-7-5.1-7-9.5s2.9-8.3,7-9.5C18.1,2.2,17.1,2,16,2C10.5,2,6,6.5,6,12z" />
+
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml b/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml
index 258bd0f..4d7f325 100644
--- a/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_signal_4g_plus.xml
@@ -1,37 +1,30 @@
 <!--
-     Copyright (C) 2016 The Android Open Source Project
+    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
+    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
 
-     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.
+         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.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="18.0dp"
-    android:height="24dp"
-    android:viewportWidth="36.0"
-    android:viewportHeight="36.0">
-
+        android:width="24.0dp"
+        android:height="24.0dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M6.797,13.334h1.231v1.522H6.797v2.509h-1.62v-2.509H1.101l-0.039-1.157l4.069-7.643h1.666V13.334z
-M2.648,13.334h2.53V8.721L5.137,8.713L4.984,9.148L2.648,13.334z" />
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M4.6,7.8l0.7,0.0l0.0,1.3L4.6,9.1L4.6,11.0L3.0,11.0L3.0,9.2L0.1,9.2L0.0,8.2l3.0,-5.7l1.7,0.0L4.6,7.8L4.6,7.8zM1.7,7.8L3.0,7.8l0.0,-3.0L2.9,5.0L1.7,7.8z"/>
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M16.155,15.836c-0.269,0.439-0.695,0.832-1.282,1.177c-0.587,0.344-1.344,0.517-2.271,0.517
-c-1.151,0-2.098-0.432-2.841-1.294c-0.744-0.862-1.115-1.978-1.115-3.345v-2.36c0-1.367,0.359-2.481,1.077-3.343
-c0.719-0.863,1.643-1.293,2.772-1.293c1.132,0,2.017,0.331,2.649,0.994c0.633,0.663,0.941,1.528,0.924,2.594l-0.021,0.047h-1.545
-c0-0.638-0.171-1.15-0.513-1.538c-0.341-0.389-0.831-0.583-1.469-0.583c-0.674,0-1.217,0.292-1.63,0.877
-c-0.413,0.585-0.619,1.328-0.619,2.229v2.375c0,0.912,0.215,1.662,0.645,2.25c0.431,0.587,0.992,0.881,1.684,0.881
-c0.522,0,0.935-0.068,1.238-0.205c0.304-0.138,0.533-0.305,0.688-0.502v-2.338h-2.041v-1.413h3.668V15.836z" />
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M11.9,9.9c-0.2,0.4 -0.6,0.7 -1.0,0.9s-1.0,0.4 -1.8,0.4c-0.9,0.0 -1.7,-0.3 -2.2,-0.8S6.1,9.0 6.1,7.9L6.1,5.6c0.0,-1.1 0.3,-1.9 0.8,-2.4S8.2,2.4 9.0,2.4c1.0,0.0 1.7,0.2 2.1,0.7s0.7,1.2 0.7,2.1l-1.6,0.0c0.0,-0.5 -0.1,-0.9 -0.2,-1.1S9.5,3.7 9.0,3.7c-0.4,0.0 -0.7,0.2 -0.9,0.5S7.8,5.0 7.8,5.6l0.0,2.3c0.0,0.7 0.1,1.1 0.3,1.4c0.2,0.3 0.6,0.5 1.0,0.5c0.3,0.0 0.6,0.0 0.7,-0.1s0.3,-0.2 0.4,-0.3L10.2,7.8L9.0,7.8L9.0,6.6l2.9,0.0L11.9,9.9z"/>
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M19.366,14.701v-2.232h-2.25v-1.541h2.25V8.695h1.5v2.232h2.256v1.541h-2.256v2.232H19.366z" />
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M17.7,4.4l-1.900001,0.0 0.0,-1.9 -1.2,0.0 0.0,1.9 -1.900001,0.0 0.0,1.2 1.900001,0.0 0.0,1.9 1.2,0.0 0.0,-1.9 1.900001,0.0z"/>
 </vector>
diff --git a/packages/SystemUI/res/drawable/ic_qs_signal_lte_plus.xml b/packages/SystemUI/res/drawable/ic_qs_signal_lte_plus.xml
new file mode 100644
index 0000000..3af0629
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_qs_signal_lte_plus.xml
@@ -0,0 +1,33 @@
+<!--
+    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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24.0dp"
+        android:height="24.0dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M2.0,9.7l2.0,0.0L4.0,11.0L0.4,11.0L0.4,2.5L2.0,2.5L2.0,9.7z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M8.3,3.8L7.0,3.8L7.0,11.0L5.4,11.0L5.4,3.8L4.0,3.8L4.0,2.5l4.3,0.0L8.3,3.8z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M12.4,7.3l-1.7,0.0l0.0,2.4l2.1,0.0L12.799999,11.0L9.0,11.0L9.0,2.5l3.7,0.0l0.0,1.3l-2.1,0.0l0.0,2.1l1.7,0.0L12.4,7.3L12.4,7.3z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M18.4,4.4l-1.9,0.0 0.0,-1.9 -1.2,0.0 0.0,1.9 -1.900001,0.0 0.0,1.2 1.900001,0.0 0.0,1.9 1.2,0.0 0.0,-1.9 1.9,0.0z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/recents_stack_action_background.xml b/packages/SystemUI/res/drawable/recents_stack_action_background.xml
new file mode 100644
index 0000000..2a40dd0
--- /dev/null
+++ b/packages/SystemUI/res/drawable/recents_stack_action_background.xml
@@ -0,0 +1,25 @@
+<!--
+Copyright (C) 2016 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2 (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.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="?android:attr/colorControlHighlight">
+    <item android:id="@android:id/mask">
+        <shape>
+            <corners android:radius="@dimen/recents_task_view_rounded_corners_radius" />
+            <solid android:color="@android:color/white" />
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml
index 17a4394..3cdd3e1 100644
--- a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml
+++ b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_4g_plus.xml
@@ -1,37 +1,30 @@
 <!--
-     Copyright (C) 2016 The Android Open Source Project
+    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
+    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
+         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.
+    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.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="15dp"
-    android:height="20dp"
-    android:viewportWidth="36"
-    android:viewportHeight="36">
-
+        android:width="17.0dp"
+        android:height="17.0dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M6.797,13.334h1.231v1.522H6.797v2.509h-1.62v-2.509H1.101l-0.039-1.157l4.069-7.643h1.666V13.334z
-M2.648,13.334h2.53V8.721L5.137,8.713L4.984,9.148L2.648,13.334z" />
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M4.6,7.8l0.7,0.0l0.0,1.3L4.6,9.1L4.6,11.0L3.0,11.0L3.0,9.2L0.1,9.2L0.0,8.2l3.0,-5.7l1.7,0.0L4.6,7.8L4.6,7.8zM1.7,7.8L3.0,7.8l0.0,-3.0L2.9,5.0L1.7,7.8z"/>
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M16.155,15.836c-0.269,0.439-0.695,0.832-1.282,1.177c-0.587,0.344-1.344,0.517-2.271,0.517
-c-1.151,0-2.098-0.432-2.841-1.294c-0.744-0.862-1.115-1.978-1.115-3.345v-2.36c0-1.367,0.359-2.481,1.077-3.343
-c0.719-0.863,1.643-1.293,2.772-1.293c1.132,0,2.017,0.331,2.649,0.994c0.633,0.663,0.941,1.528,0.924,2.594l-0.021,0.047h-1.545
-c0-0.638-0.171-1.15-0.513-1.538c-0.341-0.389-0.831-0.583-1.469-0.583c-0.674,0-1.217,0.292-1.63,0.877
-c-0.413,0.585-0.619,1.328-0.619,2.229v2.375c0,0.912,0.215,1.662,0.645,2.25c0.431,0.587,0.992,0.881,1.684,0.881
-c0.522,0,0.935-0.068,1.238-0.205c0.304-0.138,0.533-0.305,0.688-0.502v-2.338h-2.041v-1.413h3.668V15.836z" />
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M11.9,9.9c-0.2,0.4 -0.6,0.7 -1.0,0.9s-1.0,0.4 -1.8,0.4c-0.9,0.0 -1.7,-0.3 -2.2,-0.8S6.1,9.0 6.1,7.9L6.1,5.6c0.0,-1.1 0.3,-1.9 0.8,-2.4S8.2,2.4 9.0,2.4c1.0,0.0 1.7,0.2 2.1,0.7s0.7,1.2 0.7,2.1l-1.6,0.0c0.0,-0.5 -0.1,-0.9 -0.2,-1.1S9.5,3.7 9.0,3.7c-0.4,0.0 -0.7,0.2 -0.9,0.5S7.8,5.0 7.8,5.6l0.0,2.3c0.0,0.7 0.1,1.1 0.3,1.4c0.2,0.3 0.6,0.5 1.0,0.5c0.3,0.0 0.6,0.0 0.7,-0.1s0.3,-0.2 0.4,-0.3L10.2,7.8L9.0,7.8L9.0,6.6l2.9,0.0L11.9,9.9z"/>
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M19.366,14.701v-2.232h-2.25v-1.541h2.25V8.695h1.5v2.232h2.256v1.541h-2.256v2.232H19.366z" />
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M17.7,4.4l-1.900001,0.0 0.0,-1.9 -1.2,0.0 0.0,1.9 -1.900001,0.0 0.0,1.2 1.900001,0.0 0.0,1.9 1.2,0.0 0.0,-1.9 1.900001,0.0z"/>
 </vector>
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_lte_plus.xml b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_lte_plus.xml
new file mode 100644
index 0000000..db18fad
--- /dev/null
+++ b/packages/SystemUI/res/drawable/stat_sys_data_fully_connected_lte_plus.xml
@@ -0,0 +1,33 @@
+<!--
+    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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="17.0dp"
+        android:height="17.0dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M2.0,9.7l2.0,0.0L4.0,11.0L0.4,11.0L0.4,2.5L2.0,2.5L2.0,9.7z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M8.3,3.8L7.0,3.8L7.0,11.0L5.4,11.0L5.4,3.8L4.0,3.8L4.0,2.5l4.3,0.0L8.3,3.8z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M12.4,7.3l-1.7,0.0l0.0,2.4l2.1,0.0L12.799999,11.0L9.0,11.0L9.0,2.5l3.7,0.0l0.0,1.3l-2.1,0.0l0.0,2.1l1.7,0.0L12.4,7.3L12.4,7.3z"/>
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M18.4,4.4l-1.9,0.0 0.0,-1.9 -1.2,0.0 0.0,1.9 -1.900001,0.0 0.0,1.2 1.900001,0.0 0.0,1.9 1.2,0.0 0.0,-1.9 1.9,0.0z"/>
+</vector>
diff --git a/packages/SystemUI/res/layout/battery_detail.xml b/packages/SystemUI/res/layout/battery_detail.xml
index 1f24ab0..8abfcf6 100644
--- a/packages/SystemUI/res/layout/battery_detail.xml
+++ b/packages/SystemUI/res/layout/battery_detail.xml
@@ -25,7 +25,7 @@
         android:id="@+id/charge_and_estimation"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingStart="72dp"
+        android:paddingStart="16dp"
         android:textAppearance="?android:attr/textAppearanceSmall"
         android:textColor="?android:attr/colorAccent" />
 
diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml
index 63390e2..967db26 100644
--- a/packages/SystemUI/res/layout/qs_detail.xml
+++ b/packages/SystemUI/res/layout/qs_detail.xml
@@ -47,11 +47,12 @@
     <com.android.systemui.qs.NonInterceptingScrollView
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="1">
+        android:layout_weight="1"
+        android:fillViewport="true">
         <FrameLayout
             android:id="@android:id/content"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
+            android:layout_height="match_parent"/>
     </com.android.systemui.qs.NonInterceptingScrollView>
 
     <include layout="@layout/qs_detail_buttons" />
diff --git a/packages/SystemUI/res/layout/qs_detail_header.xml b/packages/SystemUI/res/layout/qs_detail_header.xml
index 8352e30..f809c68 100644
--- a/packages/SystemUI/res/layout/qs_detail_header.xml
+++ b/packages/SystemUI/res/layout/qs_detail_header.xml
@@ -25,20 +25,9 @@
     android:background="@drawable/btn_borderless_rect"
     android:gravity="center">
 
-    <ImageView
-        android:id="@*android:id/up"
-        android:layout_width="@dimen/qs_detail_image_width"
-        android:layout_height="@dimen/qs_detail_image_height"
-        android:layout_marginEnd="@dimen/qs_detail_back_margin_end"
-        android:padding="@dimen/qs_detail_image_padding"
-        android:clickable="true"
-        android:background="?android:attr/selectableItemBackground"
-        android:contentDescription="@*android:string/action_bar_up_description"
-        android:src="?android:attr/homeAsUpIndicator" />
-
     <TextView
         android:id="@android:id/title"
-        android:paddingLeft="@dimen/qs_detail_header_text_padding"
+        android:paddingStart="@dimen/qs_detail_header_text_padding"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
diff --git a/packages/SystemUI/res/layout/qs_detail_items.xml b/packages/SystemUI/res/layout/qs_detail_items.xml
index 0b08a55..9a7e1b6 100644
--- a/packages/SystemUI/res/layout/qs_detail_items.xml
+++ b/packages/SystemUI/res/layout/qs_detail_items.xml
@@ -15,7 +15,8 @@
      limitations under the License.
 -->
 <!-- extends FrameLayout -->
-<com.android.systemui.qs.QSDetailItems xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.systemui.qs.QSDetailItems
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:sysui="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -29,26 +30,26 @@
         android:layout_height="match_parent"
         android:orientation="vertical"
         sysui:itemHeight="@dimen/qs_detail_item_height"
-        style="@style/AutoSizingList" />
+        style="@style/AutoSizingList"/>
 
     <LinearLayout
         android:id="@android:id/empty"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:layout_gravity="center"
-        android:gravity="center_horizontal"
-        android:orientation="vertical" >
+        android:gravity="center"
+        android:orientation="vertical">
 
         <ImageView
             android:id="@android:id/icon"
             android:layout_width="56dp"
-            android:layout_height="56dp" />
+            android:layout_height="56dp"/>
 
         <TextView
             android:id="@android:id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="20dp"
-            android:textAppearance="@style/TextAppearance.QS.DetailEmpty" />
+            android:textAppearance="@style/TextAppearance.QS.DetailEmpty"/>
     </LinearLayout>
 </com.android.systemui.qs.QSDetailItems>
diff --git a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml
index 3b8b909..6673d6e 100644
--- a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml
+++ b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml
@@ -111,7 +111,7 @@
         android:layout_alignParentTop="true"
         android:paddingStart="16dp"
         android:paddingEnd="16dp"
-        android:paddingTop="2dp"
+        android:paddingTop="6dp"
         android:visibility="gone"
         android:textAppearance="@style/TextAppearance.StatusBar.Expanded.EmergencyCallsOnly"
         android:text="@*android:string/emergency_calls_only"
diff --git a/packages/SystemUI/res/layout/recents_stack_action_button.xml b/packages/SystemUI/res/layout/recents_stack_action_button.xml
index 43b3de1..541000b 100644
--- a/packages/SystemUI/res/layout/recents_stack_action_button.xml
+++ b/packages/SystemUI/res/layout/recents_stack_action_button.xml
@@ -31,6 +31,6 @@
     android:shadowDy="2"
     android:shadowRadius="5"
     android:fontFamily="sans-serif-medium"
-    android:background="?android:selectableItemBackground"
+    android:background="@drawable/recents_stack_action_background"
     android:visibility="invisible"
     android:forceHasOverlappingRendering="false" />
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index 68395cd..4cd635e 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -48,6 +48,7 @@
             android:clickable="true"
             android:soundEffectsEnabled="false"
             android:src="@drawable/ic_volume_collapse_animation"
+            android:background="@drawable/ripple_drawable"
             tools:ignore="RtlHardcoded"
             android:layout_alignParentEnd="true"
             android:layout_alignParentTop="true"
diff --git a/packages/SystemUI/res/layout/volume_dialog_row.xml b/packages/SystemUI/res/layout/volume_dialog_row.xml
index a30fc43..95019b8 100644
--- a/packages/SystemUI/res/layout/volume_dialog_row.xml
+++ b/packages/SystemUI/res/layout/volume_dialog_row.xml
@@ -22,7 +22,8 @@
     android:id="@+id/volume_dialog_row"
     android:paddingEnd="@dimen/volume_dialog_padding_end"
     android:orientation="vertical"
-    android:paddingBottom="@dimen/volume_row_padding_bottom" >
+    android:paddingBottom="@dimen/volume_row_padding_bottom"
+    android:animateLayoutChanges="true">
 
     <TextView
         android:id="@+id/volume_row_header"
diff --git a/packages/SystemUI/res/values-af/config.xml b/packages/SystemUI/res/values-af/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-af/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 8cd74ad..126d636 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Swerwing"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g>-limiet"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> waarskuwing"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Werkmodus"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Aandbeligting"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Aandbeligting is aan, tik om af te skakel"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Aandbeligting is af, tik om aan te skakel"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Geen onlangse items nie"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Jy het alles toegemaak"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Programinligting"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Meer instellings"</string>
     <string name="notification_done" msgid="5279426047273930175">"Klaar"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g>-kennisgewingkontroles"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Kleur en voorkoms"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nagmodus"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibreer skerm"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aan"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Af"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Skakel outomaties aan"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Skakel oor na Nagmodus soos gepas vir ligging en tyd van die dag"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Wanneer Nagmodus aan is"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Gebruik donkertema vir Android-bedryfstelsel"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Verstel tint"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Verstel helderheid"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Die donkertema word toegepas op kernareas van Android-bedryfstelsel wat gewoonlik in \'n ligtema gewys word, soos instellings."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Pas toe"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Bevestig instellings"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Sommige kleurinstellings kan hierdie toestel onbruikbaar maak. Klik OK om hierdie kleurinstellings te bevestig; andersins sal hierdie instellings ná 10 sekondes teruggestel word."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Batterygebruik"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Batterybespaarder is nie beskikbaar wanneer gelaai word nie"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Batterybespaarder"</string>
diff --git a/packages/SystemUI/res/values-am/config.xml b/packages/SystemUI/res/values-am/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-am/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index c5de80f..3a4c1d1 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"ኤል ቲ ኢ"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ውሂብን በማዛወር ላይ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ገደብ"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"የ<xliff:g id="DATA_LIMIT">%s</xliff:g> ማስጠንቀቂያ"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"የሥራ ሁነታ"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"የምሽት ብርሃን"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"የምሽት ብርሃን በርቷል፣ ለማጥፋት መታ ያድርጉ"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"የምሽት ብርሃን ጠፍቷል፣ ለማብራት መታ ያድርጉ"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"ምንም የቅርብ ጊዜ ንጥሎች የሉም"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ሁሉንም ነገር አጽድተዋል"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"የመተግበሪያ መረጃ"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"ተጨማሪ ቅንብሮች"</string>
     <string name="notification_done" msgid="5279426047273930175">"ተከናውኗል"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> ማሳወቂያ ቁጥጥሮች"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"ቀለም እና መልክ"</string>
-    <string name="night_mode" msgid="3540405868248625488">"የሌሊት ሁነታ"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ማሳያን ይለኩ"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"በርቷል"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ጠፍቷል"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"በራስ-ሰር አብራ"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ለአካባቢው እና ለሰዓቱ ተገቢ በሆነ መልኩ ወደ የማታ ሁነታ ለውጥ"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"የማታ ሁነታ  ሲበራ"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"ለAndroid ስርዓተ ክወና ጨለማ ገጽታን ተጠቀም"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ቅልም አስተካክል"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ብሩህነት አስተካክል"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ጨለማ ገጽታው እንደ ቅንብሮች ያሉ በመደበኛነት በብርሃን ገጽታ በሚታዩ የAndroid ስርዓተ ክወና ዋና ክፍሎች ላይ ይተገበራል።"</string>
-    <string name="color_apply" msgid="9212602012641034283">"ተግብር"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ቅንብሮችን ያረጋግጡ"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"አንዳንድ የቀለም ቅንብሮች ይህን መሣሪያ የማይጠቅም ሊያደርጉት ይችላሉ። እነዚህን የቀለም ቅንብሮች ለማረጋገጥ እሺ የሚለውን ጠቅ ያድርጉ፣ አለበለዚያ እነዚህ ቅንብሮች ከ10 ሰከንዶች በኋላ ዳግም ይጀምራሉ።"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"የባትሪ አጠቃቀም"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ኃይል በሚሞላበት ጊዜ ባትሪ ቆጣቢ አይገኝም"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ባትሪ ቆጣቢ"</string>
diff --git a/packages/SystemUI/res/values-ar/config.xml b/packages/SystemUI/res/values-ar/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ar/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 6aad7a7..ce52115 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -149,6 +149,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"شبكة الجيل الرابع"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"شبكة الجيل الرابع أو أحدث"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"تجوال"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -325,6 +326,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"قيد <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"تحذير <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"وضع العمل"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"إضاءة ليلية"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"الإضاءة الليلية قيد العمل، انقر لإيقافها."</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"الإضاءة الليلية قيد الإيقاف، انقر لتشغيلها."</string>
     <string name="recents_empty_message" msgid="808480104164008572">"ليست هناك عناصر تم استخدامها مؤخرًا"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"لقد محوتَ كل شيء"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"معلومات التطبيق"</string>
@@ -524,21 +528,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"المزيد من الإعدادات"</string>
     <string name="notification_done" msgid="5279426047273930175">"تم"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"عناصر التحكم في إشعارات <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"اللون والمظهر"</string>
-    <string name="night_mode" msgid="3540405868248625488">"الوضع الليلي"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"معايرة الشاشة"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"تشغيل"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"إيقاف"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"التشغيل تلقائيًا"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"التبديل إلى الوضع الليلي بما يتناسب مع الموقع والوقت من اليوم"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"عند تشغيل الوضع الليلي"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"‏استخدام مظهر معتم لنظام التشغيل Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ضبط التلوين الخفيف"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ضبط السطوع"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"‏يتم تطبيق المظهر المعتم على المناطق الأساسية في نظام التشغيل Android والتي يتم عرضها عادة في مظهر مضيء، مثل الإعدادات."</string>
-    <string name="color_apply" msgid="9212602012641034283">"تطبيق"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"تأكيد الإعدادات"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"يمكن أن تتسبب بعض إعدادات الألوان في تعطيل إمكانية استخدام الجهاز. يمكنك النقر على \"موافق\" لتأكيد إعدادات الألوان هذه، وإلا فستتم إعادة تعيين هذه الإعدادات بعد ۱۰ ثوانٍ."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"استخدام البطارية"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"وضع توفير شحن البطارية غير متاح أثناء الشحن."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"توفير شحن البطارية"</string>
diff --git a/packages/SystemUI/res/values-az-rAZ/config.xml b/packages/SystemUI/res/values-az-rAZ/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-az-rAZ/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/strings.xml b/packages/SystemUI/res/values-az-rAZ/strings.xml
index 45a061b..b32035a 100644
--- a/packages/SystemUI/res/values-az-rAZ/strings.xml
+++ b/packages/SystemUI/res/values-az-rAZ/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rominq"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> xəbərdarlığı"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"İş rejimi"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Son elementlər yoxdur"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Hərşeyi təmizlədiniz"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Tətbiq haqqında"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Daha çox ayar"</string>
     <string name="notification_done" msgid="5279426047273930175">"Hazırdır"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> bildiriş nəzarəti"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Rəng və görünüş"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Gecə rejimi"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Ekranı kalibrləyin"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aktiv"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Deaktiv"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Avtomatik aktivləşdirin"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Məkana və günün vaxtına uyğun olaraq Gecə Rejiminə keçin"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Gecə Rejimi aktiv olduqda"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS üçün tünd tema istifadə edin"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Çaları nizamlayın"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Parlaqlığı nizamlayın"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tünd tema Android sisteminin adətən açıq tonda göstərilən əsas elementlərinə (məsələn, \"Ayarlar\") tətbiq edilir."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Tətbiq edin"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Ayarları təsdiq edin"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Bəzi renk ayarları bu cihazı yararsız edə bilər. Bu rənk ayarlarını təsdiq etmək üçün OK basın, əks halda bu ayarlar 10 saniyə sonra sıfırlanacaq."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Batareya istifadəsi"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Enerji Qənaəti doldurulma zamanı əlçatan deyil"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Enerji Qənaəti"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/config.xml b/packages/SystemUI/res/values-b+sr+Latn/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-b+sr+Latn/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index c926929..2438ed7 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -146,6 +146,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ograničenje od <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozorenje za <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Režim rada"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nema nedavnih stavki"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Obrisali ste sve"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacije o aplikaciji"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Još podešavanja"</string>
     <string name="notification_done" msgid="5279426047273930175">"Gotovo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrole obaveštenja za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Boja i izgled"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Noćni režim"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrišite ekran"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Uključeno"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Isključeno"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Automatski uključi"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Pređite na noćni režim u zavisnosti od lokacije i doba dana"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kada je noćni režim uključen"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Koristi tamnu temu za Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Prilagodi senku"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Prilagodi osvetljenost"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tamna tema se primenjuje na ključne delove Android OS-a koji se obično prikazuju u svetloj temi, poput Podešavanja."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Primeni"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Potvrdite podešavanja"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Neka podešavanja boja mogu da učine uređaj neupotrebljivim. Kliknite na Potvrdi da biste potvrdili ova podešavanja boja, pošto će se u suprotnom ova podešavanja resetovati nakon 10 sekundi."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Potrošnja baterije"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Ušteda baterije nije dostupna tokom punjenja"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Ušteda baterije"</string>
diff --git a/packages/SystemUI/res/values-be-rBY/config.xml b/packages/SystemUI/res/values-be-rBY/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-be-rBY/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-be-rBY/strings.xml b/packages/SystemUI/res/values-be-rBY/strings.xml
index c2bc498..15a3119 100644
--- a/packages/SystemUI/res/values-be-rBY/strings.xml
+++ b/packages/SystemUI/res/values-be-rBY/strings.xml
@@ -147,6 +147,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роўмінг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -323,6 +324,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ліміт <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Папярэджанне: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Рэжым працы"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Начная падсветка"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"\"Начная падсветка\" ўключана; дакраніцеся, каб выключыць"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"\"Начная падсветка\" выключана; дакраніцеся, каб уключыць"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Няма нядаўніх элементаў"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Вы ачысцілі усё"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Звесткі аб праграме"</string>
@@ -522,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Дадатковыя налады"</string>
     <string name="notification_done" msgid="5279426047273930175">"Гатова"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Элементы кантролю апавяшчэнняў <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Колер і выгляд"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Начны рэжым"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Каліброўка дысплэя"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Уключана"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Выключана"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Уключаць аўтаматычна"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Пераключэнне ў начны рэжым у залежнасці ад канкрэтнай мясцовасці і часу сутак"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Калі ўключаны Начны рэжым"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Выкарыстоўваць цёмную тэму для АС Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Рэгуляванне адценняў"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Рэгуляванне яркасці"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Цёмная тэма ўжываецца да асноўных вобласцяў АС Android, да якіх звычайна шжываецца светлая тэма, напрыклад, Налады."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Ужыць"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Пацвердзіце налады"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Некаторыя налады колеру могуць зрабіць гэту прыладу непрыдатнай для выкарыстання. Націсніце кнопку «ОК», каб пацвердзіць гэтыя налады колеру, у адваротным выпадку гэтыя налады будуць скінуты праз 10 секунд."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Выкарыстанне зараду"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Эканомія зараду акумулятара недаступная падчас зарадкі"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Эканомія зараду"</string>
diff --git a/packages/SystemUI/res/values-bg/config.xml b/packages/SystemUI/res/values-bg/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-bg/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index f84e4ba..315d68d 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ограничение от <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Предупреждение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Работен режим"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Няма скорошни елементи"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Изчистихте всичко"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Информация за приложението"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Още настройки"</string>
     <string name="notification_done" msgid="5279426047273930175">"Готово"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Контроли за известията от <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Цвят и облик"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Нощен режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Калибриране на дисплея"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Вкл."</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Изкл."</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Автоматично включване"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Превключване към нощен режим според местоположението и часа от денонощието"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"При включен нощен режим"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Ползв. на тъмната тема за опер. с-ма Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Коригиране на нюансирането"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Коригиране на яркостта"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Тъмната тема се прилага към основните области на операционната система Android, които обикновено се показват със светла тема, като например настройките."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Прилагане"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Потвърждаване на настройките"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Някои настройки за цветовете могат да направят това устройство неизползваемо. За да ги потвърдите, кликнете върху „OK“. В противен случай те ще бъдат нулирани след 10 секунди."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Ползв. на батерията"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Режимът за запазване на батерията не е налице при зареждане"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Режим за запазване на батерията"</string>
diff --git a/packages/SystemUI/res/values-bn-rBD/config.xml b/packages/SystemUI/res/values-bn-rBD/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-bn-rBD/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-bn-rBD/strings.xml b/packages/SystemUI/res/values-bn-rBD/strings.xml
index d9f6172..20dc978 100644
--- a/packages/SystemUI/res/values-bn-rBD/strings.xml
+++ b/packages/SystemUI/res/values-bn-rBD/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"রোমিং"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"সীমা <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সতর্কতা"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"কাজের মোড"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"কোনো সাম্প্রতিক আইটেম নেই"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"আপনি সবকিছু সাফ করেছেন"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"অ্যাপ্লিকেশানের তথ্য"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"আরো সেটিংস"</string>
     <string name="notification_done" msgid="5279426047273930175">"সম্পন্ন"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> বিজ্ঞপ্তির নিয়ন্ত্রণগুলি"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"রঙ এবং চেহারা"</string>
-    <string name="night_mode" msgid="3540405868248625488">"রাতের মোড"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"প্রদর্শন ক্যালিব্রেট করুন"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"চালু আছে"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"বন্ধ আছে"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"স্বয়ংক্রিয়ভাবে চালু করুন"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"অবস্থান এবং সময়ের হিসাবে উপযুক্ত রাতের মোডে পাল্টান"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"যখন রাতের মোড চালু থাকবে"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS এর জন্য গাঢ় থিম ব্যবহার করুন"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"টিন্ট সমন্বয় করুন"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"উজ্জ্বলতা সমন্বয় করুন"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Android OS এর মূল অংশগুলিতে গাঢ় থিম প্রয়োগ করা হয়েছে যেটা সাধারণত একটি হালকা থিমে প্রদর্শিত হয়, যেমন সেটিংস৷"</string>
-    <string name="color_apply" msgid="9212602012641034283">"প্রয়োগ করুন"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"সেটিংস নিশ্চিত করুন"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"কিছু রঙের সেটিংস এই ডিভাইসকে ব্যবহারের অযোগ্য করে দিতে পারে৷ এই রঙের সেটিংস নিশ্চিত করতে ঠিক আছে এ ক্লিক করুন, অন্যথায় ১০ সেকেন্ড পরে এই সেটিংস পুনরায় সেট হবে৷"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ব্যাটারির ব্যবহার"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"চার্জ করার সময় ব্যাটারি সেভার উপলব্ধ নয়"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ব্যাটারি সেভার"</string>
diff --git a/packages/SystemUI/res/values-bs-rBA/config.xml b/packages/SystemUI/res/values-bs-rBA/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-bs-rBA/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-bs-rBA/strings.xml b/packages/SystemUI/res/values-bs-rBA/strings.xml
index 12175c9..3fc1738 100644
--- a/packages/SystemUI/res/values-bs-rBA/strings.xml
+++ b/packages/SystemUI/res/values-bs-rBA/strings.xml
@@ -146,6 +146,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ograničenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozorenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Poslovni režim"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nema nedavnih stavki"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Sve ste obrisali"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacije o aplikaciji"</string>
@@ -520,21 +528,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Više postavki"</string>
     <string name="notification_done" msgid="5279426047273930175">"Gotovo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrole <xliff:g id="APP_NAME">%1$s</xliff:g> obavještenja"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Boja i izgled"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Noćni način rada"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibracija zaslona"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Uključeno"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Isključeno"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Automatsko uključivanje"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Prebaciti u Noćni način rada u skladu sa lokacijom i dobom dana"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kada je Noćni režim rada uključen"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Koristiti tamne teme za OS Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Prilagođavanje nijanse"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Podešavanje osvijetljenosti"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tamna tema se primjenjuje na ključna područja OS Android koja se obično prikazuju u svijetloj temi, kao što je meni Postavke."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Prihvati"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Potvrdi postavke"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"S nekim postavkama boja ovaj uređaj može biti neupotrebljiv. Kliknite U redu da biste potvrdili ove postavke boja ili sačekajte 10 sekundi da se postavke vrate na početnu vrijednost."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Upotreba baterije"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Ušteda baterije je isključena prilikom punjenja"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Ušteda baterije"</string>
diff --git a/packages/SystemUI/res/values-ca/config.xml b/packages/SystemUI/res/values-ca/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ca/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 6f39b32..1cb56a2 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinerància"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Vora"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertiment: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode de feina"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"No hi ha cap element recent"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ho has esborrat tot"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informació de l\'aplicació"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Més opcions"</string>
     <string name="notification_done" msgid="5279426047273930175">"Fet"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controls de notificació de l\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Color i aparença"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Mode nocturn"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibra la pantalla"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Activat"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desactivat"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activa automàticament"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Canvia al mode nocturn d\'acord amb la ubicació i l\'hora del dia"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Quan el mode nocturn estigui activat"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Fes servir un tema fosc per a Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajusta el color"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajusta la brillantor"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"El tema fosc s\'aplica a les àrees clau d\'Android OS que normalment es mostren amb un tema clar, com ara Configuració."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplica"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirma la configuració"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algunes opcions de configuració de color poden deixar el dispositiu inservible. Fes clic a D\'acord per confirmar la configuració de color; en cas contrari, la configuració es restablirà al cap de 10 segons."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Ús de la bateria"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"La funció Estalvi de bateria no està disponible durant la càrrega"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Estalvi de bateria"</string>
diff --git a/packages/SystemUI/res/values-cs/config.xml b/packages/SystemUI/res/values-cs/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-cs/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index ae170f6..a0696ba5 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -147,6 +147,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -323,6 +325,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozornění při <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Pracovní režim"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Žádné nedávné položky"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vše je vymazáno"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informace o aplikaci"</string>
@@ -522,21 +530,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Další nastavení"</string>
     <string name="notification_done" msgid="5279426047273930175">"Hotovo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Nastavení oznámení aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Barva a vzhled"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Noční režim"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrovat displej"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Zapnuto"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Vypnuto"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Zapnout automaticky"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Přejít do nočního režimu automaticky na základě místa a denní doby"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Když je noční režim zapnutý"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Použít v systému Android tmavý motiv"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Upravit tónování"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Upravit jas"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"V hlavních oblastech systému Android, které jsou běžně zobrazovány ve světlém motivu (například Nastavení), se použije tmavý motiv."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Použít"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Ověření nastavení"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Některá nastavení barev mohou způsobit, že zařízení nebude použitelné. Kliknutím na OK toto nastavení barev potvrdíte, v opačném případě se nastavení po 10 sekundách resetuje."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Využití baterie"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Spořič baterie při nabíjení není k dispozici."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Spořič baterie"</string>
diff --git a/packages/SystemUI/res/values-da/config.xml b/packages/SystemUI/res/values-da/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-da/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index b513739..4729564 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"Over 4G"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Grænse: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advarsel ved <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbejdstilstand"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Ingen nye elementer"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du har ryddet alt"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Oplysninger om applikationen"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Flere indstillinger"</string>
     <string name="notification_done" msgid="5279426047273930175">"Færdig"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrolelementer til underretninger for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Farve og udseende"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nattilstand"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrer skærmen"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Til"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Fra"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Slå automatisk til"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Skift til natfunktion alt efter stedet og tidspunktet"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Når natfunktion er slået til"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Brug mørkt tema til Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Juster farvetonen"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Juster lysstyrken"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Det mørke tema anvendes på centrale områder i Android OS, der normalt vises med lyst tema, f.eks. Indstillinger."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Anvend"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Bekræft indstillingerne"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Nogle farveindstillinger kan medføre, at du ikke kan bruge enheden. Klik på OK for at bekræfte disse farveindstillinger. Ellers nulstilles disse indstillinger efter ti sekunder."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Batteriforbrug"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Batterisparefunktionen er ikke tilgængelig under opladning"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Batterisparefunktion"</string>
diff --git a/packages/SystemUI/res/values-de/config.xml b/packages/SystemUI/res/values-de/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-de/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 88b8b43..acddb06 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> Datenlimit"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Warnung für <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbeitsmodus"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Keine kürzlich verwendeten Elemente"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du hast alles gelöscht"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"App-Info"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Weitere Einstellungen"</string>
     <string name="notification_done" msgid="5279426047273930175">"Fertig"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g>-Benachrichtigungseinstellungen"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Farbe und Darstellung"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nachtmodus"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Bildschirm kalibrieren"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"An"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Aus"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Automatisch aktivieren"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Abhängig von Standort und Tageszeit in den Nachtmodus wechseln"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Bei aktiviertem Nachtmodus"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Dunkles Design unter Android OS verwenden"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Farbton anpassen"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Helligkeit anpassen"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Das dunkle Design wird unter Android OS in allen Hauptbereichen übernommen, die normalerweise hell dargestellt werden, wie beispielsweise Einstellungen."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Übernehmen"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Einstellungen bestätigen"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Einige Farbeinstellungen können dazu führen, dass das Gerät nicht mehr genutzt werden kann. Klicke auf \"OK\", um diese Farbeinstellungen zu bestätigen. Anderenfalls werden diese Einstellungen in 10 Sekunden zurückgesetzt."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Akkunutzung"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Der Energiesparmodus ist beim Aufladen nicht verfügbar."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Energiesparmodus"</string>
diff --git a/packages/SystemUI/res/values-el/config.xml b/packages/SystemUI/res/values-el/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-el/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 291a6af..d4f3591 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Περιαγωγή"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Όριο <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Προειδοποίηση για <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Λειτουργία εργασίας"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Δεν υπάρχουν πρόσφατα στοιχεία"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Έχει γίνει εκκαθάριση όλων των στοιχείων"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Πληροφορίες εφαρμογής"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Περισσότερες ρυθμίσεις"</string>
     <string name="notification_done" msgid="5279426047273930175">"Τέλος"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Στοιχεία ελέγχου κοινοποίησης <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Χρώμα και εμφάνιση"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Νυχτερινή λειτουργία"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Βαθμονόμηση οθόνης"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Ενεργή"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Ανενεργή"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Αυτόματη ενεργοποίηση"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Αλλαγή σε νυχτερινή λειτουργία όπως απαιτείται βάσει τοποθεσίας και ώρας της ημέρας"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Όταν είναι ενεργή η νυχτερινή λειτουργία"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Χρήση σκοτεινού θέματος για Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ρύθμιση απόχρωσης"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ρύθμιση φωτεινότητας"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Το σκούρο θέμα εφαρμόζεται σε βασικές περιοχές του λειτουργικού συστήματος Android οι οποίες συνήθως εμφανίζονται με φωτεινό θέμα, όπως οι Ρυθμίσεις."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Εφαρμογή"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Επιβεβαίωση ρυθμίσεων"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Ορισμένες ρυθμίσεις χρωμάτων μπορεί να μην επιτρέπουν τη χρήση αυτής της συσκευής. Κάντε κλικ στην επιλογή OK για να επιβεβαιώσετε αυτές τις ρυθμίσεις χρωμάτων, διαφορετικά θα γίνει επαναφορά αυτών των ρυθμίσεων μετά από 10 δευτερόλεπτα."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Χρήση της μπαταρίας"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Η εξοικονόμηση μπαταρίας δεν είναι διαθέσιμη κατά τη διάρκεια της φόρτισης"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Εξοικονόμηση μπαταρίας"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/config.xml b/packages/SystemUI/res/values-en-rAU/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rAU/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index b8e44de..fcf0cf5 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Night Light"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Night Light on, tap to turn off"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Night Light off, tap to turn on"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"More settings"</string>
     <string name="notification_done" msgid="5279426047273930175">"Done"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> notification controls"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Colour and appearance"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrate display"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"On"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Off"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Turn on automatically"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Switch into Night Mode as appropriate for location and time of day"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"When Night Mode is on"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Use dark theme for Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Adjust tint"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Adjust brightness"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"The dark theme is applied to core areas of Android OS that are normally displayed in a light theme, such as Settings."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Apply"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirm Settings"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Some colour settings can make this device unusable. Click OK to confirm these colour settings, otherwise these settings will reset after 10 seconds."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Battery usage"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Battery Saver not available during charging"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Battery Saver"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/config.xml b/packages/SystemUI/res/values-en-rGB/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rGB/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index b8e44de..fcf0cf5 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Night Light"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Night Light on, tap to turn off"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Night Light off, tap to turn on"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"More settings"</string>
     <string name="notification_done" msgid="5279426047273930175">"Done"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> notification controls"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Colour and appearance"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrate display"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"On"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Off"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Turn on automatically"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Switch into Night Mode as appropriate for location and time of day"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"When Night Mode is on"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Use dark theme for Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Adjust tint"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Adjust brightness"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"The dark theme is applied to core areas of Android OS that are normally displayed in a light theme, such as Settings."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Apply"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirm Settings"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Some colour settings can make this device unusable. Click OK to confirm these colour settings, otherwise these settings will reset after 10 seconds."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Battery usage"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Battery Saver not available during charging"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Battery Saver"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/config.xml b/packages/SystemUI/res/values-en-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-en-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index b8e44de..fcf0cf5 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Night Light"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Night Light on, tap to turn off"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Night Light off, tap to turn on"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"No recent items"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"You\'ve cleared everything"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Application Info"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"More settings"</string>
     <string name="notification_done" msgid="5279426047273930175">"Done"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> notification controls"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Colour and appearance"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrate display"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"On"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Off"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Turn on automatically"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Switch into Night Mode as appropriate for location and time of day"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"When Night Mode is on"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Use dark theme for Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Adjust tint"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Adjust brightness"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"The dark theme is applied to core areas of Android OS that are normally displayed in a light theme, such as Settings."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Apply"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirm Settings"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Some colour settings can make this device unusable. Click OK to confirm these colour settings, otherwise these settings will reset after 10 seconds."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Battery usage"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Battery Saver not available during charging"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Battery Saver"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/config.xml b/packages/SystemUI/res/values-es-rUS/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-es-rUS/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 11ab34e..1991679 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertencia de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabajo"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"No hay elementos recientes"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Todo borrado"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Información de la aplicación"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Más opciones de configuración"</string>
     <string name="notification_done" msgid="5279426047273930175">"Listo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controles de notificaciones de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Color y apariencia"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modo nocturno"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrar pantalla"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Activado"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desactivado"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activar automáticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Cambiar a modo nocturno según corresponda en relación con la ubicación y hora del día"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Cuando el modo nocturno está activado"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Usar tema oscuro para el SO Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajustar tinte"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajustar brillo"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"El tema oscuro se aplica en las áreas principales del SO Android que suelen mostrarse con un tema claro, como Configuración."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicar"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmar la configuración"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algunas opciones de configuración de color pueden provocar que el dispositivo quede inutilizable. Haz clic en Aceptar para confirmar estos parámetros de color. De lo contrario, la configuración se restablecerá en diez segundos."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Uso de la batería"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Ahorro de batería no está disponible durante la carga"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Ahorro de batería"</string>
diff --git a/packages/SystemUI/res/values-es/config.xml b/packages/SystemUI/res/values-es/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-es/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 741ccbe..e727f59 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinerancia"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Tipo Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertencia de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabajo"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"No hay elementos recientes"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Has rechazado todo"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Información de la aplicación"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Más ajustes"</string>
     <string name="notification_done" msgid="5279426047273930175">"Listo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controles de notificaciones de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Color y aspecto"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modo nocturno"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrar pantalla"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Sí"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"No"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activar automáticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Cambiar al modo nocturno cuando proceda según la ubicación y la hora del día"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Cuando el modo nocturno esté activado"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Tema oscuro para sistema operativo Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajustar tono"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajustar brillo"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"El tema oscuro se aplica a las áreas principales del sistema operativo Android que normalmente se muestran con un tema claro, como la aplicación Ajustes."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicar"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmar configuración"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algunas opciones de configuración de color pueden hacer que el dispositivo no se pueda utilizar. Haz clic en Aceptar para confirmar esta configuración. Si no lo haces, se restablecerá esta configuración cuando transcurran 10 segundos."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Uso de la batería"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Ahorro de batería no disponible mientras se carga el dispositivo"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Ahorro de batería"</string>
diff --git a/packages/SystemUI/res/values-et-rEE/config.xml b/packages/SystemUI/res/values-et-rEE/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-et-rEE/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml
index 124196b..ebb2e41 100644
--- a/packages/SystemUI/res/values-et-rEE/strings.xml
+++ b/packages/SystemUI/res/values-et-rEE/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rändlus"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Serv"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limiit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> hoiatus"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Töörežiim"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Hiljutisi üksusi pole"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Olete kõik ära kustutanud"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Rakenduste teave"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Rohkem seadeid"</string>
     <string name="notification_done" msgid="5279426047273930175">"Valmis"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> märguannete juhtnupud"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Värv ja ilme"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Öörežiim"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Ekraani kalibreerimine"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Sees"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Väljas"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Lülita automaatselt sisse"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Lülita öörežiimile, kui see on asukoha ja kellaaja suhtes sobilik"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kui öörežiim on sees"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Kasuta Android OS-is tumedat teemat"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Reguleeri tooni"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Reguleeri heledust"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tume teema rakendatakse Android OS-i põhialadele, mis kuvatakse tavaliselt heleda teemaga (nt seaded)."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Rakenda"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Seadete kinnitamine"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Mõni värviseade ei saa seadet võib-olla kasutada. Nende värviseadete kinnitamiseks klõpsake OK, muidu lähtestatakse need seaded 10 sekundi pärast."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Akukasutus"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Akusäästja pole laadimise ajal saadaval"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Akusäästja"</string>
diff --git a/packages/SystemUI/res/values-eu-rES/config.xml b/packages/SystemUI/res/values-eu-rES/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-eu-rES/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml
index 650dfa9..a871b5b 100644
--- a/packages/SystemUI/res/values-eu-rES/strings.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Ibiltaritza"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Muga: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Abisua: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Lan modua"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Ez dago azkenaldi honetako ezer"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Dena garbitu duzu"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Aplikazioaren informazioa"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Ezarpen gehiago"</string>
     <string name="notification_done" msgid="5279426047273930175">"Eginda"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren jakinarazpenak kontrolatzeko aukerak"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Kolorea eta itxura"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Gau modua"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibratu pantaila"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aktibatuta"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desaktibatuta"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Aktibatu automatikoki"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Aldatu Gau modura, kokapena eta ordua kontuan izanda"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Gau modua aktibatuta dagoenean"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Erabili gai iluna Android sistema eragilean"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Doitu kolorea"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Doitu distira"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Gai iluna Android sistema eragileko eremu nagusietan aplikatzen da. Normalean gai argian bistaratzen dira eremu horiek, adibidez, Ezarpenak atalean."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplikatu"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Berretsi ezarpenak"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Baliteke gailua kolore-ezarpen batzuekin ezin erabili izatea. Kolore-ezarpenak berresteko, sakatu Ados. Bestela, hamar segundoren buruan berrezarriko dira ezarpenak."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Bateriaren erabilera"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Bateria-aurrezlea ez dago erabilgarri gailua kargatzen ari denean"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Bateria-aurrezlea"</string>
diff --git a/packages/SystemUI/res/values-fa/config.xml b/packages/SystemUI/res/values-fa/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-fa/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 80ba7e2..6315b42 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+‎"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+‎"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"رومینگ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> محدودیت"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"هشدار <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"حالت کار"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"نور شب"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"نور شب روشن است، برای خاموش‌کردن آن ضربه بزنید"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"نور شب خاموش است، برای روشن‌شدن آن ضربه بزنید"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"بدون موارد اخیر"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"همه‌چیز را پاک کرده‌اید"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"اطلاعات برنامه"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"تنظیمات بیشتر"</string>
     <string name="notification_done" msgid="5279426047273930175">"تمام"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"کنترل‌های اعلان <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"رنگ و ظاهر"</string>
-    <string name="night_mode" msgid="3540405868248625488">"حالت شب"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"درجه‌بندی نمایشگر"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"روشن"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"خاموش"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"روشن شدن خودکار"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"تغییر به حالت شب وقتی برای مکان و زمان روز مناسب است"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"وقتی حالت شب روشن است"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"‏استفاده از زمینه تیره برای سیستم‌عامل Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"تنظیم سایه‌رنگ"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"تنظیم روشنایی"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"‏زمینه تیره بر قسمت‌های اصلی سیستم‌عامل Android که به‌طور معمول با زمینه روشن نشان داده می‌شوند (مثل «تنظیمات») اعمال می‌شود."</string>
-    <string name="color_apply" msgid="9212602012641034283">"اعمال‌ کردن"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"تأیید تنظیمات"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"بعضی از تنظیمات رنگ می‌توانند این دستگاه را غیرقابل استفاده کنند. برای تأیید این تنظیمات رنگ روی «تأیید» کلیک کنید، در غیر این صورت این تغییرات بعد از ۱۰ ثانیه بازنشانی می‌شوند."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"مصرف باتری"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"هنگام شارژ شدن، «بهینه‌سازی باتری» در دسترس نیست"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"بهینه‌سازی باتری"</string>
diff --git a/packages/SystemUI/res/values-fi/config.xml b/packages/SystemUI/res/values-fi/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-fi/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index d1d1fe1..1d4354b 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"kiintiö <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> – varoitus"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Työtila"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Yövalo"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Yövalo on käytössä. Poista se käytöstä koskettamalla."</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Yövalo ei ole käytössä. Ota se käyttöön koskettamalla."</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Ei viimeaikaisia kohteita"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Kaikki on hoidettu."</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Sovellustiedot"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Lisäasetukset"</string>
     <string name="notification_done" msgid="5279426047273930175">"Valmis"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ilmoitusten hallinta"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Väri ja ulkoasu"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Yötila"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibroi näyttö"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Käytössä"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Pois käytöstä"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Ota käyttöön automaattisesti"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Ota yötila käyttöön sijainnin ja kellonajan perusteella."</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kun yötila on käytössä"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Käytä tummaa teemaa käyttöjärjestelmässä"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Säädä sävytystä"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Säädä kirkkautta"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tumma teema tulee käyttöön Android-käyttöjärjestelmän ydinosissa, kuten Asetuksissa, joissa käytetään tavallisesti vaaleaa teemaa."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Käytä"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Vahvista asetukset"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Jotkin väriasetukset voivat häiritä laitteen käyttöä. Vahvista uudet väriasetukset valitsemalla OK. Muussa tapauksessa aiemmat asetukset palautetaan 10 sekunnin kuluttua."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Akun käyttö"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Virransäästö ei ole käytettävissä latauksen aikana."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Virransäästö"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/config.xml b/packages/SystemUI/res/values-fr-rCA/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-fr-rCA/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index b5daf25..497f1ad 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinérance"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avertissement : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode Travail"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Aucun élément récent"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vous avez tout effacé"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Détails de l\'application"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Plus de paramètres"</string>
     <string name="notification_done" msgid="5279426047273930175">"Terminé"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Commandes de notification pour <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Couleur et apparence"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Mode Nuit"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrer l\'affichage"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Activé"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Désactivé"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activer automatiquement"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Passer en mode Nuit en fonction de la position et de l\'heure de la journée"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Lorsque le mode Nuit est activé"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Utiliser thème foncé pour Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajuster la coloration"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Régler la luminosité"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Le thème foncé est appliqué à des zones essentielles de la plateforme Android qui sont habituellement affichées dans un thème clair, comme les paramètres."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Appliquer"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmer les paramètres"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Certains paramètres de couleurs peuvent rendre cet appareil inutilisable. Cliquez sur « OK » pour valider ces paramètres, sinon ils seront réinitialisés après 10 secondes."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Utilisation de la pile"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Le mode Économie d\'énergie n\'est pas accessible pendant la charge"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Économie d\'énergie"</string>
diff --git a/packages/SystemUI/res/values-fr/config.xml b/packages/SystemUI/res/values-fr/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-fr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 8a621c7..11d2308 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinérance"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> au maximum"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avertissement : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode Travail"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Aucun élément récent"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vous avez tout effacé."</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Infos application"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Plus de paramètres"</string>
     <string name="notification_done" msgid="5279426047273930175">"Terminé"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Commandes de notification de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Couleur et apparence"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Mode Nuit"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrer l\'affichage"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Activé"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Désactivé"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activer automatiquement"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Passer en mode Nuit en fonction de la position et de l\'heure de la journée"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Lorsque le mode Nuit est activé"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Utiliser thème foncé pour plate-forme Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajuster la coloration"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Régler la luminosité"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Le thème foncé est appliqué à des zones essentielles de la plate-forme Android qui sont habituellement affichées dans un thème clair, telles que les paramètres."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Appliquer"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Vérifier les paramètres"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Certains paramètres de couleurs peuvent rendre cet appareil inutilisable. Cliquez sur \"OK\" pour valider ces paramètres, sans quoi ils seront réinitialisés après 10 secondes."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Utilisation batterie"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"L\'économiseur de batterie n\'est pas disponible lorsque l\'appareil est en charge."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Économiseur de batterie"</string>
diff --git a/packages/SystemUI/res/values-gl-rES/config.xml b/packages/SystemUI/res/values-gl-rES/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-gl-rES/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml
index 1a8f3d3..7ca0114 100644
--- a/packages/SystemUI/res/values-gl-rES/strings.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Itinerancia"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advertencia <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de traballo"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Non hai elementos recentes"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Borraches todo"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Información da aplicación"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Máis opcións"</string>
     <string name="notification_done" msgid="5279426047273930175">"Feito"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controis de notificacións de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Cor e aspecto"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modo nocturno"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrar pantalla"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Activado"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desactivado"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activar automaticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Cambia ao modo nocturno segundo proceda para a localización e a hora do día"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Cando o modo nocturno está activado"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Usar tema escuro para SO Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Axustar ton"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Axustar brillo"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"O tema escuro aplícase ás áreas principais do SO Android que se mostran normalmente nun tema claro, como a configuración."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicar"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmar configuración"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algunhas opcións de configuración de cor poden facer que este dispositivo sexa inutilizable. Fai clic en Aceptar para confirmar esta configuración de cor; en caso contrario, a configuración restablecerase tras 10 segundos."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Uso de batería"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"A función aforro de batería non está dispoñible durante a carga"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Aforro de batería"</string>
diff --git a/packages/SystemUI/res/values-gu-rIN/config.xml b/packages/SystemUI/res/values-gu-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-gu-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-gu-rIN/strings.xml b/packages/SystemUI/res/values-gu-rIN/strings.xml
index a9805ae..1362367 100644
--- a/packages/SystemUI/res/values-gu-rIN/strings.xml
+++ b/packages/SystemUI/res/values-gu-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"રોમિંગ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> મર્યાદા"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ચેતવણી"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"કાર્ય મોડ"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"કોઇ તાજેતરની આઇટમ્સ નથી"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"તમે બધું સાફ કર્યું"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ઍપ્લિકેશન માહિતી"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"વધુ સેટિંગ્સ"</string>
     <string name="notification_done" msgid="5279426047273930175">"થઈ ગયું"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> સૂચના નિયંત્રણો"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"રંગ અને દેખાવ"</string>
-    <string name="night_mode" msgid="3540405868248625488">"રાત્રિ મોડ"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"પ્રદર્શન કૅલિબ્રેટ કરો"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ચાલુ"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"બંધ"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"આપમેળે ચાલુ કરો"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"સ્થાન અને દિવસના સમય માટે યોગ્ય હોય તે રાત્રિ મોડ પર સ્વિચ કરો"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"જ્યારે રાત્રિ મોડ ચાલુ હોય"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS માટે ઘાટી થીમનો ઉપયોગ કરો"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ટિંટ સમાયોજિત કરો"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"તેજ સમાયોજિત કરો"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ઘાટી થીમને Android OS ના મુખ્ય ક્ષેત્રો પર લાગુ કરે છે જે સામાન્ય રીતે સેટિંગ્સ જેવી લાઇટ થીમમાં પ્રદર્શિત કરવામાં આવે છે."</string>
-    <string name="color_apply" msgid="9212602012641034283">"લાગુ કરો"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"સેટિંગ્સની પુષ્ટિ કરો"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"કેટલીક રંગ સેટિંગ્સ આ ઉપકરણને બિનઉપયોગી બનાવી શકે છે. આ રંગ સેટિંગ્સની પુષ્ટિ કરવા માટે ઓકે ક્લિક કરો, અન્યથા 10 સેકંડ પછી આ સેટિંગ્સ ફરીથી સેટ થશે."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"બૅટરી વપરાશ"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ચાર્જિંગ દરમિયાન બૅટરી બચતકર્તા ઉપલબ્ધ નથી"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"બૅટરી બચતકર્તા"</string>
diff --git a/packages/SystemUI/res/values-hi/config.xml b/packages/SystemUI/res/values-hi/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-hi/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 46087bd9..4dbb5cc 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिंग"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"किनारा"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"कार्य मोड"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"हाल ही का कोई आइटम नहीं"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"आपने सब कुछ साफ़ कर दिया है"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"एप्‍लिकेशन जानकारी"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"और सेटिंग"</string>
     <string name="notification_done" msgid="5279426047273930175">"हो गया"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> नोटिफ़िकेशन नियंत्रण"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"रंग और दिखावट"</string>
-    <string name="night_mode" msgid="3540405868248625488">"रात्रि मोड"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"स्क्रीन को कैलिब्रेट करें"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"चालू"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"बंद"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"अपने आप चालू करें"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"स्थान और दिन के समय के लिए उपयुक्त रात्रि मोड में बदलें"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"रात्रि मोड के चालू होने पर"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS के लिए गहरी थीम का उपयोग करें"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"टिंट समायोजित करें"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"स्क्रीन की रोशनी समायोजित करें"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"गहरी थीम को Android OS के मुख्य क्षेत्रों पर लागू किया जाता है जिन्हें सामान्यतः सेटिंग जैसी हल्की थीम में प्रदर्शित किया जाता है."</string>
-    <string name="color_apply" msgid="9212602012641034283">"लागू करें"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"से‍ेटिंग की पुष्टि करें"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"कुछ रंग सेटिंग इस डिवाइस को अनुपयोगी बना सकती हैं. इन रंग सेटिंग की पुष्टि करने के लिए ठीक क्लिक करें, अन्यथा 10 सेकंड के बाद ये सेटिंग रीसेट हो जाएंगी."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"बैटरी उपयोग"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"चार्ज किए जाने के दौरान बैटरी सेवर उपलब्ध नहीं है"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"बैटरी सेवर"</string>
diff --git a/packages/SystemUI/res/values-hr/config.xml b/packages/SystemUI/res/values-hr/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-hr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 5e7bd98..1ecd209 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -146,6 +146,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G i više"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ograničenje od <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozorenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Način rada"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nema nedavnih stavki"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Izbrisali ste sve"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacije o aplikaciji"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Više postavki"</string>
     <string name="notification_done" msgid="5279426047273930175">"Gotovo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrole obavijesti za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Boja i izgled"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Noćni način rada"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibriranje zaslona"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Uključeno"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Isključeno"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Uključi automatski"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Prebacivanje na noćni način rada prema lokaciji i dobu dana"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kada je noćni način rada uključen"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Koristi tamnu temu za OS Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Prilagodi nijansu"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Prilagodi svjetlinu"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tamna se tema primjenjuje na glavna područja OS-a Android, kao što su, primjerice, postavke, koja se inače prikazuju u svijetloj temi."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Primijeni"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Potvrdite postavke"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Neke postavke boja mogu učiniti uređaj neupotrebljivim. Kliknite U redu da biste potvrdili postavke boja jer će se u suprotnom poništiti za 10 sekundi."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Potrošnja baterije"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Štednja baterije nije dostupna tijekom punjenja"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Štednja baterije"</string>
diff --git a/packages/SystemUI/res/values-hu/config.xml b/packages/SystemUI/res/values-hu/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-hu/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index dfc3d8c..ec42306 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Barangolás"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> korlát"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Figyelem! <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Munka mód"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nincsenek mostanában használt elemek"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Mindent törölt"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Az alkalmazás adatai"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"További beállítások"</string>
     <string name="notification_done" msgid="5279426047273930175">"Kész"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g>-értesítések vezérlői"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Szín és megjelenés"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Éjszakai mód"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kijelző kalibrálása"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Bekapcsolva"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Kikapcsolva"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Automatikus bekapcsolás"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Váltás az Éjszakai módra a helynek és napszaknak megfelelően"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Amikor be van kapcsolva az Éjszakai mód"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Sötét téma használata az Android operációs rendszernél"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Színárnyalat módosítása"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Fényerő módosítása"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Sötét téma látható az Android operációs rendszer olyan alapterületeinél, amelyek normál állapotban világosan jelennek meg (például a Beállítások)."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Alkalmaz"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Beállítások megerősítése"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Bizonyos színbeállítások használhatatlanná tehetik ezt az eszközt. A színbeállítás megerősítéséhez kattintson az OK lehetőségre, máskülönben a rendszer 10 másodpercen belül visszaáll a korábbira."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Akkumulátorhasználat"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Az Akkumulátorkímélő módot töltés közben nem lehet használni"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Akkumulátorkímélő mód"</string>
diff --git a/packages/SystemUI/res/values-hy-rAM/config.xml b/packages/SystemUI/res/values-hy-rAM/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-hy-rAM/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
index e7b1846..b1a363b 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Ռոումինգ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Սահմանաչափ՝ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> զգուշացում"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Աշխատանքային ռեժիմ"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Վերջին տարրեր չկան"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Դուք ջնջել եք ամենը"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Հավելվածի մասին"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Այլ կարգավորումներ"</string>
     <string name="notification_done" msgid="5279426047273930175">"Պատրաստ է"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի ծանուցումների կառավարներ"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Գույնը և արտաքին տեսքը"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Գիշերային ռեժիմ"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Չափաբերել էկրանը"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Միացված է"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Անջատված է"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Միացնել ավտոմատ կերպով"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Անցեք Գիշերային ռեժիմի, եթե դա պահանջում է տեղը և օրվա ժամանակը"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Երբ Գիշերային ռեժիմը միացված է"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Օգտագործել մուգ թեման Android OS-ի համար"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Կարգավորել երանգը"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Կարգավորել պայծառությունը"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Մուգ թեման կիրառվում է Android OS-ի հիմնական հատվածների նկատմամբ, որոնք սովորաբար ցուցադրվում են բաց թեմայում (օրինակ՝ Կարգավորումներ):"</string>
-    <string name="color_apply" msgid="9212602012641034283">"Կիրառել"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Հաստատել կարգավորումները"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Գունային որոշ կարգավորումները կարող են այս սարքը օգտագործման համար ոչ պիտանի դարձնել: Սեղմեք Լավ կոճակը՝ գունային այս կարգավորումները հաստատելու համար: Հակառակ դեպքում այս կարգավորումները կվերակայվեն 10 վայրկյան հետո:"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Մարտկոցի օգտագործում"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Մարտկոցի տնտեսումը լիցքավորման ժամանակ հասանելի չէ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Մարտկոցի տնտեսում"</string>
diff --git a/packages/SystemUI/res/values-in/config.xml b/packages/SystemUI/res/values-in/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-in/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index df5ef8a..97288fc 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Batas <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Peringatan <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mode kerja"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Cahaya Malam"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Cahaya Malam hidup, ketuk untuk mematikan"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Cahaya Malam mati, ketuk untuk menyalakan"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Tidak ada item baru-baru ini"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Anda sudah menghapus semua"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Info Aplikasi"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Setelan lainnya"</string>
     <string name="notification_done" msgid="5279426047273930175">"Selesai"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrol notifikasi <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Warna dan tampilan"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Mode malam"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrasi layar"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aktif"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Nonaktif"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Aktifkan secara otomatis"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Beralih ke Mode Malam yang sesuai untuk lokasi dan waktu"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Saat Mode Malam aktif"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Gunakan tema gelap untuk OS Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Sesuaikan rona"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Sesuaikan kecerahan"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tema gelap diterapkan ke area inti OS Android yang biasanya ditampilkan di tema terang, seperti Setelan."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Terapkan"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Konfirmasi setelan"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Beberapa setelan warna dapat membuat perangkat ini tidak dapat digunakan. Klik OKE untuk mengonfirmasi setelan warna ini. Jika tidak, setelan ini akan disetel ulang setelah 10 detik."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Pemakaian baterai"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Penghemat Baterai tidak tersedia selama pengisian daya"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Penghemat Baterai"</string>
diff --git a/packages/SystemUI/res/values-is-rIS/config.xml b/packages/SystemUI/res/values-is-rIS/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-is-rIS/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-is-rIS/strings.xml b/packages/SystemUI/res/values-is-rIS/strings.xml
index 81a45ec..6430f6e 100644
--- a/packages/SystemUI/res/values-is-rIS/strings.xml
+++ b/packages/SystemUI/res/values-is-rIS/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Reiki"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> hámark"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> viðvörun"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Vinnustilling"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Engin nýleg atriði"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Þú hefur hreinsað allt"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Forritsupplýsingar"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Fleiri stillingar"</string>
     <string name="notification_done" msgid="5279426047273930175">"Lokið"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Tilkynningastýringar <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Litur og útlit"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Næturstilling"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kvarða skjáinn"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Kveikt"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Slökkt"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Kveikja sjálfkrafa"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Skipta í næturstillingu í samræmi við staðsetningu og tíma dags"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Þegar kveikt er á næturstillingu"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Nota dökkt þema fyrir Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Stilla litblæ"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Stilla birtustig"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Dökka þemað er notað á þeim aðalsvæðum Android OS sem venjulega eru ljós, s.s. í stillingum."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Nota"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Staðfesta stillingar"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Sumar litastillingar kunna að bitna á notagildi tækisins. Veldu „Í lagi“ til að staðfesta þessar litastillingar, að öðrum kosti verða litirnir endurstilltir eftir tíu sekúndur."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Rafhlöðunotkun"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Ekki er hægt að nota rafhlöðusparnað meðan á hleðslu stendur"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Rafhlöðusparnaður"</string>
diff --git a/packages/SystemUI/res/values-it/config.xml b/packages/SystemUI/res/values-it/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-it/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index cde3496..0693519 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +320,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite di <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avviso <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modalità Lavoro"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Luminosità notturna"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Luminosità notturna attiva; tocca per disattivarla"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Luminosità notturna non attiva; tocca per attivarla"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Nessun elemento recente"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Hai cancellato tutto"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informazioni sull\'applicazione"</string>
@@ -518,21 +522,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Altre impostazioni"</string>
     <string name="notification_done" msgid="5279426047273930175">"Fine"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controlli di notifica per <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Colore e aspetto"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modalità notturna"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibra display"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Attiva"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Disattivata"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Attiva automaticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Attiva la modalità notturna in base alla località e all\'ora del giorno"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Quando la modalità notturna è attiva"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Utilizza tema scuro per sistema Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Regola tinta"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Regola luminosità"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Il tema scuro viene applicato agli elementi fondamentali del sistema operativo Android che vengono generalmente visualizzati con un tema chiaro, ad esempio le impostazioni."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Applica"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Conferma le impostazioni"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Alcune impostazioni relative ai colori potrebbero rendere inutilizzabile il dispositivo. Fai clic su OK per confermare queste impostazioni; in caso contrario, le impostazioni verranno reimpostate dopo 10 secondi."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Utilizzo batteria"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Risparmio energetico non disponibile durante la ricarica"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Risparmio energetico"</string>
diff --git a/packages/SystemUI/res/values-iw/config.xml b/packages/SystemUI/res/values-iw/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-iw/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 6c07c7f..2ce50d1 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -147,6 +147,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"+4G"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"+LTE"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"נדידה"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"קצה"</string>
@@ -321,6 +322,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"הגבלה של <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"אזהרה - <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"מצב עבודה"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"תאורת לילה"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"תאורת לילה פועלת, הקש כדי לכבות"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"תאורת לילה כבויה, הקש כדי להפעיל"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"אין פריטים אחרונים"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"מחקת הכול"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"מידע על האפליקציה"</string>
@@ -520,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"הגדרות נוספות"</string>
     <string name="notification_done" msgid="5279426047273930175">"סיום"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> פקדי הודעות"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"צבע ומראה"</string>
-    <string name="night_mode" msgid="3540405868248625488">"מצב לילה"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"כיול תצוגה"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"פועל"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"כבוי"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"הפעל אוטומטית"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"החלף למצב לילה בהתאם למיקום ולשעה ביום"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"כאשר מצב לילה מופעל"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"‏השתמש בעיצוב כהה למערכת ההפעלה של Android."</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"התאמת גוון"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"התאמת בהירות"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"‏העיצוב הכהה מוחל על התחומים העיקריים במערכת ההפעלה Android שמוצגים בדרך כלל בעיצוב בהיר, כמו \'הגדרות\'."</string>
-    <string name="color_apply" msgid="9212602012641034283">"החל"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"אישור הגדרות"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"הגדרות צבע מסוימות עלולות להפוך את המכשיר הזה לבלתי שמיש. לחץ על אישור כדי לאשר את הגדרות הצבע האלה, אחרת הגדרות אלה יתאפסו לאחר 10 שניות."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"שימוש בסוללה"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"תכונת החיסכון בסוללה אינה זמינה בעת טעינת המכשיר"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"חיסכון בסוללה"</string>
diff --git a/packages/SystemUI/res/values-ja/config.xml b/packages/SystemUI/res/values-ja/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ja/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 64eb6df..f65b675 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ローミング中"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上限: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"警告: 上限は<xliff:g id="DATA_LIMIT">%s</xliff:g>です"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work モード"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"最近のタスクはありません"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"すべてのタスクを消去しました"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"アプリ情報"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"詳細設定"</string>
     <string name="notification_done" msgid="5279426047273930175">"完了"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」の通知の管理"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"色と表示"</string>
-    <string name="night_mode" msgid="3540405868248625488">"夜間モード"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"表示の調整"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ON"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"OFF"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"自動的に ON"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"場所や時間に応じて夜間モードに切り替えます"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"夜間モードが ON のとき"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS でダークテーマを使用"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ティントを調整"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"明るさを調整"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"通常ライトテーマで表示される Android OS の主要領域（設定など）にダークテーマが適用されます。"</string>
-    <string name="color_apply" msgid="9212602012641034283">"適用"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"設定の確認"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"一部の色設定を適用すると、この端末を使用できなくなることがあります。この色設定を確認するには、[OK] をクリックしてください。確認しない場合、10 秒後に設定はリセットされます。"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"電池の使用状況"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"充電中はバッテリー セーバーは利用できません"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"バッテリー セーバー"</string>
diff --git a/packages/SystemUI/res/values-ka-rGE/config.xml b/packages/SystemUI/res/values-ka-rGE/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ka-rGE/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml
index ec739e7..1c74219 100644
--- a/packages/SystemUI/res/values-ka-rGE/strings.xml
+++ b/packages/SystemUI/res/values-ka-rGE/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"როუმინგი"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ლიმიტი: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> გაფრთხილება"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"სამსახურის რეჟიმი"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"ბოლოს გამოყენებული ერთეულები არ არის"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ყველაფერი გასუფთავდა"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"აპლიკაციის შესახებ"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"დამატებითი პარამეტრები"</string>
     <string name="notification_done" msgid="5279426047273930175">"მზადაა"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> შეტყობინებების მართვის საშუალებები"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"ფერი და იერსახე"</string>
-    <string name="night_mode" msgid="3540405868248625488">"ღამის რეჟიმი"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ეკრანის კალიბრაცია"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ჩართული"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"გამორთული"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"ავტომატურად ჩართვა"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ღამის რეჟიმზე გადართვა მდებარეობისა და დღე-ღამის მონაკვეთის შესაბამისად."</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"ღამის რეჟიმის ჩართვისას"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS-ისთვის მუქი თემის გამოყენება"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ელფერის გასწორება"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"სიკაშკაშის გასწორება"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"მუქი თემა მიესადაგება Android OS-ის ძირითად არეებს, რომლებიც, ჩვეულებრივ, ღია თემის მეშვეობით არის ნაჩვენები. მაგალითად, პარამეტრებს."</string>
-    <string name="color_apply" msgid="9212602012641034283">"გამოყენება"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"პარამეტრების დადასტურება"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"ფერთა ზოგიერთ პარამეტრს ამ მოწყობილობასთან მუშაობის გართულება შეუძლია. ფერთა ამჟამინდელი პარამეტრების დასადასტურებლად, დააწკაპუნეთ „კარგი“-ზე. წინააღმდეგ შემთხვევაში, პარამეტრები 10 წამის შემდეგ ჩამოიყრება."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ბატარეის მოხმარება"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ბატარეის დამზოგი დატენვისას მიწვდომელია"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ბატარეის დამზოგი"</string>
diff --git a/packages/SystemUI/res/values-kk-rKZ/config.xml b/packages/SystemUI/res/values-kk-rKZ/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-kk-rKZ/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml
index 4fad007..53cff4b 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4Г"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"ҰМД"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA (кодтармен бөлінген бірнеше қол жетімділік)"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE (ұялы байланыстар жүйесіне арналған жетілдірілген деректер шамалары)"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> шегі"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> туралы ескерту"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Жұмыс режимі"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Жақындағы элементтер жоқ"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Сіз барлығын өшірдіңіз"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Қолданба туралы ақпарат"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Қосымша параметрлер"</string>
     <string name="notification_done" msgid="5279426047273930175">"Дайын"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> хабарландыруларды басқару элементтері"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Түс және сыртқы түрі"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Түнгі режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Дисплейді калибрлеу"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Қосулы"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Өшірулі"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Автоматты түрде қосу"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Орынға және күн уақытына тиісті түнгі режимге ауысу"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Түнгі режим қосулы кезде"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android ОЖ үшін күңгірт тақырыпты пайдалану"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Реңкті реттеу"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Жарықтықты реттеу"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Күңгірт тақырып Android операциялық жүйесінің әдетте \"Параметрлер\" сияқты ашық тақырыпта көрсетілетін негізгі аумақтарына қолданылады."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Қолдану"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Параметрлерді растау"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Кейбір түс параметрлері бұл құрылғыны пайдалану мүмкін емес етуі мүмкін. Бұл түс параметрлерін растау үшін OK түймесін басыңыз, әйтпесе параметрлер 10 секундтан кейін ысырылады."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Батареяны пайдалану"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Зарядтау кезінде Батарея үнемдегіш қол жетімді емес"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Батарея үнемдегіш"</string>
diff --git a/packages/SystemUI/res/values-km-rKH/config.xml b/packages/SystemUI/res/values-km-rKH/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-km-rKH/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml
index 71f6cde..20704e1 100644
--- a/packages/SystemUI/res/values-km-rKH/strings.xml
+++ b/packages/SystemUI/res/values-km-rKH/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"រ៉ូ​មីង"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ដែន​កំណត់ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ការ​ព្រមាន"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"របៀបការងារ"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"មិនមានធាតុថ្មីៗទេ"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"អ្នកបានជម្រះអ្វីៗទាំងអស់"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ព័ត៌មាន​កម្មវិធី"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"ការកំណត់ច្រើនទៀត"</string>
     <string name="notification_done" msgid="5279426047273930175">"រួចរាល់"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"អង្គគ្រប់គ្រងការជូនដំណឹង <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"ពណ៌ និងរូបរាង"</string>
-    <string name="night_mode" msgid="3540405868248625488">"របៀបពេលយប់"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ការបង្ហាញក្រិត"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"បើក"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"បិទ"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"បើក​ដោយ​ស្វ័យ​ប្រវត្តិ"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ប្តូរទៅជារបៀបពេលយប់ដែលសមស្របទៅតាមទីកន្លែង និងពេលវេលា"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"នៅពេលបើករបៀបពេលយប់"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"ប្រើធីមងងឹតសម្រាប់ប្រព័ន្ធប្រតិបត្តិការ Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"កែសម្រួលពណ៌ព្រឿងៗ"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"កែសម្រួលពន្លឺ"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ធីមងងឹតត្រូវបានប្រើសម្រាប់ចំណុចស្នូលនៃប្រព័ន្ធប្រតិបត្តិការ Android ដែលជាទូទៅត្រូវបានបង្ហាញជាធីមភ្លឺ ដូចជាការកំណត់ជាដើម។"</string>
-    <string name="color_apply" msgid="9212602012641034283">"អនុវត្ត"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"បញ្ជាក់ការកំណត់"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"ការកំណត់ពណ៌មួយចំនួនអាចធ្វើឲ្យឧបករណ៍នេះមិនអាចប្រើបាន។ សូមចុច យល់ព្រម ដើម្បីបញ្ជាក់ការកំណត់ពណ៌ទាំងនេះ បើមិនដូច្នេះទេការកំណត់ទាំងនេះនឹងកំណត់ឡើងវិញក្នុងរយៈពេល 10 វិនាទីបន្ទាប់។"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ការប្រើប្រាស់ថ្ម"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"កម្មវិធីសន្សំថ្មមិនអាចប្រើបានអំឡុងពេលសាកថ្មទេ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"កម្មវិធីសន្សំថ្ម"</string>
diff --git a/packages/SystemUI/res/values-kn-rIN/config.xml b/packages/SystemUI/res/values-kn-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-kn-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml
index fff5c4d..48c4bd9 100644
--- a/packages/SystemUI/res/values-kn-rIN/strings.xml
+++ b/packages/SystemUI/res/values-kn-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ರೋಮಿಂಗ್"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ಎಡ್ಜ್‌"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಮಿತಿ"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಎಚ್ಚರಿಕೆ"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ಕೆಲಸದ ಮೋಡ್"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ನೀವು ಎಲ್ಲವನ್ನೂ ತೆರವುಗೊಳಿಸಿರುವಿರಿ"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ಅಪ್ಲಿಕೇಶನ್ ಮಾಹಿತಿ"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"ಹೆಚ್ಚಿನ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="notification_done" msgid="5279426047273930175">"ಮುಗಿದಿದೆ"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅಧಿಸೂಚನೆ ನಿಯಂತ್ರಣಗಳು"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"ಬಣ್ಣ ಮತ್ತು ಗೋಚರತೆ"</string>
-    <string name="night_mode" msgid="3540405868248625488">"ರಾತ್ರಿ ಮೋಡ್"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ಅಣಿಗೊಳಿಸುವ ಪ್ರದರ್ಶನ"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ಆನ್"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ಆಫ್"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಮಾಡು"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ಸ್ಥಳ ಮತ್ತು ದಿನದ ಸಮಯಕ್ಕೆ ಸೂಕ್ತವಾಗುವಂತೆ ರಾತ್ರಿ ಮೋಡ್‌ ಅನ್ನು ಬದಲಾಯಿಸಿ"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"ರಾತ್ರಿ ಮೋಡ್‌ ಆನ್‌ ಆಗಿರುವಾಗ"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS ಗೆ ಕಪ್ಪು ಥೀಮ್‌ ಬಳಸಿ"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ಟಿಂಟ್‌ ಸರಿಹೊಂದಿಸು"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ಪ್ರಖರತೆಯನ್ನು ಸರಿಹೊಂದಿಸು"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ಕಪ್ಪು ಥೀಮ್‌ ಅನ್ನು Android OS ನ ಕೋರ್‌ ಪ್ರದೇಶಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗಿರುತ್ತದೆ. ಇದನ್ನು ಸೆಟ್ಟಿಂಗ್‌‌ಗಳಂತಹ ತಿಳಿಯಾದ ಥೀಮ್‌ನಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ."</string>
-    <string name="color_apply" msgid="9212602012641034283">"ಅನ್ವಯಿಸು"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಖಚಿತಪಡಿಸಿ"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"ಕೆಲವು ಬಣ್ಣ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಈ ಸಾಧನವನ್ನು ಅನುಪಯುಕ್ತಗೊಳಿಸಬಹುದು. ಈ ಬಣ್ಣ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಖಚಿತಪಡಿಸಲು ಸರಿ ಕ್ಲಿಕ್ ಮಾಡಿ, ಇಲ್ಲವಾದರೆ ಈ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು 10 ಸೆಕೆಂಡುಗಳ ನಂತರ ಮರುಹೊಂದಿಸಿ."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ಬ್ಯಾಟರಿ ಬಳಕೆ"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ಚಾರ್ಜಿಂಗ್ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಟರಿ ಸೇವರ್‌‌ ಲಭ್ಯವಿರುವುದಿಲ್ಲ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ಬ್ಯಾಟರಿ ಸೇವರ್‌‌"</string>
diff --git a/packages/SystemUI/res/values-ko/config.xml b/packages/SystemUI/res/values-ko/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ko/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 0465940..260ab89 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G 이상"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"로밍"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"한도: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 경고"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"작업 모드"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"최근 항목이 없습니다."</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"모든 항목을 삭제했습니다."</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"애플리케이션 정보"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"설정 더보기"</string>
     <string name="notification_done" msgid="5279426047273930175">"완료"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> 알림 관리"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"색상 및 모양"</string>
-    <string name="night_mode" msgid="3540405868248625488">"야간 모드"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"디스플레이 보정"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"사용"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"사용 안함"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"자동으로 사용 설정"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"위치 및 시간대에 맞게 야간 모드로 전환"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"야간 모드 사용 중일 때"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS용 어두운 테마 사용"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"농담 효과 조정"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"밝기 조정"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"설정 등 밝은 테마에서 일반적으로 표시되는 Android OS의 핵심 영역에 어두운 테마가 적용됩니다."</string>
-    <string name="color_apply" msgid="9212602012641034283">"적용"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"설정 확인"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"일부 색상 설정으로 인해 이 기기를 사용하지 못할 수 있습니다. 확인을 클릭하여 이러한 색상 설정을 확인하지 않으면 10초 후에 설정이 초기화됩니다."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"배터리 사용량"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"충전하는 동안 배터리 세이버는 사용할 수 없습니다."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"배터리 세이버"</string>
diff --git a/packages/SystemUI/res/values-ky-rKG/config.xml b/packages/SystemUI/res/values-ky-rKG/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ky-rKG/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml
index f159c97..e5bbac3 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> чектөө"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> эскертүү"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Иштөө режими"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Акыркы колдонмолор жок"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Баарын тазаладыңыз"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Колдонмо жөнүндө маалымат"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Дагы жөндөөлөр"</string>
     <string name="notification_done" msgid="5279426047273930175">"Бүттү"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> эскертмесин башкаруу каражаттары"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Түсү жана көрүнүшү"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Түнкү режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Дисплейди калибрлөө"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Күйүк"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Өчүк"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Автоматтык түрдө күйгүзүү"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Жайгашкан жерге жана убакытка жараша түнкү режимге которулуңуз"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Түнкү режим күйүп турганда"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS үчүн караңгы тема колдонуу"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Кошумча түсүн тууралоо"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Жарыктыгын тууралоо"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Адатта жарык темада көрсөтүлүүчү Android тутумунун негизги элементтерине (Жөндөөлөр сыяктуу) колдонула турган караңгы тема."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Колдонуу"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Жөндөөлөрдү ырастоо"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Айрым түс жөндөөлөрү бул түзмөктү колдонулгус кылып коюшу мүмкүн. Бул түс жөндөөлөрүн ырастоо үчүн OK баскычын чыкылдатыңыз, болбосо бул жөндөөлөр 10 секунддан кийин баштапкы абалына келтирилет."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Батарея колдонулушу"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Батареяны үнөмдөгүч түзмөк кубатталып жатканда иштебейт"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Батареяны үнөмдөгүч"</string>
diff --git a/packages/SystemUI/res/values-lo-rLA/config.xml b/packages/SystemUI/res/values-lo-rLA/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-lo-rLA/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
index 8059643..c969b53 100644
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ b/packages/SystemUI/res/values-lo-rLA/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ໂຣມມິງ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ຈຳ​ກັດ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"ຄຳ​ເຕືອນ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ໂໝດການເຮັດວຽກ"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"ແສງກາງຄືນ"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"ເປີດແສງກາງຄືນຢູ່, ແຕະເພື່ອປິດໄວ້"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"ປິດແສງກາງຄືນຢູ່, ແຕະເພື່ອເປີດໃຊ້"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"ບໍ່ມີລາຍການຫຼ້າສຸດ"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ທ່ານລຶບລ້າງທຸກຢ່າງແລ້ວ"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"​ຂໍ້​ມູນ​ແອັບ​ພ​ລິ​ເຄ​ຊັນ"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"​ການ​ຕັ້ງ​ຄ່າ​ເພີ່ມ​ເຕີມ"</string>
     <string name="notification_done" msgid="5279426047273930175">"ສຳເລັດແລ້ວ"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"ການຄວບຄຸມການແຈ້ງເຕືອນ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"ສີ ແລະ ລັກສະນະ"</string>
-    <string name="night_mode" msgid="3540405868248625488">"ໂໝດກາງຄືນ"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ປັບໜ້າຈໍ"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ເປີດ"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ປິດ"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"ເປີດ​ໃຊ້​ອັດ​ຕະ​ໂນ​ມັດ"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ສະລັບໄປໃຊ້ໂໝດກາງຄືນຕາມຄວາມເໝາະສົມກັບສະຖານທີ່ ແລະ ເວລາໃນແຕ່ລະມື້"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"ເມື່ອເປີດໂໝດກາງຄືນ"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"ໃຊ້ຮູບແບບສີສັນແບບມືດສຳລັບ Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ປັບແຕ່ງໂທນສີ"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ປັບແຕ່ງຄວາມສະຫວ່າງ"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ຮູບແບບສີສັນມືດແມ່ນນຳໃຊ້ກັບພື້ນທີ່ຫຼັກຂອງ Android OS ທີ່ປົກກະຕິຈະສະແດງເປັນຮູບແບບສີສັນແຈ້ງ ເຊັ່ນ: ການຕັ້ງຄ່າ."</string>
-    <string name="color_apply" msgid="9212602012641034283">"ນຳໃຊ້"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ຢືນ​ຢັນ​ການ​ຕັ້ງ​ຄ່າ"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"ບາງການຕັ້ງຄ່າສີສາມາດເຮັດໃຫ້ອຸປະກອນນີ້ບໍ່ສາມາດໃຊ້ໄດ້. ຄລິກ ຕົກລົງ ເພື່ອຢືນຢັນການຕັ້ງຄ່າສີເຫຼົ່ານີ້, ຖ້າບໍ່ດັ່ງນັ້ນ ການຕັ້ງຄ່າເຫຼົ່ານີ້ຈະຕັ້ງຄືນໃໝ່ ຫຼັງຈາກ 10 ວິນາທີ."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ການໃຊ້ແບັດເຕີຣີ"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ຕົວປະຢັດແບັດເຕີຣີບໍ່ມີໃຫ້ນຳໃຊ້ໃນລະຫວ່າງການສາກ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ຕົວປະຢັດ​ແບັດເຕີຣີ"</string>
diff --git a/packages/SystemUI/res/values-lt/config.xml b/packages/SystemUI/res/values-lt/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-lt/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 415ce7e..267e582 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -147,6 +147,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Tarptinklinis ryšys"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Kraštas"</string>
@@ -321,6 +323,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limitas: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> įspėjimas"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Darbo režimas"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nėra jokių naujausių elementų"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Viską išvalėte"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Programos informacija"</string>
@@ -520,21 +528,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Daugiau nustatymų"</string>
     <string name="notification_done" msgid="5279426047273930175">"Atlikta"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ pranešimų valdikliai"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Spalva ir išvaizda"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Naktinis režimas"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibruoti ekraną"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Įjungta"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Išjungta"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Įjungti automatiškai"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Perjungti į naktinį režimą pagal vietovę ir dienos laiką"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kai įjungtas naktinis režimas"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Naudoti tamsią „Android“ OS temą"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Koreguoti atspalvį"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Koreguoti šviesumą"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Pagrindinėms „Android“ OS dalims, kurioms paprastai taikoma šviesi tema, pvz., skilčiai „Nustatymai“, bus pritaikyta tamsi tema."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Taikyti"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Nustatymų patvirtinimas"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Dėl kai kurių spalvų nustatymų įrenginys gali būti netinkamas naudoti. Spustelėkite „Gerai“, kad patvirtintumėte šiuos spalvų nustatymus. Kitaip šie nustatymai bus nustatyti iš naujo po 10 sekundžių."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Akum. energ. vartoj."</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Akumuliatoriaus tausojimo priemonė nepasiekiama įkraunant"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Akumuliatoriaus tausojimo priemonė"</string>
diff --git a/packages/SystemUI/res/values-lv/config.xml b/packages/SystemUI/res/values-lv/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-lv/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index a1966b8..98a7d2e 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -146,6 +146,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Viesabonēšana"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ierobežojums: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> brīdinājums"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Darba režīms"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nav nesenu vienumu"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Visi uzdevumi ir notīrīti"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informācija par lietojumprogrammu"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Citi iestatījumi"</string>
     <string name="notification_done" msgid="5279426047273930175">"Gatavs"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> paziņojumu vadīklas"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Krāsas un izskats"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nakts režīms"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Ekrāna kalibrēšana"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Ieslēgts"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Izslēgts"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Ieslēgt automātiski"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Pārslēgt uz nakts režīmu atbilstoši atrašanās vietai un diennakts laikam"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Ja ir ieslēgts nakts režīms"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Izmantot tumšo motīvu operētājsistēmai Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Regulēt toni"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Regulēt spilgtumu"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tumšais motīvs tiek lietots galvenajos operētājsistēmas Android elementos, kas parasti tiek rādīti ar gaišu motīvu, piemēram, lietotnē Iestatījumi."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Lietot"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Iestatījumu apstiprināšana"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Noteiktu krāsu iestatījumu dēļ šī ierīce var kļūt nelietojama. Lai apstiprinātu šos krāsu iestatījumus, noklikšķiniet uz Labi. Ja to neizdarīsiet, pēc 10 sekundēm šie iestatījumi tiks atiestatīti."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Akumulatora lietojums"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Akumulatora jaudas taupīšanas režīms uzlādes laikā nav pieejams."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Akumulatora jaudas taupīšanas režīms"</string>
diff --git a/packages/SystemUI/res/values-mk-rMK/config.xml b/packages/SystemUI/res/values-mk-rMK/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-mk-rMK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml
index 7fa9806..7884db0 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роаминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Лимит: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Предупредување за <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Режим на работа"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Нема неодамнешни ставки"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Исчистивте сѐ"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Информации за апликацијата"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Повеќе поставки"</string>
     <string name="notification_done" msgid="5279426047273930175">"Готово"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Контроли за известувања на <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Боја и изглед"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Ноќен режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Калибрирај го екранот"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Вклучено"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Исклучено"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Вклучи автоматски"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Префрли во Ноќен режим како што е соодветно за локацијата и времето во денот"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Кога Ноќниот режим е вклучен"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Користете ја темната тема за ОС Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Приспособи ја бојата"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Приспособи ја осветленоста"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Темната тема се применува на основните области на Android OS што обично се прикажуваат во светла тема, како Поставки."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Примени"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Потврдете ги поставките"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Некои поставки на боите може да го направат уредот неупотреблив. Кликнете на Во ред за да ги потврдите овие поставки на боите, инаку тие поставки ќе се ресетираат по 10 секунди."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Користење батерија"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Штедачот на батерија не е достапен при полнење"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Штедач на батерија"</string>
diff --git a/packages/SystemUI/res/values-ml-rIN/config.xml b/packages/SystemUI/res/values-ml-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ml-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml
index 9026146..2a90ee4 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"റോമിംഗ്"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> പരിധി"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> മുന്നറിയിപ്പ്"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"പ്രവർത്തന മോഡ്"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"നിങ്ങൾ എല്ലാം മായ്ച്ചിരിക്കുന്നു"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ആപ്പ് വിവരം"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"കൂടുതൽ ക്രമീകരണം"</string>
     <string name="notification_done" msgid="5279426047273930175">"പൂർത്തിയായി"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> അറിയിപ്പ് നിയന്ത്രണങ്ങൾ"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"വർണ്ണവും രൂപഭാവവും"</string>
-    <string name="night_mode" msgid="3540405868248625488">"നൈറ്റ് മോഡ്"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ഡിസ്പ്ലേ കാലിബ്രേറ്റുചെയ്യുക"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ഓൺ"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ഓഫ്"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"സ്വയമേവ ഓണാക്കുക"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ലൊക്കേഷനും ദിവസത്തിലെ സമയത്തിനും അനുയോജ്യമായ തരത്തിൽ നൈറ്റ് മോഡിലേക്ക് സ്വിച്ചുചെയ്യുക"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"നൈറ്റ് മോഡ് ഓണായിരിക്കുമ്പോൾ"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS-നുള്ള ഇരുണ്ട തീം ഉപയോഗിക്കുക"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ടിന്റ് ക്രമപ്പെടുത്തുക"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"തെളിച്ചം ക്രമപ്പെടുത്തുക"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ക്രമീകരണം പോലെയുള്ള, ഒരു ലൈറ്റ് തീമിൽ സാധാരണ ഗതിയിൽ പ്രദർശിപ്പിക്കപ്പെടുന്ന Android OS-ന്റെ അടിസ്ഥാന ഇടങ്ങളിലേക്ക്, ഇരുണ്ട തീം പ്രയോഗിക്കുന്നു."</string>
-    <string name="color_apply" msgid="9212602012641034283">"ബാധകമാക്കുക"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ക്രമീകരണം സ്ഥിരീകരിക്കുക"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"ചില വർണ്ണ ക്രമീകരണത്തിന് ഈ ഉപകരണത്തെ ഉപയോഗരഹിതമാക്കാനാകും. ഈ വർണ്ണ ക്രമീകരണം സ്ഥിരീകരിക്കുന്നതിന് ശരി എന്നതിൽ ക്ലിക്കുചെയ്യുക, അല്ലെങ്കിൽ 10 സെക്കൻഡിന് ശേഷം ഈ ക്രമീകരണം പുനഃക്രമീകരിക്കപ്പെടും."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ബാറ്ററി ഉപയോഗം"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ചാർജുചെയ്യുന്ന സമയത്ത് ബാറ്ററി സേവർ ലഭ്യമല്ല"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ബാറ്ററി സേവർ"</string>
diff --git a/packages/SystemUI/res/values-mn-rMN/config.xml b/packages/SystemUI/res/values-mn-rMN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-mn-rMN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml
index 988d79b..23c206b 100644
--- a/packages/SystemUI/res/values-mn-rMN/strings.xml
+++ b/packages/SystemUI/res/values-mn-rMN/strings.xml
@@ -143,6 +143,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Рүүминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -315,6 +317,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> хязгаар"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> анхааруулга"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ажлын горим"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Сүүлийн үеийн зүйл байхгүй"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Та бүгдийг нь устгасан"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Аппликешны мэдээлэл"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Бусад тохиргоо"</string>
     <string name="notification_done" msgid="5279426047273930175">"Дууссан"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> мэдэгдлийн хяналт"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Өнгө, харагдах байдал"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Шөнийн горим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Дэлгэцийг тохируулах"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Идэвхтэй"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Идэвхгүй"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Автоматаар асаах"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Тухайн өдрийн байршил, цагийн тохиромжтой үед Шөнийн горимд шилжүүлэх"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Шөнийн горим идэвхтэй үед"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android-н үйлдлийн системд бараан загварыг ашиглах"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Өнгөний нягтаршилыг тохируулах"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Гэрэлтүүлгийг тохируулах"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Тохиргоо зэрэг тогтмол цайвар загварт харуулдаг Android үйлдлийн системийн гол хэсгийг бараан загварт харуулна."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Хэрэгжүүлэх"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Тохиргоог баталгаажуулах"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Зарим өнгөний тохиргоо энэ төхөөрөмжийг ашиглах боломжгүй болгож болзошгүй. OK товчлуурыг дарж эдгээр өнгөний тохиргоог зөвшөөрөхгүй бол энэ тохиргоо нь 10 секундын дараа шинэчлэгдэх болно."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Тэжээл ашиглалт"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Цэнэглэх үед тэжээл хэмнэгч ажиллахгүй"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Тэжээл хэмнэгч"</string>
diff --git a/packages/SystemUI/res/values-mr-rIN/config.xml b/packages/SystemUI/res/values-mr-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-mr-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml
index 9533e69..1dc2931 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिंग"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> मर्यादा"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावणी"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"कार्य मोड"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"अलीकडील कोणतेही आयटम नाहीत"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"आपण सर्वकाही साफ केले"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"अनुप्रयोग माहिती"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"अधिक सेटिंग्ज"</string>
     <string name="notification_done" msgid="5279426047273930175">"पूर्ण झाले"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> सूचना नियंत्रणे"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"रंग आणि स्वरूप"</string>
-    <string name="night_mode" msgid="3540405868248625488">"रात्र मोड"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"प्रदर्शनाचे मापन करा"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"चालू"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"बंद"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"स्वयंचलितपणे चालू करा"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"स्थान आणि दिवसाच्या वेळेसाठी योग्य असल्यानुसार रात्र मोड मध्ये स्विच करा"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"रात्र मोड चालू असताना"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS साठी गडद थीमचा वापर करा"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"रंगाची छटा समायोजित करा"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"चकाकी समायोजित करा"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"सेटिंग्ज सारख्या प्रकाश थीममध्ये प्रदर्शित केल्या जाणाऱ्या Android OS च्या मुख्य क्षेत्रांवर गडद थीम लागू केली जाते."</string>
-    <string name="color_apply" msgid="9212602012641034283">"लागू करा"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"सेटिंग्जची पुष्टी करा"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"काही रंग सेटिंग्ज या डिव्हाइसला निरुपयोगी करू शकतात. या रंग सेटिंग्जची पुष्टी करण्‍यासाठी ठीक आहे दाबा अन्यथा या सेटिंग्ज 10 सेकंदांनंतर रीसेट होतील."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"बॅटरी वापर"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"चार्ज करताना बॅटरी बचतकर्ता उपलब्ध नाही"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"बॅटरी बचतकर्ता"</string>
diff --git a/packages/SystemUI/res/values-ms-rMY/config.xml b/packages/SystemUI/res/values-ms-rMY/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ms-rMY/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml
index 05ec165..4f1af5e 100644
--- a/packages/SystemUI/res/values-ms-rMY/strings.xml
+++ b/packages/SystemUI/res/values-ms-rMY/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Perayauan"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> had"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Amaran <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Mod kerja"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Tiada item terbaharu"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Anda telah mengetepikan semua item"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Maklumat Aplikasi"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Lagi tetapan"</string>
     <string name="notification_done" msgid="5279426047273930175">"Selesai"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kawalan pemberitahuan <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Warna dan penampilan"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Mod malam"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Tentukur paparan"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Hidup"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Mati"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Hidupkan secara automatik"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Beralih ke Mod Malam sebagaimana sesuai untuk lokasi dan masa"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Apabila Mod Malam dihidupkan"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Gunakan tema gelap untuk OS Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Laraskan seri warna"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Laraskan kecerahan"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tema gelap digunakan pada bahagian teras OS Android yang biasanya dipaparkan dalam tema cerah, seperti Tetapan."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Gunakan"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Sahkan tetapan"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Sesetengah tetapan warna boleh menjadikan peranti ini tidak dapat digunakan. Klik OK untuk mengesahkan tetapan warna ini, jika tidak, tetapan ini akan ditetapkan semula selepas 10 saat."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Penggunaan bateri"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Penjimat Bateri tidak tersedia semasa mengecas"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Penjimat Bateri"</string>
diff --git a/packages/SystemUI/res/values-my-rMM/config.xml b/packages/SystemUI/res/values-my-rMM/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-my-rMM/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml
index 0ac50de..e263bcc 100644
--- a/packages/SystemUI/res/values-my-rMM/strings.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings.xml
@@ -24,7 +24,7 @@
     <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"စာရင်းမှ ဖယ်မည်"</string>
     <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"အက်ပ်အချက်အလက်များ"</string>
     <string name="status_bar_no_recent_apps" msgid="7374907845131203189">"သင်၏ မကြာမီက မျက်နှာပြင်များ ဒီမှာ ပေါ်လာကြမည်"</string>
-    <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"လတ်တလောအပ်ပလီကေးရှင်းများအား ဖယ်ထုတ်မည်"</string>
+    <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"လတ်တလောအက်ပ်များအား ပယ်ရန်"</string>
     <plurals name="status_bar_accessibility_recent_apps" formatted="false" msgid="9138535907802238759">
       <item quantity="other">ခြုံကြည့်မှုထဲမှ မျက်နှာပြင် %d ခု</item>
       <item quantity="one">ခြုံကြည့်မှုထဲမှ မျက်နှာပြင် 1 ခု</item>
@@ -65,7 +65,7 @@
     <string name="usb_debugging_always" msgid="303335496705863070">"ဒီကွန်ပျူတာမှ အမြဲခွင့်ပြုရန်"</string>
     <string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"USB အမှားပြင်ဆင်ခြင်း ခွင့်မပြုပါ"</string>
     <string name="usb_debugging_secondary_user_message" msgid="8572228137833020196">"ဤစက်ပစ္စည်းသို့ လက်ရှိဝင်ရောက်ထားသည့် အသုံးပြုသူသည် USB အမှားပြင်ဆင်ခြင်း ဖွင့်၍မရပါ။ ဤအင်္ဂါရပ်ကို အသုံးပြုရန်၊ ကျေးဇူးပြု၍ ကြီးကြပ်သူသို့ပြောင်းပါ။"</string>
-    <string name="compat_mode_on" msgid="6623839244840638213">"ဖန်သားပြင်ပြည့် ချဲ့ခြင်း"</string>
+    <string name="compat_mode_on" msgid="6623839244840638213">"ဇူးမ်အပြည့်ဆွဲခြင်း"</string>
     <string name="compat_mode_off" msgid="4434467572461327898">"ဖန်သားပြင်အပြည့်ဆန့်ခြင်း"</string>
     <string name="screenshot_saving_ticker" msgid="7403652894056693515">"ဖန်သားပြင်ဓါတ်ပုံသိမ်းစဉ်.."</string>
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ဖန်သားပြင်ဓါတ်ပုံရိုက်ခြင်းအား သိမ်းဆည်းပါမည်"</string>
@@ -97,8 +97,8 @@
     <string name="camera_label" msgid="7261107956054836961">"ကင်မရာ ဖွင့်ရန်"</string>
     <string name="recents_caption_resize" msgid="3517056471774958200">"အလုပ်သစ်စီစဥ်မှုကို ရွေးပါ။"</string>
     <string name="cancel" msgid="6442560571259935130">"မလုပ်တော့"</string>
-    <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"အံ့ဝင်သောချုံ့ချဲ့ခလုတ်"</string>
-    <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ဖန်သားပြင်ပေါ်တွင် အသေးမှအကြီးသို့ချဲ့ခြင်း"</string>
+    <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"အံဝင်ခွင်ကျ ဇူးမ်ခလုတ်"</string>
+    <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ဖန်သားပြင်ပေါ်တွင် အသေးမှအကြီးသို့ ဇူးမ်ဆွဲခြင်း"</string>
     <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ဘလူးတုသ်ချိတ်ဆက်ထားမှု"</string>
     <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"ဘလူးတုသ်ချိတ်ဆက်မှုပြတ်တောက်သည်"</string>
     <string name="accessibility_no_battery" msgid="358343022352820946">"ဘက်ထရီမရှိပါ။"</string>
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"မြန်နှုန်းမြင့်လိုင်း"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ကွန်ယက်ပြင်ပဒေတာအသုံးပြုခြင်း"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -171,10 +172,10 @@
     <!-- no translation found for accessibility_casting (6887382141726543668) -->
     <skip />
     <string name="accessibility_work_mode" msgid="2478631941714607225">"အလုပ် မုဒ်"</string>
-    <string name="accessibility_recents_item_will_be_dismissed" msgid="395770242498031481">"<xliff:g id="APP">%s</xliff:g>ကို ပယ်လိုက်ရန်"</string>
+    <string name="accessibility_recents_item_will_be_dismissed" msgid="395770242498031481">"<xliff:g id="APP">%s</xliff:g> ကို ပယ်ရန်"</string>
     <string name="accessibility_recents_item_dismissed" msgid="6803574935084867070">"<xliff:g id="APP">%s</xliff:g> ထုတ်ထားသည်။"</string>
     <string name="accessibility_recents_all_items_dismissed" msgid="4464697366179168836">"မကြာသေးမီက အပလီကေးရှင်းများအားလုံး ဖယ်ထုတ်ပြီးပါပြီ။"</string>
-    <string name="accessibility_recents_item_open_app_info" msgid="5107479759905883540">"<xliff:g id="APP">%s</xliff:g> အက်ပ်အချက်အလက်ကို ဖွင့်ပါ။"</string>
+    <string name="accessibility_recents_item_open_app_info" msgid="5107479759905883540">"<xliff:g id="APP">%s</xliff:g> အပလီကေးရှင်းအချက်အလက်ကို ဖွင့်ပါ။"</string>
     <string name="accessibility_recents_item_launched" msgid="7616039892382525203">"<xliff:g id="APP">%s</xliff:g>ကို စတင်နေသည်။"</string>
     <string name="accessibility_recents_task_header" msgid="1437183540924535457">"<xliff:g id="APP">%1$s</xliff:g><xliff:g id="ACTIVITY_LABEL">%2$s</xliff:g>"</string>
     <string name="accessibility_notification_dismissed" msgid="854211387186306927">"အကြောင်းကြားချက်ကိုဖယ်ရှားပြီး"</string>
@@ -317,9 +318,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ကန့်သတ်ချက်"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> သတိပေးချက်"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"အလုပ် မုဒ်"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"ညအလင်းရောင်"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"ညအလင်းရောင်ကိုဖွင့်ထားသည်၊ ပိတ်ရန်တို့ပါ"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"ညအလင်းရောင်ကိုပိတ်ထားသည်၊ ဖွင့်ရန်တို့ပါ"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"မကြာမီကဖွင့်ထားသည်များ မရှိပါ"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"သင်အားလုံးကို ရှင်းလင်းပြီးပါပြီ"</string>
-    <string name="recents_app_info_button_label" msgid="2890317189376000030">"အက်ပ်အင်ဖို"</string>
+    <string name="recents_app_info_button_label" msgid="2890317189376000030">"အပလီကေးရှင်းအင်ဖို"</string>
     <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"မျက်နှာပြင် ပင်ထိုးမှု"</string>
     <string name="recents_search_bar_label" msgid="8074997400187836677">"ရှာဖွေရန်"</string>
     <string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g> ကို မစနိုင်ပါ။"</string>
@@ -449,7 +453,7 @@
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s။ အသံပြန်ဖွင့်ရန် တို့ပါ။"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s။ တုန်ခါမှုကို သတ်မှတ်ရန် တို့ပါ။ အများသုံးစွဲနိုင်မှု ဝန်ဆောင်မှုများကို အသံပိတ်ထားနိုင်ပါသည်။"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s။ အသံပိတ်ရန် တို့ပါ။ အများသုံးစွဲနိုင်မှု ဝန်ဆောင်မှုများကို အသံပိတ်ထားနိုင်ပါသည်။"</string>
-    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"အသံအတိုးအလျှော့ခလုတ် %s ပြသထားပါသည်။ ပယ်ဖျက်ရန် ပွတ်ဆွဲပါ။"</string>
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"အသံအတိုးအလျှော့ခလုတ် %s ပြသထားပါသည်။ ပယ်ရန် အပေါ်သို့ပွတ်ဆွဲပါ။"</string>
     <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"အသံအတိုးအလျှော့ခလုတ်များကို ဝှက်ထားပါသည်"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"စနစ် UI ဖမ်းစက်"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"မြုတ်ထားသည့် ဘက်ထရီ ရာခိုင်နှုန်းကို ပြပါ"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"နောက်ထပ် ဆက်တင်များ"</string>
     <string name="notification_done" msgid="5279426047273930175">"ပြီးပါပြီ"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> အကြောင်းကြားချက် ထိန်းချုပ်မှုများ"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"အရောင်နှင့် အပြင်အဆင်"</string>
-    <string name="night_mode" msgid="3540405868248625488">"ညသုံးမုဒ်"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ပြသမှုအချိန်အဆကို ညှိပါ"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ဖွင့်ပါ"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ပိတ်ပါ"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"အလိုအလျောက် ဖွင့်ပါ"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"တည်နေရာနှင့် တစ်ရက်တာအချိန်နှင့် သင့်လျော်သလို ညသုံးမုဒ်သို့ ပြောင်းပါ"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"ညသုံမုဒ်ဖွင့်ထားစဉ်"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS အတွက်အရောင်ရင့်အပြင်အဆင်ကို သုံးပါ"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"အရောင်မွဲမှုကို ချိန်ပါ"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"အလင်းအမှောင်ချိန်ပါ"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"အရောင်ရင့်အပြင်အဆင်သည် ဆက်တင်များကဲ့သို့ ပုံမှန်အားဖြင့် အရောင်ဖျော့အပြင်အဆင်အဖြစ်ရှိသည့် Android OS ၏အဓိကနေရာများကို ပြောင်းလဲပေးပါသည်။"</string>
-    <string name="color_apply" msgid="9212602012641034283">"အသုံးပြုပါ"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ဆက်တင်များကို အတည်ပြုပါ"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"အချို့သော အရောင်ဆက်တက်များက ဤကိရိယာကို သုံးမရအောင် လုပ်ပစ်နိုင်ပါသည်။ ဤအရောင် ဆက်တင်များကို အတည်ပြုရန် အိုကေကို နှိပ်ပါ၊ သို့မဟုတ် ဤဆက်တင်များကို ၁၀ စက္ကန့် အကြာတွင် ပြန်ညှိလိုက်ပါမည်။"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ဘက်ထရီ အသုံးပြုမှု"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"အားသွင်းနေချိန်မှာ Battery Saver ကို သုံးမရပါ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Battery Saver"</string>
@@ -555,7 +544,7 @@
     <string name="keyboard_key_media_fast_forward" msgid="3849417047738200605">"ရှေ့သို့ရစ်ပါ"</string>
     <string name="keyboard_key_page_up" msgid="5654098530106845603">"အပေါ်စာမျက်နှာသို့သွားပါ"</string>
     <string name="keyboard_key_page_down" msgid="8720502083731906136">"အောက်စာမျက်နှာသို့သွားပါ"</string>
-    <string name="keyboard_key_forward_del" msgid="1391451334716490176">"ဖျက်ပါ"</string>
+    <string name="keyboard_key_forward_del" msgid="1391451334716490176">"ဖျက်ရန်"</string>
     <string name="keyboard_key_move_home" msgid="2765693292069487486">"ပင်မ"</string>
     <string name="keyboard_key_move_end" msgid="5901174332047975247">"ပြီးပါပြီ"</string>
     <string name="keyboard_key_insert" msgid="8530501581636082614">"ထည့်ပါ"</string>
@@ -599,7 +588,7 @@
     <string name="menu_ime" msgid="4943221416525250684">"မန်နယူး / ကီးဘုတ်ပြောင်းစနစ်"</string>
     <string name="select_button" msgid="1597989540662710653">"ပေါင်းထည့်ရန် ခလုတ်ကိုရွေးပါ"</string>
     <string name="add_button" msgid="4134946063432258161">"ခလုတ်ပေါင်းထည့်ပါ"</string>
-    <string name="save" msgid="2311877285724540644">"သိမ်းဆည်းပါ"</string>
+    <string name="save" msgid="2311877285724540644">"သိမ်းရန်"</string>
     <string name="reset" msgid="2448168080964209908">"ပြန်လည်သတ်မှတ်ရန်"</string>
     <string name="no_home_title" msgid="1563808595146071549">"ပင်မခလုတ်မတွေ့ပါ"</string>
     <string name="no_home_message" msgid="5408485011659260911">"ဤစက်ပစ္စည်းကိုရွှေ့လျားနိုင်ရန် ပင်မခလုတ် လိုအပ်ပါသည်။ မသိမ်းဆည်းမီ ပင်မခလုတ်ကို ပေါင်းထည့်ပါ။"</string>
diff --git a/packages/SystemUI/res/values-my-rMM/strings_tv.xml b/packages/SystemUI/res/values-my-rMM/strings_tv.xml
index 2c5b94b..f91c5bc 100644
--- a/packages/SystemUI/res/values-my-rMM/strings_tv.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings_tv.xml
@@ -27,7 +27,7 @@
     <string name="pip_onboarding_title" msgid="7850436557670253991">"ပုံထဲမှပုံ"</string>
     <string name="pip_onboarding_description" msgid="4028124563309465267">"နောက်တစ်ခုမဖွင့်မချင်း သင့်ဗီဒီယိုကို ပြသထားပါမည်။ ၎င်းကိုထိန်းချုပ်ရန် "<b>"ပင်မ"</b>" ခလုတ်ကို နှိပ်ပြီးဖိထားပါ။"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"ရပါပြီ"</string>
-    <string name="recents_tv_dismiss" msgid="3555093879593377731">"ပယ်ပါ"</string>
+    <string name="recents_tv_dismiss" msgid="3555093879593377731">"ပယ်ရန်"</string>
   <string-array name="recents_tv_blacklist_array">
   </string-array>
 </resources>
diff --git a/packages/SystemUI/res/values-nb/config.xml b/packages/SystemUI/res/values-nb/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-nb/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 8688acf..42bd748 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Grense på <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Advarsel for <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbeidsmodus"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Ingen nylige elementer"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du har fjernet alt"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Appinformasjon"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Flere innstillinger"</string>
     <string name="notification_done" msgid="5279426047273930175">"Ferdig"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Varselinnstillinger for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Farge og utseende"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nattmodus"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrer skjermen"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"På"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Av"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Slå på automatisk"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Bytt til nattmodus avhengig av tid og sted"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Når nattmodus er på"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Bruk et mørkt tema for Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Juster fargen"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Juster lysstyrken"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Det mørke temaet brukes på kjerneområdene i Android OS som vanligvis vises i et lyst tema, for eksempel Innstillinger."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Bruk"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Bekreft innstillingene"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Noen fargeinnstillinger kan gjøre denne enheten ubrukelig. Klikk på OK for å bekrefte disse fargeinnstillingene, ellers blir de tilbakestilt etter ti sekunder."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Batteribruk"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Batterisparing er ikke tilgjengelig under lading"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Batterisparing"</string>
diff --git a/packages/SystemUI/res/values-ne-rNP/config.xml b/packages/SystemUI/res/values-ne-rNP/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ne-rNP/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
index cf6b80a..8e3681c 100644
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ b/packages/SystemUI/res/values-ne-rNP/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"रोमिङ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी दिँदै"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"कार्य मोड"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"रात्रिको प्रकाश"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"रात्रिको प्रकाश सक्रिय छ, निष्क्रिय पार्न ट्याप गर्नुहोस्"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"रात्रिको प्रकाश निष्क्रिय छ, सक्रिय गर्न ट्याप गर्नुहोस्"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"हालका कुनै पनि वस्तुहरू छैनन्"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"तपाईँले सबै कुरा खाली गर्नुभएको छ"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"अनुप्रयोग जानकारी"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"थप सेटिङहरू"</string>
     <string name="notification_done" msgid="5279426047273930175">"सम्पन्‍न भयो"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> का सूचनाका लागि नियन्त्रणहरू"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"रंग र रूप"</string>
-    <string name="night_mode" msgid="3540405868248625488">"रात्री मोड"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"प्रदर्शनको स्तर  मिलाउनुहोस्"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"सक्रिय"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"निष्क्रिय"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"स्वतः सक्रिय पार्नुहोस्"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"स्थान र दिनको समयको लागि उपयुक्त रात्री मोडमा स्विच गर्नुहोस्"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"रात्री मोड सक्रिय हुँदा"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS का लागि गाढा रंगको विषयवस्तु प्रयोग गर्नुहोस्"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"रङ्गलाई समायोजन गर्नुहोस्"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"चमकलाई समायोजन गर्नुहोस्"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"गहिरो रंगको विषयवस्तुलाई Android OS का त्यस्ता मुख्य क्षेत्रहरूमा लागू गरिन्छ जसलाई सामान्यतया हल्का रंगमा देखाइन्छ, जस्तै सेटिङहरू।"</string>
-    <string name="color_apply" msgid="9212602012641034283">"लागू गर्नुहोस्"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"सेटिङहरूको पुष्टि गर्नुहोस्"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"केही रङ सेटिङहरूले यस यन्त्रलाई अनुपयोगी बनाउन सक्छन्। यी रङ सेटिङहरू पुष्टि गर्न ठीक छ मा क्लिक गर्नुहोस्, अन्यथा यी सेटिङहरू १० सेकेण्डपछि रिसेट हुनेछन्।"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ब्याट्री उपयोग"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"चार्ज गर्ने समयमा ब्याट्री सेभर उपलब्ध छैन"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ब्याट्री सेभर"</string>
diff --git a/packages/SystemUI/res/values-nl/config.xml b/packages/SystemUI/res/values-nl/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-nl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index a85e2348..302d0aa 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limiet van <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Waarschuwing voor <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Werkmodus"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Geen recente items"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Je hebt alles gewist"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"App-informatie"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Meer instellingen"</string>
     <string name="notification_done" msgid="5279426047273930175">"Gereed"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Beheeropties voor <xliff:g id="APP_NAME">%1$s</xliff:g>-meldingen"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Kleur en uiterlijk"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nachtmodus"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Display kalibreren"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aan"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Uit"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Automatisch inschakelen"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Overschakelen naar nachtmodus indien van toepassing voor locatie en tijd van de dag"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Als nachtmodus is ingeschakeld"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Donker thema gebruiken voor Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Tint aanpassen"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Helderheid aanpassen"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Het donkere thema wordt toegepast op kerngedeelten van het Android-besturingssysteem die normaal gesproken worden weergegeven met een licht thema, zoals Instellingen."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Toepassen"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Instellingen bevestigen"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Bij sommige kleurinstellingen kan het apparaat onbruikbaar worden. Klik op OK om deze kleurinstellingen te bevestigen, anders worden deze instellingen na tien seconden gereset."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Accugebruik"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Accubesparing niet beschikbaar tijdens opladen"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Accubesparing"</string>
diff --git a/packages/SystemUI/res/values-pa-rIN/config.xml b/packages/SystemUI/res/values-pa-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-pa-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pa-rIN/strings.xml b/packages/SystemUI/res/values-pa-rIN/strings.xml
index 17dcea8..e0edfa3 100644
--- a/packages/SystemUI/res/values-pa-rIN/strings.xml
+++ b/packages/SystemUI/res/values-pa-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ਰੋਮਿੰਗ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ਕਿਨਾਰਾ"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ਸੀਮਾ"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ਚਿਤਾਵਨੀ"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"ਕੰਮ ਮੋਡ"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"ਕੋਈ ਹਾਲੀਆ ਆਈਟਮਾਂ ਨਹੀਂ"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ਤੁਸੀਂ ਸਭ ਕੁਝ ਸਾਫ਼ ਕਰ ਦਿੱਤਾ ਹੈ"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ਐਪਲੀਕੇਸ਼ਨ ਜਾਣਕਾਰੀ"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"ਹੋਰ ਸੈਟਿੰਗਾਂ"</string>
     <string name="notification_done" msgid="5279426047273930175">"ਹੋ ਗਿਆ"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਸੂਚਨਾ ਕੰਟਰੋਲ"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"ਰੰਗ ਅਤੇ ਵਿਖਾਲਾ"</string>
-    <string name="night_mode" msgid="3540405868248625488">"ਰਾਤ ਮੋਡ"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ਡਿਸਪਲੇ ਨੂੰ ਕੈਲੀਬ੍ਰੇਟ ਕਰੋ"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ਚਾਲੂ"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ਬੰਦ"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"ਸਵੈਚਾਲਿਤ ਤੌਰ \'ਤੇ ਚਾਲੂ ਕਰੋ"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ਟਿਕਾਣੇ ਅਤੇ ਦਿਨ ਦੇ ਸਮੇਂ ਲਈ ਢੁਕਵੇਂ ਰਾਤ ਮੋਡ \'ਤੇ ਸਵਿੱਚ ਕਰੋ"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"ਜਦੋਂ ਰਾਤ ਮੋਡ ਚਾਲੂ ਹੋਵੇ"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS ਲਈ ਗੂੜ੍ਹੇ ਥੀਮ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ਟਿੰਟ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ਚਮਕ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ Android OS ਦੇ ਉਹਨਾਂ ਮੁੱਖ ਖੇਤਰਾਂ \'ਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਆਮ ਤੌਰ \'ਤੇ ਇੱਕ ਹਲਕੇ ਥੀਮ ਵਿੱਚ ਵਿਖਾਏ ਜਾਂਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਸੈਟਿੰਗਾਂ।"</string>
-    <string name="color_apply" msgid="9212602012641034283">"ਲਾਗੂ ਕਰੋ"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ਸੈਟਿੰਗਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"ਕੁਝ ਰੰਗ ਸੈਟਿੰਗਾਂ ਇਸ ਡੀਵਾਈਸ ਨੂੰ ਬੇਕਾਰ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਹਨਾਂ ਰੰਗ ਸੈਟਿੰਗਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਠੀਕ \'ਤੇ ਕਲਿੱਕ ਕਰੋ, ਨਹੀਂ ਤਾਂ ਇਹ ਸੈਟਿੰਗਾਂ 10 ਸਕਿੰਟ ਬਾਅਦ ਮੁੜ-ਸੈੱਟ ਹੋ ਜਾਣਗੀਆਂ।"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"ਬੈਟਰੀ ਵਰਤੋਂ"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ਬੈਟਰੀ ਸੇਵਰ ਚਾਰਜਿੰਗ ਦੌਰਾਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"ਬੈਟਰੀ ਸੇਵਰ"</string>
diff --git a/packages/SystemUI/res/values-pl/config.xml b/packages/SystemUI/res/values-pl/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-pl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 58bca2f..b057a14 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -147,6 +147,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -321,6 +323,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limit <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Ostrzeżenie: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Tryb pracy"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Brak ostatnich elementów"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Wszystko zostało wyczyszczone"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacje o aplikacji"</string>
@@ -520,21 +528,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Więcej ustawień"</string>
     <string name="notification_done" msgid="5279426047273930175">"Gotowe"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> – ustawienia powiadomień"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Kolor i wygląd"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Tryb nocny"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibracja wyświetlacza"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Wł."</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Wył."</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Włącz automatycznie"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Przełączaj na tryb nocny odpowiednio do lokalizacji i pory dnia"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Gdy jest włączony tryb nocny"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Użyj motywu ciemnego dla Androida"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Dostosuj odcień"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Dostosuj jasność"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Motyw ciemny zostanie zastosowany do głównych obszarów Androida, które normalnie są jasne, takich jak Ustawienia."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Zastosuj"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Potwierdź ustawienia"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Niektóre ustawienia kolorów mogą utrudniać korzystanie z urządzenia. Kliknij OK, by potwierdzić te ustawienia kolorów. Jeśli tego nie zrobisz, zostaną one zresetowane po 10 sekundach."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Wykorzystanie baterii"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Oszczędzanie baterii nie jest dostępne podczas ładowania"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Oszczędzanie baterii"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/config.xml b/packages/SystemUI/res/values-pt-rBR/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rBR/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 5ecbe8e..63df40d 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +320,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabalho"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Modo noturno"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Modo noturno ativado. Toque para desativar"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Modo noturno desativado. Toque para ativar"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Nenhum item recente"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Você limpou tudo"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações do app"</string>
@@ -518,21 +522,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Mais configurações"</string>
     <string name="notification_done" msgid="5279426047273930175">"Concluído"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controles de notificação do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Cor e aparência"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modo noturno"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrar tela"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Ativado"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desativado"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Ativar automaticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Alternar para o modo noturno conforme apropriado para o local e hora do dia"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Quando o modo noturno está ativado"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Usar o tema escuro para o SO Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajustar tonalidade"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajustar brilho"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"O tema escuro é aplicado a áreas centrais do sistema operacional Android que normalmente são exibidas em um tema claro, como as configurações."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicar"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmar configurações"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algumas configurações de cor podem tornar o dispositivo inutilizável. Clique em \"OK\" para confirmar essas configurações de cor; caso contrário, essas configurações serão redefinidas após 10 segundos."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Uso da bateria"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"A Economia de bateria não fica disponível durante o carregamento"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Economia de bateria"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/config.xml b/packages/SystemUI/res/values-pt-rPT/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-pt-rPT/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 614eb9b..f2e2f61 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabalho"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Luz noturna"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Luz noturna ativada; toque para desativar"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Luz noturna desativada; toque para ativar"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Nenhum item recente"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Limpou tudo"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações da aplicação"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Mais definições"</string>
     <string name="notification_done" msgid="5279426047273930175">"Concluído"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controlos de notificações do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Cor e aspeto"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modo noturno"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrar ecrã"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Ativado"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desativado"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Ligar automaticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Alternar para o Modo noturno consoante a localização e a hora do dia"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Quando o Modo noturno está ativado"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Utilizar o tema escuro para o SO Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajustar tonalidade"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajustar brilho"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"O tema escuro é aplicado a áreas essenciais do SO Android que são normalmente apresentadas num tema claro, como as Definições."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicar"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmar as definições"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algumas definições de cor podem tornar este dispositivo instável. Clique em OK para confirmar estas definições de cor. Caso contrário, estas definições serão repostas após 10 segundos."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Utiliz. da bateria"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Poupança de bateria não disponível durante o carregamento"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Poupança de bateria"</string>
diff --git a/packages/SystemUI/res/values-pt/config.xml b/packages/SystemUI/res/values-pt/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-pt/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 5ecbe8e..63df40d 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +320,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limite: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modo de trabalho"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Modo noturno"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Modo noturno ativado. Toque para desativar"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Modo noturno desativado. Toque para ativar"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Nenhum item recente"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Você limpou tudo"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informações do app"</string>
@@ -518,21 +522,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Mais configurações"</string>
     <string name="notification_done" msgid="5279426047273930175">"Concluído"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Controles de notificação do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Cor e aparência"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modo noturno"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrar tela"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Ativado"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Desativado"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Ativar automaticamente"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Alternar para o modo noturno conforme apropriado para o local e hora do dia"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Quando o modo noturno está ativado"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Usar o tema escuro para o SO Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajustar tonalidade"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajustar brilho"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"O tema escuro é aplicado a áreas centrais do sistema operacional Android que normalmente são exibidas em um tema claro, como as configurações."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicar"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmar configurações"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Algumas configurações de cor podem tornar o dispositivo inutilizável. Clique em \"OK\" para confirmar essas configurações de cor; caso contrário, essas configurações serão redefinidas após 10 segundos."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Uso da bateria"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"A Economia de bateria não fica disponível durante o carregamento"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Economia de bateria"</string>
diff --git a/packages/SystemUI/res/values-ro/config.xml b/packages/SystemUI/res/values-ro/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ro/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 8a5b1d6..bf55e18 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -146,6 +146,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -321,6 +323,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limită de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Avertizare: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modul de lucru"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Niciun element recent"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ați șters tot"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informații despre aplicație"</string>
@@ -520,21 +528,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Mai multe setări"</string>
     <string name="notification_done" msgid="5279426047273930175">"Terminat"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Opțiuni privind notificările pentru <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Culoare și aspect"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modul Noapte"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Calibrați afișarea"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Activat"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Dezactivat"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Activați automat"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Comutați la modul Noapte în funcție de locație și de momentul zilei"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Când modul Noapte este activat"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Folosiți tema întunecată pentru SO Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Ajustați culoarea"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Ajustați luminozitatea"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tema întunecată se aplică zonelor principale ale sistemului de operare Android care sunt de obicei afișate cu o temă deschisă la culoare, cum ar fi Setările."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Aplicați"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Confirmați setările"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Unele setări pentru culori pot face dispozitivul să nu mai funcționeze. Dați clic pe OK pentru a confirma aceste setări pentru culori. În caz contrar, acestea se vor reseta după 10 secunde."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Utilizarea bateriei"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Economisirea bateriei nu este disponibilă pe durata încărcării"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Economisirea bateriei"</string>
diff --git a/packages/SystemUI/res/values-ru/config.xml b/packages/SystemUI/res/values-ru/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ru/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index e595ef8..19b97df 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -147,6 +147,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роуминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -323,6 +325,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ограничение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Предупреждение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Рабочий режим"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Недавних приложений нет"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Вы очистили всё"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Сведения о приложении"</string>
@@ -522,21 +530,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Другие настройки"</string>
     <string name="notification_done" msgid="5279426047273930175">"Готово"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Управление уведомлениями (<xliff:g id="APP_NAME">%1$s</xliff:g>)"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Цвета и стиль"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Ночной режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Калибровка дисплея"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Включен"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Отключен"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Включать автоматически"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Включать ночной режим с учетом местоположения и времени суток"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"В ночном режиме"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Использовать темное оформление для Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Изменять оттенок"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Яркость"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Темное оформление применяется к основным элементам системы Android (таким, как приложение \"Настройки\"), которые обычно показываются в светлом."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Применить"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Подтвердите настройки"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Некоторые цветовые настройки могут затруднить работу с устройством. Чтобы применить выбранные параметры, нажмите \"ОК\". В противном случае они будут сброшены через 10 секунд."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Уровень заряда"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Режим энергосбережения нельзя включить во время зарядки"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Режим энергосбережения"</string>
diff --git a/packages/SystemUI/res/values-si-rLK/config.xml b/packages/SystemUI/res/values-si-rLK/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-si-rLK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml
index eb5863e..8555fcb 100644
--- a/packages/SystemUI/res/values-si-rLK/strings.xml
+++ b/packages/SystemUI/res/values-si-rLK/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"රෝමිං"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> සීමිත"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> අවවාද කිරීම"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"වැඩ ප්‍රකාරය"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"මෑත අයිතම නැත"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"ඔබ සියලු දේ හිස් කර ඇත"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"යෙදුම් තොරතුරු"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"තව සැකසීම්"</string>
     <string name="notification_done" msgid="5279426047273930175">"නිමයි"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> දැනුම්දීම් පාලන"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"වර්ණය සහ පෙනුම"</string>
-    <string name="night_mode" msgid="3540405868248625488">"රාත්‍රී ප්‍රකාරය"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"සංදර්ශකය ක්‍රමාංකනය කරන්න"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ක්‍රියාත්මකයි"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ක්‍රියාවිරහිතයි"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"ස්වයංක්‍රියව ක්‍රියාත්මක කරන්න"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"ස්ථානය සහ දවසේ වේලාවට ගැළපෙන ලෙස රාත්‍රී ප්‍රකාරයට මාරු වන්න"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"රාත්‍රී ප්‍රකාරය ක්‍රියාත්මක විට"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS සඳහා අඳුරු තේමාව භාවිත කරන්න"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"පැහැය සීරුමාරු කරන්න"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"දීප්තිය සීරුමාරු කරන්න"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"සැකසීම් වැනි, සාමාන්‍යයෙන් ලා පැහැ තේමාවක සංදර්ශනය වන Android OS හි මූලික ප්‍රදේශවලට අඳුරු තේමාව යෙදේ."</string>
-    <string name="color_apply" msgid="9212602012641034283">"යොදන්න"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"සැකසීම් තහවුරු කරන්න"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"සමහර වර්ණ සැකසීම් මෙම උපාංගය භාවිත කළ නොහැකි තත්ත්වයට පත් කළ හැකිය. මෙම වර්ණ සැකසීම් තහවුරු කිරීමට හරි ක්ලික් කරන්න, නැතහොත් මෙම සැකසීම් තත්පර 10කට පසුව යළි සකසනු ඇත."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"බැටරි භාවිතය"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ආරෝපණය අතරතුර බැටරි සුරැකුම ලබා ගත නොහැකිය."</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"බැටරි සුරැකුම"</string>
diff --git a/packages/SystemUI/res/values-sk/config.xml b/packages/SystemUI/res/values-sk/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-sk/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index b15cdd7..c439471 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -147,6 +147,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -323,6 +324,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Limit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Upozornenie pri <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Pracovný režim"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Nočný režim"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Nočný režim je zapnutý (vypnete ho klepnutím)"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Nočný režim je vypnutý (zapnete ho klepnutím)"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Žiadne nedávne položky"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vymazali ste všetko"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informácie o aplikácii"</string>
@@ -522,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Ďalšie nastavenia"</string>
     <string name="notification_done" msgid="5279426047273930175">"Hotovo"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Ovládacie prvky pre upozornenia z aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Farba a vzhľad"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nočný režim"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrovať obrazovku"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Zapnutý"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Vypnutý"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Zapínať automaticky"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Prepnúť do Nočného režimu podľa miesta a času dňa"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Keď je zapnutý Nočný režim"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Použiť tmavý motív pre systém Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Upraviť tónovanie"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Upraviť jas"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"V hlavných oblastiach systému Android OS (ako sú Nastavenia), ktoré sú obyčajne zobrazené vo svetlom motíve, je použitý tmavý motív."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Použiť"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Potvrdenie nastavení"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Niektoré nastavenia farieb môžu toto zariadenie znefunkčniť. Tieto nastavenia farieb potvrdíte kliknutím na tlačidlo OK, ináč sa tieto nastavenia o 10 sekúnd obnovia."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Využitie batérie"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Počas nabíjania nie je Šetrič batérie k dispozícii"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Šetrič batérie"</string>
diff --git a/packages/SystemUI/res/values-sl/config.xml b/packages/SystemUI/res/values-sl/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-sl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 295a4fc..bc1e00c 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -147,6 +147,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Gostovanje"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -323,6 +325,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Omejitev: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Opozorilo – <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Način za delo"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Ni nedavnih elementov"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Vse te počistili"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Podatki o aplikaciji"</string>
@@ -522,21 +530,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Več nastavitev"</string>
     <string name="notification_done" msgid="5279426047273930175">"Dokončano"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrolniki obvestil za aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Barva in videz"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nočni način"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Umerjanje zaslona"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Vklopljeno"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Izklopljeno"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Samodejni vklop"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Preklop v nočni način, kot je ustrezno glede na lokacijo in uro v dnevu"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Ko je vklopljen nočni način"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Uporaba temne teme za sistem Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Prilagodi odtenek"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Prilagodi svetlost"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Za osrednja področja sistema Android, ki so običajno prikazana v svetli temi, na primer nastavitve, je uporabljena temna tema."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Uporabi"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Potrditev nastavitev"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Zaradi nekaterih barvnih nastavitev lahko postane ta naprava neuporabna. Kliknite »V redu«, če želite potrditi te barvne nastavitve. V nasprotnem primeru se bodo čez 10 sekund ponastavile na prvotno vrednost."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Poraba akumulatorja"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Varčevanje z energijo akumulatorja med polnjenjem ni na voljo"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Varčevanje z energijo akumulatorja"</string>
diff --git a/packages/SystemUI/res/values-sq-rAL/config.xml b/packages/SystemUI/res/values-sq-rAL/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-sq-rAL/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sq-rAL/strings.xml b/packages/SystemUI/res/values-sq-rAL/strings.xml
index b40b6d5..054b136 100644
--- a/packages/SystemUI/res/values-sq-rAL/strings.xml
+++ b/packages/SystemUI/res/values-sq-rAL/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"Lidhje CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Kufiri: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Paralajmërim për kufirin prej <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Modaliteti i punës"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Nuk ka asnjë artikull të fundit"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"I ke pastruar të gjitha"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Informacioni i aplikacionit"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Cilësime të tjera"</string>
     <string name="notification_done" msgid="5279426047273930175">"U krye"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Kontrollet e njoftimeve të <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Ngjyra dhe pamja"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Modaliteti i natës"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibro ekranin"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aktiv"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Joaktiv"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Aktivizoje automatikisht"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Kalo në \"Modalitetin e natës\" sipas përshtatshmërisë për vendin dhe kohën e ditës"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kur \"Modaliteti i natës\" është aktiv"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Përdor temën e errët për Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Rregullo nuancën"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Rregullo ndriçimin"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Tema e errët zbatohet në zonat kryesore të Android OS që shfaqen zakonisht në një temë të çelur, siç janë \"Cilësimet\"."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Zbato"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Konfirmo cilësimet"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Disa cilësime ngjyrash mund ta bëjnë këtë pajisje të papërdorshme. Kliko OK për të konfirmuar këto cilësime ngjyrash, përndryshe këto cilësime do të rivendosen pas 10 sekondash."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Përdorimi i baterisë"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"\"Kursyesi i baterisë\" nuk është i disponueshëm gjatë karikimit"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Kursyesi i baterisë"</string>
diff --git a/packages/SystemUI/res/values-sr/config.xml b/packages/SystemUI/res/values-sr/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-sr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index b82a3c2..ecdcabc 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -146,6 +146,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роминг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Ограничење од <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Упозорење за <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Режим рада"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Нема недавних ставки"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Обрисали сте све"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Информације о апликацији"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Још подешавања"</string>
     <string name="notification_done" msgid="5279426047273930175">"Готово"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Контроле обавештења за апликацију <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Боја и изглед"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Ноћни режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Калибришите екран"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Укључено"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Искључено"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Аутоматски укључи"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Пређите на ноћни режим у зависности од локације и доба дана"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Када је ноћни режим укључен"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Користи тамну тему за Android ОС"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Прилагоди сенку"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Прилагоди осветљеност"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Тамна тема се примењује на кључне делове Android ОС-а који се обично приказују у светлој теми, попут Подешавања."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Примени"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Потврдите подешавања"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Нека подешавања боја могу да учине уређај неупотребљивим. Кликните на Потврди да бисте потврдили ова подешавања боја, пошто ће се у супротном ова подешавања ресетовати након 10 секунди."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Потрошња батерије"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Уштеда батерије није доступна током пуњења"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Уштеда батерије"</string>
diff --git a/packages/SystemUI/res/values-sv/config.xml b/packages/SystemUI/res/values-sv/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-sv/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 2b2de7a..62dbecb 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Gräns: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Varning <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Arbetsläge"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Listan med de senaste åtgärderna är tom"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Du har tömt listan"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Appinformation"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Fler inställningar"</string>
     <string name="notification_done" msgid="5279426047273930175">"Klar"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Inställningar för <xliff:g id="APP_NAME">%1$s</xliff:g>-aviseringar"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Färg och utseende"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Nattläge"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Kalibrera skärmen"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Aktiverat"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Inaktiverat"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Aktivera automatiskt"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Byt till Nattläge vid passande platser och tider på dygnet"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"När Nattläget är aktiverat"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Använd mörkt tema för Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Justera ton"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Justera ljusstyrka"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Det mörka temat används för kärnfunktioner i Android OS som brukar visas med ett ljust tema, t.ex. inställningarna."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Verkställ"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Bekräfta inställningarna"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Vissa färginställningar kan göra den här enheten oanvändbar. Klicka på OK om du vill bekräfta färginställningarna, annars återställs inställningarna efter 10 sekunder."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Batteriförbrukning"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Batterisparläget är inte tillgängligt vid laddning"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Batterisparläge"</string>
diff --git a/packages/SystemUI/res/values-sw/config.xml b/packages/SystemUI/res/values-sw/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-sw/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 1733638..3b29591 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Inatumia data nje mtandao wako wa kawaida"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ukingo"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"kikomo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Onyo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Hali ya kazi"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Mwanga wa Usiku"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Umewasha hali ya Mwanga wa Usiku, gonga ili uizime"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Umezima hali ya Mwanga wa Usiku, gonga ili uiwashe"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Hakuna vipengee vya hivi karibuni"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Umeondoa vipengee vyote"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Maelezo ya Programu"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Mipangilio zaidi"</string>
     <string name="notification_done" msgid="5279426047273930175">"Nimemaliza"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Vidhibiti vya arifa za <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Rangi na mwonekano"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Hali ya usiku"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Rekebisha onyesho"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Imewashwa"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Imezimwa"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Washa kiotomatiki"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Badilisha kuwa Hali ya Usiku kulingana na mahali na wakati"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Hali ya Usiku inapowashwa"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Tumia mandhari ya giza katika Mfumo wa Uendeshaji wa Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Rekebisha kivulivuli"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Rekebisha mwangaza"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Mandhari yenye giza yametumika katika maeneo muhimu ya Mfumo wa Uendeshaji wa Android ambayo kwa kawaida huonyeshwa katika mandhari yenye mwangaza, kama vile Mipangilio."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Tumia"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Thibitisha mipangilio"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Baadhi ya mipangilio ya rangi inaweza kufanya kifaa hiki kisitumike. Bofya Sawa ili uthibitishe mipangilio hii ya rangi, vinginevyo, mipangilio hii itajiweka upya baada ya sekunde 10."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Matumizi ya betri"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Kiokoa Betri hakipatikani unapochaji betri"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Kiokoa Betri"</string>
diff --git a/packages/SystemUI/res/values-ta-rIN/config.xml b/packages/SystemUI/res/values-ta-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ta-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ta-rIN/strings.xml b/packages/SystemUI/res/values-ta-rIN/strings.xml
index c360755..e50da0c 100644
--- a/packages/SystemUI/res/values-ta-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ta-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"ரோமிங்"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> வரம்பு"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> எச்சரிக்கை"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"பணிப் பயன்முறை"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"சமீபத்திய பணிகள் இல்லை"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"எல்லாவற்றையும் அழித்துவிட்டீர்கள்"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"பயன்பாட்டு தகவல்"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"மேலும் அமைப்புகள்"</string>
     <string name="notification_done" msgid="5279426047273930175">"முடிந்தது"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> அறிவிப்புக் கட்டுப்பாடுகள்"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"வண்ணமும் தோற்றமும்"</string>
-    <string name="night_mode" msgid="3540405868248625488">"இரவுப் பயன்முறை"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"திரையை அளவுத்திருத்தம் செய்"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"இயக்கத்தில்"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"முடக்கத்தில்"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"தானாகவே இயக்கு"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"இருப்பிடம் மற்றும் நேரத்தின்படி இரவுப் பயன்முறைக்கு மாற்று"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"இரவுப் பயன்முறை இயக்கப்பட்டிருக்கும் போது"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OSக்காக அடர் தீமினைப் பயன்படுத்து"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"டிண்ட்டைச் சரிசெய்"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ஒளிர்வைச் சரிசெய்"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"வழக்கமாக வெளிர் தீமில் காட்டப்படுகிற Android OS இன் முக்கிய பகுதிகளில் (எ.கா. அமைப்புகள்) அடர் தீம் பயன்படுத்தப்படுகிறது."</string>
-    <string name="color_apply" msgid="9212602012641034283">"பயன்படுத்து"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"அமைப்புகளை உறுதிப்படுத்து"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"சில வண்ண அமைப்புகள் இந்தச் சாதனத்தைப் பயன்படுத்த முடியாதபடி செய்யலாம். இந்த வண்ண அமைப்புகளை உறுதிப்படுத்த, சரி என்பதைக் கிளிக் செய்யவும், இல்லையெனில் இந்த அமைப்புகள் 10 வினாடிகளுக்குப் பின் மீட்டமைக்கப்படும்."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"பேட்டரி உபயோகம்"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"சார்ஜ் செய்யும் போது பேட்டரி சேமிப்பானைப் பயன்படுத்த முடியாது"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"பேட்டரி சேமிப்பான்"</string>
diff --git a/packages/SystemUI/res/values-te-rIN/config.xml b/packages/SystemUI/res/values-te-rIN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-te-rIN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-te-rIN/strings.xml b/packages/SystemUI/res/values-te-rIN/strings.xml
index b28dca4..b87342b 100644
--- a/packages/SystemUI/res/values-te-rIN/strings.xml
+++ b/packages/SystemUI/res/values-te-rIN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"రోమింగ్"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ఎడ్జ్"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> పరిమితి"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> హెచ్చరిక"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"పని మోడ్"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"ఇటీవలి అంశాలు ఏవీ లేవు"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"మీరు అన్నింటినీ తీసివేసారు"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"అనువర్తన సమాచారం"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"మరిన్ని సెట్టింగ్‌లు"</string>
     <string name="notification_done" msgid="5279426047273930175">"పూర్తయింది"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> నోటిఫికేషన్ నియంత్రణలు"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"రంగు మరియు కనిపించే తీరు"</string>
-    <string name="night_mode" msgid="3540405868248625488">"రాత్రి మోడ్"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"డిస్‌ప్లేని క్రమాంకనం చేయండి"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"ఆన్‌లో ఉంది"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ఆఫ్‌లో ఉంది"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"స్వయంచాలకంగా ఆన్ చేయి"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"స్థానం మరియు రోజులో సమయానికి తగినట్లుగా రాత్రి మోడ్‌కి మారుస్తుంది"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"రాత్రి మోడ్ ఆన్‌లో ఉన్నప్పుడు"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS కోసం ముదురు రంగు థీమ్ ఉపయోగించండి"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"లేత రంగును సర్దుబాటు చేయండి"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ప్రకాశాన్ని సర్దుబాటు చేయండి"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"సాధారణంగా లేత రంగు థీమ్‌లో ప్రదర్శించబడే సెట్టింగ్‌ల వంటి Android OS ప్రధాన అంశాలకు ముదురు రంగు థీమ్ వర్తింపజేయబడుతుంది."</string>
-    <string name="color_apply" msgid="9212602012641034283">"వర్తింపజేయి"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"సెట్టింగ్‌లను నిర్ధారించండి"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"కొన్ని రంగు సెట్టింగ్‌ల వలన ఈ పరికరం ఉపయోగించలేని విధంగా అయిపోవచ్చు. ఈ రంగు సెట్టింగ్‌లను నిర్ధారించడానికి సరే క్లిక్ చేయండి లేదంటే ఈ సెట్టింగ్‌లు 10 సెకన్ల తర్వాత రీసెట్ చేయబడతాయి."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"బ్యాటరీ వినియోగం"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ఛార్జ్ అవుతున్న సమయంలో బ్యాటరీ సేవర్ అందుబాటులో ఉండదు"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"బ్యాటరీ సేవర్"</string>
diff --git a/packages/SystemUI/res/values-th/config.xml b/packages/SystemUI/res/values-th/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-th/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 651de95..57538fb 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"โรมมิ่ง"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"ขีดจำกัด <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"คำเตือน <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"โหมดการทำงาน"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"แสงตอนกลางคืน"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"แสงตอนกลางคืนเปิดอยู่ แตะเพื่อปิด"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"แสงตอนกลางคืนปิดอยู่ แตะเพื่อเปิด"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"ไม่มีรายการล่าสุด"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"คุณได้ล้างทุกอย่างแล้ว"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ข้อมูลแอปพลิเคชัน"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"การตั้งค่าเพิ่มเติม"</string>
     <string name="notification_done" msgid="5279426047273930175">"เสร็จสิ้น"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"ส่วนควบคุมการแจ้งเตือนของ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"สีและลักษณะที่ปรากฏ"</string>
-    <string name="night_mode" msgid="3540405868248625488">"โหมดกลางคืน"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"ปรับเทียบการแสดงผล"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"เปิด"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"ปิด"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"เปิดอัตโนมัติ"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"เปลี่ยนเป็นโหมดกลางคืนตามความเหมาะสมกับสถานที่และเวลาของวัน"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"เมื่อเปิดโหมดกลางคืน"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"ใช้ธีมสีเข้มสำหรับ Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ปรับการแต้มสี"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"ปรับความสว่าง"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"ใช้ธีมสีเข้มในบริเวณสำคัญของระบบปฏิบัติการ Android ซึ่งปกติแล้วจะแสดงด้วยธีมสีอ่อน เช่น การตั้งค่า"</string>
-    <string name="color_apply" msgid="9212602012641034283">"ใช้"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ยืนยันการตั้งค่า"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"การตั้งค่าสีบางอย่างอาจทำให้อุปกรณ์นี้ใช้งานไม่ได้ คลิกตกลงเพื่อยืนยันการตั้งค่าสีเหล่านี้ มิฉะนั้นระบบจะรีเซ็ตการตั้งค่าหลังจาก 10 วินาที"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"การใช้งานแบตเตอรี่"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"ไม่สามารถใช้โหมดประหยัดแบตเตอรี่ระหว่างการชาร์จ"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"โหมดประหยัดแบตเตอรี่"</string>
diff --git a/packages/SystemUI/res/values-tl/config.xml b/packages/SystemUI/res/values-tl/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-tl/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 8eee276..f1b153e 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Roaming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ang limitasyon"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Babala sa <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Work mode"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Walang mga kamakailang item"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Na-clear mo ang lahat"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Impormasyon ng Application"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Higit pang mga setting"</string>
     <string name="notification_done" msgid="5279426047273930175">"Tapos Na"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Mga kontrol sa notification ng <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Kulay at hitsura"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Night mode"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"I-calibrate ang display"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Naka-on"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Naka-off"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Awtomatikong i-on"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Lumipat sa Night Mode kapag naaangkop sa lokasyon at oras"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Kapag naka-on ang Night Mode"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Gumamit ng madilim na tema para sa Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Isaayos ang tint"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Isaayos ang liwanag"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Ilalapat ang madilim na tema sa mga mahalagang bahagi ng Android OS na karaniwang ipinapakita nang may maliwanag na tema, gaya ng Mga Setting."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Ilapat"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Kumpirmahin ang mga setting"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Maaaring hindi magamit ang device na ito dahil sa ilang setting ng kulay. I-click ang OK upang kumpirmahin ang mga setting ng kulay na ito, kung hindi ay mare-reset ang mga setting na ito pagkatapos ng 10 segundo."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Paggamit ng baterya"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Hindi available ang Pangtipid sa Baterya kapag nagcha-charge"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Pangtipid sa Baterya"</string>
diff --git a/packages/SystemUI/res/values-tr/config.xml b/packages/SystemUI/res/values-tr/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-tr/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 32e9181..b6329e2 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Dolaşımda"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Sınır: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> uyarısı"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Çalışma modu"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Yeni öğe yok"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Her şeyi sildiniz"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Uygulama Bilgileri"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Diğer ayarlar"</string>
     <string name="notification_done" msgid="5279426047273930175">"Bitti"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> bildirim denetimleri"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Renk ve görünüm"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Gece modu"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Ekranı kalibre et"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Açık"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Kapalı"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Otomatik olarak aç"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Konuma ve günün saatine uygun şekilde Gece Modu\'na geç"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Gece Modu açık olduğunda"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android OS için koyu renk tema kullan"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Tonu ayarla"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Parlaklığı ayarla"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Koyu renk tema, Android OS\'nin normalde Ayarlar gibi açık renk bir temayla görüntülenen temel alanlarına uygulanır."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Uygula"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Ayarları onaylayın"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Bazı renkler bu cihazı kullanılmaz yapabilir. Bu renkleri onaylamak için Tamam\'ı tıklayın. Tıklamazsanız bu ayarlar 10 saniye sonra sıfırlanacaktır."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Pil kullanımı"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Şarj sırasında Pil Tasarrufu özelliği kullanılamaz"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Pil Tasarrufu"</string>
diff --git a/packages/SystemUI/res/values-uk/config.xml b/packages/SystemUI/res/values-uk/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-uk/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index da6b2187..6e93153 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -36,14 +36,14 @@
     <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Сповіщення"</string>
     <string name="battery_low_title" msgid="6456385927409742437">"Низький рівень заряду акумулятора"</string>
     <string name="battery_low_percent_format" msgid="2900940511201380775">"Залишилося <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
-    <string name="battery_low_percent_format_saver_started" msgid="6859235584035338833">"Залишилося <xliff:g id="PERCENTAGE">%s</xliff:g>. Режим заощадження заряду акумулятора ввімкнено."</string>
+    <string name="battery_low_percent_format_saver_started" msgid="6859235584035338833">"Залишилося <xliff:g id="PERCENTAGE">%s</xliff:g>. Увімкнено режим енергозбереження."</string>
     <string name="invalid_charger" msgid="4549105996740522523">"Заряджання USB не підтримується.\nВикористовуйте лише наданий у комплекті зарядний пристрій."</string>
     <string name="invalid_charger_title" msgid="3515740382572798460">"Заряджання через USB не підтримується."</string>
     <string name="invalid_charger_text" msgid="5474997287953892710">"Використовуйте лише зарядний пристрій, який постачається в комплекті."</string>
     <string name="battery_low_why" msgid="4553600287639198111">"Налаштування"</string>
-    <string name="battery_saver_confirmation_title" msgid="5299585433050361634">"Увімкнути режим заощадження заряду акумулятора?"</string>
+    <string name="battery_saver_confirmation_title" msgid="5299585433050361634">"Увімкнути режим енергозбереження?"</string>
     <string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Увімкнути"</string>
-    <string name="battery_saver_start_action" msgid="5576697451677486320">"Увімкнути режим заощадження заряду акумулятора"</string>
+    <string name="battery_saver_start_action" msgid="5576697451677486320">"Увімкнути режим енергозбереження"</string>
     <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Налаштування"</string>
     <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string>
     <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Повертати екран автоматично"</string>
@@ -147,6 +147,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Роумінг"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -323,6 +325,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Обмеження: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Застереження: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Робочий режим"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Немає нещодавніх завдань"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Ви очистили все"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Інформація про додаток"</string>
@@ -392,9 +400,9 @@
     <string name="user_remove_user_title" msgid="4681256956076895559">"Видалити користувача?"</string>
     <string name="user_remove_user_message" msgid="1453218013959498039">"Усі додатки й дані цього користувача буде видалено."</string>
     <string name="user_remove_user_remove" msgid="7479275741742178297">"Видалити"</string>
-    <string name="battery_saver_notification_title" msgid="237918726750955859">"Режим заощадження заряду акумулятора ввімкнено"</string>
+    <string name="battery_saver_notification_title" msgid="237918726750955859">"Режим енергозбереження ввімкнено"</string>
     <string name="battery_saver_notification_text" msgid="820318788126672692">"Знижується продуктивність і обмежуються фонові дані"</string>
-    <string name="battery_saver_notification_action_text" msgid="109158658238110382">"Вимкнути режим заощадження заряду акумулятора"</string>
+    <string name="battery_saver_notification_action_text" msgid="109158658238110382">"Вимкнути режим енергозбереження"</string>
     <string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> отримає доступ до всіх даних, які відображаються на вашому екрані."</string>
     <string name="media_projection_remember_text" msgid="3103510882172746752">"Більше не показувати"</string>
     <string name="clear_all_notifications_text" msgid="814192889771462828">"Очистити все"</string>
@@ -522,24 +530,9 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Більше налаштувань"</string>
     <string name="notification_done" msgid="5279426047273930175">"Готово"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Елементи керування сповіщеннями додатка <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Колір і вигляд"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Нічний режим"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Калібрувати дисплей"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Увімкнено"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Вимкнено"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Вмикати автоматично"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Переходити на нічний режим відповідно до місцезнаходження та часу доби"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Коли нічний режим увімкнено"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Використати нічну тему для ОС Android"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Налаштувати відтінок"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Регулювати яскравість"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Темна тема застосовується в основних областях ОС Android, які зазвичай відображаються у світлій темі, як-от у налаштуваннях."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Застосувати"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Підтвердити налаштування"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Деякі налаштування кольорів можуть зробити цей пристрій непридатним для використання. Натисніть OK, щоб підтвердити налаштування, інакше їх буде скинуто через 10 секунд."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Використання заряду"</string>
-    <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Режим економії заряду акумулятора недоступний під час заряджання"</string>
-    <string name="battery_detail_switch_title" msgid="6285872470260795421">"Режим економії заряду акумулятора"</string>
+    <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Режим енергозбереження не можна ввімкнути під час заряджання"</string>
+    <string name="battery_detail_switch_title" msgid="6285872470260795421">"Режим енергозбереження"</string>
     <string name="battery_detail_switch_summary" msgid="9049111149407626804">"Знижується продуктивність і обмежується обмін даними у фоновому режимі"</string>
     <string name="keyboard_key_button_template" msgid="6230056639734377300">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="keyboard_key_home" msgid="2243500072071305073">"Home"</string>
diff --git a/packages/SystemUI/res/values-ur-rPK/config.xml b/packages/SystemUI/res/values-ur-rPK/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-ur-rPK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-ur-rPK/strings.xml b/packages/SystemUI/res/values-ur-rPK/strings.xml
index 0fdf3ff..cae3a0a 100644
--- a/packages/SystemUI/res/values-ur-rPK/strings.xml
+++ b/packages/SystemUI/res/values-ur-rPK/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+‎"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"رومنگ"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> حد"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> وارننگ"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"کام موڈ"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"کوئی حالیہ آئٹم نہیں"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"آپ نے سب کچھ صاف کر دیا ہے"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"ایپلیکیشن کی معلومات"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"مزید ترتیبات"</string>
     <string name="notification_done" msgid="5279426047273930175">"ہوگیا"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> کے نوٹیفکیشن کنٹرولز"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"رنگ اور ظہور"</string>
-    <string name="night_mode" msgid="3540405868248625488">"رات موڈ"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"نشان زد ڈسپلے"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"آن"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"آف"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"خودکار طور پر آن کریں"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"مقام اور دن کے وقت کی مناسبت سے نائٹ موڈ میں سوئچ کریں"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"جب نائٹ موڈ آن ہو"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"‏Android OS کیلئے ڈارک تھیم استعمال کریں"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"ٹنٹ ایڈجسٹ کریں"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"چمک کو ایڈجسٹ کریں"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"‏ڈارک تھیم Android OS کی بنیادی جگہوں پر لاگو کی جاتی ہے جو عام طور لائٹ تھیم میں ڈسپلے ہوتے ہیں، جیسے ترتیبات۔"</string>
-    <string name="color_apply" msgid="9212602012641034283">"لاگو کریں"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"ترتیبات کی توثیق کریں"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"رنگوں کی کچھ ترتیبات اس آلے کو ناقابل استعمال بنا سکتی ہیں۔ رنگوں کی ان ترتیبات کی توثیق کرنے کیلئے ٹھیک ہے پر کلک کریں، بصورت دیگر 10 سیکنڈ بعد یہ ترتیبات ری سیٹ ہو جائیں گی۔"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"بیٹری کا استعمال"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"چارجنگ کے دوران بیٹری سیور دستیاب نہیں ہے"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"بیٹری سیور"</string>
diff --git a/packages/SystemUI/res/values-uz-rUZ/config.xml b/packages/SystemUI/res/values-uz-rUZ/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-uz-rUZ/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 48ba2b8..6a95798 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Rouming"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Cheklov: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Ogohlantirish: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ish rejimi"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Hozircha hech narsa yo‘q"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Hammasi o‘chirildi"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Ilova haqida ma’lumot"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Boshqa sozlamalar"</string>
     <string name="notification_done" msgid="5279426047273930175">"Tayyor"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> bildirishnomalarini boshqarish"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Rang va ko‘rinishi"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Tungi rejim"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Ekranni kalibrlash"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Yoniq"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"O‘chiq"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Avtomatik yoqish"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Joylashuv va vaqtga mos ravishda tungi rejimga o‘tish"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Agar tungi rejim yoniq bo‘lsa"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Android uchun to‘q rangli mavzudan foydalanish"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Rang tusini o‘zgartirish"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Yorqinlikni o‘zgartirish"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"To‘q rangli mavzu Android tizimining odatda och rangda ko‘rsatiladigan o‘zak sahifalariga (masalan, Sozlamalar) nisbatan qo‘llaniladi."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Qo‘llash"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Sozlamalarni tasdiqlang"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Ba’zi rang sozlamalari qurilmadan foydalanishni qiyinlashtirish mumkin. Tanlgan parametrlarni tasdiqlash uchun “OK” tugmasini bosing. Aks holda, ular 10 soniyadan so‘ng qayta tiklanadi."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Batareya sarfi"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Quvvat tejash rejimidan quvvatlash vaqtida foydalanib bo‘lmaydi"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Quvvat tejash rejimi"</string>
diff --git a/packages/SystemUI/res/values-vi/config.xml b/packages/SystemUI/res/values-vi/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-vi/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 2c4c7de..385054a 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Chuyển vùng"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Cạnh"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Giới hạn <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Cảnh báo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Chế độ làm việc"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"Không có mục gần đây nào"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Bạn đã xóa mọi nội dung"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Thông tin ứng dụng"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Cài đặt khác"</string>
     <string name="notification_done" msgid="5279426047273930175">"Xong"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"Điều khiển thông báo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Màu sắc và giao diện"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Chế độ ban đêm"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Hiệu chỉnh hiển thị"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Bật"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Tắt"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Tự động bật"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Chuyển sang Chế bộ ban đêm khi thích hợp cho vị trí và thời gian trong ngày"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Khi Chế độ ban đêm đang bật"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Sử dụng chủ đề sẫm màu cho Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Điều chỉnh phủ màu"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Điều chỉnh độ sáng"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Chủ đề sẫm màu được áp dụng cho các vùng chính của Android OS được hiển thị bình thường trong chủ đề sáng màu, chẳng hạn như Cài đặt."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Áp dụng"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Xác nhận cài đặt"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Một số cài đặt màu có thể khiến thiết bị này không sử dụng được. Hãy nhấp vào OK để xác nhận các cài đặt màu này, nếu không những cài đặt này sẽ được đặt lại sau 10 giây."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Mức sử dụng pin"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Trình tiết kiệm pin không khả dụng trong khi sạc"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Trình tiết kiệm pin"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/config.xml b/packages/SystemUI/res/values-zh-rCN/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rCN/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 139c4a5..e0d7bba 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫游中"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
@@ -252,10 +254,10 @@
     <string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知设置"</string>
     <string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>设置"</string>
     <string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"屏幕会自动旋转。"</string>
-    <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"屏幕锁定为横向模式。"</string>
+    <string name="accessibility_rotation_lock_on_landscape" msgid="6731197337665366273">"屏幕锁定为横屏模式。"</string>
     <string name="accessibility_rotation_lock_on_portrait" msgid="5809367521644012115">"屏幕锁定为纵向模式。"</string>
     <string name="accessibility_rotation_lock_off_changed" msgid="8134601071026305153">"屏幕将会自动旋转。"</string>
-    <string name="accessibility_rotation_lock_on_landscape_changed" msgid="3135965553707519743">"屏幕现已锁定为横向模式。"</string>
+    <string name="accessibility_rotation_lock_on_landscape_changed" msgid="3135965553707519743">"屏幕现已锁定为横屏模式。"</string>
     <string name="accessibility_rotation_lock_on_portrait_changed" msgid="8922481981834012126">"屏幕现已锁定为纵向模式。"</string>
     <string name="dessert_case" msgid="1295161776223959221">"甜品盒"</string>
     <string name="start_dreams" msgid="5640361424498338327">"屏保"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上限为<xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g>警告"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"工作模式"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"近期没有任何内容"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"您已清除所有内容"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"应用信息"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"更多设置"</string>
     <string name="notification_done" msgid="5279426047273930175">"完成"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g>通知设置"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"颜色和外观"</string>
-    <string name="night_mode" msgid="3540405868248625488">"夜间模式"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"校准显示屏"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"开启"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"关闭"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"自动开启"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"根据地点和时间适时切换到夜间模式"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"夜间模式开启时"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"对 Android 操作系统使用深色主题背景"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"调整色调"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"调整亮度"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"系统会将深色主题背景应用于 Android 操作系统的核心区域（通常以浅色主题背景显示），例如“设置”部分。"</string>
-    <string name="color_apply" msgid="9212602012641034283">"应用"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"确认设置"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"部分颜色设置可能会导致此设备无法使用。请点击“确定”确认这些颜色设置，否则，系统将在 10 秒后重置这些设置。"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"电池使用情况"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"充电过程中无法使用省电模式"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"省电模式"</string>
@@ -554,7 +547,7 @@
     <string name="keyboard_key_media_rewind" msgid="2654808213360820186">"快退"</string>
     <string name="keyboard_key_media_fast_forward" msgid="3849417047738200605">"快进"</string>
     <string name="keyboard_key_page_up" msgid="5654098530106845603">"向上翻页"</string>
-    <string name="keyboard_key_page_down" msgid="8720502083731906136">"向下翻页"</string>
+    <string name="keyboard_key_page_down" msgid="8720502083731906136">"PgDn"</string>
     <string name="keyboard_key_forward_del" msgid="1391451334716490176">"删除"</string>
     <string name="keyboard_key_move_home" msgid="2765693292069487486">"Home"</string>
     <string name="keyboard_key_move_end" msgid="5901174332047975247">"End"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/config.xml b/packages/SystemUI/res/values-zh-rHK/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rHK/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index c805875..0a90156 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫遊"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -319,6 +321,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上限為 <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 警告"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"工作模式"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"沒有最近項目"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"您已清除所有項目"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"應用程式資料"</string>
@@ -518,21 +526,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"更多設定"</string>
     <string name="notification_done" msgid="5279426047273930175">"完成"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」通知控制項"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"顏色和外觀"</string>
-    <string name="night_mode" msgid="3540405868248625488">"夜間模式"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"校準螢幕"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"已開啟"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"已關閉"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"自動開啟"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"在適當的位置和時間切換至「夜間模式」"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"「夜間模式」開啟時"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"在 Android OS 中使用深色主題背景"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"調整色調"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"調整亮度"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"系統會將深色主題背景套用至 Android OS 核心區域 (一般以淺色主題背景顯示)，例如「設定」。"</string>
-    <string name="color_apply" msgid="9212602012641034283">"套用"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"確認設定"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"部分顏色設定會令此裝置無法使用。請按一下 [確定] 加以確認，否則這些顏色設定將於 10 秒後重設。"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"電池用量"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"充電時無法使用「省電模式」"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"省電模式"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/config.xml b/packages/SystemUI/res/values-zh-rTW/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-zh-rTW/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 9b28904..b70cc7b 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -145,6 +145,8 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"LTE"</string>
+    <!-- no translation found for accessibility_data_connection_lte_plus (361876866906946007) -->
+    <skip />
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"漫遊中"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
@@ -317,6 +319,12 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"上限為 <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 警告"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"工作模式"</string>
+    <!-- no translation found for quick_settings_night_display_label (3577098011487644395) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_on (1814901757887526769) -->
+    <skip />
+    <!-- no translation found for quick_settings_night_display_summary_off (7892102914128777905) -->
+    <skip />
     <string name="recents_empty_message" msgid="808480104164008572">"最近沒有任何項目"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"您已清除所有工作"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"應用程式資訊"</string>
@@ -516,21 +524,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"更多設定"</string>
     <string name="notification_done" msgid="5279426047273930175">"完成"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」通知控制項"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"顏色和外觀"</string>
-    <string name="night_mode" msgid="3540405868248625488">"夜間模式"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"校正顯示畫面"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"開啟"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"關閉"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"自動開啟"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"根據地點和時段適時切換到「夜間模式」"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"「夜間模式」開啟時"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"針對 Android 作業系統使用深色主題"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"調整色調"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"調整亮度"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"深色主題會套用到 Android 作業系統的核心區塊 (一般是以淺色主題顯示)，例如「設定」區塊。"</string>
-    <string name="color_apply" msgid="9212602012641034283">"套用"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"確認設定"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"部分顏色設定可能會造成這部裝置無法使用。請按一下 [確定] 來確認您要使用這類顏色設定，否則系統將在 10 秒後重設這些設定。"</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"電池用量"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"充電時無法使用節約耗電量模式"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"節約耗電量"</string>
diff --git a/packages/SystemUI/res/values-zu/config.xml b/packages/SystemUI/res/values-zu/config.xml
new file mode 100644
index 0000000..5309563
--- /dev/null
+++ b/packages/SystemUI/res/values-zu/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--  These resources are around just to allow their values to be customized
+     for different hardware and product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="doze_pickup_subtype_performs_proximity_check" msgid="533127617385956583"></string>
+</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 7bc7ae4..ffea746 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -145,6 +145,7 @@
     <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string>
     <string name="accessibility_data_connection_4g_plus" msgid="3032226872470658661">"4G+"</string>
     <string name="accessibility_data_connection_lte" msgid="5413468808637540658">"I-LTE"</string>
+    <string name="accessibility_data_connection_lte_plus" msgid="361876866906946007">"I-LTE+"</string>
     <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string>
     <string name="accessibility_data_connection_roaming" msgid="5977362333466556094">"Iyazulazula"</string>
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ekucupheleni"</string>
@@ -317,6 +318,9 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> umkhawulo"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> isexwayiso"</string>
     <string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Imodi yomsebenzi"</string>
+    <string name="quick_settings_night_display_label" msgid="3577098011487644395">"Ukukhanya kwasebusuku"</string>
+    <string name="quick_settings_night_display_summary_on" msgid="1814901757887526769">"Ukukhanya kwasebusuku kuvuliwe, thepha ukuze uvale"</string>
+    <string name="quick_settings_night_display_summary_off" msgid="7892102914128777905">"Ukukhanya kwasebusuku kuvaliwe, thepha ukuze uvule"</string>
     <string name="recents_empty_message" msgid="808480104164008572">"Azikho izinto zakamuva"</string>
     <string name="recents_empty_message_dismissed_all" msgid="2791312568666558651">"Usule yonke into"</string>
     <string name="recents_app_info_button_label" msgid="2890317189376000030">"Ulwazi lohlelo lokusebenza"</string>
@@ -516,21 +520,6 @@
     <string name="notification_more_settings" msgid="816306283396553571">"Izilungiselelo eziningi"</string>
     <string name="notification_done" msgid="5279426047273930175">"Kwenziwe"</string>
     <string name="notification_gear_accessibility" msgid="94429150213089611">"<xliff:g id="APP_NAME">%1$s</xliff:g> izilawuli zasaziso"</string>
-    <string name="color_and_appearance" msgid="1254323855964993144">"Umbala nokubonakala"</string>
-    <string name="night_mode" msgid="3540405868248625488">"Imodi yasebusuku"</string>
-    <string name="calibrate_display" msgid="5974642573432039217">"Sika isibonisi"</string>
-    <string name="night_mode_on" msgid="5597545513026541108">"Vuliwe"</string>
-    <string name="night_mode_off" msgid="8035605276956057508">"Valiwe"</string>
-    <string name="turn_on_automatically" msgid="4167565356762016083">"Vula ngokuzenzakalela"</string>
-    <string name="turn_on_auto_summary" msgid="2190994512406701520">"Shintshela kwimodi yasebusuku njengokuqondile ngendawo nesikhathi sosuku"</string>
-    <string name="when_night_mode_on" msgid="2969436026899172821">"Uma imodi yasebusuku ivulekile"</string>
-    <string name="use_dark_theme" msgid="2900938704964299312">"Sebenzisa ingqikithi emnyama ku-Android OS"</string>
-    <string name="adjust_tint" msgid="3398569573231409878">"Lungisa i-tint"</string>
-    <string name="adjust_brightness" msgid="980039329808178246">"Lungisa ukukhanya"</string>
-    <string name="night_mode_disclaimer" msgid="598914896926759578">"Itimu emnyama isetshenziswa ezindaweni eziqinile ze-Android OS ezivamise ukuoniswa ngetimu ekhanyayo, efana nezilungiselelo."</string>
-    <string name="color_apply" msgid="9212602012641034283">"Sebenzisa"</string>
-    <string name="color_revert_title" msgid="4746666545480534663">"Qinisekisa izilungiselelo"</string>
-    <string name="color_revert_message" msgid="9116001069397996691">"Ezinye izilungiselelo zombala zingenza le divayisi ingasebenziseki. Chofoza ku-KULUNGILE ukuze uqinisekise lezi zilungiselelo zombala, uma kungenjalo lezi zilungiselelo zizosethwa kabusha ngemuva kwamasekhondi angu-10."</string>
     <string name="battery_panel_title" msgid="7944156115535366613">"Ukusetshenziswa kwebhethri"</string>
     <string name="battery_detail_charging_summary" msgid="1279095653533044008">"Isilondolozi sebhethri asitholakali ngesikhathi sokushaja"</string>
     <string name="battery_detail_switch_title" msgid="6285872470260795421">"Isilondolozi sebhethri"</string>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 9061376..52565ba 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -30,7 +30,7 @@
     <color name="batterymeter_charge_color">#FFFFFFFF</color>
     <color name="batterymeter_bolt_color">#FFFFFFFF</color>
     <color name="qs_batterymeter_frame_color">#FF404040</color>
-    <color name="system_warning_color">#fff4511e</color><!-- deep orange 600 -->
+    <color name="system_warning_color">@*android:color/system_error</color>
     <color name="qs_text">#FFFFFFFF</color>
     <color name="qs_tile_divider">#29ffffff</color><!-- 16% white -->
     <color name="qs_subhead">#99FFFFFF</color><!-- 60% white -->
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 134388f..fa30f49 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -224,9 +224,25 @@
     <!-- Doze: duration to avoid false pickup gestures triggered by notification vibrations -->
     <integer name="doze_pickup_vibration_threshold">2000</integer>
 
-    <!-- Doze: can we assume the pickup sensor includes a proximity check? -->
+    <!-- Doze: can we assume the pickup sensor includes a proximity check?
+         This is ignored if doze_pickup_subtype_performs_proximity_check is not empty.
+         @deprecated: use doze_pickup_subtype_performs_proximity_check instead.-->
     <bool name="doze_pickup_performs_proximity_check">false</bool>
 
+    <!-- Doze: a list of pickup sensor subtypes that perform a proximity check before they trigger.
+               If not empty, either * or !* must appear to specify the default.
+               If empty, falls back to doze_pickup_performs_proximity_check.
+
+               Examples: 1,2,3,!* -> subtypes 1,2 and 3 perform the check, all others don't.
+                         !1,!2,*  -> subtypes 1 and 2 don't perform the check, all others do.
+                         !8,*     -> subtype 8 does not perform the check, all others do
+                         1,1,*    -> illegal, every item may only appear once
+                         1,!1,*   -> illegal, no contradictions allowed
+                         1,2      -> illegal, need either * or !*
+                         1,,4a3   -> illegal, no empty or non-numeric terms allowed
+    -->
+    <string name="doze_pickup_subtype_performs_proximity_check"></string>
+
     <!-- Doze: pulse parameter - how long does it take to fade in? -->
     <integer name="doze_pulse_duration_in">900</integer>
 
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index da04934..5bd0e87 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -212,7 +212,7 @@
     <dimen name="qs_detail_empty_text_size">14sp</dimen>
     <dimen name="qs_detail_margin_top">28dp</dimen>
     <dimen name="qs_detail_back_margin_end">16dp</dimen>
-    <dimen name="qs_detail_header_text_padding">0dp</dimen>
+    <dimen name="qs_detail_header_text_padding">16dp</dimen>
     <dimen name="qs_data_usage_text_size">14sp</dimen>
     <dimen name="qs_data_usage_usage_text_size">36sp</dimen>
     <dimen name="qs_battery_padding">2dp</dimen>
@@ -396,6 +396,8 @@
 
     <!-- The font size of the date in QS -->
     <dimen name="qs_date_collapsed_size">14sp</dimen>
+    <!-- Amount the date/time move when emergency calls only is present -->
+    <dimen name="qs_date_time_translation">8dp</dimen>
 
     <!-- Battery level text padding end when in expanded QS and on Keyguard -->
     <dimen name="battery_level_padding_end">2dp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 71816f7..8ad4d9b 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -354,6 +354,9 @@
     <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_data_connection_lte">LTE</string>
 
+    <!-- Content description of the data connection type LTE+ for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+    <string name="accessibility_data_connection_lte_plus">LTE+</string>
+
     <!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_data_connection_cdma">CDMA</string>
 
@@ -750,6 +753,12 @@
     <string name="quick_settings_cellular_detail_data_warning"><xliff:g id="data_limit" example="2.0 GB">%s</xliff:g> warning</string>
     <!-- QuickSettings: Work mode [CHAR LIMIT=NONE] -->
     <string name="quick_settings_work_mode_label">Work mode</string>
+    <!-- QuickSettings: Label for the toggle to activate Night display (renamed "Night Light" with title caps). [CHAR LIMIT=20] -->
+    <string name="quick_settings_night_display_label">Night Light</string>
+    <!-- QuickSettings: Summary for the toggle to deactivate Night display when it's on (renamed "Night Light" with title caps). [CHAR LIMIT=NONE] -->
+    <string name="quick_settings_night_display_summary_on">Night Light on, tap to turn off</string>
+    <!-- QuickSettings: Label for the toggle to activate Night display when it's off (renamed "Night Light" with title caps). [CHAR LIMIT=NONE] -->
+    <string name="quick_settings_night_display_summary_off">Night Light off, tap to turn on</string>
 
     <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
     <string name="recents_empty_message">No recent items</string>
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 39a3412..52b5a54 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -55,7 +55,8 @@
             com.android.systemui.media.RingtonePlayer.class,
             com.android.systemui.keyboard.KeyboardUI.class,
             com.android.systemui.tv.pip.PipUI.class,
-            com.android.systemui.shortcut.ShortcutKeyDispatcher.class
+            com.android.systemui.shortcut.ShortcutKeyDispatcher.class,
+            com.android.systemui.VendorServices.class
     };
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index b5561bd..21f68f5 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -29,6 +29,7 @@
 import com.android.systemui.statusbar.BaseStatusBar;
 import com.android.systemui.statusbar.ScrimView;
 import com.android.systemui.statusbar.phone.KeyguardBouncer;
+import com.android.systemui.statusbar.phone.LockscreenWallpaper;
 import com.android.systemui.statusbar.phone.NotificationIconAreaController;
 import com.android.systemui.statusbar.phone.PhoneStatusBar;
 import com.android.systemui.statusbar.phone.QSTileHost;
@@ -94,7 +95,7 @@
     }
 
     public ScrimController createScrimController(ScrimView scrimBehind, ScrimView scrimInFront,
-            View headsUpScrim) {
+            View headsUpScrim, LockscreenWallpaper lockscreenWallpaper) {
         return new ScrimController(scrimBehind, scrimInFront, headsUpScrim);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/VendorServices.java b/packages/SystemUI/src/com/android/systemui/VendorServices.java
new file mode 100644
index 0000000..0be6b12
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/VendorServices.java
@@ -0,0 +1,29 @@
+/*
+ * 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;
+
+/**
+ * Placeholder for any vendor-specific services.
+ */
+public class VendorServices extends SystemUI {
+
+    @Override
+    public void start() {
+        // no-op
+    }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
index af2a286..9eceeac 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
@@ -47,7 +47,7 @@
     private static final long TIMEOUT_SERVICE = 2500;
     private static final long TIMEOUT_ACTIVITY = 1000;
 
-    private final Context mContext;
+    protected final Context mContext;
     private final WindowManager mWindowManager;
     private final AssistDisclosure mAssistDisclosure;
 
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 5f1b042..661b347 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -214,6 +214,10 @@
     }
 
     private void requestPulse(final int reason) {
+        requestPulse(reason, false /* performedProxCheck */);
+    }
+
+    private void requestPulse(final int reason, boolean performedProxCheck) {
         if (mHost != null && mDreaming && !mPulsing) {
             // Let the host know we want to pulse.  Wait for it to be ready, then
             // turn the screen on.  When finished, turn the screen off again.
@@ -226,10 +230,9 @@
                 return;
             }
             final long start = SystemClock.uptimeMillis();
-            final boolean nonBlocking = reason == DozeLog.PULSE_REASON_SENSOR_PICKUP
-                    && mDozeParameters.getPickupPerformsProxCheck();
-            if (nonBlocking) {
-                // proximity check is only done to capture statistics, continue pulsing
+            if (performedProxCheck) {
+                // the caller already performed a successful proximity check; we'll only do one to
+                // capture statistics, continue pulsing immediately.
                 continuePulsing(reason);
             }
             // perform a proximity check
@@ -239,7 +242,7 @@
                     final boolean isNear = result == RESULT_NEAR;
                     final long end = SystemClock.uptimeMillis();
                     DozeLog.traceProximityResult(mContext, isNear, end - start, reason);
-                    if (nonBlocking) {
+                    if (performedProxCheck) {
                         // we already continued
                         return;
                     }
@@ -540,9 +543,12 @@
             mWakeLock.acquire();
             try {
                 if (DEBUG) Log.d(mTag, "onTrigger: " + triggerEventToString(event));
+                boolean sensorPerformsProxCheck = false;
                 if (mSensor.getType() == Sensor.TYPE_PICK_UP_GESTURE) {
                     int subType = (int) event.values[0];
                     MetricsLogger.action(mContext, MetricsEvent.ACTION_AMBIENT_GESTURE, subType);
+                    sensorPerformsProxCheck = mDozeParameters.getPickupSubtypePerformsProxCheck(
+                            subType);
                 }
                 if (mDebugVibrate) {
                     final Vibrator v = (Vibrator) mContext.getSystemService(
@@ -555,7 +561,7 @@
                 }
 
                 mRegistered = false;
-                requestPulse(mPulseReason);
+                requestPulse(mPulseReason, sensorPerformsProxCheck);
                 updateListener();  // reregister, this sensor only fires once
 
                 // reset the notification pulse schedule, but only if we think we were not triggered
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
index 805e9d6..4343f62 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
@@ -63,11 +63,12 @@
     private boolean mScanState;
     private boolean mClosingDetail;
     private boolean mFullyExpanded;
-    protected View mQsDetailHeaderBack;
     private BaseStatusBarHeader mHeader;
     private boolean mTriggeredExpand;
     private int mOpenX;
     private int mOpenY;
+    private boolean mAnimating;
+    private boolean mSwitchState;
 
     public QSDetail(Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
@@ -92,7 +93,6 @@
         mDetailDoneButton = (TextView) findViewById(android.R.id.button1);
 
         mQsDetailHeader = findViewById(R.id.qs_detail_header);
-        mQsDetailHeaderBack = mQsDetailHeader.findViewById(com.android.internal.R.id.up);
         mQsDetailHeaderTitle = (TextView) mQsDetailHeader.findViewById(android.R.id.title);
         mQsDetailHeaderSwitch = (Switch) mQsDetailHeader.findViewById(android.R.id.toggle);
         mQsDetailHeaderProgress = (ImageView) findViewById(R.id.qs_detail_header_progress);
@@ -109,7 +109,6 @@
                 mQsPanel.closeDetail();
             }
         };
-        mQsDetailHeaderBack.setOnClickListener(doneListener);
         mDetailDoneButton.setOnClickListener(doneListener);
     }
 
@@ -215,6 +214,7 @@
 
     protected void animateDetailVisibleDiff(int x, int y, boolean visibleDiff, AnimatorListener listener) {
         if (visibleDiff) {
+            mAnimating = true;
             if (mFullyExpanded || mDetailAdapter != null) {
                 setAlpha(1);
                 mClipper.animateCircularClip(x, y, mDetailAdapter != null, listener);
@@ -246,7 +246,7 @@
             mQsDetailHeader.setClickable(false);
         } else {
             mQsDetailHeaderSwitch.setVisibility(VISIBLE);
-            mQsDetailHeaderSwitch.setChecked(toggleState);
+            handleToggleStateChanged(toggleState);
             mQsDetailHeader.setClickable(true);
             mQsDetailHeader.setOnClickListener(new OnClickListener() {
                 @Override
@@ -260,7 +260,14 @@
     }
 
     private void handleToggleStateChanged(boolean state) {
+        mSwitchState = state;
+        if (mAnimating) {
+            return;
+        }
         mQsDetailHeaderSwitch.setChecked(state);
+        final boolean toggleEnabled = mDetailAdapter != null && mDetailAdapter.getToggleEnabled();
+        mQsDetailHeader.setEnabled(toggleEnabled);
+        mQsDetailHeaderSwitch.setEnabled(toggleEnabled);
     }
 
     private void handleScanStateChanged(boolean state) {
@@ -276,6 +283,10 @@
         }
     }
 
+    private void checkPendingAnimations() {
+        handleToggleStateChanged(mSwitchState);
+    }
+
     protected QSPanel.Callback mQsPanelCallback = new QSPanel.Callback() {
         @Override
         public void onToggleStateChanged(final boolean state) {
@@ -313,6 +324,8 @@
             // If we have been cancelled, remove the listener so that onAnimationEnd doesn't get
             // called, this will avoid accidentally turning off the grid when we don't want to.
             animation.removeListener(this);
+            mAnimating = false;
+            checkPendingAnimations();
         };
 
         @Override
@@ -322,6 +335,8 @@
                 mQsPanel.setGridContentVisibility(false);
                 mHeader.setVisibility(View.INVISIBLE);
             }
+            mAnimating = false;
+            checkPendingAnimations();
         }
     };
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index 3da7415..6657b62 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -150,6 +150,9 @@
     public interface DetailAdapter {
         CharSequence getTitle();
         Boolean getToggleState();
+        default boolean getToggleEnabled() {
+            return true;
+        }
         View createDetailView(Context context, View convertView, ViewGroup parent);
         Intent getSettingsIntent();
         void setToggleState(boolean state);
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 569a567..b36221d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -71,7 +71,7 @@
         super(host);
         mWindowManager = WindowManagerGlobal.getWindowManagerService();
         mComponent = ComponentName.unflattenFromString(action);
-        mTile = new Tile(mComponent);
+        mTile = new Tile();
         setTileIcon();
         mServiceManager = host.getTileServices().getTileWrapper(this);
         mService = mServiceManager.getTileService();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/QSTileServiceWrapper.java b/packages/SystemUI/src/com/android/systemui/qs/external/QSTileServiceWrapper.java
index 407453c..451e1f6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/QSTileServiceWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/QSTileServiceWrapper.java
@@ -94,4 +94,8 @@
             return false;
         }
     }
+
+    public IQSTileService getService() {
+        return mService;
+    }
 }
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 79f9de6..681005c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -26,6 +26,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ServiceInfo;
 import android.net.Uri;
+import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -37,6 +38,7 @@
 import android.support.annotation.VisibleForTesting;
 import android.util.ArraySet;
 import android.util.Log;
+
 import libcore.util.Objects;
 
 import java.util.Set;
@@ -67,6 +69,7 @@
     private final Handler mHandler;
     private final Intent mIntent;
     private final UserHandle mUser;
+    private final IBinder mToken = new Binder();
 
     private Set<Integer> mQueuedMessages = new ArraySet<>();
     private QSTileServiceWrapper mWrapper;
@@ -88,7 +91,7 @@
         mHandler = handler;
         mIntent = intent;
         mIntent.putExtra(TileService.EXTRA_SERVICE, service.asBinder());
-        mIntent.putExtra(TileService.EXTRA_COMPONENT, intent.getComponent());
+        mIntent.putExtra(TileService.EXTRA_TOKEN, mToken);
         mUser = user;
         if (DEBUG) Log.d(TAG, "Creating " + mIntent + " " + mUser);
     }
@@ -396,6 +399,10 @@
         handleDeath();
     }
 
+    public IBinder getToken() {
+        return mToken;
+    }
+
     public interface TileChangeListener {
         void onTileChanged(ComponentName tile);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
index 3d030f9..f3e4d60 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
@@ -25,6 +25,7 @@
 import android.content.pm.ResolveInfo;
 import android.net.Uri;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.UserHandle;
 import android.service.quicksettings.IQSTileService;
 import android.service.quicksettings.Tile;
@@ -32,6 +33,7 @@
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
+import com.android.systemui.qs.customize.TileQueryHelper.TileStateListener;
 import com.android.systemui.qs.external.TileLifecycleManager.TileChangeListener;
 
 import java.util.List;
@@ -106,6 +108,10 @@
         return mStateManager;
     }
 
+    public IBinder getToken() {
+        return mStateManager.getToken();
+    }
+
     public void setBindRequested(boolean bindRequested) {
         if (mBindRequested == bindRequested) return;
         mBindRequested = bindRequested;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
index 6f0bed2..6bc94b2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java
@@ -25,10 +25,12 @@
 import android.graphics.drawable.Icon;
 import android.os.Binder;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.Looper;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.service.quicksettings.IQSService;
+import android.service.quicksettings.IQSTileService;
 import android.service.quicksettings.Tile;
 import android.service.quicksettings.TileService;
 import android.util.ArrayMap;
@@ -52,6 +54,7 @@
 
     private final ArrayMap<CustomTile, TileServiceManager> mServices = new ArrayMap<>();
     private final ArrayMap<ComponentName, CustomTile> mTiles = new ArrayMap<>();
+    private final ArrayMap<IBinder, CustomTile> mTokenMap = new ArrayMap<>();
     private final Context mContext;
     private final Handler mHandler;
     private final Handler mMainHandler;
@@ -82,6 +85,7 @@
         synchronized (mServices) {
             mServices.put(tile, service);
             mTiles.put(component, tile);
+            mTokenMap.put(service.getToken(), tile);
         }
         return service;
     }
@@ -95,6 +99,7 @@
             service.setBindAllowed(false);
             service.handleDestroy();
             mServices.remove(tile);
+            mTokenMap.remove(service.getToken());
             mTiles.remove(tile.getComponent());
             final String slot = tile.getComponent().getClassName();
             mMainHandler.post(new Runnable() {
@@ -138,8 +143,9 @@
         }
     }
 
-    private void verifyCaller(String packageName) {
+    private void verifyCaller(CustomTile tile) {
         try {
+            String packageName = tile.getComponent().getPackageName();
             int uid = mContext.getPackageManager().getPackageUidAsUser(packageName,
                     Binder.getCallingUserHandle().getIdentifier());
             if (Binder.getCallingUid() != uid) {
@@ -170,11 +176,10 @@
     }
 
     @Override
-    public void updateQsTile(Tile tile) {
-        ComponentName componentName = tile.getComponentName();
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public void updateQsTile(Tile tile, IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             synchronized (mServices) {
                 final TileServiceManager tileServiceManager = mServices.get(customTile);
                 tileServiceManager.clearPendingBind();
@@ -186,11 +191,10 @@
     }
 
     @Override
-    public void onStartSuccessful(Tile tile) {
-        ComponentName componentName = tile.getComponentName();
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public void onStartSuccessful(IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             synchronized (mServices) {
                 final TileServiceManager tileServiceManager = mServices.get(customTile);
                 tileServiceManager.clearPendingBind();
@@ -200,11 +204,10 @@
     }
 
     @Override
-    public void onShowDialog(Tile tile) {
-        ComponentName componentName = tile.getComponentName();
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public void onShowDialog(IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             customTile.onDialogShown();
             mHost.collapsePanels();
             mServices.get(customTile).setShowingDialog(true);
@@ -212,34 +215,32 @@
     }
 
     @Override
-    public void onDialogHidden(Tile tile) {
-        ComponentName componentName = tile.getComponentName();
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public void onDialogHidden(IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             mServices.get(customTile).setShowingDialog(false);
             customTile.onDialogHidden();
         }
     }
 
     @Override
-    public void onStartActivity(Tile tile) {
-        ComponentName componentName = tile.getComponentName();
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public void onStartActivity(IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             mHost.collapsePanels();
         }
     }
 
     @Override
-    public void updateStatusIcon(Tile tile, Icon icon, String contentDescription) {
-        final ComponentName componentName = tile.getComponentName();
-        String packageName = componentName.getPackageName();
-        verifyCaller(packageName);
-        CustomTile customTile = getTileForComponent(componentName);
+    public void updateStatusIcon(IBinder token, Icon icon, String contentDescription) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             try {
+                ComponentName componentName = customTile.getComponent();
+                String packageName = componentName.getPackageName();
                 UserHandle userHandle = getCallingUserHandle();
                 PackageInfo info = mContext.getPackageManager().getPackageInfoAsUser(packageName, 0,
                         userHandle.getIdentifier());
@@ -263,21 +264,20 @@
     }
 
     @Override
-    public Tile getTile(ComponentName componentName) {
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public Tile getTile(IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             return customTile.getQsTile();
         }
         return null;
     }
 
     @Override
-    public void startUnlockAndRun(Tile tile) {
-        ComponentName componentName = tile.getComponentName();
-        verifyCaller(componentName.getPackageName());
-        CustomTile customTile = getTileForComponent(componentName);
+    public void startUnlockAndRun(IBinder token) {
+        CustomTile customTile = getTileForToken(token);
         if (customTile != null) {
+            verifyCaller(customTile);
             customTile.startUnlockAndRun();
         }
     }
@@ -294,6 +294,12 @@
         return keyguardMonitor.isSecure() && keyguardMonitor.isShowing();
     }
 
+    private CustomTile getTileForToken(IBinder token) {
+        synchronized (mServices) {
+            return mTokenMap.get(token);
+        }
+    }
+
     private CustomTile getTileForComponent(ComponentName component) {
         synchronized (mServices) {
             return mTiles.get(component);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index f892a24..8d8474a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.qs.tiles;
 
+import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothProfile;
 import android.content.Context;
@@ -90,11 +91,11 @@
             mHost.startActivityDismissingKeyguard(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
             return;
         }
+        showDetail(true);
         if (!mState.value) {
             mState.value = true;
             mController.setBluetoothEnabled(true);
         }
-        showDetail(true);
     }
 
     @Override
@@ -213,6 +214,12 @@
         }
 
         @Override
+        public boolean getToggleEnabled() {
+            return mController.getBluetoothState() == BluetoothAdapter.STATE_OFF
+                    || mController.getBluetoothState() == BluetoothAdapter.STATE_ON;
+        }
+
+        @Override
         public Intent getSettingsIntent() {
             return BLUETOOTH_SETTINGS;
         }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index 04cb553..91821ba 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -122,9 +122,9 @@
         if (mState.value) {
             mController.setZen(Global.ZEN_MODE_OFF, null, TAG);
         } else {
+            showDetail(true);
             int zen = Prefs.getInt(mContext, Prefs.Key.DND_FAVORITE_ZEN, Global.ZEN_MODE_ALARMS);
             mController.setZen(zen, null, TAG);
-            showDetail(true);
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
new file mode 100644
index 0000000..9a3549e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
@@ -0,0 +1,99 @@
+/*
+ * 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.qs.tiles;
+
+import android.content.Intent;
+import android.provider.Settings;
+import android.widget.Switch;
+
+import com.android.internal.app.NightDisplayController;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.systemui.R;
+import com.android.systemui.qs.QSTile;
+
+public class NightDisplayTile extends QSTile<QSTile.BooleanState>
+        implements NightDisplayController.Callback {
+
+    private final NightDisplayController mController;
+
+    public NightDisplayTile(Host host) {
+        super(host);
+        mController = new NightDisplayController(mContext);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return NightDisplayController.isAvailable(mContext);
+    }
+
+    @Override
+    public BooleanState newTileState() {
+        return new BooleanState();
+    }
+
+    @Override
+    protected void handleClick() {
+        final boolean activated = !mState.value;
+        MetricsLogger.action(mContext, getMetricsCategory(), activated);
+        mController.setActivated(activated);
+    }
+
+    @Override
+    protected void handleUpdateState(BooleanState state, Object arg) {
+        final boolean isActivated = mController.isActivated();
+        state.value = isActivated;
+        state.label = mContext.getString(R.string.quick_settings_night_display_label);
+        state.icon = ResourceIcon.get(isActivated ? R.drawable.ic_qs_night_display_on
+                : R.drawable.ic_qs_night_display_off);
+        state.contentDescription = mContext.getString(isActivated
+                ? R.string.quick_settings_night_display_summary_on
+                : R.string.quick_settings_night_display_summary_off);
+        state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+                = Switch.class.getName();
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.QS_NIGHT_DISPLAY;
+    }
+
+    @Override
+    public Intent getLongClickIntent() {
+        return new Intent(Settings.ACTION_DISPLAY_SETTINGS);
+    }
+
+    @Override
+    protected void setListening(boolean listening) {
+        if (listening) {
+            mController.setListener(this);
+            refreshState();
+        } else {
+            mController.setListener(null);
+        }
+    }
+
+    @Override
+    public CharSequence getTileLabel() {
+        return mContext.getString(R.string.quick_settings_night_display_label);
+    }
+
+    @Override
+    public void onActivated(boolean activated) {
+        refreshState();
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index 8910864..ba79a18 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -116,11 +116,11 @@
             mHost.startActivityDismissingKeyguard(new Intent(Settings.ACTION_WIFI_SETTINGS));
             return;
         }
+        showDetail(true);
         if (!mState.value) {
             mController.setWifiEnabled(true);
             mState.value = true;
         }
-        showDetail(true);
     }
 
     @Override
@@ -371,5 +371,5 @@
             }
             mItems.setItems(items);
         }
-    };
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
index a893910..43d0cf6 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -140,8 +140,6 @@
 
         LayoutInflater inflater = LayoutInflater.from(context);
         if (RecentsDebugFlags.Static.EnableStackActionButton) {
-            float cornerRadius = context.getResources().getDimensionPixelSize(
-                    R.dimen.recents_task_view_rounded_corners_radius);
             mStackActionButton = (TextView) inflater.inflate(R.layout.recents_stack_action_button,
                     this, false);
             mStackActionButton.setOnClickListener(new View.OnClickListener() {
@@ -151,13 +149,6 @@
                 }
             });
             addView(mStackActionButton);
-            mStackActionButton.setClipToOutline(true);
-            mStackActionButton.setOutlineProvider(new ViewOutlineProvider() {
-                @Override
-                public void getOutline(View view, Outline outline) {
-                    outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), cornerRadius);
-                }
-            });
         }
         mEmptyView = (TextView) inflater.inflate(R.layout.recents_empty, this, false);
         addView(mEmptyView);
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 93d1cdf..fef0556 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -1552,11 +1552,6 @@
         // Bind the task view to the new task
         bindTaskView(tv, task);
 
-        // If the doze trigger has already fired, then update the state for this task view
-        if (mUIDozeTrigger.isAsleep() || Recents.getSystemServices().hasFreeformWorkspaceSupport()) {
-            tv.setNoUserInteractionState();
-        }
-
         // Set the new state for this view, including the callbacks and view clipping
         tv.setCallbacks(this);
         tv.setTouchEnabled(true);
@@ -1586,6 +1581,12 @@
         // Rebind the task and request that this task's data be filled into the TaskView
         tv.onTaskBound(task, mTouchExplorationEnabled, mDisplayOrientation, mDisplayRect);
 
+        // If the doze trigger has already fired, then update the state for this task view
+        if (mUIDozeTrigger.isAsleep() ||
+                Recents.getSystemServices().hasFreeformWorkspaceSupport()) {
+            tv.setNoUserInteractionState();
+        }
+
         // Load the task data
         Recents.getTaskLoader().loadTaskData(task);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 89cdfc4..d62d34d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -472,20 +472,28 @@
                 }
             }
 
-            riv.setVisibility(View.VISIBLE);
-            int cx = view.getLeft() + view.getWidth() / 2;
+            int width = view.getWidth();
+            if (view instanceof TextView) {
+                // Center the reveal on the text which might be off-center from the TextView
+                TextView tv = (TextView) view;
+                if (tv.getLayout() != null) {
+                    int innerWidth = (int) tv.getLayout().getLineWidth(0);
+                    innerWidth += tv.getCompoundPaddingLeft() + tv.getCompoundPaddingRight();
+                    width = Math.min(width, innerWidth);
+                }
+            }
+            int cx = view.getLeft() + width / 2;
             int cy = view.getTop() + view.getHeight() / 2;
             int w = riv.getWidth();
             int h = riv.getHeight();
             int r = Math.max(
                     Math.max(cx + cy, cx + (h - cy)),
                     Math.max((w - cx) + cy, (w - cx) + (h - cy)));
-            ViewAnimationUtils.createCircularReveal(riv, cx, cy, 0, r)
-                    .start();
 
+            riv.setRevealParameters(cx, cy, r);
             riv.setPendingIntent(pendingIntent);
             riv.setRemoteInput(inputs, input);
-            riv.focus();
+            riv.focusAnimated();
 
             return true;
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 71904fa..bd485dd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -225,6 +225,8 @@
     }
 
     KeyguardUpdateMonitorCallback mUpdateMonitor = new KeyguardUpdateMonitorCallback() {
+        public int mLastSuccessiveErrorMessage = -1;
+
         @Override
         public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) {
             boolean isChargingOrFull = status.status == BatteryManager.BATTERY_STATUS_CHARGING
@@ -252,6 +254,9 @@
                 mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_CLEAR_FP_MSG),
                         TRANSIENT_FP_ERROR_TIMEOUT);
             }
+            // Help messages indicate that there was actually a try since the last error, so those
+            // are not two successive error messages anymore.
+            mLastSuccessiveErrorMessage = -1;
         }
 
         @Override
@@ -263,15 +268,22 @@
             }
             int errorColor = mContext.getResources().getColor(R.color.system_warning_color, null);
             if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
-                mStatusBarKeyguardViewManager.showBouncerMessage(errString, errorColor);
+                // When swiping up right after receiving a fingerprint error, the bouncer calls
+                // authenticate leading to the same message being shown again on the bouncer.
+                // We want to avoid this, as it may confuse the user when the message is too
+                // generic.
+                if (mLastSuccessiveErrorMessage != msgId) {
+                    mStatusBarKeyguardViewManager.showBouncerMessage(errString, errorColor);
+                }
             } else if (updateMonitor.isDeviceInteractive()) {
-                    showTransientIndication(errString, errorColor);
-                    // We want to keep this message around in case the screen was off
-                    mHandler.removeMessages(MSG_HIDE_TRANSIENT);
-                    hideTransientIndicationDelayed(5000);
-             } else {
-                    mMessageToShowOnScreenOn = errString;
+                showTransientIndication(errString, errorColor);
+                // We want to keep this message around in case the screen was off
+                mHandler.removeMessages(MSG_HIDE_TRANSIENT);
+                hideTransientIndicationDelayed(5000);
+            } else {
+                mMessageToShowOnScreenOn = errString;
             }
+            mLastSuccessiveErrorMessage = msgId;
         }
 
         @Override
@@ -293,6 +305,18 @@
                 mMessageToShowOnScreenOn = null;
             }
         }
+
+        @Override
+        public void onFingerprintAuthenticated(int userId) {
+            super.onFingerprintAuthenticated(userId);
+            mLastSuccessiveErrorMessage = -1;
+        }
+
+        @Override
+        public void onFingerprintAuthFailed() {
+            super.onFingerprintAuthFailed();
+            mLastSuccessiveErrorMessage = -1;
+        }
     };
 
     BroadcastReceiver mReceiver = new BroadcastReceiver() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
index b66a4fb..c497cfd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
@@ -186,7 +186,7 @@
         try {
             final PackageInfo info =
                     pm.getPackageInfo(sbn.getPackageName(), PackageManager.GET_SIGNATURES);
-            systemApp = Utils.isSystemPackage(pm, info);
+            systemApp = Utils.isSystemPackage(getResources(), pm, info);
         } catch (PackageManager.NameNotFoundException e) {
             // unlikely.
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
index b53a999..63f726b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
@@ -49,6 +49,13 @@
         mViews.clear();
     }
 
+    void addView(View view, boolean landscape) {
+        addView(view);
+        if (view instanceof ButtonInterface) {
+            ((ButtonInterface) view).setLandscape(landscape);
+        }
+    }
+
     void addView(View view) {
         mViews.add(view);
         view.setOnClickListener(mClickListener);
@@ -178,5 +185,7 @@
         void setImageDrawable(@Nullable Drawable drawable);
 
         void abortCurrentGesture();
+
+        void setLandscape(boolean landscape);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 1d890d0..9b3ed33 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -21,6 +21,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.MathUtils;
+import android.util.SparseBooleanArray;
 
 import com.android.systemui.R;
 
@@ -39,6 +40,8 @@
 
     private static PulseSchedule sPulseSchedule;
 
+    private static IntInOutMatcher sPickupSubtypePerformsProxMatcher;
+
     public DozeParameters(Context context) {
         mContext = context;
     }
@@ -61,7 +64,20 @@
         pw.print("    getPulseSchedule(): "); pw.println(getPulseSchedule());
         pw.print("    getPulseScheduleResets(): "); pw.println(getPulseScheduleResets());
         pw.print("    getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
-        pw.print("    getPickupPerformsProxCheck(): "); pw.println(getPickupPerformsProxCheck());
+        pw.print("    getPickupSubtypePerformsProxCheck(): ");pw.println(
+                dumpPickupSubtypePerformsProxCheck());
+    }
+
+    private String dumpPickupSubtypePerformsProxCheck() {
+        // Refresh sPickupSubtypePerformsProxMatcher
+        getPickupSubtypePerformsProxCheck(0);
+
+        if (sPickupSubtypePerformsProxMatcher == null) {
+            return "fallback: " + mContext.getResources().getBoolean(
+                    R.bool.doze_pickup_performs_proximity_check);
+        } else {
+            return "spec: " + sPickupSubtypePerformsProxMatcher.mSpec;
+        }
     }
 
     public boolean getDisplayStateSupported() {
@@ -106,10 +122,6 @@
         return getBoolean("doze.pulse.proxcheck", R.bool.doze_proximity_check_before_pulse);
     }
 
-    public boolean getPickupPerformsProxCheck() {
-        return getBoolean("doze.pickup.proxcheck", R.bool.doze_pickup_performs_proximity_check);
-    }
-
     public boolean getPulseOnNotifications() {
         return getBoolean("doze.pulse.notifications", R.bool.doze_pulse_on_notifications);
     }
@@ -143,6 +155,101 @@
         return SystemProperties.get(propName, mContext.getString(resId));
     }
 
+    public boolean getPickupSubtypePerformsProxCheck(int subType) {
+        String spec = getString("doze.pickup.proxcheck",
+                R.string.doze_pickup_subtype_performs_proximity_check);
+
+        if (TextUtils.isEmpty(spec)) {
+            // Fall back to non-subtype based property.
+            return mContext.getResources().getBoolean(R.bool.doze_pickup_performs_proximity_check);
+        }
+
+        if (sPickupSubtypePerformsProxMatcher == null
+                || !TextUtils.equals(spec, sPickupSubtypePerformsProxMatcher.mSpec)) {
+            sPickupSubtypePerformsProxMatcher = new IntInOutMatcher(spec);
+        }
+
+        return sPickupSubtypePerformsProxMatcher.isIn(subType);
+    }
+
+
+    /**
+     * Parses a spec of the form `1,2,3,!5,*`. The resulting object will match numbers that are
+     * listed, will not match numbers that are listed with a ! prefix, and will match / not match
+     * unlisted numbers depending on whether * or !* is present.
+     *
+     * *  -> match any numbers that are not explicitly listed
+     * !* -> don't match any numbers that are not explicitly listed
+     * 2  -> match 2
+     * !3 -> don't match 3
+     *
+     * It is illegal to specify:
+     * - an empty spec
+     * - a spec containing that are empty, or a lone !
+     * - a spec for anything other than numbers or *
+     * - multiple terms for the same number / multiple *s
+     */
+    public static class IntInOutMatcher {
+        private static final String WILDCARD = "*";
+        private static final char OUT_PREFIX = '!';
+
+        private final SparseBooleanArray mIsIn;
+        private final boolean mDefaultIsIn;
+        final String mSpec;
+
+        public IntInOutMatcher(String spec) {
+            if (TextUtils.isEmpty(spec)) {
+                throw new IllegalArgumentException("Spec must not be empty");
+            }
+
+            boolean defaultIsIn = false;
+            boolean foundWildcard = false;
+
+            mSpec = spec;
+            mIsIn = new SparseBooleanArray();
+
+            for (String itemPrefixed : spec.split(",", -1)) {
+                if (itemPrefixed.length() == 0) {
+                    throw new IllegalArgumentException(
+                            "Illegal spec, must not have zero-length items: `" + spec + "`");
+                }
+                boolean isIn = itemPrefixed.charAt(0) != OUT_PREFIX;
+                String item = isIn ? itemPrefixed : itemPrefixed.substring(1);
+
+                if (itemPrefixed.length() == 0) {
+                    throw new IllegalArgumentException(
+                            "Illegal spec, must not have zero-length items: `" + spec + "`");
+                }
+
+                if (WILDCARD.equals(item)) {
+                    if (foundWildcard) {
+                        throw new IllegalArgumentException("Illegal spec, `" + WILDCARD +
+                                "` must not appear multiple times in `" + spec + "`");
+                    }
+                    defaultIsIn = isIn;
+                    foundWildcard = true;
+                } else {
+                    int key = Integer.parseInt(item);
+                    if (mIsIn.indexOfKey(key) >= 0) {
+                        throw new IllegalArgumentException("Illegal spec, `" + key +
+                                "` must not appear multiple times in `" + spec + "`");
+                    }
+                    mIsIn.put(key, isIn);
+                }
+            }
+
+            if (!foundWildcard) {
+                throw new IllegalArgumentException("Illegal spec, must specify either * or !*");
+            }
+
+            mDefaultIsIn = defaultIsIn;
+        }
+
+        public boolean isIn(int value) {
+            return (mIsIn.get(value, mDefaultIsIn));
+        }
+    }
+
     public static class PulseSchedule {
         private static final Pattern PATTERN = Pattern.compile("(\\d+?)s", 0);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
index e109812..bc05ff1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
@@ -234,7 +234,6 @@
         mKeyguardView.setViewMediatorCallback(mCallback);
         mContainer.addView(mRoot, mContainer.getChildCount());
         mRoot.setVisibility(View.INVISIBLE);
-        mRoot.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME);
     }
 
     protected void removeView() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
index dd46b08..06c8b68 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
@@ -28,7 +28,6 @@
 import android.widget.Space;
 
 import com.android.systemui.R;
-import com.android.systemui.SystemUIFactory;
 import com.android.systemui.statusbar.policy.KeyButtonView;
 import com.android.systemui.tuner.TunerService;
 
@@ -71,6 +70,8 @@
     private View mLastRot0;
     private View mLastRot90;
 
+    private boolean mAlternativeOrder;
+
     public NavigationBarInflaterView(Context context, AttributeSet attrs) {
         super(context, attrs);
         mDensity = context.getResources().getConfiguration().densityDpi;
@@ -114,6 +115,7 @@
                 false);
         mRot90.setId(R.id.rot90);
         addView(mRot90);
+        updateAlternativeOrder();
         if (getParent() instanceof NavigationBarView) {
             ((NavigationBarView) getParent()).updateRotatedViews();
         }
@@ -152,6 +154,26 @@
         }
     }
 
+    public void setAlternativeOrder(boolean alternativeOrder) {
+        if (alternativeOrder != mAlternativeOrder) {
+            mAlternativeOrder = alternativeOrder;
+            updateAlternativeOrder();
+        }
+    }
+
+    private void updateAlternativeOrder() {
+        updateAlternativeOrder(mRot0.findViewById(R.id.ends_group));
+        updateAlternativeOrder(mRot0.findViewById(R.id.center_group));
+        updateAlternativeOrder(mRot90.findViewById(R.id.ends_group));
+        updateAlternativeOrder(mRot90.findViewById(R.id.center_group));
+    }
+
+    private void updateAlternativeOrder(View v) {
+        if (v instanceof ReverseLinearLayout) {
+            ((ReverseLinearLayout) v).setAlternativeOrder(mAlternativeOrder);
+        }
+    }
+
     private void initiallyFill(ButtonDispatcher buttonDispatcher) {
         addAll(buttonDispatcher, (ViewGroup) mRot0.findViewById(R.id.ends_group));
         addAll(buttonDispatcher, (ViewGroup) mRot0.findViewById(R.id.center_group));
@@ -258,7 +280,7 @@
             params.width = (int) (params.width * size);
         }
         parent.addView(v);
-        addToDispatchers(v);
+        addToDispatchers(v, landscape);
         View lastView = landscape ? mLastRot90 : mLastRot0;
         if (lastView != null) {
             v.setAccessibilityTraversalAfter(lastView.getId());
@@ -305,16 +327,16 @@
         return buttonSpec.substring(0, buttonSpec.indexOf(SIZE_MOD_START));
     }
 
-    private void addToDispatchers(View v) {
+    private void addToDispatchers(View v, boolean landscape) {
         if (mButtonDispatchers != null) {
             final int indexOfKey = mButtonDispatchers.indexOfKey(v.getId());
             if (indexOfKey >= 0) {
-                mButtonDispatchers.valueAt(indexOfKey).addView(v);
+                mButtonDispatchers.valueAt(indexOfKey).addView(v, landscape);
             } else if (v instanceof ViewGroup) {
                 final ViewGroup viewGroup = (ViewGroup)v;
                 final int N = viewGroup.getChildCount();
                 for (int i = 0; i < N; i++) {
-                    addToDispatchers(viewGroup.getChildAt(i));
+                    addToDispatchers(viewGroup.getChildAt(i), landscape);
                 }
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 6a2324f..160baaf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -99,6 +99,8 @@
     private final SparseArray<ButtonDispatcher> mButtonDisatchers = new SparseArray<>();
     private Configuration mConfiguration;
 
+    private NavigationBarInflaterView mNavigationInflaterView;
+
     private class NavTransitionListener implements TransitionListener {
         private boolean mBackTransitioning;
         private boolean mHomeAppearing;
@@ -472,9 +474,10 @@
 
     @Override
     public void onFinishInflate() {
+        mNavigationInflaterView = (NavigationBarInflaterView) findViewById(
+                R.id.navigation_inflater);
         updateRotatedViews();
-        ((NavigationBarInflaterView) findViewById(R.id.navigation_inflater)).setButtonDispatchers(
-                mButtonDisatchers);
+        mNavigationInflaterView.setButtonDispatchers(mButtonDisatchers);
 
         getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
 
@@ -530,6 +533,7 @@
         }
         mCurrentView = mRotatedViews[rot];
         mCurrentView.setVisibility(View.VISIBLE);
+        mNavigationInflaterView.setAlternativeOrder(rot == Surface.ROTATION_90);
         for (int i = 0; i < mButtonDisatchers.size(); i++) {
             mButtonDisatchers.valueAt(i).setCurrentView(mCurrentView);
         }
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 9687ba6..99fbad2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -58,6 +58,7 @@
 import com.android.systemui.statusbar.KeyguardAffordanceView;
 import com.android.systemui.statusbar.NotificationData;
 import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.notification.NotificationUtils;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
 import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
 import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
@@ -78,7 +79,6 @@
     private static final int CAP_HEIGHT = 1456;
     private static final int FONT_HEIGHT = 2163;
 
-    private static final float HEADER_RUBBERBAND_FACTOR = 2.05f;
     private static final float LOCK_ICON_ACTIVE_SCALE = 1.2f;
 
     private static final String COUNTER_PANEL_OPEN = "panel_open";
@@ -1376,8 +1376,7 @@
         int min = mStatusBarMinHeight;
         if (mStatusBar.getBarState() != StatusBarState.KEYGUARD
                 && mNotificationStackScroller.getNotGoneChildCount() == 0) {
-            int minHeight = (int) ((mQsMinExpansionHeight + getOverExpansionAmount())
-                    * HEADER_RUBBERBAND_FACTOR);
+            int minHeight = (int) (mQsMinExpansionHeight + getOverExpansionAmount());
             min = Math.max(min, minHeight);
         }
         int maxHeight;
@@ -1552,15 +1551,8 @@
         if (mStatusBar.getBarState() == StatusBarState.KEYGUARD) {
             return 0;
         }
-        if (mNotificationStackScroller.getNotGoneChildCount() == 0) {
-            return Math.min(0, mExpandedHeight / HEADER_RUBBERBAND_FACTOR - mQsMinExpansionHeight);
-        }
-        float stackTranslation = mNotificationStackScroller.getStackTranslation();
-        float translation = stackTranslation / HEADER_RUBBERBAND_FACTOR;
-        if (mHeadsUpManager.hasPinnedHeadsUp() || mIsExpansionFromHeadsUp) {
-            translation = mNotificationStackScroller.getTopPadding() + stackTranslation
-                    - mQsMinExpansionHeight;
-        }
+        float translation = NotificationUtils.interpolate(-mQsMinExpansionHeight, 0,
+                mNotificationStackScroller.getAppearFraction(mExpandedHeight));
         return Math.min(0, translation);
     }
 
@@ -1968,7 +1960,7 @@
         if (mNotificationStackScroller.getNotGoneChildCount() > 0) {
             return mNotificationStackScroller.getPeekHeight();
         } else {
-            return mQsMinExpansionHeight * HEADER_RUBBERBAND_FACTOR;
+            return mQsMinExpansionHeight;
         }
     }
 
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 f233e50..2cdcff3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -52,6 +52,7 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.hardware.display.DisplayManager;
 import android.inputmethodservice.InputMethodService;
 import android.media.AudioAttributes;
 import android.media.MediaMetadata;
@@ -200,7 +201,7 @@
 
 public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
-        HeadsUpManager.OnHeadsUpChangedListener {
+        HeadsUpManager.OnHeadsUpChangedListener, DisplayManager.DisplayListener {
     static final String TAG = "PhoneStatusBar";
     public static final boolean DEBUG = BaseStatusBar.DEBUG;
     public static final boolean SPEW = false;
@@ -685,6 +686,8 @@
         mUnlockMethodCache.addListener(this);
         startKeyguard();
 
+        mContext.getSystemService(DisplayManager.class).registerDisplayListener(this, null);
+
         mDozeServiceHost = new DozeServiceHost();
         KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mDozeServiceHost);
         putComponent(DozeHost.class, mDozeServiceHost);
@@ -789,11 +792,15 @@
         mBackdropFront = (ImageView) mBackdrop.findViewById(R.id.backdrop_front);
         mBackdropBack = (ImageView) mBackdrop.findViewById(R.id.backdrop_back);
 
+        if (ENABLE_LOCKSCREEN_WALLPAPER) {
+            mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
+        }
+
         ScrimView scrimBehind = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_behind);
         ScrimView scrimInFront = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_in_front);
         View headsUpScrim = mStatusBarWindow.findViewById(R.id.heads_up_scrim);
         mScrimController = SystemUIFactory.getInstance().createScrimController(
-                scrimBehind, scrimInFront, headsUpScrim);
+                scrimBehind, scrimInFront, headsUpScrim, mLockscreenWallpaper);
         if (mScrimSrcModeEnabled) {
             Runnable runnable = new Runnable() {
                 @Override
@@ -823,10 +830,6 @@
                 mKeyguardBottomArea.getLockIcon());
         mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController);
 
-        if (ENABLE_LOCKSCREEN_WALLPAPER) {
-            mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
-        }
-
         // set the initial view visibility
         setAreThereNotifications();
 
@@ -881,9 +884,9 @@
         mLightStatusBarController = new LightStatusBarController(mIconController,
                 mBatteryController);
         mKeyguardMonitor = new KeyguardMonitor(mContext);
+        mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor,
+                mHandler, this);
         if (UserManager.get(mContext).isUserSwitcherEnabled()) {
-            mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor,
-                    mHandler, this);
             createUserSwitcher();
         }
 
@@ -2584,7 +2587,7 @@
     @Override
     public void handleSystemNavigationKey(int key) {
         if (SPEW) Log.d(TAG, "handleSystemNavigationKey: " + key);
-        if (!panelsEnabled()) {
+        if (!panelsEnabled() || !mKeyguardMonitor.isDeviceInteractive()) {
             return;
         }
 
@@ -3512,6 +3515,21 @@
     }
 
     @Override
+    public void onDisplayAdded(int displayId) {
+    }
+
+    @Override
+    public void onDisplayRemoved(int displayId) {
+    }
+
+    @Override
+    public void onDisplayChanged(int displayId) {
+        if (displayId == Display.DEFAULT_DISPLAY) {
+            repositionNavigationBar();
+        }
+    }
+
+    @Override
     public void userSwitched(int newUserId) {
         super.userSwitched(newUserId);
         if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
@@ -3522,6 +3540,7 @@
         setControllerUsers();
         clearCurrentMediaNotification();
         mLockscreenWallpaper.setCurrentUser(newUserId);
+        mScrimController.setCurrentUser(newUserId);
         updateMediaMetaData(true, false);
     }
 
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 ca7f905..405ccd6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
@@ -52,6 +52,7 @@
 import com.android.systemui.qs.tiles.HotspotTile;
 import com.android.systemui.qs.tiles.IntentTile;
 import com.android.systemui.qs.tiles.LocationTile;
+import com.android.systemui.qs.tiles.NightDisplayTile;
 import com.android.systemui.qs.tiles.RotationLockTile;
 import com.android.systemui.qs.tiles.UserTile;
 import com.android.systemui.qs.tiles.WifiTile;
@@ -399,7 +400,7 @@
                 ComponentName component = CustomTile.getComponentFromSpec(tileSpec);
                 Intent intent = new Intent().setComponent(component);
                 TileLifecycleManager lifecycleManager = new TileLifecycleManager(new Handler(),
-                        mContext, mServices, new Tile(component), intent,
+                        mContext, mServices, new Tile(), intent,
                         new UserHandle(ActivityManager.getCurrentUser()));
                 lifecycleManager.onStopListening();
                 lifecycleManager.onTileRemoved();
@@ -413,7 +414,7 @@
                 ComponentName component = CustomTile.getComponentFromSpec(tileSpec);
                 Intent intent = new Intent().setComponent(component);
                 TileLifecycleManager lifecycleManager = new TileLifecycleManager(new Handler(),
-                        mContext, mServices, new Tile(component), intent,
+                        mContext, mServices, new Tile(), intent,
                         new UserHandle(ActivityManager.getCurrentUser()));
                 lifecycleManager.onTileAdded();
                 lifecycleManager.flushMessagesAndUnbind();
@@ -440,6 +441,7 @@
         else if (tileSpec.equals("user")) return new UserTile(this);
         else if (tileSpec.equals("battery")) return new BatteryTile(this);
         else if (tileSpec.equals("saver")) return new DataSaverTile(this);
+        else if (tileSpec.equals("night")) return new NightDisplayTile(this);
         // Intent tiles.
         else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(this,tileSpec);
         else if (tileSpec.startsWith(CustomTile.PREFIX)) return CustomTile.create(this,tileSpec);
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 63ac098..58eaf99 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -37,11 +37,11 @@
 import com.android.keyguard.KeyguardStatusView;
 import com.android.systemui.FontSizeUtils;
 import com.android.systemui.R;
-import com.android.systemui.qs.QSAnimator;
 import com.android.systemui.qs.QSPanel;
 import com.android.systemui.qs.QSPanel.Callback;
 import com.android.systemui.qs.QuickQSPanel;
 import com.android.systemui.qs.TouchAnimator;
+import com.android.systemui.qs.TouchAnimator.Builder;
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.NextAlarmController;
 import com.android.systemui.statusbar.policy.NextAlarmController.NextAlarmChangeCallback;
@@ -84,13 +84,13 @@
     private ImageView mMultiUserAvatar;
 
 
-    private TouchAnimator mSecondHalfAnimator;
-    private TouchAnimator mFirstHalfAnimator;
+    private TouchAnimator mAnimator;
     protected TouchAnimator mSettingsAlpha;
     private float mExpansionAmount;
     protected QSTileHost mHost;
     protected View mEdit;
     private boolean mShowFullAlarm;
+    private float mDateTimeTranslation;
 
     public QuickStatusBarHeader(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -111,6 +111,7 @@
         mDateTimeGroup = (ViewGroup) findViewById(R.id.date_time_group);
         mDateTimeGroup.setPivotX(0);
         mDateTimeGroup.setPivotY(0);
+        mDateTimeTranslation = getResources().getDimension(R.dimen.qs_date_time_translation);
         mShowFullAlarm = getResources().getBoolean(R.bool.quick_settings_show_full_alarm);
 
         mExpandIndicator = (ExpandableIndicator) findViewById(R.id.expand_indicator);
@@ -152,15 +153,13 @@
         FontSizeUtils.updateFontSize(mAlarmStatus, R.dimen.qs_date_collapsed_size);
         FontSizeUtils.updateFontSize(mEmergencyOnly, R.dimen.qs_emergency_calls_only_text_size);
 
-        mSecondHalfAnimator = new TouchAnimator.Builder()
+        Builder builder = new Builder()
                 .addFloat(mShowFullAlarm ? mAlarmStatus : findViewById(R.id.date), "alpha", 0, 1)
-                .addFloat(mEmergencyOnly, "alpha", 0, 1)
-                .build();
+                .addFloat(mEmergencyOnly, "alpha", 0, 1);
         if (mShowFullAlarm) {
-            mFirstHalfAnimator = new TouchAnimator.Builder()
-                    .addFloat(mAlarmStatusCollapsed, "alpha", 1, 0)
-                    .build();
+            builder.addFloat(mAlarmStatusCollapsed, "alpha", 1, 0);
         }
+        mAnimator = builder.build();
 
         updateSettingsAnimator();
     }
@@ -223,10 +222,8 @@
     @Override
     public void setExpansion(float headerExpansionFraction) {
         mExpansionAmount = headerExpansionFraction;
-        mSecondHalfAnimator.setPosition(headerExpansionFraction);
-        if (mShowFullAlarm) {
-            mFirstHalfAnimator.setPosition(headerExpansionFraction);
-        }
+        updateDateTimePosition();
+        mAnimator.setPosition(headerExpansionFraction);
         mSettingsAlpha.setPosition(headerExpansionFraction);
 
         updateAlarmVisibilities();
@@ -264,6 +261,7 @@
 
     protected void updateVisibilities() {
         updateAlarmVisibilities();
+        updateDateTimePosition();
         mEmergencyOnly.setVisibility(mExpanded && mShowEmergencyCallsOnly
                 ? View.VISIBLE : View.INVISIBLE);
         mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility(
@@ -274,6 +272,11 @@
         mEdit.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
     }
 
+    private void updateDateTimePosition() {
+        mDateTimeAlarmGroup.setTranslationY(mShowEmergencyCallsOnly
+                ? mExpansionAmount * mDateTimeTranslation : 0);
+    }
+
     private void updateListeners() {
         if (mListening) {
             mNextAlarmController.addStateChangedCallback(this);
@@ -315,22 +318,26 @@
     public void onClick(View v) {
         if (v == mSettingsButton) {
             MetricsLogger.action(mContext,
-                    MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH);
+                    mExpanded ? MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH
+                            : MetricsProto.MetricsEvent.ACTION_QS_COLLAPSED_SETTINGS_LAUNCH);
             if (mSettingsButton.isTunerClick()) {
-                if (TunerService.isTunerEnabled(mContext)) {
-                    TunerService.showResetRequest(mContext, new Runnable() {
-                        @Override
-                        public void run() {
+                mHost.startRunnableDismissingKeyguard(() -> post(() -> {
+                    if (TunerService.isTunerEnabled(mContext)) {
+                        TunerService.showResetRequest(mContext, () -> {
                             // Relaunch settings so that the tuner disappears.
                             startSettingsActivity();
-                        }
-                    });
-                } else {
-                    Toast.makeText(getContext(), R.string.tuner_toast, Toast.LENGTH_LONG).show();
-                    TunerService.setTunerEnabled(mContext, true);
-                }
+                        });
+                    } else {
+                        Toast.makeText(getContext(), R.string.tuner_toast,
+                                Toast.LENGTH_LONG).show();
+                        TunerService.setTunerEnabled(mContext, true);
+                    }
+                    startSettingsActivity();
+
+                }));
+            } else {
+                startSettingsActivity();
             }
-            startSettingsActivity();
         } else if (v == mAlarmStatus && mNextAlarm != null) {
             PendingIntent showIntent = mNextAlarm.getShowIntent();
             if (showIntent != null && showIntent.isActivity()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java
index 3682aa1..f45967a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java
@@ -30,7 +30,11 @@
  */
 public class ReverseLinearLayout extends LinearLayout {
 
-    private boolean mIsLayoutRtl;
+    /** If true, the layout is reversed vs. a regular linear layout */
+    private boolean mIsLayoutReverse;
+
+    /** If true, the layout is opposite to it's natural reversity from the layout direction */
+    private boolean mIsAlternativeOrder;
 
     public ReverseLinearLayout(Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
@@ -39,45 +43,50 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mIsLayoutRtl = getResources().getConfiguration()
-                .getLayoutDirection() == LAYOUT_DIRECTION_RTL;
+        updateOrder();
     }
 
     @Override
     public void addView(View child) {
         reversParams(child.getLayoutParams());
-        if (mIsLayoutRtl) {
-            super.addView(child);
-        } else {
+        if (mIsLayoutReverse) {
             super.addView(child, 0);
+        } else {
+            super.addView(child);
         }
     }
 
     @Override
     public void addView(View child, ViewGroup.LayoutParams params) {
         reversParams(params);
-        if (mIsLayoutRtl) {
-            super.addView(child, params);
-        } else {
+        if (mIsLayoutReverse) {
             super.addView(child, 0, params);
+        } else {
+            super.addView(child, params);
         }
     }
 
     @Override
-    protected void onConfigurationChanged(Configuration newConfig) {
-        super.onConfigurationChanged(newConfig);
-        updateRTLOrder();
+    public void onRtlPropertiesChanged(int layoutDirection) {
+        super.onRtlPropertiesChanged(layoutDirection);
+        updateOrder();
+    }
+
+    public void setAlternativeOrder(boolean alternative) {
+        mIsAlternativeOrder = alternative;
+        updateOrder();
     }
 
     /**
      * In landscape, the LinearLayout is not auto mirrored since it is vertical. Therefore we
      * have to do it manually
      */
-    private void updateRTLOrder() {
-        boolean isLayoutRtl = getResources().getConfiguration()
-                .getLayoutDirection() == LAYOUT_DIRECTION_RTL;
-        if (mIsLayoutRtl != isLayoutRtl) {
-            // RTL changed, swap the order of all views.
+    private void updateOrder() {
+        boolean isLayoutRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
+        boolean isLayoutReverse = isLayoutRtl ^ mIsAlternativeOrder;
+
+        if (mIsLayoutReverse != isLayoutReverse) {
+            // reversity changed, swap the order of all views.
             int childCount = getChildCount();
             ArrayList<View> childList = new ArrayList<>(childCount);
             for (int i = 0; i < childCount; i++) {
@@ -87,7 +96,7 @@
             for (int i = childCount - 1; i >= 0; i--) {
                 super.addView(childList.get(i));
             }
-            mIsLayoutRtl = isLayoutRtl;
+            mIsLayoutReverse = isLayoutReverse;
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 94ede0c..40abaa4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -31,6 +31,7 @@
 import android.view.animation.Interpolator;
 import android.view.animation.PathInterpolator;
 
+import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.R;
 import com.android.systemui.statusbar.ExpandableNotificationRow;
 import com.android.systemui.statusbar.NotificationData;
@@ -47,10 +48,13 @@
     public static final long ANIMATION_DURATION = 220;
     public static final Interpolator KEYGUARD_FADE_OUT_INTERPOLATOR
             = new PathInterpolator(0f, 0, 0.7f, 1f);
+    public static final Interpolator KEYGUARD_FADE_OUT_INTERPOLATOR_LOCKED
+            = new PathInterpolator(0.3f, 0f, 0.8f, 1f);
     private static final float SCRIM_BEHIND_ALPHA = 0.62f;
-    private static final float SCRIM_BEHIND_ALPHA_KEYGUARD = 0.45f;
-    private static final float SCRIM_BEHIND_ALPHA_UNLOCKING = 0.2f;
+    protected static final float SCRIM_BEHIND_ALPHA_KEYGUARD = 0.45f;
+    protected static final float SCRIM_BEHIND_ALPHA_UNLOCKING = 0.2f;
     private static final float SCRIM_IN_FRONT_ALPHA = 0.75f;
+    private static final float SCRIM_IN_FRONT_ALPHA_LOCKED = 0.85f;
     private static final int TAG_KEY_ANIM = R.id.scrim;
     private static final int TAG_KEY_ANIM_TARGET = R.id.scrim_target;
     private static final int TAG_START_ALPHA = R.id.scrim_alpha_start;
@@ -60,6 +64,7 @@
     private final ScrimView mScrimInFront;
     private final UnlockMethodCache mUnlockMethodCache;
     private final View mHeadsUpScrim;
+    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
 
     protected float mScrimBehindAlpha = SCRIM_BEHIND_ALPHA;
     protected float mScrimBehindAlphaKeyguard = SCRIM_BEHIND_ALPHA_KEYGUARD;
@@ -101,6 +106,7 @@
         mHeadsUpScrim = headsUpScrim;
         final Context context = scrimBehind.getContext();
         mUnlockMethodCache = UnlockMethodCache.getInstance(context);
+        mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(context);
         updateHeadsUpScrim(false);
     }
 
@@ -109,6 +115,13 @@
         scheduleUpdate();
     }
 
+    protected void setScrimBehindValues(float scrimBehindAlphaKeyguard,
+            float scrimBehindAlphaUnlocking) {
+        mScrimBehindAlphaKeyguard = scrimBehindAlphaKeyguard;
+        mScrimBehindAlphaUnlocking = scrimBehindAlphaUnlocking;
+        scheduleUpdate();
+    }
+
     public void onTrackingStarted() {
         mExpanding = true;
         mDarkenWhileDragging = !mUnlockMethodCache.canSkipBouncer();
@@ -151,11 +164,19 @@
         mAnimateChange = true;
         mSkipFirstFrame = skipFirstFrame;
         mOnAnimationFinished = onAnimationFinished;
-        scheduleUpdate();
 
-        // No need to wait for the next frame to be drawn for this case - onPreDraw will execute
-        // the changes we just scheduled.
-        onPreDraw();
+        if (mKeyguardUpdateMonitor.isUserUnlocked()) {
+            scheduleUpdate();
+
+            // No need to wait for the next frame to be drawn for this case - onPreDraw will execute
+            // the changes we just scheduled.
+            onPreDraw();
+        } else {
+
+            // In case the user isn't unlocked, make sure to delay a bit because the system is hosed
+            // with too many things in this case, in order to not skip the initial frames.
+            mScrimInFront.postOnAnimationDelayed(this::scheduleUpdate, 16);
+        }
     }
 
     public void abortKeyguardFadingOut() {
@@ -200,6 +221,12 @@
         return mDozeInFrontAlpha;
     }
 
+    private float getScrimInFrontAlpha() {
+        return mKeyguardUpdateMonitor.isUserUnlocked()
+                ? SCRIM_IN_FRONT_ALPHA
+                : SCRIM_IN_FRONT_ALPHA_LOCKED;
+    }
+
     protected void scheduleUpdate() {
         if (mUpdatePending) return;
 
@@ -239,10 +266,10 @@
             float fraction = 1 - behindFraction;
             fraction = (float) Math.pow(fraction, 0.8f);
             behindFraction = (float) Math.pow(behindFraction, 0.8f);
-            setScrimInFrontColor(fraction * SCRIM_IN_FRONT_ALPHA);
+            setScrimInFrontColor(fraction * getScrimInFrontAlpha());
             setScrimBehindColor(behindFraction * mScrimBehindAlphaKeyguard);
         } else if (mBouncerShowing && !mBouncerIsKeyguard) {
-            setScrimInFrontColor(SCRIM_IN_FRONT_ALPHA);
+            setScrimInFrontColor(getScrimInFrontAlpha());
             setScrimBehindColor(0f);
         } else if (mBouncerShowing) {
             setScrimInFrontColor(0f);
@@ -365,7 +392,13 @@
     }
 
     protected Interpolator getInterpolator() {
-        return mAnimateKeyguardFadingOut ? KEYGUARD_FADE_OUT_INTERPOLATOR : mInterpolator;
+        if (mAnimateKeyguardFadingOut && !mKeyguardUpdateMonitor.isUserUnlocked()) {
+            return KEYGUARD_FADE_OUT_INTERPOLATOR_LOCKED;
+        } else if (mAnimateKeyguardFadingOut) {
+            return KEYGUARD_FADE_OUT_INTERPOLATOR;
+        } else {
+            return mInterpolator;
+        }
     }
 
     @Override
@@ -536,4 +569,8 @@
                 R.dimen.heads_up_scrim_height);
         mHeadsUpScrim.setLayoutParams(layoutParams);
     }
+
+    public void setCurrentUser(int currentUser) {
+        // Don't care in the base class.
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index a035eee..a326806 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -357,11 +357,12 @@
 
     public void dump(PrintWriter pw) {
         int N = mStatusIcons.getChildCount();
-        pw.println("  system icons: " + N);
+        pw.println("  icon views: " + N);
         for (int i=0; i<N; i++) {
             StatusBarIconView ic = (StatusBarIconView) mStatusIcons.getChildAt(i);
             pw.println("    [" + i + "] icon=" + ic);
         }
+        super.dump(pw);
     }
 
     public void dispatchDemoCommand(String command, Bundle args) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
index 97b31f2..6821879 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
@@ -81,9 +81,9 @@
 
     public void dump(PrintWriter pw) {
         final int N = mSlots.size();
-        pw.println("Icon list:");
+        pw.println("  icon slots: " + N);
         for (int i=0; i<N; i++) {
-            pw.printf("  %2d: (%s) %s\n", i, mSlots.get(i), mIcons.get(i));
+            pw.printf("    %2d: (%s) %s\n", i, mSlots.get(i), mIcons.get(i));
         }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index f1d2fe9..79d274e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -53,6 +53,11 @@
 
     private static final long WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS = 200;
 
+    // Duration of the Keyguard dismissal animation in case the user is currently locked. This is to
+    // make everything a bit slower to bridge a gap until the user is unlocked and home screen has
+    // dranw its first frame.
+    private static final long KEYGUARD_DISMISS_DURATION_LOCKED = 2000;
+
     private static String TAG = "StatusBarKeyguardViewManager";
 
     protected final Context mContext;
@@ -277,9 +282,12 @@
     /**
      * Hides the keyguard view
      */
-    public void hide(long startTime, final long fadeoutDuration) {
+    public void hide(long startTime, long fadeoutDuration) {
         mShowing = false;
 
+        if (!KeyguardUpdateMonitor.getInstance(mContext).isUserUnlocked()) {
+            fadeoutDuration = KEYGUARD_DISMISS_DURATION_LOCKED;
+        }
         long uptimeMillis = SystemClock.uptimeMillis();
         long delay = Math.max(0, startTime + HIDE_TIMING_CORRECTION_MS - uptimeMillis);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 7b22b88..47ea59e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -190,6 +190,12 @@
 
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
+        if (mService.interceptMediaKey(event)) {
+            return true;
+        }
+        if (super.dispatchKeyEvent(event)) {
+            return true;
+        }
         boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
         switch (event.getKeyCode()) {
             case KeyEvent.KEYCODE_BACK:
@@ -214,10 +220,7 @@
                 }
                 break;
         }
-        if (mService.interceptMediaKey(event)) {
-            return true;
-        }
-        return super.dispatchKeyEvent(event);
+        return false;
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
index 5d734c6..b9c7a4b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
@@ -89,14 +89,18 @@
 
     @Override
     public void addStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) {
-        mChangeCallbacks.add(cb);
+        synchronized (mChangeCallbacks) {
+            mChangeCallbacks.add(cb);
+        }
         cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
         cb.onPowerSaveChanged(mPowerSave);
     }
 
     @Override
     public void removeStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) {
-        mChangeCallbacks.remove(cb);
+        synchronized (mChangeCallbacks) {
+            mChangeCallbacks.remove(cb);
+        }
     }
 
     @Override
@@ -171,16 +175,20 @@
     }
 
     protected void fireBatteryLevelChanged() {
-        final int N = mChangeCallbacks.size();
-        for (int i = 0; i < N; i++) {
-            mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
+        synchronized (mChangeCallbacks) {
+            final int N = mChangeCallbacks.size();
+            for (int i = 0; i < N; i++) {
+                mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
+            }
         }
     }
 
     private void firePowerSaveChanged() {
-        final int N = mChangeCallbacks.size();
-        for (int i = 0; i < N; i++) {
-            mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave);
+        synchronized (mChangeCallbacks) {
+            final int N = mChangeCallbacks.size();
+            for (int i = 0; i < N; i++) {
+                mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave);
+            }
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java
index e7e2ac2..08675c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothController.java
@@ -26,6 +26,9 @@
 
     boolean isBluetoothSupported();
     boolean isBluetoothEnabled();
+
+    int getBluetoothState();
+
     boolean isBluetoothConnected();
     boolean isBluetoothConnecting();
     String getLastDeviceName();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
index 014cc49..4f880b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -49,6 +49,7 @@
     private CachedBluetoothDevice mLastDevice;
 
     private final H mHandler = new H();
+    private int mState;
 
     public BluetoothControllerImpl(Context context, Looper bgLooper) {
         mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, null);
@@ -120,6 +121,11 @@
     }
 
     @Override
+    public int getBluetoothState() {
+        return mState;
+    }
+
+    @Override
     public boolean isBluetoothConnected() {
         return mConnectionState == BluetoothAdapter.STATE_CONNECTED;
     }
@@ -192,7 +198,9 @@
 
     @Override
     public void onBluetoothStateChanged(int bluetoothState) {
-        mEnabled = bluetoothState == BluetoothAdapter.STATE_ON;
+        mEnabled = bluetoothState == BluetoothAdapter.STATE_ON
+                || bluetoothState == BluetoothAdapter.STATE_TURNING_ON;
+        mState = bluetoothState;
         mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java
index 9a21a1e..91b21ed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightController.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.policy;
 
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.hardware.camera2.CameraAccessException;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraManager;
@@ -42,6 +43,7 @@
     private static final int DISPATCH_AVAILABILITY_CHANGED = 2;
 
     private final CameraManager mCameraManager;
+    private final Context mContext;
     /** Call {@link #ensureHandler()} before using */
     private Handler mHandler;
 
@@ -51,20 +53,22 @@
     /** Lock on {@code this} when accessing */
     private boolean mFlashlightEnabled;
 
-    private final String mCameraId;
+    private String mCameraId;
     private boolean mTorchAvailable;
 
-    public FlashlightController(Context mContext) {
+    public FlashlightController(Context context) {
+        mContext = context;
         mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
 
-        String cameraId = null;
+        tryInitCamera();
+    }
+
+    private void tryInitCamera() {
         try {
-            cameraId = getCameraId();
+            mCameraId = getCameraId();
         } catch (Throwable e) {
             Log.e(TAG, "Couldn't initialize.", e);
             return;
-        } finally {
-            mCameraId = cameraId;
         }
 
         if (mCameraId != null) {
@@ -94,7 +98,7 @@
     }
 
     public boolean hasFlashlight() {
-        return mCameraId != null;
+        return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
     }
 
     public synchronized boolean isEnabled() {
@@ -107,6 +111,9 @@
 
     public void addListener(FlashlightListener l) {
         synchronized (mListeners) {
+            if (mCameraId == null) {
+                tryInitCamera();
+            }
             cleanUpListenersLocked(l);
             mListeners.add(new WeakReference<>(l));
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index d8b1a62..3df7590 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -265,6 +265,11 @@
     public void setImageDrawable(@Nullable Drawable drawable) {
         super.setImageDrawable(drawable);
     }
+
+    @Override
+    public void setLandscape(boolean landscape) {
+        //no op
+    }
 }
 
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java
index 970fed0..c175180 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java
@@ -112,6 +112,10 @@
         notifyKeyguardChanged();
     }
 
+    public boolean isDeviceInteractive() {
+        return mKeyguardUpdateMonitor.isDeviceInteractive();
+    }
+
     private void updateCanSkipBouncerState() {
         mCanSkipBouncer = mKeyguardUpdateMonitor.getUserCanSkipBouncer(mCurrentUser);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index ac3246d..8178bda 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -201,7 +201,7 @@
                 TelephonyIcons.FOUR_G_PLUS);
         } else {
             mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE, TelephonyIcons.LTE);
-            mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, TelephonyIcons.LTE);
+            mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_LTE_CA, TelephonyIcons.LTE_PLUS);
         }
         mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC);
     }
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 7a042af..a31bc04 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -786,6 +786,7 @@
                             datatype.equals("g") ? TelephonyIcons.G :
                             datatype.equals("h") ? TelephonyIcons.H :
                             datatype.equals("lte") ? TelephonyIcons.LTE :
+                            datatype.equals("lte+") ? TelephonyIcons.LTE_PLUS :
                             datatype.equals("roam") ? TelephonyIcons.ROAMING :
                             TelephonyIcons.UNKNOWN;
                 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index a2289c8..29577ef 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -16,6 +16,8 @@
 
 package com.android.systemui.statusbar.policy;
 
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
 import android.app.Notification;
 import android.app.PendingIntent;
 import android.app.RemoteInput;
@@ -33,6 +35,7 @@
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewAnimationUtils;
 import android.view.ViewGroup;
 import android.view.ViewParent;
 import android.view.inputmethod.CompletionInfo;
@@ -47,11 +50,13 @@
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.MetricsProto;
+import com.android.systemui.Interpolators;
 import com.android.systemui.R;
 import com.android.systemui.statusbar.ExpandableView;
 import com.android.systemui.statusbar.NotificationData;
 import com.android.systemui.statusbar.RemoteInputController;
 import com.android.systemui.statusbar.stack.ScrollContainer;
+import com.android.systemui.statusbar.stack.StackStateAnimator;
 
 /**
  * Host for the remote input.
@@ -77,6 +82,10 @@
     private View mScrollContainerChild;
     private boolean mRemoved;
 
+    private int mRevealCx;
+    private int mRevealCy;
+    private int mRevealR;
+
     public RemoteInputView(Context context, AttributeSet attrs) {
         super(context, attrs);
     }
@@ -180,14 +189,28 @@
         return true;
     }
 
-    public void onDefocus() {
+    private void onDefocus(boolean animate) {
         mController.removeRemoteInput(mEntry);
         mEntry.remoteInputText = mEditText.getText();
 
         // During removal, we get reattached and lose focus. Not hiding in that
         // case to prevent flicker.
         if (!mRemoved) {
-            setVisibility(INVISIBLE);
+            if (animate && mRevealR > 0) {
+                Animator reveal = ViewAnimationUtils.createCircularReveal(
+                        this, mRevealCx, mRevealCy, mRevealR, 0);
+                reveal.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN);
+                reveal.setDuration(StackStateAnimator.ANIMATION_DURATION_CLOSE_REMOTE_INPUT);
+                reveal.addListener(new AnimatorListenerAdapter() {
+                    @Override
+                    public void onAnimationEnd(Animator animation) {
+                        setVisibility(INVISIBLE);
+                    }
+                });
+                reveal.start();
+            } else {
+                setVisibility(INVISIBLE);
+            }
         }
         MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_CLOSE,
                 mEntry.notification.getPackageName());
@@ -223,6 +246,17 @@
         mEditText.setHint(mRemoteInput.getLabel());
     }
 
+    public void focusAnimated() {
+        if (getVisibility() != VISIBLE) {
+            Animator animator = ViewAnimationUtils.createCircularReveal(
+                    this, mRevealCx, mRevealCy, 0, mRevealR);
+            animator.setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD);
+            animator.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
+            animator.start();
+        }
+        focus();
+    }
+
     public void focus() {
         MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_OPEN,
                 mEntry.notification.getPackageName());
@@ -253,7 +287,7 @@
         mProgressBar.setVisibility(INVISIBLE);
         mController.removeSpinning(mEntry.key);
         updateSendButton();
-        onDefocus();
+        onDefocus(false /* animate */);
     }
 
     private void updateSendButton() {
@@ -272,7 +306,7 @@
     }
 
     public void close() {
-        mEditText.defocusIfNeeded();
+        mEditText.defocusIfNeeded(false /* animated */);
     }
 
     @Override
@@ -321,6 +355,7 @@
         other.close();
         setPendingIntent(other.mPendingIntent);
         setRemoteInput(other.mRemoteInputs, other.mRemoteInput);
+        setRevealParameters(other.mRevealCx, other.mRevealCy, other.mRevealR);
         focus();
     }
 
@@ -331,7 +366,6 @@
      * @return true if a matching action was found, false otherwise
      */
     public boolean updatePendingIntentFromActions(Notification.Action[] actions) {
-        boolean found = false;
         if (mPendingIntent == null || actions == null) {
             return false;
         }
@@ -374,6 +408,12 @@
         mRemoved = true;
     }
 
+    public void setRevealParameters(int cx, int cy, int r) {
+        mRevealCx = cx;
+        mRevealCy = cy;
+        mRevealR = r;
+    }
+
     /**
      * An EditText that changes appearance based on whether it's focusable and becomes
      * un-focusable whenever the user navigates away from it or it becomes invisible.
@@ -389,14 +429,14 @@
             mBackground = getBackground();
         }
 
-        private void defocusIfNeeded() {
+        private void defocusIfNeeded(boolean animate) {
             if (mRemoteInputView != null && mRemoteInputView.mEntry.row.isChangingPosition()) {
                 return;
             }
             if (isFocusable() && isEnabled()) {
                 setInnerFocusable(false);
                 if (mRemoteInputView != null) {
-                    mRemoteInputView.onDefocus();
+                    mRemoteInputView.onDefocus(animate);
                 }
                 mShowImeOnInputConnection = false;
             }
@@ -407,7 +447,7 @@
             super.onVisibilityChanged(changedView, visibility);
 
             if (!isShown()) {
-                defocusIfNeeded();
+                defocusIfNeeded(false /* animate */);
             }
         }
 
@@ -415,7 +455,7 @@
         protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
             super.onFocusChanged(focused, direction, previouslyFocusedRect);
             if (!focused) {
-                defocusIfNeeded();
+                defocusIfNeeded(true /* animate */);
             }
         }
 
@@ -432,14 +472,21 @@
         }
 
         @Override
-        public boolean onKeyPreIme(int keyCode, KeyEvent event) {
-            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
-                defocusIfNeeded();
-                final InputMethodManager imm = InputMethodManager.getInstance();
-                imm.hideSoftInputFromWindow(getWindowToken(), 0);
+        public boolean onKeyDown(int keyCode, KeyEvent event) {
+            if (keyCode == KeyEvent.KEYCODE_BACK) {
+                // Eat the DOWN event here to prevent any default behavior.
                 return true;
             }
-            return super.onKeyPreIme(keyCode, event);
+            return super.onKeyDown(keyCode, event);
+        }
+
+        @Override
+        public boolean onKeyUp(int keyCode, KeyEvent event) {
+            if (keyCode == KeyEvent.KEYCODE_BACK) {
+                defocusIfNeeded(true /* animate */);
+                return true;
+            }
+            return super.onKeyUp(keyCode, event);
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index d91b332..ed8c7ff 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -208,10 +208,12 @@
     };
 
     static final int QS_DATA_LTE = R.drawable.ic_qs_signal_lte;
+    static final int QS_DATA_LTE_PLUS = R.drawable.ic_qs_signal_lte_plus;
 
     static final int FLIGHT_MODE_ICON = R.drawable.stat_sys_airplane_mode;
     static final int ROAMING_ICON = R.drawable.stat_sys_data_fully_connected_roam;
     static final int ICON_LTE = R.drawable.stat_sys_data_fully_connected_lte;
+    static final int ICON_LTE_PLUS = R.drawable.stat_sys_data_fully_connected_lte_plus;
     static final int ICON_G = R.drawable.stat_sys_data_fully_connected_g;
     static final int ICON_E = R.drawable.stat_sys_data_fully_connected_e;
     static final int ICON_H = R.drawable.stat_sys_data_fully_connected_h;
@@ -393,6 +395,21 @@
             TelephonyIcons.QS_DATA_LTE
             );
 
+    static final MobileIconGroup LTE_PLUS = new MobileIconGroup(
+            "LTE+",
+            TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH,
+            TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH,
+            AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH,
+            0, 0,
+            TelephonyIcons.TELEPHONY_NO_NETWORK,
+            TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
+            AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
+            R.string.accessibility_data_connection_lte_plus,
+            TelephonyIcons.ICON_LTE_PLUS,
+            true,
+            TelephonyIcons.QS_DATA_LTE_PLUS
+            );
+
     static final MobileIconGroup ROAMING = new MobileIconGroup(
             "Roaming",
             TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index 4e03365..c883bba 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -99,6 +99,7 @@
     private Dialog mExitGuestDialog;
     private Dialog mAddUserDialog;
     private int mLastNonGuestUser = UserHandle.USER_SYSTEM;
+    private boolean mResumeUserOnGuestLogout = true;
     private boolean mSimpleUserSwitcher;
     private boolean mAddUsersWhenLocked;
     private boolean mPauseRefreshUsers;
@@ -318,6 +319,10 @@
         return mContext.getResources().getBoolean(R.bool.config_enableFullscreenUserSwitcher);
     }
 
+    public void setResumeUserOnGuestLogout(boolean resume) {
+        mResumeUserOnGuestLogout = resume;
+    }
+
     public void logoutCurrentUser() {
         int currentUser = ActivityManager.getCurrentUser();
         if (currentUser != UserHandle.USER_SYSTEM) {
@@ -420,7 +425,7 @@
 
     private void exitGuest(int id) {
         int newId = UserHandle.USER_SYSTEM;
-        if (mLastNonGuestUser != UserHandle.USER_SYSTEM) {
+        if (mResumeUserOnGuestLogout && mLastNonGuestUser != UserHandle.USER_SYSTEM) {
             UserInfo info = mUserManager.getUserInfo(mLastNonGuestUser);
             if (info != null && info.isEnabled() && info.supportsSwitchToByUser()) {
                 newId = info.id;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index b4d0ffd..839a20b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -668,30 +668,74 @@
     public void setStackHeight(float height) {
         mLastSetStackHeight = height;
         setIsExpanded(height > 0.0f);
-        int newStackHeight = (int) height;
-        int minStackHeight = getLayoutMinHeight();
         int stackHeight;
-        float paddingOffset;
-        boolean trackingHeadsUp = mTrackingHeadsUp || mHeadsUpManager.hasPinnedHeadsUp();
-        int normalUnfoldPositionStart = trackingHeadsUp
-                ? mHeadsUpManager.getTopHeadsUpPinnedHeight()
-                : minStackHeight;
-        if (newStackHeight - mTopPadding - mTopPaddingOverflow >= normalUnfoldPositionStart
-                || getNotGoneChildCount() == 0) {
-            paddingOffset = mTopPaddingOverflow;
-            stackHeight = newStackHeight;
+        float translationY;
+        float appearEndPosition = getAppearEndPosition();
+        float appearStartPosition = getAppearStartPosition();
+        if (height >= appearEndPosition) {
+            translationY = mTopPaddingOverflow;
+            stackHeight = (int) height;
         } else {
-            int translationY;
-            translationY = newStackHeight - normalUnfoldPositionStart;
-            paddingOffset = translationY - mTopPadding;
-            stackHeight = (int) (height - (translationY - mTopPadding));
+            float appearFraction = getAppearFraction(height);
+            if (appearFraction >= 0) {
+                translationY = NotificationUtils.interpolate(getExpandTranslationStart(), 0,
+                        appearFraction);
+            } else {
+                // This may happen when pushing up a heads up. We linearly push it up from the
+                // start
+                translationY = height - appearStartPosition + getExpandTranslationStart();
+            }
+            stackHeight = (int) (height - translationY);
         }
         if (stackHeight != mCurrentStackHeight) {
             mCurrentStackHeight = stackHeight;
             updateAlgorithmHeightAndPadding();
             requestChildrenUpdate();
         }
-        setStackTranslation(paddingOffset);
+        setStackTranslation(translationY);
+    }
+
+    /**
+     * @return The translation at the beginning when expanding.
+     *         Measured relative to the resting position.
+     */
+    private float getExpandTranslationStart() {
+        int startPosition = mTrackingHeadsUp || mHeadsUpManager.hasPinnedHeadsUp()
+                ? 0 : -getFirstChildMinHeight();
+        return startPosition - mTopPadding;
+    }
+
+    /**
+     * @return the position from where the appear transition starts when expanding.
+     *         Measured in absolute height.
+     */
+    private float getAppearStartPosition() {
+        return mTrackingHeadsUp
+                ? mHeadsUpManager.getTopHeadsUpPinnedHeight()
+                : 0;
+    }
+
+    /**
+     * @return the position from where the appear transition ends when expanding.
+     *         Measured in absolute height.
+     */
+    private float getAppearEndPosition() {
+        int firstItemHeight = mTrackingHeadsUp || mHeadsUpManager.hasPinnedHeadsUp()
+                ? mHeadsUpManager.getTopHeadsUpPinnedHeight() + mBottomStackPeekSize
+                        + mBottomStackSlowDownHeight
+                : getLayoutMinHeight();
+        return firstItemHeight + mTopPadding + mTopPaddingOverflow;
+    }
+
+    /**
+     * @param height the height of the panel
+     * @return the fraction of the appear animation that has been performed
+     */
+    public float getAppearFraction(float height) {
+        float appearEndPosition = getAppearEndPosition();
+        float appearStartPosition = getAppearStartPosition();
+        return (height - appearStartPosition)
+                / (appearEndPosition - appearStartPosition);
     }
 
     public float getStackTranslation() {
@@ -2098,6 +2142,12 @@
     }
 
     public int getLayoutMinHeight() {
+        int firstChildMinHeight = getFirstChildMinHeight();
+        return Math.min(firstChildMinHeight + mBottomStackPeekSize + mBottomStackSlowDownHeight,
+                mMaxLayoutHeight - mTopPadding);
+    }
+
+    private int getFirstChildMinHeight() {
         final ExpandableView firstChild = getFirstChildNotGone();
         int firstChildMinHeight = firstChild != null
                 ? firstChild.getIntrinsicHeight()
@@ -2107,8 +2157,7 @@
         if (mOwnScrollY > 0) {
             firstChildMinHeight = Math.max(firstChildMinHeight - mOwnScrollY, mCollapsedSize);
         }
-        return Math.min(firstChildMinHeight + mBottomStackPeekSize + mBottomStackSlowDownHeight,
-                mMaxLayoutHeight - mTopPadding);
+        return firstChildMinHeight;
     }
 
     public float getTopPaddingOverflow() {
@@ -2349,6 +2398,7 @@
         if (hasAddEvent) {
             // This child was just added lets remove all events.
             mHeadsUpChangeAnimations.removeAll(mTmpList);
+            ((ExpandableNotificationRow ) child).setHeadsupDisappearRunning(false);
         }
         mTmpList.clear();
         return hasAddEvent;
@@ -2606,6 +2656,10 @@
                 type = row.wasJustClicked()
                         ? AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR_CLICK
                         : AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR;
+                if (row.isChildInGroup()) {
+                    // We can otherwise get stuck in there if it was just isolated
+                    row.setHeadsupDisappearRunning(false);
+                }
             } else {
                 StackViewState viewState = mCurrentStackScrollState.getViewStateForView(row);
                 if (viewState == null) {
@@ -3099,6 +3153,22 @@
         requestChildrenUpdate();
         runAnimationFinishedRunnables();
         clearViewOverlays();
+        clearHeadsUpDisappearRunning();
+    }
+
+    private void clearHeadsUpDisappearRunning() {
+        for (int i = 0; i < getChildCount(); i++) {
+            View view = getChildAt(i);
+            if (view instanceof ExpandableNotificationRow) {
+                ExpandableNotificationRow row = (ExpandableNotificationRow) view;
+                row.setHeadsupDisappearRunning(false);
+                if (row.isSummaryWithChildren()) {
+                    for (ExpandableNotificationRow child : row.getNotificationChildren()) {
+                        child.setHeadsupDisappearRunning(false);
+                    }
+                }
+            }
+        }
     }
 
     private void clearViewOverlays() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
index 659eaf7..3804b42 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
@@ -44,6 +44,7 @@
     public static final int ANIMATION_DURATION_GO_TO_FULL_SHADE = 448;
     public static final int ANIMATION_DURATION_APPEAR_DISAPPEAR = 464;
     public static final int ANIMATION_DURATION_DIMMED_ACTIVATED = 220;
+    public static final int ANIMATION_DURATION_CLOSE_REMOTE_INPUT = 150;
     public static final int ANIMATION_DURATION_HEADS_UP_APPEAR = 650;
     public static final int ANIMATION_DURATION_HEADS_UP_DISAPPEAR = 230;
     public static final int ANIMATION_DELAY_PER_ELEMENT_INTERRUPTING = 80;
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerZenModePanel.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerZenModePanel.java
index cc0ffb0..1ea23bb 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerZenModePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerZenModePanel.java
@@ -54,7 +54,6 @@
         mHeaderSwitch = findViewById(R.id.tuner_zen_switch);
         mHeaderSwitch.setVisibility(View.VISIBLE);
         mHeaderSwitch.setOnClickListener(this);
-        mHeaderSwitch.findViewById(com.android.internal.R.id.up).setVisibility(View.GONE);
         ((TextView) mHeaderSwitch.findViewById(android.R.id.title)).setText(
                 R.string.quick_settings_dnd_label);
         mZenModePanel = (ZenModePanel) findViewById(R.id.zen_mode_panel);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
index f01e95f..995ecae 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
@@ -124,12 +124,8 @@
                 : null;
         Util.setText(mSummaryLine1, line1);
 
-        final boolean isForever = mConfig != null && mConfig.manualRule != null
-                && mConfig.manualRule.conditionId == null;
-        final CharSequence line2 =
-                isForever ? mContext.getString(com.android.internal.R.string.zen_mode_forever_dnd)
-                : ZenModeConfig.getConditionSummary(mContext, mConfig, mController.getCurrentUser(),
-                        true /*shortVersion*/);
+        final CharSequence line2 = ZenModeConfig.getConditionSummary(mContext, mConfig,
+                                mController.getCurrentUser(), true /*shortVersion*/);
         Util.setText(mSummaryLine2, line2);
     }
 
diff --git a/packages/SystemUI/tests/Android.mk b/packages/SystemUI/tests/Android.mk
index 6c39e35..2020abb 100644
--- a/packages/SystemUI/tests/Android.mk
+++ b/packages/SystemUI/tests/Android.mk
@@ -15,6 +15,7 @@
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+LOCAL_USE_AAPT2 := true
 LOCAL_MODULE_TAGS := tests
 
 LOCAL_JACK_FLAGS := --multi-dex native
@@ -23,37 +24,31 @@
 LOCAL_PROTOC_FLAGS := -I$(LOCAL_PATH)/..
 LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors
 
-LOCAL_AAPT_FLAGS := --auto-add-overlay \
-    --extra-packages com.android.systemui:com.android.keyguard:android.support.v14.preference:android.support.v7.preference:android.support.v7.appcompat:android.support.v7.recyclerview \
-    --extra-packages android.support.v17.leanback
+LOCAL_PACKAGE_NAME := SystemUITests
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src) \
     $(call all-Iaidl-files-under, src) \
     $(call all-java-files-under, ../src)
 
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
-    frameworks/support/v7/preference/res \
-    frameworks/support/v14/preference/res \
-    frameworks/support/v7/appcompat/res \
-    frameworks/support/v7/recyclerview/res \
-    frameworks/support/v17/leanback/res \
     frameworks/base/packages/SystemUI/res \
-    frameworks/base/packages/Keyguard/res
 
-LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common android.car
-
-LOCAL_PACKAGE_NAME := SystemUITests
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    mockito-target \
+LOCAL_STATIC_ANDROID_LIBRARIES := \
     Keyguard \
     android-support-v7-recyclerview \
     android-support-v7-preference \
     android-support-v7-appcompat \
     android-support-v14-preference \
-    android-support-v17-leanback \
+    android-support-v17-leanback
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    mockito-target \
     SystemUI-proto-tags
 
+LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common android.car
+
+LOCAL_AAPT_FLAGS := --extra-packages com.android.systemui
+
 # sign this with platform cert, so this test is allowed to inject key events into
 # UI it doesn't own. This is necessary to allow screenshots to be taken
 LOCAL_CERTIFICATE := platform
diff --git a/packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java b/packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java
new file mode 100644
index 0000000..07334f3
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/phone/DozeParametersTests.java
@@ -0,0 +1,166 @@
+/*
+ * 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.phone;
+
+import com.android.systemui.statusbar.phone.DozeParameters.IntInOutMatcher;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class DozeParametersTests extends AndroidTestCase {
+
+    public void test_inOutMatcher_defaultIn() {
+        IntInOutMatcher intInOutMatcher = new IntInOutMatcher("*");
+
+        assertTrue(intInOutMatcher.isIn(1));
+        assertTrue(intInOutMatcher.isIn(-1));
+        assertTrue(intInOutMatcher.isIn(0));
+    }
+
+    public void test_inOutMatcher_defaultOut() {
+        IntInOutMatcher intInOutMatcher = new IntInOutMatcher("!*");
+
+        assertFalse(intInOutMatcher.isIn(1));
+        assertFalse(intInOutMatcher.isIn(-1));
+        assertFalse(intInOutMatcher.isIn(0));
+    }
+
+    public void test_inOutMatcher_someIn() {
+        IntInOutMatcher intInOutMatcher = new IntInOutMatcher("1,2,3,!*");
+
+        assertTrue(intInOutMatcher.isIn(1));
+        assertTrue(intInOutMatcher.isIn(2));
+        assertTrue(intInOutMatcher.isIn(3));
+
+        assertFalse(intInOutMatcher.isIn(0));
+        assertFalse(intInOutMatcher.isIn(4));
+    }
+
+    public void test_inOutMatcher_someOut() {
+        IntInOutMatcher intInOutMatcher = new IntInOutMatcher("!1,!2,!3,*");
+
+        assertFalse(intInOutMatcher.isIn(1));
+        assertFalse(intInOutMatcher.isIn(2));
+        assertFalse(intInOutMatcher.isIn(3));
+
+        assertTrue(intInOutMatcher.isIn(0));
+        assertTrue(intInOutMatcher.isIn(4));
+    }
+
+    public void test_inOutMatcher_mixed() {
+        IntInOutMatcher intInOutMatcher = new IntInOutMatcher("!1,2,!3,*");
+
+        assertFalse(intInOutMatcher.isIn(1));
+        assertTrue(intInOutMatcher.isIn(2));
+        assertFalse(intInOutMatcher.isIn(3));
+
+        assertTrue(intInOutMatcher.isIn(0));
+        assertTrue(intInOutMatcher.isIn(4));
+    }
+
+    public void test_inOutMatcher_failEmpty() {
+        try {
+            new IntInOutMatcher("");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failNull() {
+        try {
+            new IntInOutMatcher(null);
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failEmptyClause() {
+        try {
+            new IntInOutMatcher("!1,*,");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failDuplicate() {
+        try {
+            new IntInOutMatcher("!1,*,!1");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failDuplicateDefault() {
+        try {
+            new IntInOutMatcher("!1,*,*");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failMalformedNot() {
+        try {
+            new IntInOutMatcher("!,*");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failText() {
+        try {
+            new IntInOutMatcher("!abc,*");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failContradiction() {
+        try {
+            new IntInOutMatcher("1,!1,*");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failContradictionDefault() {
+        try {
+            new IntInOutMatcher("1,*,!*");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+    public void test_inOutMatcher_failMissingDefault() {
+        try {
+            new IntInOutMatcher("1");
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTests.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTests.java
index c93377a..7703c58 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTests.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTests.java
@@ -58,7 +58,7 @@
         mHandler = new Handler(mThread.getLooper());
         ComponentName component = new ComponentName(mContext, FakeTileService.class);
         mStateManager = new TileLifecycleManager(mHandler, getContext(),
-                Mockito.mock(IQSService.class), new Tile(component),
+                Mockito.mock(IQSService.class), new Tile(),
                 new Intent().setComponent(component),
                 new UserHandle(UserHandle.myUserId()));
         mCallbacks.clear();
diff --git a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
index 47d1493..402d9ad 100644
--- a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
+++ b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
@@ -16,17 +16,21 @@
 
 package com.android.wallpaperbackup;
 
+import static android.app.WallpaperManager.FLAG_LOCK;
+import static android.app.WallpaperManager.FLAG_SYSTEM;
+
 import android.app.WallpaperManager;
 import android.app.backup.BackupAgent;
 import android.app.backup.BackupDataInput;
 import android.app.backup.BackupDataOutput;
 import android.app.backup.FullBackupDataOutput;
 import android.content.Context;
+import android.content.SharedPreferences;
 import android.graphics.Rect;
 import android.os.Environment;
+import android.os.FileUtils;
 import android.os.ParcelFileDescriptor;
 import android.os.UserHandle;
-import android.system.Os;
 import android.util.Slog;
 import android.util.Xml;
 
@@ -47,15 +51,28 @@
 
     // Target filenames within the system's wallpaper directory
     static final String WALLPAPER = "wallpaper_orig";
+    static final String WALLPAPER_LOCK = "wallpaper_lock_orig";
     static final String WALLPAPER_INFO = "wallpaper_info.xml";
 
     // Names of our local-data stage files/links
     static final String IMAGE_STAGE = "wallpaper-stage";
+    static final String LOCK_IMAGE_STAGE = "wallpaper-lock-stage";
     static final String INFO_STAGE = "wallpaper-info-stage";
     static final String EMPTY_SENTINEL = "empty";
+    static final String QUOTA_SENTINEL = "quota";
 
-    private File mWallpaperInfo;    // wallpaper metadata file
-    private File mWallpaperFile;    // primary wallpaper image file
+    // Not-for-backup bookkeeping
+    static final String PREFS_NAME = "wbprefs.xml";
+    static final String SYSTEM_GENERATION = "system_gen";
+    static final String LOCK_GENERATION = "lock_gen";
+
+    private File mWallpaperInfo;        // wallpaper metadata file
+    private File mWallpaperFile;        // primary wallpaper image file
+    private File mLockWallpaperFile;    // lock wallpaper image file
+
+    // If this file exists, it means we exceeded our quota last time
+    private File mQuotaFile;
+    private boolean mQuotaExceeded;
 
     private WallpaperManager mWm;
 
@@ -68,7 +85,14 @@
         File wallpaperDir = Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM);
         mWallpaperInfo = new File(wallpaperDir, WALLPAPER_INFO);
         mWallpaperFile = new File(wallpaperDir, WALLPAPER);
+        mLockWallpaperFile = new File(wallpaperDir, WALLPAPER_LOCK);
         mWm = (WallpaperManager) getSystemService(Context.WALLPAPER_SERVICE);
+
+        mQuotaFile = new File(getFilesDir(), QUOTA_SENTINEL);
+        mQuotaExceeded = mQuotaFile.exists();
+        if (DEBUG) {
+            Slog.v(TAG, "quota file " + mQuotaFile.getPath() + " exists=" + mQuotaExceeded);
+        }
     }
 
     @Override
@@ -77,6 +101,7 @@
         final File filesDir = getFilesDir();
         final File infoStage = new File(filesDir, INFO_STAGE);
         final File imageStage = new File (filesDir, IMAGE_STAGE);
+        final File lockImageStage = new File (filesDir, LOCK_IMAGE_STAGE);
         final File empty = new File (filesDir, EMPTY_SENTINEL);
 
         try {
@@ -90,30 +115,75 @@
             // only back up the wallpaper if we've been told it's allowed
             if (mWm.isWallpaperBackupEligible()) {
                 if (DEBUG) {
-                    Slog.v(TAG, "Wallpaper is backup-eligible; linking & writing");
+                    Slog.v(TAG, "Wallpaper is backup-eligible");
                 }
 
-                // In case of prior muddled state
-                infoStage.delete();
-                imageStage.delete();
+                SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
+                final int lastSysGeneration = prefs.getInt(SYSTEM_GENERATION, -1);
+                final int lastLockGeneration = prefs.getInt(LOCK_GENERATION, -1);
 
-                Os.link(mWallpaperInfo.getCanonicalPath(), infoStage.getCanonicalPath());
-                fullBackupFile(infoStage, data);
-                Os.link(mWallpaperFile.getCanonicalPath(), imageStage.getCanonicalPath());
-                fullBackupFile(imageStage, data);
+                final int sysGeneration =
+                        mWm.getWallpaperIdForUser(FLAG_SYSTEM, UserHandle.USER_SYSTEM);
+                final int lockGeneration =
+                        mWm.getWallpaperIdForUser(FLAG_LOCK, UserHandle.USER_SYSTEM);
+                final boolean sysChanged = (sysGeneration != lastSysGeneration);
+                final boolean lockChanged = (lockGeneration != lastLockGeneration);
+
+                if (DEBUG) {
+                    Slog.v(TAG, "sysGen=" + sysGeneration + " : sysChanged=" + sysChanged);
+                    Slog.v(TAG, "lockGen=" + lockGeneration + " : lockChanged=" + lockChanged);
+                }
+                if (mWallpaperInfo.exists()) {
+                    if (sysChanged || lockChanged || !infoStage.exists()) {
+                        if (DEBUG) Slog.v(TAG, "New wallpaper configuration; copying");
+                        FileUtils.copyFileOrThrow(mWallpaperInfo, infoStage);
+                    }
+                    fullBackupFile(infoStage, data);
+                }
+                if (mWallpaperFile.exists()) {
+                    if (sysChanged || !imageStage.exists()) {
+                        if (DEBUG) Slog.v(TAG, "New system wallpaper; copying");
+                        FileUtils.copyFileOrThrow(mWallpaperFile, imageStage);
+                    }
+                    fullBackupFile(imageStage, data);
+                    prefs.edit().putInt(SYSTEM_GENERATION, sysGeneration).apply();
+                }
+
+                // Don't try to store the lock image if we overran our quota last time
+                if (mLockWallpaperFile.exists() && !mQuotaExceeded) {
+                    if (lockChanged || !lockImageStage.exists()) {
+                        if (DEBUG) Slog.v(TAG, "New lock wallpaper; copying");
+                        FileUtils.copyFileOrThrow(mLockWallpaperFile, lockImageStage);
+                    }
+                    fullBackupFile(lockImageStage, data);
+                    prefs.edit().putInt(LOCK_GENERATION, lockGeneration).apply();
+                }
             } else {
                 if (DEBUG) {
                     Slog.v(TAG, "Wallpaper not backup-eligible; writing no data");
                 }
             }
         } catch (Exception e) {
-            Slog.e(TAG, "Unable to back up wallpaper: " + e.getMessage());
+            Slog.e(TAG, "Unable to back up wallpaper", e);
         } finally {
-            if (DEBUG) {
-                Slog.v(TAG, "Removing backup stage links");
-            }
-            infoStage.delete();
-            imageStage.delete();
+            // Even if this time we had to back off on attempting to store the lock image
+            // due to exceeding the data quota, try again next time.  This will alternate
+            // between "try both" and "only store the primary image" until either there
+            // is no lock image to store, or the quota is raised, or both fit under the
+            // quota.
+            mQuotaFile.delete();
+        }
+    }
+
+    @Override
+    public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
+        if (DEBUG) {
+            Slog.i(TAG, "Quota exceeded (" + backupDataBytes + " vs " + quotaBytes + ')');
+        }
+        try (FileOutputStream f = new FileOutputStream(mQuotaFile)) {
+            f.write(0);
+        } catch (Exception e) {
+            Slog.w(TAG, "Unable to record quota-exceeded: " + e.getMessage());
         }
     }
 
@@ -124,42 +194,57 @@
         if (DEBUG) {
             Slog.v(TAG, "onRestoreFinished()");
         }
-        final File infoStage = new File(getFilesDir(), INFO_STAGE);
-        final File imageStage = new File (getFilesDir(), IMAGE_STAGE);
+        final File filesDir = getFilesDir();
+        final File infoStage = new File(filesDir, INFO_STAGE);
+        final File imageStage = new File (filesDir, IMAGE_STAGE);
+        final File lockImageStage = new File (filesDir, LOCK_IMAGE_STAGE);
 
         try {
-            // It is valid for the imagery to be absent; it means that we were not permitted
-            // to back up the original image on the source device.
-            if (imageStage.exists()) {
-                if (DEBUG) {
-                    Slog.v(TAG, "Got restored wallpaper; applying");
-                }
+            // First off, revert to the factory state
+            mWm.clear(WallpaperManager.FLAG_SYSTEM | WallpaperManager.FLAG_LOCK);
 
-                // Parse the restored info file to find the crop hint.  Note that this currently
-                // relies on a priori knowledge of the wallpaper info file schema.
-                Rect cropHint = parseCropHint(infoStage);
-                if (cropHint != null) {
-                    if (DEBUG) {
-                        Slog.v(TAG, "Restored crop hint " + cropHint + "; now writing data");
-                    }
-                    WallpaperManager wm = getSystemService(WallpaperManager.class);
-                    try (FileInputStream in = new FileInputStream(imageStage)) {
-                        wm.setStream(in, cropHint, true, WallpaperManager.FLAG_SYSTEM);
-                    } finally {} // auto-closes 'in'
-                }
-            }
+            // It is valid for the imagery to be absent; it means that we were not permitted
+            // to back up the original image on the source device, or there was no user-supplied
+            // wallpaper image present.
+            restoreFromStage(imageStage, infoStage, "wp", WallpaperManager.FLAG_SYSTEM);
+            restoreFromStage(lockImageStage, infoStage, "kwp", WallpaperManager.FLAG_LOCK);
         } catch (Exception e) {
             Slog.e(TAG, "Unable to restore wallpaper: " + e.getMessage());
         } finally {
             if (DEBUG) {
-                Slog.v(TAG, "Removing restore stage files");
+                Slog.v(TAG, "Restore finished; clearing backup bookkeeping");
             }
             infoStage.delete();
             imageStage.delete();
+            lockImageStage.delete();
+
+            SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
+            prefs.edit()
+                    .putInt(SYSTEM_GENERATION, -1)
+                    .putInt(LOCK_GENERATION, -1)
+                    .commit();
         }
     }
 
-    private Rect parseCropHint(File wallpaperInfo) {
+    private void restoreFromStage(File stage, File info, String hintTag, int which)
+            throws IOException {
+        if (stage.exists()) {
+            // Parse the restored info file to find the crop hint.  Note that this currently
+            // relies on a priori knowledge of the wallpaper info file schema.
+            Rect cropHint = parseCropHint(info, hintTag);
+            if (cropHint != null) {
+                Slog.i(TAG, "Got restored wallpaper; applying which=" + which);
+                if (DEBUG) {
+                    Slog.v(TAG, "Restored crop hint " + cropHint);
+                }
+                try (FileInputStream in = new FileInputStream(stage)) {
+                    mWm.setStream(in, cropHint, true, which);
+                } finally {} // auto-closes 'in'
+            }
+        }
+    }
+
+    private Rect parseCropHint(File wallpaperInfo, String sectionTag) {
         Rect cropHint = new Rect();
         try (FileInputStream stream = new FileInputStream(wallpaperInfo)) {
             XmlPullParser parser = Xml.newPullParser();
@@ -170,7 +255,7 @@
                 type = parser.next();
                 if (type == XmlPullParser.START_TAG) {
                     String tag = parser.getName();
-                    if ("wp".equals(tag)) {
+                    if (sectionTag.equals(tag)) {
                         cropHint.left = getAttributeInt(parser, "cropLeft", 0);
                         cropHint.top = getAttributeInt(parser, "cropTop", 0);
                         cropHint.right = getAttributeInt(parser, "cropRight", 0);
diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
index 0fc9da0..41576bf 100644
--- a/proto/src/metrics_constants.proto
+++ b/proto/src/metrics_constants.proto
@@ -33,73 +33,61 @@
     // OPEN: Settings > Accessibility
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCESSIBILITY = 2;
 
     // OPEN: Settings > Accessibility > Captions
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCESSIBILITY_CAPTION_PROPERTIES = 3;
 
     // OPEN: Settings > Accessibility > [Service]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCESSIBILITY_SERVICE = 4;
 
     // OPEN: Settings > Accessibility > Color correction
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCESSIBILITY_TOGGLE_DALTONIZER = 5;
 
     // OPEN: Settings > Accessibility > Accessibility shortcut
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCESSIBILITY_TOGGLE_GLOBAL_GESTURE = 6;
 
     // OPEN: Settings > Accessibility > Magnification gestures
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION = 7;
 
     // OPEN: Settings > Accounts
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCOUNT = 8;
 
     // OPEN: Settings > Accounts > [Single Account Sync Settings]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCOUNTS_ACCOUNT_SYNC = 9;
 
     // OPEN: Settings > Accounts > Add an account
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCOUNTS_CHOOSE_ACCOUNT_ACTIVITY = 10;
 
     // OPEN: Settings > Accounts > [List of accounts when more than one]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACCOUNTS_MANAGE_ACCOUNTS = 11;
 
     // OPEN: Settings > Cellular network settings > APNs
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APN = 12;
 
     // OPEN: Settings > More > Cellular network settings > APNs > [Edit APN]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APN_EDITOR = 13;
 
     // OBSOLETE
@@ -114,7 +102,6 @@
     // OPEN: Settings > Apps > Configure apps > App links > [App]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_APP_LAUNCH = 17;
 
     // OBSOLETE
@@ -123,19 +110,16 @@
     // OPEN: Settings > Internal storage > Apps storage > [App]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_APP_STORAGE = 19;
 
     // OPEN: Settings > Apps > [App info]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_INSTALLED_APP_DETAILS = 20;
 
     // OPEN: Settings > Memory > App usage > [App Memory usage]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_PROCESS_STATS_DETAIL = 21;
 
     // OBSOLETE
@@ -144,19 +128,16 @@
     // OPEN: Settings > Memory > App usage
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_PROCESS_STATS_UI = 23;
 
     // OPEN: Settings > Bluetooth
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     BLUETOOTH = 24;
 
     // OPEN: Choose Bluetooth device (ex: when sharing)
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     BLUETOOTH_DEVICE_PICKER = 25;
 
     // OBSOLETE
@@ -165,55 +146,46 @@
     // OPEN: Settings > Security > Choose screen lock
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CHOOSE_LOCK_GENERIC = 27;
 
     // OPEN: Settings > Security > Choose screen lock > Choose your password
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CHOOSE_LOCK_PASSWORD = 28;
 
     // OPEN: Settings > Security > Choose screen lock > Choose your pattern
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CHOOSE_LOCK_PATTERN = 29;
 
     // OPEN: Settings > Security > Choose screen lock > Confirm your password
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CONFIRM_LOCK_PASSWORD = 30;
 
     // OPEN: Settings > Security > Choose screen lock > Confirm your pattern
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CONFIRM_LOCK_PATTERN = 31;
 
     // OPEN: Settings > Security > Encrypt phone
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CRYPT_KEEPER = 32;
 
     // OPEN: Settings > Security > Encrypt phone > Confirm
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     CRYPT_KEEPER_CONFIRM = 33;
 
     // OPEN: Settings > Search results
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DASHBOARD_SEARCH_RESULTS = 34;
 
     // OPEN: Settings (Root page)
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DASHBOARD_SUMMARY = 35;
 
     // OBSOLETE
@@ -222,49 +194,41 @@
     // OPEN: Settings > Data usage
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DATA_USAGE_SUMMARY = 37;
 
     // OPEN: Settings > Date & time
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DATE_TIME = 38;
 
     // OPEN: Settings > Developer options
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DEVELOPMENT = 39;
 
     // OPEN: Settings > About phone
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DEVICEINFO = 40;
 
     // OPEN: Settings > About phone > Status > IMEI information
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DEVICEINFO_IMEI_INFORMATION = 41;
 
     // OPEN: Settings > Internal storage
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DEVICEINFO_STORAGE = 42;
 
     // OPEN: Settings > About phone > Status > SIM status
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DEVICEINFO_SIM_STATUS = 43;
 
     // OPEN: Settings > About phone > Status
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DEVICEINFO_STATUS = 44;
 
     // OBSOLETE
@@ -273,25 +237,21 @@
     // OPEN: Settings > Display
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DISPLAY = 46;
 
     // OPEN: Settings > Display > Daydream
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     DREAM = 47;
 
     // OPEN: Settings > Security > Screen lock > Secure start-up
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ENCRYPTION = 48;
 
     // OPEN: Settings > Security > Nexus Imprint
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     FINGERPRINT = 49;
 
     // OBSOLETE
@@ -300,55 +260,46 @@
     // OPEN: Settings > Battery > History details
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     FUELGAUGE_BATTERY_HISTORY_DETAIL = 51;
 
     // OPEN: Settings > Battery > Battery saver
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     FUELGAUGE_BATTERY_SAVER = 52;
 
     // OPEN: Settings > Battery > [App Use details]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     FUELGAUGE_POWER_USAGE_DETAIL = 53;
 
     // OPEN: Settings > Battery
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     FUELGAUGE_POWER_USAGE_SUMMARY = 54;
 
     // OPEN: Settings > Home
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     HOME = 55;
 
     // OPEN: Settings > Security > SIM card lock settings
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ICC_LOCK = 56;
 
     // OPEN: Settings > Language & input
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     INPUTMETHOD_LANGUAGE = 57;
 
     // OPEN: Settings > Language & input > Physical keyboard
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     INPUTMETHOD_KEYBOARD = 58;
 
     // OPEN: Settings > Language & input > Spell checker
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     INPUTMETHOD_SPELL_CHECKERS = 59;
 
     // OBSOLETE
@@ -357,79 +308,66 @@
     // OPEN: Settings > Language & input > Personal dictionary
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     INPUTMETHOD_USER_DICTIONARY = 61;
 
     // OPEN: Settings > Language & input > Add word
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     INPUTMETHOD_USER_DICTIONARY_ADD_WORD = 62;
 
     // OPEN: Settings > Location
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     LOCATION = 63;
 
     // OPEN: Settings > Location > Location mode
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     LOCATION_MODE = 64;
 
     // OPEN: Settings > Apps
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     MANAGE_APPLICATIONS = 65;
 
     // OPEN: Settings > Backup & reset > Factory data reset
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     MASTER_CLEAR = 66;
 
     // OPEN: Settings > Backup & reset > Factory data reset > Confirm
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     MASTER_CLEAR_CONFIRM = 67;
 
     // OPEN: Settings > Data usage > Network restrictions
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NET_DATA_USAGE_METERED = 68;
 
     // OPEN: Settings > More > Android Beam
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NFC_BEAM = 69;
 
     // OPEN: Settings > Tap & pay
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NFC_PAYMENT = 70;
 
     // OPEN: Settings > Sound & notification
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION = 71;
 
     // OPEN: Settings > Sound & notification > App notifications > [App]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_APP_NOTIFICATION = 72;
 
     // OPEN: Settings > Sound & notification > Other sounds
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_OTHER_SOUND = 73;
 
     // OBSOLETE
@@ -438,13 +376,11 @@
     // OPEN: Settings Widget > Notification log
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_STATION = 75;
 
     // OPEN: Settings > Sound & notification > Do not disturb
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE = 76;
 
     // OPEN: OBSOLETE
@@ -453,25 +389,21 @@
     // OPEN: Print job notification > Print job settings
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     PRINT_JOB_SETTINGS = 78;
 
     // OPEN: Settings > Printing > [Print Service]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     PRINT_SERVICE_SETTINGS = 79;
 
     // OPEN: Settings > Printing
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     PRINT_SETTINGS = 80;
 
     // OPEN: Settings > Backup & reset
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     PRIVACY = 81;
 
     //OBSOLETE
@@ -480,37 +412,31 @@
     // OPEN: Settings > Backup & reset > Network settings reset
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     RESET_NETWORK = 83;
 
     // OPEN: Settings > Backup & reset > Network settings reset > Confirm
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     RESET_NETWORK_CONFIRM = 84;
 
     // OPEN: Settings > Developer Options > Running Services
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     RUNNING_SERVICE_DETAILS = 85;
 
     // OPEN: Settings > Security > Screen pinning
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     SCREEN_PINNING = 86;
 
     // OPEN: Settings > Security
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     SECURITY = 87;
 
     // OPEN: Settings > SIM cards
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     SIM = 88;
 
     // OBSOLETE
@@ -519,55 +445,46 @@
     // OPEN: Settings > More > Tethering & portable hotspot
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TETHER = 90;
 
     // OPEN: Settings > Security > Trust agents
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TRUST_AGENT = 91;
 
     // OPEN: Settings > Security > Trusted credentials
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TRUSTED_CREDENTIALS = 92;
 
     // OPEN: Settings > Language & input > TTS output > [Engine] > Settings
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TTS_ENGINE_SETTINGS = 93;
 
     // OPEN: Settings > Language & input > Text-to-speech output
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TTS_TEXT_TO_SPEECH = 94;
 
     // OPEN: Settings > Security > Apps with usage access
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     USAGE_ACCESS = 95;
 
     // OPEN: Settings > Users
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     USER = 96;
 
     // OPEN: Settings > Users > [Restricted profile app & content access]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     USERS_APP_RESTRICTIONS = 97;
 
     // OPEN: Settings > Users > [User settings]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     USER_DETAILS = 98;
 
     // OBSOLETE
@@ -576,43 +493,36 @@
     // OPEN: Settings > More > VPN
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     VPN = 100;
 
     // OPEN: Settings > Display > Choose wallpaper from
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WALLPAPER_TYPE = 101;
 
     // OPEN: Settings > Display > Cast
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WFD_WIFI_DISPLAY = 102;
 
     // OPEN: Settings > Wi-Fi
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WIFI = 103;
 
     // OPEN: Settings > Wi-Fi > Advanced Wi-Fi
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WIFI_ADVANCED = 104;
 
     // OPEN: Settings > More > Wi-Fi Calling
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WIFI_CALLING = 105;
 
     // OPEN: Settings > Wi-Fi > Saved networks
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WIFI_SAVED_ACCESS_POINTS = 106;
 
     // OBSOLETE
@@ -624,19 +534,16 @@
     // OPEN: Settings > Wi-Fi > Advanced Wi-Fi > Wi-Fi Direct
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WIFI_P2P = 109;
 
     // OPEN: Settings > More
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     WIRELESS = 110;
 
     // OPEN: Quick Settings Panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_PANEL = 111;
 
     // OPEN: QS Airplane mode tile shown
@@ -644,7 +551,6 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_AIRPLANEMODE = 112;
 
     // OPEN: QS Bluetooth tile shown
@@ -652,21 +558,18 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_BLUETOOTH = 113;
 
     // OPEN: QS Cast tile shown
     // ACTION: QS Cast tile tapped
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_CAST = 114;
 
     // OPEN: QS Cellular tile shown
     // ACTION: QS Cellular tile tapped
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_CELLULAR = 115;
 
     // OPEN: QS Color inversion tile shown
@@ -674,13 +577,11 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_COLORINVERSION = 116;
 
     // OPEN: QS Cellular tile > Cellular detail panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_DATAUSAGEDETAIL = 117;
 
     // OPEN: QS Do not disturb tile shown
@@ -688,7 +589,6 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_DND = 118;
 
     // OPEN: QS Flashlight tile shown
@@ -696,7 +596,6 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_FLASHLIGHT = 119;
 
     // OPEN: QS Hotspot tile shown
@@ -704,14 +603,12 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_HOTSPOT = 120;
 
     // OPEN: QS 3P tile shown
     // ACTION: QS 3P tile tapped
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_INTENT = 121;
 
     // OPEN: QS Location tile shown
@@ -719,7 +616,6 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_LOCATION = 122;
 
     // OPEN: QS Rotation tile shown
@@ -727,7 +623,6 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_ROTATIONLOCK = 123;
 
     // OBSOLETE
@@ -736,7 +631,6 @@
     // OPEN: QS User list panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_USERDETAIL = 125;
 
     // OPEN: QS WiFi tile shown
@@ -744,13 +638,11 @@
     //  SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.46
     QS_WIFI = 126;
 
     // OPEN: Notification Panel (including lockscreen)
     // CATEGORY: NOTIFICATION
     // OS: 5.1.1
-    // GMS: 7.5.26
     NOTIFICATION_PANEL = 127;
 
     // OPEN: Notification in panel became visible.
@@ -764,7 +656,6 @@
     //   SUBTYPE: Dismiss reason from NotificationManagerService.java
     // CATEGORY: NOTIFICATION
     // OS: 5.1.1
-    // GMS: 7.5.26
     NOTIFICATION_ITEM = 128;
 
     // ACTION: User tapped notification action
@@ -772,19 +663,16 @@
     //   SUBTYPE: Index of action on notification
     // CATEGORY: NOTIFICATION
     // OS: 5.0
-    // GMS: 7.5.26
     NOTIFICATION_ITEM_ACTION = 129;
 
     // OPEN: Settings > Apps > Configure apps > App permissions
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_ADVANCED = 130;
 
     // OPEN: Settings > Location > Scanning
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     LOCATION_SCANNING = 131;
 
     // OBSOLETE
@@ -793,43 +681,36 @@
     // OPEN: Settings > Sound & notification > App notifications
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     MANAGE_APPLICATIONS_NOTIFICATIONS = 133;
 
     // ACTION: Settings > Wi-Fi > Overflow > Add Network
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_WIFI_ADD_NETWORK = 134;
 
     // ACTION: Settings > Wi-Fi > [Long press network] > Connect to network
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_WIFI_CONNECT = 135;
 
     // ACTION: Settings > Wi-Fi > Overflow > Refresh
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_WIFI_FORCE_SCAN = 136;
 
     // ACTION: Settings > Wi-Fi > [Long press network] > Forget network
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_WIFI_FORGET = 137;
 
     // ACTION: Settings > Wi-Fi > Toggle off
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_WIFI_OFF = 138;
 
     // ACTION: Settings > Wi-Fi > Toggle on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_WIFI_ON = 139;
 
     // OBSOLETE
@@ -838,280 +719,236 @@
     // OPEN: Settings > Sound & notification > DND > Priority only allows
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE_PRIORITY = 141;
 
     // OPEN: Settings > Sound & notification > DND > Automatic rules
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE_AUTOMATION = 142;
 
     // OPEN: Settings > Apps > Configure apps > App links
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     MANAGE_DOMAIN_URLS = 143;
 
     // OPEN: Settings > Sound & notification > DND > [Time based rule]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE_SCHEDULE_RULE = 144;
 
     // OPEN: Settings > Sound & notification > DND > [External rule]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE_EXTERNAL_RULE = 145;
 
     // OPEN: Settings > Sound & notification > DND > [Event rule]
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE_EVENT_RULE = 146;
 
     // ACTION: App notification settings > Block Notifications
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BAN_APP_NOTES = 147;
 
     // ACTION: Notification shade > Dismiss all button
     // CATEGORY: NOTIFICATION
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_DISMISS_ALL_NOTES = 148;
 
     // OPEN: QS Do Not Disturb detail panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_DND_DETAILS = 149;
 
     // OPEN: QS Bluetooth detail panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_BLUETOOTH_DETAILS = 150;
 
     // OPEN: QS Cast detail panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_CAST_DETAILS = 151;
 
     // OPEN: QS Wi-Fi detail panel
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_WIFI_DETAILS = 152;
 
     // ACTION: QS Wi-Fi detail panel > Wi-Fi toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_WIFI_TOGGLE = 153;
 
     // ACTION: QS Bluetooth detail panel > Bluetooth toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_BLUETOOTH_TOGGLE = 154;
 
     // ACTION: QS Cellular detail panel > Cellular toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_CELLULAR_TOGGLE = 155;
 
     // ACTION: QS User list panel > Select different user
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_SWITCH_USER = 156;
 
     // ACTION: QS Cast detail panel > Select cast device
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_CAST_SELECT = 157;
 
     // ACTION: QS Cast detail panel > Disconnect cast device
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_CAST_DISCONNECT = 158;
 
     // ACTION: Settings > Bluetooth > Toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BLUETOOTH_TOGGLE = 159;
 
     // ACTION: Settings > Bluetooth > Overflow > Refresh
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BLUETOOTH_SCAN = 160;
 
     // ACTION: Settings > Bluetooth > Overflow > Rename this device
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BLUETOOTH_RENAME = 161;
 
     // ACTION: Settings > Bluetooth > Overflow > Show received files
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BLUETOOTH_FILES = 162;
 
     // ACTION: QS DND details panel > Increase / Decrease exit time
     //   SUBTYPE: true is increase, false is decrease
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_DND_TIME = 163;
 
     // ACTION: QS DND details panel > [Exit condition]
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_DND_CONDITION_SELECT = 164;
 
     // ACTION: QS DND details panel > [DND mode]
     //  SUBTYPE: 1 is priority, 2 is silence, 3 is alarms only
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_DND_ZEN_SELECT = 165;
 
     // ACTION: QS DND detail panel > DND toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     QS_DND_TOGGLE = 166;
 
     // ACTION: DND Settings > Priority only allows > Reminder toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ALLOW_REMINDERS = 167;
 
     // ACTION: DND Settings > Priority only allows > Event toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ALLOW_EVENTS = 168;
 
     // ACTION: DND Settings > Priority only allows > Messages
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ALLOW_MESSAGES = 169;
 
     // ACTION: DND Settings > Priority only allows > Calls
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ALLOW_CALLS = 170;
 
     // ACTION: DND Settings > Priority only allows > Repeat callers toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ALLOW_REPEAT_CALLS = 171;
 
     // ACTION: DND Settings > Automatic rules > Add rule
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ADD_RULE = 172;
 
     // ACTION: DND Settings > Automatic rules > Add rule > OK
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ADD_RULE_OK = 173;
 
     // ACTION: DND Settings > Automatic rules > [Rule] > Delete rule
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_DELETE_RULE = 174;
 
     // ACTION: DND Settings > Automatic rules > [Rule] > Delete rule > Delete
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_DELETE_RULE_OK = 175;
 
     // ACTION: DND Settings > Automatic rules > [Rule] > Toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ZEN_ENABLE_RULE = 176;
 
     // ACTION: Settings > More > Airplane mode toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_AIRPLANE_TOGGLE = 177;
 
     // ACTION: Settings > Data usage > Cellular data toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_CELL_DATA_TOGGLE = 178;
 
     // OPEN: Settings > Sound & notification > Notification access
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ACCESS = 179;
 
     // OPEN: Settings > Sound & notification > Do Not Disturb access
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     NOTIFICATION_ZEN_MODE_ACCESS = 180;
 
     // OPEN: Settings > Apps > Configure apps > Default Apps
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_DEFAULT_APPS = 181;
 
     // OPEN: Settings > Internal storage > Apps storage
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_STORAGE_APPS = 182;
 
     // OPEN: Settings > Security > Usage access
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_USAGE_ACCESS_DETAIL = 183;
 
     // OPEN: Settings > Battery > Battery optimization
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_HIGH_POWER_APPS = 184;
 
     // OBSOLETE
@@ -1120,448 +957,377 @@
     // ACTION: Lockscreen > Unlock gesture
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_UNLOCK = 186;
 
     // ACTION: Lockscreen > Pull shade open
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_SHADE = 187;
 
     // ACTION: Lockscreen > Tap on lock, shows hint
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_HINT = 188;
 
     // ACTION: Lockscreen > Camera
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_CAMERA = 189;
 
     // ACTION: Lockscreen > Dialer
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_DIALER = 190;
 
     // ACTION: Lockscreen > Tap on lock, locks phone
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_LOCK = 191;
 
     // ACTION: Lockscreen > Tap on notification, false touch rejection
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     ACTION_LS_NOTE = 192;
 
     // ACTION: Lockscreen > Swipe down to open quick settings
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.8.22
     ACTION_LS_QS = 193;
 
     // ACTION: Swipe down to open quick settings when unlocked
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.8.22
     ACTION_SHADE_QS_PULL = 194;
 
     // ACTION: Notification shade > Tap to open quick settings
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.8.22
     ACTION_SHADE_QS_TAP = 195;
 
     // OPEN: Lockscreen
     //   SUBTYPE: 0 is unsecure, 1 is secured by password / pattern / PIN
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     LOCKSCREEN = 196;
 
     // OPEN: Lockscreen > Screen to enter password / pattern / PIN
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     BOUNCER = 197;
 
     // OPEN: Screen turned on
     //   SUBTYPE: 2 is user action
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.8.22
     SCREEN = 198;
 
     // OPEN: Notification caused sound, vibration, and/or LED blink
     //   SUBTYPE: 1 is buzz, 2 is beep, blink is 4, or'd together
     // CATEGORY: NOTIFICATION
     // OS: 5.1.1
-    // GMS: 7.8.53
     NOTIFICATION_ALERT = 199;
 
     // ACTION: Lockscreen > Emergency Call button
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 5.1.1
-    // GMS: 7.5.26
     ACTION_EMERGENCY_CALL = 200;
 
     // OPEN: Settings > Apps > Configure > Default apps > Assist & voice input
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     APPLICATIONS_MANAGE_ASSIST = 201;
 
     // OPEN: Settings > Memory
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     PROCESS_STATS_SUMMARY = 202;
 
     // ACTION: Settings > Display > When device is rotated
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ROTATION_LOCK = 203;
 
     // ACTION: Long press on notification to view controls
     // CATEGORY: NOTIFICATION
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_NOTE_CONTROLS = 204;
 
     // ACTION: Notificatoin controls > Info button
     // CATEGORY: NOTIFICATION
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_NOTE_INFO = 205;
 
     // ACTION: Notification controls > Settings button
     // CATEGORY: NOTIFICATION
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_APP_NOTE_SETTINGS = 206;
 
     // OPEN: Volume Dialog (with hardware buttons)
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     VOLUME_DIALOG = 207;
 
     // OPEN: Volume dialog > Expanded volume dialog (multiple sliders)
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     VOLUME_DIALOG_DETAILS = 208;
 
     // ACTION: Volume dialog > Adjust volume slider
     //   SUBTYPE: volume level (0-7)
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_VOLUME_SLIDER = 209;
 
     // ACTION: Volume dialog > Select non-active stream
     //   SUBTYPE: stream (defined in AudioSystem.java)
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_VOLUME_STREAM = 210;
 
     // ACTION: Adjust volume with hardware key
     //   SUBTYPE: volume level (0-7)
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_VOLUME_KEY = 211;
 
     // ACTION: Volume dialog > Mute a stream by tapping icon
     //   SUBTYPE: mute is 1, audible is 2
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_VOLUME_ICON = 212;
 
     // ACTION: Volume dialog > Change ringer mode by tapping icon
     //   SUBTYPE: 2 is audible, 3 is vibrate
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_RINGER_MODE = 213;
 
     // ACTION: Chooser shown (share target, file open, etc.)
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ACTIVITY_CHOOSER_SHOWN = 214;
 
     // ACTION: Chooser > User taps an app target
     //   SUBTYPE: Index of target
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ACTIVITY_CHOOSER_PICKED_APP_TARGET = 215;
 
     // ACTION: Chooser > User taps a service target
     //   SUBTYPE: Index of target
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ACTIVITY_CHOOSER_PICKED_SERVICE_TARGET = 216;
 
     // ACTION: Chooser > User taps a standard target
     //   SUBTYPE: Index of target
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ACTIVITY_CHOOSER_PICKED_STANDARD_TARGET = 217;
 
     // ACTION: QS Brightness Slider (with auto brightness disabled)
     //   SUBTYPE: slider value
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BRIGHTNESS = 218;
 
     // ACTION: QS Brightness Slider (with auto brightness enabled)
     //   SUBTYPE: slider value
     // CATEGORY: QUICK_SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_BRIGHTNESS_AUTO = 219;
 
     // OPEN: Settings > Display > Brightness Slider
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     BRIGHTNESS_DIALOG = 220;
 
     // OPEN: Settings > Apps > Configure Apps > Draw over other apps
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     SYSTEM_ALERT_WINDOW_APPS = 221;
 
     // OPEN: Display has entered dream mode
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     DREAMING = 222;
 
     // OPEN: Display has entered ambient notification mode
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     DOZING = 223;
 
     // OPEN: Overview
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     OVERVIEW_ACTIVITY = 224;
 
     // OPEN: Settings > About phone > Legal information
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ABOUT_LEGAL_SETTINGS = 225;
 
     // OPEN: Settings > Search > Perform search
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_SEARCH_RESULTS = 226;
 
     // OPEN: Settings > System UI Tuner
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER = 227;
 
     // OPEN: Settings > System UI Tuner > Quick Settings
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_QS = 228;
 
     // OPEN: Settings > System UI Tuner > Demo mode
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_DEMO_MODE = 229;
 
     // ACTION: Settings > System UI Tuner > Quick Settings > Move tile
     //   PACKAGE: Tile
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_QS_REORDER = 230;
 
     // ACTION: Settings > System UI Tuner > Quick Settings > Add tile
     //   PACKAGE: Tile
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_QS_ADD = 231;
 
     // ACTION: Settings > System UI Tuner > Quick Settings > Remove tile
     //   PACKAGE: Tile
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_QS_REMOVE = 232;
 
     // ACTION: Settings > System UI Tuner > Status bar > Enable icon
     //   PACKAGE: Icon
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_STATUS_BAR_ENABLE = 233;
 
     // ACTION: Settings > System UI Tuner > Status bar > Disable icon
     //   PACKAGE: Icon
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_STATUS_BAR_DISABLE = 234;
 
     // ACTION: Settings > System UI Tuner > Demo mode > Enable demo mode
     //   SUBTYPE: false is disabled, true is enabled
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_DEMO_MODE_ENABLED = 235;
 
     // ACTION: Settings > System UI Tuner > Demo mode > Show demo mode
     //   SUBTYPE: false is disabled, true is enabled
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_DEMO_MODE_ON = 236;
 
     // ACTION: Settings > System UI Tuner > Show embedded battery percentage
     //   SUBTYPE: 0 is disabled, 1 is enabled
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     TUNER_BATTERY_PERCENTAGE = 237;
 
     // OPEN: Settings > Developer options > Inactive apps
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.5.26
     FUELGAUGE_INACTIVE_APPS = 238;
 
     // ACTION: Long press home to bring up assistant
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.5.26
     ACTION_ASSIST_LONG_PRESS = 239;
 
     // OPEN: Settings > Security > Nexus Imprint > Add Fingerprint
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLLING = 240;
 
     // OPEN: Fingerprint Enroll > Find Sensor
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_FIND_SENSOR = 241;
 
     // OPEN: Fingerprint Enroll > Fingerprint Enrolled!
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_FINISH = 242;
 
     // OPEN: Fingerprint Enroll introduction
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_INTRO = 243;
 
     // OPEN: Fingerprint Enroll onboarding
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_ONBOARD = 244;
 
     // OPEN: Fingerprint Enroll > Let's Start!
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_SIDECAR = 245;
 
     // OPEN: Fingerprint Enroll SUW > Let's Start!
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLLING_SETUP = 246;
 
     // OPEN: Fingerprint Enroll SUW > Find Sensor
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_FIND_SENSOR_SETUP = 247;
 
     // OPEN: Fingerprint Enroll SUW > Fingerprint Enrolled!
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_FINISH_SETUP = 248;
 
     // OPEN: Fingerprint Enroll SUW introduction
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_INTRO_SETUP = 249;
 
     // OPEN: Fingerprint Enroll SUW onboarding
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     FINGERPRINT_ENROLL_ONBOARD_SETUP = 250;
 
     // ACTION: Add fingerprint > Enroll fingerprint
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     ACTION_FINGERPRINT_ENROLL = 251;
 
     // ACTION: Authenticate using fingerprint
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     ACTION_FINGERPRINT_AUTH = 252;
 
     // ACTION: Settings > Security > Nexus Imprint > [Fingerprint] > Delete
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     ACTION_FINGERPRINT_DELETE = 253;
 
     // ACTION: Settings > Security > Nexus Imprint > [Fingerprint] > Rename
     // CATEGORY: SETTINGS
     // OS: 6.0
-    // GMS: 7.8.99
     ACTION_FINGERPRINT_RENAME = 254;
 
     // ACTION: Double tap camera shortcut
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.8.99
     ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE = 255;
 
     // ACTION: Double twist camera shortcut
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: 6.0
-    // GMS: 7.8.99
     ACTION_WIGGLE_CAMERA_GESTURE = 256;
 
     // OPEN: QS Work Mode tile shown
@@ -1569,13 +1335,11 @@
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: N
-    // GMS: 7.8.99
     QS_WORKMODE = 257;
 
     // OPEN: Settings > Developer Options > Background Check
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     BACKGROUND_CHECK_SUMMARY = 258;
 
     // OPEN: QS Lock tile shown
@@ -1583,52 +1347,44 @@
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: N
-    // GMS: 7.8.99
     QS_LOCK_TILE = 259;
 
     // OPEN: QS User Tile shown
     // CATEGORY: QUICK_SETTINGS
     // OS: N
-    // GMS: 7.8.99
     QS_USER_TILE = 260;
 
     // OPEN: QS Battery tile shown
     // CATEGORY: QUICK_SETTINGS
     // OS: N
-    // GMS: 7.8.99
     QS_BATTERY_TILE = 261;
 
     // OPEN: Settings > Sound > Do not disturb > Visual interruptions
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     NOTIFICATION_ZEN_MODE_VISUAL_INTERRUPTIONS = 262;
 
     // ACTION: Visual interruptions > No screen interuptions toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_ZEN_ALLOW_WHEN_SCREEN_OFF = 263;
 
     // ACTION: Visual interruptions > No notification light toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_ZEN_ALLOW_LIGHTS = 264;
 
     // OPEN: Settings > Notifications > [App] > Topic Notifications
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     NOTIFICATION_TOPIC_NOTIFICATION = 265;
 
     // ACTION: Settings > Apps > Default Apps > Select different SMS app
     //   PACKAGE: Selected SMS app
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_DEFAULT_SMS_APP_CHANGED = 266;
 
     // OPEN: QS Color modification tile shown
@@ -1636,105 +1392,88 @@
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: QUICK_SETTINGS
     // OS: N
-    // GMS: 7.8.99
     QS_COLOR_MATRIX = 267;
 
     // OPEN: QS Custom tile shown
     // ACTION: QS Work Mode tile tapped
     // CATEGORY: QUICK_SETTINGS
     // OS: N
-    // GMS: 7.8.99
     QS_CUSTOM = 268;
 
     // ACTION: Visual interruptions > Never turn off the screen toggle
     //   SUBTYPE: 0 is off, 1 is on
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_ZEN_ALLOW_WHEN_SCREEN_ON = 269;
 
     // ACTION: Overview > Long-press task, drag to enter split-screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_WINDOW_DOCK_DRAG_DROP = 270;
 
     // ACTION: In App > Long-press Overview button to enter split-screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_WINDOW_DOCK_LONGPRESS = 271;
 
     // ACTION: In App > Swipe Overview button to enter split-screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_WINDOW_DOCK_SWIPE = 272;
 
     // ACTION: Launch profile-specific app > Confirm credentials
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     PROFILE_CHALLENGE = 273;
 
     // OPEN: QS Battery detail panel
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     QS_BATTERY_DETAIL = 274;
 
     // OPEN: Overview > History
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     OVERVIEW_HISTORY = 275;
 
     // ACTION: Overview > Page by tapping Overview button
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_OVERVIEW_PAGE = 276;
 
     // ACTION: Overview > Select app
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_OVERVIEW_SELECT = 277;
 
     // ACTION: View emergency info
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_VIEW_EMERGENCY_INFO = 278;
 
     // ACTION: Edit emergency info activity
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_EDIT_EMERGENCY_INFO = 279;
 
     // ACTION: Edit emergency info field
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_EDIT_EMERGENCY_INFO_FIELD = 280;
 
     // ACTION: Add emergency contact
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_ADD_EMERGENCY_CONTACT = 281;
 
     // ACTION: Delete emergency contact
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_DELETE_EMERGENCY_CONTACT = 282;
 
     // ACTION: Call emergency contact
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     ACTION_CALL_EMERGENCY_CONTACT = 283;
 
     // OPEN: QS Data Saver tile shown
@@ -1745,13 +1484,11 @@
     // OPEN: Settings > Security > User credentials
     // CATEGORY: Settings
     // OS: N
-    // GMS: 7.8.99
     USER_CREDENTIALS = 285;
 
     // ACTION: In App (splitscreen) > Long-press Overview to exit split-screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_WINDOW_UNDOCK_LONGPRESS = 286;
 
     // Logged when the user scrolls through overview manually
@@ -1773,81 +1510,68 @@
     // ACTION: Long-press power button, then tap "Take bug report" option.
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_FROM_POWER_MENU_INTERACTIVE = 292;
 
     // ACTION: Long-press power button, then long-press "Take bug report" option.
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_FROM_POWER_MENU_FULL = 293;
 
     // ACTION: Settings -> Developer Options -> Take bug report -> Interactive report
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     // Interactive bug report initiated from Settings.
     ACTION_BUGREPORT_FROM_SETTINGS_INTERACTIVE = 294;
 
     // ACTION: Settings -> Developer Options -> Take bug report -> Full report
     // CATEGORY: SETTINGS
     // OS: N
-    // GMS: 7.8.99
     // Interactive bug report initiated from Settings.
     ACTION_BUGREPORT_FROM_SETTINGS_FULL = 295;
 
     // ACTION: User tapped notification action to cancel a bug report
     // CATEGORY: NOTIFICATION
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_NOTIFICATION_ACTION_CANCEL = 296;
 
     // ACTION: User tapped notification action to launch bug report details screen
     // CATEGORY: NOTIFICATION
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_NOTIFICATION_ACTION_DETAILS = 297;
 
     // ACTION: User tapped notification action to take adition screenshot on bug report
     // CATEGORY: NOTIFICATION
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_NOTIFICATION_ACTION_SCREENSHOT = 298;
 
     // ACTION: User tapped notification to share bug report
     // CATEGORY: NOTIFICATION
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_NOTIFICATION_ACTION_SHARE = 299;
 
     // ACTION: User changed bug report name using the details screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_DETAILS_NAME_CHANGED = 300;
 
     // ACTION: User changed bug report title using the details screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_DETAILS_TITLE_CHANGED = 301;
 
     // ACTION: User changed bug report description using the details screen
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_DETAILS_DESCRIPTION_CHANGED = 302;
 
     // ACTION: User tapped Save in the bug report details screen.
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_DETAILS_SAVED = 303;
 
     // ACTION: User tapped Cancel in the bug report details screen.
     // CATEGORY: GLOBAL_SYSTEM_UI
     // OS: N
-    // GMS: 7.8.99
     ACTION_BUGREPORT_DETAILS_CANCELED = 304;
 
     // Tuner: Open/close calibrate dialog.
@@ -1920,79 +1644,140 @@
     // the transition was executed.
     APP_TRANSITION_DEVICE_UPTIME_SECONDS = 325;
 
-    // User granted access to the request folder; action takes an integer
-    // representing the folder's index on Environment.STANDARD_DIRECTORIES
-    // (or -2 for root access, or -1 or unknown directory).
+    // ACTION: app requested access to a scoped directory, user granted it.
+    //   SUBTYPE: directory's index on Environment.STANDARD_DIRECTORIES
+    // CATEGORY: GLOBAL_SYSTEM_UI
+    // OS: N
     ACTION_SCOPED_DIRECTORY_ACCESS_GRANTED_BY_FOLDER = 326;
 
-    // User denied access to the request folder; action takes an integer
-    // representing the folder's index on Environment.STANDARD_DIRECTORIES
-    // (or -2 for root access, or -1 or unknown directory).
+    // ACTION: app requested access to a scoped directory, user denied it.
+    //   SUBTYPE: directory's index on Environment.STANDARD_DIRECTORIES
+    // CATEGORY: GLOBAL_SYSTEM_UI
+    // OS: N
     ACTION_SCOPED_DIRECTORY_ACCESS_DENIED_BY_FOLDER = 327;
 
-    // User granted access to the request folder; action pass package name
-    // of calling package.
+    // ACTION: app requested access to a scoped directory, user granted it.
+    //   PACKAGE: app that requested access
+    // CATEGORY: GLOBAL_SYSTEM_UI
+    // OS: N
     ACTION_SCOPED_DIRECTORY_ACCESS_GRANTED_BY_PACKAGE = 328;
 
-    // User denied access to the request folder; action pass package name
-    // of calling package.
+    // ACTION: app requested access to a scoped directory, user denied it.
+    //   PACKAGE: app that requested access.
+    // CATEGORY: GLOBAL_SYSTEM_UI
+    // OS: N
     ACTION_SCOPED_DIRECTORY_ACCESS_DENIED_BY_PACKAGE = 329;
 
-    // App requested access to a directory it has already been granted
-    // access before; action takes an integer representing the folder's
-    // index on Environment.STANDARD_DIRECTORIES
-    // (or -2 for root access, or -1 or unknown directory).
+    // ACTION: app requested access to a directory user has already been granted
+    // access before.
+    //   SUBTYPE: directory's index on Environment.STANDARD_DIRECTORIES.
+    // CATEGORY: GLOBAL_SYSTEM_UI
+    // OS: N
     ACTION_SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED_BY_FOLDER = 330;
 
-    // App requested access to a directory it has already been granted
-    // access before; action pass package name of calling package.
+    // ACTION: app requested access to a directory user has already been granted
+    // access before.
+    //   PACKAGE: app that requested access.
+    // CATEGORY: GLOBAL_SYSTEM_UI
+    // OS: N
     ACTION_SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED_BY_PACKAGE = 331;
 
-    // Logged when the user slides a notification and
-    // reveals the gear beneath it.
+    // ACTION: Logged when the user slides a notification and reveals the gear
+    // beneath it.
+    // CATEGORY: NOTIFICATION
+    // OS: N
     ACTION_REVEAL_GEAR = 332;
 
-    // Logged when the user taps on the gear beneath
-    // a notification.
+    // ACTION: Logged when the user taps on the gear beneath a notification.
+    // CATEGORY: NOTIFICATION
+    // OS: N
     ACTION_TOUCH_GEAR = 333;
 
     // Logs that the user has edited the enabled VR listeners.
+    // CATEGORY: SETTINGS
+    // OS: N
     VR_MANAGE_LISTENERS = 334;
 
     // Settings -> Accessibility -> Click after pointer stops moving
+    // CATEGORY: SETTINGS
+    // OS: N
     ACCESSIBILITY_TOGGLE_AUTOCLICK = 335;
+
     // Settings -> Sound
+    // CATEGORY: SETTINGS
+    // OS: N
     SOUND = 336;
+
     // Settings -> Notifications -> Gear
+    // CATEGORY: SETTINGS
+    // OS: N
     CONFIGURE_NOTIFICATION = 337;
+
     // Settings -> Wi-Fi -> Gear
+    // CATEGORY: SETTINGS
+    // OS: N
     CONFIGURE_WIFI = 338;
+
     // Settings -> Display -> Display size
+    // OS: N
     DISPLAY_SCREEN_ZOOM = 339;
+
     // Settings -> Display -> Font size
+    // CATEGORY: SETTINGS
+    // OS: N
     ACCESSIBILITY_FONT_SIZE = 340;
+
     // Settings -> Data usage -> Cellular/Wi-Fi data usage
+    // CATEGORY: SETTINGS
+    // OS: N
     DATA_USAGE_LIST = 341;
+
     // Settings -> Data usage -> Billing cycle or DATA_USAGE_LIST -> Gear
+    // CATEGORY: SETTINGS
+    // OS: N
     BILLING_CYCLE = 342;
+
     // DATA_USAGE_LIST -> Any item or App info -> Data usage
+    // CATEGORY: SETTINGS
+    // OS: N
     APP_DATA_USAGE = 343;
+
     // Settings -> Language & input -> Language
+    // CATEGORY: SETTINGS
+    // OS: N
     USER_LOCALE_LIST = 344;
+
     // Settings -> Language & input -> Virtual keyboard
+    // CATEGORY: SETTINGS
+    // OS: N
     VIRTUAL_KEYBOARDS = 345;
+
     // Settings -> Language & input -> Physical keyboard
+    // CATEGORY: SETTINGS
+    // OS: N
     PHYSICAL_KEYBOARDS = 346;
+
     // Settings -> Language & input -> Virtual keyboard -> Add a virtual keyboard
+    // CATEGORY: SETTINGS
+    // OS: N
     ENABLE_VIRTUAL_KEYBOARDS = 347;
+
     // Settings -> Data usage -> Data Saver
+    // CATEGORY: SETTINGS
+    // OS: N
     DATA_SAVER_SUMMARY = 348;
+
     // Settings -> Data usage -> Data Saver -> Unrestricted data access
+    // CATEGORY: SETTINGS
+    // OS: N
     DATA_USAGE_UNRESTRICTED_ACCESS = 349;
 
     // Used for generic logging of Settings Preference Persistence, should not be used
     // outside SharedPreferencesLogger.
+    // CATEGORY: SETTINGS
+    // OS: N
     ACTION_GENERIC_PACKAGE = 350;
+
     // Settings -> Apps -> Gear -> Special access
     SPECIAL_ACCESS = 351;
 
@@ -2158,15 +1943,28 @@
     // System UI Tuner > Other > Power notification controls > Toggle on/off
     ACTION_TUNER_POWER_NOTIFICATION_CONTROLS = 393;
 
-    // Action: user enable / disabled data saver using Settings. Arguments:
-    // 0: Data Saver mode is disabled.
-    // 1: Data Saver mode is enabled.
+    // Action: user enable / disabled data saver using Settings
+    // OPEN: Settings -> Data Usage -> Data saver -> On/off toggle
+    // VALUE: 1 for enabled, 0 for disabled
+    // CATEGORY: SETTINGS
+    // OS: N
     ACTION_DATA_SAVER_MODE = 394;
 
-    // User whitelisted an app for Data Saver mode; action pass package name of app.
+    // User whitelisted an app for Data Saver mode; action pass package name of app
+    // Action: user enable / disabled data saver using Settings
+    // OPEN: Settings -> Data Usage -> Data saver -> Unrestricted data access > APP toggle turned on
+    //       or
+    //       Settings -> Apps -> APP -> Data usage -> Unrestricted data usage toggle turned on
+    // VALUE: package name of APP
+    // CATEGORY: SETTINGS
+    // OS: N
     ACTION_DATA_SAVER_WHITELIST = 395;
 
-    // User blacklisted an app for Data Saver mode; action pass package name of app.
+    // User blacklisted an app for Data Saver mode; action pass package name of app
+    // OPEN: Settings -> Apps -> APP -> Data usage -> Background data toggle turned off
+    // VALUE: package name of APP
+    // CATEGORY: SETTINGS
+    // OS: N
     ACTION_DATA_SAVER_BLACKLIST = 396;
 
     // User opened a remote input view associated with a notification. Passes package name of app
@@ -2332,45 +2130,73 @@
     SUPPORT_FRAGMENT = 475;
 
     // ACTION: Settings -> Select summary tab.
+    // CATEGORY: SETTINGS
     ACTION_SELECT_SUMMARY=476;
 
     // ACTION: Settings -> Select support tab.
+    // CATEGORY: SETTINGS
     ACTION_SELECT_SUPPORT_FRAGMENT = 477;
 
     // ACTION: Settings -> Support -> Tips & tricks
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_TIPS_AND_TRICKS = 478;
 
     // ACTION: Settings -> Support -> Help & feedback
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_HELP_AND_FEEDBACK = 479;
 
     // ACTION: Settings -> Support -> Sign in
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_SIGN_IN = 480;
 
     // ACTION: Settings -> Support -> Phone
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_PHONE = 481;
 
     // ACTION: Settings -> Support -> Chat
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_CHAT = 482;
 
     // ACTION: Settings -> Support -> Phone/Chat -> Disclaimer Cancel
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_DISCLAIMER_CANCEL = 483;
 
     // ACTION: Settings -> Support -> Phone/Chat -> Disclaimer OK
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_DISCLAIMER_OK = 484;
 
     // ACTION: Settings -> Support -> Toll-Free Phone
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_DAIL_TOLLFREE = 485;
 
     // ACTION: Settings -> Support -> "Travel Abroad" Button
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_VIEW_TRAVEL_ABROAD_DIALOG = 486;
 
     // ACTION: Settings -> Support -> "Travel Abroad" Button -> Tolled Phone
+    // CATEGORY: SETTINGS
     ACTION_SUPPORT_DIAL_TOLLED = 487;
 
-    // OPEN: Settings > Display > Night display
+    // OPEN: Settings > Display > Night Light
     // CATEGORY: SETTINGS
     NIGHT_DISPLAY_SETTINGS = 488;
 
+    // ACTION: Settings -> Storage -> Manage storage -> Click Storage Manager
+        //   SUBTYPE: false is off, true is on
+    ACTION_TOGGLE_STORAGE_MANAGER = 489;
+
+    // Settings launched from collapsed quick settings.
+    ACTION_QS_COLLAPSED_SETTINGS_LAUNCH = 490;
+
+    // OPEN: QS Night Light tile shown
+    // ACTION: QS Night Light tile tapped
+    //   SUBTYPE: 0 is off, 1 is on
+    // CATEGORY: QUICK_SETTINGS
+    QS_NIGHT_DISPLAY = 491;
+
+    // Night Light on
+    SETTINGS_CONDITION_NIGHT_DISPLAY = 492;
+
     // ---- End N-MR1 Constants, all N-MR1 constants go above this line ----
 
     // ------- Begin N Keyboard Shortcuts Helper -----
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 7a12289..955b0c1 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -426,6 +426,8 @@
 
     @Override
     public boolean sendAccessibilityEvent(AccessibilityEvent event, int userId) {
+        boolean dispatchEvent = false;
+
         synchronized (mLock) {
             // We treat calls from a profile as if made by its parent as profiles
             // share the accessibility state of the parent. The call below
@@ -440,15 +442,31 @@
                 mSecurityPolicy.updateActiveAndAccessibilityFocusedWindowLocked(event.getWindowId(),
                         event.getSourceNodeId(), event.getEventType(), event.getAction());
                 mSecurityPolicy.updateEventSourceLocked(event);
-                notifyAccessibilityServicesDelayedLocked(event, false);
-                notifyAccessibilityServicesDelayedLocked(event, true);
+                dispatchEvent = true;
             }
             if (mHasInputFilter && mInputFilter != null) {
                 mMainHandler.obtainMessage(MainHandler.MSG_SEND_ACCESSIBILITY_EVENT_TO_INPUT_FILTER,
                         AccessibilityEvent.obtain(event)).sendToTarget();
             }
-            event.recycle();
         }
+
+        if (dispatchEvent) {
+            // Make sure clients receiving this event will be able to get the
+            // current state of the windows as the window manager may be delaying
+            // the computation for performance reasons.
+            if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
+                    && mWindowsForAccessibilityCallback != null) {
+                WindowManagerInternal wm = LocalServices.getService(WindowManagerInternal.class);
+                wm.computeWindowsForAccessibility();
+            }
+            synchronized (mLock) {
+                notifyAccessibilityServicesDelayedLocked(event, false);
+                notifyAccessibilityServicesDelayedLocked(event, true);
+            }
+        }
+
+        event.recycle();
+
         return (OWN_PROCESS_ID != Binder.getCallingPid());
     }
 
@@ -1422,7 +1440,8 @@
         updateTouchExplorationLocked(userState);
         updatePerformGesturesLocked(userState);
         updateEnhancedWebAccessibilityLocked(userState);
-        updateDisplayColorAdjustmentSettingsLocked(userState);
+        updateDisplayDaltonizerLocked(userState);
+        updateDisplayInversionLocked(userState);
         updateMagnificationLocked(userState);
         updateSoftKeyboardShowModeLocked(userState);
         scheduleUpdateInputFilter(userState);
@@ -1539,7 +1558,6 @@
         somethingChanged |= readEnhancedWebAccessibilityEnabledChangedLocked(userState);
         somethingChanged |= readDisplayMagnificationEnabledSettingLocked(userState);
         somethingChanged |= readAutoclickEnabledSettingLocked(userState);
-        somethingChanged |= readDisplayColorAdjustmentSettingsLocked(userState);
 
         return somethingChanged;
     }
@@ -1602,18 +1620,6 @@
          return false;
     }
 
-    private boolean readDisplayColorAdjustmentSettingsLocked(UserState userState) {
-        final boolean displayAdjustmentsEnabled = DisplayAdjustmentUtils.hasAdjustments(mContext,
-                userState.mUserId);
-        if (displayAdjustmentsEnabled != userState.mHasDisplayColorAdjustment) {
-            userState.mHasDisplayColorAdjustment = displayAdjustmentsEnabled;
-            return true;
-        }
-        // If display adjustment is enabled, always assume there was a change in
-        // the adjustment settings.
-        return displayAdjustmentsEnabled;
-    }
-
     private boolean readHighTextContrastEnabledSettingLocked(UserState userState) {
         final boolean highTextContrastEnabled = Settings.Secure.getIntForUser(
                 mContext.getContentResolver(),
@@ -1730,8 +1736,12 @@
         return false;
     }
 
-    private void updateDisplayColorAdjustmentSettingsLocked(UserState userState) {
-        DisplayAdjustmentUtils.applyAdjustments(mContext, userState.mUserId);
+    private void updateDisplayDaltonizerLocked(UserState userState) {
+        DisplayAdjustmentUtils.applyDaltonizerSetting(mContext, userState.mUserId);
+    }
+
+    private void updateDisplayInversionLocked(UserState userState) {
+        DisplayAdjustmentUtils.applyInversionSetting(mContext, userState.mUserId);
     }
 
     private void updateMagnificationLocked(UserState userState) {
@@ -4201,7 +4211,6 @@
         public boolean mIsAutoclickEnabled;
         public boolean mIsPerformGesturesEnabled;
         public boolean mIsFilterKeyEventsEnabled;
-        public boolean mHasDisplayColorAdjustment;
         public boolean mAccessibilityFocusOnlyInActiveWindow;
 
         private Service mUiAutomationService;
@@ -4317,9 +4326,6 @@
         private final Uri mDisplayDaltonizerUri = Settings.Secure.getUriFor(
                 Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER);
 
-        private final Uri mDisplayColorMatrixUri = Settings.Secure.getUriFor(
-                Settings.Secure.ACCESSIBILITY_DISPLAY_COLOR_MATRIX);
-
         private final Uri mHighTextContrastUri = Settings.Secure.getUriFor(
                 Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED);
 
@@ -4351,8 +4357,6 @@
             contentResolver.registerContentObserver(
                     mDisplayDaltonizerUri, false, this, UserHandle.USER_ALL);
             contentResolver.registerContentObserver(
-                    mDisplayColorMatrixUri, false, this, UserHandle.USER_ALL);
-            contentResolver.registerContentObserver(
                     mHighTextContrastUri, false, this, UserHandle.USER_ALL);
             contentResolver.registerContentObserver(
                     mAccessibilitySoftKeyboardModeUri, false, this, UserHandle.USER_ALL);
@@ -4394,14 +4398,11 @@
                     if (readEnhancedWebAccessibilityEnabledChangedLocked(userState)) {
                         onUserStateChangedLocked(userState);
                     }
-                } else if (mDisplayInversionEnabledUri.equals(uri)
-                        || mDisplayDaltonizerEnabledUri.equals(uri)
+                } else if (mDisplayDaltonizerEnabledUri.equals(uri)
                         || mDisplayDaltonizerUri.equals(uri)) {
-                    if (readDisplayColorAdjustmentSettingsLocked(userState)) {
-                        updateDisplayColorAdjustmentSettingsLocked(userState);
-                    }
-                } else if (mDisplayColorMatrixUri.equals(uri)) {
-                    updateDisplayColorAdjustmentSettingsLocked(userState);
+                    updateDisplayDaltonizerLocked(userState);
+                } else if (mDisplayInversionEnabledUri.equals(uri)) {
+                    updateDisplayInversionLocked(userState);
                 } else if (mHighTextContrastUri.equals(uri)) {
                     if (readHighTextContrastEnabledSettingLocked(userState)) {
                         onUserStateChangedLocked(userState);
diff --git a/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java b/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java
index e1f3cd8..1532946 100644
--- a/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java
+++ b/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java
@@ -18,23 +18,23 @@
 
 import android.content.ContentResolver;
 import android.content.Context;
-import android.opengl.Matrix;
-import android.os.IBinder;
-import android.os.Parcel;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.provider.Settings;
-import android.util.Slog;
+import android.provider.Settings.Secure;
 import android.view.accessibility.AccessibilityManager;
 
+import com.android.server.LocalServices;
+import com.android.server.display.DisplayTransformManager;
+
 /**
  * Utility methods for performing accessibility display adjustments.
  */
 class DisplayAdjustmentUtils {
-    private static final String LOG_TAG = DisplayAdjustmentUtils.class.getSimpleName();
+
+    /** Default inversion mode for display color correction. */
+    private static final int DEFAULT_DISPLAY_DALTONIZER =
+            AccessibilityManager.DALTONIZER_CORRECT_DEUTERANOMALY;
 
     /** Matrix and offset used for converting color to gray-scale. */
-    private static final float[] GRAYSCALE_MATRIX = new float[] {
+    private static final float[] MATRIX_GRAYSCALE = new float[] {
         .2126f, .2126f, .2126f, 0,
         .7152f, .7152f, .7152f, 0,
         .0722f, .0722f, .0722f, 0,
@@ -48,150 +48,44 @@
      * represents a non-multiplied addition, see surfaceflinger's ProgramCache
      * for full implementation details.
      */
-    private static final float[] INVERSION_MATRIX_VALUE_ONLY = new float[] {
+    private static final float[] MATRIX_INVERT_COLOR = new float[] {
         0.402f, -0.598f, -0.599f, 0,
        -1.174f, -0.174f, -1.175f, 0,
        -0.228f, -0.228f,  0.772f, 0,
              1,       1,       1, 1
     };
 
-    /** Default inversion mode for display color correction. */
-    private static final int DEFAULT_DISPLAY_DALTONIZER =
-            AccessibilityManager.DALTONIZER_CORRECT_DEUTERANOMALY;
-
-    /**
-     * Returns whether the specified user with has any display color
-     * adjustments.
-     */
-    public static boolean hasAdjustments(Context context, int userId) {
+    public static void applyDaltonizerSetting(Context context, int userId) {
         final ContentResolver cr = context.getContentResolver();
+        final DisplayTransformManager dtm = LocalServices.getService(DisplayTransformManager.class);
 
-        if (Settings.Secure.getIntForUser(cr,
-                Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, userId) != 0) {
-            return true;
+        int daltonizerMode = AccessibilityManager.DALTONIZER_DISABLED;
+        if (Secure.getIntForUser(cr,
+                Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, userId) != 0) {
+            daltonizerMode = Secure.getIntForUser(cr,
+                    Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, DEFAULT_DISPLAY_DALTONIZER, userId);
         }
 
-        if (Settings.Secure.getIntForUser(cr,
-                Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, userId) != 0) {
-            return true;
+        float[] grayscaleMatrix = null;
+        if (daltonizerMode == AccessibilityManager.DALTONIZER_SIMULATE_MONOCHROMACY) {
+            // Monochromacy isn't supported by the native Daltonizer.
+            grayscaleMatrix = MATRIX_GRAYSCALE;
+            daltonizerMode = AccessibilityManager.DALTONIZER_DISABLED;
         }
-
-        return false;
+        dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_GRAYSCALE, grayscaleMatrix);
+        dtm.setDaltonizerMode(daltonizerMode);
     }
 
     /**
      * Applies the specified user's display color adjustments.
      */
-    public static void applyAdjustments(Context context, int userId) {
+    public static void applyInversionSetting(Context context, int userId) {
         final ContentResolver cr = context.getContentResolver();
-        float[] colorMatrix = null;
+        final DisplayTransformManager dtm = LocalServices.getService(DisplayTransformManager.class);
 
-        if (Settings.Secure.getIntForUser(cr,
-                Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, userId) != 0) {
-            colorMatrix = multiply(colorMatrix, INVERSION_MATRIX_VALUE_ONLY);
-        }
-
-        if (Settings.Secure.getIntForUser(cr,
-                Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0, userId) != 0) {
-            final int daltonizerMode = Settings.Secure.getIntForUser(cr,
-                    Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, DEFAULT_DISPLAY_DALTONIZER,
-                    userId);
-            // Monochromacy isn't supported by the native Daltonizer.
-            if (daltonizerMode == AccessibilityManager.DALTONIZER_SIMULATE_MONOCHROMACY) {
-                colorMatrix = multiply(colorMatrix, GRAYSCALE_MATRIX);
-                setDaltonizerMode(AccessibilityManager.DALTONIZER_DISABLED);
-            } else {
-                setDaltonizerMode(daltonizerMode);
-            }
-        } else {
-            setDaltonizerMode(AccessibilityManager.DALTONIZER_DISABLED);
-        }
-
-        String matrix = Settings.Secure.getStringForUser(cr,
-                Settings.Secure.ACCESSIBILITY_DISPLAY_COLOR_MATRIX, userId);
-        if (matrix != null) {
-            final float[] userMatrix = get4x4Matrix(matrix);
-            if (userMatrix != null) {
-                colorMatrix = multiply(colorMatrix, userMatrix);
-            }
-        }
-
-        setColorTransform(colorMatrix);
+        final boolean invertColors = Secure.getIntForUser(cr,
+                Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, userId) != 0;
+        dtm.setColorMatrix(DisplayTransformManager.LEVEL_COLOR_MATRIX_INVERT_COLOR,
+                invertColors ? MATRIX_INVERT_COLOR : null);
     }
-
-    private static float[] get4x4Matrix(String matrix) {
-        String[] strValues = matrix.split(",");
-        if (strValues.length != 16) {
-            return null;
-        }
-        float[] values = new float[strValues.length];
-        try {
-            for (int i = 0; i < values.length; i++) {
-                values[i] = Float.parseFloat(strValues[i]);
-            }
-        } catch (java.lang.NumberFormatException ex) {
-            return null;
-        }
-        return values;
-    }
-
-    private static float[] multiply(float[] matrix, float[] other) {
-        if (matrix == null) {
-            return other;
-        }
-        float[] result = new float[16];
-        Matrix.multiplyMM(result, 0, matrix, 0, other, 0);
-        return result;
-    }
-
-    /**
-     * Sets the surface flinger's Daltonization mode. This adjusts the color
-     * space to correct for or simulate various types of color blindness.
-     *
-     * @param mode new Daltonization mode
-     */
-    private static void setDaltonizerMode(int mode) {
-        try {
-            final IBinder flinger = ServiceManager.getService("SurfaceFlinger");
-            if (flinger != null) {
-                final Parcel data = Parcel.obtain();
-                data.writeInterfaceToken("android.ui.ISurfaceComposer");
-                data.writeInt(mode);
-                flinger.transact(1014, data, null, 0);
-                data.recycle();
-            }
-        } catch (RemoteException ex) {
-            Slog.e(LOG_TAG, "Failed to set Daltonizer mode", ex);
-        }
-    }
-
-    /**
-     * Sets the surface flinger's color transformation as a 4x4 matrix. If the
-     * matrix is null, color transformations are disabled.
-     *
-     * @param m the float array that holds the transformation matrix, or null to
-     *            disable transformation
-     */
-    private static void setColorTransform(float[] m) {
-        try {
-            final IBinder flinger = ServiceManager.getService("SurfaceFlinger");
-            if (flinger != null) {
-                final Parcel data = Parcel.obtain();
-                data.writeInterfaceToken("android.ui.ISurfaceComposer");
-                if (m != null) {
-                    data.writeInt(1);
-                    for (int i = 0; i < 16; i++) {
-                        data.writeFloat(m[i]);
-                    }
-                } else {
-                    data.writeInt(0);
-                }
-                flinger.transact(1015, data, null, 0);
-                data.recycle();
-            }
-        } catch (RemoteException ex) {
-            Slog.e(LOG_TAG, "Failed to set color transform", ex);
-        }
-    }
-
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/MotionEventInjector.java b/services/accessibility/java/com/android/server/accessibility/MotionEventInjector.java
index 800f0e1..8042ddb 100644
--- a/services/accessibility/java/com/android/server/accessibility/MotionEventInjector.java
+++ b/services/accessibility/java/com/android/server/accessibility/MotionEventInjector.java
@@ -40,7 +40,7 @@
  *
  * All methods except {@code injectEvents} must be called only from the main thread.
  */
-public class MotionEventInjector implements EventStreamTransformation {
+public class MotionEventInjector implements EventStreamTransformation, Handler.Callback {
     private static final String LOG_TAG = "MotionEventInjector";
     private static final int MESSAGE_SEND_MOTION_EVENT = 1;
     private static final int MESSAGE_INJECT_EVENTS = 2;
@@ -64,7 +64,14 @@
      * @param looper A looper on the main thread to use for dispatching new events
      */
     public MotionEventInjector(Looper looper) {
-        mHandler = new Handler(looper, new Callback());
+        mHandler = new Handler(looper, this);
+    }
+
+    /**
+     * @param handler A handler to post messages. Exposes internal state for testing only.
+     */
+    public MotionEventInjector(Handler handler) {
+        mHandler = handler;
     }
 
     /**
@@ -127,6 +134,29 @@
         mIsDestroyed = true;
     }
 
+    @Override
+    public boolean handleMessage(Message message) {
+        if (message.what == MESSAGE_INJECT_EVENTS) {
+            SomeArgs args = (SomeArgs) message.obj;
+            injectEventsMainThread((List<MotionEvent>) args.arg1,
+                    (IAccessibilityServiceClient) args.arg2, args.argi1);
+            args.recycle();
+            return true;
+        }
+        if (message.what != MESSAGE_SEND_MOTION_EVENT) {
+            Slog.e(LOG_TAG, "Unknown message: " + message.what);
+            return false;
+        }
+        MotionEvent motionEvent = (MotionEvent) message.obj;
+        sendMotionEventToNext(motionEvent, motionEvent,
+                WindowManagerPolicy.FLAG_PASS_TO_USER);
+        // If the message queue is now empty, then this gesture is complete
+        if (!mHandler.hasMessages(MESSAGE_SEND_MOTION_EVENT)) {
+            notifyService(true);
+        }
+        return true;
+    }
+
     private void injectEventsMainThread(List<MotionEvent> events,
             IAccessibilityServiceClient serviceInterface, int sequence) {
         if (mIsDestroyed) {
@@ -201,6 +231,7 @@
                     MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0);
             sendMotionEventToNext(cancelEvent, cancelEvent,
                     WindowManagerPolicy.FLAG_PASS_TO_USER);
+            mOpenGesturesInProgress.put(source, false);
         }
     }
 
@@ -210,7 +241,6 @@
             mHandler.removeMessages(MESSAGE_SEND_MOTION_EVENT);
             notifyService(false);
         }
-
     }
 
     private void notifyService(boolean success) {
@@ -222,28 +252,4 @@
                     + mServiceInterfaceForCurrentGesture, re);
         }
     }
-
-    private class Callback implements Handler.Callback {
-        @Override
-        public boolean handleMessage(Message message) {
-            if (message.what == MESSAGE_INJECT_EVENTS) {
-                SomeArgs args = (SomeArgs) message.obj;
-                injectEventsMainThread((List<MotionEvent>) args.arg1,
-                        (IAccessibilityServiceClient) args.arg2, args.argi1);
-                args.recycle();
-                return true;
-            }
-            if (message.what != MESSAGE_SEND_MOTION_EVENT) {
-                throw new IllegalArgumentException("Unknown message: " + message.what);
-            }
-            MotionEvent motionEvent = (MotionEvent) message.obj;
-            sendMotionEventToNext(motionEvent, motionEvent,
-                    WindowManagerPolicy.FLAG_PASS_TO_USER);
-            // If the message queue is now empty, then this gesture is complete
-            if (!mHandler.hasMessages(MESSAGE_SEND_MOTION_EVENT)) {
-                notifyService(true);
-            }
-            return true;
-        }
-    }
 }
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 2c33a83..47094be 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -1905,7 +1905,7 @@
         SomeArgs args = SomeArgs.obtain();
         args.arg1 = widget.host;
         args.arg2 = widget.host.callbacks;
-        args.arg3 = updateViews.clone();
+        args.arg3 = (updateViews != null) ? updateViews.clone() : null;
         args.arg4 = requestTime;
         args.argi1 = widget.appWidgetId;
 
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index e6f99c1..497eac9 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -234,6 +234,7 @@
     private static final int MSG_WIDGET_BROADCAST = 13;
     private static final int MSG_RUN_FULL_TRANSPORT_BACKUP = 14;
     private static final int MSG_REQUEST_BACKUP = 15;
+    private static final int MSG_SCHEDULE_BACKUP_PACKAGE = 16;
 
     // backup task state machine tick
     static final int MSG_BACKUP_RESTORE_STEP = 20;
@@ -796,7 +797,7 @@
                                 queue, oldJournal, null, null, false);
                         Message pbtMessage = obtainMessage(MSG_BACKUP_RESTORE_STEP, pbt);
                         sendMessage(pbtMessage);
-                    } catch (RemoteException e) {
+                    } catch (Exception e) {
                         // unable to ask the transport its dir name -- transient failure, since
                         // the above check succeeded.  Try again next time.
                         Slog.e(TAG, "Transport became unavailable attempting backup");
@@ -939,7 +940,7 @@
                     }
                     if (sets == null) EventLog.writeEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE);
                 } catch (Exception e) {
-                    Slog.e(TAG, "Error from transport getting set list");
+                    Slog.e(TAG, "Error from transport getting set list: " + e.getMessage());
                 } finally {
                     if (params.observer != null) {
                         try {
@@ -947,7 +948,7 @@
                         } catch (RemoteException re) {
                             Slog.e(TAG, "Unable to report listing to observer");
                         } catch (Exception e) {
-                            Slog.e(TAG, "Restore observer threw", e);
+                            Slog.e(TAG, "Restore observer threw: " + e.getMessage());
                         }
                     }
 
@@ -1037,6 +1038,16 @@
                 sendMessage(pbtMessage);
                 break;
             }
+
+            case MSG_SCHEDULE_BACKUP_PACKAGE:
+            {
+                String pkgName = (String)msg.obj;
+                if (MORE_DEBUG) {
+                    Slog.d(TAG, "MSG_SCHEDULE_BACKUP_PACKAGE " + pkgName);
+                }
+                dataChangedImpl(pkgName);
+                break;
+            }
             }
         }
     }
@@ -1216,7 +1227,7 @@
 
         // Now that we know about valid backup participants, parse any
         // leftover journal files into the pending backup set
-        parseLeftoverJournals();
+        mBackupHandler.post(() -> parseLeftoverJournals());
 
         // Power management
         mWakelock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*backup*");
@@ -1759,8 +1770,10 @@
                 }
                 return; // done; don't fall through to the error case
             }
-        } catch (RemoteException e) {
+        } catch (Exception e) {
             // transport threw when asked its name; fall through to the lookup-failed case
+            Slog.e(TAG, "Transport " + transportName + " failed to report name: "
+                    + e.getMessage());
         }
 
         // The named transport doesn't exist or threw.  This operation is
@@ -1848,7 +1861,7 @@
                             System.currentTimeMillis() + delay, mRunInitIntent);
                 }
             }
-        } catch (RemoteException e) {
+        } catch (Exception e) {
             // the transport threw when asked its file naming prefs; declare it invalid
             Slog.e(TAG, "Unable to register transport as " + name);
             mTransportNames.remove(component);
@@ -2054,8 +2067,9 @@
                 IBackupTransport transport = IBackupTransport.Stub.asInterface(service);
                 registerTransport(transport.name(), name, transport);
                 EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE, name, 1);
-            } catch (RemoteException e) {
-                Slog.e(TAG, "Unable to register transport " + component);
+            } catch (Exception e) {
+                Slog.e(TAG, "Unable to register transport " + component
+                        + ": " + e.getMessage());
                 EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE, name, 0);
             }
         }
@@ -2161,7 +2175,7 @@
                 int uid = pkg.applicationInfo.uid;
                 HashSet<String> set = mBackupParticipants.get(uid);
                 if (set == null) {
-                    set = new HashSet<String>();
+                    set = new HashSet<>();
                     mBackupParticipants.put(uid, set);
                 }
                 set.add(pkg.packageName);
@@ -2169,7 +2183,9 @@
 
                 // Schedule a backup for it on general principles
                 if (MORE_DEBUG) Slog.i(TAG, "Scheduling backup for new app " + pkg.packageName);
-                dataChangedImpl(pkg.packageName);
+                Message msg = mBackupHandler
+                        .obtainMessage(MSG_SCHEDULE_BACKUP_PACKAGE, pkg.packageName);
+                mBackupHandler.sendMessage(msg);
             }
         }
     }
@@ -2516,8 +2532,8 @@
         String dirName;
         try {
             dirName = transport.transportDirName();
-        } catch (RemoteException e) {
-            Slog.e(TAG, "Transport became unavailable while attempting backup");
+        } catch (Exception e) {
+            Slog.e(TAG, "Transport unavailable while attempting backup: " + e.getMessage());
             sendBackupFinished(observer, BackupManager.ERROR_TRANSPORT_ABORTED);
             return BackupManager.ERROR_TRANSPORT_ABORTED;
         }
@@ -2961,9 +2977,10 @@
                 try {
                     mCurrentToken = mTransport.getCurrentRestoreSet();
                     writeRestoreTokens();
-                } catch (RemoteException e) {
+                } catch (Exception e) {
                     // nothing for it at this point, unfortunately, but this will be
                     // recorded the next time we fully succeed.
+                    Slog.e(TAG, "Transport threw reporting restore set: " + e.getMessage());
                     addBackupTrace("transport threw returning token");
                 }
             }
@@ -2988,7 +3005,7 @@
                             }
                         }
                     } catch (Exception e) {
-                        Slog.w(TAG, "Failed to query transport name heading for init", e);
+                        Slog.w(TAG, "Failed to query transport name for init: " + e.getMessage());
                         // swallow it and proceed; we don't rely on this
                     }
                     clearMetadata();
@@ -3354,8 +3371,8 @@
                     try {
                         long quota = mTransport.getBackupQuota(mCurrentPackage.packageName, false);
                         mAgentBinder.doQuotaExceeded(size, quota);
-                    } catch (RemoteException e) {
-                        Slog.e(TAG, "Unable to contact backup agent for quota exceeded");
+                    } catch (Exception e) {
+                        Slog.e(TAG, "Unable to notify about quota exceeded: " + e.getMessage());
                     }
                 }
                 nextState = (mQueue.isEmpty()) ? BackupState.FINAL : BackupState.RUNNING_QUEUE;
@@ -3393,7 +3410,7 @@
             try {
                 delay = mTransport.requestBackupTime();
             } catch (Exception e) {
-                Slog.w(TAG, "Unable to contact transport for recommended backoff");
+                Slog.w(TAG, "Unable to contact transport for recommended backoff: " + e.getMessage());
                 delay = 0;  // use the scheduler's default
             }
             KeyValueBackupJob.schedule(mContext, delay);
@@ -4311,7 +4328,10 @@
                 Slog.e(TAG, "Internal exception during full backup", e);
             } finally {
                 try {
-                    if (out != null) out.close();
+                    if (out != null) {
+                        out.flush();
+                        out.close();
+                    }
                     mOutputFile.close();
                 } catch (IOException e) {
                     /* nothing we can do about this */
@@ -4649,6 +4669,13 @@
                     }
                     cleanUpPipes(transportPipes);
                     cleanUpPipes(enginePipes);
+                    if (currentPackage.applicationInfo != null) {
+                        Slog.i(TAG, "Unbinding agent in " + packageName);
+                        addBackupTrace("unbinding " + packageName);
+                        try {
+                            mActivityManager.unbindBackupAgent(currentPackage.applicationInfo);
+                        } catch (RemoteException e) { /* can't happen; activity manager is local */ }
+                    }
                 }
             } catch (Exception e) {
                 backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED;
@@ -4984,7 +5011,7 @@
                 return false;
             }
         } catch (Exception e) {
-            Slog.w(TAG, "Unable to contact transport");
+            Slog.w(TAG, "Unable to get transport name: " + e.getMessage());
             return false;
         }
 
@@ -5474,11 +5501,11 @@
 
                         // If the policy is satisfied, go ahead and set up to pipe the
                         // data to the agent.
-                        if (DEBUG && okay && mAgent != null) {
+                        if (MORE_DEBUG && okay && mAgent != null) {
                             Slog.i(TAG, "Reusing existing agent instance");
                         }
                         if (okay && mAgent == null) {
-                            if (DEBUG) Slog.d(TAG, "Need to launch agent for " + pkg);
+                            if (MORE_DEBUG) Slog.d(TAG, "Need to launch agent for " + pkg);
 
                             try {
                                 mTargetApp = mPackageManager.getApplicationInfo(pkg, 0);
@@ -5680,16 +5707,21 @@
         }
 
         void tearDownPipes() {
-            if (mPipes != null) {
-                try {
-                    mPipes[0].close();
-                    mPipes[0] = null;
-                    mPipes[1].close();
-                    mPipes[1] = null;
-                } catch (IOException e) {
-                    Slog.w(TAG, "Couldn't close agent pipes", e);
+            // Teardown might arise from the inline restore processing or from the asynchronous
+            // timeout mechanism, and these might race.  Make sure we don't try to close and
+            // null out the pipes twice.
+            synchronized (this) {
+                if (mPipes != null) {
+                    try {
+                        mPipes[0].close();
+                        mPipes[0] = null;
+                        mPipes[1].close();
+                        mPipes[1] = null;
+                    } catch (IOException e) {
+                        Slog.w(TAG, "Couldn't close agent pipes", e);
+                    }
+                    mPipes = null;
                 }
-                mPipes = null;
             }
         }
 
@@ -8208,9 +8240,9 @@
                 // Success; cache the metadata and continue as expected with the
                 // next state already enqueued
 
-            } catch (RemoteException e) {
+            } catch (Exception e) {
                 // If we lost the transport at any time, halt
-                Slog.e(TAG, "Unable to contact transport for restore");
+                Slog.e(TAG, "Unable to contact transport for restore: " + e.getMessage());
                 mStatus = BackupTransport.TRANSPORT_ERROR;
                 mBackupHandler.removeMessages(MSG_BACKUP_RESTORE_STEP, this);
                 executeNextState(UnifiedRestoreState.FINAL);
@@ -8307,8 +8339,9 @@
                     nextState = UnifiedRestoreState.RUNNING_QUEUE;
                     return;
                 }
-            } catch (RemoteException e) {
-                Slog.e(TAG, "Can't get next target from transport; ending restore");
+            } catch (Exception e) {
+                Slog.e(TAG, "Can't get next restore target from transport; halting: "
+                        + e.getMessage());
                 EventLog.writeEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE);
                 nextState = UnifiedRestoreState.FINAL;
                 return;
@@ -8618,11 +8651,11 @@
                     EventLog.writeEvent(EventLogTags.RESTORE_AGENT_FAILURE,
                             mCurrentPackage.packageName, "I/O error on pipes");
                     status = BackupTransport.AGENT_ERROR;
-                } catch (RemoteException e) {
-                    // The transport went away; terminate the whole operation.  Closing
+                } catch (Exception e) {
+                    // The transport threw; terminate the whole operation.  Closing
                     // the sockets will wake up the engine and it will then tidy up the
                     // remote end.
-                    Slog.e(TAG, "Transport failed during restore");
+                    Slog.e(TAG, "Transport failed during restore: " + e.getMessage());
                     EventLog.writeEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE);
                     status = BackupTransport.TRANSPORT_ERROR;
                 } finally {
@@ -8660,9 +8693,10 @@
                         // level is immaterial; we need to tell the transport to bail
                         try {
                             mTransport.abortFullRestore();
-                        } catch (RemoteException e) {
+                        } catch (Exception e) {
                             // transport itself is dead; make sure we handle this as a
                             // fatal error
+                            Slog.e(TAG, "Transport threw from abortFullRestore: " + e.getMessage());
                             status = BackupTransport.TRANSPORT_ERROR;
                         }
 
@@ -9010,16 +9044,15 @@
                 // Tell the transport to remove all the persistent storage for the app
                 // TODO - need to handle failures
                 mTransport.clearBackupData(mPackage);
-            } catch (RemoteException e) {
-                // can't happen; the transport is local
             } catch (Exception e) {
-                Slog.e(TAG, "Transport threw attempting to clear data for " + mPackage);
+                Slog.e(TAG, "Transport threw clearing data for " + mPackage + ": " + e.getMessage());
             } finally {
                 try {
                     // TODO - need to handle failures
                     mTransport.finishBackup();
-                } catch (RemoteException e) {
-                    // can't happen; the transport is local
+                } catch (Exception e) {
+                    // Nothing we can do here, alas
+                    Slog.e(TAG, "Unable to mark clear operation finished: " + e.getMessage());
                 }
 
                 // Last but not least, release the cpu
@@ -9078,8 +9111,6 @@
                                 System.currentTimeMillis() + delay, mRunInitIntent);
                     }
                 }
-            } catch (RemoteException e) {
-                // can't happen; the transports are local
             } catch (Exception e) {
                 Slog.e(TAG, "Unexpected error performing init", e);
             } finally {
@@ -9767,8 +9798,9 @@
                     if (MORE_DEBUG) Slog.d(TAG, "getConfigurationIntent() returning config intent "
                             + intent);
                     return intent;
-                } catch (RemoteException e) {
+                } catch (Exception e) {
                     /* fall through to return null */
+                    Slog.e(TAG, "Unable to get configuration intent from transport: " + e.getMessage());
                 }
             }
         }
@@ -9792,8 +9824,9 @@
                     final String text = transport.currentDestinationString();
                     if (MORE_DEBUG) Slog.d(TAG, "getDestinationString() returning " + text);
                     return text;
-                } catch (RemoteException e) {
+                } catch (Exception e) {
                     /* fall through to return null */
+                    Slog.e(TAG, "Unable to get string from transport: " + e.getMessage());
                 }
             }
         }
@@ -9814,8 +9847,9 @@
                     if (MORE_DEBUG) Slog.d(TAG, "getDataManagementIntent() returning intent "
                             + intent);
                     return intent;
-                } catch (RemoteException e) {
+                } catch (Exception e) {
                     /* fall through to return null */
+                    Slog.e(TAG, "Unable to get management intent from transport: " + e.getMessage());
                 }
             }
         }
@@ -9836,8 +9870,9 @@
                     final String text = transport.dataManagementLabel();
                     if (MORE_DEBUG) Slog.d(TAG, "getDataManagementLabel() returning " + text);
                     return text;
-                } catch (RemoteException e) {
+                } catch (Exception e) {
                     /* fall through to return null */
+                    Slog.e(TAG, "Unable to get management label from transport: " + e.getMessage());
                 }
             }
         }
@@ -9930,9 +9965,9 @@
                 msg.obj = new RestoreParams(transport, dirName, null,
                         restoreSet, packageName, token);
                 mBackupHandler.sendMessage(msg);
-            } catch (RemoteException e) {
-                // Binding to the transport broke; back off and proceed with the installation.
-                Slog.e(TAG, "Unable to contact transport");
+            } catch (Exception e) {
+                // Calling into the transport broke; back off and proceed with the installation.
+                Slog.e(TAG, "Unable to contact transport: " + e.getMessage());
                 skip = true;
             }
         }
@@ -10053,8 +10088,8 @@
                 try {
                     return transport.isAppEligibleForBackup(packageInfo,
                         appGetsFullBackup(packageInfo));
-                } catch (RemoteException e) {
-                    Slog.e(TAG, "Unable to contact transport");
+                } catch (Exception e) {
+                    Slog.e(TAG, "Unable to ask about eligibility: " + e.getMessage());
                 }
             }
             // If transport is not present we couldn't tell that the package is not eligible.
@@ -10156,9 +10191,9 @@
             String dirName;
             try {
                 dirName = mRestoreTransport.transportDirName();
-            } catch (RemoteException e) {
+            } catch (Exception e) {
                 // Transport went AWOL; fail.
-                Slog.e(TAG, "Unable to contact transport for restore");
+                Slog.e(TAG, "Unable to get transport dir for restore: " + e.getMessage());
                 return -1;
             }
 
@@ -10238,9 +10273,9 @@
             String dirName;
             try {
                 dirName = mRestoreTransport.transportDirName();
-            } catch (RemoteException e) {
+            } catch (Exception e) {
                 // Transport went AWOL; fail.
-                Slog.e(TAG, "Unable to contact transport for restore");
+                Slog.e(TAG, "Unable to get transport name for restoreSome: " + e.getMessage());
                 return -1;
             }
 
@@ -10328,9 +10363,9 @@
                 String dirName;
                 try {
                     dirName = mRestoreTransport.transportDirName();
-                } catch (RemoteException e) {
+                } catch (Exception e) {
                     // Transport went AWOL; fail.
-                    Slog.e(TAG, "Unable to contact transport for restore");
+                    Slog.e(TAG, "Unable to get transport dir for restorePackage: " + e.getMessage());
                     return -1;
                 }
 
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 312553a..4dd88b2 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -2547,7 +2547,9 @@
                 } else {
                     // Just in case -- even though no wakeup flag was set, make sure
                     // we have updated the kernel to the next alarm time.
-                    rescheduleKernelAlarmsLocked();
+                    synchronized (mLock) {
+                        rescheduleKernelAlarmsLocked();
+                    }
                 }
             }
         }
diff --git a/services/core/java/com/android/server/AnyMotionDetector.java b/services/core/java/com/android/server/AnyMotionDetector.java
index a8ae914d..f93c716 100644
--- a/services/core/java/com/android/server/AnyMotionDetector.java
+++ b/services/core/java/com/android/server/AnyMotionDetector.java
@@ -70,6 +70,9 @@
     /** The interval between accelerometer orientation measurements. */
     private static final long ORIENTATION_MEASUREMENT_INTERVAL_MILLIS = 5000;
 
+    /** The maximum duration we will hold a wakelock to determine stationary status. */
+    private static final long WAKELOCK_TIMEOUT_MILLIS = 30000;
+
     /**
      * The duration in milliseconds after which an orientation measurement is considered
      * too stale to be used.
@@ -141,25 +144,30 @@
                 mCurrentGravityVector = null;
                 mPreviousGravityVector = null;
                 mWakeLock.acquire();
+                Message wakelockTimeoutMsg = Message.obtain(mHandler, mWakelockTimeout);
+                mHandler.sendMessageDelayed(wakelockTimeoutMsg, WAKELOCK_TIMEOUT_MILLIS);
                 startOrientationMeasurementLocked();
             }
         }
     }
 
     public void stop() {
-        if (mState == STATE_ACTIVE) {
-            synchronized (mLock) {
+        synchronized (mLock) {
+            if (mState == STATE_ACTIVE) {
                 mState = STATE_INACTIVE;
                 if (DEBUG) Slog.d(TAG, "Moved from STATE_ACTIVE to STATE_INACTIVE.");
-                if (mMeasurementInProgress) {
-                    mMeasurementInProgress = false;
-                    mSensorManager.unregisterListener(mListener);
-                }
-                mHandler.removeCallbacks(mMeasurementTimeout);
-                mHandler.removeCallbacks(mSensorRestart);
-                mCurrentGravityVector = null;
-                mPreviousGravityVector = null;
+            }
+            if (mMeasurementInProgress) {
+                mMeasurementInProgress = false;
+                mSensorManager.unregisterListener(mListener);
+            }
+            mHandler.removeCallbacks(mMeasurementTimeout);
+            mHandler.removeCallbacks(mSensorRestart);
+            mCurrentGravityVector = null;
+            mPreviousGravityVector = null;
+            if (mWakeLock.isHeld()) {
                 mWakeLock.release();
+                mHandler.removeCallbacks(mWakelockTimeout);
             }
         }
     }
@@ -173,9 +181,8 @@
                 mMeasurementInProgress = true;
                 mRunningStats.reset();
             }
-            Message msg = Message.obtain(mHandler, mMeasurementTimeout);
-            msg.setAsynchronous(true);
-            mHandler.sendMessageDelayed(msg, ACCELEROMETER_DATA_TIMEOUT_MILLIS);
+            Message measurementTimeoutMsg = Message.obtain(mHandler, mMeasurementTimeout);
+            mHandler.sendMessageDelayed(measurementTimeoutMsg, ACCELEROMETER_DATA_TIMEOUT_MILLIS);
         }
     }
 
@@ -186,10 +193,12 @@
         if (mMeasurementInProgress) {
             mSensorManager.unregisterListener(mListener);
             mHandler.removeCallbacks(mMeasurementTimeout);
-            long detectionEndTime = SystemClock.elapsedRealtime();
             mMeasurementInProgress = false;
             mPreviousGravityVector = mCurrentGravityVector;
             mCurrentGravityVector = mRunningStats.getRunningAverage();
+            if (mRunningStats.getSampleCount() == 0) {
+                Slog.w(TAG, "No accelerometer data acquired for orientation measurement.");
+            }
             if (DEBUG) {
                 Slog.d(TAG, "mRunningStats = " + mRunningStats.toString());
                 String currentGravityVectorString = (mCurrentGravityVector == null) ?
@@ -203,7 +212,10 @@
             status = getStationaryStatus();
             if (DEBUG) Slog.d(TAG, "getStationaryStatus() returned " + status);
             if (status != RESULT_UNKNOWN) {
-                mWakeLock.release();
+                if (mWakeLock.isHeld()) {
+                    mWakeLock.release();
+                    mHandler.removeCallbacks(mWakelockTimeout);
+                }
                 if (DEBUG) {
                     Slog.d(TAG, "Moved from STATE_ACTIVE to STATE_INACTIVE. status = " + status);
                 }
@@ -217,7 +229,6 @@
                         " scheduled in " + ORIENTATION_MEASUREMENT_INTERVAL_MILLIS +
                         " milliseconds.");
                 Message msg = Message.obtain(mHandler, mSensorRestart);
-                msg.setAsynchronous(true);
                 mHandler.sendMessageDelayed(msg, ORIENTATION_MEASUREMENT_INTERVAL_MILLIS);
             }
         }
@@ -271,6 +282,7 @@
                 }
             }
             if (status != RESULT_UNKNOWN) {
+                mHandler.removeCallbacks(mWakelockTimeout);
                 mCallback.onAnyMotionResult(status);
             }
         }
@@ -290,20 +302,30 @@
     };
 
     private final Runnable mMeasurementTimeout = new Runnable() {
-      @Override
-      public void run() {
-          int status = RESULT_UNKNOWN;
-          synchronized (mLock) {
-              if (DEBUG) Slog.i(TAG, "mMeasurementTimeout. Failed to collect sufficient accel " +
+        @Override
+        public void run() {
+            int status = RESULT_UNKNOWN;
+            synchronized (mLock) {
+                if (DEBUG) Slog.i(TAG, "mMeasurementTimeout. Failed to collect sufficient accel " +
                       "data within " + ACCELEROMETER_DATA_TIMEOUT_MILLIS + " ms. Stopping " +
                       "orientation measurement.");
-              status = stopOrientationMeasurementLocked();
-          }
-          if (status != RESULT_UNKNOWN) {
-              mCallback.onAnyMotionResult(status);
-          }
-      }
-  };
+                status = stopOrientationMeasurementLocked();
+            }
+            if (status != RESULT_UNKNOWN) {
+                mHandler.removeCallbacks(mWakelockTimeout);
+                mCallback.onAnyMotionResult(status);
+            }
+        }
+    };
+
+    private final Runnable mWakelockTimeout = new Runnable() {
+        @Override
+        public void run() {
+            synchronized (mLock) {
+                stop();
+            }
+        }
+    };
 
     /**
      * A timestamped three dimensional vector and some vector operations.
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index ba917b5..c32fc78 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -303,7 +303,7 @@
 
     /**
      * indicates a timeout period is over - check if we had a network yet or not
-     * and if not, call the timeout calback (but leave the request live until they
+     * and if not, call the timeout callback (but leave the request live until they
      * cancel it.
      * includes a NetworkRequestInfo
      */
@@ -380,6 +380,16 @@
      */
     private static final int EVENT_REGISTER_NETWORK_LISTENER_WITH_INTENT = 31;
 
+    /**
+     * Indicates a caller has requested to have its callback invoked with
+     * the latest LinkProperties or NetworkCapabilities.
+     *
+     * arg1 = UID of caller
+     * obj  = NetworkRequest
+     */
+    private static final int EVENT_REQUEST_LINKPROPERTIES  = 32;
+    private static final int EVENT_REQUEST_NETCAPABILITIES = 33;
+
     /** Handler thread used for both of the handlers below. */
     @VisibleForTesting
     protected final HandlerThread mHandlerThread;
@@ -439,6 +449,11 @@
     private static final int MAX_NETWORK_REQUEST_LOGS = 20;
     private final LocalLog mNetworkRequestInfoLogs = new LocalLog(MAX_NETWORK_REQUEST_LOGS);
 
+    // NetworkInfo blocked and unblocked String log entries
+    // TODO: consider reducing memory usage. Each log line is ~40 2B chars, for a total of ~8kB.
+    private static final int MAX_NETWORK_INFO_LOGS = 100;
+    private final LocalLog mNetworkInfoBlockingLogs = new LocalLog(MAX_NETWORK_INFO_LOGS);
+
     // Array of <Network,ReadOnlyLocalLogs> tracking network validation and results
     private static final int MAX_VALIDATION_LOGS = 10;
     private static class ValidationLog {
@@ -1003,7 +1018,9 @@
     }
 
     private void maybeLogBlockedNetworkInfo(NetworkInfo ni, int uid) {
-        if (ni == null || !LOGD_BLOCKED_NETWORKINFO) return;
+        if (ni == null || !LOGD_BLOCKED_NETWORKINFO) {
+            return;
+        }
         boolean removed = false;
         boolean added = false;
         synchronized (mBlockedAppUids) {
@@ -1013,8 +1030,13 @@
                 removed = true;
             }
         }
-        if (added) log("Returning blocked NetworkInfo to uid=" + uid);
-        else if (removed) log("Returning unblocked NetworkInfo to uid=" + uid);
+        if (added) {
+            log("Returning blocked NetworkInfo to uid=" + uid);
+            mNetworkInfoBlockingLogs.log("BLOCKED " + uid);
+        } else if (removed) {
+            log("Returning unblocked NetworkInfo to uid=" + uid);
+            mNetworkInfoBlockingLogs.log("UNBLOCKED " + uid);
+        }
     }
 
     /**
@@ -2017,6 +2039,12 @@
             pw.increaseIndent();
             mNetworkRequestInfoLogs.reverseDump(fd, pw, args);
             pw.decreaseIndent();
+
+            pw.println();
+            pw.println("mNetworkInfoBlockingLogs (most recent first):");
+            pw.increaseIndent();
+            mNetworkInfoBlockingLogs.reverseDump(fd, pw, args);
+            pw.decreaseIndent();
         }
     }
 
@@ -2258,7 +2286,7 @@
                 if (VDBG) log("NetworkFactory connected");
                 // A network factory has connected.  Send it all current NetworkRequests.
                 for (NetworkRequestInfo nri : mNetworkRequests.values()) {
-                    if (!nri.request.isRequest()) continue;
+                    if (nri.request.isListen()) continue;
                     NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
                     ac.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK,
                             (nai != null ? nai.getCurrentScore() : 0), 0, nri.request);
@@ -2400,7 +2428,7 @@
     private void handleRegisterNetworkRequest(NetworkRequestInfo nri) {
         mNetworkRequests.put(nri.request, nri);
         mNetworkRequestInfoLogs.log("REGISTER " + nri);
-        if (!nri.request.isRequest()) {
+        if (nri.request.isListen()) {
             for (NetworkAgentInfo network : mNetworkAgentInfos.values()) {
                 if (nri.request.networkCapabilities.hasSignalStrength() &&
                         network.satisfiesImmutableCapabilitiesOf(nri.request)) {
@@ -2450,106 +2478,146 @@
         return true;
     }
 
-    private void handleReleaseNetworkRequest(NetworkRequest request, int callingUid) {
-        NetworkRequestInfo nri = mNetworkRequests.get(request);
+    private NetworkRequestInfo getNriForAppRequest(
+            NetworkRequest request, int callingUid, String requestedOperation) {
+        final NetworkRequestInfo nri = mNetworkRequests.get(request);
+
         if (nri != null) {
             if (Process.SYSTEM_UID != callingUid && nri.mUid != callingUid) {
-                if (DBG) log("Attempt to release unowned NetworkRequest " + request);
-                return;
+                log(String.format("UID %d attempted to %s for unowned request %s",
+                        callingUid, requestedOperation, nri));
+                return null;
             }
-            if (VDBG || (DBG && nri.request.isRequest())) log("releasing " + request);
-            nri.unlinkDeathRecipient();
-            mNetworkRequests.remove(request);
-            synchronized (mUidToNetworkRequestCount) {
-                int requests = mUidToNetworkRequestCount.get(nri.mUid, 0);
-                if (requests < 1) {
-                    Slog.wtf(TAG, "BUG: too small request count " + requests + " for UID " +
-                            nri.mUid);
-                } else if (requests == 1) {
-                    mUidToNetworkRequestCount.removeAt(
-                            mUidToNetworkRequestCount.indexOfKey(nri.mUid));
+        }
+
+        return nri;
+    }
+
+    private void handleRequestCallbackUpdate(NetworkRequest request, int callingUid,
+            String description, int callbackType) {
+        final NetworkRequestInfo nri = getNriForAppRequest(request, callingUid, description);
+        if (nri == null) return;
+
+        final NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
+        // The network that is satisfying this request may have changed since
+        // the application requested the update.
+        //
+        // - If the request is no longer satisfied, don't send any updates.
+        // - If the request is satisfied by a different network, it is the
+        //   caller's responsibility to check that the Network object in the
+        //   callback matches the network that was returned in the last
+        //   onAvailable() callback for this request.
+        if (nai == null) return;
+        callCallbackForRequest(nri, nai, callbackType, 0);
+    }
+
+    private void handleRequestLinkProperties(NetworkRequest request, int callingUid) {
+        handleRequestCallbackUpdate(request, callingUid,
+                "request LinkProperties", ConnectivityManager.CALLBACK_IP_CHANGED);
+    }
+
+    private void handleRequestNetworkCapabilities(NetworkRequest request, int callingUid) {
+        handleRequestCallbackUpdate(request, callingUid,
+                "request NetworkCapabilities", ConnectivityManager.CALLBACK_CAP_CHANGED);
+    }
+
+    private void handleReleaseNetworkRequest(NetworkRequest request, int callingUid) {
+        final NetworkRequestInfo nri = getNriForAppRequest(
+                request, callingUid, "release NetworkRequest");
+        if (nri == null) return;
+
+        if (VDBG || (DBG && nri.request.isRequest())) log("releasing " + request);
+        nri.unlinkDeathRecipient();
+        mNetworkRequests.remove(request);
+        synchronized (mUidToNetworkRequestCount) {
+            int requests = mUidToNetworkRequestCount.get(nri.mUid, 0);
+            if (requests < 1) {
+                Slog.wtf(TAG, "BUG: too small request count " + requests + " for UID " +
+                        nri.mUid);
+            } else if (requests == 1) {
+                mUidToNetworkRequestCount.removeAt(
+                        mUidToNetworkRequestCount.indexOfKey(nri.mUid));
+            } else {
+                mUidToNetworkRequestCount.put(nri.mUid, requests - 1);
+            }
+        }
+        mNetworkRequestInfoLogs.log("RELEASE " + nri);
+        if (nri.request.isRequest()) {
+            boolean wasKept = false;
+            NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
+            if (nai != null) {
+                nai.removeRequest(nri.request.requestId);
+                if (VDBG) {
+                    log(" Removing from current network " + nai.name() +
+                            ", leaving " + nai.numNetworkRequests() + " requests.");
+                }
+                // If there are still lingered requests on this network, don't tear it down,
+                // but resume lingering instead.
+                updateLingerState(nai, SystemClock.elapsedRealtime());
+                if (unneeded(nai)) {
+                    if (DBG) log("no live requests for " + nai.name() + "; disconnecting");
+                    teardownUnneededNetwork(nai);
                 } else {
-                    mUidToNetworkRequestCount.put(nri.mUid, requests - 1);
+                    wasKept = true;
+                }
+                mNetworkForRequestId.remove(nri.request.requestId);
+            }
+
+            // TODO: remove this code once we know that the Slog.wtf is never hit.
+            //
+            // Find all networks that are satisfying this request and remove the request
+            // from their request lists.
+            // TODO - it's my understanding that for a request there is only a single
+            // network satisfying it, so this loop is wasteful
+            for (NetworkAgentInfo otherNai : mNetworkAgentInfos.values()) {
+                if (otherNai.isSatisfyingRequest(nri.request.requestId) && otherNai != nai) {
+                    Slog.wtf(TAG, "Request " + nri.request + " satisfied by " +
+                            otherNai.name() + ", but mNetworkAgentInfos says " +
+                            (nai != null ? nai.name() : "null"));
                 }
             }
-            mNetworkRequestInfoLogs.log("RELEASE " + nri);
-            if (nri.request.isRequest()) {
-                boolean wasKept = false;
-                NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
-                if (nai != null) {
-                    nai.removeRequest(nri.request.requestId);
-                    if (VDBG) {
-                        log(" Removing from current network " + nai.name() +
-                                ", leaving " + nai.numNetworkRequests() + " requests.");
-                    }
-                    // If there are still lingered requests on this network, don't tear it down,
-                    // but resume lingering instead.
-                    updateLingerState(nai, SystemClock.elapsedRealtime());
-                    if (unneeded(nai)) {
-                        if (DBG) log("no live requests for " + nai.name() + "; disconnecting");
-                        teardownUnneededNetwork(nai);
-                    } else {
-                        wasKept = true;
-                    }
-                    mNetworkForRequestId.remove(nri.request.requestId);
-                }
 
-                // TODO: remove this code once we know that the Slog.wtf is never hit.
-                //
-                // Find all networks that are satisfying this request and remove the request
-                // from their request lists.
-                // TODO - it's my understanding that for a request there is only a single
-                // network satisfying it, so this loop is wasteful
-                for (NetworkAgentInfo otherNai : mNetworkAgentInfos.values()) {
-                    if (otherNai.isSatisfyingRequest(nri.request.requestId) && otherNai != nai) {
-                        Slog.wtf(TAG, "Request " + nri.request + " satisfied by " +
-                                otherNai.name() + ", but mNetworkAgentInfos says " +
-                                (nai != null ? nai.name() : "null"));
-                    }
-                }
-
-                // Maintain the illusion.  When this request arrived, we might have pretended
-                // that a network connected to serve it, even though the network was already
-                // connected.  Now that this request has gone away, we might have to pretend
-                // that the network disconnected.  LegacyTypeTracker will generate that
-                // phantom disconnect for this type.
-                if (nri.request.legacyType != TYPE_NONE && nai != null) {
-                    boolean doRemove = true;
-                    if (wasKept) {
-                        // check if any of the remaining requests for this network are for the
-                        // same legacy type - if so, don't remove the nai
-                        for (int i = 0; i < nai.numNetworkRequests(); i++) {
-                            NetworkRequest otherRequest = nai.requestAt(i);
-                            if (otherRequest.legacyType == nri.request.legacyType &&
-                                    otherRequest.isRequest()) {
-                                if (DBG) log(" still have other legacy request - leaving");
-                                doRemove = false;
-                            }
+            // Maintain the illusion.  When this request arrived, we might have pretended
+            // that a network connected to serve it, even though the network was already
+            // connected.  Now that this request has gone away, we might have to pretend
+            // that the network disconnected.  LegacyTypeTracker will generate that
+            // phantom disconnect for this type.
+            if (nri.request.legacyType != TYPE_NONE && nai != null) {
+                boolean doRemove = true;
+                if (wasKept) {
+                    // check if any of the remaining requests for this network are for the
+                    // same legacy type - if so, don't remove the nai
+                    for (int i = 0; i < nai.numNetworkRequests(); i++) {
+                        NetworkRequest otherRequest = nai.requestAt(i);
+                        if (otherRequest.legacyType == nri.request.legacyType &&
+                                otherRequest.isRequest()) {
+                            if (DBG) log(" still have other legacy request - leaving");
+                            doRemove = false;
                         }
                     }
-
-                    if (doRemove) {
-                        mLegacyTypeTracker.remove(nri.request.legacyType, nai, false);
-                    }
                 }
 
-                for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
-                    nfi.asyncChannel.sendMessage(android.net.NetworkFactory.CMD_CANCEL_REQUEST,
-                            nri.request);
-                }
-            } else {
-                // listens don't have a singular affectedNetwork.  Check all networks to see
-                // if this listen request applies and remove it.
-                for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
-                    nai.removeRequest(nri.request.requestId);
-                    if (nri.request.networkCapabilities.hasSignalStrength() &&
-                            nai.satisfiesImmutableCapabilitiesOf(nri.request)) {
-                        updateSignalStrengthThresholds(nai, "RELEASE", nri.request);
-                    }
+                if (doRemove) {
+                    mLegacyTypeTracker.remove(nri.request.legacyType, nai, false);
                 }
             }
-            callCallbackForRequest(nri, null, ConnectivityManager.CALLBACK_RELEASED, 0);
+
+            for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
+                nfi.asyncChannel.sendMessage(android.net.NetworkFactory.CMD_CANCEL_REQUEST,
+                        nri.request);
+            }
+        } else {
+            // listens don't have a singular affectedNetwork.  Check all networks to see
+            // if this listen request applies and remove it.
+            for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
+                nai.removeRequest(nri.request.requestId);
+                if (nri.request.networkCapabilities.hasSignalStrength() &&
+                        nai.satisfiesImmutableCapabilitiesOf(nri.request)) {
+                    updateSignalStrengthThresholds(nai, "RELEASE", nri.request);
+                }
+            }
         }
+        callCallbackForRequest(nri, null, ConnectivityManager.CALLBACK_RELEASED, 0);
     }
 
     @Override
@@ -2712,6 +2780,12 @@
                     handleMobileDataAlwaysOn();
                     break;
                 }
+                case EVENT_REQUEST_LINKPROPERTIES:
+                    handleRequestLinkProperties((NetworkRequest) msg.obj, msg.arg1);
+                    break;
+                case EVENT_REQUEST_NETCAPABILITIES:
+                    handleRequestNetworkCapabilities((NetworkRequest) msg.obj, msg.arg1);
+                    break;
                 // Sent by KeepaliveTracker to process an app request on the state machine thread.
                 case NetworkAgent.CMD_START_PACKET_KEEPALIVE: {
                     mKeepaliveTracker.handleStartKeepalive(msg);
@@ -4173,10 +4247,26 @@
     }
 
     @Override
+    public void requestLinkProperties(NetworkRequest networkRequest) {
+        ensureNetworkRequestHasType(networkRequest);
+        if (networkRequest.type == NetworkRequest.Type.LISTEN) return;
+        mHandler.sendMessage(mHandler.obtainMessage(
+                EVENT_REQUEST_LINKPROPERTIES, getCallingUid(), 0, networkRequest));
+    }
+
+    @Override
+    public void requestNetworkCapabilities(NetworkRequest networkRequest) {
+        ensureNetworkRequestHasType(networkRequest);
+        if (networkRequest.type == NetworkRequest.Type.LISTEN) return;
+        mHandler.sendMessage(mHandler.obtainMessage(
+                EVENT_REQUEST_NETCAPABILITIES, getCallingUid(), 0, networkRequest));
+    }
+
+    @Override
     public void releaseNetworkRequest(NetworkRequest networkRequest) {
         ensureNetworkRequestHasType(networkRequest);
-        mHandler.sendMessage(mHandler.obtainMessage(EVENT_RELEASE_NETWORK_REQUEST, getCallingUid(),
-                0, networkRequest));
+        mHandler.sendMessage(mHandler.obtainMessage(
+                EVENT_RELEASE_NETWORK_REQUEST, getCallingUid(), 0, networkRequest));
     }
 
     @Override
@@ -4486,7 +4576,7 @@
         for (int i = 0; i < nai.numNetworkRequests(); i++) {
             NetworkRequest nr = nai.requestAt(i);
             // Don't send listening requests to factories. b/17393458
-            if (!nr.isRequest()) continue;
+            if (nr.isListen()) continue;
             sendUpdatedScoreToFactories(nr, nai.getCurrentScore());
         }
     }
@@ -4580,7 +4670,7 @@
             for (int i = 0; i < nai.numNetworkRequests(); i++) {
                 NetworkRequest nr = nai.requestAt(i);
                 // Ignore listening requests.
-                if (!nr.isRequest()) continue;
+                if (nr.isListen()) continue;
                 loge("Dead network still had at least " + nr);
                 break;
             }
@@ -4672,7 +4762,7 @@
             // check if it satisfies the NetworkCapabilities
             if (VDBG) log("  checking if request is satisfied: " + nri.request);
             if (satisfies) {
-                if (!nri.request.isRequest()) {
+                if (nri.request.isListen()) {
                     // This is not a request, it's a callback listener.
                     // Add it to newNetwork regardless of score.
                     if (newNetwork.addRequest(nri.request)) addedRequests.add(nri);
diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java
index afed5ef..488f0e7 100644
--- a/services/core/java/com/android/server/DeviceIdleController.java
+++ b/services/core/java/com/android/server/DeviceIdleController.java
@@ -973,13 +973,12 @@
                 cancelSensingTimeoutAlarmLocked();
             }
         }
-        if (result == AnyMotionDetector.RESULT_MOVED) {
-            if (DEBUG) Slog.d(TAG, "RESULT_MOVED received.");
+        if ((result == AnyMotionDetector.RESULT_MOVED) ||
+            (result == AnyMotionDetector.RESULT_UNKNOWN)) {
             synchronized (this) {
-                handleMotionDetectedLocked(mConstants.INACTIVE_TIMEOUT, "sense_motion");
+                handleMotionDetectedLocked(mConstants.INACTIVE_TIMEOUT, "non_stationary");
             }
         } else if (result == AnyMotionDetector.RESULT_STATIONARY) {
-            if (DEBUG) Slog.d(TAG, "RESULT_STATIONARY received.");
             if (mState == STATE_SENSING) {
                 // If we are currently sensing, it is time to move to locating.
                 synchronized (this) {
diff --git a/services/core/java/com/android/server/GestureLauncherService.java b/services/core/java/com/android/server/GestureLauncherService.java
index 5a90488..553cb07 100644
--- a/services/core/java/com/android/server/GestureLauncherService.java
+++ b/services/core/java/com/android/server/GestureLauncherService.java
@@ -33,6 +33,7 @@
 import android.os.PowerManager.WakeLock;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.os.UserHandle;
 import android.provider.Settings;
 import android.util.MutableBoolean;
 import android.util.Slog;
@@ -284,8 +285,8 @@
      * @return true if camera was launched, false otherwise.
      */
     private boolean handleCameraLaunchGesture(boolean useWakelock, int source) {
-        boolean userSetupComplete = Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
+        boolean userSetupComplete = Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0;
         if (!userSetupComplete) {
             if (DBG) Slog.d(TAG, String.format(
                     "userSetupComplete = %s, ignoring camera launch gesture.",
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index 8e0114a..33c2ea2 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -69,6 +69,7 @@
 import android.util.Slog;
 
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.widget.ICheckCredentialProgressCallback;
 import com.android.internal.widget.ILockSettings;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.internal.widget.VerifyCredentialResponse;
@@ -583,6 +584,18 @@
                         Slog.e(TAG, "Invalid tied profile lock type: " + quality);
                     }
                 }
+                try {
+                    final String alias = LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + userInfo.id;
+                    java.security.KeyStore keyStore =
+                            java.security.KeyStore.getInstance("AndroidKeyStore");
+                    keyStore.load(null);
+                    if (keyStore.containsAlias(alias)) {
+                        keyStore.deleteEntry(alias);
+                    }
+                } catch (KeyStoreException | NoSuchAlgorithmException |
+                        CertificateException | IOException e) {
+                    Slog.e(TAG, "Unable to remove tied profile key", e);
+                }
             }
         } catch (RemoteException re) {
             Slog.e(TAG, "Unable to migrate old data", re);
@@ -760,7 +773,7 @@
     private void unlockChildProfile(int profileHandle) throws RemoteException {
         try {
             doVerifyPassword(getDecryptedPasswordForTiedProfile(profileHandle), false,
-                    0 /* no challenge */, profileHandle);
+                    0 /* no challenge */, profileHandle, null /* progressCallback */);
         } catch (UnrecoverableKeyException | InvalidKeyException | KeyStoreException
                 | NoSuchAlgorithmException | NoSuchPaddingException
                 | InvalidAlgorithmParameterException | IllegalBlockSizeException
@@ -947,7 +960,7 @@
             CredentialHash willStore
                 = new CredentialHash(enrolledHandle, CredentialHash.VERSION_GATEKEEPER);
             setUserKeyProtection(userId, pattern,
-                doVerifyPattern(pattern, willStore, true, 0, userId));
+                doVerifyPattern(pattern, willStore, true, 0, userId, null /* progressCallback */));
             mStorage.writePatternHash(enrolledHandle, userId);
             fixateNewestUserKeyAuth(userId);
             onUserLockChanged(userId);
@@ -1007,7 +1020,8 @@
             CredentialHash willStore
                 = new CredentialHash(enrolledHandle, CredentialHash.VERSION_GATEKEEPER);
             setUserKeyProtection(userId, password,
-                doVerifyPassword(password, willStore, true, 0, userId));
+                doVerifyPassword(password, willStore, true, 0, userId,
+                        null /* progressCallback */));
             mStorage.writePasswordHash(enrolledHandle, userId);
             fixateNewestUserKeyAuth(userId);
             onUserLockChanged(userId);
@@ -1025,37 +1039,38 @@
             KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES);
             keyGenerator.init(new SecureRandom());
             SecretKey secretKey = keyGenerator.generateKey();
-
             java.security.KeyStore keyStore = java.security.KeyStore.getInstance("AndroidKeyStore");
             keyStore.load(null);
-            keyStore.setEntry(
-                    LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + userId,
-                    new java.security.KeyStore.SecretKeyEntry(secretKey),
-                    new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT)
-                            .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
-                            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
-                            .build());
-            keyStore.setEntry(
-                    LockPatternUtils.PROFILE_KEY_NAME_DECRYPT + userId,
-                    new java.security.KeyStore.SecretKeyEntry(secretKey),
-                    new KeyProtection.Builder(KeyProperties.PURPOSE_DECRYPT)
-                            .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
-                            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
-                            .setUserAuthenticationRequired(true)
-                            .setUserAuthenticationValidityDurationSeconds(30)
-                            .build());
-
-            // Key imported, obtain a reference to it.
-            SecretKey keyStoreEncryptionKey = (SecretKey) keyStore.getKey(
-                    LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + userId, null);
-            // The original key can now be discarded.
-
-            Cipher cipher = Cipher.getInstance(
-                    KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_GCM + "/"
-                            + KeyProperties.ENCRYPTION_PADDING_NONE);
-            cipher.init(Cipher.ENCRYPT_MODE, keyStoreEncryptionKey);
-            encryptionResult = cipher.doFinal(randomLockSeed);
-            iv = cipher.getIV();
+            try {
+                keyStore.setEntry(
+                        LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + userId,
+                        new java.security.KeyStore.SecretKeyEntry(secretKey),
+                        new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT)
+                                .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
+                                .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
+                                .build());
+                keyStore.setEntry(
+                        LockPatternUtils.PROFILE_KEY_NAME_DECRYPT + userId,
+                        new java.security.KeyStore.SecretKeyEntry(secretKey),
+                        new KeyProtection.Builder(KeyProperties.PURPOSE_DECRYPT)
+                                .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
+                                .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
+                                .setUserAuthenticationRequired(true)
+                                .setUserAuthenticationValidityDurationSeconds(30)
+                                .build());
+                // Key imported, obtain a reference to it.
+                SecretKey keyStoreEncryptionKey = (SecretKey) keyStore.getKey(
+                        LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + userId, null);
+                Cipher cipher = Cipher.getInstance(
+                        KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_GCM + "/"
+                                + KeyProperties.ENCRYPTION_PADDING_NONE);
+                cipher.init(Cipher.ENCRYPT_MODE, keyStoreEncryptionKey);
+                encryptionResult = cipher.doFinal(randomLockSeed);
+                iv = cipher.getIV();
+            } finally {
+                // The original key can now be discarded.
+                keyStore.deleteEntry(LockPatternUtils.PROFILE_KEY_NAME_ENCRYPT + userId);
+            }
         } catch (CertificateException | UnrecoverableKeyException
                 | IOException | BadPaddingException | IllegalBlockSizeException | KeyStoreException
                 | NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException e) {
@@ -1205,25 +1220,33 @@
     }
 
     @Override
-    public VerifyCredentialResponse checkPattern(String pattern, int userId) throws RemoteException {
-        return doVerifyPattern(pattern, false, 0, userId);
+    public VerifyCredentialResponse checkPattern(String pattern, int userId,
+            ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+        return doVerifyPattern(pattern, false, 0, userId, progressCallback);
     }
 
     @Override
     public VerifyCredentialResponse verifyPattern(String pattern, long challenge, int userId)
             throws RemoteException {
-        return doVerifyPattern(pattern, true, challenge, userId);
+        return doVerifyPattern(pattern, true, challenge, userId, null /* progressCallback */);
     }
 
     private VerifyCredentialResponse doVerifyPattern(String pattern, boolean hasChallenge,
-            long challenge, int userId) throws RemoteException {
+            long challenge, int userId, ICheckCredentialProgressCallback progressCallback)
+            throws RemoteException {
        checkPasswordReadPermission(userId);
        CredentialHash storedHash = mStorage.readPatternHash(userId);
-       return doVerifyPattern(pattern, storedHash, hasChallenge, challenge, userId);
+       return doVerifyPattern(pattern, storedHash, hasChallenge, challenge, userId,
+               progressCallback);
     }
 
     private VerifyCredentialResponse doVerifyPattern(String pattern, CredentialHash storedHash,
-            boolean hasChallenge, long challenge, int userId) throws RemoteException {
+            boolean hasChallenge, long challenge, int userId,
+            ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+
+       if (TextUtils.isEmpty(pattern)) {
+           throw new IllegalArgumentException("Pattern can't be null or empty");
+       }
        boolean shouldReEnrollBaseZero = storedHash != null && storedHash.isBaseZeroPattern;
 
        String patternToVerify;
@@ -1252,7 +1275,8 @@
                    public String adjustForKeystore(String pattern) {
                        return LockPatternUtils.patternStringToBaseZero(pattern);
                    }
-               }
+               },
+               progressCallback
        );
 
        if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK
@@ -1264,15 +1288,15 @@
     }
 
     @Override
-    public VerifyCredentialResponse checkPassword(String password, int userId)
-            throws RemoteException {
-        return doVerifyPassword(password, false, 0, userId);
+    public VerifyCredentialResponse checkPassword(String password, int userId,
+            ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+        return doVerifyPassword(password, false, 0, userId, progressCallback);
     }
 
     @Override
     public VerifyCredentialResponse verifyPassword(String password, long challenge, int userId)
             throws RemoteException {
-        return doVerifyPassword(password, true, challenge, userId);
+        return doVerifyPassword(password, true, challenge, userId, null /* progressCallback */);
     }
 
     @Override
@@ -1285,8 +1309,10 @@
         final int parentProfileId = mUserManager.getProfileParent(userId).id;
         // Unlock parent by using parent's challenge
         final VerifyCredentialResponse parentResponse = isPattern
-                ? doVerifyPattern(password, true, challenge, parentProfileId)
-                : doVerifyPassword(password, true, challenge, parentProfileId);
+                ? doVerifyPattern(password, true, challenge, parentProfileId,
+                        null /* progressCallback */)
+                : doVerifyPassword(password, true, challenge, parentProfileId,
+                        null /* progressCallback */);
         if (parentResponse.getResponseCode() != VerifyCredentialResponse.RESPONSE_OK) {
             // Failed, just return parent's response
             return parentResponse;
@@ -1296,7 +1322,7 @@
             // Unlock work profile, and work profile with unified lock must use password only
             return doVerifyPassword(getDecryptedPasswordForTiedProfile(userId), true,
                     challenge,
-                    userId);
+                    userId, null /* progressCallback */);
         } catch (UnrecoverableKeyException | InvalidKeyException | KeyStoreException
                 | NoSuchAlgorithmException | NoSuchPaddingException
                 | InvalidAlgorithmParameterException | IllegalBlockSizeException
@@ -1307,14 +1333,20 @@
     }
 
     private VerifyCredentialResponse doVerifyPassword(String password, boolean hasChallenge,
-            long challenge, int userId) throws RemoteException {
+            long challenge, int userId, ICheckCredentialProgressCallback progressCallback)
+            throws RemoteException {
        checkPasswordReadPermission(userId);
        CredentialHash storedHash = mStorage.readPasswordHash(userId);
-       return doVerifyPassword(password, storedHash, hasChallenge, challenge, userId);
+       return doVerifyPassword(password, storedHash, hasChallenge, challenge, userId,
+               progressCallback);
     }
 
     private VerifyCredentialResponse doVerifyPassword(String password, CredentialHash storedHash,
-            boolean hasChallenge, long challenge, int userId) throws RemoteException {
+            boolean hasChallenge, long challenge, int userId,
+            ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+       if (TextUtils.isEmpty(password)) {
+           throw new IllegalArgumentException("Password can't be null or empty");
+       }
        return verifyCredential(userId, storedHash, password, hasChallenge, challenge,
                new CredentialUtil() {
                    @Override
@@ -1332,12 +1364,12 @@
                    public String adjustForKeystore(String password) {
                        return password;
                    }
-               }
-       );
+               }, progressCallback);
     }
 
     private VerifyCredentialResponse verifyCredential(int userId, CredentialHash storedHash,
-            String credential, boolean hasChallenge, long challenge, CredentialUtil credentialUtil)
+            String credential, boolean hasChallenge, long challenge, CredentialUtil credentialUtil,
+            ICheckCredentialProgressCallback progressCallback)
                 throws RemoteException {
         if ((storedHash == null || storedHash.hash.length == 0) && TextUtils.isEmpty(credential)) {
             // don't need to pass empty credentials to GateKeeper
@@ -1394,7 +1426,13 @@
         }
 
         if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) {
+
+
             // credential has matched
+
+            if (progressCallback != null) {
+                progressCallback.onCredentialVerified();
+            }
             unlockKeystore(credential, userId);
 
             Slog.i(TAG, "Unlocking user " + userId +
@@ -1450,7 +1488,7 @@
 
         try {
             if (mLockPatternUtils.isLockPatternEnabled(userId)) {
-                if (checkPattern(password, userId).getResponseCode()
+                if (checkPattern(password, userId, null /* progressCallback */).getResponseCode()
                         == GateKeeperResponse.RESPONSE_OK) {
                     return true;
                 }
@@ -1460,7 +1498,7 @@
 
         try {
             if (mLockPatternUtils.isLockPasswordEnabled(userId)) {
-                if (checkPassword(password, userId).getResponseCode()
+                if (checkPassword(password, userId, null /* progressCallback */).getResponseCode()
                         == GateKeeperResponse.RESPONSE_OK) {
                     return true;
                 }
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 114aa9c..be6364e 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -494,7 +494,7 @@
             if (mLastPowerStateFromWifi != powerState) {
                 mLastPowerStateFromWifi = powerState;
                 try {
-                    getBatteryStats().noteWifiRadioPowerState(powerState, tsNanos);
+                    getBatteryStats().noteWifiRadioPowerState(powerState, tsNanos, uid);
                 } catch (RemoteException e) {
                 }
             }
diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java
index e233b1c..080b46c 100644
--- a/services/core/java/com/android/server/PersistentDataBlockService.java
+++ b/services/core/java/com/android/server/PersistentDataBlockService.java
@@ -157,11 +157,10 @@
         }
     }
 
-    private void enforceFactoryResetAllowed() {
-        final boolean isOemUnlockRestricted = UserManager.get(mContext)
-                .hasUserRestriction(UserManager.DISALLOW_FACTORY_RESET);
-        if (isOemUnlockRestricted) {
-            throw new SecurityException("OEM unlock is disallowed by DISALLOW_FACTORY_RESET");
+    private void enforceUserRestriction(String userRestriction) {
+        if (UserManager.get(mContext).hasUserRestriction(userRestriction)) {
+            throw new SecurityException(
+                    "OEM unlock is disallowed by user restriction: " + userRestriction);
         }
     }
 
@@ -467,13 +466,9 @@
             enforceIsAdmin();
 
             if (enabled) {
-                // Do not allow oem unlock to be enabled if it has been disallowed.
-                if (Settings.Global.getInt(getContext().getContentResolver(),
-                        Settings.Global.OEM_UNLOCK_DISALLOWED, 0) == 1) {
-                    throw new SecurityException(
-                            "OEM unlock has been disallowed by OEM_UNLOCK_DISALLOWED.");
-                }
-                enforceFactoryResetAllowed();
+                // Do not allow oem unlock to be enabled if it's disallowed by a user restriction.
+                enforceUserRestriction(UserManager.DISALLOW_OEM_UNLOCK);
+                enforceUserRestriction(UserManager.DISALLOW_FACTORY_RESET);
             }
             synchronized (mLock) {
                 doSetOemUnlockEnabledLocked(enabled);
diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java
index eaf317a..7ea8f1f 100644
--- a/services/core/java/com/android/server/PinnerService.java
+++ b/services/core/java/com/android/server/PinnerService.java
@@ -41,6 +41,7 @@
 import com.android.internal.app.ResolverActivity;
 import com.android.internal.os.BackgroundThread;
 
+import dalvik.system.DexFile;
 import dalvik.system.VMRuntime;
 
 import java.util.ArrayList;
@@ -240,12 +241,6 @@
         }
         mPinnedCameraFiles.add(pf);
 
-        //find the location of the odex based on the location of the APK
-        int lastPeriod = camAPK.lastIndexOf('.');
-        int lastSlash = camAPK.lastIndexOf('/', lastPeriod);
-        String base = camAPK.substring(0, lastSlash);
-        String appName = camAPK.substring(lastSlash + 1, lastPeriod);
-
         // determine the ABI from either ApplicationInfo or Build
         String arch = "arm";
         if (cameraInfo.primaryCpuAbi != null
@@ -256,8 +251,18 @@
                 arch = arch + "64";
             }
         }
-        String odex = base + "/oat/" + arch + "/" + appName + ".odex";
-        //not all apps have odex files, so not pinning the odex is not a fatal error
+
+        // get the path to the odex or oat file
+        String baseCodePath = cameraInfo.getBaseCodePath();
+        String odex = null;
+        try {
+            odex = DexFile.getDexFileOutputPath(baseCodePath, arch);
+        } catch (IOException ioe) {}
+        if (odex == null) {
+            return true;
+        }
+
+        //not pinning the oat/odex is not a fatal error
         pf = pinFile(odex, 0, 0, MAX_CAMERA_PIN_SIZE);
         if (pf != null) {
             mPinnedCameraFiles.add(pf);
@@ -265,6 +270,7 @@
                 Slog.i(TAG, "Pinned " + pf.mFilename);
             }
         }
+
         return true;
     }
 
diff --git a/services/core/java/com/android/server/UiThread.java b/services/core/java/com/android/server/UiThread.java
index c06afc2..1bc6250 100644
--- a/services/core/java/com/android/server/UiThread.java
+++ b/services/core/java/com/android/server/UiThread.java
@@ -17,6 +17,7 @@
 package com.android.server;
 
 import android.os.Handler;
+import android.os.Process;
 import android.os.Trace;
 
 /**
@@ -29,7 +30,9 @@
     private static Handler sHandler;
 
     private UiThread() {
-        super("android.ui", android.os.Process.THREAD_PRIORITY_FOREGROUND, false /*allowIo*/);
+        super("android.ui", Process.THREAD_PRIORITY_FOREGROUND, false /*allowIo*/);
+        // Make sure UiThread is in the fg stune boost group
+        Process.setThreadGroup(Process.myTid(), Process.THREAD_GROUP_TOP_APP);
     }
 
     private static void ensureThreadLocked() {
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 5b7f99c..843b109 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -1233,11 +1233,13 @@
             } finally {
                 db.endTransaction();
             }
-            sendAccountsChangedBroadcast(accounts.userId);
         }
         if (getUserManager().getUserInfo(accounts.userId).canHaveProfile()) {
             addAccountToLinkedRestrictedUsers(account, accounts.userId);
         }
+
+        // Only send LOGIN_ACCOUNTS_CHANGED when the database changed.
+        sendAccountsChangedBroadcast(accounts.userId);
         return true;
     }
 
@@ -1420,7 +1422,6 @@
         synchronized (accounts.cacheLock) {
             final SQLiteDatabase db = accounts.openHelper.getWritableDatabaseUserIsUnlocked();
             db.beginTransaction();
-            boolean isSuccessful = false;
             Account renamedAccount = new Account(newName, accountToRename.type);
             try {
                 final long accountId = getAccountIdLocked(db, accountToRename);
@@ -1433,54 +1434,51 @@
                     values.put(ACCOUNTS_PREVIOUS_NAME, accountToRename.name);
                     db.update(TABLE_ACCOUNTS, values, ACCOUNTS_ID + "=?", argsAccountId);
                     db.setTransactionSuccessful();
-                    isSuccessful = true;
                     logRecord(db, DebugDbHelper.ACTION_ACCOUNT_RENAME, TABLE_ACCOUNTS, accountId,
                             accounts);
                 }
             } finally {
                 db.endTransaction();
-                if (isSuccessful) {
-                    /*
-                     * Database transaction was successful. Clean up cached
-                     * data associated with the account in the user profile.
-                     */
-                    insertAccountIntoCacheLocked(accounts, renamedAccount);
-                    /*
-                     * Extract the data and token caches before removing the
-                     * old account to preserve the user data associated with
-                     * the account.
-                     */
-                    HashMap<String, String> tmpData = accounts.userDataCache.get(accountToRename);
-                    HashMap<String, String> tmpTokens = accounts.authTokenCache.get(accountToRename);
-                    removeAccountFromCacheLocked(accounts, accountToRename);
-                    /*
-                     * Update the cached data associated with the renamed
-                     * account.
-                     */
-                    accounts.userDataCache.put(renamedAccount, tmpData);
-                    accounts.authTokenCache.put(renamedAccount, tmpTokens);
-                    accounts.previousNameCache.put(
-                          renamedAccount,
-                          new AtomicReference<String>(accountToRename.name));
-                    resultAccount = renamedAccount;
+            }
+            /*
+             * Database transaction was successful. Clean up cached
+             * data associated with the account in the user profile.
+             */
+            insertAccountIntoCacheLocked(accounts, renamedAccount);
+            /*
+             * Extract the data and token caches before removing the
+             * old account to preserve the user data associated with
+             * the account.
+             */
+            HashMap<String, String> tmpData = accounts.userDataCache.get(accountToRename);
+            HashMap<String, String> tmpTokens = accounts.authTokenCache.get(accountToRename);
+            removeAccountFromCacheLocked(accounts, accountToRename);
+            /*
+             * Update the cached data associated with the renamed
+             * account.
+             */
+            accounts.userDataCache.put(renamedAccount, tmpData);
+            accounts.authTokenCache.put(renamedAccount, tmpTokens);
+            accounts.previousNameCache.put(
+                    renamedAccount,
+                    new AtomicReference<String>(accountToRename.name));
+            resultAccount = renamedAccount;
 
-                    int parentUserId = accounts.userId;
-                    if (canHaveProfile(parentUserId)) {
-                        /*
-                         * Owner or system user account was renamed, rename the account for
-                         * those users with which the account was shared.
-                         */
-                        List<UserInfo> users = getUserManager().getUsers(true);
-                        for (UserInfo user : users) {
-                            if (user.isRestricted()
-                                    && (user.restrictedProfileParentId == parentUserId)) {
-                                renameSharedAccountAsUser(accountToRename, newName, user.id);
-                            }
-                        }
+            int parentUserId = accounts.userId;
+            if (canHaveProfile(parentUserId)) {
+                /*
+                 * Owner or system user account was renamed, rename the account for
+                 * those users with which the account was shared.
+                 */
+                List<UserInfo> users = getUserManager().getUsers(true);
+                for (UserInfo user : users) {
+                    if (user.isRestricted()
+                            && (user.restrictedProfileParentId == parentUserId)) {
+                        renameSharedAccountAsUser(accountToRename, newName, user.id);
                     }
-                    sendAccountsChangedBroadcast(accounts.userId);
                 }
             }
+            sendAccountsChangedBroadcast(accounts.userId);
         }
         return resultAccount;
     }
@@ -1563,9 +1561,15 @@
                 }
             }
         }
-
-        logRecord(accounts, DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE, TABLE_ACCOUNTS);
-
+        SQLiteDatabase db = accounts.openHelper.getReadableDatabase();
+        final long accountId = getAccountIdLocked(db, account);
+        logRecord(
+                db,
+                DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE,
+                TABLE_ACCOUNTS,
+                accountId,
+                accounts,
+                callingUid);
         try {
             new RemoveAccountSession(accounts, response, account, expectActivityLaunch).bind();
         } finally {
@@ -1597,7 +1601,15 @@
             throw new SecurityException(msg);
         }
         UserAccounts accounts = getUserAccountsForCaller();
-        logRecord(accounts, DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE, TABLE_ACCOUNTS);
+        SQLiteDatabase db = accounts.openHelper.getReadableDatabase();
+        final long accountId = getAccountIdLocked(db, account);
+        logRecord(
+                db,
+                DebugDbHelper.ACTION_CALLED_ACCOUNT_REMOVE,
+                TABLE_ACCOUNTS,
+                accountId,
+                accounts,
+                callingUid);
         long identityToken = clearCallingIdentity();
         try {
             return removeAccountInternal(accounts, account, callingUid);
@@ -1661,7 +1673,7 @@
     }
 
     private boolean removeAccountInternal(UserAccounts accounts, Account account, int callingUid) {
-        int deleted;
+        boolean isChanged = false;
         boolean userUnlocked = isLocalUnlockedUser(accounts.userId);
         if (!userUnlocked) {
             Slog.i(TAG, "Removing account " + account + " while user "+ accounts.userId
@@ -1671,25 +1683,38 @@
             final SQLiteDatabase db = userUnlocked
                     ? accounts.openHelper.getWritableDatabaseUserIsUnlocked()
                     : accounts.openHelper.getWritableDatabase();
-            final long accountId = getAccountIdLocked(db, account);
             db.beginTransaction();
+            // Set to a dummy value, this will only be used if the database
+            // transaction succeeds.
+            long accountId = -1;
             try {
-                deleted = db.delete(TABLE_ACCOUNTS, ACCOUNTS_NAME + "=? AND " + ACCOUNTS_TYPE
-                                + "=?", new String[]{account.name, account.type});
-                if (userUnlocked) {
-                    // Delete from CE table
-                    deleted = db.delete(CE_TABLE_ACCOUNTS, ACCOUNTS_NAME + "=? AND " + ACCOUNTS_TYPE
-                            + "=?", new String[]{account.name, account.type});
+                accountId = getAccountIdLocked(db, account);
+                if (accountId >= 0) {
+                    db.delete(
+                            TABLE_ACCOUNTS,
+                            ACCOUNTS_NAME + "=? AND " + ACCOUNTS_TYPE + "=?",
+                            new String[]{ account.name, account.type });
+                    if (userUnlocked) {
+                        // Delete from CE table
+                        db.delete(
+                                CE_TABLE_ACCOUNTS,
+                                ACCOUNTS_NAME + "=? AND " + ACCOUNTS_TYPE + "=?",
+                                new String[]{ account.name, account.type });
+                    }
+                    db.setTransactionSuccessful();
+                    isChanged = true;
                 }
-                db.setTransactionSuccessful();
             } finally {
                 db.endTransaction();
             }
-            removeAccountFromCacheLocked(accounts, account);
-            sendAccountsChangedBroadcast(accounts.userId);
-            String action = userUnlocked ? DebugDbHelper.ACTION_ACCOUNT_REMOVE
-                    : DebugDbHelper.ACTION_ACCOUNT_REMOVE_DE;
-            logRecord(db, action, TABLE_ACCOUNTS, accountId, accounts);
+            if (isChanged) {
+                removeAccountFromCacheLocked(accounts, account);
+                // Only broadcast LOGIN_ACCOUNTS_CHANGED if a change occured.
+                sendAccountsChangedBroadcast(accounts.userId);
+                String action = userUnlocked ? DebugDbHelper.ACTION_ACCOUNT_REMOVE
+                        : DebugDbHelper.ACTION_ACCOUNT_REMOVE_DE;
+                logRecord(db, action, TABLE_ACCOUNTS, accountId, accounts);
+            }
         }
         long id = Binder.clearCallingIdentity();
         try {
@@ -1706,7 +1731,7 @@
         } finally {
             Binder.restoreCallingIdentity(id);
         }
-        return (deleted > 0);
+        return isChanged;
     }
 
     @Override
@@ -1930,6 +1955,7 @@
         if (account == null) {
             return;
         }
+        boolean isChanged = false;
         synchronized (accounts.cacheLock) {
             final SQLiteDatabase db = accounts.openHelper.getWritableDatabaseUserIsUnlocked();
             db.beginTransaction();
@@ -1939,12 +1965,17 @@
                 final long accountId = getAccountIdLocked(db, account);
                 if (accountId >= 0) {
                     final String[] argsAccountId = {String.valueOf(accountId)};
-                    db.update(CE_TABLE_ACCOUNTS, values, ACCOUNTS_ID + "=?", argsAccountId);
-                    db.delete(CE_TABLE_AUTHTOKENS, AUTHTOKENS_ACCOUNTS_ID + "=?", argsAccountId);
+                    db.update(
+                            CE_TABLE_ACCOUNTS, values, ACCOUNTS_ID + "=?", argsAccountId);
+                    db.delete(
+                            CE_TABLE_AUTHTOKENS, AUTHTOKENS_ACCOUNTS_ID + "=?", argsAccountId);
                     accounts.authTokenCache.remove(account);
                     accounts.accountTokenCaches.remove(account);
                     db.setTransactionSuccessful();
-
+                    // If there is an account whose password will be updated and the database
+                    // transactions succeed, then we say that a change has occured. Even if the
+                    // new password is the same as the old and there were no authtokens to delete.
+                    isChanged = true;
                     String action = (password == null || password.length() == 0) ?
                             DebugDbHelper.ACTION_CLEAR_PASSWORD
                             : DebugDbHelper.ACTION_SET_PASSWORD;
@@ -1952,8 +1983,11 @@
                 }
             } finally {
                 db.endTransaction();
+                if (isChanged) {
+                    // Send LOGIN_ACCOUNTS_CHANGED only if the something changed.
+                    sendAccountsChangedBroadcast(accounts.userId);
+                }
             }
-            sendAccountsChangedBroadcast(accounts.userId);
         }
     }
 
@@ -2641,14 +2675,6 @@
         }
 
         final int uid = Binder.getCallingUid();
-        // Only allow system to start session
-        if (!isSystemUid(uid)) {
-            String msg = String.format(
-                    "uid %s cannot stat add account session.",
-                    uid);
-            throw new SecurityException(msg);
-        }
-
         final int userId = UserHandle.getUserId(uid);
         if (!canUserModifyAccounts(userId, uid)) {
             try {
@@ -2854,14 +2880,6 @@
                             userId));
         }
 
-        // Only allow system to finish session
-        if (!isSystemUid(callingUid)) {
-            String msg = String.format(
-                    "uid %s cannot finish session because it's not system uid.",
-                    callingUid);
-            throw new SecurityException(msg);
-        }
-
         if (!canUserModifyAccounts(userId, callingUid)) {
             sendErrorResponse(response,
                     AccountManager.ERROR_CODE_USER_RESTRICTED,
@@ -3102,14 +3120,6 @@
         }
 
         final int uid = Binder.getCallingUid();
-        // Only allow system to start session
-        if (!isSystemUid(uid)) {
-            String msg = String.format(
-                    "uid %s cannot start update credentials session.",
-                    uid);
-            throw new SecurityException(msg);
-        }
-
         int userId = UserHandle.getCallingUserId();
 
         // Check to see if the Password should be included to the caller.
@@ -3172,15 +3182,6 @@
             throw new IllegalArgumentException("status token is empty");
         }
 
-        int uid = Binder.getCallingUid();
-        // Only allow system to start session
-        if (!isSystemUid(uid)) {
-            String msg = String.format(
-                    "uid %s cannot stat add account session.",
-                    uid);
-            throw new SecurityException(msg);
-        }
-
         int usrId = UserHandle.getCallingUserId();
         long identityToken = clearCallingIdentity();
         try {
@@ -3879,7 +3880,12 @@
                 ResolveInfo resolveInfo = pm.resolveActivityAsUser(intent, 0, mAccounts.userId);
                 ActivityInfo targetActivityInfo = resolveInfo.activityInfo;
                 int targetUid = targetActivityInfo.applicationInfo.uid;
-                if (PackageManager.SIGNATURE_MATCH != pm.checkSignatures(authUid, targetUid)) {
+                if (!GrantCredentialsPermissionActivity.class.getName().equals(
+                        targetActivityInfo.getClass().getName())
+                        && !CantAddAccountActivity.class
+                                .equals(targetActivityInfo.getClass().getName())
+                        && PackageManager.SIGNATURE_MATCH != pm.checkSignatures(authUid,
+                                targetUid)) {
                     String pkgName = targetActivityInfo.packageName;
                     String activityName = targetActivityInfo.name;
                     String tmpl = "KEY_INTENT resolved to an Activity (%s) in a package (%s) that "
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 66a8900..0c9a0bb 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -140,7 +140,6 @@
 import android.content.pm.ProviderInfo;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
-import android.content.pm.ShortcutServiceInternal;
 import android.content.pm.UserInfo;
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
@@ -591,14 +590,11 @@
     }
 
     /**
-     * Activity we have told the window manager to have key focus.
+     * The last resumed activity. This is identical to the current resumed activity most
+     * of the time but could be different when we're pausing one activity before we resume
+     * another activity.
      */
-    ActivityRecord mFocusedActivity = null;
-
-    /**
-     * User id of the last activity mFocusedActivity was set to.
-     */
-    private int mLastFocusedUserId;
+    private ActivityRecord mLastResumedActivity;
 
     /**
      * If non-null, we are tracking the time the user spends in the currently focused app.
@@ -639,36 +635,45 @@
 
     final AppErrors mAppErrors;
 
-    boolean mDoingSetFocusedActivity;
-
     public boolean canShowErrorDialogs() {
         return mShowDialogs && !mSleeping && !mShuttingDown;
     }
 
-    // it's a semaphore; boost when 0->1, reset when 1->0
-    static ThreadLocal<Integer> sIsBoosted = new ThreadLocal<Integer>() {
-        @Override protected Integer initialValue() {
-            return 0;
+    private static final class PriorityState {
+        // Acts as counter for number of synchronized region that needs to acquire 'this' as a lock
+        // the current thread is currently in. When it drops down to zero, we will no longer boost
+        // the thread's priority.
+        private int regionCounter = 0;
+
+        // The thread's previous priority before boosting.
+        private int prevPriority = Integer.MIN_VALUE;
+    }
+
+    static ThreadLocal<PriorityState> sThreadPriorityState = new ThreadLocal<PriorityState>() {
+        @Override protected PriorityState initialValue() {
+            return new PriorityState();
         }
     };
 
     static void boostPriorityForLockedSection() {
-        if (sIsBoosted.get() == 0) {
-            // boost to prio 118 while holding a global lock
-            Process.setThreadPriority(Process.myTid(), -2);
-            //Log.e(TAG, "PRIORITY BOOST:  set priority on TID " + Process.myTid());
+        int tid = Process.myTid();
+        int prevPriority = Process.getThreadPriority(tid);
+        PriorityState state = sThreadPriorityState.get();
+        if (state.regionCounter == 0 && prevPriority > -2) {
+            state.prevPriority = prevPriority;
+            Process.setThreadPriority(tid, -2);
         }
-        int cur = sIsBoosted.get();
-        sIsBoosted.set(cur + 1);
+        state.regionCounter++;
     }
 
     static void resetPriorityAfterLockedSection() {
-        sIsBoosted.set(sIsBoosted.get() - 1);
-        if (sIsBoosted.get() == 0) {
-            //Log.e(TAG, "PRIORITY BOOST:  reset priority on TID " + Process.myTid());
-            Process.setThreadPriority(Process.myTid(), 0);
+        PriorityState state = sThreadPriorityState.get();
+        state.regionCounter--;
+        if (state.regionCounter == 0 && state.prevPriority > -2) {
+            Process.setThreadPriority(Process.myTid(), state.prevPriority);
         }
     }
+
     public class PendingAssistExtras extends Binder implements Runnable {
         public final ActivityRecord activity;
         public final Bundle extras;
@@ -2952,25 +2957,13 @@
         return mAppBindArgs;
     }
 
-    boolean setFocusedActivityLocked(ActivityRecord r, String reason) {
-        if (r == null || mFocusedActivity == r) {
-            return false;
-        }
+    /**
+     * Update AMS states when an activity is resumed. This should only be called by
+     * {@link ActivityStack#setResumedActivityLocked} when an activity is resumed.
+     */
+    void setResumedActivityUncheckLocked(ActivityRecord r, String reason) {
+        r.state = ActivityState.RESUMED;
 
-        if (!r.isFocusable()) {
-            if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedActivityLocked: unfocusable r=" + r);
-            return false;
-        }
-
-        if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedActivityLocked: r=" + r);
-
-        final boolean wasDoingSetFocusedActivity = mDoingSetFocusedActivity;
-        if (wasDoingSetFocusedActivity) Slog.w(TAG,
-                "setFocusedActivityLocked: called recursively, r=" + r + ", reason=" + reason);
-        mDoingSetFocusedActivity = true;
-
-        final ActivityRecord last = mFocusedActivity;
-        mFocusedActivity = r;
         if (r.task.isApplicationTask()) {
             if (mCurAppTimeTracker != r.appTimeTracker) {
                 // We are switching app tracking.  Complete the current one.
@@ -2999,8 +2992,9 @@
         } else {
             finishRunningVoiceLocked();
             IVoiceInteractionSession session;
-            if (last != null && ((session = last.task.voiceSession) != null
-                    || (session = last.voiceSession) != null)) {
+            if (mLastResumedActivity != null
+                    && ((session = mLastResumedActivity.task.voiceSession) != null
+                    || (session = mLastResumedActivity.voiceSession) != null)) {
                 // We had been in a voice interaction session, but now focused has
                 // move to something different.  Just finish the session, we can't
                 // return to it and retain the proper state and synchronization with
@@ -3008,57 +3002,23 @@
                 finishVoiceTask(session);
             }
         }
-        if (mStackSupervisor.moveActivityStackToFront(r, reason + " setFocusedActivity")) {
-            mWindowManager.setFocusedApp(r.appToken, true);
-        }
+
+        mWindowManager.setFocusedApp(r.appToken, true);
+
         applyUpdateLockStateLocked(r);
         applyUpdateVrModeLocked(r);
-        if (mFocusedActivity.userId != mLastFocusedUserId) {
+        if (mLastResumedActivity != null && r.userId != mLastResumedActivity.userId) {
             mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG);
             mHandler.obtainMessage(
-                    FOREGROUND_PROFILE_CHANGED_MSG, mFocusedActivity.userId, 0).sendToTarget();
-            mLastFocusedUserId = mFocusedActivity.userId;
+                    FOREGROUND_PROFILE_CHANGED_MSG, r.userId, 0).sendToTarget();
         }
 
-        // Log a warning if the focused app is changed during the process. This could
-        // indicate a problem of the focus setting logic!
-        if (mFocusedActivity != r) Slog.w(TAG,
-                "setFocusedActivityLocked: r=" + r + " but focused to " + mFocusedActivity);
-        mDoingSetFocusedActivity = wasDoingSetFocusedActivity;
+        mLastResumedActivity = r;
 
-        EventLogTags.writeAmFocusedActivity(
-                mFocusedActivity == null ? -1 : mFocusedActivity.userId,
-                mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName,
+        EventLogTags.writeAmSetResumedActivity(
+                r == null ? -1 : r.userId,
+                r == null ? "NULL" : r.shortComponentName,
                 reason);
-        return true;
-    }
-
-    final void resetFocusedActivityIfNeededLocked(ActivityRecord goingAway) {
-        if (mFocusedActivity != goingAway) {
-            return;
-        }
-
-        final ActivityStack focusedStack = mStackSupervisor.getFocusedStack();
-        if (focusedStack != null) {
-            final ActivityRecord top = focusedStack.topActivity();
-            if (top != null && top.userId != mLastFocusedUserId) {
-                mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG);
-                mHandler.sendMessage(
-                        mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG, top.userId, 0));
-                mLastFocusedUserId = top.userId;
-            }
-        }
-
-        // Try to move focus to another activity if possible.
-        if (setFocusedActivityLocked(
-                focusedStack.topRunningActivityLocked(), "resetFocusedActivityIfNeeded")) {
-            return;
-        }
-
-        if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "resetFocusedActivityIfNeeded: Setting focus to NULL "
-                + "prev mFocusedActivity=" + mFocusedActivity + " goingAway=" + goingAway);
-        mFocusedActivity = null;
-        EventLogTags.writeAmFocusedActivity(-1, "NULL", "resetFocusedActivityIfNeeded");
     }
 
     @Override
@@ -3073,7 +3033,7 @@
                     return;
                 }
                 final ActivityRecord r = stack.topRunningActivityLocked();
-                if (setFocusedActivityLocked(r, "setFocusedStack")) {
+                if (mStackSupervisor.moveFocusableActivityStackToFrontLocked(r, "setFocusedStack")) {
                     mStackSupervisor.resumeFocusedStackTopActivityLocked();
                 }
             }
@@ -3094,7 +3054,7 @@
                     return;
                 }
                 final ActivityRecord r = task.topRunningActivityLocked();
-                if (setFocusedActivityLocked(r, "setFocusedTask")) {
+                if (mStackSupervisor.moveFocusableActivityStackToFrontLocked(r, "setFocusedTask")) {
                     mStackSupervisor.resumeFocusedStackTopActivityLocked();
                 }
             }
@@ -6722,7 +6682,7 @@
 
                     // Some stack visibility might change (e.g. docked stack)
                     mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
-                    applyVrModeIfNeededLocked(mFocusedActivity, true);
+                    applyVrModeIfNeededLocked(mStackSupervisor.getResumedActivityLocked(), true);
                 }
             }
         } finally {
@@ -9386,16 +9346,6 @@
                     Slog.w(TAG, "resizeTask: taskId=" + taskId + " not found");
                     return;
                 }
-                int stackId = task.stack.mStackId;
-                // We allow the task to scroll instead of resizing if this is a non-resizeable task
-                // in crop windows resize mode or if the task size is affected by the docked stack
-                // changing size. No need to update configuration.
-                if (bounds != null && task.inCropWindowsResizeMode()
-                        && mStackSupervisor.isStackDockedInEffect(stackId)) {
-                    mWindowManager.scrollTask(task.taskId, bounds);
-                    return;
-                }
-
                 // Place the task in the right stack if it isn't there already based on
                 // the requested bounds.
                 // The stack transition logic is:
@@ -9403,6 +9353,7 @@
                 // - a non-null bounds on a non-freeform (fullscreen OR docked) task moves
                 //   that task to freeform
                 // - otherwise the task is not moved
+                int stackId = task.stack.mStackId;
                 if (!StackId.isTaskResizeAllowed(stackId)) {
                     throw new IllegalArgumentException("resizeTask not allowed on task=" + task);
                 }
@@ -11585,8 +11536,9 @@
     }
 
     void startTimeTrackingFocusedActivityLocked() {
-        if (!mSleeping && mCurAppTimeTracker != null && mFocusedActivity != null) {
-            mCurAppTimeTracker.start(mFocusedActivity.packageName);
+        final ActivityRecord resumedActivity = mStackSupervisor.getResumedActivityLocked();
+        if (!mSleeping && mCurAppTimeTracker != null && resumedActivity != null) {
+            mCurAppTimeTracker.start(resumedActivity.packageName);
         }
     }
 
@@ -12059,6 +12011,9 @@
             case ActivityManager.BUGREPORT_OPTION_REMOTE:
                 service = "bugreportremote";
                 break;
+            case ActivityManager.BUGREPORT_OPTION_WEAR:
+                service = "bugreportwear";
+                break;
         }
         if (service == null) {
             throw new IllegalArgumentException("Provided bugreport type is not correct, value: "
@@ -12527,7 +12482,7 @@
             r.immersive = immersive;
 
             // update associated state if we're frontmost
-            if (r == mFocusedActivity) {
+            if (r == mStackSupervisor.getResumedActivityLocked()) {
                 if (DEBUG_IMMERSIVE) Slog.d(TAG_IMMERSIVE, "Frontmost changed immersion: "+ r);
                 applyUpdateLockStateLocked(r);
             }
@@ -12638,7 +12593,7 @@
             r.requestedVrComponent = (enabled) ? packageName : null;
 
             // Update associated state if this activity is currently focused
-            if (r == mFocusedActivity) {
+            if (r == mStackSupervisor.getResumedActivityLocked()) {
                 applyUpdateVrModeLocked(r);
             }
             return 0;
@@ -13612,7 +13567,7 @@
             sb.append("Process: ").append(processName).append("\n");
             int flags = process.info.flags;
             IPackageManager pm = AppGlobals.getPackageManager();
-            sb.append("Flags: 0x").append(Integer.toString(flags, 16)).append("\n");
+            sb.append("Flags: 0x").append(Integer.toHexString(flags)).append("\n");
             for (int ip=0; ip<process.pkgList.size(); ip++) {
                 String pkg = process.pkgList.keyAt(ip);
                 sb.append("Package: ").append(pkg);
@@ -13971,6 +13926,7 @@
         boolean dumpClient = false;
         boolean dumpCheckin = false;
         boolean dumpCheckinFormat = false;
+        boolean dumpVisibleStacks = false;
         String dumpPackage = null;
 
         int opti = 0;
@@ -13984,6 +13940,8 @@
                 dumpAll = true;
             } else if ("-c".equals(opt)) {
                 dumpClient = true;
+            } else if ("-v".equals(opt)) {
+                dumpVisibleStacks = true;
             } else if ("-p".equals(opt)) {
                 if (opti < args.length) {
                     dumpPackage = args[opti];
@@ -14170,7 +14128,7 @@
                 LockGuard.dump(fd, pw, args);
             } else {
                 // Dumping a single activity?
-                if (!dumpActivity(fd, pw, cmd, args, opti, dumpAll)) {
+                if (!dumpActivity(fd, pw, cmd, args, opti, dumpAll, dumpVisibleStacks)) {
                     ActivityManagerShellCommand shell = new ActivityManagerShellCommand(this, true);
                     int res = shell.exec(this, null, fd, null, args, new ResultReceiver(null));
                     if (res < 0) {
@@ -14313,8 +14271,9 @@
                 dumpPackage);
         boolean needSep = printedAnything;
 
-        boolean printed = ActivityStackSupervisor.printThisActivity(pw, mFocusedActivity,
-                dumpPackage, needSep, "  mFocusedActivity: ");
+        boolean printed = ActivityStackSupervisor.printThisActivity(pw,
+                mStackSupervisor.getResumedActivityLocked(),
+                dumpPackage, needSep, "  ResumedActivity: ");
         if (printed) {
             printedAnything = true;
             needSep = false;
@@ -15038,11 +14997,11 @@
      *  - A hex number of the ActivityRecord object instance.
      */
     protected boolean dumpActivity(FileDescriptor fd, PrintWriter pw, String name, String[] args,
-            int opti, boolean dumpAll) {
+            int opti, boolean dumpAll, boolean dumpVisibleStacks) {
         ArrayList<ActivityRecord> activities;
 
         synchronized (this) {
-            activities = mStackSupervisor.getDumpActivitiesLocked(name);
+            activities = mStackSupervisor.getDumpActivitiesLocked(name, dumpVisibleStacks);
         }
 
         if (activities.size() <= 0) {
@@ -18693,7 +18652,7 @@
 
         synchronized(this) {
             final long origId = Binder.clearCallingIdentity();
-            updateConfigurationLocked(values, null, false, true, userId);
+            updateConfigurationLocked(values, null, false, true, userId, false /* deferResume */);
             Binder.restoreCallingIdentity(origId);
         }
     }
@@ -18761,11 +18720,16 @@
         updateConfigurationLocked(configuration, null, false);
     }
 
-    boolean updateConfigurationLocked(Configuration values,
-            ActivityRecord starting, boolean initLocale) {
+    boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
+            boolean initLocale) {
+        return updateConfigurationLocked(values, starting, initLocale, false /* deferResume */);
+    }
+
+    boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
+            boolean initLocale, boolean deferResume) {
         // pass UserHandle.USER_NULL as userId because we don't persist configuration for any user
-        return updateConfigurationLocked(values, starting, initLocale, false,
-                UserHandle.USER_NULL);
+        return updateConfigurationLocked(values, starting, initLocale, false /* persistent */,
+                UserHandle.USER_NULL, deferResume);
     }
 
     // To cache the list of supported system locales
@@ -18781,8 +18745,8 @@
      * @param userId is only used when persistent parameter is set to true to persist configuration
      *               for that particular user
      */
-    private boolean updateConfigurationLocked(Configuration values,
-            ActivityRecord starting, boolean initLocale, boolean persistent, int userId) {
+    private boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
+            boolean initLocale, boolean persistent, int userId, boolean deferResume) {
         int changes = 0;
 
         if (mWindowManager != null) {
@@ -18881,15 +18845,6 @@
                         null, AppOpsManager.OP_NONE, null, false, false,
                         MY_PID, Process.SYSTEM_UID, UserHandle.USER_ALL);
                 if ((changes&ActivityInfo.CONFIG_LOCALE) != 0) {
-                    // Tell the shortcut manager that the system locale changed.  It needs to know
-                    // it before any other apps receive ACTION_LOCALE_CHANGED, which is why
-                    // we "push" from here, rather than having the service listen to the broadcast.
-                    final ShortcutServiceInternal shortcutService =
-                            LocalServices.getService(ShortcutServiceInternal.class);
-                    if (shortcutService != null) {
-                        shortcutService.onSystemLocaleChangedNoLock();
-                    }
-
                     intent = new Intent(Intent.ACTION_LOCALE_CHANGED);
                     intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
                     if (!mProcessesReady) {
@@ -18910,7 +18865,7 @@
                     for (int stackId : resizedStacks) {
                         final Rect newBounds = mWindowManager.getBoundsForNewConfiguration(stackId);
                         mStackSupervisor.resizeStackLocked(
-                                stackId, newBounds, null, null, false, false, !DEFER_RESUME);
+                                stackId, newBounds, null, null, false, false, deferResume);
                     }
                 }
             }
@@ -20280,10 +20235,12 @@
                         if (mUseFifoUiScheduling) {
                             // Reset UI pipeline to SCHED_OTHER
                             Process.setThreadScheduler(app.pid, Process.SCHED_OTHER, 0);
-                            Process.setThreadScheduler(app.renderThreadTid,
-                                Process.SCHED_OTHER, 0);
                             Process.setThreadPriority(app.pid, app.savedPriority);
-                            Process.setThreadPriority(app.renderThreadTid, -4);
+                            if (app.renderThreadTid != 0) {
+                                Process.setThreadScheduler(app.renderThreadTid,
+                                    Process.SCHED_OTHER, 0);
+                                Process.setThreadPriority(app.renderThreadTid, -4);
+                            }
                         }
                     }
                 } catch (Exception e) {
@@ -20593,7 +20550,7 @@
     }
 
     private final ActivityRecord resumedAppLocked() {
-        ActivityRecord act = mStackSupervisor.resumedAppLocked();
+        ActivityRecord act = mStackSupervisor.getResumedActivityLocked();
         String pkg;
         int uid;
         if (act != null) {
@@ -21677,10 +21634,11 @@
             ComponentName callingVrActivity = null;
             int userId = -1;
             synchronized (ActivityManagerService.this) {
-                if (mFocusedActivity != null) {
-                    requestedVrService = mFocusedActivity.requestedVrComponent;
-                    callingVrActivity = mFocusedActivity.info.getComponentName();
-                    userId = mFocusedActivity.userId;
+                final ActivityRecord resumedActivity = mStackSupervisor.getResumedActivityLocked();
+                if (resumedActivity != null) {
+                    requestedVrService = resumedActivity.requestedVrComponent;
+                    callingVrActivity = resumedActivity.info.getComponentName();
+                    userId = resumedActivity.userId;
                 }
             }
 
@@ -21807,16 +21765,19 @@
             Preconditions.checkNotNull(values, "Configuration must not be null");
             Preconditions.checkArgumentNonnegative(userId, "userId " + userId + " not supported");
             synchronized (ActivityManagerService.this) {
-                updateConfigurationLocked(values, null, false, true, userId);
+                updateConfigurationLocked(values, null, false, true, userId,
+                        false /* deferResume */);
             }
         }
 
         @Override
-        public IIntentSender getActivityIntentSenderAsPackage(
-                String packageName, int userId, int requestCode, Intent intent,
-                int flags, Bundle bOptions) {
-            String resolvedType = intent != null ? intent.resolveTypeIfNeeded(
-                    mContext.getContentResolver()) : null;
+        public int startActivitiesAsPackage(String packageName, int userId, Intent[] intents,
+                Bundle bOptions) {
+            Preconditions.checkNotNull(intents, "intents");
+            final String[] resolvedTypes = new String[intents.length];
+            for (int i = 0; i < intents.length; i++) {
+                resolvedTypes[i] = intents[i].resolveTypeIfNeeded(mContext.getContentResolver());
+            }
 
             // UID of the package on user userId.
             // "= 0" is needed because otherwise catch(RemoteException) would make it look like
@@ -21830,11 +21791,8 @@
             }
 
             synchronized (ActivityManagerService.this) {
-                return getIntentSenderLocked(
-                        ActivityManager.INTENT_SENDER_ACTIVITY, packageName, packageUid,
-                        UserHandle.getUserId(packageUid), /*token*/ null, /*resultWho*/ null,
-                        requestCode, new Intent[] {intent}, new String[]{resolvedType},
-                        flags, bOptions);
+                return startActivitiesInPackage(packageUid, packageName, intents, resolvedTypes,
+                        /*resultTo*/ null, bOptions, userId);
             }
         }
     }
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index a102664..e4c7c8b 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -895,14 +895,10 @@
     }
 
     void minimalResumeActivityLocked(ActivityRecord r) {
-        r.state = ActivityState.RESUMED;
         if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to RESUMED: " + r + " (starting new instance)"
                 + " callers=" + Debug.getCallers(5));
-        mResumedActivity = r;
-        r.task.touchActiveTime();
-        mRecentTasks.addLocked(r.task);
+        setResumedActivityLocked(r, "minimalResumeActivityLocked");
         completeResumeLocked(r);
-        mStackSupervisor.checkReadyForSleepLocked();
         setLaunchTime(r);
         if (DEBUG_SAVED_STATE) Slog.i(TAG_SAVED_STATE,
                 "Launch completed; removing icicle of " + r.icicle);
@@ -1431,6 +1427,7 @@
             // When resuming an activity, require it to call requestVisibleBehind() again.
             setVisibleBehindActivity(null);
         }
+        mStackSupervisor.checkReadyForSleepLocked();
     }
 
     private void setVisible(ActivityRecord r, boolean visible) {
@@ -2051,6 +2048,14 @@
         // We don't want to clear starting window for activities that aren't behind fullscreen
         // activities as we need to display their starting window until they are done initializing.
         boolean behindFullscreenActivity = false;
+
+        if (getStackVisibilityLocked(null) == STACK_INVISIBLE) {
+            // The stack is not visible, so no activity in it should be displaying a starting
+            // window. Mark all activities below top and behind fullscreen.
+            aboveTop = false;
+            behindFullscreenActivity = true;
+        }
+
         for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
             final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities;
             for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
@@ -2113,6 +2118,15 @@
         return result;
     }
 
+    void setResumedActivityLocked(ActivityRecord r, String reason) {
+        // TODO: move mResumedActivity to stack supervisor,
+        // there should only be 1 global copy of resumed activity.
+        mResumedActivity = r;
+        mService.setResumedActivityUncheckLocked(r, reason);
+        r.task.touchActiveTime();
+        mRecentTasks.addLocked(r.task);
+    }
+
     private boolean resumeTopActivityInnerLocked(ActivityRecord prev, ActivityOptions options) {
         if (DEBUG_LOCKSCREEN) mService.logLockScreen("");
 
@@ -2420,10 +2434,9 @@
             mService.updateCpuStats();
 
             if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to RESUMED: " + next + " (in existing)");
-            next.state = ActivityState.RESUMED;
-            mResumedActivity = next;
-            next.task.touchActiveTime();
-            mRecentTasks.addLocked(next.task);
+
+            setResumedActivityLocked(next, "resumeTopActivityInnerLocked");
+
             mService.updateLruProcessLocked(next.app, true, null);
             updateLRUListLocked(next);
             mService.updateOomAdjLocked();
@@ -2496,8 +2509,6 @@
                 next.app.thread.scheduleResumeActivity(next.appToken, next.app.repProcState,
                         mService.isNextTransitionForward(), resumeAnimOptions);
 
-                mStackSupervisor.checkReadyForSleepLocked();
-
                 if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Resumed " + next);
             } catch (Exception e) {
                 // Whoops, need to restart this activity!
@@ -3165,8 +3176,8 @@
         r.addResultLocked(null, resultWho, requestCode, resultCode, data);
     }
 
-    private void adjustFocusedActivityLocked(ActivityRecord r, String reason) {
-        if (!mStackSupervisor.isFocusedStack(this) || mService.mFocusedActivity != r) {
+    private void adjustFocusedActivityStackLocked(ActivityRecord r, String reason) {
+        if (!mStackSupervisor.isFocusedStack(this) || mResumedActivity != r) {
             return;
         }
 
@@ -3175,9 +3186,7 @@
         if (next != r) {
             if (next != null && StackId.keepFocusInStackIfPossible(mStackId) && isFocusable()) {
                 // For freeform, docked, and pinned stacks we always keep the focus within the
-                // stack as long as there is a running activity in the stack that we can adjust
-                // focus to.
-                mService.setFocusedActivityLocked(next, myReason);
+                // stack as long as there is a running activity.
                 return;
             } else {
                 final TaskRecord task = r.task;
@@ -3201,7 +3210,8 @@
             }
         }
 
-        mService.setFocusedActivityLocked(mStackSupervisor.topRunningActivityLocked(), myReason);
+        mStackSupervisor.moveFocusableActivityStackToFrontLocked(
+                mStackSupervisor.topRunningActivityLocked(), myReason);
     }
 
     private boolean adjustFocusToNextFocusableStackLocked(int taskToReturnTo, String reason) {
@@ -3218,7 +3228,9 @@
             // visible, then use the task return to value to determine the home task to display next.
             return mStackSupervisor.moveHomeStackTaskToTop(taskToReturnTo, reason);
         }
-        return mService.setFocusedActivityLocked(top, myReason);
+
+        stack.moveToFront(myReason);
+        return true;
     }
 
     final void stopActivityLocked(ActivityRecord r) {
@@ -3231,7 +3243,7 @@
                     if (requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null,
                             "stop-no-history", false)) {
                         // Activity was finished, no need to continue trying to schedule stop.
-                        adjustFocusedActivityLocked(r, "stopActivityFinished");
+                        adjustFocusedActivityStackLocked(r, "stopActivityFinished");
                         r.resumeKeyDispatchingLocked();
                         return;
                     }
@@ -3243,7 +3255,7 @@
         }
 
         if (r.app != null && r.app.thread != null) {
-            adjustFocusedActivityLocked(r, "stopActivity");
+            adjustFocusedActivityStackLocked(r, "stopActivity");
             r.resumeKeyDispatchingLocked();
             try {
                 r.stopped = false;
@@ -3470,7 +3482,7 @@
 
         r.pauseKeyDispatchingLocked();
 
-        adjustFocusedActivityLocked(r, "finishActivity");
+        adjustFocusedActivityStackLocked(r, "finishActivity");
 
         finishActivityResultsLocked(r, resultCode, resultData);
 
@@ -3731,7 +3743,6 @@
         if (mPausingActivity == r) {
             mPausingActivity = null;
         }
-        mService.resetFocusedActivityIfNeededLocked(r);
 
         r.deferRelaunchUntilPaused = false;
         r.frozenBeforeDestroy = false;
@@ -4290,7 +4301,7 @@
 
         // Set focus to the top running activity of this stack.
         ActivityRecord r = topRunningActivityLocked();
-        mService.setFocusedActivityLocked(r, reason);
+        mStackSupervisor.moveFocusableActivityStackToFrontLocked(r, reason);
 
         if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare to front transition: task=" + tr);
         if (noAnimation) {
@@ -4365,7 +4376,7 @@
                     mStackSupervisor.getStack(FULLSCREEN_WORKSPACE_STACK_ID);
             if (fullscreenStack != null && fullscreenStack.hasVisibleBehindActivity()) {
                 final ActivityRecord visibleBehind = fullscreenStack.getVisibleBehindActivity();
-                mService.setFocusedActivityLocked(visibleBehind, "moveTaskToBack");
+                mStackSupervisor.moveFocusableActivityStackToFrontLocked(visibleBehind, "moveTaskToBack");
                 mStackSupervisor.resumeFocusedStackTopActivityLocked();
                 return true;
             }
@@ -4750,6 +4761,7 @@
             // code in resumeTopActivityInnerLocked to complete the resume might be skipped.
             if (!r.visible || r.stopped) {
                 mWindowManager.setAppVisibility(r.appToken, true);
+                setResumedActivityLocked(r, "relaunchActivityLocked");
                 completeResumeLocked(r);
             } else {
                 r.results = null;
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 82668e4..6368f5d 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -128,6 +128,7 @@
 import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONTAINERS;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOCUS;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_IDLE;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKSCREEN;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK;
@@ -140,6 +141,7 @@
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_TASKS;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_VISIBLE_BEHIND;
 import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CONTAINERS;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_FOCUS;
 import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_IDLE;
 import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK;
 import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_PAUSE;
@@ -180,6 +182,7 @@
 public final class ActivityStackSupervisor implements DisplayListener {
     private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStackSupervisor" : TAG_AM;
     private static final String TAG_CONTAINERS = TAG + POSTFIX_CONTAINERS;
+    private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS;
     private static final String TAG_IDLE = TAG + POSTFIX_IDLE;
     private static final String TAG_LOCKTASK = TAG + POSTFIX_LOCKTASK;
     private static final String TAG_PAUSE = TAG + POSTFIX_PAUSE;
@@ -613,12 +616,6 @@
         }
 
         final ActivityRecord r = topRunningActivityLocked();
-        if (!mService.mDoingSetFocusedActivity && mService.mFocusedActivity != r) {
-            // The focus activity should always be the top activity in the focused stack.
-            // There will be chaos and anarchy if it isn't...
-            mService.setFocusedActivityLocked(r, reason + " setFocusStack");
-        }
-
         if (mService.mBooting || !mService.mBooted) {
             if (r != null && r.idle) {
                 checkFinishBootingLocked();
@@ -643,7 +640,7 @@
         if (top == null) {
             return false;
         }
-        mService.setFocusedActivityLocked(top, reason);
+        moveFocusableActivityStackToFrontLocked(top, reason);
         return true;
     }
 
@@ -668,7 +665,7 @@
 
         // Only resume home activity if isn't finishing.
         if (r != null && !r.finishing) {
-            mService.setFocusedActivityLocked(r, myReason);
+            moveFocusableActivityStackToFrontLocked(r, myReason);
             return resumeFocusedStackTopActivityLocked(mHomeStack, prev, null);
         }
         return mService.startHomeActivityLocked(mCurrentUser, myReason);
@@ -807,7 +804,7 @@
         return candidateTaskId;
     }
 
-    ActivityRecord resumedAppLocked() {
+    ActivityRecord getResumedActivityLocked() {
         ActivityStack stack = mFocusedStack;
         if (stack == null) {
             return null;
@@ -1189,7 +1186,10 @@
             Configuration config = mWindowManager.updateOrientationFromAppTokens(
                     mService.mConfiguration,
                     r.mayFreezeScreenLocked(app) ? r.appToken : null);
-            mService.updateConfigurationLocked(config, r, false);
+            // Deferring resume here because we're going to launch new activity shortly.
+            // We don't want to perform a redundant launch of the same record while ensuring
+            // configurations and trying to resume top activity of focused stack.
+            mService.updateConfigurationLocked(config, r, false, true /* deferResume */);
         }
 
         r.app = app;
@@ -1539,20 +1539,6 @@
         return ACTIVITY_RESTRICTION_NONE;
     }
 
-    boolean moveActivityStackToFront(ActivityRecord r, String reason) {
-        if (r == null) {
-            // Not sure what you are trying to do, but it is not going to work...
-            return false;
-        }
-        final TaskRecord task = r.task;
-        if (task == null || task.stack == null) {
-            Slog.w(TAG, "Can't move stack to front for r=" + r + " task=" + task);
-            return false;
-        }
-        task.stack.moveToFront(reason, task);
-        return true;
-    }
-
     void setLaunchSource(int uid) {
         mLaunchingActivity.setWorkSource(new WorkSource(uid));
     }
@@ -2004,7 +1990,7 @@
             boolean preserveWindows, boolean allowResizeInDockedMode, boolean deferResume) {
         if (stackId == DOCKED_STACK_ID) {
             resizeDockedStackLocked(bounds, tempTaskBounds, tempTaskInsetBounds, null, null,
-                    preserveWindows);
+                    preserveWindows, deferResume);
             return;
         }
         final ActivityStack stack = getStack(stackId);
@@ -2154,8 +2140,16 @@
     }
 
     void resizeDockedStackLocked(Rect dockedBounds, Rect tempDockedTaskBounds,
-            Rect tempDockedTaskInsetBounds,
-            Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds, boolean preserveWindows) {
+            Rect tempDockedTaskInsetBounds, Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds,
+            boolean preserveWindows) {
+        resizeDockedStackLocked(dockedBounds, tempDockedTaskBounds, tempDockedTaskInsetBounds,
+                tempOtherTaskBounds, tempOtherTaskInsetBounds, preserveWindows,
+                false /* deferResume */);
+    }
+
+    void resizeDockedStackLocked(Rect dockedBounds, Rect tempDockedTaskBounds,
+            Rect tempDockedTaskInsetBounds, Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds,
+            boolean preserveWindows, boolean deferResume) {
 
         if (!mAllowDockedStackResize) {
             // Docked stack resize currently disabled.
@@ -2198,11 +2192,13 @@
                     if (StackId.isResizeableByDockedStack(i) && getStack(i) != null) {
                         resizeStackLocked(i, tempRect, tempOtherTaskBounds,
                                 tempOtherTaskInsetBounds, preserveWindows,
-                                true /* allowResizeInDockedMode */, !DEFER_RESUME);
+                                true /* allowResizeInDockedMode */, deferResume);
                     }
                 }
             }
-            stack.ensureVisibleActivitiesConfigurationLocked(r, preserveWindows);
+            if (!deferResume) {
+                stack.ensureVisibleActivitiesConfigurationLocked(r, preserveWindows);
+            }
         } finally {
             mAllowDockedStackResize = true;
             mWindowManager.continueSurfaceLayout();
@@ -2591,6 +2587,34 @@
         mService.notifyActivityPinnedLocked();
     }
 
+    boolean moveFocusableActivityStackToFrontLocked(ActivityRecord r, String reason) {
+        if (r == null || !r.isFocusable()) {
+            if (DEBUG_FOCUS) Slog.d(TAG_FOCUS,
+                    "moveActivityStackToFront: unfocusable r=" + r);
+            return false;
+        }
+
+        final TaskRecord task = r.task;
+        if (task == null || task.stack == null) {
+            Slog.w(TAG, "moveActivityStackToFront: invalid task or stack: r="
+                    + r + " task=" + task);
+            return false;
+        }
+
+        final ActivityStack stack = task.stack;
+        if (stack == mFocusedStack && stack.topRunningActivityLocked() == r) {
+            if (DEBUG_FOCUS) Slog.d(TAG_FOCUS,
+                    "moveActivityStackToFront: already on top, r=" + r);
+            return false;
+        }
+
+        if (DEBUG_FOCUS) Slog.d(TAG_FOCUS,
+                "moveActivityStackToFront: r=" + r);
+
+        stack.moveToFront(reason, task);
+        return true;
+    }
+
     void positionTaskInStackLocked(int taskId, int stackId, int position) {
         final TaskRecord task = anyTaskForIdLocked(taskId);
         if (task == null) {
@@ -3061,7 +3085,7 @@
         final boolean nowVisible = allResumedActivitiesVisible();
         for (int activityNdx = mStoppingActivities.size() - 1; activityNdx >= 0; --activityNdx) {
             ActivityRecord s = mStoppingActivities.get(activityNdx);
-            final boolean waitingVisible = mWaitingVisibleActivities.contains(s);
+            boolean waitingVisible = mWaitingVisibleActivities.contains(s);
             if (DEBUG_STATES) Slog.v(TAG, "Stopping " + s + ": nowVisible=" + nowVisible
                     + " waitingVisible=" + waitingVisible + " finishing=" + s.finishing);
             if (waitingVisible && nowVisible) {
@@ -3074,6 +3098,7 @@
                     // hidden by the activities in front of it.
                     if (DEBUG_STATES) Slog.v(TAG, "Before stopping, can hide: " + s);
                     mWindowManager.setAppVisibility(s.appToken, false);
+                    waitingVisible = false;
                 }
             }
             if ((!waitingVisible || mService.isSleepingOrShuttingDownLocked()) && remove) {
@@ -3152,8 +3177,27 @@
                 pw.println(" mLockTaskModeTasks" + mLockTaskModeTasks);
     }
 
-    ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) {
-        return mFocusedStack.getDumpActivitiesLocked(name);
+    /**
+     * Dumps the activities matching the given {@param name} in the either the focused stack
+     * or all visible stacks if {@param dumpVisibleStacks} is true.
+     */
+    ArrayList<ActivityRecord> getDumpActivitiesLocked(String name, boolean dumpVisibleStacks) {
+        if (dumpVisibleStacks) {
+            ArrayList<ActivityRecord> activities = new ArrayList<>();
+            int numDisplays = mActivityDisplays.size();
+            for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
+                ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
+                for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
+                    ActivityStack stack = stacks.get(stackNdx);
+                    if (stack.getStackVisibilityLocked(null) == STACK_VISIBLE) {
+                        activities.addAll(stack.getDumpActivitiesLocked(name));
+                    }
+                }
+            }
+            return activities;
+        } else {
+            return mFocusedStack.getDumpActivitiesLocked(name);
+        }
     }
 
     static boolean printThisActivity(PrintWriter pw, ActivityRecord activity, String dumpPackage,
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index 53289be..399ca9e 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -1023,6 +1023,7 @@
             // as the first operation, in case the activity will be resumed as a result of later
             // operations.
             if ((mLaunchFlags & FLAG_ACTIVITY_CLEAR_TOP) != 0
+                    || isDocumentLaunchesIntoExisting(mLaunchFlags)
                     || mLaunchSingleInstance || mLaunchSingleTask) {
                 // In this situation we want to remove all activities from the task up to the one
                 // being started. In most cases this means we are resetting the task to its initial
@@ -1111,49 +1112,24 @@
                 ? mSourceRecord.task : null;
 
         // Should this be considered a new task?
+        int result = START_SUCCESS;
         if (mStartActivity.resultTo == null && mInTask == null && !mAddingToTask
                 && (mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) != 0) {
             newTask = true;
-            setTaskFromReuseOrCreateNewTask(taskToAffiliate);
-
-            if (mSupervisor.isLockTaskModeViolation(mStartActivity.task)) {
-                Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
-                return START_RETURN_LOCK_TASK_MODE_VIOLATION;
-            }
-            if (!mMovedOtherTask) {
-                // If stack id is specified in activity options, usually it means that activity is
-                // launched not from currently focused stack (e.g. from SysUI or from shell) - in
-                // that case we check the target stack.
-                updateTaskReturnToType(mStartActivity.task, mLaunchFlags,
-                        preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : topStack);
-            }
+            result = setTaskFromReuseOrCreateNewTask(
+                    taskToAffiliate, preferredLaunchStackId, topStack);
         } else if (mSourceRecord != null) {
-            if (mSupervisor.isLockTaskModeViolation(mSourceRecord.task)) {
-                Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
-                return START_RETURN_LOCK_TASK_MODE_VIOLATION;
-            }
-
-            final int result = setTaskFromSourceRecord();
-            if (result != START_SUCCESS) {
-                return result;
-            }
+            result = setTaskFromSourceRecord();
         } else if (mInTask != null) {
-            // The caller is asking that the new activity be started in an explicit
-            // task it has provided to us.
-            if (mSupervisor.isLockTaskModeViolation(mInTask)) {
-                Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
-                return START_RETURN_LOCK_TASK_MODE_VIOLATION;
-            }
-
-            final int result = setTaskFromInTask();
-            if (result != START_SUCCESS) {
-                return result;
-            }
+            result = setTaskFromInTask();
         } else {
             // This not being started from an existing activity, and not part of a new task...
             // just put it in the top task, though these days this case should never happen.
             setTaskToCurrentTopOrCreateNewTask();
         }
+        if (result != START_SUCCESS) {
+            return result;
+        }
 
         mService.grantUriPermissionFromIntentLocked(mCallingUid, mStartActivity.packageName,
                 mIntent, mStartActivity.getUriPermissionsLocked(), mStartActivity.userId);
@@ -1173,12 +1149,6 @@
 
         mTargetStack.startActivityLocked(mStartActivity, newTask, mKeepCurTransition, mOptions);
         if (mDoResume) {
-            if (!mLaunchTaskBehind) {
-                // TODO(b/26381750): Remove this code after verification that all the decision
-                // points above moved targetStack to the front which will also set the focus
-                // activity.
-                mService.setFocusedActivityLocked(mStartActivity, "startedActivity");
-            }
             final ActivityRecord topTaskActivity = mStartActivity.task.topRunningActivityLocked();
             if (!mTargetStack.isFocusable()
                     || (topTaskActivity != null && topTaskActivity.mTaskOverlay
@@ -1653,9 +1623,13 @@
         mSupervisor.updateUserStackLocked(mStartActivity.userId, mTargetStack);
     }
 
-    private void setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) {
-        mTargetStack = computeStackFocus(mStartActivity, true, mLaunchBounds, mLaunchFlags,
-                mOptions);
+    private int setTaskFromReuseOrCreateNewTask(
+            TaskRecord taskToAffiliate, int preferredLaunchStackId, ActivityStack topStack) {
+        mTargetStack = computeStackFocus(
+                mStartActivity, true, mLaunchBounds, mLaunchFlags, mOptions);
+
+        // Do no move the target stack to front yet, as we might bail if
+        // isLockTaskModeViolation fails below.
 
         if (mReuseTask == null) {
             final TaskRecord task = mTargetStack.createTaskRecord(
@@ -1679,9 +1653,31 @@
         } else {
             mStartActivity.setTask(mReuseTask, taskToAffiliate);
         }
+
+        if (mSupervisor.isLockTaskModeViolation(mStartActivity.task)) {
+            Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
+            return START_RETURN_LOCK_TASK_MODE_VIOLATION;
+        }
+
+        if (!mMovedOtherTask) {
+            // If stack id is specified in activity options, usually it means that activity is
+            // launched not from currently focused stack (e.g. from SysUI or from shell) - in
+            // that case we check the target stack.
+            updateTaskReturnToType(mStartActivity.task, mLaunchFlags,
+                    preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : topStack);
+        }
+        if (mDoResume) {
+            mTargetStack.moveToFront("reuseOrNewTask");
+        }
+        return START_SUCCESS;
     }
 
     private int setTaskFromSourceRecord() {
+        if (mSupervisor.isLockTaskModeViolation(mSourceRecord.task)) {
+            Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
+            return START_RETURN_LOCK_TASK_MODE_VIOLATION;
+        }
+
         final TaskRecord sourceTask = mSourceRecord.task;
         // We only want to allow changing stack if the target task is not the top one,
         // otherwise we would move the launching task to the other side, rather than show
@@ -1698,14 +1694,15 @@
             mSupervisor.moveTaskToStackLocked(sourceTask.taskId, mTargetStack.mStackId,
                     ON_TOP, FORCE_FOCUS, "launchToSide", !ANIMATE);
         }
-        if (mDoResume) {
-            mTargetStack.moveToFront("sourceStackToFront");
-        }
+
         final TaskRecord topTask = mTargetStack.topTask();
         if (topTask != sourceTask && !mAvoidMoveToFront) {
             mTargetStack.moveTaskToFrontLocked(sourceTask, mNoAnimation, mOptions,
                     mStartActivity.appTimeTracker, "sourceTaskToFront");
+        } else if (mDoResume) {
+            mTargetStack.moveToFront("sourceStackToFront");
         }
+
         if (!mAddingToTask && (mLaunchFlags & FLAG_ACTIVITY_CLEAR_TOP) != 0) {
             // In this case, we are adding the activity to an existing task, but the caller has
             // asked to clear that task if the activity is already running.
@@ -1750,6 +1747,13 @@
     }
 
     private int setTaskFromInTask() {
+        // The caller is asking that the new activity be started in an explicit
+        // task it has provided to us.
+        if (mSupervisor.isLockTaskModeViolation(mInTask)) {
+            Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity);
+            return START_RETURN_LOCK_TASK_MODE_VIOLATION;
+        }
+
         if (mLaunchBounds != null) {
             mInTask.updateOverrideConfiguration(mLaunchBounds);
             int stackId = mInTask.getLaunchStackId();
@@ -2039,4 +2043,9 @@
             }
         }
     }
+
+    static boolean isDocumentLaunchesIntoExisting(int flags) {
+        return (flags & Intent.FLAG_ACTIVITY_NEW_DOCUMENT) != 0 &&
+                (flags & Intent.FLAG_ACTIVITY_MULTIPLE_TASK) == 0;
+    }
 }
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index 49106f4..5807502 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -58,6 +58,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Set;
 import java.util.concurrent.Semaphore;
 
 import static com.android.server.Watchdog.NATIVE_STACKS_OF_INTEREST;
@@ -386,8 +387,8 @@
                     } catch (IllegalArgumentException e) {
                         // Hmm, that didn't work, app might have crashed before creating a
                         // recents entry. Let's see if we have a safe-to-restart intent.
-                        if (task.intent.getCategories().contains(
-                                Intent.CATEGORY_LAUNCHER)) {
+                        final Set<String> cats = task.intent.getCategories();
+                        if (cats != null && cats.contains(Intent.CATEGORY_LAUNCHER)) {
                             mService.startActivityInPackage(task.mCallingUid,
                                     task.mCallingPackage, task.intent,
                                     null, null, null, 0, 0,
@@ -742,6 +743,12 @@
             mService.updateCpuStatsNow();
         }
 
+        // Unless configured otherwise, swallow ANRs in background processes & kill the process.
+        boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;
+
+        boolean isSilentANR;
+
         synchronized (mService) {
             // PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down.
             if (mService.mShuttingDown) {
@@ -766,25 +773,29 @@
             // Dump thread traces as quickly as we can, starting with "interesting" processes.
             firstPids.add(app.pid);
 
-            int parentPid = app.pid;
-            if (parent != null && parent.app != null && parent.app.pid > 0) {
-                parentPid = parent.app.pid;
-            }
-            if (parentPid != app.pid) firstPids.add(parentPid);
+            // Don't dump other PIDs if it's a background ANR
+            isSilentANR = !showBackground && !app.isInterestingToUserLocked() && app.pid != MY_PID;
+            if (!isSilentANR) {
+                int parentPid = app.pid;
+                if (parent != null && parent.app != null && parent.app.pid > 0) {
+                    parentPid = parent.app.pid;
+                }
+                if (parentPid != app.pid) firstPids.add(parentPid);
 
-            if (MY_PID != app.pid && MY_PID != parentPid) firstPids.add(MY_PID);
+                if (MY_PID != app.pid && MY_PID != parentPid) firstPids.add(MY_PID);
 
-            for (int i = mService.mLruProcesses.size() - 1; i >= 0; i--) {
-                ProcessRecord r = mService.mLruProcesses.get(i);
-                if (r != null && r.thread != null) {
-                    int pid = r.pid;
-                    if (pid > 0 && pid != app.pid && pid != parentPid && pid != MY_PID) {
-                        if (r.persistent) {
-                            firstPids.add(pid);
-                            if (DEBUG_ANR) Slog.i(TAG, "Adding persistent proc: " + r);
-                        } else {
-                            lastPids.put(pid, Boolean.TRUE);
-                            if (DEBUG_ANR) Slog.i(TAG, "Adding ANR proc: " + r);
+                for (int i = mService.mLruProcesses.size() - 1; i >= 0; i--) {
+                    ProcessRecord r = mService.mLruProcesses.get(i);
+                    if (r != null && r.thread != null) {
+                        int pid = r.pid;
+                        if (pid > 0 && pid != app.pid && pid != parentPid && pid != MY_PID) {
+                            if (r.persistent) {
+                                firstPids.add(pid);
+                                if (DEBUG_ANR) Slog.i(TAG, "Adding persistent proc: " + r);
+                            } else {
+                                lastPids.put(pid, Boolean.TRUE);
+                                if (DEBUG_ANR) Slog.i(TAG, "Adding ANR proc: " + r);
+                            }
                         }
                     }
                 }
@@ -807,10 +818,18 @@
             info.append("Parent: ").append(parent.shortComponentName).append("\n");
         }
 
-        final ProcessCpuTracker processCpuTracker = new ProcessCpuTracker(true);
+        ProcessCpuTracker processCpuTracker = new ProcessCpuTracker(true);
 
-        File tracesFile = mService.dumpStackTraces(true, firstPids, processCpuTracker, lastPids,
-                NATIVE_STACKS_OF_INTEREST);
+        String[] nativeProcs = NATIVE_STACKS_OF_INTEREST;
+        // don't dump native PIDs for background ANRs
+        File tracesFile = null;
+        if (isSilentANR) {
+            tracesFile = mService.dumpStackTraces(true, firstPids, null, lastPids,
+                null);
+        } else {
+            tracesFile = mService.dumpStackTraces(true, firstPids, processCpuTracker, lastPids,
+                nativeProcs);
+        }
 
         String cpuInfo = null;
         if (ActivityManagerService.MONITOR_CPU_USAGE) {
@@ -854,14 +873,10 @@
             }
         }
 
-        // Unless configured otherwise, swallow ANRs in background processes & kill the process.
-        boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;
-
         synchronized (mService) {
             mService.mBatteryStatsService.noteProcessAnr(app.processName, app.uid);
 
-            if (!showBackground && !app.isInterestingToUserLocked() && app.pid != MY_PID) {
+            if (isSilentANR) {
                 app.kill("bg anr", true);
                 return;
             }
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index def6828..ff13125a 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -484,6 +484,20 @@
         }
     }
 
+    public void noteLongPartialWakelockStart(String name, String historyName, int uid) {
+        enforceCallingPermission();
+        synchronized (mStats) {
+            mStats.noteLongPartialWakelockStart(name, historyName, uid);
+        }
+    }
+
+    public void noteLongPartialWakelockFinish(String name, String historyName, int uid) {
+        enforceCallingPermission();
+        synchronized (mStats) {
+            mStats.noteLongPartialWakelockFinish(name, historyName, uid);
+        }
+    }
+
     public void noteStartSensor(int uid, int sensor) {
         enforceCallingPermission();
         synchronized (mStats) {
@@ -710,7 +724,7 @@
     }
 
     @Override
-    public void noteWifiRadioPowerState(int powerState, long tsNanos) {
+    public void noteWifiRadioPowerState(int powerState, long tsNanos, int uid) {
         enforceCallingPermission();
 
         // There was a change in WiFi power state.
@@ -723,7 +737,7 @@
                 mHandler.scheduleSync("wifi-data: " + type,
                         BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI);
             }
-            mStats.noteWifiRadioPowerState(powerState, tsNanos);
+            mStats.noteWifiRadioPowerState(powerState, tsNanos, uid);
         }
     }
 
diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags
index 2762df6..722974b 100644
--- a/services/core/java/com/android/server/am/EventLogTags.logtags
+++ b/services/core/java/com/android/server/am/EventLogTags.logtags
@@ -90,8 +90,8 @@
 # Activity fully drawn time
 30042 am_activity_fully_drawn_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3)
 
-# Activity focused
-30043 am_focused_activity (User|1|5),(Component Name|3),(Reason|3)
+# Activity set to resumed
+30043 am_set_resumed_activity (User|1|5),(Component Name|3),(Reason|3)
 
 # Stack focus
 30044 am_focused_stack (User|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3)
diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java
index 4691e1aa..7393e6a 100644
--- a/services/core/java/com/android/server/am/TaskRecord.java
+++ b/services/core/java/com/android/server/am/TaskRecord.java
@@ -909,7 +909,8 @@
                 // expecting onNewIntent()), then we will finish the current
                 // instance of the activity so a new fresh one can be started.
                 if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE
-                        && (launchFlags & Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) {
+                        && (launchFlags & Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0
+                        && !ActivityStarter.isDocumentLaunchesIntoExisting(launchFlags)) {
                     if (!ret.finishing) {
                         if (stack != null) {
                             stack.finishActivityLocked(
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 4de09bd..cf2842b 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -85,12 +85,14 @@
 
 import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.Preconditions;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.server.LocalServices;
 import com.android.server.pm.UserManagerService;
+import com.android.server.wm.WindowManagerService;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -114,32 +116,38 @@
     // giving up on them and unfreezing the screen.
     static final int USER_SWITCH_TIMEOUT = 2 * 1000;
 
-    private final ActivityManagerService mService;
+    private final Object mLock;
+    private final Injector mInjector;
     private final Handler mHandler;
 
     // Holds the current foreground user's id
+    @GuardedBy("mLock")
     private int mCurrentUserId = UserHandle.USER_SYSTEM;
     // Holds the target user's id during a user switch
+    @GuardedBy("mLock")
     private int mTargetUserId = UserHandle.USER_NULL;
 
     /**
      * Which users have been started, so are allowed to run code.
      */
-    @GuardedBy("mService")
+    @GuardedBy("mLock")
     private final SparseArray<UserState> mStartedUsers = new SparseArray<>();
 
     /**
      * LRU list of history of current users.  Most recently current is at the end.
      */
+    @GuardedBy("mLock")
     private final ArrayList<Integer> mUserLru = new ArrayList<>();
 
     /**
      * Constant array of the users that are currently started.
      */
+    @GuardedBy("mLock")
     private int[] mStartedUserArray = new int[] { 0 };
 
     // If there are multiple profiles for the current user, their ids are here
     // Currently only the primary user can have managed profiles
+    @GuardedBy("mLock")
     private int[] mCurrentProfileIds = new int[] {};
 
     /**
@@ -156,27 +164,32 @@
     /**
      * Currently active user switch callbacks.
      */
+    @GuardedBy("mLock")
     private volatile ArraySet<String> mCurWaitingUserSwitchCallbacks;
 
     private volatile UserManagerService mUserManager;
 
     private final LockPatternUtils mLockPatternUtils;
 
-    private UserManagerInternal mUserManagerInternal;
-
     UserController(ActivityManagerService service) {
-        mService = service;
-        mHandler = mService.mHandler;
+        this(new Injector(service));
+    }
+
+    @VisibleForTesting
+    UserController(Injector injector) {
+        mInjector = injector;
+        mLock = injector.getLock();
+        mHandler = injector.getHandler();
         // User 0 is the first and only user that runs at boot.
         final UserState uss = new UserState(UserHandle.SYSTEM);
         mStartedUsers.put(UserHandle.USER_SYSTEM, uss);
         mUserLru.add(UserHandle.USER_SYSTEM);
-        mLockPatternUtils = new LockPatternUtils(mService.mContext);
+        mLockPatternUtils = mInjector.getLockPatternUtils();
         updateStartedUserArrayLocked();
     }
 
     void finishUserSwitch(UserState uss) {
-        synchronized (mService) {
+        synchronized (mLock) {
             finishUserBoot(uss);
 
             startProfilesLocked();
@@ -229,7 +242,7 @@
         final int userId = uss.mHandle.getIdentifier();
 
         Slog.d(TAG, "Finishing user boot " + userId);
-        synchronized (mService) {
+        synchronized (mLock) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(userId) != uss) return;
 
@@ -238,25 +251,25 @@
             // but we might immediately step into RUNNING below if the user
             // storage is already unlocked.
             if (uss.setState(STATE_BOOTING, STATE_RUNNING_LOCKED)) {
-                getUserManagerInternal().setUserState(userId, uss.state);
+                mInjector.getUserManagerInternal().setUserState(userId, uss.state);
 
                 int uptimeSeconds = (int)(SystemClock.elapsedRealtime() / 1000);
-                MetricsLogger.histogram(mService.mContext, "framework_locked_boot_completed",
+                MetricsLogger.histogram(mInjector.getContext(), "framework_locked_boot_completed",
                     uptimeSeconds);
 
                 Intent intent = new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED, null);
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
                 intent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT
                         | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
-                mService.broadcastIntentLocked(null, null, intent, null, resultTo, 0, null, null,
+                mInjector.broadcastIntentLocked(intent, null, resultTo, 0, null, null,
                         new String[] { android.Manifest.permission.RECEIVE_BOOT_COMPLETED },
                         AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, userId);
             }
 
             // We need to delay unlocking managed profiles until the parent user
             // is also unlocked.
-            if (getUserManager().isManagedProfile(userId)) {
-                final UserInfo parent = getUserManager().getProfileParent(userId);
+            if (mInjector.getUserManager().isManagedProfile(userId)) {
+                final UserInfo parent = mInjector.getUserManager().getProfileParent(userId);
                 if (parent != null
                         && isUserRunningLocked(parent.id, ActivityManager.FLAG_AND_UNLOCKED)) {
                     Slog.d(TAG, "User " + userId + " (parent " + parent.id
@@ -279,7 +292,7 @@
      */
     private void finishUserUnlocking(final UserState uss) {
         final int userId = uss.mHandle.getIdentifier();
-        synchronized (mService) {
+        synchronized (mLock) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
 
@@ -287,13 +300,13 @@
             if (!StorageManager.isUserKeyUnlocked(userId)) return;
 
             if (uss.setState(STATE_RUNNING_LOCKED, STATE_RUNNING_UNLOCKING)) {
-                getUserManagerInternal().setUserState(userId, uss.state);
+                mInjector.getUserManagerInternal().setUserState(userId, uss.state);
                 uss.mUnlockProgress.start();
 
                 // Prepare app storage before we go any further
                 uss.mUnlockProgress.setProgress(5,
-                        mService.mContext.getString(R.string.android_start_title));
-                mUserManager.onBeforeUnlockUser(userId);
+                        mInjector.getContext().getString(R.string.android_start_title));
+                mInjector.getUserManager().onBeforeUnlockUser(userId);
                 uss.mUnlockProgress.setProgress(20);
 
                 // Dispatch unlocked to system services; when fully dispatched,
@@ -310,7 +323,7 @@
      */
     void finishUserUnlocked(final UserState uss) {
         final int userId = uss.mHandle.getIdentifier();
-        synchronized (mService) {
+        synchronized (mLock) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
 
@@ -318,7 +331,7 @@
             if (!StorageManager.isUserKeyUnlocked(userId)) return;
 
             if (uss.setState(STATE_RUNNING_UNLOCKING, STATE_RUNNING_UNLOCKED)) {
-                getUserManagerInternal().setUserState(userId, uss.state);
+                mInjector.getUserManagerInternal().setUserState(userId, uss.state);
                 uss.mUnlockProgress.finish();
 
                 // Dispatch unlocked to external apps
@@ -326,12 +339,12 @@
                 unlockedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
                 unlockedIntent.addFlags(
                         Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
-                mService.broadcastIntentLocked(null, null, unlockedIntent, null, null, 0, null,
+                mInjector.broadcastIntentLocked(unlockedIntent, null, null, 0, null,
                         null, null, AppOpsManager.OP_NONE, null, false, false, MY_PID, SYSTEM_UID,
                         userId);
 
                 if (getUserInfo(userId).isManagedProfile()) {
-                    UserInfo parent = getUserManager().getProfileParent(userId);
+                    UserInfo parent = mInjector.getUserManager().getProfileParent(userId);
                     if (parent != null) {
                         final Intent profileUnlockedIntent = new Intent(
                                 Intent.ACTION_MANAGED_PROFILE_UNLOCKED);
@@ -339,7 +352,7 @@
                         profileUnlockedIntent.addFlags(
                                 Intent.FLAG_RECEIVER_REGISTERED_ONLY
                                 | Intent.FLAG_RECEIVER_FOREGROUND);
-                        mService.broadcastIntentLocked(null, null, profileUnlockedIntent,
+                        mInjector.broadcastIntentLocked(profileUnlockedIntent,
                                 null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                                 null, false, false, MY_PID, SYSTEM_UID,
                                 parent.id);
@@ -352,15 +365,17 @@
                 final UserInfo info = getUserInfo(userId);
                 if (!Objects.equals(info.lastLoggedInFingerprint, Build.FINGERPRINT)) {
                     // Suppress double notifications for managed profiles that
-                    // were unlocked automatically (no challenge token required)
-                    // as part of their parent user being unlocked.
-                    final boolean quiet = info.isManagedProfile() && !uss.tokenProvided;
-                    new PreBootBroadcaster(mService, userId, null, quiet) {
-                        @Override
-                        public void onFinished() {
-                            finishUserUnlockedCompleted(uss);
-                        }
-                    }.sendNext();
+                    // were unlocked automatically as part of their parent user
+                    // being unlocked.
+                    final boolean quiet;
+                    if (info.isManagedProfile()) {
+                        quiet = !uss.tokenProvided
+                                || !mLockPatternUtils.isSeparateProfileChallengeEnabled(userId);
+                    } else {
+                        quiet = false;
+                    }
+                    mInjector.sendPreBootBroadcast(userId, quiet,
+                            () -> finishUserUnlockedCompleted(uss));
                 } else {
                     finishUserUnlockedCompleted(uss);
                 }
@@ -370,7 +385,7 @@
 
     private void finishUserUnlockedCompleted(UserState uss) {
         final int userId = uss.mHandle.getIdentifier();
-        synchronized (mService) {
+        synchronized (mLock) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
             final UserInfo userInfo = getUserInfo(userId);
@@ -382,21 +397,21 @@
             if (!StorageManager.isUserKeyUnlocked(userId)) return;
 
             // Remember that we logged in
-            mUserManager.onUserLoggedIn(userId);
+            mInjector.getUserManager().onUserLoggedIn(userId);
 
             if (!userInfo.isInitialized()) {
                 if (userId != UserHandle.USER_SYSTEM) {
                     Slog.d(TAG, "Initializing user #" + userId);
                     Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE);
                     intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-                    mService.broadcastIntentLocked(null, null, intent, null,
+                    mInjector.broadcastIntentLocked(intent, null,
                             new IIntentReceiver.Stub() {
                                 @Override
                                 public void performReceive(Intent intent, int resultCode,
                                         String data, Bundle extras, boolean ordered,
                                         boolean sticky, int sendingUser) {
                                     // Note: performReceive is called with mService lock held
-                                    getUserManager().makeInitialized(userInfo.id);
+                                    mInjector.getUserManager().makeInitialized(userInfo.id);
                                 }
                             }, 0, null, null, null, AppOpsManager.OP_NONE,
                             null, true, false, MY_PID, SYSTEM_UID, userId);
@@ -405,19 +420,20 @@
 
             Slog.d(TAG, "Sending BOOT_COMPLETE user #" + userId);
             int uptimeSeconds = (int)(SystemClock.elapsedRealtime() / 1000);
-            MetricsLogger.histogram(mService.mContext, "framework_boot_completed", uptimeSeconds);
+            MetricsLogger.histogram(mInjector.getContext(), "framework_boot_completed",
+                    uptimeSeconds);
             final Intent bootIntent = new Intent(Intent.ACTION_BOOT_COMPLETED, null);
             bootIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
             bootIntent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT
                     | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
-            mService.broadcastIntentLocked(null, null, bootIntent, null, null, 0, null, null,
+            mInjector.broadcastIntentLocked(bootIntent, null, null, 0, null, null,
                     new String[] { android.Manifest.permission.RECEIVE_BOOT_COMPLETED },
                     AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, userId);
         }
     }
 
     int stopUser(final int userId, final boolean force, final IStopUserCallback callback) {
-        if (mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
+        if (mInjector.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
                 != PackageManager.PERMISSION_GRANTED) {
             String msg = "Permission Denial: switchUser() from pid="
                     + Binder.getCallingPid()
@@ -429,9 +445,8 @@
         if (userId < 0 || userId == UserHandle.USER_SYSTEM) {
             throw new IllegalArgumentException("Can't stop system user " + userId);
         }
-        mService.enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES,
-                userId);
-        synchronized (mService) {
+        mInjector.enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, userId);
+        synchronized (mLock) {
             return stopUsersLocked(userId, force, callback);
         }
     }
@@ -498,7 +513,7 @@
         if (uss.state != UserState.STATE_STOPPING
                 && uss.state != UserState.STATE_SHUTDOWN) {
             uss.setState(UserState.STATE_STOPPING);
-            getUserManagerInternal().setUserState(userId, uss.state);
+            mInjector.getUserManagerInternal().setUserState(userId, uss.state);
             updateStartedUserArrayLocked();
 
             long ident = Binder.clearCallingIdentity();
@@ -524,9 +539,9 @@
                     }
                 };
                 // Clear broadcast queue for the user to avoid delivering stale broadcasts
-                mService.clearBroadcastQueueForUserLocked(userId);
+                mInjector.clearBroadcastQueueForUserLocked(userId);
                 // Kick things off.
-                mService.broadcastIntentLocked(null, null, stoppingIntent,
+                mInjector.broadcastIntentLocked(stoppingIntent,
                         null, stoppingReceiver, 0, null, null,
                         new String[]{INTERACT_ACROSS_USERS}, AppOpsManager.OP_NONE,
                         null, true, false, MY_PID, SYSTEM_UID, UserHandle.USER_ALL);
@@ -553,22 +568,22 @@
             }
         };
 
-        synchronized (mService) {
+        synchronized (mLock) {
             if (uss.state != UserState.STATE_STOPPING) {
                 // Whoops, we are being started back up.  Abort, abort!
                 return;
             }
             uss.setState(UserState.STATE_SHUTDOWN);
         }
-        getUserManagerInternal().setUserState(userId, uss.state);
+        mInjector.getUserManagerInternal().setUserState(userId, uss.state);
 
-        mService.mBatteryStatsService.noteEvent(
+        mInjector.batteryStatsServiceNoteEvent(
                 BatteryStats.HistoryItem.EVENT_USER_RUNNING_FINISH,
                 Integer.toString(userId), userId);
-        mService.mSystemServiceManager.stopUser(userId);
+        mInjector.systemServiceManagerStopUser(userId);
 
-        synchronized (mService) {
-            mService.broadcastIntentLocked(null, null, shutdownIntent,
+        synchronized (mLock) {
+            mInjector.broadcastIntentLocked(shutdownIntent,
                     null, shutdownReceiver, 0, null, null, null,
                     AppOpsManager.OP_NONE,
                     null, true, false, MY_PID, SYSTEM_UID, userId);
@@ -579,7 +594,7 @@
         final int userId = uss.mHandle.getIdentifier();
         boolean stopped;
         ArrayList<IStopUserCallback> callbacks;
-        synchronized (mService) {
+        synchronized (mLock) {
             callbacks = new ArrayList<>(uss.mStopCallbacks);
             if (mStartedUsers.get(userId) != uss) {
                 stopped = false;
@@ -589,11 +604,11 @@
                 stopped = true;
                 // User can no longer run.
                 mStartedUsers.remove(userId);
-                getUserManagerInternal().removeUserState(userId);
+                mInjector.getUserManagerInternal().removeUserState(userId);
                 mUserLru.remove(Integer.valueOf(userId));
                 updateStartedUserArrayLocked();
 
-                mService.onUserStoppedLocked(userId);
+                mInjector.activityManagerOnUserStopped(userId);
                 // Clean up all state and processes associated with the user.
                 // Kill all the processes for the user.
                 forceStopUserLocked(userId, "finish user");
@@ -609,13 +624,13 @@
         }
 
         if (stopped) {
-            mService.mSystemServiceManager.cleanupUser(userId);
-            synchronized (mService) {
-                mService.mStackSupervisor.removeUserLocked(userId);
+            mInjector.systemServiceManagerCleanupUser(userId);
+            synchronized (mLock) {
+                mInjector.stackSupervisorRemoveUserLocked(userId);
             }
             // Remove the user if it is ephemeral.
             if (getUserInfo(userId).isEphemeral()) {
-                mUserManager.removeUser(userId);
+                mInjector.getUserManager().removeUser(userId);
             }
         }
     }
@@ -651,13 +666,12 @@
     }
 
     private void forceStopUserLocked(int userId, String reason) {
-        mService.forceStopPackageLocked(null, -1, false, false, true, false, false,
-                userId, reason);
+        mInjector.activityManagerForceStopPackageLocked(userId, reason);
         Intent intent = new Intent(Intent.ACTION_USER_STOPPED);
         intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
                 | Intent.FLAG_RECEIVER_FOREGROUND);
         intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
-        mService.broadcastIntentLocked(null, null, intent,
+        mInjector.broadcastIntentLocked(intent,
                 null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                 null, false, false, MY_PID, SYSTEM_UID, UserHandle.USER_ALL);
     }
@@ -666,7 +680,7 @@
      * Stops the guest or ephemeral user if it has gone to the background.
      */
     private void stopGuestOrEphemeralUserIfBackground() {
-        synchronized (mService) {
+        synchronized (mLock) {
             final int num = mUserLru.size();
             for (int i = 0; i < num; i++) {
                 Integer oldUserId = mUserLru.get(i);
@@ -692,7 +706,7 @@
 
     void startProfilesLocked() {
         if (DEBUG_MU) Slog.i(TAG, "startProfilesLocked");
-        List<UserInfo> profiles = getUserManager().getProfiles(
+        List<UserInfo> profiles = mInjector.getUserManager().getProfiles(
                 mCurrentUserId, false /* enabledOnly */);
         List<UserInfo> profilesToStart = new ArrayList<>(profiles.size());
         for (UserInfo user : profiles) {
@@ -711,15 +725,6 @@
         }
     }
 
-    private UserManagerService getUserManager() {
-        UserManagerService userManager = mUserManager;
-        if (userManager == null) {
-            IBinder b = ServiceManager.getService(Context.USER_SERVICE);
-            userManager = mUserManager = (UserManagerService) IUserManager.Stub.asInterface(b);
-        }
-        return userManager;
-    }
-
     private IMountService getMountService() {
         return IMountService.Stub.asInterface(ServiceManager.getService("mount"));
     }
@@ -754,7 +759,7 @@
      * @return true if the user has been successfully started
      */
     boolean startUser(final int userId, final boolean foreground) {
-        if (mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
+        if (mInjector.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
                 != PackageManager.PERMISSION_GRANTED) {
             String msg = "Permission Denial: switchUser() from pid="
                     + Binder.getCallingPid()
@@ -768,13 +773,13 @@
 
         final long ident = Binder.clearCallingIdentity();
         try {
-            synchronized (mService) {
+            synchronized (mLock) {
                 final int oldUserId = mCurrentUserId;
                 if (oldUserId == userId) {
                     return true;
                 }
 
-                mService.mStackSupervisor.setLockTaskModeLocked(null,
+                mInjector.stackSupervisorSetLockTaskModeLocked(null,
                         ActivityManager.LOCK_TASK_MODE_NONE, "startUser", false);
 
                 final UserInfo userInfo = getUserInfo(userId);
@@ -788,7 +793,7 @@
                 }
 
                 if (foreground) {
-                    mService.mWindowManager.startFreezingScreen(
+                    mInjector.getWindowManager().startFreezingScreen(
                             R.anim.screen_user_exit, R.anim.screen_user_enter);
                 }
 
@@ -799,7 +804,7 @@
                 if (mStartedUsers.get(userId) == null) {
                     UserState userState = new UserState(UserHandle.of(userId));
                     mStartedUsers.put(userId, userState);
-                    getUserManagerInternal().setUserState(userId, userState.state);
+                    mInjector.getUserManagerInternal().setUserState(userId, userState.state);
                     updateStartedUserArrayLocked();
                     needStart = true;
                 }
@@ -811,17 +816,17 @@
 
                 if (foreground) {
                     mCurrentUserId = userId;
-                    mService.updateUserConfigurationLocked();
+                    mInjector.updateUserConfigurationLocked();
                     mTargetUserId = UserHandle.USER_NULL; // reset, mCurrentUserId has caught up
                     updateCurrentProfileIdsLocked();
-                    mService.mWindowManager.setCurrentUser(userId, mCurrentProfileIds);
+                    mInjector.getWindowManager().setCurrentUser(userId, mCurrentProfileIds);
                     // Once the internal notion of the active user has switched, we lock the device
                     // with the option to show the user switcher on the keyguard.
-                    mService.mWindowManager.lockNow(null);
+                    mInjector.getWindowManager().lockNow(null);
                 } else {
                     final Integer currentUserIdInt = mCurrentUserId;
                     updateCurrentProfileIdsLocked();
-                    mService.mWindowManager.setCurrentProfileIds(mCurrentProfileIds);
+                    mInjector.getWindowManager().setCurrentProfileIds(mCurrentProfileIds);
                     mUserLru.remove(currentUserIdInt);
                     mUserLru.add(currentUserIdInt);
                 }
@@ -833,14 +838,14 @@
                     // so we can just fairly silently bring the user back from
                     // the almost-dead.
                     uss.setState(uss.lastState);
-                    getUserManagerInternal().setUserState(userId, uss.state);
+                    mInjector.getUserManagerInternal().setUserState(userId, uss.state);
                     updateStartedUserArrayLocked();
                     needStart = true;
                 } else if (uss.state == UserState.STATE_SHUTDOWN) {
                     // This means ACTION_SHUTDOWN has been sent, so we will
                     // need to treat this as a new boot of the user.
                     uss.setState(UserState.STATE_BOOTING);
-                    getUserManagerInternal().setUserState(userId, uss.state);
+                    mInjector.getUserManagerInternal().setUserState(userId, uss.state);
                     updateStartedUserArrayLocked();
                     needStart = true;
                 }
@@ -848,7 +853,7 @@
                 if (uss.state == UserState.STATE_BOOTING) {
                     // Give user manager a chance to propagate user restrictions
                     // to other services and prepare app storage
-                    getUserManager().onBeforeStartUser(userId);
+                    mInjector.getUserManager().onBeforeStartUser(userId);
 
                     // Booting up a new user, need to tell system services about it.
                     // Note that this is on the same handler as scheduling of broadcasts,
@@ -873,7 +878,7 @@
                     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
                             | Intent.FLAG_RECEIVER_FOREGROUND);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
-                    mService.broadcastIntentLocked(null, null, intent,
+                    mInjector.broadcastIntentLocked(intent,
                             null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                             null, false, false, MY_PID, SYSTEM_UID, userId);
                 }
@@ -881,14 +886,14 @@
                 if (foreground) {
                     moveUserToForegroundLocked(uss, oldUserId, userId);
                 } else {
-                    mService.mUserController.finishUserBoot(uss);
+                    finishUserBoot(uss);
                 }
 
                 if (needStart) {
                     Intent intent = new Intent(Intent.ACTION_USER_STARTING);
                     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
-                    mService.broadcastIntentLocked(null, null, intent,
+                    mInjector.broadcastIntentLocked(intent,
                             null, new IIntentReceiver.Stub() {
                                 @Override
                                 public void performReceive(Intent intent, int resultCode,
@@ -917,7 +922,7 @@
     }
 
     boolean unlockUser(final int userId, byte[] token, byte[] secret, IProgressListener listener) {
-        if (mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
+        if (mInjector.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
                 != PackageManager.PERMISSION_GRANTED) {
             String msg = "Permission Denial: unlockUser() from pid="
                     + Binder.getCallingPid()
@@ -956,7 +961,7 @@
 
     boolean unlockUserCleared(final int userId, byte[] token, byte[] secret,
             IProgressListener listener) {
-        synchronized (mService) {
+        synchronized (mLock) {
             // TODO Move this block outside of synchronized if it causes lock contention
             if (!StorageManager.isUserKeyUnlocked(userId)) {
                 final UserInfo userInfo = getUserInfo(userId);
@@ -985,7 +990,7 @@
             // managed profiles under that user.
             for (int i = 0; i < mStartedUsers.size(); i++) {
                 final int testUserId = mStartedUsers.keyAt(i);
-                final UserInfo parent = getUserManager().getProfileParent(testUserId);
+                final UserInfo parent = mInjector.getUserManager().getProfileParent(testUserId);
                 if (parent != null && parent.id == userId && testUserId != userId) {
                     Slog.d(TAG, "User " + testUserId + " (parent " + parent.id
                             + "): attempting unlock because parent was just unlocked");
@@ -999,9 +1004,7 @@
 
     void showUserSwitchDialog(Pair<UserInfo, UserInfo> fromToUserPair) {
         // The dialog will show and then initiate the user switch by calling startUserInForeground
-        Dialog d = new UserSwitchingDialog(mService, mService.mContext, fromToUserPair.first,
-                fromToUserPair.second, true /* above system */);
-        d.show();
+        mInjector.showUserSwitchingDialog(fromToUserPair.first, fromToUserPair.second);
     }
 
     void dispatchForegroundProfileChanged(int userId) {
@@ -1039,7 +1042,7 @@
         if (!disallowRunInBg) {
             return;
         }
-        synchronized (mService) {
+        synchronized (mLock) {
             if (DEBUG_MU) Slog.i(TAG, "stopBackgroundUsersIfEnforced stopping " + oldUserId
                     + " and related users");
             stopUsersLocked(oldUserId, false, null);
@@ -1047,9 +1050,8 @@
     }
 
     void timeoutUserSwitch(UserState uss, int oldUserId, int newUserId) {
-        synchronized (mService) {
-            Slog.wtf(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId
-                    + ". Observers that didn't send results: " + mCurWaitingUserSwitchCallbacks);
+        synchronized (mLock) {
+            Slog.wtf(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId);
             sendContinueUserSwitchLocked(uss, oldUserId, newUserId);
         }
     }
@@ -1059,7 +1061,7 @@
         final int observerCount = mUserSwitchObservers.beginBroadcast();
         if (observerCount > 0) {
             final ArraySet<String> curWaitingUserSwitchCallbacks = new ArraySet<>();
-            synchronized (mService) {
+            synchronized (mLock) {
                 uss.switching = true;
                 mCurWaitingUserSwitchCallbacks = curWaitingUserSwitchCallbacks;
             }
@@ -1068,13 +1070,13 @@
                 try {
                     // Prepend with unique prefix to guarantee that keys are unique
                     final String name = "#" + i + " " + mUserSwitchObservers.getBroadcastCookie(i);
-                    synchronized (mService) {
+                    synchronized (mLock) {
                         curWaitingUserSwitchCallbacks.add(name);
                     }
                     final IRemoteCallback callback = new IRemoteCallback.Stub() {
                         @Override
                         public void sendResult(Bundle data) throws RemoteException {
-                            synchronized (mService) {
+                            synchronized (mLock) {
                                 // Early return if this session is no longer valid
                                 if (curWaitingUserSwitchCallbacks
                                         != mCurWaitingUserSwitchCallbacks) {
@@ -1093,7 +1095,7 @@
                 }
             }
         } else {
-            synchronized (mService) {
+            synchronized (mLock) {
                 sendContinueUserSwitchLocked(uss, oldUserId, newUserId);
             }
         }
@@ -1109,8 +1111,8 @@
 
     void continueUserSwitch(UserState uss, int oldUserId, int newUserId) {
         Slog.d(TAG, "Continue user switch oldUser #" + oldUserId + ", newUser #" + newUserId);
-        synchronized (mService) {
-            mService.mWindowManager.stopFreezingScreen();
+        synchronized (mLock) {
+            mInjector.getWindowManager().stopFreezingScreen();
         }
         uss.switching = false;
         mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG);
@@ -1121,11 +1123,11 @@
     }
 
     void moveUserToForegroundLocked(UserState uss, int oldUserId, int newUserId) {
-        boolean homeInFront = mService.mStackSupervisor.switchUserLocked(newUserId, uss);
+        boolean homeInFront = mInjector.stackSupervisorSwitchUserLocked(newUserId, uss);
         if (homeInFront) {
-            mService.startHomeActivityLocked(newUserId, "moveUserToForeground");
+            mInjector.startHomeActivityLocked(newUserId, "moveUserToForeground");
         } else {
-            mService.mStackSupervisor.resumeFocusedStackTopActivityLocked();
+            mInjector.stackSupervisorResumeFocusedStackTopActivityLocked();
         }
         EventLogTags.writeAmSwitchUser(newUserId);
         sendUserSwitchBroadcastsLocked(oldUserId, newUserId);
@@ -1137,7 +1139,7 @@
             Intent intent;
             if (oldUserId >= 0) {
                 // Send USER_BACKGROUND broadcast to all profiles of the outgoing user
-                List<UserInfo> profiles = getUserManager().getProfiles(oldUserId, false);
+                List<UserInfo> profiles = mInjector.getUserManager().getProfiles(oldUserId, false);
                 int count = profiles.size();
                 for (int i = 0; i < count; i++) {
                     int profileUserId = profiles.get(i).id;
@@ -1145,14 +1147,14 @@
                     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
                             | Intent.FLAG_RECEIVER_FOREGROUND);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, profileUserId);
-                    mService.broadcastIntentLocked(null, null, intent,
+                    mInjector.broadcastIntentLocked(intent,
                             null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                             null, false, false, MY_PID, SYSTEM_UID, profileUserId);
                 }
             }
             if (newUserId >= 0) {
                 // Send USER_FOREGROUND broadcast to all profiles of the incoming user
-                List<UserInfo> profiles = getUserManager().getProfiles(newUserId, false);
+                List<UserInfo> profiles = mInjector.getUserManager().getProfiles(newUserId, false);
                 int count = profiles.size();
                 for (int i = 0; i < count; i++) {
                     int profileUserId = profiles.get(i).id;
@@ -1160,7 +1162,7 @@
                     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
                             | Intent.FLAG_RECEIVER_FOREGROUND);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, profileUserId);
-                    mService.broadcastIntentLocked(null, null, intent,
+                    mInjector.broadcastIntentLocked(intent,
                             null, null, 0, null, null, null, AppOpsManager.OP_NONE,
                             null, false, false, MY_PID, SYSTEM_UID, profileUserId);
                 }
@@ -1168,7 +1170,7 @@
                 intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
                         | Intent.FLAG_RECEIVER_FOREGROUND);
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, newUserId);
-                mService.broadcastIntentLocked(null, null, intent,
+                mInjector.broadcastIntentLocked(intent,
                         null, null, 0, null, null,
                         new String[] {android.Manifest.permission.MANAGE_USERS},
                         AppOpsManager.OP_NONE, null, false, false, MY_PID, SYSTEM_UID,
@@ -1197,14 +1199,14 @@
 
         if (callingUid != 0 && callingUid != SYSTEM_UID) {
             final boolean allow;
-            if (mService.checkComponentPermission(INTERACT_ACROSS_USERS_FULL, callingPid,
+            if (mInjector.checkComponentPermission(INTERACT_ACROSS_USERS_FULL, callingPid,
                     callingUid, -1, true) == PackageManager.PERMISSION_GRANTED) {
                 // If the caller has this permission, they always pass go.  And collect $200.
                 allow = true;
             } else if (allowMode == ALLOW_FULL_ONLY) {
                 // We require full access, sucks to be you.
                 allow = false;
-            } else if (mService.checkComponentPermission(INTERACT_ACROSS_USERS, callingPid,
+            } else if (mInjector.checkComponentPermission(INTERACT_ACROSS_USERS, callingPid,
                     callingUid, -1, true) != PackageManager.PERMISSION_GRANTED) {
                 // If the caller does not have either permission, they are always doomed.
                 allow = false;
@@ -1268,7 +1270,7 @@
 
     void registerUserSwitchObserver(IUserSwitchObserver observer, String name) {
         Preconditions.checkNotNull(name, "Observer name cannot be null");
-        if (mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
+        if (mInjector.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
                 != PackageManager.PERMISSION_GRANTED) {
             final String msg = "Permission Denial: registerUserSwitchObserver() from pid="
                     + Binder.getCallingPid()
@@ -1330,7 +1332,7 @@
      * background.
      */
     private void updateCurrentProfileIdsLocked() {
-        final List<UserInfo> profiles = getUserManager().getProfiles(mCurrentUserId,
+        final List<UserInfo> profiles = mInjector.getUserManager().getProfiles(mCurrentUserId,
                 false /* enabledOnly */);
         int[] currentProfileIds = new int[profiles.size()]; // profiles will not be null
         for (int i = 0; i < currentProfileIds.length; i++) {
@@ -1340,7 +1342,7 @@
 
         synchronized (mUserProfileGroupIdsSelfLocked) {
             mUserProfileGroupIdsSelfLocked.clear();
-            final List<UserInfo> users = getUserManager().getUsers(false);
+            final List<UserInfo> users = mInjector.getUserManager().getUsers(false);
             for (int i = 0; i < users.size(); i++) {
                 UserInfo user = users.get(i);
                 if (user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) {
@@ -1403,9 +1405,9 @@
     }
 
     UserInfo getCurrentUser() {
-        if ((mService.checkCallingPermission(INTERACT_ACROSS_USERS)
+        if ((mInjector.checkCallingPermission(INTERACT_ACROSS_USERS)
                 != PackageManager.PERMISSION_GRANTED) && (
-                mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
+                mInjector.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
                         != PackageManager.PERMISSION_GRANTED)) {
             String msg = "Permission Denial: getCurrentUser() from pid="
                     + Binder.getCallingPid()
@@ -1414,7 +1416,7 @@
             Slog.w(TAG, msg);
             throw new SecurityException(msg);
         }
-        synchronized (mService) {
+        synchronized (mLock) {
             return getCurrentUserLocked();
         }
     }
@@ -1441,29 +1443,29 @@
     }
 
     int[] getUsers() {
-        UserManagerService ums = getUserManager();
+        UserManagerService ums = mInjector.getUserManager();
         return ums != null ? ums.getUserIds() : new int[] { 0 };
     }
 
     UserInfo getUserInfo(int userId) {
-        return getUserManager().getUserInfo(userId);
+        return mInjector.getUserManager().getUserInfo(userId);
     }
 
     int[] getUserIds() {
-        return getUserManager().getUserIds();
+        return mInjector.getUserManager().getUserIds();
     }
 
     boolean exists(int userId) {
-        return getUserManager().exists(userId);
+        return mInjector.getUserManager().exists(userId);
     }
 
     boolean hasUserRestriction(String restriction, int userId) {
-        return getUserManager().hasUserRestriction(restriction, userId);
+        return mInjector.getUserManager().hasUserRestriction(restriction, userId);
     }
 
     Set<Integer> getProfileIds(int userId) {
         Set<Integer> userIds = new HashSet<>();
-        final List<UserInfo> profiles = getUserManager().getProfiles(userId,
+        final List<UserInfo> profiles = mInjector.getUserManager().getProfiles(userId,
                 false /* enabledOnly */);
         for (UserInfo user : profiles) {
             userIds.add(user.id);
@@ -1495,7 +1497,7 @@
      * intercept activity launches for work apps when the Work Challenge is present.
      */
     boolean shouldConfirmCredentials(int userId) {
-        synchronized (mService) {
+        synchronized (mLock) {
             if (mStartedUsers.get(userId) == null) {
                 return false;
             }
@@ -1503,8 +1505,7 @@
         if (!mLockPatternUtils.isSeparateProfileChallengeEnabled(userId)) {
             return false;
         }
-        final KeyguardManager km = (KeyguardManager) mService.mContext
-                .getSystemService(KEYGUARD_SERVICE);
+        final KeyguardManager km = mInjector.getKeyguardManager();
         return km.isDeviceLocked(userId) && km.isDeviceSecure(userId);
     }
 
@@ -1512,13 +1513,6 @@
         return mLockPatternUtils.isLockScreenDisabled(userId);
     }
 
-    private UserManagerInternal getUserManagerInternal() {
-        if (mUserManagerInternal == null) {
-            mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
-        }
-        return mUserManagerInternal;
-    }
-
     void dump(PrintWriter pw, boolean dumpAll) {
         pw.println("  mStartedUsers:");
         for (int i = 0; i < mStartedUsers.size(); i++) {
@@ -1553,4 +1547,141 @@
             }
         }
     }
+
+    @VisibleForTesting
+    static class Injector {
+        private final ActivityManagerService mService;
+        private UserManagerService mUserManager;
+        private UserManagerInternal mUserManagerInternal;
+
+        Injector(ActivityManagerService service) {
+            mService = service;
+        }
+
+        protected Object getLock() {
+            return mService;
+        }
+
+        protected Handler getHandler() {
+            return mService.mHandler;
+        }
+
+        protected Context getContext() {
+            return mService.mContext;
+        }
+
+        protected LockPatternUtils getLockPatternUtils() {
+            return new LockPatternUtils(getContext());
+        }
+
+        protected int broadcastIntentLocked(Intent intent, String resolvedType,
+                IIntentReceiver resultTo, int resultCode, String resultData,
+                Bundle resultExtras, String[] requiredPermissions, int appOp, Bundle bOptions,
+                boolean ordered, boolean sticky, int callingPid, int callingUid, int userId) {
+            return mService.broadcastIntentLocked(null, null, intent, resolvedType, resultTo,
+                    resultCode, resultData, resultExtras, requiredPermissions, appOp, bOptions,
+                    ordered, sticky, callingPid, callingUid, userId);
+        }
+
+        int checkCallingPermission(String permission) {
+            return mService.checkCallingPermission(permission);
+        }
+
+        WindowManagerService getWindowManager() {
+            return mService.mWindowManager;
+        }
+        void activityManagerOnUserStopped(int userId) {
+            mService.onUserStoppedLocked(userId);
+        }
+
+        void systemServiceManagerCleanupUser(int userId) {
+            mService.mSystemServiceManager.cleanupUser(userId);
+        }
+
+        void stackSupervisorRemoveUserLocked(int userId) {
+            mService.mStackSupervisor.removeUserLocked(userId);
+        }
+
+        protected UserManagerService getUserManager() {
+            if (mUserManager == null) {
+                IBinder b = ServiceManager.getService(Context.USER_SERVICE);
+                mUserManager = (UserManagerService) IUserManager.Stub.asInterface(b);
+            }
+            return mUserManager;
+        }
+
+        UserManagerInternal getUserManagerInternal() {
+            if (mUserManagerInternal == null) {
+                mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
+            }
+            return mUserManagerInternal;
+        }
+
+        KeyguardManager getKeyguardManager() {
+            return mService.mContext.getSystemService(KeyguardManager.class);
+        }
+
+        void batteryStatsServiceNoteEvent(int code, String name, int uid) {
+            mService.mBatteryStatsService.noteEvent(code, name, uid);
+        }
+
+        void systemServiceManagerStopUser(int userId) {
+            mService.mSystemServiceManager.stopUser(userId);
+        }
+
+        void sendPreBootBroadcast(int userId, boolean quiet, final Runnable onFinish) {
+            new PreBootBroadcaster(mService, userId, null, quiet) {
+                @Override
+                public void onFinished() {
+                    onFinish.run();
+                }
+            }.sendNext();
+        }
+
+        void activityManagerForceStopPackageLocked(int userId, String reason) {
+            mService.forceStopPackageLocked(null, -1, false, false, true, false, false,
+                    userId, reason);
+        };
+
+        int checkComponentPermission(String permission, int pid, int uid, int owningUid,
+                boolean exported) {
+            return mService.checkComponentPermission(permission, pid, uid, owningUid, exported);
+        }
+
+        boolean stackSupervisorSwitchUserLocked(int userId, UserState uss) {
+            return mService.mStackSupervisor.switchUserLocked(userId, uss);
+        }
+
+        void startHomeActivityLocked(int userId, String reason) {
+            mService.startHomeActivityLocked(userId, reason);
+        }
+
+        void stackSupervisorResumeFocusedStackTopActivityLocked() {
+            mService.mStackSupervisor.resumeFocusedStackTopActivityLocked();
+        }
+
+        void stackSupervisorSetLockTaskModeLocked(TaskRecord task, int lockTaskModeState,
+                String reason, boolean andResume) {
+            mService.mStackSupervisor.setLockTaskModeLocked(task, lockTaskModeState, reason,
+                    andResume);
+        }
+
+        void updateUserConfigurationLocked() {
+            mService.updateUserConfigurationLocked();
+        }
+
+        void clearBroadcastQueueForUserLocked(int userId) {
+            mService.clearBroadcastQueueForUserLocked(userId);
+        }
+
+        void enforceShellRestriction(String restriction, int userId) {
+            mService.enforceShellRestriction(restriction, userId);
+        }
+
+        void showUserSwitchingDialog(UserInfo fromUser, UserInfo toUser) {
+            Dialog d = new UserSwitchingDialog(mService, mService.mContext, fromUser, toUser,
+                    true /* above system */);
+            d.show();
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index 1c26846..66aa403 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -188,6 +188,14 @@
                     if (!canCopy) {
                         clip = null;
                     } else {
+                        // We want to fix the uris of the related user's clip without changing the
+                        // uris of the current user's clip.
+                        // So, copy the ClipData, and then copy all the items, so that nothing
+                        // is shared in memmory.
+                        clip = new ClipData(clip);
+                        for (int i = clip.getItemCount() - 1; i >= 0; i--) {
+                            clip.setItemAt(i, new ClipData.Item(clip.getItemAt(i)));
+                        }
                         clip.fixUrisLight(userId);
                     }
                     for (int i = 0; i < size; i++) {
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java
index bef48d6..b6c8d5d 100644
--- a/services/core/java/com/android/server/connectivity/Tethering.java
+++ b/services/core/java/com/android/server/connectivity/Tethering.java
@@ -69,6 +69,7 @@
 import com.android.internal.util.StateMachine;
 import com.android.server.IoThread;
 import com.android.server.connectivity.tethering.IControlsTethering;
+import com.android.server.connectivity.tethering.IPv6TetheringCoordinator;
 import com.android.server.connectivity.tethering.TetherInterfaceStateMachine;
 import com.android.server.net.BaseNetworkObserver;
 
@@ -270,14 +271,16 @@
                     trackNewTetherableInterface(iface, interfaceType);
                 }
             } else {
-                if (interfaceType == ConnectivityManager.TETHERING_USB) {
-                    // ignore usb0 down after enabling RNDIS
-                    // we will handle disconnect in interfaceRemoved instead
-                    if (VDBG) Log.d(TAG, "ignore interface down for " + iface);
-                } else if (tetherState != null) {
+                if (interfaceType == ConnectivityManager.TETHERING_BLUETOOTH) {
                     tetherState.mStateMachine.sendMessage(
                             TetherInterfaceStateMachine.CMD_INTERFACE_DOWN);
                     mTetherStates.remove(iface);
+                } else {
+                    // Ignore usb0 down after enabling RNDIS.
+                    // We will handle disconnect in interfaceRemoved.
+                    // Similarly, ignore interface down for WiFi.  We monitor WiFi AP status
+                    // through the WifiManager.WIFI_AP_STATE_CHANGED_ACTION intent.
+                    if (VDBG) Log.d(TAG, "ignore interface down for " + iface);
                 }
             }
         }
@@ -447,8 +450,6 @@
 
     private int setWifiTethering(final boolean enable) {
         synchronized (mPublicSync) {
-            // Note that we're maintaining a predicate that mWifiTetherRequested always matches
-            // our last request to WifiManager re: its AP enabled status.
             mWifiTetherRequested = enable;
             final WifiManager wifiManager =
                     (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
@@ -588,13 +589,13 @@
         synchronized (mPublicSync) {
             TetherState tetherState = mTetherStates.get(iface);
             if (tetherState == null) {
-                Log.e(TAG, "Tried to Tether an unknown iface :" + iface + ", ignoring");
+                Log.e(TAG, "Tried to Tether an unknown iface: " + iface + ", ignoring");
                 return ConnectivityManager.TETHER_ERROR_UNKNOWN_IFACE;
             }
             // Ignore the error status of the interface.  If the interface is available,
             // the errors are referring to past tethering attempts anyway.
             if (tetherState.mLastState != IControlsTethering.STATE_AVAILABLE) {
-                Log.e(TAG, "Tried to Tether an unavailable iface :" + iface + ", ignoring");
+                Log.e(TAG, "Tried to Tether an unavailable iface: " + iface + ", ignoring");
                 return ConnectivityManager.TETHER_ERROR_UNAVAIL_IFACE;
             }
             tetherState.mStateMachine.sendMessage(TetherInterfaceStateMachine.CMD_TETHER_REQUESTED);
@@ -791,10 +792,6 @@
                 }
             } else if (action.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) {
                 synchronized (Tethering.this.mPublicSync) {
-                    if (!mWifiTetherRequested) {
-                        // We only care when we're trying to tether via our WiFi interface.
-                        return;
-                    }
                     int curState =  intent.getIntExtra(WifiManager.EXTRA_WIFI_AP_STATE,
                             WifiManager.WIFI_AP_STATE_DISABLED);
                     switch (curState) {
@@ -802,8 +799,10 @@
                             // We can see this state on the way to both enabled and failure states.
                             break;
                         case WifiManager.WIFI_AP_STATE_ENABLED:
-                            // Tell an appropriate interface state machine that it should tether.
-                            tetherMatchingInterfaces(true, ConnectivityManager.TETHERING_WIFI);
+                            // When the AP comes up and we've been requested to tether it, do so.
+                            if (mWifiTetherRequested) {
+                                tetherMatchingInterfaces(true, ConnectivityManager.TETHERING_WIFI);
+                            }
                             break;
                         case WifiManager.WIFI_AP_STATE_DISABLED:
                         case WifiManager.WIFI_AP_STATE_DISABLING:
@@ -813,10 +812,20 @@
                                 Log.d(TAG, "Canceling WiFi tethering request - AP_STATE=" +
                                     curState);
                             }
-                            // Tell an appropriate interface state machine that
-                            // it needs to tear itself down.
-                            tetherMatchingInterfaces(false, ConnectivityManager.TETHERING_WIFI);
-                            setWifiTethering(false);
+                            // Tell appropriate interface state machines that they should tear
+                            // themselves down.
+                            for (int i = 0; i < mTetherStates.size(); i++) {
+                                TetherInterfaceStateMachine tism =
+                                        mTetherStates.valueAt(i).mStateMachine;
+                                if (tism.interfaceType() == ConnectivityManager.TETHERING_WIFI) {
+                                    tism.sendMessage(
+                                            TetherInterfaceStateMachine.CMD_TETHER_UNREQUESTED);
+                                    break;  // There should be at most one of these.
+                                }
+                            }
+                            // Regardless of whether we requested this transition, the AP has gone
+                            // down.  Don't try to tether again unless we're requested to do so.
+                            mWifiTetherRequested = false;
                             break;
                     }
                 }
@@ -1015,15 +1024,29 @@
      */
     class UpstreamNetworkCallback extends NetworkCallback {
         @Override
+        public void onAvailable(Network network) {
+            mTetherMasterSM.sendMessage(TetherMasterSM.EVENT_UPSTREAM_CALLBACK,
+                    UpstreamNetworkMonitor.EVENT_ON_AVAILABLE, 0, network);
+        }
+
+        @Override
+        public void onCapabilitiesChanged(Network network, NetworkCapabilities newNc) {
+            mTetherMasterSM.sendMessage(TetherMasterSM.EVENT_UPSTREAM_CALLBACK,
+                    UpstreamNetworkMonitor.EVENT_ON_CAPABILITIES, 0,
+                    new NetworkState(null, null, newNc, network, null, null));
+        }
+
+        @Override
         public void onLinkPropertiesChanged(Network network, LinkProperties newLp) {
-            mTetherMasterSM.sendMessage(
-                    TetherMasterSM.EVENT_UPSTREAM_LINKPROPERTIES_CHANGED,
+            mTetherMasterSM.sendMessage(TetherMasterSM.EVENT_UPSTREAM_CALLBACK,
+                    UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES, 0,
                     new NetworkState(null, newLp, null, network, null, null));
         }
 
         @Override
         public void onLost(Network network) {
-            mTetherMasterSM.sendMessage(TetherMasterSM.EVENT_UPSTREAM_LOST, network);
+            mTetherMasterSM.sendMessage(TetherMasterSM.EVENT_UPSTREAM_CALLBACK,
+                    UpstreamNetworkMonitor.EVENT_ON_LOST, 0, network);
         }
     }
 
@@ -1042,6 +1065,11 @@
      * could/should be moved here.
      */
     class UpstreamNetworkMonitor {
+        static final int EVENT_ON_AVAILABLE      = 1;
+        static final int EVENT_ON_CAPABILITIES   = 2;
+        static final int EVENT_ON_LINKPROPERTIES = 3;
+        static final int EVENT_ON_LOST           = 4;
+
         final HashMap<Network, NetworkState> mNetworkMap = new HashMap<>();
         NetworkCallback mDefaultNetworkCallback;
         NetworkCallback mDunTetheringCallback;
@@ -1076,33 +1104,107 @@
             mNetworkMap.clear();
         }
 
-        // Returns true if these updated LinkProperties pertain to the current
-        // upstream network interface, false otherwise (or if there is not
-        // currently any upstream tethering interface).
-        boolean processLinkPropertiesChanged(NetworkState networkState) {
-            if (networkState == null ||
-                    networkState.network == null ||
-                    networkState.linkProperties == null) {
-                return false;
-            }
+        NetworkState lookup(Network network) {
+            return (network != null) ? mNetworkMap.get(network) : null;
+        }
 
-            mNetworkMap.put(networkState.network, networkState);
-
-            if (mCurrentUpstreamIface != null) {
-                for (String ifname : networkState.linkProperties.getAllInterfaceNames()) {
-                    if (mCurrentUpstreamIface.equals(ifname)) {
-                        return true;
+        NetworkState processCallback(int arg1, Object obj) {
+            switch (arg1) {
+                case EVENT_ON_AVAILABLE: {
+                    final Network network = (Network) obj;
+                    if (VDBG) {
+                        Log.d(TAG, "EVENT_ON_AVAILABLE for " + network);
                     }
+                    if (!mNetworkMap.containsKey(network)) {
+                        mNetworkMap.put(network,
+                                new NetworkState(null, null, null, network, null, null));
+                    }
+
+                    final ConnectivityManager cm = getConnectivityManager();
+
+                    if (mDefaultNetworkCallback != null) {
+                        cm.requestNetworkCapabilities(mDefaultNetworkCallback);
+                        cm.requestLinkProperties(mDefaultNetworkCallback);
+                    }
+
+                    // Requesting updates for mDunTetheringCallback is not
+                    // necessary. Because it's a listen, it will already have
+                    // heard all NetworkCapabilities and LinkProperties updates
+                    // since UpstreamNetworkMonitor was started. Because we
+                    // start UpstreamNetworkMonitor before chooseUpstreamType()
+                    // is ever invoked (it can register a DUN request) this is
+                    // mostly safe. However, if a DUN network is already up for
+                    // some reason (unlikely, because DUN is restricted and,
+                    // unless the DUN network is shared with another APN, only
+                    // the system can request it and this is the only part of
+                    // the system that requests it) we won't know its
+                    // LinkProperties or NetworkCapabilities.
+
+                    return mNetworkMap.get(network);
+                }
+                case EVENT_ON_CAPABILITIES: {
+                    final NetworkState ns = (NetworkState) obj;
+                    if (!mNetworkMap.containsKey(ns.network)) {
+                        // Ignore updates for networks for which we have not yet
+                        // received onAvailable() - which should never happen -
+                        // or for which we have already received onLost().
+                        return null;
+                    }
+                    if (VDBG) {
+                        Log.d(TAG, String.format("EVENT_ON_CAPABILITIES for %s: %s",
+                                ns.network, ns.networkCapabilities));
+                    }
+
+                    final NetworkState prev = mNetworkMap.get(ns.network);
+                    mNetworkMap.put(ns.network,
+                            new NetworkState(null, prev.linkProperties, ns.networkCapabilities,
+                                             ns.network, null, null));
+                    return mNetworkMap.get(ns.network);
+                }
+                case EVENT_ON_LINKPROPERTIES: {
+                    final NetworkState ns = (NetworkState) obj;
+                    if (!mNetworkMap.containsKey(ns.network)) {
+                        // Ignore updates for networks for which we have not yet
+                        // received onAvailable() - which should never happen -
+                        // or for which we have already received onLost().
+                        return null;
+                    }
+                    if (VDBG) {
+                        Log.d(TAG, String.format("EVENT_ON_LINKPROPERTIES for %s: %s",
+                                ns.network, ns.linkProperties));
+                    }
+
+                    final NetworkState prev = mNetworkMap.get(ns.network);
+                    mNetworkMap.put(ns.network,
+                            new NetworkState(null, ns.linkProperties, prev.networkCapabilities,
+                                             ns.network, null, null));
+                    return mNetworkMap.get(ns.network);
+                }
+                case EVENT_ON_LOST: {
+                    final Network network = (Network) obj;
+                    if (VDBG) {
+                        Log.d(TAG, "EVENT_ON_LOST for " + network);
+                    }
+                    return mNetworkMap.remove(network);
+                }
+                default:
+                    return null;
+            }
+        }
+    }
+
+    // Needed because the canonical source of upstream truth is just the
+    // upstream interface name, |mCurrentUpstreamIface|.  This is ripe for
+    // future simplification, once the upstream Network is canonical.
+    boolean pertainsToCurrentUpstream(NetworkState ns) {
+        if (ns != null && ns.linkProperties != null && mCurrentUpstreamIface != null) {
+            for (String ifname : ns.linkProperties.getAllInterfaceNames()) {
+                if (mCurrentUpstreamIface.equals(ifname)) {
+                    return true;
                 }
             }
-            return false;
         }
-
-        void processNetworkLost(Network network) {
-            if (network != null) {
-                mNetworkMap.remove(network);
-            }
-        }
+        return false;
     }
 
     class TetherMasterSM extends StateMachine {
@@ -1117,8 +1219,7 @@
         static final int CMD_RETRY_UPSTREAM                     = BASE_MASTER + 4;
         // Events from NetworkCallbacks that we process on the master state
         // machine thread on behalf of the UpstreamNetworkMonitor.
-        static final int EVENT_UPSTREAM_LINKPROPERTIES_CHANGED  = BASE_MASTER + 5;
-        static final int EVENT_UPSTREAM_LOST                    = BASE_MASTER + 6;
+        static final int EVENT_UPSTREAM_CALLBACK                = BASE_MASTER + 5;
 
         private State mInitialState;
         private State mTetherModeAliveState;
@@ -1141,7 +1242,8 @@
         // Because we excise interfaces immediately from mTetherStates, we must maintain mNotifyList
         // so that the garbage collector does not clean up the state machine before it has a chance
         // to tear itself down.
-        private ArrayList<TetherInterfaceStateMachine> mNotifyList;
+        private final ArrayList<TetherInterfaceStateMachine> mNotifyList;
+        private final IPv6TetheringCoordinator mIPv6TetheringCoordinator;
 
         private int mMobileApnReserved = ConnectivityManager.TYPE_NONE;
         private NetworkCallback mMobileUpstreamCallback;
@@ -1169,6 +1271,7 @@
             addState(mSetDnsForwardersErrorState);
 
             mNotifyList = new ArrayList<>();
+            mIPv6TetheringCoordinator = new IPv6TetheringCoordinator(mNotifyList);
             setInitialState(mInitialState);
         }
 
@@ -1273,6 +1376,7 @@
             }
 
             protected void chooseUpstreamType(boolean tryCell) {
+                final ConnectivityManager cm = getConnectivityManager();
                 int upType = ConnectivityManager.TYPE_NONE;
                 String iface = null;
 
@@ -1287,8 +1391,7 @@
                     }
 
                     for (Integer netType : mUpstreamIfaceTypes) {
-                        NetworkInfo info =
-                                getConnectivityManager().getNetworkInfo(netType.intValue());
+                        NetworkInfo info = cm.getNetworkInfo(netType.intValue());
                         if ((info != null) && info.isConnected()) {
                             upType = netType.intValue();
                             break;
@@ -1329,9 +1432,9 @@
                         break;
                 }
 
+                Network network = null;
                 if (upType != ConnectivityManager.TYPE_NONE) {
-                    LinkProperties linkProperties =
-                            getConnectivityManager().getLinkProperties(upType);
+                    LinkProperties linkProperties = cm.getLinkProperties(upType);
                     if (linkProperties != null) {
                         // Find the interface with the default IPv4 route. It may be the
                         // interface described by linkProperties, or one of the interfaces
@@ -1348,7 +1451,7 @@
                     }
 
                     if (iface != null) {
-                        Network network = getConnectivityManager().getNetworkForType(upType);
+                        network = cm.getNetworkForType(upType);
                         if (network == null) {
                             Log.e(TAG, "No Network for upstream type " + upType + "!");
                         }
@@ -1356,6 +1459,13 @@
                     }
                 }
                 notifyTetheredOfNewUpstreamIface(iface);
+                NetworkState ns = mUpstreamNetworkMonitor.lookup(network);
+                if (ns != null && pertainsToCurrentUpstream(ns)) {
+                    // If we already have NetworkState for this network examine
+                    // it immediately, because there likely will be no second
+                    // EVENT_ON_AVAILABLE (it was already received).
+                    handleNewUpstreamNetworkState(ns);
+                }
             }
 
             protected void setDnsForwarders(final Network network, final LinkProperties lp) {
@@ -1388,6 +1498,10 @@
                             ifaceName);
                 }
             }
+
+            protected void handleNewUpstreamNetworkState(NetworkState ns) {
+                mIPv6TetheringCoordinator.updateUpstreamNetworkState(ns);
+            }
         }
 
         private final AtomicInteger mSimBcastGenerationNumber = new AtomicInteger(0);
@@ -1577,24 +1691,55 @@
                         chooseUpstreamType(mTryCell);
                         mTryCell = !mTryCell;
                         break;
-                    case EVENT_UPSTREAM_LINKPROPERTIES_CHANGED:
-                        NetworkState state = (NetworkState) message.obj;
-                        if (mUpstreamNetworkMonitor.processLinkPropertiesChanged(state)) {
-                            setDnsForwarders(state.network, state.linkProperties);
-                        } else if (mCurrentUpstreamIface == null) {
-                            // If we have no upstream interface, try to run through upstream
-                            // selection again.  If, for example, IPv4 connectivity has shown up
-                            // after IPv6 (e.g., 464xlat became available) we want the chance to
-                            // notice and act accordingly.
-                            chooseUpstreamType(false);
+                    case EVENT_UPSTREAM_CALLBACK: {
+                        // First: always update local state about every network.
+                        final NetworkState ns = mUpstreamNetworkMonitor.processCallback(
+                                message.arg1, message.obj);
+
+                        if (ns == null || !pertainsToCurrentUpstream(ns)) {
+                            // TODO: In future, this is where upstream evaluation and selection
+                            // could be handled for notifications which include sufficient data.
+                            // For example, after CONNECTIVITY_ACTION listening is removed, here
+                            // is where we could observe a Wi-Fi network becoming available and
+                            // passing validation.
+                            if (mCurrentUpstreamIface == null) {
+                                // If we have no upstream interface, try to run through upstream
+                                // selection again.  If, for example, IPv4 connectivity has shown up
+                                // after IPv6 (e.g., 464xlat became available) we want the chance to
+                                // notice and act accordingly.
+                                chooseUpstreamType(false);
+                            }
+                            break;
+                        }
+
+                        switch (message.arg1) {
+                            case UpstreamNetworkMonitor.EVENT_ON_AVAILABLE:
+                                // The default network changed, or DUN connected
+                                // before this callback was processed. Updates
+                                // for the current NetworkCapabilities and
+                                // LinkProperties have been requested (default
+                                // request) or are being sent shortly (DUN). Do
+                                // nothing until they arrive; if no updates
+                                // arrive there's nothing to do.
+                                break;
+                            case UpstreamNetworkMonitor.EVENT_ON_CAPABILITIES:
+                                handleNewUpstreamNetworkState(ns);
+                                break;
+                            case UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES:
+                                setDnsForwarders(ns.network, ns.linkProperties);
+                                handleNewUpstreamNetworkState(ns);
+                                break;
+                            case UpstreamNetworkMonitor.EVENT_ON_LOST:
+                                // TODO: Re-evaluate possible upstreams. Currently upstream
+                                // reevaluation is triggered via received CONNECTIVITY_ACTION
+                                // broadcasts that result in being passed a
+                                // TetherMasterSM.CMD_UPSTREAM_CHANGED.
+                                break;
+                            default:
+                                break;
                         }
                         break;
-                    case EVENT_UPSTREAM_LOST:
-                        // TODO: Re-evaluate possible upstreams. Currently upstream reevaluation
-                        // is triggered via received CONNECTIVITY_ACTION broadcasts that result
-                        // in being passed a TetherMasterSM.CMD_UPSTREAM_CHANGED.
-                        mUpstreamNetworkMonitor.processNetworkLost((Network) message.obj);
-                        break;
+                    }
                     default:
                         retValue = false;
                         break;
diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
new file mode 100644
index 0000000..8254397
--- /dev/null
+++ b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
@@ -0,0 +1,253 @@
+/*
+ * 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.server.connectivity.tethering;
+
+import android.net.ConnectivityManager;
+import android.net.IpPrefix;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkState;
+import android.net.RouteInfo;
+import android.util.Log;
+
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.util.ArrayList;
+
+
+/**
+ * IPv6 tethering is rather different from IPv4 owing to the absence of NAT.
+ * This coordinator is responsible for evaluating the dedicated prefixes
+ * assigned to the device and deciding how to divvy them up among downstream
+ * interfaces.
+ *
+ * @hide
+ */
+public class IPv6TetheringCoordinator {
+    private static final String TAG = IPv6TetheringCoordinator.class.getSimpleName();
+    private static final boolean DBG = false;
+    private static final boolean VDBG = false;
+
+    private final ArrayList<TetherInterfaceStateMachine> mNotifyList;
+    private NetworkState mUpstreamNetworkState;
+
+    public IPv6TetheringCoordinator(ArrayList<TetherInterfaceStateMachine> notifyList) {
+        mNotifyList = notifyList;
+    }
+
+    public void updateUpstreamNetworkState(NetworkState ns) {
+        if (VDBG) {
+            Log.d(TAG, "updateUpstreamNetworkState: " + toDebugString(ns));
+        }
+        if (ns == null || ns.network == null) {
+            stopIPv6TetheringOnAllInterfaces();
+            setUpstreamNetworkState(null);
+            return;
+        }
+
+        if (mUpstreamNetworkState != null &&
+            !ns.network.equals(mUpstreamNetworkState.network)) {
+            stopIPv6TetheringOnAllInterfaces();
+        }
+        setUpstreamNetworkState(ns);
+        maybeUpdateIPv6TetheringInterfaces();
+    }
+
+    private void stopIPv6TetheringOnAllInterfaces() {
+        for (TetherInterfaceStateMachine sm : mNotifyList) {
+            sm.sendMessage(TetherInterfaceStateMachine.CMD_IPV6_TETHER_UPDATE,
+                    0, 0, null);
+        }
+    }
+
+    private void setUpstreamNetworkState(NetworkState ns) {
+        if (!canTetherIPv6(ns)) {
+            mUpstreamNetworkState = null;
+        } else {
+            mUpstreamNetworkState = new NetworkState(
+                    null,
+                    new LinkProperties(ns.linkProperties),
+                    new NetworkCapabilities(ns.networkCapabilities),
+                    new Network(ns.network),
+                    null,
+                    null);
+        }
+
+        if (DBG) {
+            Log.d(TAG, "setUpstreamNetworkState: " + toDebugString(mUpstreamNetworkState));
+        }
+    }
+
+    private void maybeUpdateIPv6TetheringInterfaces() {
+        if (mUpstreamNetworkState == null) return;
+
+        for (TetherInterfaceStateMachine sm : mNotifyList) {
+            final LinkProperties lp = getInterfaceIPv6LinkProperties(sm.interfaceType());
+            if (lp != null) {
+                sm.sendMessage(TetherInterfaceStateMachine.CMD_IPV6_TETHER_UPDATE, 0, 0, lp);
+            }
+            break;
+        }
+    }
+
+    private LinkProperties getInterfaceIPv6LinkProperties(int interfaceType) {
+        // NOTE: Here, in future, we would have policies to decide how to divvy
+        // up the available dedicated prefixes among downstream interfaces.
+        // At this time we have no such mechanism--we only support tethering
+        // IPv6 toward Wi-Fi interfaces.
+
+        switch (interfaceType) {
+            case ConnectivityManager.TETHERING_WIFI:
+                final LinkProperties lp = getIPv6OnlyLinkProperties(
+                        mUpstreamNetworkState.linkProperties);
+                if (lp.hasIPv6DefaultRoute() && lp.hasGlobalIPv6Address()) {
+                    return lp;
+                }
+                break;
+        }
+
+        return null;
+    }
+
+    private static boolean canTetherIPv6(NetworkState ns) {
+        // Broadly speaking:
+        //
+        //     [1] does the upstream have an IPv6 default route?
+        //
+        // and
+        //
+        //     [2] does the upstream have one or more global IPv6 /64s
+        //         dedicated to this device?
+        //
+        // In lieu of Prefix Delegation and other evaluation of whether a
+        // prefix may or may not be dedicated to this device, for now just
+        // check whether the upstream is TRANSPORT_CELLULAR. This works
+        // because "[t]he 3GPP network allocates each default bearer a unique
+        // /64 prefix", per RFC 6459, Section 5.2.
+
+        final boolean canTether =
+                (ns != null) && (ns.network != null) &&
+                (ns.linkProperties != null) && (ns.networkCapabilities != null) &&
+                // At least one upstream DNS server:
+                ns.linkProperties.isProvisioned() &&
+                // Minimal amount of IPv6 provisioning:
+                ns.linkProperties.hasIPv6DefaultRoute() &&
+                ns.linkProperties.hasGlobalIPv6Address() &&
+                // Temporary approximation of "dedicated prefix":
+                ns.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
+
+        // For now, we do not support separate IPv4 and IPv6 upstreams (e.g.
+        // tethering with 464xlat involved). TODO: Rectify this shortcoming,
+        // likely by calling NetworkManagementService#startInterfaceForwarding()
+        // for all upstream interfaces.
+        RouteInfo v4default = null;
+        RouteInfo v6default = null;
+        if (canTether) {
+            for (RouteInfo r : ns.linkProperties.getAllRoutes()) {
+                if (r.isIPv4Default()) {
+                    v4default = r;
+                } else if (r.isIPv6Default()) {
+                    v6default = r;
+                }
+
+                if (v4default != null && v6default != null) {
+                    break;
+                }
+            }
+        }
+
+        final boolean supportedConfiguration =
+                (v4default != null) && (v6default != null) &&
+                (v4default.getInterface() != null) &&
+                v4default.getInterface().equals(v6default.getInterface());
+
+        final boolean outcome = canTether && supportedConfiguration;
+
+        if (VDBG) {
+            if (ns == null) {
+                Log.d(TAG, "No available upstream.");
+            } else {
+                Log.d(TAG, String.format("IPv6 tethering is %s for upstream: %s",
+                        (outcome ? "available" : "not available"), toDebugString(ns)));
+            }
+        }
+
+        return outcome;
+    }
+
+    private static LinkProperties getIPv6OnlyLinkProperties(LinkProperties lp) {
+        final LinkProperties v6only = new LinkProperties();
+        if (lp == null) {
+            return v6only;
+        }
+
+        // NOTE: At this time we don't copy over any information about any
+        // stacked links. No current stacked link configuration has IPv6.
+
+        v6only.setInterfaceName(lp.getInterfaceName());
+
+        v6only.setMtu(lp.getMtu());
+
+        for (LinkAddress linkAddr : lp.getLinkAddresses()) {
+            if (linkAddr.isGlobalPreferred() && linkAddr.getPrefixLength() == 64) {
+                v6only.addLinkAddress(linkAddr);
+            }
+        }
+
+        for (RouteInfo routeInfo : lp.getRoutes()) {
+            final IpPrefix destination = routeInfo.getDestination();
+            if ((destination.getAddress() instanceof Inet6Address) &&
+                (destination.getPrefixLength() <= 64)) {
+                v6only.addRoute(routeInfo);
+            }
+        }
+
+        for (InetAddress dnsServer : lp.getDnsServers()) {
+            if (isIPv6GlobalAddress(dnsServer)) {
+                // For now we include ULAs.
+                v6only.addDnsServer(dnsServer);
+            }
+        }
+
+        v6only.setDomains(lp.getDomains());
+
+        return v6only;
+    }
+
+    // TODO: Delete this and switch to LinkAddress#isGlobalPreferred once we
+    // announce our own IPv6 address as DNS server.
+    private static boolean isIPv6GlobalAddress(InetAddress ip) {
+        return (ip instanceof Inet6Address) &&
+               !ip.isAnyLocalAddress() &&
+               !ip.isLoopbackAddress() &&
+               !ip.isLinkLocalAddress() &&
+               !ip.isSiteLocalAddress() &&
+               !ip.isMulticastAddress();
+    }
+
+    private static String toDebugString(NetworkState ns) {
+        if (ns == null) {
+            return "NetworkState{null}";
+        }
+        return String.format("NetworkState{%s, %s, %s}",
+                ns.network,
+                ns.networkCapabilities,
+                ns.linkProperties);
+    }
+}
diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java
new file mode 100644
index 0000000..b742838
--- /dev/null
+++ b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java
@@ -0,0 +1,177 @@
+/*
+ * 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.server.connectivity.tethering;
+
+import android.net.IpPrefix;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.NetworkCapabilities;
+import android.net.NetworkState;
+import android.net.RouteInfo;
+import android.net.ip.RouterAdvertisementDaemon;
+import android.net.ip.RouterAdvertisementDaemon.RaParams;
+import android.os.INetworkManagementService;
+import android.os.RemoteException;
+import android.util.Log;
+
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.HashSet;
+
+
+/**
+ * @hide
+ */
+class IPv6TetheringInterfaceServices {
+    private static final String TAG = IPv6TetheringInterfaceServices.class.getSimpleName();
+
+    private final String mIfName;
+    private final INetworkManagementService mNMService;
+
+    private NetworkInterface mNetworkInterface;
+    private byte[] mHwAddr;
+    private ArrayList<RouteInfo> mLastLocalRoutes;
+    private RouterAdvertisementDaemon mRaDaemon;
+    private RaParams mLastRaParams;
+
+    IPv6TetheringInterfaceServices(String ifname, INetworkManagementService nms) {
+        mIfName = ifname;
+        mNMService = nms;
+    }
+
+    public boolean start() {
+        try {
+            mNetworkInterface = NetworkInterface.getByName(mIfName);
+        } catch (SocketException e) {
+            Log.e(TAG, "Failed to find NetworkInterface for " + mIfName, e);
+            stop();
+            return false;
+        }
+
+        try {
+            mHwAddr = mNetworkInterface.getHardwareAddress();
+        } catch (SocketException e) {
+            Log.e(TAG, "Failed to find hardware address for " + mIfName, e);
+            stop();
+            return false;
+        }
+
+        final int ifindex = mNetworkInterface.getIndex();
+        mRaDaemon = new RouterAdvertisementDaemon(mIfName, ifindex, mHwAddr);
+        if (!mRaDaemon.start()) {
+            stop();
+            return false;
+        }
+
+        return true;
+    }
+
+    public void stop() {
+        mNetworkInterface = null;
+        mHwAddr = null;
+        updateLocalRoutes(null);
+        updateRaParams(null);
+
+        if (mRaDaemon != null) {
+            mRaDaemon.stop();
+            mRaDaemon = null;
+        }
+    }
+
+    // IPv6TetheringCoordinator sends updates with carefully curated IPv6-only
+    // LinkProperties. These have extraneous data filtered out and only the
+    // necessary prefixes included (per its prefix distribution policy).
+    //
+    // TODO: Evaluate using a data structure than is more directly suited to
+    // communicating only the relevant information.
+    public void updateUpstreamIPv6LinkProperties(LinkProperties v6only) {
+        if (mRaDaemon == null) return;
+
+        if (v6only == null) {
+            updateLocalRoutes(null);
+            updateRaParams(null);
+            return;
+        }
+
+        RaParams params = new RaParams();
+        params.mtu = v6only.getMtu();
+        params.hasDefaultRoute = v6only.hasIPv6DefaultRoute();
+
+        ArrayList<RouteInfo> localRoutes = new ArrayList<RouteInfo>();
+        for (LinkAddress linkAddr : v6only.getLinkAddresses()) {
+            final IpPrefix prefix = new IpPrefix(linkAddr.getAddress(),
+                                                 linkAddr.getPrefixLength());
+
+            // Accumulate routes representing "prefixes to be assigned to the
+            // local interface", for subsequent addition to the local network
+            // in the routing rules.
+            localRoutes.add(new RouteInfo(prefix, null, mIfName));
+
+            params.prefixes.add(prefix);
+        }
+
+        // We need to be able to send unicast RAs, and clients might like to
+        // ping the default router's link-local address, so add that as well.
+        localRoutes.add(new RouteInfo(new IpPrefix("fe80::/64"), null, mIfName));
+
+        // TODO: Add a local interface address, update dnsmasq to listen on the
+        // new address, and use only that address as a DNS server.
+        for (InetAddress dnsServer : v6only.getDnsServers()) {
+            if (dnsServer instanceof Inet6Address) {
+                params.dnses.add((Inet6Address) dnsServer);
+            }
+        }
+
+        updateLocalRoutes(localRoutes);
+        updateRaParams(params);
+    }
+
+    private void updateLocalRoutes(ArrayList<RouteInfo> localRoutes) {
+        if (localRoutes != null) {
+            // TODO: Compare with mLastLocalRoutes and take appropriate
+            // appropriate action on the difference between the two.
+
+            if (!localRoutes.isEmpty()) {
+                try {
+                    mNMService.addInterfaceToLocalNetwork(mIfName, localRoutes);
+                } catch (RemoteException e) {
+                    Log.e(TAG, "Failed to add IPv6 routes to local table: ", e);
+                }
+            }
+        } else {
+            if (mLastLocalRoutes != null && !mLastLocalRoutes.isEmpty()) {
+                // TODO: Remove only locally added network routes.
+                // mNMSwervice.removeInterfaceFromLocalNetwork(mIfName);
+            }
+        }
+
+        mLastLocalRoutes = localRoutes;
+    }
+
+    private void updateRaParams(RaParams params) {
+        if (mRaDaemon != null) {
+            // Currently, we send spurious RAs (5) whenever there's any update.
+            // TODO: Compare params with mLastParams to avoid spurious updates.
+            mRaDaemon.buildNewRa(params);
+        }
+
+        mLastRaParams = params;
+    }
+}
diff --git a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java b/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java
index aebeb69..9e7cb93 100644
--- a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java
+++ b/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java
@@ -20,6 +20,7 @@
 import android.net.INetworkStatsService;
 import android.net.InterfaceConfiguration;
 import android.net.LinkAddress;
+import android.net.LinkProperties;
 import android.net.NetworkUtils;
 import android.os.INetworkManagementService;
 import android.os.Looper;
@@ -73,6 +74,8 @@
     public static final int CMD_SET_DNS_FORWARDERS_ERROR    = BASE_IFACE + 11;
     // the upstream connection has changed
     public static final int CMD_TETHER_CONNECTION_CHANGED   = BASE_IFACE + 12;
+    // new IPv6 tethering parameters need to be processed
+    public static final int CMD_IPV6_TETHER_UPDATE          = BASE_IFACE + 13;
 
     private final State mInitialState;
     private final State mTetheredState;
@@ -84,6 +87,7 @@
 
     private final String mIfaceName;
     private final int mInterfaceType;
+    private final IPv6TetheringInterfaceServices mIPv6TetherSvc;
 
     private int mLastError;
     private String mMyUpstreamIfaceName;  // may change over time
@@ -97,6 +101,7 @@
         mTetherController = tetherController;
         mIfaceName = ifaceName;
         mInterfaceType = interfaceType;
+        mIPv6TetherSvc = new IPv6TetheringInterfaceServices(mIfaceName, mNMService);
         mLastError = ConnectivityManager.TETHER_ERROR_NO_ERROR;
 
         mInitialState = new InitialState();
@@ -109,6 +114,10 @@
         setInitialState(mInitialState);
     }
 
+    public int interfaceType() {
+        return mInterfaceType;
+    }
+
     // configured when we start tethering and unconfig'd on error or conclusion
     private boolean configureIfaceIp(boolean enabled) {
         if (VDBG) Log.d(TAG, "configureIfaceIp(" + enabled + ")");
@@ -175,6 +184,10 @@
                 case CMD_INTERFACE_DOWN:
                     transitionTo(mUnavailableState);
                     break;
+                case CMD_IPV6_TETHER_UPDATE:
+                    mIPv6TetherSvc.updateUpstreamIPv6LinkProperties(
+                            (LinkProperties) message.obj);
+                    break;
                 default:
                     retValue = false;
                     break;
@@ -200,6 +213,11 @@
                 transitionTo(mInitialState);
                 return;
             }
+
+            if (!mIPv6TetherSvc.start()) {
+                Log.e(TAG, "Failed to start IPv6TetheringInterfaceServices");
+            }
+
             if (DBG) Log.d(TAG, "Tethered " + mIfaceName);
             mTetherController.notifyInterfaceStateChange(
                     mIfaceName, TetherInterfaceStateMachine.this,
@@ -211,6 +229,7 @@
             // Note that at this point, we're leaving the tethered state.  We can fail any
             // of these operations, but it doesn't really change that we have to try them
             // all in sequence.
+            mIPv6TetherSvc.stop();
             cleanupUpstream();
 
             try {
@@ -287,6 +306,10 @@
                     }
                     mMyUpstreamIfaceName = newUpstreamIfaceName;
                     break;
+                case CMD_IPV6_TETHER_UPDATE:
+                    mIPv6TetherSvc.updateUpstreamIPv6LinkProperties(
+                            (LinkProperties) message.obj);
+                    break;
                 case CMD_IP_FORWARDING_ENABLE_ERROR:
                 case CMD_IP_FORWARDING_DISABLE_ERROR:
                 case CMD_START_TETHERING_ERROR:
diff --git a/services/core/java/com/android/server/display/DisplayAdapter.java b/services/core/java/com/android/server/display/DisplayAdapter.java
index 701b9f1..6ba25a5 100644
--- a/services/core/java/com/android/server/display/DisplayAdapter.java
+++ b/services/core/java/com/android/server/display/DisplayAdapter.java
@@ -49,13 +49,6 @@
      */
     private static final AtomicInteger NEXT_DISPLAY_MODE_ID = new AtomicInteger(1);  // 0 = no mode.
 
-    /**
-     * Used to generate globally unique color transform ids.
-     *
-     * Valid IDs start at 1 with 0 as the sentinel value for the default mode.
-     */
-    private static final AtomicInteger NEXT_COLOR_TRANSFORM_ID = new AtomicInteger(1);
-
     // Called with SyncRoot lock held.
     public DisplayAdapter(DisplayManagerService.SyncRoot syncRoot,
             Context context, Handler handler, Listener listener, String name) {
@@ -141,11 +134,6 @@
                 NEXT_DISPLAY_MODE_ID.getAndIncrement(), width, height, refreshRate);
     }
 
-    public static Display.ColorTransform createColorTransform(int colorTransform) {
-        return new Display.ColorTransform(
-                NEXT_COLOR_TRANSFORM_ID.getAndIncrement(), colorTransform);
-    }
-
     public interface Listener {
         public void onDisplayDeviceEvent(DisplayDevice device, int event);
         public void onTraversalRequested();
diff --git a/services/core/java/com/android/server/display/DisplayDevice.java b/services/core/java/com/android/server/display/DisplayDevice.java
index 7af0bdb..839ab4d 100644
--- a/services/core/java/com/android/server/display/DisplayDevice.java
+++ b/services/core/java/com/android/server/display/DisplayDevice.java
@@ -94,6 +94,11 @@
     }
 
     /**
+     * Returns whether the unique id of the device is stable across reboots.
+     */
+    public abstract boolean hasStableUniqueId();
+
+    /**
      * Gets information about the display device.
      *
      * The information returned should not change between calls unless the display
@@ -135,7 +140,7 @@
     /**
      * Sets the mode, if supported.
      */
-    public void requestColorTransformAndModeInTransactionLocked(int colorTransformId, int modeId) {
+    public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) {
     }
 
     /**
diff --git a/services/core/java/com/android/server/display/DisplayDeviceInfo.java b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
index 5ce66fa..6719182 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceInfo.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
@@ -118,6 +118,11 @@
     public static final int DIFF_OTHER = 1 << 1;
 
     /**
+     * Diff result: The color mode fields differ.
+     */
+    public static final int DIFF_COLOR_MODE = 1 << 2;
+
+    /**
      * Gets the name of the display device, which may be derived from EDID or
      * other sources. The name may be localized and displayed to the user.
      */
@@ -155,14 +160,11 @@
      */
     public Display.Mode[] supportedModes = Display.Mode.EMPTY_ARRAY;
 
-    /** The active color transform of the display */
-    public int colorTransformId;
+    /** The active color mode of the display */
+    public int colorMode;
 
-    /** The default color transform of the display */
-    public int defaultColorTransformId;
-
-    /** The supported color transforms of the display */
-    public Display.ColorTransform[] supportedColorTransforms = Display.ColorTransform.EMPTY_ARRAY;
+    /** The supported color modes of the display */
+    public int[] supportedColorModes = { Display.COLOR_MODE_DEFAULT };
 
     /**
      * The HDR capabilities this display claims to support.
@@ -283,6 +285,9 @@
         if (state != other.state) {
             diff |= DIFF_STATE;
         }
+        if (colorMode != other.colorMode) {
+            diff |= DIFF_COLOR_MODE;
+        }
         if (!Objects.equal(name, other.name)
                 || !Objects.equal(uniqueId, other.uniqueId)
                 || width != other.width
@@ -290,9 +295,7 @@
                 || modeId != other.modeId
                 || defaultModeId != other.defaultModeId
                 || !Arrays.equals(supportedModes, other.supportedModes)
-                || colorTransformId != other.colorTransformId
-                || defaultColorTransformId != other.defaultColorTransformId
-                || !Arrays.equals(supportedColorTransforms, other.supportedColorTransforms)
+                || !Arrays.equals(supportedColorModes, other.supportedColorModes)
                 || !Objects.equal(hdrCapabilities, other.hdrCapabilities)
                 || densityDpi != other.densityDpi
                 || xDpi != other.xDpi
@@ -324,9 +327,8 @@
         modeId = other.modeId;
         defaultModeId = other.defaultModeId;
         supportedModes = other.supportedModes;
-        colorTransformId = other.colorTransformId;
-        defaultColorTransformId = other.defaultColorTransformId;
-        supportedColorTransforms = other.supportedColorTransforms;
+        colorMode = other.colorMode;
+        supportedColorModes = other.supportedColorModes;
         hdrCapabilities = other.hdrCapabilities;
         densityDpi = other.densityDpi;
         xDpi = other.xDpi;
@@ -353,9 +355,8 @@
         sb.append(", modeId ").append(modeId);
         sb.append(", defaultModeId ").append(defaultModeId);
         sb.append(", supportedModes ").append(Arrays.toString(supportedModes));
-        sb.append(", colorTransformId ").append(colorTransformId);
-        sb.append(", defaultColorTransformId ").append(defaultColorTransformId);
-        sb.append(", supportedColorTransforms ").append(Arrays.toString(supportedColorTransforms));
+        sb.append(", colorMode ").append(colorMode);
+        sb.append(", supportedColorModes ").append(Arrays.toString(supportedColorModes));
         sb.append(", HdrCapabilities ").append(hdrCapabilities);
         sb.append(", density ").append(densityDpi);
         sb.append(", ").append(xDpi).append(" x ").append(yDpi).append(" dpi");
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 6a6570b..0abd2e7 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -239,11 +239,17 @@
 
     @Override
     public void onStart() {
+        // We need to pre-load the persistent data store so it's ready before the default display
+        // adapter is up so that we have it's configuration. We could load it lazily, but since
+        // we're going to have to read it in eventually we may as well do it here rather than after
+        // we've waited for the diplay to register itself with us.
+        mPersistentDataStore.loadIfNeeded();
         mHandler.sendEmptyMessage(MSG_REGISTER_DEFAULT_DISPLAY_ADAPTER);
 
         publishBinderService(Context.DISPLAY_SERVICE, new BinderService(),
                 true /*allowIsolated*/);
         publishLocalService(DisplayManagerInternal.class, new LocalService());
+        publishLocalService(DisplayTransformManager.class, new DisplayTransformManager());
     }
 
     @Override
@@ -540,12 +546,12 @@
         }
     }
 
-    private void requestColorTransformInternal(int displayId, int colorTransformId) {
+    private void requestColorModeInternal(int displayId, int colorMode) {
         synchronized (mSyncRoot) {
             LogicalDisplay display = mLogicalDisplays.get(displayId);
             if (display != null &&
-                    display.getRequestedColorTransformIdLocked() != colorTransformId) {
-                display.setRequestedColorTransformIdLocked(colorTransformId);
+                    display.getRequestedColorModeLocked() != colorMode) {
+                display.setRequestedColorModeLocked(colorMode);
                 scheduleTraversalLocked(false);
             }
         }
@@ -690,11 +696,15 @@
         device.mDebugLastLoggedDeviceInfo = info;
 
         mDisplayDevices.add(device);
-        addLogicalDisplayLocked(device);
+        LogicalDisplay display = addLogicalDisplayLocked(device);
         Runnable work = updateDisplayStateLocked(device);
         if (work != null) {
             work.run();
         }
+        if (display != null && display.getPrimaryDisplayDeviceLocked() == device) {
+            int colorMode = mPersistentDataStore.getColorMode(device);
+            display.setRequestedColorModeLocked(colorMode);
+        }
         scheduleTraversalLocked(false);
     }
 
@@ -713,6 +723,13 @@
             } else if (diff != 0) {
                 Slog.i(TAG, "Display device changed: " + info);
             }
+            if ((diff & DisplayDeviceInfo.DIFF_COLOR_MODE) != 0) {
+                try {
+                    mPersistentDataStore.setColorMode(device, info.colorMode);
+                } finally {
+                    mPersistentDataStore.saveIfNeeded();
+                }
+            }
             device.mDebugLastLoggedDeviceInfo = info;
 
             device.applyPendingDisplayDeviceInfoChangesLocked();
@@ -765,7 +782,7 @@
 
     // Adds a new logical display based on the given display device.
     // Sends notifications if needed.
-    private void addLogicalDisplayLocked(DisplayDevice device) {
+    private LogicalDisplay addLogicalDisplayLocked(DisplayDevice device) {
         DisplayDeviceInfo deviceInfo = device.getDisplayDeviceInfoLocked();
         boolean isDefault = (deviceInfo.flags
                 & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0;
@@ -777,7 +794,7 @@
         if (!isDefault && mSingleDisplayDemoMode) {
             Slog.i(TAG, "Not creating a logical display for a secondary display "
                     + " because single display demo mode is enabled: " + deviceInfo);
-            return;
+            return null;
         }
 
         final int displayId = assignDisplayIdLocked(isDefault);
@@ -789,7 +806,7 @@
             // This should never happen currently.
             Slog.w(TAG, "Ignoring display device because the logical display "
                     + "created from it was not considered valid: " + deviceInfo);
-            return;
+            return null;
         }
 
         mLogicalDisplays.put(displayId, display);
@@ -800,6 +817,7 @@
         }
 
         sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_ADDED);
+        return display;
     }
 
     private int assignDisplayIdLocked(boolean isDefault) {
@@ -1067,6 +1085,9 @@
             if (mDisplayPowerController != null) {
                 mDisplayPowerController.dump(pw);
             }
+
+            pw.println();
+            mPersistentDataStore.dump(pw);
         }
     }
 
@@ -1351,13 +1372,13 @@
         }
 
         @Override // Binder call
-        public void requestColorTransform(int displayId, int colorTransformId) {
+        public void requestColorMode(int displayId, int colorMode) {
             mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM,
-                    "Permission required to change the display color transform");
+                    Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE,
+                    "Permission required to change the display color mode");
             final long token = Binder.clearCallingIdentity();
             try {
-                requestColorTransformInternal(displayId, colorTransformId);
+                requestColorModeInternal(displayId, colorMode);
             } finally {
                 Binder.restoreCallingIdentity(token);
             }
diff --git a/services/core/java/com/android/server/display/DisplayTransformManager.java b/services/core/java/com/android/server/display/DisplayTransformManager.java
new file mode 100644
index 0000000..6902b1a
--- /dev/null
+++ b/services/core/java/com/android/server/display/DisplayTransformManager.java
@@ -0,0 +1,202 @@
+/*
+ * 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.server.display;
+
+import android.opengl.Matrix;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.Slog;
+import android.util.SparseArray;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.util.Arrays;
+
+/**
+ * Manager for applying color transformations to the display.
+ */
+public class DisplayTransformManager {
+
+    private static final String TAG = "DisplayTransformManager";
+
+    /**
+     * Color transform level used by Night display to tint the display red.
+     */
+    public static final int LEVEL_COLOR_MATRIX_NIGHT_DISPLAY = 100;
+    /**
+     * Color transform level used by A11y services to make the display monochromatic.
+     */
+    public static final int LEVEL_COLOR_MATRIX_GRAYSCALE = 200;
+    /**
+     * Color transform level used by A11y services to invert the display colors.
+     */
+    public static final int LEVEL_COLOR_MATRIX_INVERT_COLOR = 300;
+
+    /**
+     * Map of level -> color transformation matrix.
+     */
+    @GuardedBy("mColorMatrix")
+    private final SparseArray<float[]> mColorMatrix = new SparseArray<>(3);
+    /**
+     * Temporary matrix used internally by {@link #computeColorMatrixLocked()}.
+     */
+    @GuardedBy("mColorMatrix")
+    private final float[][] mTempColorMatrix = new float[2][16];
+
+    /**
+     * Lock used for synchronize access to {@link #mDaltonizerMode}.
+     */
+    private final Object mDaltonizerModeLock = new Object();
+    @GuardedBy("mDaltonizerModeLock")
+    private int mDaltonizerMode = -1;
+
+    /* package */ DisplayTransformManager() {
+    }
+
+    /**
+     * Returns a copy of the color transform matrix set for a given level.
+     */
+    public float[] getColorMatrix(int key) {
+        synchronized (mColorMatrix) {
+            final float[] value = mColorMatrix.get(key);
+            return value == null ? null : Arrays.copyOf(value, value.length);
+        }
+    }
+
+    /**
+     * Sets and applies a current color transform matrix for a given level.
+     * <p>
+     * Note: all color transforms are first composed to a single matrix in ascending order based
+     * on level before being applied to the display.
+     *
+     * @param level the level used to identify and compose the color transform (low -> high)
+     * @param value the 4x4 color transform matrix (in column-major order), or {@code null} to
+     *              remove the color transform matrix associated with the provided level
+     */
+    public void setColorMatrix(int level, float[] value) {
+        if (value != null && value.length != 16) {
+            throw new IllegalArgumentException("Expected length: 16 (4x4 matrix)"
+                    + ", actual length: " + value.length);
+        }
+
+        synchronized (mColorMatrix) {
+            final float[] oldValue = mColorMatrix.get(level);
+            if (!Arrays.equals(oldValue, value)) {
+                if (value == null) {
+                    mColorMatrix.remove(level);
+                } else if (oldValue == null) {
+                    mColorMatrix.put(level, Arrays.copyOf(value, value.length));
+                } else {
+                    System.arraycopy(value, 0, oldValue, 0, value.length);
+                }
+
+                // Update the current color transform.
+                applyColorMatrix(computeColorMatrixLocked());
+            }
+        }
+    }
+
+    /**
+     * Returns the composition of all current color matrices, or {@code null} if there are none.
+     */
+    @GuardedBy("mColorMatrix")
+    private float[] computeColorMatrixLocked() {
+        final int count = mColorMatrix.size();
+        if (count == 0) {
+            return null;
+        }
+
+        final float[][] result = mTempColorMatrix;
+        Matrix.setIdentityM(result[0], 0);
+        for (int i = 0; i < count; i++) {
+            float[] rhs = mColorMatrix.valueAt(i);
+            Matrix.multiplyMM(result[(i + 1) % 2], 0, result[i % 2], 0, rhs, 0);
+        }
+        return result[count % 2];
+    }
+
+    /**
+     * Returns the current Daltonization mode.
+     */
+    public int getDaltonizerMode() {
+        synchronized (mDaltonizerModeLock) {
+            return mDaltonizerMode;
+        }
+    }
+
+    /**
+     * Sets the current Daltonization mode. This adjusts the color space to correct for or simulate
+     * various types of color blindness.
+     *
+     * @param mode the new Daltonization mode, or -1 to disable
+     */
+    public void setDaltonizerMode(int mode) {
+        synchronized (mDaltonizerModeLock) {
+            if (mDaltonizerMode != mode) {
+                mDaltonizerMode = mode;
+                applyDaltonizerMode(mode);
+            }
+        }
+    }
+
+    /**
+     * Propagates the provided color transformation matrix to the SurfaceFlinger.
+     */
+    private static void applyColorMatrix(float[] m) {
+        final IBinder flinger = ServiceManager.getService("SurfaceFlinger");
+        if (flinger != null) {
+            final Parcel data = Parcel.obtain();
+            data.writeInterfaceToken("android.ui.ISurfaceComposer");
+            if (m != null) {
+                data.writeInt(1);
+                for (int i = 0; i < 16; i++) {
+                    data.writeFloat(m[i]);
+                }
+            } else {
+                data.writeInt(0);
+            }
+            try {
+                flinger.transact(1015, data, null, 0);
+            } catch (RemoteException ex) {
+                Slog.e(TAG, "Failed to set color transform", ex);
+            } finally {
+                data.recycle();
+            }
+        }
+    }
+
+    /**
+     * Propagates the provided Daltonization mode to the SurfaceFlinger.
+     */
+    private static void applyDaltonizerMode(int mode) {
+        final IBinder flinger = ServiceManager.getService("SurfaceFlinger");
+        if (flinger != null) {
+            final Parcel data = Parcel.obtain();
+            data.writeInterfaceToken("android.ui.ISurfaceComposer");
+            data.writeInt(mode);
+            try {
+                flinger.transact(1014, data, null, 0);
+            } catch (RemoteException ex) {
+                Slog.e(TAG, "Failed to set Daltonizer mode", ex);
+            } finally {
+                data.recycle();
+            }
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index ebba354..61c2eac 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -39,6 +39,8 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 
 /**
  * A display adapter for the local displays managed by Surface Flinger.
@@ -100,14 +102,25 @@
                         builtInDisplayId);
                 return;
             }
+            int activeColorMode = SurfaceControl.getActiveColorMode(displayToken);
+            if (activeColorMode < 0) {
+                // We failed to get the active color mode. We don't bail out here since on the next
+                // configuration pass we'll go ahead and set it to whatever it was set to last (or
+                // COLOR_MODE_NATIVE if this is the first configuration).
+                Slog.w(TAG, "Unable to get active color mode for display device " +
+                        builtInDisplayId);
+                activeColorMode = Display.COLOR_MODE_INVALID;
+            }
+            int[] colorModes = SurfaceControl.getDisplayColorModes(displayToken);
             LocalDisplayDevice device = mDevices.get(builtInDisplayId);
             if (device == null) {
                 // Display was added.
                 device = new LocalDisplayDevice(displayToken, builtInDisplayId,
-                        configs, activeConfig);
+                        configs, activeConfig, colorModes, activeColorMode);
                 mDevices.put(builtInDisplayId, device);
                 sendDisplayDeviceEventLocked(device, DISPLAY_DEVICE_EVENT_ADDED);
-            } else if (device.updatePhysicalDisplayInfoLocked(configs, activeConfig)) {
+            } else if (device.updatePhysicalDisplayInfoLocked(configs, activeConfig,
+                        colorModes, activeColorMode)) {
                 // Display properties changed.
                 sendDisplayDeviceEventLocked(device, DISPLAY_DEVICE_EVENT_CHANGED);
             }
@@ -144,8 +157,7 @@
         private final int mBuiltInDisplayId;
         private final Light mBacklight;
         private final SparseArray<DisplayModeRecord> mSupportedModes = new SparseArray<>();
-        private final SparseArray<Display.ColorTransform> mSupportedColorTransforms =
-                new SparseArray<>();
+        private final ArrayList<Integer> mSupportedColorModes = new ArrayList<>();
 
         private DisplayDeviceInfo mInfo;
         private boolean mHavePendingChanges;
@@ -155,18 +167,20 @@
         private int mDefaultModeId;
         private int mActiveModeId;
         private boolean mActiveModeInvalid;
-        private int mDefaultColorTransformId;
-        private int mActiveColorTransformId;
-        private boolean mActiveColorTransformInvalid;
+        private int mActiveColorMode;
+        private boolean mActiveColorModeInvalid;
         private Display.HdrCapabilities mHdrCapabilities;
 
         private  SurfaceControl.PhysicalDisplayInfo mDisplayInfos[];
 
         public LocalDisplayDevice(IBinder displayToken, int builtInDisplayId,
-                SurfaceControl.PhysicalDisplayInfo[] physicalDisplayInfos, int activeDisplayInfo) {
+                SurfaceControl.PhysicalDisplayInfo[] physicalDisplayInfos, int activeDisplayInfo,
+                int[] colorModes, int activeColorMode) {
             super(LocalDisplayAdapter.this, displayToken, UNIQUE_ID_PREFIX + builtInDisplayId);
             mBuiltInDisplayId = builtInDisplayId;
-            updatePhysicalDisplayInfoLocked(physicalDisplayInfos, activeDisplayInfo);
+            updatePhysicalDisplayInfoLocked(physicalDisplayInfos, activeDisplayInfo,
+                    colorModes, activeColorMode);
+            updateColorModesLocked(colorModes, activeColorMode);
             if (mBuiltInDisplayId == SurfaceControl.BUILT_IN_DISPLAY_ID_MAIN) {
                 LightsManager lights = LocalServices.getService(LightsManager.class);
                 mBacklight = lights.getLight(LightsManager.LIGHT_ID_BACKLIGHT);
@@ -176,42 +190,16 @@
             mHdrCapabilities = SurfaceControl.getHdrCapabilities(displayToken);
         }
 
+        @Override
+        public boolean hasStableUniqueId() {
+            return true;
+        }
+
         public boolean updatePhysicalDisplayInfoLocked(
-                SurfaceControl.PhysicalDisplayInfo[] physicalDisplayInfos, int activeDisplayInfo) {
+                SurfaceControl.PhysicalDisplayInfo[] physicalDisplayInfos, int activeDisplayInfo,
+                int[] colorModes, int activeColorMode) {
             mDisplayInfos = Arrays.copyOf(physicalDisplayInfos, physicalDisplayInfos.length);
             mActivePhysIndex = activeDisplayInfo;
-            ArrayList<Display.ColorTransform> colorTransforms = new ArrayList<>();
-
-            // Build an updated list of all existing color transforms.
-            boolean colorTransformsAdded = false;
-            Display.ColorTransform activeColorTransform = null;
-            for (int i = 0; i < physicalDisplayInfos.length; i++) {
-                SurfaceControl.PhysicalDisplayInfo info = physicalDisplayInfos[i];
-                // First check to see if we've already added this color transform
-                boolean existingMode = false;
-                for (int j = 0; j < colorTransforms.size(); j++) {
-                    if (colorTransforms.get(j).getColorTransform() == info.colorTransform) {
-                        existingMode = true;
-                        if (i == activeDisplayInfo) {
-                            activeColorTransform = colorTransforms.get(j);
-                        }
-                        break;
-                    }
-                }
-                if (existingMode) {
-                    continue;
-                }
-                Display.ColorTransform colorTransform = findColorTransform(info);
-                if (colorTransform == null) {
-                    colorTransform = createColorTransform(info.colorTransform);
-                    colorTransformsAdded = true;
-                }
-                colorTransforms.add(colorTransform);
-                if (i == activeDisplayInfo) {
-                    activeColorTransform = colorTransform;
-                }
-            }
-
             // Build an updated list of all existing modes.
             ArrayList<DisplayModeRecord> records = new ArrayList<DisplayModeRecord>();
             boolean modesAdded = false;
@@ -257,21 +245,10 @@
                 mActiveModeInvalid = true;
                 sendTraversalRequestLocked();
             }
-            // Check whether surface flinger spontaneously changed color transforms out from under
-            // us.
-            if (mActiveColorTransformId != 0
-                    && mActiveColorTransformId != activeColorTransform.getId()) {
-                mActiveColorTransformInvalid = true;
-                sendTraversalRequestLocked();
-            }
 
-            boolean colorTransformsChanged =
-                    colorTransforms.size() != mSupportedColorTransforms.size()
-                    || colorTransformsAdded;
             boolean recordsChanged = records.size() != mSupportedModes.size() || modesAdded;
-            // If neither the records nor the supported color transforms have changed then we're
-            // done here.
-            if (!recordsChanged && !colorTransformsChanged) {
+            // If the records haven't changed then we're done here.
+            if (!recordsChanged) {
                 return false;
             }
             // Update the index of modes.
@@ -281,24 +258,13 @@
             for (DisplayModeRecord record : records) {
                 mSupportedModes.put(record.mMode.getModeId(), record);
             }
-            mSupportedColorTransforms.clear();
-            for (Display.ColorTransform colorTransform : colorTransforms) {
-                mSupportedColorTransforms.put(colorTransform.getId(), colorTransform);
-            }
-
-            // Update the default mode and color transform if needed. This needs to be done in
-            // tandem so we always have a default state to fall back to.
-            if (findDisplayInfoIndexLocked(mDefaultColorTransformId, mDefaultModeId) < 0) {
+            // Update the default mode, if needed.
+            if (findDisplayInfoIndexLocked(mDefaultModeId) < 0) {
                 if (mDefaultModeId != 0) {
                     Slog.w(TAG, "Default display mode no longer available, using currently"
                             + " active mode as default.");
                 }
                 mDefaultModeId = activeRecord.mMode.getModeId();
-                if (mDefaultColorTransformId != 0) {
-                    Slog.w(TAG, "Default color transform no longer available, using currently"
-                            + " active color transform as default");
-                }
-                mDefaultColorTransformId = activeColorTransform.getId();
             }
             // Determine whether the active mode is still there.
             if (mSupportedModes.indexOfKey(mActiveModeId) < 0) {
@@ -310,20 +276,62 @@
                 mActiveModeInvalid = true;
             }
 
-            // Determine whether the active color transform is still there.
-            if (mSupportedColorTransforms.indexOfKey(mActiveColorTransformId) < 0) {
-                if (mActiveColorTransformId != 0) {
-                    Slog.w(TAG, "Active color transform no longer available, reverting"
-                            + " to default transform.");
-                }
-                mActiveColorTransformId = mDefaultColorTransformId;
-                mActiveColorTransformInvalid = true;
-            }
             // Schedule traversals so that we apply pending changes.
             sendTraversalRequestLocked();
             return true;
         }
 
+        private boolean updateColorModesLocked(int[] colorModes,
+                int activeColorMode) {
+            List<Integer> pendingColorModes = new ArrayList<>();
+
+            // Build an updated list of all existing color modes.
+            boolean colorModesAdded = false;
+            for (int colorMode: colorModes) {
+                if (!mSupportedColorModes.contains(colorMode)) {
+                    colorModesAdded = true;
+                }
+                pendingColorModes.add(colorMode);
+            }
+
+            boolean colorModesChanged =
+                    pendingColorModes.size() != mSupportedColorModes.size()
+                    || colorModesAdded;
+
+            // If the supported color modes haven't changed then we're done here.
+            if (!colorModesChanged) {
+                return false;
+            }
+
+            mHavePendingChanges = true;
+
+            mSupportedColorModes.clear();
+            mSupportedColorModes.addAll(pendingColorModes);
+            Collections.sort(mSupportedColorModes);
+
+            // Determine whether the active color mode is still there.
+            if (!mSupportedColorModes.contains(mActiveColorMode)) {
+                if (mActiveColorMode != 0) {
+                    Slog.w(TAG, "Active color mode no longer available, reverting"
+                            + " to default mode.");
+                    mActiveColorMode = Display.COLOR_MODE_DEFAULT;
+                    mActiveColorModeInvalid = true;
+                } else {
+                    if (!mSupportedColorModes.isEmpty()) {
+                        // This should never happen.
+                        Slog.e(TAG, "Default and active color mode is no longer available!"
+                                + " Reverting to first available mode.");
+                        mActiveColorMode = mSupportedColorModes.get(0);
+                        mActiveColorModeInvalid = true;
+                    } else {
+                        // This should really never happen.
+                        Slog.e(TAG, "No color modes available!");
+                    }
+                }
+            }
+            return true;
+        }
+
         private DisplayModeRecord findDisplayModeRecord(SurfaceControl.PhysicalDisplayInfo info) {
             for (int i = 0; i < mSupportedModes.size(); i++) {
                 DisplayModeRecord record = mSupportedModes.valueAt(i);
@@ -334,16 +342,6 @@
             return null;
         }
 
-        private Display.ColorTransform findColorTransform(SurfaceControl.PhysicalDisplayInfo info) {
-            for (int i = 0; i < mSupportedColorTransforms.size(); i++) {
-                Display.ColorTransform transform = mSupportedColorTransforms.valueAt(i);
-                if (transform.getColorTransform() == info.colorTransform) {
-                    return transform;
-                }
-            }
-            return null;
-        }
-
         @Override
         public void applyPendingDisplayDeviceInfoChangesLocked() {
             if (mHavePendingChanges) {
@@ -366,12 +364,11 @@
                     DisplayModeRecord record = mSupportedModes.valueAt(i);
                     mInfo.supportedModes[i] = record.mMode;
                 }
-                mInfo.colorTransformId = mActiveColorTransformId;
-                mInfo.defaultColorTransformId = mDefaultColorTransformId;
-                mInfo.supportedColorTransforms =
-                        new Display.ColorTransform[mSupportedColorTransforms.size()];
-                for (int i = 0; i < mSupportedColorTransforms.size(); i++) {
-                    mInfo.supportedColorTransforms[i] = mSupportedColorTransforms.valueAt(i);
+                mInfo.colorMode = mActiveColorMode;
+                mInfo.supportedColorModes =
+                        new int[mSupportedColorModes.size()];
+                for (int i = 0; i < mSupportedColorModes.size(); i++) {
+                    mInfo.supportedColorModes[i] = mSupportedColorModes.get(i);
                 }
                 mInfo.hdrCapabilities = mHdrCapabilities;
                 mInfo.appVsyncOffsetNanos = phys.appVsyncOffsetNanos;
@@ -523,8 +520,15 @@
         }
 
         @Override
-        public void requestColorTransformAndModeInTransactionLocked(
-                int colorTransformId, int modeId) {
+        public void requestDisplayModesInTransactionLocked(
+                int colorMode, int modeId) {
+            if (requestModeInTransactionLocked(modeId) ||
+                    requestColorModeInTransactionLocked(colorMode)) {
+                updateDeviceInfoLocked();
+            }
+        }
+
+        public boolean requestModeInTransactionLocked(int modeId) {
             if (modeId == 0) {
                 modeId = mDefaultModeId;
             } else if (mSupportedModes.indexOfKey(modeId) < 0) {
@@ -533,37 +537,36 @@
                 modeId = mDefaultModeId;
             }
 
-            if (colorTransformId == 0) {
-                colorTransformId = mDefaultColorTransformId;
-            } else if (mSupportedColorTransforms.indexOfKey(colorTransformId) < 0) {
-                Slog.w(TAG, "Requested color transform " + colorTransformId + " is not supported"
-                        + " by this display, reverting to the default color transform");
-                colorTransformId = mDefaultColorTransformId;
-            }
-            int physIndex = findDisplayInfoIndexLocked(colorTransformId, modeId);
+            int physIndex = findDisplayInfoIndexLocked(modeId);
             if (physIndex < 0) {
-                Slog.w(TAG, "Requested color transform, mode ID pair (" + colorTransformId + ", "
-                        + modeId + ") not available, trying color transform with default mode ID");
+                Slog.w(TAG, "Requested mode ID " + modeId + " not available,"
+                        + " trying with default mode ID");
                 modeId = mDefaultModeId;
-                physIndex = findDisplayInfoIndexLocked(colorTransformId, modeId);
-                if (physIndex < 0) {
-                    Slog.w(TAG, "Requested color transform with default mode ID still not"
-                            + " available, falling back to default color transform with default"
-                            + " mode.");
-                    colorTransformId = mDefaultColorTransformId;
-                    physIndex = findDisplayInfoIndexLocked(colorTransformId, modeId);
-                }
+                physIndex = findDisplayInfoIndexLocked(modeId);
             }
             if (mActivePhysIndex == physIndex) {
-                return;
+                return false;
             }
             SurfaceControl.setActiveConfig(getDisplayTokenLocked(), physIndex);
             mActivePhysIndex = physIndex;
             mActiveModeId = modeId;
             mActiveModeInvalid = false;
-            mActiveColorTransformId = colorTransformId;
-            mActiveColorTransformInvalid = false;
-            updateDeviceInfoLocked();
+            return true;
+        }
+
+        public boolean requestColorModeInTransactionLocked(int colorMode) {
+            if (mActiveColorMode == colorMode) {
+                return false;
+            }
+            if (!mSupportedColorModes.contains(colorMode)) {
+                Slog.w(TAG, "Unable to find color mode " + colorMode
+                        + ", ignoring request.");
+                return false;
+            }
+            SurfaceControl.setActiveColorMode(getDisplayTokenLocked(), colorMode);
+            mActiveColorMode = colorMode;
+            mActiveColorModeInvalid = false;
+            return true;
         }
 
         @Override
@@ -572,7 +575,7 @@
             pw.println("mBuiltInDisplayId=" + mBuiltInDisplayId);
             pw.println("mActivePhysIndex=" + mActivePhysIndex);
             pw.println("mActiveModeId=" + mActiveModeId);
-            pw.println("mActiveColorTransformId=" + mActiveColorTransformId);
+            pw.println("mActiveColorMode=" + mActiveColorMode);
             pw.println("mState=" + Display.stateToString(mState));
             pw.println("mBrightness=" + mBrightness);
             pw.println("mBacklight=" + mBacklight);
@@ -584,24 +587,22 @@
             for (int i = 0; i < mSupportedModes.size(); i++) {
                 pw.println("  " + mSupportedModes.valueAt(i));
             }
-            pw.println("mSupportedColorTransforms=[");
-            for (int i = 0; i < mSupportedColorTransforms.size(); i++) {
+            pw.print("mSupportedColorModes=[");
+            for (int i = 0; i < mSupportedColorModes.size(); i++) {
                 if (i != 0) {
                     pw.print(", ");
                 }
-                pw.print(mSupportedColorTransforms.valueAt(i));
+                pw.print(mSupportedColorModes.get(i));
             }
             pw.println("]");
         }
 
-        private int findDisplayInfoIndexLocked(int colorTransformId, int modeId) {
+        private int findDisplayInfoIndexLocked(int modeId) {
             DisplayModeRecord record = mSupportedModes.get(modeId);
-            Display.ColorTransform transform = mSupportedColorTransforms.get(colorTransformId);
-            if (record != null && transform != null) {
+            if (record != null) {
                 for (int i = 0; i < mDisplayInfos.length; i++) {
                     SurfaceControl.PhysicalDisplayInfo info = mDisplayInfos[i];
-                    if (info.colorTransform == transform.getColorTransform()
-                            && record.hasMatchingMode(info)){
+                    if (record.hasMatchingMode(info)){
                         return i;
                     }
                 }
diff --git a/services/core/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java
index 973f04c..287a25a 100644
--- a/services/core/java/com/android/server/display/LogicalDisplay.java
+++ b/services/core/java/com/android/server/display/LogicalDisplay.java
@@ -74,7 +74,7 @@
     private boolean mHasContent;
 
     private int mRequestedModeId;
-    private int mRequestedColorTransformId;
+    private int mRequestedColorMode;
 
     // The display offsets to apply to the display projection.
     private int mDisplayOffsetX;
@@ -236,11 +236,10 @@
             mBaseDisplayInfo.defaultModeId = deviceInfo.defaultModeId;
             mBaseDisplayInfo.supportedModes = Arrays.copyOf(
                     deviceInfo.supportedModes, deviceInfo.supportedModes.length);
-            mBaseDisplayInfo.colorTransformId = deviceInfo.colorTransformId;
-            mBaseDisplayInfo.defaultColorTransformId = deviceInfo.defaultColorTransformId;
-            mBaseDisplayInfo.supportedColorTransforms = Arrays.copyOf(
-                    deviceInfo.supportedColorTransforms,
-                    deviceInfo.supportedColorTransforms.length);
+            mBaseDisplayInfo.colorMode = deviceInfo.colorMode;
+            mBaseDisplayInfo.supportedColorModes = Arrays.copyOf(
+                    deviceInfo.supportedColorModes,
+                    deviceInfo.supportedColorModes.length);
             mBaseDisplayInfo.hdrCapabilities = deviceInfo.hdrCapabilities;
             mBaseDisplayInfo.logicalDensityDpi = deviceInfo.densityDpi;
             mBaseDisplayInfo.physicalXDpi = deviceInfo.xDpi;
@@ -282,12 +281,12 @@
         // Set the layer stack.
         device.setLayerStackInTransactionLocked(isBlanked ? BLANK_LAYER_STACK : mLayerStack);
 
-        // Set the color transform and mode.
+        // Set the color mode and mode.
         if (device == mPrimaryDisplayDevice) {
-            device.requestColorTransformAndModeInTransactionLocked(
-                    mRequestedColorTransformId, mRequestedModeId);
+            device.requestDisplayModesInTransactionLocked(
+                    mRequestedColorMode, mRequestedModeId);
         } else {
-            device.requestColorTransformAndModeInTransactionLocked(0, 0);  // Revert to default.
+            device.requestDisplayModesInTransactionLocked(0, 0);  // Revert to default.
         }
 
         // Only grab the display info now as it may have been changed based on the requests above.
@@ -391,15 +390,15 @@
     }
 
     /**
-     * Requests the given color transform.
+     * Requests the given color mode.
      */
-    public void setRequestedColorTransformIdLocked(int colorTransformId) {
-        mRequestedColorTransformId = colorTransformId;
+    public void setRequestedColorModeLocked(int colorMode) {
+        mRequestedColorMode = colorMode;
     }
 
-    /** Returns the pending requested color transform. */
-    public int getRequestedColorTransformIdLocked() {
-        return mRequestedColorTransformId;
+    /** Returns the pending requested color mode. */
+    public int getRequestedColorModeLocked() {
+        return mRequestedColorMode;
     }
 
     /**
@@ -429,7 +428,7 @@
         pw.println("mLayerStack=" + mLayerStack);
         pw.println("mHasContent=" + mHasContent);
         pw.println("mRequestedMode=" + mRequestedModeId);
-        pw.println("mRequestedColorTransformId=" + mRequestedColorTransformId);
+        pw.println("mRequestedColorMode=" + mRequestedColorMode);
         pw.println("mDisplayOffset=(" + mDisplayOffsetX + ", " + mDisplayOffsetY + ")");
         pw.println("mPrimaryDisplayDevice=" + (mPrimaryDisplayDevice != null ?
                 mPrimaryDisplayDevice.getNameLocked() : "null"));
diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java
index 27abd1e..39498a6 100644
--- a/services/core/java/com/android/server/display/NightDisplayService.java
+++ b/services/core/java/com/android/server/display/NightDisplayService.java
@@ -16,17 +16,26 @@
 
 package com.android.server.display;
 
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.TypeEvaluator;
+import android.animation.ValueAnimator;
 import android.app.AlarmManager;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.opengl.Matrix;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.UserHandle;
 import android.provider.Settings.Secure;
+import android.util.MathUtils;
 import android.util.Slog;
+import android.view.animation.AnimationUtils;
 
 import com.android.internal.app.NightDisplayController;
 import com.android.server.SystemService;
@@ -37,6 +46,8 @@
 import java.util.Calendar;
 import java.util.TimeZone;
 
+import static com.android.server.display.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY;
+
 /**
  * Tints the display at night.
  */
@@ -47,19 +58,42 @@
     private static final boolean DEBUG = false;
 
     /**
-     * Night mode ~= 3400 K.
+     * Night display ~= 3400 K.
      */
-    private static final String MATRIX_NIGHT = "1,0,0,0,0,.754,0,0,0,0,.516,0,0,0,0,1";
+    private static final float[] MATRIX_NIGHT = new float[] {
+        1,      0,      0, 0,
+        0, 0.754f,      0, 0,
+        0,      0, 0.516f, 0,
+        0,      0,      0, 1
+    };
+
+    /**
+     * The identity matrix, used if one of the given matrices is {@code null}.
+     */
+    private static final float[] MATRIX_IDENTITY = new float[16];
+    static {
+        Matrix.setIdentityM(MATRIX_IDENTITY, 0);
+    }
+
+    /**
+     * Evaluator used to animate color matrix transitions.
+     */
+    private static final ColorMatrixEvaluator COLOR_MATRIX_EVALUATOR = new ColorMatrixEvaluator();
+
+    private final Handler mHandler;
 
     private int mCurrentUser = UserHandle.USER_NULL;
+    private ContentObserver mUserSetupObserver;
     private boolean mBootCompleted;
 
     private NightDisplayController mController;
+    private ValueAnimator mColorMatrixAnimator;
     private Boolean mIsActivated;
     private AutoMode mAutoMode;
 
     public NightDisplayService(Context context) {
         super(context);
+        mHandler = new Handler(Looper.getMainLooper());
     }
 
     @Override
@@ -68,15 +102,23 @@
     }
 
     @Override
+    public void onBootPhase(int phase) {
+        if (phase == PHASE_BOOT_COMPLETED) {
+            mBootCompleted = true;
+
+            // Register listeners now that boot is complete.
+            if (mCurrentUser != UserHandle.USER_NULL && mUserSetupObserver == null) {
+                setUp();
+            }
+        }
+    }
+
+    @Override
     public void onStartUser(int userHandle) {
         super.onStartUser(userHandle);
 
-        // Register listeners for the new user.
         if (mCurrentUser == UserHandle.USER_NULL) {
-            mCurrentUser = userHandle;
-            if (mBootCompleted) {
-                setUpNightMode();
-            }
+            onUserChanged(userHandle);
         }
     }
 
@@ -84,44 +126,60 @@
     public void onSwitchUser(int userHandle) {
         super.onSwitchUser(userHandle);
 
-        // Unregister listeners for the old user.
-        if (mBootCompleted && mCurrentUser != UserHandle.USER_NULL) {
-            tearDownNightMode();
-        }
-
-        // Register listeners for the new user.
-        mCurrentUser = userHandle;
-        if (mBootCompleted) {
-            setUpNightMode();
-        }
+        onUserChanged(userHandle);
     }
 
     @Override
     public void onStopUser(int userHandle) {
         super.onStopUser(userHandle);
 
-        // Unregister listeners for the old user.
         if (mCurrentUser == userHandle) {
-            if (mBootCompleted) {
-                tearDownNightMode();
-            }
-            mCurrentUser = UserHandle.USER_NULL;
+            onUserChanged(UserHandle.USER_NULL);
         }
     }
 
-    @Override
-    public void onBootPhase(int phase) {
-        if (phase == PHASE_BOOT_COMPLETED) {
-            mBootCompleted = true;
+    private void onUserChanged(int userHandle) {
+        final ContentResolver cr = getContext().getContentResolver();
 
-            // Register listeners now that boot is complete.
-            if (mCurrentUser != UserHandle.USER_NULL) {
-                setUpNightMode();
+        if (mCurrentUser != UserHandle.USER_NULL) {
+            if (mUserSetupObserver != null) {
+                cr.unregisterContentObserver(mUserSetupObserver);
+                mUserSetupObserver = null;
+            } else if (mBootCompleted) {
+                tearDown();
+            }
+        }
+
+        mCurrentUser = userHandle;
+
+        if (mCurrentUser != UserHandle.USER_NULL) {
+            if (!isUserSetupCompleted(cr, mCurrentUser)) {
+                mUserSetupObserver = new ContentObserver(mHandler) {
+                    @Override
+                    public void onChange(boolean selfChange, Uri uri) {
+                        if (isUserSetupCompleted(cr, mCurrentUser)) {
+                            cr.unregisterContentObserver(this);
+                            mUserSetupObserver = null;
+
+                            if (mBootCompleted) {
+                                setUp();
+                            }
+                        }
+                    }
+                };
+                cr.registerContentObserver(Secure.getUriFor(Secure.USER_SETUP_COMPLETE),
+                        false /* notifyForDescendents */, mUserSetupObserver, mCurrentUser);
+            } else if (mBootCompleted) {
+                setUp();
             }
         }
     }
 
-    private void setUpNightMode() {
+    private static boolean isUserSetupCompleted(ContentResolver cr, int userHandle) {
+        return Secure.getIntForUser(cr, Secure.USER_SETUP_COMPLETE, 0, userHandle) == 1;
+    }
+
+    private void setUp() {
         // Create a new controller for the current user and start listening for changes.
         mController = new NightDisplayController(getContext(), mCurrentUser);
         mController.setListener(this);
@@ -135,16 +193,23 @@
         }
     }
 
-    private void tearDownNightMode() {
-        mController.setListener(null);
+    private void tearDown() {
+        if (mController != null) {
+            mController.setListener(null);
+            mController = null;
+        }
 
         if (mAutoMode != null) {
             mAutoMode.onStop();
             mAutoMode = null;
         }
 
+        if (mColorMatrixAnimator != null) {
+            mColorMatrixAnimator.end();
+            mColorMatrixAnimator = null;
+        }
+
         mIsActivated = null;
-        mController = null;
     }
 
     @Override
@@ -158,10 +223,49 @@
                 mAutoMode.onActivated(activated);
             }
 
-            // Update the current color matrix.
-            final ContentResolver cr = getContext().getContentResolver();
-            Secure.putStringForUser(cr, Secure.ACCESSIBILITY_DISPLAY_COLOR_MATRIX,
-                    activated ? MATRIX_NIGHT : null, mCurrentUser);
+            // Cancel the old animator if still running.
+            if (mColorMatrixAnimator != null) {
+                mColorMatrixAnimator.cancel();
+            }
+
+            final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
+            final float[] from = dtm.getColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY);
+            final float[] to = mIsActivated ? MATRIX_NIGHT : null;
+
+            mColorMatrixAnimator = ValueAnimator.ofObject(COLOR_MATRIX_EVALUATOR,
+                    from == null ? MATRIX_IDENTITY : from, to == null ? MATRIX_IDENTITY : to);
+            mColorMatrixAnimator.setDuration(getContext().getResources()
+                    .getInteger(android.R.integer.config_longAnimTime));
+            mColorMatrixAnimator.setInterpolator(AnimationUtils.loadInterpolator(
+                    getContext(), android.R.interpolator.fast_out_slow_in));
+            mColorMatrixAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+                @Override
+                public void onAnimationUpdate(ValueAnimator animator) {
+                    final float[] value = (float[]) animator.getAnimatedValue();
+                    dtm.setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, value);
+                }
+            });
+            mColorMatrixAnimator.addListener(new AnimatorListenerAdapter() {
+
+                private boolean mIsCancelled;
+
+                @Override
+                public void onAnimationCancel(Animator animator) {
+                    mIsCancelled = true;
+                }
+
+                @Override
+                public void onAnimationEnd(Animator animator) {
+                    if (!mIsCancelled) {
+                        // Ensure final color matrix is set at the end of the animation. If the
+                        // animation is cancelled then don't set the final color matrix so the new
+                        // animator can pick up from where this one left off.
+                        dtm.setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, to);
+                    }
+                    mColorMatrixAnimator = null;
+                }
+            });
+            mColorMatrixAnimator.start();
         }
     }
 
@@ -319,13 +423,11 @@
     private class TwilightAutoMode extends AutoMode implements TwilightListener {
 
         private final TwilightManager mTwilightManager;
-        private final Handler mHandler;
 
         private boolean mIsNight;
 
         public TwilightAutoMode() {
             mTwilightManager = getLocalService(TwilightManager.class);
-            mHandler = new Handler(Looper.getMainLooper());
         }
 
         private void updateActivated() {
@@ -359,4 +461,23 @@
             updateActivated();
         }
     }
+
+    /**
+     * Interpolates between two 4x4 color transform matrices (in column-major order).
+     */
+    private static class ColorMatrixEvaluator implements TypeEvaluator<float[]> {
+
+        /**
+         * Result matrix returned by {@link #evaluate(float, float[], float[])}.
+         */
+        private final float[] mResultMatrix = new float[16];
+
+        @Override
+        public float[] evaluate(float fraction, float[] startValue, float[] endValue) {
+            for (int i = 0; i < mResultMatrix.length; i++) {
+                mResultMatrix[i] = MathUtils.lerp(startValue[i], endValue[i], fraction);
+            }
+            return mResultMatrix;
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/display/OverlayDisplayAdapter.java b/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
index cf6264a..27327d4 100644
--- a/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
@@ -266,6 +266,11 @@
         }
 
         @Override
+        public boolean hasStableUniqueId() {
+            return false;
+        }
+
+        @Override
         public void performTraversalInTransactionLocked() {
             if (mSurfaceTexture != null) {
                 if (mSurface == null) {
@@ -310,7 +315,7 @@
         }
 
         @Override
-        public void requestColorTransformAndModeInTransactionLocked(int color, int id) {
+        public void requestDisplayModesInTransactionLocked(int color, int id) {
             int index = -1;
             if (id == 0) {
                 // Use the default.
diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java
index d676b35..5616fb9 100644
--- a/services/core/java/com/android/server/display/PersistentDataStore.java
+++ b/services/core/java/com/android/server/display/PersistentDataStore.java
@@ -27,6 +27,7 @@
 import android.util.AtomicFile;
 import android.util.Slog;
 import android.util.Xml;
+import android.view.Display;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -35,8 +36,11 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 import libcore.io.IoUtils;
 import libcore.util.Objects;
@@ -50,8 +54,13 @@
  * &lt;display-manager-state>
  *   &lt;remembered-wifi-displays>
  *     &lt;wifi-display deviceAddress="00:00:00:00:00:00" deviceName="XXXX" deviceAlias="YYYY" />
- *   &gt;remembered-wifi-displays>
- * &gt;/display-manager-state>
+ *   &lt;remembered-wifi-displays>
+ *   &lt;display-states>
+ *      &lt;display>
+ *          &lt;color-mode>0&lt;/color-mode>
+ *      &lt;/display>
+ *  &lt;/display-states>
+ * &lt;/display-manager-state>
  * </code>
  *
  * TODO: refactor this to extract common code shared with the input manager's data store
@@ -62,6 +71,10 @@
     // Remembered Wifi display devices.
     private ArrayList<WifiDisplay> mRememberedWifiDisplays = new ArrayList<WifiDisplay>();
 
+    // Display state by unique id.
+    private final HashMap<String, DisplayState> mDisplayStates =
+            new HashMap<String, DisplayState>();
+
     // The atomic file used to safely read or write the file.
     private final AtomicFile mAtomicFile;
 
@@ -168,7 +181,41 @@
         return -1;
     }
 
-    private void loadIfNeeded() {
+    public int getColorMode(DisplayDevice device) {
+        if (!device.hasStableUniqueId()) {
+            return Display.COLOR_MODE_DEFAULT;
+        }
+        DisplayState state = getDisplayState(device.getUniqueId(), false);
+        if (state == null) {
+            return Display.COLOR_MODE_DEFAULT;
+        }
+        return state.getColorMode();
+    }
+
+    public boolean setColorMode(DisplayDevice device, int colorMode) {
+        if (!device.hasStableUniqueId()) {
+            return false;
+        }
+        DisplayState state = getDisplayState(device.getUniqueId(), true);
+        if (state.setColorMode(colorMode)) {
+            setDirty();
+            return true;
+        }
+        return false;
+    }
+
+    private DisplayState getDisplayState(String uniqueId, boolean createIfAbsent) {
+        loadIfNeeded();
+        DisplayState state = mDisplayStates.get(uniqueId);
+        if (state == null && createIfAbsent) {
+            state = new DisplayState();
+            mDisplayStates.put(uniqueId, state);
+            setDirty();
+        }
+        return state;
+    }
+
+    public void loadIfNeeded() {
         if (!mLoaded) {
             load();
             mLoaded = true;
@@ -240,6 +287,9 @@
             if (parser.getName().equals("remembered-wifi-displays")) {
                 loadRememberedWifiDisplaysFromXml(parser);
             }
+            if (parser.getName().equals("display-states")) {
+                loadDisplaysFromXml(parser);
+            }
         }
     }
 
@@ -267,6 +317,27 @@
         }
     }
 
+    private void loadDisplaysFromXml(XmlPullParser parser)
+            throws IOException, XmlPullParserException {
+        final int outerDepth = parser.getDepth();
+        while (XmlUtils.nextElementWithin(parser, outerDepth)) {
+            if (parser.getName().equals("display")) {
+                String uniqueId = parser.getAttributeValue(null, "unique-id");
+                if (uniqueId == null) {
+                    throw new XmlPullParserException(
+                            "Missing unique-id attribute on display.");
+                }
+                if (mDisplayStates.containsKey(uniqueId)) {
+                    throw new XmlPullParserException("Found duplicate display.");
+                }
+
+                DisplayState state = new DisplayState();
+                state.loadFromXml(parser);
+                mDisplayStates.put(uniqueId, state);
+            }
+        }
+    }
+
     private void saveToXml(XmlSerializer serializer) throws IOException {
         serializer.startDocument(null, true);
         serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
@@ -282,7 +353,72 @@
             serializer.endTag(null, "wifi-display");
         }
         serializer.endTag(null, "remembered-wifi-displays");
+        serializer.startTag(null, "display-states");
+        for (Map.Entry<String, DisplayState> entry : mDisplayStates.entrySet()) {
+            final String uniqueId = entry.getKey();
+            final DisplayState state = entry.getValue();
+            serializer.startTag(null, "display");
+            serializer.attribute(null, "unique-id", uniqueId);
+            state.saveToXml(serializer);
+            serializer.endTag(null, "display");
+        }
+        serializer.endTag(null, "display-states");
         serializer.endTag(null, "display-manager-state");
         serializer.endDocument();
     }
+
+    public void dump(PrintWriter pw) {
+        pw.println("PersistentDataStore");
+        pw.println("  mLoaded=" + mLoaded);
+        pw.println("  mDirty=" + mDirty);
+        pw.println("  RememberedWifiDisplays:");
+        int i = 0;
+        for (WifiDisplay display : mRememberedWifiDisplays) {
+            pw.println("    " + i++ + ": " + display);
+        }
+        pw.println("  DisplayStates:");
+        i = 0;
+        for (Map.Entry<String, DisplayState> entry : mDisplayStates.entrySet()) {
+            pw.println("    " + i++ + ": " + entry.getKey());
+            entry.getValue().dump(pw, "      ");
+        }
+    }
+
+    private static final class DisplayState {
+        private int mColorMode;
+
+        public boolean setColorMode(int colorMode) {
+            if (colorMode == mColorMode) {
+                return false;
+            }
+            mColorMode = colorMode;
+            return true;
+        }
+
+        public int getColorMode() {
+            return mColorMode;
+        }
+
+        public void loadFromXml(XmlPullParser parser)
+                throws IOException, XmlPullParserException {
+            final int outerDepth = parser.getDepth();
+
+            while (XmlUtils.nextElementWithin(parser, outerDepth)) {
+                if (parser.getName().equals("color-mode")) {
+                    String value = parser.nextText();
+                    mColorMode = Integer.parseInt(value);
+                }
+            }
+        }
+
+        public void saveToXml(XmlSerializer serializer) throws IOException {
+            serializer.startTag(null, "color-mode");
+            serializer.text(Integer.toString(mColorMode));
+            serializer.endTag(null, "color-mode");
+        }
+
+        private void dump(final PrintWriter pw, final String prefix) {
+            pw.println(prefix + "ColorMode=" + mColorMode);
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
index 986efd69..9d0fde5 100644
--- a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
@@ -225,6 +225,11 @@
         }
 
         @Override
+        public boolean hasStableUniqueId() {
+            return false;
+        }
+
+        @Override
         public Runnable requestDisplayStateLocked(int state, int brightness) {
             if (state != mDisplayState) {
                 mDisplayState = state;
diff --git a/services/core/java/com/android/server/display/WifiDisplayAdapter.java b/services/core/java/com/android/server/display/WifiDisplayAdapter.java
index 64bc729..08c0a1a 100644
--- a/services/core/java/com/android/server/display/WifiDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/WifiDisplayAdapter.java
@@ -602,6 +602,11 @@
             mMode = createMode(width, height, refreshRate);
         }
 
+        @Override
+        public boolean hasStableUniqueId() {
+            return true;
+        }
+
         public void destroyLocked() {
             if (mSurface != null) {
                 mSurface.release();
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecController.java b/services/core/java/com/android/server/hdmi/HdmiCecController.java
index 55917fc..687aaa1 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecController.java
@@ -188,15 +188,16 @@
             int curAddress = (startAddress + i) % NUM_LOGICAL_ADDRESS;
             if (curAddress != Constants.ADDR_UNREGISTERED
                     && deviceType == HdmiUtils.getTypeFromAddress(curAddress)) {
-                int failedPollingCount = 0;
+                boolean acked = false;
                 for (int j = 0; j < HdmiConfig.ADDRESS_ALLOCATION_RETRY; ++j) {
-                    if (!sendPollMessage(curAddress, curAddress, 1)) {
-                        failedPollingCount++;
+                    if (sendPollMessage(curAddress, curAddress, 1)) {
+                        acked = true;
+                        break;
                     }
                 }
-
-                // Pick logical address if failed ratio is more than a half of all retries.
-                if (failedPollingCount * 2 >  HdmiConfig.ADDRESS_ALLOCATION_RETRY) {
+                // If sending <Polling Message> failed, it becomes new logical address for the
+                // device because no device uses it as logical address of the device.
+                if (!acked) {
                     logicalAddress = curAddress;
                     break;
                 }
@@ -469,12 +470,14 @@
         assertRunOnIoThread();
         for (int i = 0; i < retryCount; ++i) {
             // <Polling Message> is a message which has empty body.
-            // If sending <Polling Message> failed (NAK), it becomes
-            // new logical address for the device because no device uses
-            // it as logical address of the device.
-            if (nativeSendCecCommand(mNativePtr, sourceAddress, destinationAddress, EMPTY_BODY)
-                    == Constants.SEND_RESULT_SUCCESS) {
+            int ret =
+                    nativeSendCecCommand(mNativePtr, sourceAddress, destinationAddress, EMPTY_BODY);
+            if (ret == Constants.SEND_RESULT_SUCCESS) {
                 return true;
+            } else if (ret != Constants.SEND_RESULT_NAK) {
+                // Unusual failure
+                HdmiLogger.warning("Failed to send a polling message(%d->%d) with return code %d",
+                        sourceAddress, destinationAddress, ret);
             }
         }
         return false;
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 8589de1..9d93146 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -28,6 +28,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManagerNative;
 import android.app.AppGlobals;
@@ -43,7 +44,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ServiceInfo;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -396,10 +399,11 @@
     private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
+            final String action = intent.getAction();
             if (DEBUG) {
-                Slog.d(TAG, "Receieved: " + intent.getAction());
+                Slog.d(TAG, "Receieved: " + action);
             }
-            if (Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())) {
+            if (Intent.ACTION_PACKAGE_CHANGED.equals(action)) {
                 // Purge the app's jobs if the whole package was just disabled.  When this is
                 // the case the component name will be a bare package name.
                 final String pkgName = getPackageName(intent);
@@ -433,7 +437,7 @@
                 } else {
                     Slog.w(TAG, "PACKAGE_CHANGED for " + pkgName + " / uid " + pkgUid);
                 }
-            } else if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
+            } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
                 // If this is an outright uninstall rather than the first half of an
                 // app update sequence, cancel the jobs associated with the app.
                 if (!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
@@ -443,12 +447,43 @@
                     }
                     cancelJobsForUid(uidRemoved, true);
                 }
-            } else if (Intent.ACTION_USER_REMOVED.equals(intent.getAction())) {
+            } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
                 final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
                 if (DEBUG) {
                     Slog.d(TAG, "Removing jobs for user: " + userId);
                 }
                 cancelJobsForUser(userId);
+            } else if (Intent.ACTION_QUERY_PACKAGE_RESTART.equals(action)) {
+                // Has this package scheduled any jobs, such that we will take action
+                // if it were to be force-stopped?
+                final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+                final String pkgName = intent.getData().getSchemeSpecificPart();
+                if (pkgUid != -1) {
+                    List<JobStatus> jobsForUid;
+                    synchronized (mLock) {
+                        jobsForUid = mJobs.getJobsByUid(pkgUid);
+                    }
+                    for (int i = jobsForUid.size() - 1; i >= 0; i--) {
+                        if (jobsForUid.get(i).getSourcePackageName().equals(pkgName)) {
+                            if (DEBUG) {
+                                Slog.d(TAG, "Restart query: package " + pkgName + " at uid "
+                                        + pkgUid + " has jobs");
+                            }
+                            setResultCode(Activity.RESULT_OK);
+                            break;
+                        }
+                    }
+                }
+            } else if (Intent.ACTION_PACKAGE_RESTARTED.equals(action)) {
+                // possible force-stop
+                final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+                final String pkgName = intent.getData().getSchemeSpecificPart();
+                if (pkgUid != -1) {
+                    if (DEBUG) {
+                        Slog.d(TAG, "Removing jobs for pkg " + pkgName + " at uid " + pkgUid);
+                    }
+                    cancelJobsForPackageAndUid(pkgName, pkgUid);
+                }
             }
         }
     };
@@ -583,6 +618,19 @@
         }
     }
 
+    void cancelJobsForPackageAndUid(String pkgName, int uid) {
+        List<JobStatus> jobsForUid;
+        synchronized (mLock) {
+            jobsForUid = mJobs.getJobsByUid(uid);
+        }
+        for (int i = jobsForUid.size() - 1; i >= 0; i--) {
+            final JobStatus job = jobsForUid.get(i);
+            if (job.getSourcePackageName().equals(pkgName)) {
+                cancelJobImpl(job, null);
+            }
+        }
+    }
+
     /**
      * Entry point from client to cancel all jobs originating from their uid.
      * This will remove the job from the master list, and cancel the job if it was staged for
@@ -754,6 +802,8 @@
             final IntentFilter filter = new IntentFilter();
             filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
             filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+            filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
+            filter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART);
             filter.addDataScheme("package");
             getContext().registerReceiverAsUser(
                     mBroadcastReceiver, UserHandle.ALL, filter, null, null);
@@ -1556,6 +1606,11 @@
                 }
             }
 
+            if ((job.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0) {
+                getContext().enforceCallingOrSelfPermission(
+                        android.Manifest.permission.CONNECTIVITY_INTERNAL, TAG);
+            }
+
             long ident = Binder.clearCallingIdentity();
             try {
                 return JobSchedulerService.this.schedule(job, uid);
diff --git a/services/core/java/com/android/server/job/controllers/JobStatus.java b/services/core/java/com/android/server/job/controllers/JobStatus.java
index 8aef471..4b39bf9 100644
--- a/services/core/java/com/android/server/job/controllers/JobStatus.java
+++ b/services/core/java/com/android/server/job/controllers/JobStatus.java
@@ -491,6 +491,7 @@
                 + ":[" + job.getService()
                 + ",jId=" + job.getId()
                 + ",u" + getUserId()
+                + ",suid=" + getSourceUid()
                 + ",R=(" + formatRunTime(earliestRunTimeElapsedMillis, NO_EARLIEST_RUNTIME)
                 + "," + formatRunTime(latestRunTimeElapsedMillis, NO_LATEST_RUNTIME) + ")"
                 + ",N=" + job.getNetworkType() + ",C=" + job.isRequireCharging()
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 173f76f..7580cf4 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -393,6 +393,15 @@
     // SIM/Carrier info.
     private final static String SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
 
+    // Persist property for LPP_PROFILE
+    private final static String LPP_PROFILE = "persist.sys.gps.lpp";
+
+    // VZW PLMN info
+    private static final String[] VzwMccMncList = {"311480", "310004", "20404"};
+    // corresponding GID1 value, empty string means ignore gid1 match.
+    private static final String[] VzwGid1List = {"", "", "BAE0000000000000"};
+
+
     private final PowerManager mPowerManager;
     private final AlarmManager mAlarmManager;
     private final PendingIntent mWakeupIntent;
@@ -507,14 +516,43 @@
         }
     };
 
+    private final boolean isVerizon(String mccMnc, String imsi, String groupId) {
+        if (DEBUG) Log.d(TAG, "simOperator: " + mccMnc);
+        if (!TextUtils.isEmpty(mccMnc) || !TextUtils.isEmpty(imsi)) {
+            for (int i = 0; i < VzwMccMncList.length; i++) {
+                if ((!TextUtils.isEmpty(mccMnc) && mccMnc.equals(VzwMccMncList[i])) ||
+                        (!TextUtils.isEmpty(imsi) && imsi.startsWith(VzwMccMncList[i]))) {
+                    // check gid too if needed
+                    if (TextUtils.isEmpty(VzwGid1List[i]) || VzwGid1List[i].equals(groupId)) {
+                        if (DEBUG) Log.d(TAG, "Verizon UICC");
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
     private void subscriptionOrSimChanged(Context context) {
         if (DEBUG) Log.d(TAG, "received SIM related action: ");
         TelephonyManager phone = (TelephonyManager)
                 mContext.getSystemService(Context.TELEPHONY_SERVICE);
         String mccMnc = phone.getSimOperator();
+        String imsi = phone.getSubscriberId();
+        String groupId = phone.getGroupIdLevel1();
         if (!TextUtils.isEmpty(mccMnc)) {
             if (DEBUG) Log.d(TAG, "SIM MCC/MNC is available: " + mccMnc);
             synchronized (mLock) {
+                if (isVerizon(mccMnc, imsi, groupId)) {
+                        // load current properties for carrier VZW
+                        loadPropertiesFromResource(context, mProperties);
+                        String lpp_profile = mProperties.getProperty("LPP_PROFILE");
+                        // set the persist property LPP_PROFILE for VZW
+                        SystemProperties.set(LPP_PROFILE, lpp_profile);
+                } else {
+                        // reset the persist property for Non VZW
+                        SystemProperties.set(LPP_PROFILE, "");
+                }
                 reloadGpsProperties(context, mProperties);
                 mNIHandler.setSuplEsEnabled(mSuplEsEnabled);
             }
@@ -571,8 +609,10 @@
     private void reloadGpsProperties(Context context, Properties properties) {
         if (DEBUG) Log.d(TAG, "Reset GPS properties, previous size = " + properties.size());
         loadPropertiesFromResource(context, properties);
+
         boolean isPropertiesLoadedFromFile = false;
         final String gpsHardware = SystemProperties.get("ro.hardware.gps");
+
         if (!TextUtils.isEmpty(gpsHardware)) {
             final String propFilename =
                     PROPERTIES_FILE_PREFIX + "." + gpsHardware + PROPERTIES_FILE_SUFFIX;
@@ -583,7 +623,11 @@
             loadPropertiesFromFile(DEFAULT_PROPERTIES_FILE, properties);
         }
         if (DEBUG) Log.d(TAG, "GPS properties reloaded, size = " + properties.size());
-
+        String lpp_prof = SystemProperties.get(LPP_PROFILE);
+        if (!TextUtils.isEmpty(lpp_prof)) {
+                // override default value of this if lpp_prof is not empty
+                properties.setProperty("LPP_PROFILE", lpp_prof);
+        }
         // TODO: we should get rid of C2K specific setting.
         setSuplHostPort(properties.getProperty("SUPL_HOST"),
                         properties.getProperty("SUPL_PORT"));
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index 29c54e9..88d6c14 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -454,7 +454,7 @@
 
     @Override
     public String toString() {
-        return mPackageName + "/" + mTag;
+        return mPackageName + "/" + mTag + " (uid=" + mUserId + ")";
     }
 
     private void postAdjustLocalVolume(final int stream, final int direction, final int flags,
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 2446f6a..d02424b 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -47,10 +47,12 @@
 import android.os.IBinder;
 import android.os.Message;
 import android.os.PowerManager;
+import android.os.Process;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.speech.RecognizerIntent;
 import android.text.TextUtils;
@@ -67,6 +69,7 @@
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -97,7 +100,9 @@
     private ContentResolver mContentResolver;
     private SettingsObserver mSettingsObserver;
 
-    private int mCurrentUserId = -1;
+    // List of user IDs running in the foreground.
+    // Multiple users can be in the foreground if the work profile is on.
+    private final List<Integer> mCurrentUserIdList = new ArrayList<>();
 
     // Used to notify system UI when remote volume was changed. TODO find a
     // better way to handle this.
@@ -181,22 +186,26 @@
     }
 
     @Override
-    public void onStartUser(int userHandle) {
+    public void onStartUser(int userId) {
+        if (DEBUG) Log.d(TAG, "onStartUser: " + userId);
         updateUser();
     }
 
     @Override
-    public void onSwitchUser(int userHandle) {
+    public void onSwitchUser(int userId) {
+        if (DEBUG) Log.d(TAG, "onSwitchUser: " + userId);
         updateUser();
     }
 
     @Override
-    public void onStopUser(int userHandle) {
+    public void onStopUser(int userId) {
+        if (DEBUG) Log.d(TAG, "onStopUser: " + userId);
         synchronized (mLock) {
-            UserRecord user = mUserRecords.get(userHandle);
+            UserRecord user = mUserRecords.get(userId);
             if (user != null) {
                 destroyUserLocked(user);
             }
+            updateUser();
         }
     }
 
@@ -227,19 +236,24 @@
     }
 
     private void updateUser() {
-        int userId = ActivityManager.getCurrentUser();
         synchronized (mLock) {
-            if (mCurrentUserId != userId) {
-                final int oldUserId = mCurrentUserId;
-                mCurrentUserId = userId; // do this first
-
-                UserRecord oldUser = mUserRecords.get(oldUserId);
-                if (oldUser != null) {
-                    oldUser.stopLocked();
+            UserManager manager = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
+            int currentUser = ActivityManager.getCurrentUser();
+            int[] userIds = manager.getEnabledProfileIds(currentUser);
+            mCurrentUserIdList.clear();
+            if (userIds != null && userIds.length > 0) {
+                for (int userId : userIds) {
+                    mCurrentUserIdList.add(userId);
                 }
-
-                UserRecord newUser = getOrCreateUser(userId);
-                newUser.startLocked();
+            } else {
+                // This shouldn't happen.
+                Log.w(TAG, "Failed to get enabled profiles.");
+                mCurrentUserIdList.add(currentUser);
+            }
+            for (int userId : mCurrentUserIdList) {
+                if (mUserRecords.get(userId) == null) {
+                    mUserRecords.put(userId, new UserRecord(getContext(), userId));
+                }
             }
         }
     }
@@ -272,7 +286,6 @@
      * @param user The user to dispose of
      */
     private void destroyUserLocked(UserRecord user) {
-        user.stopLocked();
         user.destroyLocked();
         mUserRecords.remove(user.mUserId);
     }
@@ -436,9 +449,9 @@
         }
 
         mAllSessions.add(session);
-        mPriorityStack.addSession(session);
+        mPriorityStack.addSession(session, mCurrentUserIdList.contains(userId));
 
-        UserRecord user = getOrCreateUser(userId);
+        UserRecord user = mUserRecords.get(userId);
         user.addSessionLocked(session);
 
         mHandler.post(MessageHandler.MSG_SESSIONS_CHANGED, userId, 0);
@@ -449,15 +462,6 @@
         return session;
     }
 
-    private UserRecord getOrCreateUser(int userId) {
-        UserRecord user = mUserRecords.get(userId);
-        if (user == null) {
-            user = new UserRecord(getContext(), userId);
-            mUserRecords.put(userId, user);
-        }
-        return user;
-    }
-
     private int findIndexOfSessionsListenerLocked(IActiveSessionsListener listener) {
         for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
             if (mSessionsListeners.get(i).mListener.asBinder() == listener.asBinder()) {
@@ -536,13 +540,6 @@
             restoreMediaButtonReceiver();
         }
 
-        public void startLocked() {
-        }
-
-        public void stopLocked() {
-            // nothing for now
-        }
-
         public void destroyLocked() {
             for (int i = mSessions.size() - 1; i >= 0; i--) {
                 MediaSessionRecord session = mSessions.get(i);
@@ -578,7 +575,7 @@
 
         private void restoreMediaButtonReceiver() {
             String receiverName = Settings.Secure.getStringForUser(mContentResolver,
-                    Settings.System.MEDIA_BUTTON_RECEIVER, UserHandle.USER_CURRENT);
+                    Settings.System.MEDIA_BUTTON_RECEIVER, mUserId);
             if (!TextUtils.isEmpty(receiverName)) {
                 ComponentName eventReceiver = ComponentName.unflattenFromString(receiverName);
                 if (eventReceiver == null) {
@@ -767,12 +764,22 @@
                 synchronized (mLock) {
                     // If we don't have a media button receiver to fall back on
                     // include non-playing sessions for dispatching
-                    UserRecord ur = mUserRecords.get(mCurrentUserId);
-                    boolean useNotPlayingSessions = (ur == null) ||
-                            (ur.mLastMediaButtonReceiver == null
-                                && ur.mRestoredMediaButtonReceiver == null);
-                    MediaSessionRecord session = mPriorityStack
-                            .getDefaultMediaButtonSession(mCurrentUserId, useNotPlayingSessions);
+                    boolean useNotPlayingSessions = true;
+                    for (int userId : mCurrentUserIdList) {
+                        UserRecord ur = mUserRecords.get(userId);
+                        if (ur.mLastMediaButtonReceiver != null
+                                || ur.mRestoredMediaButtonReceiver != null) {
+                            useNotPlayingSessions = false;
+                            break;
+                        }
+                    }
+
+                    if (DEBUG) {
+                        Log.d(TAG, "dispatchMediaKeyEvent, useNotPlayingSessions="
+                                + useNotPlayingSessions);
+                    }
+                    MediaSessionRecord session = mPriorityStack.getDefaultMediaButtonSession(
+                            mCurrentUserIdList, useNotPlayingSessions);
                     if (isVoiceKey(keyEvent.getKeyCode())) {
                         handleVoiceKeyEventLocked(keyEvent, needWakeLock, session);
                     } else {
@@ -786,13 +793,11 @@
 
         @Override
         public void dispatchAdjustVolume(int suggestedStream, int delta, int flags) {
-            final int pid = Binder.getCallingPid();
-            final int uid = Binder.getCallingUid();
             final long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mLock) {
                     MediaSessionRecord session = mPriorityStack
-                            .getDefaultVolumeSession(mCurrentUserId);
+                            .getDefaultVolumeSession(mCurrentUserIdList);
                     dispatchAdjustVolumeLocked(suggestedStream, delta, flags, session);
                 }
             } finally {
@@ -910,7 +915,7 @@
                 });
             } else {
                 session.adjustVolume(direction, flags, getContext().getPackageName(),
-                        UserHandle.myUserId(), true);
+                        Process.SYSTEM_UID, true);
             }
         }
 
@@ -957,13 +962,16 @@
                 // won't release it later
                 session.sendMediaButton(keyEvent,
                         needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1,
-                        mKeyEventReceiver, getContext().getApplicationInfo().uid,
+                        mKeyEventReceiver, Process.SYSTEM_UID,
                         getContext().getPackageName());
             } else {
                 // Launch the last PendingIntent we had with priority
-                UserRecord user = mUserRecords.get(mCurrentUserId);
-                if (user != null && (user.mLastMediaButtonReceiver != null
-                        || user.mRestoredMediaButtonReceiver != null)) {
+                for (int userId : mCurrentUserIdList) {
+                    UserRecord user = mUserRecords.get(userId);
+                    if (user.mLastMediaButtonReceiver == null
+                            && user.mRestoredMediaButtonReceiver == null) {
+                        continue;
+                    }
                     if (DEBUG) {
                         Log.d(TAG, "Sending media key to last known PendingIntent "
                                 + user.mLastMediaButtonReceiver + " or restored Intent "
@@ -983,30 +991,30 @@
                         } else {
                             mediaButtonIntent.setComponent(user.mRestoredMediaButtonReceiver);
                             getContext().sendBroadcastAsUser(mediaButtonIntent,
-                                    new UserHandle(mCurrentUserId));
+                                    UserHandle.of(userId));
                         }
                     } catch (CanceledException e) {
                         Log.i(TAG, "Error sending key event to media button receiver "
                                 + user.mLastMediaButtonReceiver, e);
                     }
-                } else {
-                    if (DEBUG) {
-                        Log.d(TAG, "Sending media key ordered broadcast");
-                    }
-                    if (needWakeLock) {
-                        mMediaEventWakeLock.acquire();
-                    }
-                    // Fallback to legacy behavior
-                    Intent keyIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
-                    keyIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-                    keyIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
-                    if (needWakeLock) {
-                        keyIntent.putExtra(EXTRA_WAKELOCK_ACQUIRED,
-                                WAKELOCK_RELEASE_ON_FINISHED);
-                    }
-                    getContext().sendOrderedBroadcastAsUser(keyIntent, UserHandle.CURRENT,
-                            null, mKeyEventDone, mHandler, Activity.RESULT_OK, null, null);
+                    return;
                 }
+                if (DEBUG) {
+                    Log.d(TAG, "Sending media key ordered broadcast");
+                }
+                if (needWakeLock) {
+                    mMediaEventWakeLock.acquire();
+                }
+                // Fallback to legacy behavior
+                Intent keyIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
+                keyIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+                keyIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
+                if (needWakeLock) {
+                    keyIntent.putExtra(EXTRA_WAKELOCK_ACQUIRED, WAKELOCK_RELEASE_ON_FINISHED);
+                }
+                // Send broadcast only to the full user.
+                getContext().sendOrderedBroadcastAsUser(keyIntent, UserHandle.CURRENT,
+                        null, mKeyEventDone, mHandler, Activity.RESULT_OK, null, null);
             }
         }
 
@@ -1036,6 +1044,7 @@
                 if (voiceIntent != null) {
                     voiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                             | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+                    if (DEBUG) Log.d(TAG, "voiceIntent: " + voiceIntent);
                     getContext().startActivityAsUser(voiceIntent, UserHandle.CURRENT);
                 }
             } catch (ActivityNotFoundException e) {
diff --git a/services/core/java/com/android/server/media/MediaSessionStack.java b/services/core/java/com/android/server/media/MediaSessionStack.java
index cc007ef..3327b36 100644
--- a/services/core/java/com/android/server/media/MediaSessionStack.java
+++ b/services/core/java/com/android/server/media/MediaSessionStack.java
@@ -32,7 +32,7 @@
  * Keeps track of media sessions and their priority for notifications, media
  * button dispatch, etc.
  */
-public class MediaSessionStack {
+class MediaSessionStack {
     /**
      * These are states that usually indicate the user took an action and should
      * bump priority regardless of the old state.
@@ -68,13 +68,10 @@
      * Checks if a media session is created from the most recent app.
      *
      * @param record A media session record to be examined.
-     * @return true if the media session's package name equals to the most recent app, false
-     * otherwise.
+     * @return {@code true} if the media session's package name equals to the most recent app, false
+     *            otherwise.
      */
     private static boolean isFromMostRecentApp(MediaSessionRecord record) {
-        if (ActivityManager.getCurrentUser() != record.getUserId()) {
-            return false;
-        }
         try {
             List<ActivityManager.RecentTaskInfo> tasks =
                     ActivityManagerNative.getDefault().getRecentTasks(1,
@@ -84,9 +81,10 @@
                             ActivityManager.RECENT_WITH_EXCLUDED, record.getUserId()).getList();
             if (tasks != null && !tasks.isEmpty()) {
                 ActivityManager.RecentTaskInfo recentTask = tasks.get(0);
-                if (recentTask.baseIntent != null)
+                if (recentTask.userId == record.getUserId() && recentTask.baseIntent != null) {
                     return recentTask.baseIntent.getComponent().getPackageName()
                             .equals(record.getPackageName());
+                }
             }
         } catch (RemoteException e) {
             return false;
@@ -98,11 +96,12 @@
      * Add a record to the priority tracker.
      *
      * @param record The record to add.
+     * @param fromForegroundUser {@code true} if the session is created by the foreground user.
      */
-    public void addSession(MediaSessionRecord record) {
+    public void addSession(MediaSessionRecord record, boolean fromForegroundUser) {
         mSessions.add(record);
         clearCache();
-        if (isFromMostRecentApp(record)) {
+        if (fromForegroundUser && isFromMostRecentApp(record)) {
             mLastInterestingRecord = record;
         }
     }
@@ -210,12 +209,13 @@
     /**
      * Get the highest priority session that can handle media buttons.
      *
-     * @param userId The user to check.
+     * @param userIdList The user lists to check.
      * @param includeNotPlaying Return a non-playing session if nothing else is
      *            available
      * @return The default media button session or null.
      */
-    public MediaSessionRecord getDefaultMediaButtonSession(int userId, boolean includeNotPlaying) {
+    public MediaSessionRecord getDefaultMediaButtonSession(
+            List<Integer> userIdList, boolean includeNotPlaying) {
         if (mGlobalPrioritySession != null && mGlobalPrioritySession.isActive()) {
             return mGlobalPrioritySession;
         }
@@ -223,7 +223,7 @@
             return mCachedButtonReceiver;
         }
         ArrayList<MediaSessionRecord> records = getPriorityListLocked(true,
-                MediaSession.FLAG_HANDLES_MEDIA_BUTTONS, userId);
+                MediaSession.FLAG_HANDLES_MEDIA_BUTTONS, userIdList);
         if (records.size() > 0) {
             MediaSessionRecord record = records.get(0);
             if (record.isPlaybackActive(false)) {
@@ -248,14 +248,14 @@
         return mCachedButtonReceiver;
     }
 
-    public MediaSessionRecord getDefaultVolumeSession(int userId) {
+    public MediaSessionRecord getDefaultVolumeSession(List<Integer> userIdList) {
         if (mGlobalPrioritySession != null && mGlobalPrioritySession.isActive()) {
             return mGlobalPrioritySession;
         }
         if (mCachedVolumeDefault != null) {
             return mCachedVolumeDefault;
         }
-        ArrayList<MediaSessionRecord> records = getPriorityListLocked(true, 0, userId);
+        ArrayList<MediaSessionRecord> records = getPriorityListLocked(true, 0, userIdList);
         int size = records.size();
         for (int i = 0; i < size; i++) {
             MediaSessionRecord record = records.get(i);
@@ -298,6 +298,13 @@
         }
     }
 
+    private ArrayList<MediaSessionRecord> getPriorityListLocked(boolean activeOnly, int withFlags,
+            int userId) {
+        List<Integer> userIdList = new ArrayList<>();
+        userIdList.add(userId);
+        return getPriorityListLocked(activeOnly, withFlags, userIdList);
+    }
+
     /**
      * Get a priority sorted list of sessions. Can filter to only return active
      * sessions or sessions with specific flags.
@@ -306,22 +313,23 @@
      *            all sessions.
      * @param withFlags Only return sessions with all the specified flags set. 0
      *            returns all sessions.
-     * @param userId The user to get sessions for. {@link UserHandle#USER_ALL}
+     * @param userIdList The user to get sessions for. {@link UserHandle#USER_ALL}
      *            will return sessions for all users.
      * @return The priority sorted list of sessions.
      */
     private ArrayList<MediaSessionRecord> getPriorityListLocked(boolean activeOnly, int withFlags,
-            int userId) {
+            List<Integer> userIdList) {
         ArrayList<MediaSessionRecord> result = new ArrayList<MediaSessionRecord>();
         int lastLocalIndex = 0;
         int lastActiveIndex = 0;
         int lastPublishedIndex = 0;
 
+        boolean filterUser = !userIdList.contains(UserHandle.USER_ALL);
         int size = mSessions.size();
         for (int i = 0; i < size; i++) {
             final MediaSessionRecord session = mSessions.get(i);
 
-            if (userId != UserHandle.USER_ALL && userId != session.getUserId()) {
+            if (filterUser && !userIdList.contains(session.getUserId())) {
                 // Filter out sessions for the wrong user
                 continue;
             }
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 7f2b81e..8dcf653 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1241,6 +1241,24 @@
     private void setNetworkTemplateEnabled(NetworkTemplate template, boolean enabled) {
         // TODO: reach into ConnectivityManager to proactively disable bringing
         // up this network, since we know that traffic will be blocked.
+
+        if (template.getMatchRule() == MATCH_MOBILE_ALL) {
+            // If mobile data usage hits the limit or if the user resumes the data, we need to
+            // notify telephony.
+            final SubscriptionManager sm = SubscriptionManager.from(mContext);
+            final TelephonyManager tm = TelephonyManager.from(mContext);
+
+            final int[] subIds = sm.getActiveSubscriptionIdList();
+            for (int subId : subIds) {
+                final String subscriberId = tm.getSubscriberId(subId);
+                final NetworkIdentity probeIdent = new NetworkIdentity(TYPE_MOBILE,
+                        TelephonyManager.NETWORK_TYPE_UNKNOWN, subscriberId, null, false, true);
+                // Template is matched when subscriber id matches.
+                if (template.matches(probeIdent)) {
+                    tm.setPolicyDataEnabled(enabled, subId);
+                }
+            }
+        }
     }
 
     /**
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 03430e1..d32dc14 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -1851,7 +1851,7 @@
             enforceSystemOrSystemUIOrVolume("INotificationManager.setZenMode");
             final long identity = Binder.clearCallingIdentity();
             try {
-                mZenModeHelper.setManualZenMode(mode, conditionId, reason);
+                mZenModeHelper.setManualZenMode(mode, conditionId, null, reason);
             } finally {
                 Binder.restoreCallingIdentity(identity);
             }
@@ -1928,7 +1928,7 @@
             if (zen == -1) throw new IllegalArgumentException("Invalid filter: " + filter);
             final long identity = Binder.clearCallingIdentity();
             try {
-                mZenModeHelper.setManualZenMode(zen, null, "setInterruptionFilter");
+                mZenModeHelper.setManualZenMode(zen, null, pkg, "setInterruptionFilter");
             } finally {
                 Binder.restoreCallingIdentity(identity);
             }
@@ -3140,6 +3140,12 @@
         }
     }
 
+    private void recordCallerLocked(NotificationRecord record) {
+        if (mZenModeHelper.isCall(record)) {
+            mZenModeHelper.recordCaller(record);
+        }
+    }
+
     // let zen mode evaluate this record
     private void applyZenModeLocked(NotificationRecord record) {
         record.setIntercepted(mZenModeHelper.shouldIntercept(record));
@@ -3279,6 +3285,10 @@
     }
 
     private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete, int reason) {
+
+        // Record caller.
+        recordCallerLocked(r);
+
         // tell the app
         if (sendDelete) {
             if (r.getNotification().deleteIntent != null) {
diff --git a/services/core/java/com/android/server/notification/ScheduleCalendar.java b/services/core/java/com/android/server/notification/ScheduleCalendar.java
index 22ca702..9e8b2e3 100644
--- a/services/core/java/com/android/server/notification/ScheduleCalendar.java
+++ b/services/core/java/com/android/server/notification/ScheduleCalendar.java
@@ -82,15 +82,13 @@
         if (end <= start) {
             end = addDays(end, 1);
         }
-        boolean isInSchedule =
-                isInSchedule(-1, time, start, end) || isInSchedule(0, time, start, end);
-        if (isInSchedule && mSchedule.exitAtAlarm
+        return isInSchedule(-1, time, start, end) || isInSchedule(0, time, start, end);
+    }
+
+    public boolean shouldExitForAlarm(long time) {
+        return mSchedule.exitAtAlarm
                 && mSchedule.nextAlarm != 0
-                && time >= mSchedule.nextAlarm) {
-            return false;
-        } else {
-            return isInSchedule;
-        }
+                && time >= mSchedule.nextAlarm;
     }
 
     private boolean isInSchedule(int daysOffset, long time, long start, long end) {
diff --git a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java
index 8197544..32d03ce 100644
--- a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java
+++ b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java
@@ -25,11 +25,15 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.net.Uri;
+import android.os.Binder;
+import android.provider.Settings;
 import android.service.notification.Condition;
 import android.service.notification.IConditionProvider;
 import android.service.notification.ZenModeConfig;
 import android.service.notification.ZenModeConfig.ScheduleInfo;
+import android.text.TextUtils;
 import android.util.ArrayMap;
+import android.util.ArraySet;
 import android.util.Log;
 import android.util.Slog;
 
@@ -53,9 +57,13 @@
     private static final String ACTION_EVALUATE =  SIMPLE_NAME + ".EVALUATE";
     private static final int REQUEST_CODE_EVALUATE = 1;
     private static final String EXTRA_TIME = "time";
+    private static final String SEPARATOR = ";";
+    private static final String SCP_SETTING = "snoozed_schedule_condition_provider";
+
 
     private final Context mContext = this;
     private final ArrayMap<Uri, ScheduleCalendar> mSubscriptions = new ArrayMap<>();
+    private ArraySet<Uri> mSnoozed = new ArraySet<>();
 
     private AlarmManager mAlarmManager;
     private boolean mConnected;
@@ -90,6 +98,7 @@
             pw.print("            ");
             pw.println(mSubscriptions.get(conditionId).toString());
         }
+        pw.println("      snoozed due to alarm: " + TextUtils.join(SEPARATOR, mSnoozed));
         dumpUpcomingTime(pw, "mNextAlarmTime", mNextAlarmTime, now);
     }
 
@@ -97,6 +106,7 @@
     public void onConnected() {
         if (DEBUG) Slog.d(TAG, "onConnected");
         mConnected = true;
+        readSnoozed();
     }
 
     @Override
@@ -126,6 +136,7 @@
     public void onUnsubscribe(Uri conditionId) {
         if (DEBUG) Slog.d(TAG, "onUnsubscribe " + conditionId);
         mSubscriptions.remove(conditionId);
+        removeSnoozed(conditionId);
         evaluateSubscriptions();
     }
 
@@ -150,10 +161,16 @@
         for (Uri conditionId : mSubscriptions.keySet()) {
             final ScheduleCalendar cal = mSubscriptions.get(conditionId);
             if (cal != null && cal.isInSchedule(now)) {
-                notifyCondition(conditionId, Condition.STATE_TRUE, "meetsSchedule");
+                if (conditionSnoozed(conditionId) || cal.shouldExitForAlarm(now)) {
+                    notifyCondition(conditionId, Condition.STATE_FALSE, "alarmCanceled");
+                    addSnoozed(conditionId);
+                } else {
+                    notifyCondition(conditionId, Condition.STATE_TRUE, "meetsSchedule");
+                }
                 cal.maybeSetNextAlarm(now, nextUserAlarmTime);
             } else {
                 notifyCondition(conditionId, Condition.STATE_FALSE, "!meetsSchedule");
+                removeSnoozed(conditionId);
                 if (nextUserAlarmTime == 0) {
                     cal.maybeSetNextAlarm(now, nextUserAlarmTime);
                 }
@@ -194,7 +211,7 @@
         return info != null ? info.getTriggerTime() : 0;
     }
 
-    private static boolean meetsSchedule(ScheduleCalendar cal, long time) {
+    private boolean meetsSchedule(ScheduleCalendar cal, long time) {
         return cal != null && cal.isInSchedule(time);
     }
 
@@ -237,6 +254,62 @@
         return new Condition(id, summary, line1, line2, 0, state, Condition.FLAG_RELEVANT_ALWAYS);
     }
 
+    private boolean conditionSnoozed(Uri conditionId) {
+        synchronized (mSnoozed) {
+            return mSnoozed.contains(conditionId);
+        }
+    }
+
+    private void addSnoozed(Uri conditionId) {
+        synchronized (mSnoozed) {
+            mSnoozed.add(conditionId);
+            saveSnoozedLocked();
+        }
+    }
+
+    private void removeSnoozed(Uri conditionId) {
+        synchronized (mSnoozed) {
+            mSnoozed.remove(conditionId);
+            saveSnoozedLocked();
+        }
+    }
+
+    public void saveSnoozedLocked() {
+        final String setting = TextUtils.join(SEPARATOR, mSnoozed);
+        final int currentUser = ActivityManager.getCurrentUser();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(),
+                SCP_SETTING,
+                setting,
+                currentUser);
+    }
+
+    public void readSnoozed() {
+        synchronized (mSnoozed) {
+            long identity = Binder.clearCallingIdentity();
+            try {
+                final String setting = Settings.Secure.getStringForUser(
+                        mContext.getContentResolver(),
+                        SCP_SETTING,
+                        ActivityManager.getCurrentUser());
+                if (setting != null) {
+                    final String[] tokens = setting.split(SEPARATOR);
+                    for (int i = 0; i < tokens.length; i++) {
+                        String token = tokens[i];
+                        if (token != null) {
+                            token = token.trim();
+                        }
+                        if (TextUtils.isEmpty(token)) {
+                            continue;
+                        }
+                        mSnoozed.add(Uri.parse(token));
+                    }
+                }
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
+    }
+
     private BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java
index 80dc523..cbaad46 100644
--- a/services/core/java/com/android/server/notification/ZenModeFiltering.java
+++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java
@@ -81,7 +81,9 @@
         if (zen == Global.ZEN_MODE_NO_INTERRUPTIONS) return false; // nothing gets through
         if (zen == Global.ZEN_MODE_ALARMS) return false; // not an alarm
         if (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) {
-            if (config.allowRepeatCallers && REPEAT_CALLERS.isRepeat(context, extras)) return true;
+            if (config.allowRepeatCallers && REPEAT_CALLERS.isRepeat(context, extras)) {
+                return true;
+            }
             if (!config.allowCalls) return false; // no other calls get through
             if (validator != null) {
                 final float contactAffinity = validator.getContactAffinity(userHandle, extras,
@@ -97,6 +99,10 @@
                 ? record.sbn.getNotification().extras : null;
     }
 
+    protected void recordCall(NotificationRecord record) {
+        REPEAT_CALLERS.recordCall(mContext, extras(record));
+    }
+
     public boolean shouldIntercept(int zen, ZenModeConfig config, NotificationRecord record) {
         if (isSystem(record)) {
             return false;
@@ -233,28 +239,45 @@
     }
 
     private static class RepeatCallers {
+        // Person : time
         private final ArrayMap<String, Long> mCalls = new ArrayMap<>();
         private int mThresholdMinutes;
 
+        private synchronized void recordCall(Context context, Bundle extras) {
+            setThresholdMinutes(context);
+            if (mThresholdMinutes <= 0 || extras == null) return;
+            final String peopleString = peopleString(extras);
+            if (peopleString == null) return;
+            final long now = System.currentTimeMillis();
+            cleanUp(mCalls, now);
+            mCalls.put(peopleString, now);
+        }
+
         private synchronized boolean isRepeat(Context context, Bundle extras) {
-            if (mThresholdMinutes <= 0) {
-                mThresholdMinutes = context.getResources().getInteger(com.android.internal.R.integer
-                        .config_zen_repeat_callers_threshold);
-            }
+            setThresholdMinutes(context);
             if (mThresholdMinutes <= 0 || extras == null) return false;
             final String peopleString = peopleString(extras);
             if (peopleString == null) return false;
             final long now = System.currentTimeMillis();
-            final int N = mCalls.size();
+            cleanUp(mCalls, now);
+            return mCalls.containsKey(peopleString);
+        }
+
+        private synchronized void cleanUp(ArrayMap<String, Long> calls, long now) {
+            final int N = calls.size();
             for (int i = N - 1; i >= 0; i--) {
                 final long time = mCalls.valueAt(i);
                 if (time > now || (now - time) > mThresholdMinutes * 1000 * 60) {
-                    mCalls.removeAt(i);
+                    calls.removeAt(i);
                 }
             }
-            final boolean isRepeat = mCalls.containsKey(peopleString);
-            mCalls.put(peopleString, now);
-            return isRepeat;
+        }
+
+        private void setThresholdMinutes(Context context) {
+            if (mThresholdMinutes <= 0) {
+                mThresholdMinutes = context.getResources().getInteger(com.android.internal.R.integer
+                        .config_zen_repeat_callers_threshold);
+            }
         }
 
         private static String peopleString(Bundle extras) {
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 41b78f6..4393761 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -54,7 +54,6 @@
 import android.service.notification.ZenModeConfig.EventInfo;
 import android.service.notification.ZenModeConfig.ScheduleInfo;
 import android.service.notification.ZenModeConfig.ZenRule;
-import android.text.TextUtils;
 import android.util.AndroidRuntimeException;
 import android.util.Log;
 import android.util.SparseArray;
@@ -140,8 +139,7 @@
             ValidateNotificationPeople validator, int contactsTimeoutMs, float timeoutAffinity) {
         synchronized (mConfig) {
             return ZenModeFiltering.matchesCallFilter(mContext, mZenMode, mConfig, userHandle,
-                    extras,
-                    validator, contactsTimeoutMs, timeoutAffinity);
+                    extras, validator, contactsTimeoutMs, timeoutAffinity);
         }
     }
 
@@ -149,6 +147,10 @@
         return mFiltering.isCall(record);
     }
 
+    public void recordCaller(NotificationRecord record) {
+        mFiltering.recordCall(record);
+    }
+
     public boolean shouldIntercept(NotificationRecord record) {
         synchronized (mConfig) {
             return mFiltering.shouldIntercept(mZenMode, mConfig, record);
@@ -229,7 +231,7 @@
     public void requestFromListener(ComponentName name, int filter) {
         final int newZen = NotificationManager.zenModeFromInterruptionFilter(filter, -1);
         if (newZen != -1) {
-            setManualZenMode(newZen, null,
+            setManualZenMode(newZen, null, name != null ? name.getPackageName() : null,
                     "listener:" + (name != null ? name.flattenToShortString() : null));
         }
     }
@@ -452,11 +454,11 @@
                 rule.creationTime);
     }
 
-    public void setManualZenMode(int zenMode, Uri conditionId, String reason) {
-        setManualZenMode(zenMode, conditionId, reason, true /*setRingerMode*/);
+    public void setManualZenMode(int zenMode, Uri conditionId, String caller, String reason) {
+        setManualZenMode(zenMode, conditionId, reason, caller, true /*setRingerMode*/);
     }
 
-    private void setManualZenMode(int zenMode, Uri conditionId, String reason,
+    private void setManualZenMode(int zenMode, Uri conditionId, String reason, String caller,
             boolean setRingerMode) {
         ZenModeConfig newConfig;
         synchronized (mConfig) {
@@ -478,6 +480,7 @@
                 newRule.enabled = true;
                 newRule.zenMode = zenMode;
                 newRule.conditionId = conditionId;
+                newRule.enabler = caller;
                 newConfig.manualRule = newRule;
             }
             setConfigLocked(newConfig, reason, setRingerMode);
@@ -950,7 +953,8 @@
                     break;
             }
             if (newZen != -1) {
-                setManualZenMode(newZen, null, "ringerModeInternal", false /*setRingerMode*/);
+                setManualZenMode(newZen, null, "ringerModeInternal", null,
+                        false /*setRingerMode*/);
             }
 
             if (isChange || newZen != -1 || ringerModeExternal != ringerModeExternalOut) {
@@ -988,7 +992,8 @@
                     break;
             }
             if (newZen != -1) {
-                setManualZenMode(newZen, null, "ringerModeExternal", false /*setRingerMode*/);
+                setManualZenMode(newZen, null, "ringerModeExternal", caller,
+                        false /*setRingerMode*/);
             }
 
             ZenLog.traceSetRingerModeExternal(ringerModeOld, ringerModeNew, caller,
diff --git a/services/core/java/com/android/server/pm/AbstractStatsBase.java b/services/core/java/com/android/server/pm/AbstractStatsBase.java
new file mode 100644
index 0000000..612c476
--- /dev/null
+++ b/services/core/java/com/android/server/pm/AbstractStatsBase.java
@@ -0,0 +1,126 @@
+/*
+ * 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.server.pm;
+
+import android.os.Environment;
+import android.os.SystemClock;
+import android.util.AtomicFile;
+
+import java.io.File;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * A simple base class for statistics that need to be saved/restored from a dedicated file. This
+ * class provides a base implementation that:
+ * <ul>
+ * <li>Provide an AtomicFile to the actual read/write code
+ * <li>A background-thread write and a synchronous write
+ * <li>Write-limiting for the background-thread (by default writes are at least 30 minutes apart)
+ * <li>Can lock on the provided data object before writing
+ * </ul>
+ * For completion, a subclass needs to implement actual {@link #writeInternal(Object) writing} and
+ * {@link #readInternal(Object) reading}.
+ */
+public abstract class AbstractStatsBase<T> {
+
+    private static final int WRITE_INTERVAL_MS =
+            (PackageManagerService.DEBUG_DEXOPT) ? 0 : 30*60*1000;
+    private final Object mFileLock = new Object();
+    private final AtomicLong mLastTimeWritten = new AtomicLong(0);
+    private final AtomicBoolean mBackgroundWriteRunning = new AtomicBoolean(false);
+    private final String mFileName;
+    private final String mBackgroundThreadName;
+    private final boolean mLock;
+
+    protected AbstractStatsBase(String fileName, String threadName, boolean lock) {
+        mFileName = fileName;
+        mBackgroundThreadName = threadName;
+        mLock = lock;
+    }
+
+    protected AtomicFile getFile() {
+        File dataDir = Environment.getDataDirectory();
+        File systemDir = new File(dataDir, "system");
+        File fname = new File(systemDir, mFileName);
+        return new AtomicFile(fname);
+    }
+
+    void writeNow(final T data) {
+        writeImpl(data);
+        mLastTimeWritten.set(SystemClock.elapsedRealtime());
+    }
+
+    boolean maybeWriteAsync(final T data) {
+        if (SystemClock.elapsedRealtime() - mLastTimeWritten.get() < WRITE_INTERVAL_MS
+            && !PackageManagerService.DEBUG_DEXOPT) {
+            return false;
+        }
+
+        if (mBackgroundWriteRunning.compareAndSet(false, true)) {
+            new Thread(mBackgroundThreadName) {
+                @Override
+                public void run() {
+                    try {
+                        writeImpl(data);
+                        mLastTimeWritten.set(SystemClock.elapsedRealtime());
+                    } finally {
+                        mBackgroundWriteRunning.set(false);
+                    }
+                }
+            }.start();
+            return true;
+        }
+
+        return false;
+    }
+
+    private void writeImpl(T data) {
+        if (mLock) {
+            synchronized (data) {
+                synchronized (mFileLock) {
+                    writeInternal(data);
+                }
+            }
+        } else {
+            synchronized (mFileLock) {
+                writeInternal(data);
+            }
+        }
+    }
+
+    protected abstract void writeInternal(T data);
+
+    void read(T data) {
+        if (mLock) {
+            synchronized (data) {
+                synchronized (mFileLock) {
+                    readInternal(data);
+                }
+            }
+        } else {
+            synchronized (mFileLock) {
+                readInternal(data);
+            }
+        }
+        // We use the current time as last-written. read() is called on system server startup
+        // (current situation), and we want to postpone I/O at boot.
+        mLastTimeWritten.set(SystemClock.elapsedRealtime());
+    }
+
+    protected abstract void readInternal(T data);
+}
diff --git a/services/core/java/com/android/server/pm/CompilerStats.java b/services/core/java/com/android/server/pm/CompilerStats.java
new file mode 100644
index 0000000..8c2fc3e
--- /dev/null
+++ b/services/core/java/com/android/server/pm/CompilerStats.java
@@ -0,0 +1,295 @@
+/*
+ * 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.server.pm;
+
+import android.util.ArrayMap;
+import android.util.AtomicFile;
+import android.util.Log;
+
+import com.android.internal.util.FastPrintWriter;
+import com.android.internal.util.IndentingPrintWriter;
+
+import libcore.io.IoUtils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A class that collects, serializes and deserializes compiler-related statistics on a
+ * per-package per-code-path basis.
+ *
+ * Currently used to track compile times.
+ */
+class CompilerStats extends AbstractStatsBase<Void> {
+
+    private final static String COMPILER_STATS_VERSION_HEADER = "PACKAGE_MANAGER__COMPILER_STATS__";
+    private final static int COMPILER_STATS_VERSION = 1;
+
+    /**
+     * Class to collect all stats pertaining to one package.
+     */
+    static class PackageStats {
+
+        private final String packageName;
+
+        /**
+         * This map stores compile-times for all code paths in the package. The value
+         * is in milliseconds.
+         */
+        private final Map<String, Long> compileTimePerCodePath;
+
+        /**
+         * @param packageName
+         */
+        public PackageStats(String packageName) {
+            this.packageName = packageName;
+            // We expect at least one element in here, but let's make it minimal.
+            compileTimePerCodePath = new ArrayMap<>(2);
+        }
+
+        public String getPackageName() {
+            return packageName;
+        }
+
+        /**
+         * Return the recorded compile time for a given code path. Returns
+         * 0 if there is no recorded time.
+         */
+        public long getCompileTime(String codePath) {
+            String storagePath = getStoredPathFromCodePath(codePath);
+            synchronized (compileTimePerCodePath) {
+                Long l = compileTimePerCodePath.get(storagePath);
+                if (l == null) {
+                    return 0;
+                }
+                return l;
+            }
+        }
+
+        public void setCompileTime(String codePath, long compileTimeInMs) {
+            String storagePath = getStoredPathFromCodePath(codePath);
+            synchronized (compileTimePerCodePath) {
+                if (compileTimeInMs <= 0) {
+                    compileTimePerCodePath.remove(storagePath);
+                } else {
+                    compileTimePerCodePath.put(storagePath, compileTimeInMs);
+                }
+            }
+        }
+
+        private static String getStoredPathFromCodePath(String codePath) {
+            int lastSlash = codePath.lastIndexOf(File.separatorChar);
+            return codePath.substring(lastSlash + 1);
+        }
+
+        public void dump(IndentingPrintWriter ipw) {
+            synchronized (compileTimePerCodePath) {
+                if (compileTimePerCodePath.size() == 0) {
+                    ipw.println("(No recorded stats)");
+                } else {
+                    for (Map.Entry<String, Long> e : compileTimePerCodePath.entrySet()) {
+                        ipw.println(" " + e.getKey() + " - " + e.getValue());
+                    }
+                }
+            }
+        }
+    }
+
+    private final Map<String, PackageStats> packageStats;
+
+    public CompilerStats() {
+        super("package-cstats.list", "CompilerStats_DiskWriter", /* lock */ false);
+        packageStats = new HashMap<>();
+    }
+
+    public PackageStats getPackageStats(String packageName) {
+        synchronized (packageStats) {
+            return packageStats.get(packageName);
+        }
+    }
+
+    public void setPackageStats(String packageName, PackageStats stats) {
+        synchronized (packageStats) {
+            packageStats.put(packageName, stats);
+        }
+    }
+
+    public PackageStats createPackageStats(String packageName) {
+        synchronized (packageStats) {
+            PackageStats newStats = new PackageStats(packageName);
+            packageStats.put(packageName, newStats);
+            return newStats;
+        }
+    }
+
+    public PackageStats getOrCreatePackageStats(String packageName) {
+        synchronized (packageStats) {
+            PackageStats existingStats = packageStats.get(packageName);
+            if (existingStats != null) {
+                return existingStats;
+            }
+
+            return createPackageStats(packageName);
+        }
+    }
+
+    public void deletePackageStats(String packageName) {
+        synchronized (packageStats) {
+            packageStats.remove(packageName);
+        }
+    }
+
+    // I/O
+
+    // The encoding is simple:
+    //
+    // 1) The first line is a line consisting of the version header and the version number.
+    //
+    // 2) The rest of the file is package data.
+    // 2.1) A package is started by any line not starting with "-";
+    // 2.2) Any line starting with "-" is code path data. The format is:
+    //      '-'{code-path}':'{compile-time}
+
+    public void write(Writer out) {
+        @SuppressWarnings("resource")
+        FastPrintWriter fpw = new FastPrintWriter(out);
+
+        fpw.print(COMPILER_STATS_VERSION_HEADER);
+        fpw.println(COMPILER_STATS_VERSION);
+
+        synchronized (packageStats) {
+            for (PackageStats pkg : packageStats.values()) {
+                synchronized (pkg.compileTimePerCodePath) {
+                    if (!pkg.compileTimePerCodePath.isEmpty()) {
+                        fpw.println(pkg.getPackageName());
+
+                        for (Map.Entry<String, Long> e : pkg.compileTimePerCodePath.entrySet()) {
+                            fpw.println("-" + e.getKey() + ":" + e.getValue());
+                        }
+                    }
+                }
+            }
+        }
+
+        fpw.flush();
+    }
+
+    public boolean read(Reader r) {
+        synchronized (packageStats) {
+            // TODO: Could make this a final switch, then we wouldn't have to synchronize over
+            //       the whole reading.
+            packageStats.clear();
+
+            try {
+                BufferedReader in = new BufferedReader(r);
+
+                // Read header, do version check.
+                String versionLine = in.readLine();
+                if (versionLine == null) {
+                    throw new IllegalArgumentException("No version line found.");
+                } else {
+                    if (!versionLine.startsWith(COMPILER_STATS_VERSION_HEADER)) {
+                        throw new IllegalArgumentException("Invalid version line: " + versionLine);
+                    }
+                    int version = Integer.parseInt(
+                            versionLine.substring(COMPILER_STATS_VERSION_HEADER.length()));
+                    if (version != COMPILER_STATS_VERSION) {
+                        // TODO: Upgrade older formats? For now, just reject and regenerate.
+                        throw new IllegalArgumentException("Unexpected version: " + version);
+                    }
+                }
+
+                // For simpler code, we ignore any data lines before the first package. We
+                // collect it in a fake package.
+                PackageStats currentPackage = new PackageStats("fake package");
+
+                String s = null;
+                while ((s = in.readLine()) != null) {
+                    if (s.startsWith("-")) {
+                        int colonIndex = s.indexOf(':');
+                        if (colonIndex == -1 || colonIndex == 1) {
+                            throw new IllegalArgumentException("Could not parse data " + s);
+                        }
+                        String codePath = s.substring(1, colonIndex);
+                        long time = Long.parseLong(s.substring(colonIndex + 1));
+                        currentPackage.setCompileTime(codePath, time);
+                    } else {
+                        currentPackage = getOrCreatePackageStats(s);
+                    }
+                }
+            } catch (Exception e) {
+                Log.e(PackageManagerService.TAG, "Error parsing compiler stats", e);
+                return false;
+            }
+
+            return true;
+        }
+    }
+
+    void writeNow() {
+        writeNow(null);
+    }
+
+    boolean maybeWriteAsync() {
+        return maybeWriteAsync(null);
+    }
+
+    @Override
+    protected void writeInternal(Void data) {
+        AtomicFile file = getFile();
+        FileOutputStream f = null;
+
+        try {
+            f = file.startWrite();
+            OutputStreamWriter osw = new OutputStreamWriter(f);
+            write(osw);
+            osw.flush();
+            file.finishWrite(f);
+        } catch (IOException e) {
+            if (f != null) {
+                file.failWrite(f);
+            }
+            Log.e(PackageManagerService.TAG, "Failed to write compiler stats", e);
+        }
+    }
+
+    void read() {
+        read((Void)null);
+    }
+
+    @Override
+    protected void readInternal(Void data) {
+        AtomicFile file = getFile();
+        BufferedReader in = null;
+        try {
+            in = new BufferedReader(new InputStreamReader(file.openRead()));
+            read(in);
+        } catch (FileNotFoundException expected) {
+        } finally {
+            IoUtils.closeQuietly(in);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
index 098b39e..1cff926 100644
--- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
@@ -31,6 +31,7 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.UserHandle;
+import android.os.storage.StorageManager;
 import android.print.PrintManager;
 import android.provider.CalendarContract;
 import android.provider.ContactsContract;
@@ -605,6 +606,15 @@
                 grantRuntimePermissionsLPw(nfcTagPkg, CONTACTS_PERMISSIONS, false, userId);
                 grantRuntimePermissionsLPw(nfcTagPkg, PHONE_PERMISSIONS, false, userId);
             }
+
+            // Storage Manager
+            Intent storageManagerIntent = new Intent(StorageManager.ACTION_MANAGE_STORAGE);
+            PackageParser.Package storageManagerPckg = getDefaultSystemHandlerActivityPackageLPr(
+                    storageManagerIntent, userId);
+            if (storageManagerPckg != null
+                    && doesPackageSupportRuntimePermissions(storageManagerPckg)) {
+                grantRuntimePermissionsLPw(storageManagerPckg, STORAGE_PERMISSIONS, true, userId);
+            }
             mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);
         }
     }
@@ -619,6 +629,7 @@
             grantRuntimePermissionsLPw(dialerPackage, CONTACTS_PERMISSIONS, userId);
             grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, userId);
             grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, userId);
+            grantRuntimePermissionsLPw(dialerPackage, CAMERA_PERMISSIONS, userId);
         }
     }
 
@@ -656,6 +667,7 @@
             grantRuntimePermissionsLPw(dialerPackage, CONTACTS_PERMISSIONS, false, true, userId);
             grantRuntimePermissionsLPw(dialerPackage, SMS_PERMISSIONS, false, true, userId);
             grantRuntimePermissionsLPw(dialerPackage, MICROPHONE_PERMISSIONS, false, true, userId);
+            grantRuntimePermissionsLPw(dialerPackage, CAMERA_PERMISSIONS, false, true, userId);
         }
     }
 
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index 03d5645f..b4dd587 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -17,15 +17,12 @@
 package com.android.server.pm;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.annotation.UserIdInt;
+import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
-import android.app.ActivityManagerNative;
 import android.app.AppGlobals;
-import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.IIntentSender;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
@@ -439,7 +436,7 @@
         }
 
         @Override
-        public void startShortcut(String callingPackage, String packageName, String shortcutId,
+        public boolean startShortcut(String callingPackage, String packageName, String shortcutId,
                 Rect sourceBounds, Bundle startActivityOptions, int userId) {
             verifyCallingPackage(callingPackage);
             ensureInUserProfiles(userId, "Cannot start activity for unrelated profile " + userId);
@@ -455,42 +452,41 @@
                 ensureShortcutPermission(callingPackage, userId);
             }
 
-            final Intent intent = mShortcutServiceInternal.createShortcutIntent(getCallingUserId(),
-                    callingPackage, packageName, shortcutId, userId);
-            if (intent == null) {
-                return;
+            final Intent[] intents = mShortcutServiceInternal.createShortcutIntents(
+                    getCallingUserId(), callingPackage, packageName, shortcutId, userId);
+            if (intents == null || intents.length == 0) {
+                return false;
             }
             // Note the target activity doesn't have to be exported.
 
-            prepareIntentForLaunch(intent, sourceBounds);
+            // TODO Use sourceBounds
 
-            startShortcutIntentAsPublisher(
-                    intent, packageName, startActivityOptions, userId);
+            intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+            return startShortcutIntentsAsPublisher(
+                    intents, packageName, startActivityOptions, userId);
         }
 
-        @VisibleForTesting
-        protected void startShortcutIntentAsPublisher(@NonNull Intent intent,
+        private boolean startShortcutIntentsAsPublisher(@NonNull Intent[] intents,
                 @NonNull String publisherPackage, Bundle startActivityOptions, int userId) {
-
+            final int code;
+            final long ident = injectClearCallingIdentity();
             try {
-                final IIntentSender intentSender;
-
-                final long ident = Binder.clearCallingIdentity();
-                try {
-                    intentSender = mActivityManagerInternal.getActivityIntentSenderAsPackage(
-                            publisherPackage, userId, /* requestCode= */ 0,
-                            intent, PendingIntent.FLAG_ONE_SHOT,
-                            /* options= */ startActivityOptions);
-                } finally {
-                    Binder.restoreCallingIdentity(ident);
+                code = mActivityManagerInternal.startActivitiesAsPackage(publisherPackage,
+                        userId, intents, startActivityOptions);
+                if (code >= ActivityManager.START_SUCCESS) {
+                    return true; // Success
+                } else {
+                    Log.e(TAG, "Couldn't start activity, code=" + code);
                 }
-
-                // Negative result means a failure.
-                ActivityManagerNative.getDefault().sendIntentSender(
-                        intentSender, 0, null, null, null, null, null);
-
-            } catch (RemoteException e) {
-                return;
+                return code >= ActivityManager.START_SUCCESS;
+            } catch (SecurityException e) {
+                if (DEBUG) {
+                    Slog.d(TAG, "SecurityException while launching intent", e);
+                }
+                return false;
+            } finally {
+                injectRestoreCallingIdentity(ident);
             }
         }
 
@@ -525,7 +521,9 @@
 
             Intent launchIntent = new Intent(Intent.ACTION_MAIN);
             launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
-            prepareIntentForLaunch(launchIntent, sourceBounds);
+            launchIntent.setSourceBounds(sourceBounds);
+            launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
             launchIntent.setPackage(component.getPackageName());
 
             long ident = Binder.clearCallingIdentity();
@@ -566,13 +564,6 @@
             }
         }
 
-        private void prepareIntentForLaunch(@NonNull Intent launchIntent,
-                @Nullable Rect sourceBounds) {
-            launchIntent.setSourceBounds(sourceBounds);
-            launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-        }
-
         @Override
         public void showAppDetailsAsUser(ComponentName component, Rect sourceBounds,
                 Bundle opts, UserHandle user) throws RemoteException {
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index 01b3dc28..77c69c9 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -213,9 +213,20 @@
         // Use the package manager install and install lock here for the OTA dex optimizer.
         PackageDexOptimizer optimizer = new OTADexoptPackageDexOptimizer(
                 collectingInstaller, mPackageManagerService.mInstallLock, mContext);
+        // Make sure that core apps are optimized according to their own "reason".
+        // If the core apps are not preopted in the B OTA, and REASON_AB_OTA is not speed
+        // (by default is speed-profile) they will be interepreted/JITed. This in itself is not a
+        // problem as we will end up doing profile guided compilation. However, some core apps may
+        // be loaded by system server which doesn't JIT and we need to make sure we don't
+        // interpret-only
+        int compilationReason = nextPackage.coreApp
+                ? PackageManagerService.REASON_CORE_APP
+                : PackageManagerService.REASON_AB_OTA;
+
         optimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles,
                 null /* ISAs */, false /* checkProfiles */,
-                getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA));
+                getCompilerFilterForReason(compilationReason),
+                null /* CompilerStats.PackageStats */);
 
         mCommandsForCurrentPackage = collectingConnection.commands;
         if (mCommandsForCurrentPackage.isEmpty()) {
@@ -261,7 +272,8 @@
                 mPackageManagerService.mInstaller, mPackageManagerService.mInstallLock, mContext);
         optimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles, null /* ISAs */,
                 false /* checkProfiles */,
-                getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA));
+                getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA),
+                mPackageManagerService.getOrCreateCompilerPackageStats(nextPackage));
     }
 
     private void moveAbArtifacts(Installer installer) {
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index 26a840d..19b1201 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -90,7 +90,8 @@
      * synchronized on {@link #mInstallLock}.
      */
     int performDexOpt(PackageParser.Package pkg, String[] sharedLibraries,
-            String[] instructionSets, boolean checkProfiles, String targetCompilationFilter) {
+            String[] instructionSets, boolean checkProfiles, String targetCompilationFilter,
+            CompilerStats.PackageStats packageStats) {
         synchronized (mInstallLock) {
             final boolean useLock = mSystemReady;
             if (useLock) {
@@ -99,7 +100,7 @@
             }
             try {
                 return performDexOptLI(pkg, sharedLibraries, instructionSets, checkProfiles,
-                        targetCompilationFilter);
+                        targetCompilationFilter, packageStats);
             } finally {
                 if (useLock) {
                     mDexoptWakeLock.release();
@@ -150,7 +151,8 @@
     }
 
     private int performDexOptLI(PackageParser.Package pkg, String[] sharedLibraries,
-            String[] targetInstructionSets, boolean checkProfiles, String targetCompilerFilter) {
+            String[] targetInstructionSets, boolean checkProfiles, String targetCompilerFilter,
+            CompilerStats.PackageStats packageStats) {
         final String[] instructionSets = targetInstructionSets != null ?
                 targetInstructionSets : getAppDexInstructionSets(pkg.applicationInfo);
 
@@ -254,10 +256,17 @@
                         | DEXOPT_BOOTCOMPLETE);
 
                 try {
+                    long startTime = System.currentTimeMillis();
+
                     mInstaller.dexopt(path, sharedGid, pkg.packageName, dexCodeInstructionSet,
                             dexoptNeeded, oatDir, dexFlags, targetCompilerFilter, pkg.volumeUuid,
                             sharedLibrariesPath);
                     performedDexOpt = true;
+
+                    if (packageStats != null) {
+                        long endTime = System.currentTimeMillis();
+                        packageStats.setCompileTime(path, (int)(endTime - startTime));
+                    }
                 } catch (InstallerException e) {
                     Slog.w(TAG, "Failed to dexopt", e);
                     successfulDexOpt = false;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 83af017..6a56fa6 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -182,6 +182,10 @@
      */
     private final Random mRandom = new SecureRandom();
 
+    /** All sessions allocated */
+    @GuardedBy("mSessions")
+    private final SparseBooleanArray mAllocatedSessions = new SparseBooleanArray();
+
     @GuardedBy("mSessions")
     private final SparseArray<PackageInstallerSession> mSessions = new SparseArray<>();
 
@@ -365,6 +369,7 @@
                             // keep details around for dumpsys.
                             mHistoricalSessions.put(session.sessionId, session);
                         }
+                        mAllocatedSessions.put(session.sessionId, true);
                     }
                 }
             }
@@ -666,23 +671,26 @@
                         "Too many historical sessions for UID " + callingUid);
             }
 
-            final long createdMillis = System.currentTimeMillis();
             sessionId = allocateSessionIdLocked();
+        }
 
-            // We're staging to exactly one location
-            File stageDir = null;
-            String stageCid = null;
-            if ((params.installFlags & PackageManager.INSTALL_INTERNAL) != 0) {
-                final boolean isEphemeral =
-                        (params.installFlags & PackageManager.INSTALL_EPHEMERAL) != 0;
-                stageDir = buildStageDir(params.volumeUuid, sessionId, isEphemeral);
-            } else {
-                stageCid = buildExternalStageCid(sessionId);
-            }
+        final long createdMillis = System.currentTimeMillis();
+        // We're staging to exactly one location
+        File stageDir = null;
+        String stageCid = null;
+        if ((params.installFlags & PackageManager.INSTALL_INTERNAL) != 0) {
+            final boolean isEphemeral =
+                    (params.installFlags & PackageManager.INSTALL_EPHEMERAL) != 0;
+            stageDir = buildStageDir(params.volumeUuid, sessionId, isEphemeral);
+        } else {
+            stageCid = buildExternalStageCid(sessionId);
+        }
 
-            session = new PackageInstallerSession(mInternalCallback, mContext, mPm,
-                    mInstallThread.getLooper(), sessionId, userId, installerPackageName, callingUid,
-                    params, createdMillis, stageDir, stageCid, false, false);
+        session = new PackageInstallerSession(mInternalCallback, mContext, mPm,
+                mInstallThread.getLooper(), sessionId, userId, installerPackageName, callingUid,
+                params, createdMillis, stageDir, stageCid, false, false);
+
+        synchronized (mSessions) {
             mSessions.put(sessionId, session);
         }
 
@@ -765,8 +773,8 @@
         int sessionId;
         do {
             sessionId = mRandom.nextInt(Integer.MAX_VALUE - 1) + 1;
-            if (mSessions.get(sessionId) == null && mHistoricalSessions.get(sessionId) == null
-                    && !mLegacySessions.get(sessionId, false)) {
+            if (!mAllocatedSessions.get(sessionId, false)) {
+                mAllocatedSessions.put(sessionId, true);
                 return sessionId;
             }
         } while (n++ < 32);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 84ebdd1..de0515a 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -76,8 +76,6 @@
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 import static android.content.pm.PackageParser.PARSE_IS_PRIVILEGED;
 import static android.content.pm.PackageParser.isApkFile;
-import static android.os.Process.PACKAGE_INFO_GID;
-import static android.os.Process.SYSTEM_UID;
 import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
 import static android.system.OsConstants.O_CREAT;
 import static android.system.OsConstants.O_RDWR;
@@ -95,6 +93,7 @@
 import static com.android.server.pm.InstructionSets.getPrimaryInstructionSet;
 import static com.android.server.pm.PackageManagerServiceCompilerMapping.getCompilerFilterForReason;
 import static com.android.server.pm.PackageManagerServiceCompilerMapping.getFullCompilerFilter;
+import static com.android.server.pm.PackageManagerServiceCompilerMapping.getNonProfileGuidedCompilerFilter;
 import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_FAILURE;
 import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_SUCCESS;
 import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED;
@@ -207,7 +206,6 @@
 import android.text.format.DateUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
-import android.util.AtomicFile;
 import android.util.DisplayMetrics;
 import android.util.EventLog;
 import android.util.ExceptionUtils;
@@ -266,7 +264,6 @@
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
 
-import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
@@ -279,7 +276,6 @@
 import java.io.FileReader;
 import java.io.FilenameFilter;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
 import java.security.DigestInputStream;
@@ -306,7 +302,6 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
 
 /**
  * Keep track of all those APKs everywhere.
@@ -1130,204 +1125,7 @@
     final @NonNull String mSharedSystemSharedLibraryPackageName;
 
     private final PackageUsage mPackageUsage = new PackageUsage();
-
-    private class PackageUsage {
-        private static final int WRITE_INTERVAL
-            = (DEBUG_DEXOPT) ? 0 : 30*60*1000; // 30m in ms
-
-        private final Object mFileLock = new Object();
-        private final AtomicLong mLastWritten = new AtomicLong(0);
-        private final AtomicBoolean mBackgroundWriteRunning = new AtomicBoolean(false);
-
-        private boolean mIsHistoricalPackageUsageAvailable = true;
-
-        boolean isHistoricalPackageUsageAvailable() {
-            return mIsHistoricalPackageUsageAvailable;
-        }
-
-        void write(boolean force) {
-            if (force) {
-                writeInternal();
-                return;
-            }
-            if (SystemClock.elapsedRealtime() - mLastWritten.get() < WRITE_INTERVAL
-                && !DEBUG_DEXOPT) {
-                return;
-            }
-            if (mBackgroundWriteRunning.compareAndSet(false, true)) {
-                new Thread("PackageUsage_DiskWriter") {
-                    @Override
-                    public void run() {
-                        try {
-                            writeInternal();
-                        } finally {
-                            mBackgroundWriteRunning.set(false);
-                        }
-                    }
-                }.start();
-            }
-        }
-
-        private void writeInternal() {
-            synchronized (mPackages) {
-                synchronized (mFileLock) {
-                    AtomicFile file = getFile();
-                    FileOutputStream f = null;
-                    try {
-                        f = file.startWrite();
-                        BufferedOutputStream out = new BufferedOutputStream(f);
-                        FileUtils.setPermissions(file.getBaseFile().getPath(),
-                                0640, SYSTEM_UID, PACKAGE_INFO_GID);
-                        StringBuilder sb = new StringBuilder();
-
-                        sb.append(USAGE_FILE_MAGIC_VERSION_1);
-                        sb.append('\n');
-                        out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
-
-                        for (PackageParser.Package pkg : mPackages.values()) {
-                            if (pkg.getLatestPackageUseTimeInMills() == 0L) {
-                                continue;
-                            }
-                            sb.setLength(0);
-                            sb.append(pkg.packageName);
-                            for (long usageTimeInMillis : pkg.mLastPackageUsageTimeInMills) {
-                                sb.append(' ');
-                                sb.append(usageTimeInMillis);
-                            }
-                            sb.append('\n');
-                            out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
-                        }
-                        out.flush();
-                        file.finishWrite(f);
-                    } catch (IOException e) {
-                        if (f != null) {
-                            file.failWrite(f);
-                        }
-                        Log.e(TAG, "Failed to write package usage times", e);
-                    }
-                }
-            }
-            mLastWritten.set(SystemClock.elapsedRealtime());
-        }
-
-        void readLP() {
-            synchronized (mFileLock) {
-                AtomicFile file = getFile();
-                BufferedInputStream in = null;
-                try {
-                    in = new BufferedInputStream(file.openRead());
-                    StringBuffer sb = new StringBuffer();
-
-                    String firstLine = readLine(in, sb);
-                    if (firstLine == null) {
-                        // Empty file. Do nothing.
-                    } else if (USAGE_FILE_MAGIC_VERSION_1.equals(firstLine)) {
-                        readVersion1LP(in, sb);
-                    } else {
-                        readVersion0LP(in, sb, firstLine);
-                    }
-                } catch (FileNotFoundException expected) {
-                    mIsHistoricalPackageUsageAvailable = false;
-                } catch (IOException e) {
-                    Log.w(TAG, "Failed to read package usage times", e);
-                } finally {
-                    IoUtils.closeQuietly(in);
-                }
-            }
-            mLastWritten.set(SystemClock.elapsedRealtime());
-        }
-
-        private void readVersion0LP(InputStream in, StringBuffer sb, String firstLine)
-                throws IOException {
-            // Initial version of the file had no version number and stored one
-            // package-timestamp pair per line.
-            // Note that the first line has already been read from the InputStream.
-            for (String line = firstLine; line != null; line = readLine(in, sb)) {
-                String[] tokens = line.split(" ");
-                if (tokens.length != 2) {
-                    throw new IOException("Failed to parse " + line +
-                            " as package-timestamp pair.");
-                }
-
-                String packageName = tokens[0];
-                PackageParser.Package pkg = mPackages.get(packageName);
-                if (pkg == null) {
-                    continue;
-                }
-
-                long timestamp = parseAsLong(tokens[1]);
-                for (int reason = 0;
-                        reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
-                        reason++) {
-                    pkg.mLastPackageUsageTimeInMills[reason] = timestamp;
-                }
-            }
-        }
-
-        private void readVersion1LP(InputStream in, StringBuffer sb) throws IOException {
-            // Version 1 of the file started with the corresponding version
-            // number and then stored a package name and eight timestamps per line.
-            String line;
-            while ((line = readLine(in, sb)) != null) {
-                String[] tokens = line.split(" ");
-                if (tokens.length != PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT + 1) {
-                    throw new IOException("Failed to parse " + line + " as a timestamp array.");
-                }
-
-                String packageName = tokens[0];
-                PackageParser.Package pkg = mPackages.get(packageName);
-                if (pkg == null) {
-                    continue;
-                }
-
-                for (int reason = 0;
-                        reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
-                        reason++) {
-                    pkg.mLastPackageUsageTimeInMills[reason] = parseAsLong(tokens[reason + 1]);
-                }
-            }
-        }
-
-        private long parseAsLong(String token) throws IOException {
-            try {
-                return Long.parseLong(token);
-            } catch (NumberFormatException e) {
-                throw new IOException("Failed to parse " + token + " as a long.", e);
-            }
-        }
-
-        private String readLine(InputStream in, StringBuffer sb) throws IOException {
-            return readToken(in, sb, '\n');
-        }
-
-        private String readToken(InputStream in, StringBuffer sb, char endOfToken)
-                throws IOException {
-            sb.setLength(0);
-            while (true) {
-                int ch = in.read();
-                if (ch == -1) {
-                    if (sb.length() == 0) {
-                        return null;
-                    }
-                    throw new IOException("Unexpected EOF");
-                }
-                if (ch == endOfToken) {
-                    return sb.toString();
-                }
-                sb.append((char)ch);
-            }
-        }
-
-        private AtomicFile getFile() {
-            File dataDir = Environment.getDataDirectory();
-            File systemDir = new File(dataDir, "system");
-            File fname = new File(systemDir, "package-usage.list");
-            return new AtomicFile(fname);
-        }
-
-        private static final String USAGE_FILE_MAGIC = "PACKAGE_USAGE__VERSION_";
-        private static final String USAGE_FILE_MAGIC_VERSION_1 = USAGE_FILE_MAGIC + "1";
-    }
+    private final CompilerStats mCompilerStats = new CompilerStats();
 
     class PackageHandler extends Handler {
         private boolean mBound = false;
@@ -2708,7 +2506,8 @@
 
             // Now that we know all the packages we are keeping,
             // read and update their last usage times.
-            mPackageUsage.readLP();
+            mPackageUsage.read(mPackages);
+            mCompilerStats.read();
 
             EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_SCAN_END,
                     SystemClock.uptimeMillis());
@@ -2752,7 +2551,7 @@
                 storageFlags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
             }
             reconcileAppsDataLI(StorageManager.UUID_PRIVATE_INTERNAL, UserHandle.USER_SYSTEM,
-                    storageFlags);
+                    storageFlags, true /* migrateAppData */);
 
             // If this is first boot after an OTA, and a normal boot, then
             // we need to clear code cache directories.
@@ -2800,7 +2599,7 @@
                     }
                 }
 
-                int[] stats = performDexOpt(coreApps, false,
+                int[] stats = performDexOptUpgrade(coreApps, false,
                         getCompilerFilterForReason(REASON_CORE_APP));
 
                 final int elapsedTimeSeconds =
@@ -7267,22 +7066,17 @@
         try {
             IMountService ms = PackageHelper.getMountService();
             if (ms != null) {
-                final boolean isUpgrade = isUpgrade();
-                boolean doTrim = isUpgrade;
-                if (doTrim) {
-                    Slog.w(TAG, "Running disk maintenance immediately due to system update");
-                } else {
-                    final long interval = android.provider.Settings.Global.getLong(
-                            mContext.getContentResolver(),
-                            android.provider.Settings.Global.FSTRIM_MANDATORY_INTERVAL,
-                            DEFAULT_MANDATORY_FSTRIM_INTERVAL);
-                    if (interval > 0) {
-                        final long timeSinceLast = System.currentTimeMillis() - ms.lastMaintenance();
-                        if (timeSinceLast > interval) {
-                            doTrim = true;
-                            Slog.w(TAG, "No disk maintenance in " + timeSinceLast
-                                    + "; running immediately");
-                        }
+                boolean doTrim = false;
+                final long interval = android.provider.Settings.Global.getLong(
+                        mContext.getContentResolver(),
+                        android.provider.Settings.Global.FSTRIM_MANDATORY_INTERVAL,
+                        DEFAULT_MANDATORY_FSTRIM_INTERVAL);
+                if (interval > 0) {
+                    final long timeSinceLast = System.currentTimeMillis() - ms.lastMaintenance();
+                    if (timeSinceLast > interval) {
+                        doTrim = true;
+                        Slog.w(TAG, "No disk maintenance in " + timeSinceLast
+                                + "; running immediately");
                     }
                 }
                 if (doTrim) {
@@ -7329,7 +7123,7 @@
         }
 
         final long startTime = System.nanoTime();
-        final int[] stats = performDexOpt(pkgs, mIsPreNUpgrade /* showDialog */,
+        final int[] stats = performDexOptUpgrade(pkgs, mIsPreNUpgrade /* showDialog */,
                     getCompilerFilterForReason(causeFirstBoot ? REASON_FIRST_BOOT : REASON_BOOT));
 
         final int elapsedTimeSeconds =
@@ -7348,7 +7142,7 @@
      * which are (in order) {@code numberOfPackagesOptimized}, {@code numberOfPackagesSkipped}
      * and {@code numberOfPackagesFailed}.
      */
-    private int[] performDexOpt(List<PackageParser.Package> pkgs, boolean showDialog,
+    private int[] performDexOptUpgrade(List<PackageParser.Package> pkgs, boolean showDialog,
             String compilerFilter) {
 
         int numberOfPackagesVisited = 0;
@@ -7382,6 +7176,19 @@
                 }
             }
 
+            // If the OTA updates a system app which was previously preopted to a non-preopted state
+            // the app might end up being verified at runtime. That's because by default the apps
+            // are verify-profile but for preopted apps there's no profile.
+            // Do a hacky check to ensure that if we have no profiles (a reasonable indication
+            // that before the OTA the app was preopted) the app gets compiled with a non-profile
+            // filter (by default interpret-only).
+            // Note that at this stage unused apps are already filtered.
+            if (isSystemApp(pkg) &&
+                    DexFile.isProfileGuidedCompilerFilter(compilerFilter) &&
+                    !Environment.getReferenceProfile(pkg.packageName).exists()) {
+                compilerFilter = getNonProfileGuidedCompilerFilter(compilerFilter);
+            }
+
             // checkProfiles is false to avoid merging profiles during boot which
             // might interfere with background compilation (b/28612421).
             // Unfortunately this will also means that "pm.dexopt.boot=speed-profile" will
@@ -7468,7 +7275,8 @@
                 // Package could not be found. Report failure.
                 return PackageDexOptimizer.DEX_OPT_FAILED;
             }
-            mPackageUsage.write(false);
+            mPackageUsage.maybeWriteAsync(mPackages);
+            mCompilerStats.maybeWriteAsync();
         }
         long callingId = Binder.clearCallingIdentity();
         try {
@@ -7513,11 +7321,12 @@
                 // Currently this will do a full compilation of the library by default.
                 pdo.performDexOpt(depPackage, null /* sharedLibraries */, instructionSets,
                         false /* checkProfiles */,
-                        getCompilerFilterForReason(REASON_NON_SYSTEM_LIBRARY));
+                        getCompilerFilterForReason(REASON_NON_SYSTEM_LIBRARY),
+                        getOrCreateCompilerPackageStats(depPackage));
             }
         }
         return pdo.performDexOpt(p, p.usesLibraryFiles, instructionSets, checkProfiles,
-                targetCompilerFilter);
+                targetCompilerFilter, getOrCreateCompilerPackageStats(p));
     }
 
     Collection<PackageParser.Package> findSharedNonSystemLibraries(PackageParser.Package p) {
@@ -7571,7 +7380,8 @@
     }
 
     public void shutdown() {
-        mPackageUsage.write(true);
+        mPackageUsage.writeNow(mPackages);
+        mCompilerStats.writeNow();
     }
 
     @Override
@@ -11701,12 +11511,18 @@
                 if (pkgSetting == null) {
                     return false;
                 }
+                // Do not allow "android" is being disabled
+                if ("android".equals(packageName)) {
+                    Slog.w(TAG, "Cannot hide package: android");
+                    return false;
+                }
                 // Only allow protected packages to hide themselves.
                 if (hidden && !UserHandle.isSameApp(uid, pkgSetting.appId)
                         && mProtectedPackages.isPackageStateProtected(userId, packageName)) {
                     Slog.w(TAG, "Not hiding protected package: " + packageName);
                     return false;
                 }
+
                 if (pkgSetting.getHidden(userId) != hidden) {
                     pkgSetting.setHidden(hidden, userId);
                     mSettings.writePackageRestrictionsLPr(userId);
@@ -15217,7 +15033,8 @@
             // Also, don't fail application installs if the dexopt step fails.
             mPackageDexOptimizer.performDexOpt(pkg, pkg.usesLibraryFiles,
                     null /* instructionSets */, false /* checkProfiles */,
-                    getCompilerFilterForReason(REASON_INSTALL));
+                    getCompilerFilterForReason(REASON_INSTALL),
+                    getOrCreateCompilerPackageStats(pkg));
             Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
 
             // Notify BackgroundDexOptService that the package has been changed.
@@ -16877,9 +16694,28 @@
             filter.dump(new LogPrinter(Log.INFO, TAG), "  ");
             pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
             scheduleWritePackageRestrictionsLocked(userId);
+            postPreferredActivityChangedBroadcast(userId);
         }
     }
 
+    private void postPreferredActivityChangedBroadcast(int userId) {
+        mHandler.post(() -> {
+            final IActivityManager am = ActivityManagerNative.getDefault();
+            if (am == null) {
+                return;
+            }
+
+            final Intent intent = new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED);
+            intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
+            try {
+                am.broadcastIntent(null, intent, null, null,
+                        0, null, null, null, android.app.AppOpsManager.OP_NONE,
+                        null, false, false, userId);
+            } catch (RemoteException e) {
+            }
+        });
+    }
+
     @Override
     public void replacePreferredActivity(IntentFilter filter, int match,
             ComponentName[] set, ComponentName activity, int userId) {
@@ -17031,6 +16867,9 @@
                 changed = true;
             }
         }
+        if (changed) {
+            postPreferredActivityChangedBroadcast(userId);
+        }
         return changed;
     }
 
@@ -17144,6 +16983,7 @@
             mSettings.editPersistentPreferredActivitiesLPw(userId).addFilter(
                     new PersistentPreferredActivity(filter, activity));
             scheduleWritePackageRestrictionsLocked(userId);
+            postPreferredActivityChangedBroadcast(userId);
         }
     }
 
@@ -17186,6 +17026,7 @@
 
             if (changed) {
                 scheduleWritePackageRestrictionsLocked(userId);
+                postPreferredActivityChangedBroadcast(userId);
             }
         }
     }
@@ -18178,6 +18019,7 @@
         public static final int DUMP_DOMAIN_PREFERRED = 1 << 18;
         public static final int DUMP_FROZEN = 1 << 19;
         public static final int DUMP_DEXOPT = 1 << 20;
+        public static final int DUMP_COMPILER_STATS = 1 << 21;
 
         public static final int OPTION_SHOW_FILTERS = 1 << 0;
 
@@ -18295,6 +18137,7 @@
                 pw.println("    installs: details about install sessions");
                 pw.println("    check-permission <permission> <package> [<user>]: does pkg hold perm?");
                 pw.println("    dexopt: dump dexopt state");
+                pw.println("    compiler-stats: dump compiler statistics");
                 pw.println("    <package.name>: info about given package");
                 return;
             } else if ("--checkin".equals(opt)) {
@@ -18416,6 +18259,8 @@
                 dumpState.setDump(DumpState.DUMP_FROZEN);
             } else if ("dexopt".equals(cmd)) {
                 dumpState.setDump(DumpState.DUMP_DEXOPT);
+            } else if ("compiler-stats".equals(cmd)) {
+                dumpState.setDump(DumpState.DUMP_COMPILER_STATS);
             } else if ("write".equals(cmd)) {
                 synchronized (mPackages) {
                     mSettings.writeLPr();
@@ -18778,6 +18623,11 @@
                 dumpDexoptStateLPr(pw, packageName);
             }
 
+            if (!checkin && dumpState.isDumping(DumpState.DUMP_COMPILER_STATS)) {
+                if (dumpState.onTitlePrinted()) pw.println();
+                dumpCompilerStatsLPr(pw, packageName);
+            }
+
             if (!checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) {
                 if (dumpState.onTitlePrinted()) pw.println();
                 mSettings.dumpReadMessagesLPr(pw, dumpState);
@@ -18842,6 +18692,38 @@
         }
     }
 
+    private void dumpCompilerStatsLPr(PrintWriter pw, String packageName) {
+        final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
+        ipw.println();
+        ipw.println("Compiler stats:");
+        ipw.increaseIndent();
+        Collection<PackageParser.Package> packages = null;
+        if (packageName != null) {
+            PackageParser.Package targetPackage = mPackages.get(packageName);
+            if (targetPackage != null) {
+                packages = Collections.singletonList(targetPackage);
+            } else {
+                ipw.println("Unable to find package: " + packageName);
+                return;
+            }
+        } else {
+            packages = mPackages.values();
+        }
+
+        for (PackageParser.Package pkg : packages) {
+            ipw.println("[" + pkg.packageName + "]");
+            ipw.increaseIndent();
+
+            CompilerStats.PackageStats stats = getCompilerPackageStats(pkg.packageName);
+            if (stats == null) {
+                ipw.println("(No recorded stats)");
+            } else {
+                stats.dump(ipw);
+            }
+            ipw.decreaseIndent();
+        }
+    }
+
     private String dumpDomainString(String packageName) {
         List<IntentFilterVerificationInfo> iviList = getIntentFilterVerifications(packageName)
                 .getList();
@@ -19326,7 +19208,7 @@
             try {
                 sm.prepareUserStorage(volumeUuid, user.id, user.serialNumber, flags);
                 synchronized (mInstallLock) {
-                    reconcileAppsDataLI(volumeUuid, user.id, flags);
+                    reconcileAppsDataLI(volumeUuid, user.id, flags, true /* migrateAppData */);
                 }
             } catch (IllegalStateException e) {
                 // Device was probably ejected, and we'll process that event momentarily
@@ -19629,12 +19511,12 @@
      * Verifies that directories exist and that ownership and labeling is
      * correct for all installed apps on all mounted volumes.
      */
-    void reconcileAppsData(int userId, int flags) {
+    void reconcileAppsData(int userId, int flags, boolean migrateAppsData) {
         final StorageManager storage = mContext.getSystemService(StorageManager.class);
         for (VolumeInfo vol : storage.getWritablePrivateVolumes()) {
             final String volumeUuid = vol.getFsUuid();
             synchronized (mInstallLock) {
-                reconcileAppsDataLI(volumeUuid, userId, flags);
+                reconcileAppsDataLI(volumeUuid, userId, flags, migrateAppsData);
             }
         }
     }
@@ -19648,9 +19530,10 @@
      * Verifies that directories exist and that ownership and labeling is
      * correct for all installed apps.
      */
-    private void reconcileAppsDataLI(String volumeUuid, int userId, int flags) {
+    private void reconcileAppsDataLI(String volumeUuid, int userId, int flags,
+            boolean migrateAppData) {
         Slog.v(TAG, "reconcileAppsData for " + volumeUuid + " u" + userId + " 0x"
-                + Integer.toHexString(flags));
+                + Integer.toHexString(flags) + " migrateAppData=" + migrateAppData);
 
         final File ceDir = Environment.getDataUserCeDirectory(volumeUuid, userId);
         final File deDir = Environment.getDataUserDeDirectory(volumeUuid, userId);
@@ -19724,7 +19607,7 @@
             if (ps.getInstalled(userId)) {
                 prepareAppDataLIF(ps.pkg, userId, flags, restoreconNeeded);
 
-                if (maybeMigrateAppDataLIF(ps.pkg, userId)) {
+                if (migrateAppData && maybeMigrateAppDataLIF(ps.pkg, userId)) {
                     // We may have just shuffled around app data directories, so
                     // prepare them one more time
                     prepareAppDataLIF(ps.pkg, userId, flags, restoreconNeeded);
@@ -20440,12 +20323,7 @@
         }
     }
 
-    void onBeforeUserStartUninitialized(final int userId) {
-        synchronized (mPackages) {
-            if (mSettings.areDefaultRuntimePermissionsGrantedLPr(userId)) {
-                return;
-            }
-        }
+    void onNewUserCreated(final int userId) {
         mDefaultPermissionPolicy.grantDefaultPermissions(userId);
         // If permission review for legacy apps is required, we represent
         // dagerous permissions for such apps as always granted runtime
@@ -21008,4 +20886,20 @@
         msg.setData(data);
         mProcessLoggingHandler.sendMessage(msg);
     }
+
+    public CompilerStats.PackageStats getCompilerPackageStats(String pkgName) {
+        return mCompilerStats.getPackageStats(pkgName);
+    }
+
+    public CompilerStats.PackageStats getOrCreateCompilerPackageStats(PackageParser.Package pkg) {
+        return getOrCreateCompilerPackageStats(pkg.packageName);
+    }
+
+    public CompilerStats.PackageStats getOrCreateCompilerPackageStats(String pkgName) {
+        return mCompilerStats.getOrCreatePackageStats(pkgName);
+    }
+
+    public void deleteCompilerPackageStats(String pkgName) {
+        mCompilerStats.deletePackageStats(pkgName);
+    }
 }
diff --git a/services/core/java/com/android/server/pm/PackageUsage.java b/services/core/java/com/android/server/pm/PackageUsage.java
new file mode 100644
index 0000000..ac1f739
--- /dev/null
+++ b/services/core/java/com/android/server/pm/PackageUsage.java
@@ -0,0 +1,199 @@
+/*
+ * 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.server.pm;
+
+import static android.os.Process.PACKAGE_INFO_GID;
+import static android.os.Process.SYSTEM_UID;
+
+import android.content.pm.PackageManager;
+import android.content.pm.PackageParser;
+import android.os.FileUtils;
+import android.util.AtomicFile;
+import android.util.Log;
+
+import libcore.io.IoUtils;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+class PackageUsage extends AbstractStatsBase<Map<String, PackageParser.Package>> {
+
+    private static final String USAGE_FILE_MAGIC = "PACKAGE_USAGE__VERSION_";
+    private static final String USAGE_FILE_MAGIC_VERSION_1 = USAGE_FILE_MAGIC + "1";
+
+    private boolean mIsHistoricalPackageUsageAvailable = true;
+
+    PackageUsage() {
+        super("package-usage.list", "PackageUsage_DiskWriter", /* lock */ true);
+    }
+
+    boolean isHistoricalPackageUsageAvailable() {
+        return mIsHistoricalPackageUsageAvailable;
+    }
+
+    @Override
+    protected void writeInternal(Map<String, PackageParser.Package> packages) {
+        AtomicFile file = getFile();
+        FileOutputStream f = null;
+        try {
+            f = file.startWrite();
+            BufferedOutputStream out = new BufferedOutputStream(f);
+            FileUtils.setPermissions(file.getBaseFile().getPath(),
+                    0640, SYSTEM_UID, PACKAGE_INFO_GID);
+            StringBuilder sb = new StringBuilder();
+
+            sb.append(USAGE_FILE_MAGIC_VERSION_1);
+            sb.append('\n');
+            out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
+
+            for (PackageParser.Package pkg : packages.values()) {
+                if (pkg.getLatestPackageUseTimeInMills() == 0L) {
+                    continue;
+                }
+                sb.setLength(0);
+                sb.append(pkg.packageName);
+                for (long usageTimeInMillis : pkg.mLastPackageUsageTimeInMills) {
+                    sb.append(' ');
+                    sb.append(usageTimeInMillis);
+                }
+                sb.append('\n');
+                out.write(sb.toString().getBytes(StandardCharsets.US_ASCII));
+            }
+            out.flush();
+            file.finishWrite(f);
+        } catch (IOException e) {
+            if (f != null) {
+                file.failWrite(f);
+            }
+            Log.e(PackageManagerService.TAG, "Failed to write package usage times", e);
+        }
+    }
+
+    @Override
+    protected void readInternal(Map<String, PackageParser.Package> packages) {
+        AtomicFile file = getFile();
+        BufferedInputStream in = null;
+        try {
+            in = new BufferedInputStream(file.openRead());
+            StringBuffer sb = new StringBuffer();
+
+            String firstLine = readLine(in, sb);
+            if (firstLine == null) {
+                // Empty file. Do nothing.
+            } else if (USAGE_FILE_MAGIC_VERSION_1.equals(firstLine)) {
+                readVersion1LP(packages, in, sb);
+            } else {
+                readVersion0LP(packages, in, sb, firstLine);
+            }
+        } catch (FileNotFoundException expected) {
+            mIsHistoricalPackageUsageAvailable = false;
+        } catch (IOException e) {
+            Log.w(PackageManagerService.TAG, "Failed to read package usage times", e);
+        } finally {
+            IoUtils.closeQuietly(in);
+        }
+    }
+
+    private void readVersion0LP(Map<String, PackageParser.Package> packages, InputStream in,
+            StringBuffer sb, String firstLine)
+            throws IOException {
+        // Initial version of the file had no version number and stored one
+        // package-timestamp pair per line.
+        // Note that the first line has already been read from the InputStream.
+        for (String line = firstLine; line != null; line = readLine(in, sb)) {
+            String[] tokens = line.split(" ");
+            if (tokens.length != 2) {
+                throw new IOException("Failed to parse " + line +
+                        " as package-timestamp pair.");
+            }
+
+            String packageName = tokens[0];
+            PackageParser.Package pkg = packages.get(packageName);
+            if (pkg == null) {
+                continue;
+            }
+
+            long timestamp = parseAsLong(tokens[1]);
+            for (int reason = 0;
+                    reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
+                    reason++) {
+                pkg.mLastPackageUsageTimeInMills[reason] = timestamp;
+            }
+        }
+    }
+
+    private void readVersion1LP(Map<String, PackageParser.Package> packages, InputStream in,
+            StringBuffer sb) throws IOException {
+        // Version 1 of the file started with the corresponding version
+        // number and then stored a package name and eight timestamps per line.
+        String line;
+        while ((line = readLine(in, sb)) != null) {
+            String[] tokens = line.split(" ");
+            if (tokens.length != PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT + 1) {
+                throw new IOException("Failed to parse " + line + " as a timestamp array.");
+            }
+
+            String packageName = tokens[0];
+            PackageParser.Package pkg = packages.get(packageName);
+            if (pkg == null) {
+                continue;
+            }
+
+            for (int reason = 0;
+                    reason < PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT;
+                    reason++) {
+                pkg.mLastPackageUsageTimeInMills[reason] = parseAsLong(tokens[reason + 1]);
+            }
+        }
+    }
+
+    private long parseAsLong(String token) throws IOException {
+        try {
+            return Long.parseLong(token);
+        } catch (NumberFormatException e) {
+            throw new IOException("Failed to parse " + token + " as a long.", e);
+        }
+    }
+
+    private String readLine(InputStream in, StringBuffer sb) throws IOException {
+        return readToken(in, sb, '\n');
+    }
+
+    private String readToken(InputStream in, StringBuffer sb, char endOfToken)
+            throws IOException {
+        sb.setLength(0);
+        while (true) {
+            int ch = in.read();
+            if (ch == -1) {
+                if (sb.length() == 0) {
+                    return null;
+                }
+                throw new IOException("Unexpected EOF");
+            }
+            if (ch == endOfToken) {
+                return sb.toString();
+            }
+            sb.append((char)ch);
+        }
+    }
+}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/pm/ShortcutLauncher.java b/services/core/java/com/android/server/pm/ShortcutLauncher.java
index e667838..df51923 100644
--- a/services/core/java/com/android/server/pm/ShortcutLauncher.java
+++ b/services/core/java/com/android/server/pm/ShortcutLauncher.java
@@ -25,6 +25,8 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.pm.ShortcutUser.PackageWithUser;
 
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
@@ -288,6 +290,15 @@
         }
     }
 
+    @Override
+    public JSONObject dumpCheckin(boolean clear) throws JSONException {
+        final JSONObject result = super.dumpCheckin(clear);
+
+        // Nothing really interesting to dump.
+
+        return result;
+    }
+
     @VisibleForTesting
     ArraySet<String> getAllPinnedShortcutsForTest(String packageName, int packageUserId) {
         return new ArraySet<>(mPinnedShortcuts.get(PackageWithUser.of(packageUserId, packageName)));
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index 1a4e4e0..51c9619 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -23,6 +23,7 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.ShortcutInfo;
 import android.content.res.Resources;
+import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.text.format.Formatter;
 import android.util.ArrayMap;
@@ -34,7 +35,10 @@
 import com.android.internal.util.Preconditions;
 import com.android.internal.util.XmlUtils;
 import com.android.server.pm.ShortcutService.ShortcutOperation;
+import com.android.server.pm.ShortcutService.Stats;
 
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
@@ -60,7 +64,8 @@
     private static final String TAG_VERIFY = ShortcutService.TAG + ".verify";
 
     static final String TAG_ROOT = "package";
-    private static final String TAG_INTENT_EXTRAS = "intent-extras";
+    private static final String TAG_INTENT_EXTRAS_LEGACY = "intent-extras";
+    private static final String TAG_INTENT = "intent";
     private static final String TAG_EXTRAS = "extras";
     private static final String TAG_SHORTCUT = "shortcut";
     private static final String TAG_CATEGORIES = "categories";
@@ -79,7 +84,8 @@
     private static final String ATTR_DISABLED_MESSAGE = "dmessage";
     private static final String ATTR_DISABLED_MESSAGE_RES_ID = "dmessageid";
     private static final String ATTR_DISABLED_MESSAGE_RES_NAME = "dmessagename";
-    private static final String ATTR_INTENT = "intent";
+    private static final String ATTR_INTENT_LEGACY = "intent";
+    private static final String ATTR_INTENT_NO_EXTRA = "intent-base";
     private static final String ATTR_RANK = "rank";
     private static final String ATTR_TIMESTAMP = "timestamp";
     private static final String ATTR_FLAGS = "flags";
@@ -92,6 +98,12 @@
     private static final String TAG_STRING_ARRAY_XMLUTILS = "string-array";
     private static final String ATTR_NAME_XMLUTILS = "name";
 
+    private static final String KEY_DYNAMIC = "dynamic";
+    private static final String KEY_MANIFEST = "manifest";
+    private static final String KEY_PINNED = "pinned";
+    private static final String KEY_BITMAPS = "bitmaps";
+    private static final String KEY_BITMAP_BYTES = "bitmapBytes";
+
     /**
      * All the shortcuts from the package, keyed on IDs.
      */
@@ -437,8 +449,6 @@
      * locale changes.
      */
     public int getApiCallCount() {
-        mShortcutUser.resetThrottlingIfNeeded();
-
         final ShortcutService s = mShortcutUser.mService;
 
         // Reset the counter if:
@@ -598,7 +608,37 @@
     }
 
     /**
-     * Called when the package is updated or added.
+     * @return false if any of the target activities are no longer enabled.
+     */
+    private boolean areAllActivitiesStillEnabled() {
+        if (mShortcuts.size() == 0) {
+            return true;
+        }
+        final ShortcutService s = mShortcutUser.mService;
+
+        // Normally the number of target activities is 1 or so, so no need to use a complex
+        // structure like a set.
+        final ArrayList<ComponentName> checked = new ArrayList<>(4);
+
+        for (int i = mShortcuts.size() - 1; i >= 0; i--) {
+            final ShortcutInfo si = mShortcuts.valueAt(i);
+            final ComponentName activity = si.getActivity();
+
+            if (checked.contains(activity)) {
+                continue; // Already checked.
+            }
+            checked.add(activity);
+
+            if (!s.injectIsActivityEnabledAndExported(activity, getOwnerUserId())) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Called when the package may be added or updated, or its activities may be disabled, and
+     * if so, rescan the package and do the necessary stuff.
      *
      * Add case:
      * - Publish manifest shortcuts.
@@ -606,23 +646,35 @@
      * Update case:
      * - Re-publish manifest shortcuts.
      * - If there are shortcuts with resources (icons or strings), update their timestamps.
+     * - Disable shortcuts whose target activities are disabled.
      *
      * @return TRUE if any shortcuts have been changed.
      */
-    public boolean handlePackageAddedOrUpdated(boolean isNewApp, boolean forceRescan) {
-        final PackageInfo pi = mShortcutUser.mService.getPackageInfo(
-                getPackageName(), getPackageUserId());
-        if (pi == null) {
-            return false; // Shouldn't happen.
-        }
+    public boolean rescanPackageIfNeeded(boolean isNewApp, boolean forceRescan) {
+        final ShortcutService s = mShortcutUser.mService;
+        final long start = s.injectElapsedRealtime();
 
-        if (!isNewApp && !forceRescan) {
-            // Make sure the version code or last update time has changed.
-            // Otherwise, nothing to do.
-            if (getPackageInfo().getVersionCode() >= pi.versionCode
-                    && getPackageInfo().getLastUpdateTime() >= pi.lastUpdateTime) {
-                return false;
+        final PackageInfo pi;
+        try {
+            pi = mShortcutUser.mService.getPackageInfo(
+                    getPackageName(), getPackageUserId());
+            if (pi == null) {
+                return false; // Shouldn't happen.
             }
+
+            if (!isNewApp && !forceRescan) {
+                // Return if the package hasn't changed, ie:
+                // - version code hasn't change
+                // - lastUpdateTime hasn't change
+                // - all target activities are still enabled.
+                if ((getPackageInfo().getVersionCode() >= pi.versionCode)
+                        && (getPackageInfo().getLastUpdateTime() >= pi.lastUpdateTime)
+                        && areAllActivitiesStillEnabled()) {
+                    return false;
+                }
+            }
+        } finally {
+            s.logDurationStat(Stats.PACKAGE_UPDATE_CHECK, start);
         }
 
         // Now prepare to publish manifest shortcuts.
@@ -654,8 +706,6 @@
 
         getPackageInfo().updateVersionInfo(pi);
 
-        final ShortcutService s = mShortcutUser.mService;
-
         boolean changed = false;
 
         // For existing shortcuts, update timestamps if they have any resources.
@@ -1001,7 +1051,7 @@
             }
         }
         if (changed) {
-            s.scheduleSaveUser(getPackageUserId());
+            s.packageShortcutsChanged(getPackageName(), getPackageUserId());
         }
     }
 
@@ -1160,6 +1210,42 @@
     }
 
     @Override
+    public JSONObject dumpCheckin(boolean clear) throws JSONException {
+        final JSONObject result = super.dumpCheckin(clear);
+
+        int numDynamic = 0;
+        int numPinned = 0;
+        int numManifest = 0;
+        int numBitmaps = 0;
+        long totalBitmapSize = 0;
+
+        final ArrayMap<String, ShortcutInfo> shortcuts = mShortcuts;
+        final int size = shortcuts.size();
+        for (int i = 0; i < size; i++) {
+            final ShortcutInfo si = shortcuts.valueAt(i);
+
+            if (si.isDynamic()) numDynamic++;
+            if (si.isDeclaredInManifest()) numManifest++;
+            if (si.isPinned()) numPinned++;
+
+            if (si.getBitmapPath() != null) {
+                numBitmaps++;
+                totalBitmapSize += new File(si.getBitmapPath()).length();
+            }
+        }
+
+        result.put(KEY_DYNAMIC, numDynamic);
+        result.put(KEY_MANIFEST, numManifest);
+        result.put(KEY_PINNED, numPinned);
+        result.put(KEY_BITMAPS, numBitmaps);
+        result.put(KEY_BITMAP_BYTES, totalBitmapSize);
+
+        // TODO Log update frequency too.
+
+        return result;
+    }
+
+    @Override
     public void saveToXml(@NonNull XmlSerializer out, boolean forBackup)
             throws IOException, XmlPullParserException {
         final int size = mShortcuts.size();
@@ -1185,8 +1271,8 @@
     private static void saveShortcut(XmlSerializer out, ShortcutInfo si, boolean forBackup)
             throws IOException, XmlPullParserException {
         if (forBackup) {
-            if (!si.isPinned()) {
-                return; // Backup only pinned icons.
+            if (!(si.isPinned() && si.isEnabled())) {
+                return; // We only backup pinned shortcuts that are enabled.
             }
         }
         out.startTag(null, TAG_SHORTCUT);
@@ -1205,7 +1291,6 @@
                 si.getDisabledMessageResourceId());
         ShortcutService.writeAttr(out, ATTR_DISABLED_MESSAGE_RES_NAME,
                 si.getDisabledMessageResName());
-        ShortcutService.writeAttr(out, ATTR_INTENT, si.getIntentNoExtras());
         ShortcutService.writeAttr(out, ATTR_TIMESTAMP,
                 si.getLastChangedTimestamp());
         if (forBackup) {
@@ -1234,9 +1319,16 @@
                 out.endTag(null, TAG_CATEGORIES);
             }
         }
+        final Intent[] intentsNoExtras = si.getIntentsNoExtras();
+        final PersistableBundle[] intentsExtras = si.getIntentPersistableExtrases();
+        final int numIntents = intentsNoExtras.length;
+        for (int i = 0; i < numIntents; i++) {
+            out.startTag(null, TAG_INTENT);
+            ShortcutService.writeAttr(out, ATTR_INTENT_NO_EXTRA, intentsNoExtras[i]);
+            ShortcutService.writeTagExtra(out, TAG_EXTRAS, intentsExtras[i]);
+            out.endTag(null, TAG_INTENT);
+        }
 
-        ShortcutService.writeTagExtra(out, TAG_INTENT_EXTRAS,
-                si.getIntentPersistableExtras());
         ShortcutService.writeTagExtra(out, TAG_EXTRAS, si.getExtras());
 
         out.endTag(null, TAG_SHORTCUT);
@@ -1299,8 +1391,9 @@
         String disabledMessage;
         int disabledMessageResId;
         String disabledMessageResName;
-        Intent intent;
-        PersistableBundle intentPersistableExtras = null;
+        Intent intentLegacy;
+        PersistableBundle intentPersistableExtrasLegacy = null;
+        ArrayList<Intent> intents = new ArrayList<>();
         int rank;
         PersistableBundle extras = null;
         long lastChangedTimestamp;
@@ -1324,7 +1417,7 @@
                 ATTR_DISABLED_MESSAGE_RES_ID);
         disabledMessageResName = ShortcutService.parseStringAttribute(parser,
                 ATTR_DISABLED_MESSAGE_RES_NAME);
-        intent = ShortcutService.parseIntentAttribute(parser, ATTR_INTENT);
+        intentLegacy = ShortcutService.parseIntentAttributeNoDefault(parser, ATTR_INTENT_LEGACY);
         rank = (int) ShortcutService.parseLongAttribute(parser, ATTR_RANK);
         lastChangedTimestamp = ShortcutService.parseLongAttribute(parser, ATTR_TIMESTAMP);
         flags = (int) ShortcutService.parseLongAttribute(parser, ATTR_FLAGS);
@@ -1346,8 +1439,11 @@
                         depth, type, tag));
             }
             switch (tag) {
-                case TAG_INTENT_EXTRAS:
-                    intentPersistableExtras = PersistableBundle.restoreFromXml(parser);
+                case TAG_INTENT_EXTRAS_LEGACY:
+                    intentPersistableExtrasLegacy = PersistableBundle.restoreFromXml(parser);
+                    continue;
+                case TAG_INTENT:
+                    intents.add(parseIntent(parser));
                     continue;
                 case TAG_EXTRAS:
                     extras = PersistableBundle.restoreFromXml(parser);
@@ -1370,15 +1466,53 @@
             throw ShortcutService.throwForInvalidTag(depth, tag);
         }
 
+        if (intentLegacy != null) {
+            // For the legacy file format which supported only one intent per shortcut.
+            ShortcutInfo.setIntentExtras(intentLegacy, intentPersistableExtrasLegacy);
+            intents.clear();
+            intents.add(intentLegacy);
+        }
+
         return new ShortcutInfo(
                 userId, id, packageName, activityComponent, /* icon =*/ null,
                 title, titleResId, titleResName, text, textResId, textResName,
                 disabledMessage, disabledMessageResId, disabledMessageResName,
-                categories, intent,
-                intentPersistableExtras, rank, extras, lastChangedTimestamp, flags,
+                categories,
+                intents.toArray(new Intent[intents.size()]),
+                rank, extras, lastChangedTimestamp, flags,
                 iconResId, iconResName, bitmapPath);
     }
 
+    private static Intent parseIntent(XmlPullParser parser)
+            throws IOException, XmlPullParserException {
+
+        Intent intent = ShortcutService.parseIntentAttribute(parser,
+                ATTR_INTENT_NO_EXTRA);
+
+        final int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            if (type != XmlPullParser.START_TAG) {
+                continue;
+            }
+            final int depth = parser.getDepth();
+            final String tag = parser.getName();
+            if (ShortcutService.DEBUG_LOAD) {
+                Slog.d(TAG, String.format("  depth=%d type=%d name=%s",
+                        depth, type, tag));
+            }
+            switch (tag) {
+                case TAG_EXTRAS:
+                    ShortcutInfo.setIntentExtras(intent,
+                            PersistableBundle.restoreFromXml(parser));
+                    continue;
+            }
+            throw ShortcutService.throwForInvalidTag(depth, tag);
+        }
+        return intent;
+    }
+
     @VisibleForTesting
     List<ShortcutInfo> getAllShortcutsForTest() {
         return new ArrayList<>(mShortcuts.values());
diff --git a/services/core/java/com/android/server/pm/ShortcutPackageInfo.java b/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
index 7f5d931..e7b66fc 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
@@ -171,7 +171,7 @@
 
         final int versionCode = ShortcutService.parseIntAttribute(parser, ATTR_VERSION);
 
-        final long lastUpdateTime = ShortcutService.parseIntAttribute(
+        final long lastUpdateTime = ShortcutService.parseLongAttribute(
                 parser, ATTR_LAST_UPDATE_TIME);
 
         // When restoring from backup, it's always shadow.
diff --git a/services/core/java/com/android/server/pm/ShortcutPackageItem.java b/services/core/java/com/android/server/pm/ShortcutPackageItem.java
index 757dd19..79b5c4e 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackageItem.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackageItem.java
@@ -21,6 +21,8 @@
 
 import com.android.internal.util.Preconditions;
 
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
 
@@ -31,6 +33,7 @@
  */
 abstract class ShortcutPackageItem {
     private static final String TAG = ShortcutService.TAG;
+    private static final String KEY_NAME = "name";
 
     private final int mPackageUserId;
     private final String mPackageName;
@@ -48,6 +51,10 @@
         mPackageInfo = Preconditions.checkNotNull(packageInfo);
     }
 
+    public ShortcutUser getUser() {
+        return mShortcutUser;
+    }
+
     /**
      * ID of the user who actually has this package running on.  For {@link ShortcutPackage},
      * this is the same thing as {@link #getOwnerUserId}, but if it's a {@link ShortcutLauncher} and
@@ -133,6 +140,12 @@
     public abstract void saveToXml(@NonNull XmlSerializer out, boolean forBackup)
             throws IOException, XmlPullParserException;
 
+    public JSONObject dumpCheckin(boolean clear) throws JSONException {
+        final JSONObject result = new JSONObject();
+        result.put(KEY_NAME, mPackageName);
+        return result;
+    }
+
     /**
      * Verify various internal states.
      */
diff --git a/services/core/java/com/android/server/pm/ShortcutParser.java b/services/core/java/com/android/server/pm/ShortcutParser.java
index 0762c0b..2a2a4b2 100644
--- a/services/core/java/com/android/server/pm/ShortcutParser.java
+++ b/services/core/java/com/android/server/pm/ShortcutParser.java
@@ -29,6 +29,7 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.Slog;
+import android.util.TypedValue;
 import android.util.Xml;
 
 import com.android.internal.R;
@@ -126,6 +127,7 @@
             ShortcutInfo currentShortcut = null;
 
             Set<String> categories = null;
+            final ArrayList<Intent> intents = new ArrayList<>();
 
             outer:
             while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
@@ -142,9 +144,15 @@
                     final ShortcutInfo si = currentShortcut;
                     currentShortcut = null; // Make sure to null out for the next iteration.
 
-                    if (si.getIntent() == null) {
-                        Log.e(TAG, "Shortcut " + si.getId() + " has no intent. Skipping it.");
-                        continue;
+                    if (si.isEnabled()) {
+                        if (intents.size() == 0) {
+                            Log.e(TAG, "Shortcut " + si.getId() + " has no intent. Skipping it.");
+                            continue;
+                        }
+                    } else {
+                        // Just set the default intent to disabled shortcuts.
+                        intents.clear();
+                        intents.add(new Intent(Intent.ACTION_VIEW));
                     }
 
                     if (numShortcuts >= maxShortcuts) {
@@ -152,6 +160,23 @@
                                 + activityInfo.getComponentName() + ". Skipping the rest.");
                         return result;
                     }
+
+                    // Same flag as what TaskStackBuilder adds.
+                    intents.get(0).addFlags(
+                            Intent.FLAG_ACTIVITY_NEW_TASK |
+                            Intent.FLAG_ACTIVITY_CLEAR_TASK |
+                            Intent.FLAG_ACTIVITY_TASK_ON_HOME);
+                    try {
+                        si.setIntents(intents.toArray(new Intent[intents.size()]));
+                    } catch (RuntimeException e) {
+                        // This shouldn't happen because intents in XML can't have complicated
+                        // extras, but just in case Intent.parseIntent() supports such a thing one
+                        // day.
+                        Log.e(TAG, "Shortcut's extras contain un-persistable values. Skipping it.");
+                        continue;
+                    }
+                    intents.clear();
+
                     if (categories != null) {
                         si.setCategories(categories);
                         categories = null;
@@ -195,17 +220,12 @@
                             }
                         }
                     }
-                    if (!si.isEnabled()) {
-                        // Just set the default intent to disabled shortcuts.
-                        si.setIntent(new Intent(Intent.ACTION_VIEW));
-                    }
                     currentShortcut = si;
                     categories = null;
                     continue;
                 }
                 if (depth == 3 && TAG_INTENT.equals(tag)) {
                     if ((currentShortcut == null)
-                            || (currentShortcut.getIntentNoExtras() != null)
                             || !currentShortcut.isEnabled()) {
                         Log.e(TAG, "Ignoring excessive intent tag.");
                         continue;
@@ -215,17 +235,10 @@
                             parser, attrs);
                     if (TextUtils.isEmpty(intent.getAction())) {
                         Log.e(TAG, "Shortcut intent action must be provided. activity=" + activity);
+                        currentShortcut = null; // Invalidate the current shortcut.
                         continue;
                     }
-                    try {
-                        currentShortcut.setIntent(intent);
-                    } catch (RuntimeException e) {
-                        // This shouldn't happen because intents in XML can't have complicated
-                        // extras, but just in case Intent.parseIntent() supports such a thing one
-                        // day.
-                        Log.e(TAG, "Shortcut's extras contain un-persistable values. Skipping it.");
-                        continue;
-                    }
+                    intents.add(intent);
                     continue;
                 }
                 if (depth == 3 && TAG_CATEGORIES.equals(tag)) {
@@ -260,7 +273,12 @@
         final TypedArray sa = service.mContext.getResources().obtainAttributes(attrs,
                 R.styleable.ShortcutCategories);
         try {
-            return sa.getString(R.styleable.ShortcutCategories_name);
+            if (sa.getType(R.styleable.ShortcutCategories_name) == TypedValue.TYPE_STRING) {
+                return sa.getNonResourceString(R.styleable.ShortcutCategories_name);
+            } else {
+                Log.w(TAG, "android:name for shortcut category must be string literal.");
+                return null;
+            }
         } finally {
             sa.recycle();
         }
@@ -272,7 +290,11 @@
         final TypedArray sa = service.mContext.getResources().obtainAttributes(attrs,
                 R.styleable.Shortcut);
         try {
-            final String id = sa.getString(R.styleable.Shortcut_shortcutId);
+            if (sa.getType(R.styleable.Shortcut_shortcutId) != TypedValue.TYPE_STRING) {
+                Log.w(TAG, "android:shortcutId must be string literal. activity=" + activity);
+                return null;
+            }
+            final String id = sa.getNonResourceString(R.styleable.Shortcut_shortcutId);
             final boolean enabled = sa.getBoolean(R.styleable.Shortcut_enabled, true);
             final int iconResId = sa.getResourceId(R.styleable.Shortcut_icon, 0);
             final int titleResId = sa.getResourceId(R.styleable.Shortcut_shortcutShortLabel, 0);
@@ -281,11 +303,11 @@
                     R.styleable.Shortcut_shortcutDisabledMessage, 0);
 
             if (TextUtils.isEmpty(id)) {
-                Slog.w(TAG, "Shortcut ID must be provided. activity=" + activity);
+                Log.w(TAG, "android:shortcutId must be provided. activity=" + activity);
                 return null;
             }
             if (titleResId == 0) {
-                Slog.w(TAG, "Shortcut title must be provided. activity=" + activity);
+                Log.w(TAG, "android:shortcutShortLabel must be provided. activity=" + activity);
                 return null;
             }
 
@@ -335,7 +357,6 @@
                 null, // disabled message res name
                 null, // categories
                 null, // intent
-                null, // intent extras
                 rank,
                 null, // extras
                 service.injectCurrentTimeMillis(),
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index c6949e4..e6a9739 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -24,9 +24,11 @@
 import android.app.AppGlobals;
 import android.app.IUidObserver;
 import android.app.usage.UsageStatsManagerInternal;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
@@ -49,10 +51,12 @@
 import android.graphics.Canvas;
 import android.graphics.RectF;
 import android.graphics.drawable.Icon;
+import android.net.Uri;
 import android.os.Binder;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.Handler;
+import android.os.LocaleList;
 import android.os.Looper;
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
@@ -91,6 +95,9 @@
 
 import libcore.io.IoUtils;
 
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
@@ -116,15 +123,11 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 
 /**
  * TODO:
- * - Deal with the async nature of PACKAGE_ADD.  Basically when a publisher does anything after
- *   it's upgraded, the manager should make sure the upgrade process has been executed.
- *
  * - getIconMaxWidth()/getIconMaxHeight() should use xdpi and ydpi.
  *   -> But TypedValue.applyDimension() doesn't differentiate x and y..?
  *
@@ -179,12 +182,15 @@
 
     private static final String TAG_ROOT = "root";
     private static final String TAG_LAST_RESET_TIME = "last_reset_time";
-    private static final String TAG_LOCALE_CHANGE_SEQUENCE_NUMBER = "locale_seq_no";
 
     private static final String ATTR_VALUE = "value";
 
     private static final String LAUNCHER_INTENT_CATEGORY = Intent.CATEGORY_LAUNCHER;
 
+    private static final String KEY_SHORTCUT = "shortcut";
+    private static final String KEY_LOW_RAM = "lowRam";
+    private static final String KEY_ICON_SIZE = "iconSize";
+
     @VisibleForTesting
     interface ConfigConstants {
         /**
@@ -292,16 +298,6 @@
     @GuardedBy("mLock")
     private List<Integer> mDirtyUserIds = new ArrayList<>();
 
-    /**
-     * A counter that increments every time the system locale changes.  We keep track of it to
-     * reset
-     * throttling counters on the first call from each package after the last locale change.
-     *
-     * We need this mechanism because we can't do much in the locale change callback, which is
-     * {@link ShortcutServiceInternal#onSystemLocaleChangedNoLock()}.
-     */
-    private final AtomicLong mLocaleChangeSequenceNumber = new AtomicLong();
-
     private final AtomicBoolean mBootCompleted = new AtomicBoolean();
 
     private static final int PACKAGE_MATCH_FLAGS =
@@ -326,8 +322,9 @@
         int GET_LAUNCHER_ACTIVITY = 11;
         int CHECK_LAUNCHER_ACTIVITY = 12;
         int IS_ACTIVITY_ENABLED = 13;
+        int PACKAGE_UPDATE_CHECK = 14;
 
-        int COUNT = IS_ACTIVITY_ENABLED + 1;
+        int COUNT = PACKAGE_UPDATE_CHECK + 1;
     }
 
     final Object mStatLock = new Object();
@@ -355,6 +352,12 @@
     @interface ShortcutOperation {
     }
 
+    @GuardedBy("mLock")
+    private int mWtfCount = 0;
+
+    @GuardedBy("mLock")
+    private Exception mLastWtfStacktrace;
+
     public ShortcutService(Context context) {
         this(context, BackgroundThread.get().getLooper(), /*onyForPackgeManagerApis*/ false);
     }
@@ -375,7 +378,31 @@
             return; // Don't do anything further.  For unit tests only.
         }
 
-        mPackageMonitor.register(context, looper, UserHandle.ALL, /* externalStorage= */ false);
+        // Register receivers.
+
+        // We need to set a priority, so let's just not use PackageMonitor for now.
+        // TODO Refactor PackageMonitor to support priorities.
+        final IntentFilter packageFilter = new IntentFilter();
+        packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
+        packageFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+        packageFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+        packageFilter.addAction(Intent.ACTION_PACKAGE_DATA_CLEARED);
+        packageFilter.addDataScheme("package");
+        packageFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+        mContext.registerReceiverAsUser(mPackageMonitor, UserHandle.ALL,
+                packageFilter, null, mHandler);
+
+        final IntentFilter preferedActivityFilter = new IntentFilter();
+        preferedActivityFilter.addAction(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED);
+        preferedActivityFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+        mContext.registerReceiverAsUser(mPackageMonitor, UserHandle.ALL,
+                preferedActivityFilter, null, mHandler);
+
+        final IntentFilter localeFilter = new IntentFilter();
+        localeFilter.addAction(Intent.ACTION_LOCALE_CHANGED);
+        localeFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+        mContext.registerReceiverAsUser(mReceiver, UserHandle.ALL,
+                localeFilter, null, mHandler);
 
         injectRegisterUidObserver(mUidObserver, ActivityManager.UID_OBSERVER_PROCSTATE
                 | ActivityManager.UID_OBSERVER_GONE);
@@ -388,8 +415,9 @@
         }
     }
 
-    public long getLocaleChangeSequenceNumber() {
-        return mLocaleChangeSequenceNumber.get();
+    public String injectGetLocaleTagsForUser(@UserIdInt int userId) {
+        // TODO This should get the per-user locale.  b/30123329 b/30119489
+        return LocaleList.getDefault().toLanguageTags();
     }
 
     final private IUidObserver mUidObserver = new IUidObserver.Stub() {
@@ -498,8 +526,11 @@
             Slog.d(TAG, "handleUnlockUser: user=" + userId);
         }
         synchronized (mLock) {
-            // Preload
-            getUserShortcutsLocked(userId);
+            // Preload the user's shortcuts.
+            // Also see if the locale has changed.
+            // Note as of nyc, the locale is per-user, so the locale shouldn't change
+            // when the user is locked.  However due to b/30119489 it still happens.
+            getUserShortcutsLocked(userId).detectLocaleChange();
 
             checkPackageChanges(userId);
         }
@@ -656,7 +687,7 @@
     }
 
     @Nullable
-    static Intent parseIntentAttribute(XmlPullParser parser, String attribute) {
+    static Intent parseIntentAttributeNoDefault(XmlPullParser parser, String attribute) {
         final String value = parseStringAttribute(parser, attribute);
         Intent parsed = null;
         if (!TextUtils.isEmpty(value)) {
@@ -666,6 +697,12 @@
                 Slog.e(TAG, "Error parsing intent", e);
             }
         }
+        return parsed;
+    }
+
+    @Nullable
+    static Intent parseIntentAttribute(XmlPullParser parser, String attribute) {
+        Intent parsed = parseIntentAttributeNoDefault(parser, attribute);
         if (parsed == null) {
             // Default intent.
             parsed = new Intent(Intent.ACTION_VIEW);
@@ -745,8 +782,6 @@
 
             // Body.
             writeTagValue(out, TAG_LAST_RESET_TIME, mRawLastResetTime);
-            writeTagValue(out, TAG_LOCALE_CHANGE_SEQUENCE_NUMBER,
-                    mLocaleChangeSequenceNumber.get());
 
             // Epilogue.
             out.endTag(null, TAG_ROOT);
@@ -791,9 +826,6 @@
                     case TAG_LAST_RESET_TIME:
                         mRawLastResetTime = parseLongAttribute(parser, ATTR_VALUE);
                         break;
-                    case TAG_LOCALE_CHANGE_SEQUENCE_NUMBER:
-                        mLocaleChangeSequenceNumber.set(parseLongAttribute(parser, ATTR_VALUE));
-                        break;
                     default:
                         Slog.e(TAG, "Invalid tag: " + tag);
                         break;
@@ -1333,10 +1365,18 @@
         if (isCallerSystem()) {
             return;
         }
-        injectEnforceCallingPermission(
+        enforceCallingOrSelfPermission(
                 android.Manifest.permission.RESET_SHORTCUT_MANAGER_THROTTLING, null);
     }
 
+    private void enforceCallingOrSelfPermission(
+            @NonNull String permission, @Nullable String message) {
+        if (isCallerSystem()) {
+            return;
+        }
+        injectEnforceCallingPermission(permission, message);
+    }
+
     /**
      * Somehow overriding ServiceContext.enforceCallingPermission() in the unit tests would confuse
      * mockito.  So instead we extracted it here and override it in the tests.
@@ -1438,6 +1478,10 @@
                     shortcut.getPackage().equals(shortcut.getActivity().getPackageName()),
                     "Cannot publish shortcut: activity " + shortcut.getActivity() + " does not"
                     + " belong to package " + shortcut.getPackage());
+            Preconditions.checkState(
+                    injectIsMainActivity(shortcut.getActivity(), shortcut.getUserId()),
+                    "Cannot publish shortcut: activity " + shortcut.getActivity() + " is not"
+                            + " main activity");
         }
 
         if (!forUpdate) {
@@ -1491,6 +1535,7 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
 
             ps.ensureImmutableShortcutsNotIncluded(newShortcuts);
 
@@ -1540,6 +1585,7 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
 
             ps.ensureImmutableShortcutsNotIncluded(newShortcuts);
 
@@ -1618,6 +1664,7 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
 
             ps.ensureImmutableShortcutsNotIncluded(newShortcuts);
 
@@ -1665,6 +1712,7 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
 
             ps.ensureImmutableShortcutsNotIncludedWithIds((List<String>) shortcutIds);
 
@@ -1692,6 +1740,7 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
 
             ps.ensureImmutableShortcutsNotIncludedWithIds((List<String>) shortcutIds);
 
@@ -1712,6 +1761,7 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
 
             ps.ensureImmutableShortcutsNotIncludedWithIds((List<String>) shortcutIds);
 
@@ -1733,7 +1783,9 @@
         verifyCaller(packageName, userId);
 
         synchronized (mLock) {
-            getPackageShortcutsLocked(packageName, userId).deleteAllDynamicShortcuts();
+            final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
+            ps.deleteAllDynamicShortcuts();
         }
         packageShortcutsChanged(packageName, userId);
 
@@ -1778,7 +1830,9 @@
 
         final ArrayList<ShortcutInfo> ret = new ArrayList<>();
 
-        getPackageShortcutsLocked(packageName, userId).findAll(ret, query, cloneFlags);
+        final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+        ps.getUser().onCalledByPublisher(packageName);
+        ps.findAll(ret, query, cloneFlags);
 
         return new ParceledListSlice<>(ret);
     }
@@ -1796,8 +1850,9 @@
         verifyCaller(packageName, userId);
 
         synchronized (mLock) {
-            return mMaxUpdatesPerInterval
-                    - getPackageShortcutsLocked(packageName, userId).getApiCallCount();
+            final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
+            return mMaxUpdatesPerInterval - ps.getApiCallCount();
         }
     }
 
@@ -1832,6 +1887,8 @@
 
         synchronized (mLock) {
             final ShortcutPackage ps = getPackageShortcutsLocked(packageName, userId);
+            ps.getUser().onCalledByPublisher(packageName);
+
             if (ps.findShortcutById(shortcutId) == null) {
                 Log.w(TAG, String.format("reportShortcutUsed: package %s doesn't have shortcut %s",
                         packageName, shortcutId));
@@ -1893,7 +1950,12 @@
 
     // We override this method in unit tests to do a simpler check.
     boolean hasShortcutHostPermission(@NonNull String callingPackage, int userId) {
-        return hasShortcutHostPermissionInner(callingPackage, userId);
+        final long start = injectElapsedRealtime();
+        try {
+            return hasShortcutHostPermissionInner(callingPackage, userId);
+        } finally {
+            logDurationStat(Stats.LAUNCHER_PERMISSION_CHECK, start);
+        }
     }
 
     // This method is extracted so we can directly call this method from unit tests,
@@ -1901,15 +1963,22 @@
     @VisibleForTesting
     boolean hasShortcutHostPermissionInner(@NonNull String callingPackage, int userId) {
         synchronized (mLock) {
-            final long start = injectElapsedRealtime();
-
             final ShortcutUser user = getUserShortcutsLocked(userId);
 
+            // Always trust the in-memory cache.
+            final ComponentName cached = user.getCachedLauncher();
+            if (cached != null) {
+                if (cached.getPackageName().equals(callingPackage)) {
+                    return true;
+                }
+            }
+            // If the cached one doesn't match, then go ahead
+
             final List<ResolveInfo> allHomeCandidates = new ArrayList<>();
 
             // Default launcher from package manager.
             final long startGetHomeActivitiesAsUser = injectElapsedRealtime();
-            final ComponentName defaultLauncher = injectPackageManagerInternal()
+            final ComponentName defaultLauncher = mPackageManagerInternal
                     .getHomeActivitiesAsUser(allHomeCandidates, userId);
             logDurationStat(Stats.GET_DEFAULT_HOME, startGetHomeActivitiesAsUser);
 
@@ -1920,7 +1989,7 @@
                     Slog.v(TAG, "Default launcher from PM: " + detected);
                 }
             } else {
-                detected = user.getDefaultLauncherComponent();
+                detected = user.getLastKnownLauncher();
 
                 if (detected != null) {
                     if (injectIsActivityEnabledAndExported(detected, userId)) {
@@ -1930,7 +1999,7 @@
                     } else {
                         Slog.w(TAG, "Cached launcher " + detected + " no longer exists");
                         detected = null;
-                        user.setDefaultLauncherComponent(null);
+                        user.clearLauncher();
                     }
                 }
             }
@@ -1961,13 +2030,13 @@
                     lastPriority = ri.priority;
                 }
             }
-            logDurationStat(Stats.LAUNCHER_PERMISSION_CHECK, start);
 
+            // Update the cache.
+            user.setLauncher(detected);
             if (detected != null) {
                 if (DEBUG) {
                     Slog.v(TAG, "Detected launcher: " + detected);
                 }
-                user.setDefaultLauncherComponent(detected);
                 return detected.getPackageName().equals(callingPackage);
             } else {
                 // Default launcher not found.
@@ -2029,7 +2098,7 @@
         if (appStillExists && (packageUserId == owningUserId)) {
             // This will do the notification and save when needed, so do it after the above
             // notifyListeners.
-            user.handlePackageAddedOrUpdated(packageName, /* forceRescan=*/ true);
+            user.rescanPackageIfNeeded(packageName, /* forceRescan=*/ true);
         }
 
         if (!wasUserLoaded) {
@@ -2177,7 +2246,7 @@
         }
 
         @Override
-        public Intent createShortcutIntent(int launcherUserId,
+        public Intent[] createShortcutIntents(int launcherUserId,
                 @NonNull String callingPackage,
                 @NonNull String packageName, @NonNull String shortcutId, int userId) {
             // Calling permission must be checked by LauncherAppsImpl.
@@ -2193,9 +2262,10 @@
                         launcherUserId, callingPackage, packageName, shortcutId, userId);
                 // "si == null" should suffice here, but check the flags too just to make sure.
                 if (si == null || !si.isEnabled() || !si.isAlive()) {
+                    Log.e(TAG, "Shortcut " + shortcutId + " does not exist or disabled");
                     return null;
                 }
-                return si.getIntent();
+                return si.getIntents();
             }
         }
 
@@ -2271,36 +2341,19 @@
                 @NonNull String callingPackage) {
             return ShortcutService.this.hasShortcutHostPermission(callingPackage, launcherUserId);
         }
+    }
 
-        /**
-         * Called by AM when the system locale changes *within the AM lock.  ABSOLUTELY do not take
-         * any locks in this method.
-         */
+    final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
-        public void onSystemLocaleChangedNoLock() {
-            // DO NOT HOLD ANY LOCKS HERE.
-
-            // We want to reset throttling for all packages for all users.  But we can't just do so
-            // here because:
-            // - We can't load/save users that are locked.
-            // - Even for loaded users, resetting the counters would require us to hold mLock.
-            //
-            // So we use a "pull" model instead.  In here, we just increment the "locale change
-            // sequence number".  Each ShortcutUser has the "last known locale change sequence".
-            //
-            // This allows ShortcutUser's to detect the system locale change, so they can reset
-            // counters.
-
-            // Ignore all callback during system boot.
-            if (mBootCompleted.get()) {
-                mLocaleChangeSequenceNumber.incrementAndGet();
-                if (DEBUG) {
-                    Slog.d(TAG, "onSystemLocaleChangedNoLock: " + mLocaleChangeSequenceNumber.get());
-                }
-                injectPostToHandler(() -> handleLocaleChanged());
+        public void onReceive(Context context, Intent intent) {
+            if (!mBootCompleted.get()) {
+                return; // Boot not completed, ignore the broadcast.
+            }
+            if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) {
+                handleLocaleChanged();
             }
         }
-    }
+    };
 
     void handleLocaleChanged() {
         if (DEBUG) {
@@ -2310,7 +2363,7 @@
 
         final long token = injectClearCallingIdentity();
         try {
-            forEachLoadedUserLocked(u -> u.forAllPackages(p -> p.resolveResourceStrings()));
+            forEachLoadedUserLocked(user -> user.detectLocaleChange());
         } finally {
             injectRestoreCallingIdentity(token);
         }
@@ -2320,31 +2373,75 @@
      * Package event callbacks.
      */
     @VisibleForTesting
-    final PackageMonitor mPackageMonitor = new PackageMonitor() {
+    final BroadcastReceiver mPackageMonitor = new BroadcastReceiver() {
         @Override
-        public void onPackageAdded(String packageName, int uid) {
-            handlePackageAdded(packageName, getChangingUserId());
-        }
+        public void onReceive(Context context, Intent intent) {
+            final int userId  = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+            if (userId == UserHandle.USER_NULL) {
+                Slog.w(TAG, "Intent broadcast does not contain user handle: " + intent);
+                return;
+            }
 
-        @Override
-        public void onPackageUpdateFinished(String packageName, int uid) {
-            handlePackageUpdateFinished(packageName, getChangingUserId());
-        }
+            final String action = intent.getAction();
 
-        @Override
-        public void onPackageRemoved(String packageName, int uid) {
-            handlePackageRemoved(packageName, getChangingUserId());
-        }
+            // This is normally called on Handler, so clearCallingIdentity() isn't needed,
+            // but we still check it in unit tests.
+            final long token = injectClearCallingIdentity();
+            try {
 
-        @Override
-        public void onPackageDataCleared(String packageName, int uid) {
-            handlePackageDataCleared(packageName, getChangingUserId());
-        }
+                if (!mUserManager.isUserUnlocked(userId)) {
+                    if (DEBUG) {
+                        Slog.d(TAG, "Ignoring package broadcast " + action
+                                + " for locked/stopped user " + userId);
+                    }
+                    return;
+                }
 
-        @Override
-        public boolean onPackageChanged(String packageName, int uid, String[] components) {
-            handlePackageChanged(packageName, getChangingUserId());
-            return false; // We don't need to receive onSomePackagesChanged(), so just false.
+                // Whenever we get one of those package broadcasts, or get
+                // ACTION_PREFERRED_ACTIVITY_CHANGED, we purge the default launcher cache.
+                synchronized (mLock) {
+                    final ShortcutUser user = getUserShortcutsLocked(userId);
+                    user.clearLauncher();
+                }
+                if (Intent.ACTION_PREFERRED_ACTIVITY_CHANGED.equals(action)) {
+                    // Nothing farther to do.
+                    return;
+                }
+
+                final Uri intentUri = intent.getData();
+                final String packageName = (intentUri != null) ? intentUri.getSchemeSpecificPart()
+                        : null;
+                if (packageName == null) {
+                    Slog.w(TAG, "Intent broadcast does not contain package name: " + intent);
+                    return;
+                }
+
+                final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
+
+                switch (action) {
+                    case Intent.ACTION_PACKAGE_ADDED:
+                        if (replacing) {
+                            handlePackageUpdateFinished(packageName, userId);
+                        } else {
+                            handlePackageAdded(packageName, userId);
+                        }
+                        break;
+                    case Intent.ACTION_PACKAGE_REMOVED:
+                        if (!replacing) {
+                            handlePackageRemoved(packageName, userId);
+                        }
+                        break;
+                    case Intent.ACTION_PACKAGE_CHANGED:
+                        handlePackageChanged(packageName, userId);
+
+                        break;
+                    case Intent.ACTION_PACKAGE_DATA_CLEARED:
+                        handlePackageDataCleared(packageName, userId);
+                        break;
+                }
+            } finally {
+                injectRestoreCallingIdentity(token);
+            }
         }
     };
 
@@ -2395,7 +2492,7 @@
 
                 // Then for each installed app, publish manifest shortcuts when needed.
                 forUpdatedPackages(ownerUserId, user.getLastAppScanTime(), ai -> {
-                    user.handlePackageAddedOrUpdated(ai.packageName, /* forceRescan=*/ false);
+                    user.rescanPackageIfNeeded(ai.packageName, /* forceRescan=*/ false);
                 });
 
                 // Write the time just before the scan, because there may be apps that have just
@@ -2416,7 +2513,7 @@
         synchronized (mLock) {
             final ShortcutUser user = getUserShortcutsLocked(userId);
             user.attemptToRestoreIfNeededAndSave(this, packageName, userId);
-            user.handlePackageAddedOrUpdated(packageName, /* forceRescan=*/ false);
+            user.rescanPackageIfNeeded(packageName, /* forceRescan=*/ false);
         }
         verifyStates();
     }
@@ -2431,7 +2528,7 @@
             user.attemptToRestoreIfNeededAndSave(this, packageName, userId);
 
             if (isPackageInstalled(packageName, userId)) {
-                user.handlePackageAddedOrUpdated(packageName, /* forceRescan=*/ false);
+                user.rescanPackageIfNeeded(packageName, /* forceRescan=*/ false);
             }
         }
         verifyStates();
@@ -2467,7 +2564,7 @@
         synchronized (mLock) {
             final ShortcutUser user = getUserShortcutsLocked(packageUserId);
 
-            user.handlePackageAddedOrUpdated(packageName, /* forceRescan=*/ true);
+            user.rescanPackageIfNeeded(packageName, /* forceRescan=*/ true);
         }
 
         verifyStates();
@@ -2905,20 +3002,29 @@
 
     @Override
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
-                != PackageManager.PERMISSION_GRANTED) {
-            pw.println("Permission Denial: can't dump UserManager from from pid="
-                    + Binder.getCallingPid()
-                    + ", uid=" + Binder.getCallingUid()
-                    + " without permission "
-                    + android.Manifest.permission.DUMP);
-            return;
+        enforceCallingOrSelfPermission(android.Manifest.permission.DUMP,
+                "can't dump by this caller");
+        boolean checkin = false;
+        boolean clear = false;
+        if (args != null) {
+            for (String arg : args) {
+                if ("-c".equals(arg)) {
+                    checkin = true;
+                } else if ("--checkin".equals(arg)) {
+                    checkin = true;
+                    clear = true;
+                }
+            }
         }
-        dumpInner(pw, args);
+
+        if (checkin) {
+            dumpCheckin(pw, clear);
+        } else {
+            dumpInner(pw);
+        }
     }
 
-    @VisibleForTesting
-    void dumpInner(PrintWriter pw, String[] args) {
+    private void dumpInner(PrintWriter pw) {
         synchronized (mLock) {
             final long now = injectCurrentTimeMillis();
             pw.print("Now: [");
@@ -2943,10 +3049,6 @@
             pw.print("] ");
             pw.print(formatTime(next));
 
-            pw.print("  Locale change seq#: ");
-            pw.print(mLocaleChangeSequenceNumber.get());
-            pw.println();
-
             pw.print("  Config:");
             pw.print("    Max icon dim: ");
             pw.println(mMaxIconDimension);
@@ -2982,6 +3084,16 @@
                 dumpStatLS(pw, p, Stats.GET_LAUNCHER_ACTIVITY, "getLauncherActivity");
                 dumpStatLS(pw, p, Stats.CHECK_LAUNCHER_ACTIVITY, "checkLauncherActivity");
                 dumpStatLS(pw, p, Stats.IS_ACTIVITY_ENABLED, "isActivityEnabled");
+                dumpStatLS(pw, p, Stats.PACKAGE_UPDATE_CHECK, "packageUpdateCheck");
+            }
+
+            pw.println();
+            pw.print("  #Failures: ");
+            pw.println(mWtfCount);
+
+            if (mLastWtfStacktrace != null) {
+                pw.print("  Last failure stack trace: ");
+                pw.println(Log.getStackTraceString(mLastWtfStacktrace));
             }
 
             for (int i = 0; i < mUsers.size(); i++) {
@@ -3024,6 +3136,34 @@
                 (count == 0 ? 0 : ((double) dur) / count)));
     }
 
+    /**
+     * Dumpsys for checkin.
+     *
+     * @param clear if true, clear the history information.  Some other system services have this
+     * behavior but shortcut service doesn't for now.
+     */
+    private  void dumpCheckin(PrintWriter pw, boolean clear) {
+        synchronized (mLock) {
+            try {
+                final JSONArray users = new JSONArray();
+
+                for (int i = 0; i < mUsers.size(); i++) {
+                    users.put(mUsers.valueAt(i).dumpCheckin(clear));
+                }
+
+                final JSONObject result = new JSONObject();
+
+                result.put(KEY_SHORTCUT, users);
+                result.put(KEY_LOW_RAM, injectIsLowRamDevice());
+                result.put(KEY_ICON_SIZE, mMaxIconDimension);
+
+                pw.println(result.toString(1));
+            } catch (JSONException e) {
+                Slog.e(TAG, "Unable to write in json", e);
+            }
+        }
+    }
+
     // === Shell support ===
 
     @Override
@@ -3058,6 +3198,10 @@
                     case "--user":
                         if (takeUser) {
                             mUserId = UserHandle.parseUserArg(getNextArgRequired());
+                            if (!mUserManager.isUserUnlocked(mUserId)) {
+                                throw new CommandException(
+                                        "User " + mUserId + " is not running or locked");
+                            }
                             break;
                         }
                         // fallthrough
@@ -3203,7 +3347,7 @@
 
         private void clearLauncher() {
             synchronized (mLock) {
-                getUserShortcutsLocked(mUserId).setDefaultLauncherComponent(null);
+                getUserShortcutsLocked(mUserId).forceClearLauncher();
             }
         }
 
@@ -3213,7 +3357,7 @@
                 hasShortcutHostPermissionInner("-", mUserId);
 
                 getOutPrintWriter().println("Launcher: "
-                        + getUserShortcutsLocked(mUserId).getDefaultLauncherComponent());
+                        + getUserShortcutsLocked(mUserId).getLastKnownLauncher());
             }
         }
 
@@ -3303,7 +3447,14 @@
     }
 
     // Injection point.
-    void wtf(String message, Exception e) {
+    void wtf(String message, Throwable e) {
+        if (e == null) {
+            e = new RuntimeException("Stacktrace");
+        }
+        synchronized (mLock) {
+            mWtfCount++;
+            mLastWtfStacktrace = new Exception("Last failure was logged here:");
+        }
         Slog.wtf(TAG, message, e);
     }
 
@@ -3330,11 +3481,6 @@
         }
     }
 
-    @VisibleForTesting
-    PackageManagerInternal injectPackageManagerInternal() {
-        return mPackageManagerInternal;
-    }
-
     File getUserBitmapFilePath(@UserIdInt int userId) {
         return new File(injectUserDataPath(userId), DIRECTORY_BITMAPS);
     }
@@ -3418,7 +3564,7 @@
     }
 
     private void verifyStatesInner() {
-        synchronized (this) {
+        synchronized (mLock) {
             forEachLoadedUserLocked(u -> u.forAllPackageItems(ShortcutPackageItem::verifyStates));
         }
     }
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 7ea89c9..21e4165 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -19,6 +19,8 @@
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.content.ComponentName;
+import android.content.pm.ShortcutManager;
+import android.text.TextUtils;
 import android.text.format.Formatter;
 import android.util.ArrayMap;
 import android.util.Slog;
@@ -30,6 +32,9 @@
 
 import libcore.util.Objects;
 
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
@@ -51,8 +56,11 @@
     private static final String TAG_LAUNCHER = "launcher";
 
     private static final String ATTR_VALUE = "value";
-    private static final String ATTR_KNOWN_LOCALE_CHANGE_SEQUENCE_NUMBER = "locale-seq-no";
+    private static final String ATTR_KNOWN_LOCALES = "locales";
     private static final String ATTR_LAST_APP_SCAN_TIME = "last-app-scan-time";
+    private static final String KEY_USER_ID = "userId";
+    private static final String KEY_LAUNCHERS = "launchers";
+    private static final String KEY_PACKAGES = "packages";
 
     static final class PackageWithUser {
         final int userId;
@@ -101,10 +109,17 @@
 
     private final ArrayMap<PackageWithUser, ShortcutLauncher> mLaunchers = new ArrayMap<>();
 
-    /** Default launcher that can access the launcher apps APIs. */
-    private ComponentName mDefaultLauncherComponent;
+    /**
+     * Last known launcher.  It's used when the default launcher isn't set in PM -- i.e.
+     * when getHomeActivitiesAsUser() return null.  We need it so that in this situation the
+     * previously default launcher can still access shortcuts.
+     */
+    private ComponentName mLastKnownLauncher;
 
-    private long mKnownLocaleChangeSequenceNumber;
+    /** In-memory-cached default launcher. */
+    private ComponentName mCachedLauncher;
+
+    private String mKnownLocales;
 
     private long mLastAppScanTime;
 
@@ -225,29 +240,62 @@
     }
 
     /**
-     * Reset all throttling counters for all packages, if there has been a system locale change.
+     * Must be called at any entry points on {@link ShortcutManager} APIs to make sure the
+     * information on the package is up-to-date.
+     *
+     * We use broadcasts to handle locale changes and package changes, but because broadcasts
+     * are asynchronous, there's a chance a publisher calls getXxxShortcuts() after a certain event
+     * (e.g. system locale change) but shortcut manager hasn't finished processing the broadcast.
+     *
+     * So we call this method at all entry points from publishers to make sure we update all
+     * relevant information.
+     *
+     * Similar inconsistencies can happen when the launcher fetches shortcut information, but
+     * that's a less of an issue because for the launcher we report shortcut changes with
+     * callbacks.
      */
-    public void resetThrottlingIfNeeded() {
-        final long currentNo = mService.getLocaleChangeSequenceNumber();
-        if (mKnownLocaleChangeSequenceNumber < currentNo) {
-            if (ShortcutService.DEBUG) {
-                Slog.d(TAG, "LocaleChange detected for user " + mUserId);
-            }
-
-            mKnownLocaleChangeSequenceNumber = currentNo;
-
-            forAllPackages(p -> p.resetRateLimiting());
-
-            mService.scheduleSaveUser(mUserId);
-        }
+    public void onCalledByPublisher(@NonNull String packageName) {
+        detectLocaleChange();
+        rescanPackageIfNeeded(packageName, /*forceRescan=*/ false);
     }
 
-    public void handlePackageAddedOrUpdated(@NonNull String packageName, boolean forceRescan) {
+    private String getKnownLocales() {
+        if (TextUtils.isEmpty(mKnownLocales)) {
+            mKnownLocales = mService.injectGetLocaleTagsForUser(mUserId);
+            mService.scheduleSaveUser(mUserId);
+        }
+        return mKnownLocales;
+    }
+
+    /**
+     * Check to see if the system locale has changed, and if so, reset throttling
+     * and update resource strings.
+     */
+    public void detectLocaleChange() {
+        final String currentLocales = mService.injectGetLocaleTagsForUser(mUserId);
+        if (getKnownLocales().equals(currentLocales)) {
+            return;
+        }
+        if (ShortcutService.DEBUG) {
+            Slog.d(TAG, "Locale changed from " + currentLocales + " to " + mKnownLocales
+                    + " for user " + mUserId);
+        }
+        mKnownLocales = currentLocales;
+
+        forAllPackages(pkg -> {
+            pkg.resetRateLimiting();
+            pkg.resolveResourceStrings();
+        });
+
+        mService.scheduleSaveUser(mUserId);
+    }
+
+    public void rescanPackageIfNeeded(@NonNull String packageName, boolean forceRescan) {
         final boolean isNewApp = !mPackages.containsKey(packageName);
 
         final ShortcutPackage shortcutPackage = getPackageShortcuts(packageName);
 
-        if (!shortcutPackage.handlePackageAddedOrUpdated(isNewApp, forceRescan)) {
+        if (!shortcutPackage.rescanPackageIfNeeded(isNewApp, forceRescan)) {
             if (isNewApp) {
                 mPackages.remove(packageName);
             }
@@ -265,13 +313,11 @@
             throws IOException, XmlPullParserException {
         out.startTag(null, TAG_ROOT);
 
-        ShortcutService.writeAttr(out, ATTR_KNOWN_LOCALE_CHANGE_SEQUENCE_NUMBER,
-                mKnownLocaleChangeSequenceNumber);
+        ShortcutService.writeAttr(out, ATTR_KNOWN_LOCALES, mKnownLocales);
         ShortcutService.writeAttr(out, ATTR_LAST_APP_SCAN_TIME,
                 mLastAppScanTime);
 
-        ShortcutService.writeTagValue(out, TAG_LAUNCHER,
-                mDefaultLauncherComponent);
+        ShortcutService.writeTagValue(out, TAG_LAUNCHER, mLastKnownLauncher);
 
         // Can't use forEachPackageItem due to the checked exceptions.
         {
@@ -307,8 +353,8 @@
             boolean fromBackup) throws IOException, XmlPullParserException {
         final ShortcutUser ret = new ShortcutUser(s, userId);
 
-        ret.mKnownLocaleChangeSequenceNumber = ShortcutService.parseLongAttribute(parser,
-                ATTR_KNOWN_LOCALE_CHANGE_SEQUENCE_NUMBER);
+        ret.mKnownLocales = ShortcutService.parseStringAttribute(parser,
+                ATTR_KNOWN_LOCALES);
 
         // If lastAppScanTime is in the future, that means the clock went backwards.
         // Just scan all apps again.
@@ -330,7 +376,7 @@
             if (depth == outerDepth + 1) {
                 switch (tag) {
                     case TAG_LAUNCHER: {
-                        ret.mDefaultLauncherComponent = ShortcutService.parseComponentNameAttribute(
+                        ret.mLastKnownLauncher = ShortcutService.parseComponentNameAttribute(
                                 parser, ATTR_VALUE);
                         continue;
                     }
@@ -355,18 +401,44 @@
         return ret;
     }
 
-    public ComponentName getDefaultLauncherComponent() {
-        return mDefaultLauncherComponent;
+    public ComponentName getLastKnownLauncher() {
+        return mLastKnownLauncher;
     }
 
-    public void setDefaultLauncherComponent(ComponentName launcherComponent) {
-        if (Objects.equal(mDefaultLauncherComponent, launcherComponent)) {
+    public void setLauncher(ComponentName launcherComponent) {
+        setLauncher(launcherComponent, /* allowPurgeLastKnown */ false);
+    }
+
+    /** Clears the launcher information without clearing the last known one */
+    public void clearLauncher() {
+        setLauncher(null);
+    }
+
+    /**
+     * Clears the launcher information *with(* clearing the last known one; we do this witl
+     * "cmd shortcut clear-default-launcher".
+     */
+    public void forceClearLauncher() {
+        setLauncher(null, /* allowPurgeLastKnown */ true);
+    }
+
+    private void setLauncher(ComponentName launcherComponent, boolean allowPurgeLastKnown) {
+        mCachedLauncher = launcherComponent; // Always update the in-memory cache.
+
+        if (Objects.equal(mLastKnownLauncher, launcherComponent)) {
             return;
         }
-        mDefaultLauncherComponent = launcherComponent;
+        if (!allowPurgeLastKnown && launcherComponent == null) {
+            return;
+        }
+        mLastKnownLauncher = launcherComponent;
         mService.scheduleSaveUser(mUserId);
     }
 
+    public ComponentName getCachedLauncher() {
+        return mCachedLauncher;
+    }
+
     public void resetThrottling() {
         for (int i = mPackages.size() - 1; i >= 0; i--) {
             mPackages.valueAt(i).resetThrottling();
@@ -377,8 +449,8 @@
         pw.print(prefix);
         pw.print("User: ");
         pw.print(mUserId);
-        pw.print("  Known locale seq#: ");
-        pw.print(mKnownLocaleChangeSequenceNumber);
+        pw.print("  Known locales: ");
+        pw.print(mKnownLocales);
         pw.print("  Last app scan: [");
         pw.print(mLastAppScanTime);
         pw.print("] ");
@@ -388,8 +460,13 @@
         prefix += prefix + "  ";
 
         pw.print(prefix);
-        pw.print("Default launcher: ");
-        pw.print(mDefaultLauncherComponent);
+        pw.print("Cached launcher: ");
+        pw.print(mCachedLauncher);
+        pw.println();
+
+        pw.print(prefix);
+        pw.print("Last known launcher: ");
+        pw.print(mLastKnownLauncher);
         pw.println();
 
         for (int i = 0; i < mLaunchers.size(); i++) {
@@ -432,4 +509,28 @@
         pw.print(Formatter.formatFileSize(mService.mContext, size));
         pw.println(")");
     }
+
+    public JSONObject dumpCheckin(boolean clear) throws JSONException {
+        final JSONObject result = new JSONObject();
+
+        result.put(KEY_USER_ID, mUserId);
+
+        {
+            final JSONArray launchers = new JSONArray();
+            for (int i = 0; i < mLaunchers.size(); i++) {
+                launchers.put(mLaunchers.valueAt(i).dumpCheckin(clear));
+            }
+            result.put(KEY_LAUNCHERS, launchers);
+        }
+
+        {
+            final JSONArray packages = new JSONArray();
+            for (int i = 0; i < mPackages.size(); i++) {
+                packages.put(mPackages.valueAt(i).dumpCheckin(clear));
+            }
+            result.put(KEY_PACKAGES, packages);
+        }
+
+        return result;
+    }
 }
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index d750cbf..85b6be7 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -27,7 +27,6 @@
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
 import android.app.ActivityManagerNative;
-import android.app.AppGlobals;
 import android.app.IActivityManager;
 import android.app.IStopUserCallback;
 import android.app.KeyguardManager;
@@ -38,7 +37,6 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.IntentSender;
-import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.UserInfo;
@@ -1799,6 +1797,18 @@
         mUserVersion = USER_VERSION;
 
         Bundle restrictions = new Bundle();
+        try {
+            final String[] defaultFirstUserRestrictions = mContext.getResources().getStringArray(
+                    com.android.internal.R.array.config_defaultFirstUserRestrictions);
+            for (String userRestriction : defaultFirstUserRestrictions) {
+                if (UserRestrictionsUtils.isValidRestriction(userRestriction)) {
+                    restrictions.putBoolean(userRestriction, true);
+                }
+            }
+        } catch (Resources.NotFoundException e) {
+            Log.e(LOG_TAG, "Couldn't find resource: config_defaultFirstUserRestrictions", e);
+        }
+
         synchronized (mRestrictionsLock) {
             mBaseUserRestrictions.append(UserHandle.USER_SYSTEM, restrictions);
         }
@@ -2304,6 +2314,7 @@
             synchronized (mRestrictionsLock) {
                 mBaseUserRestrictions.append(userId, restrictions);
             }
+            mPm.onNewUserCreated(userId);
             Intent addedIntent = new Intent(Intent.ACTION_USER_ADDED);
             addedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
             mContext.sendBroadcastAsUser(addedIntent, UserHandle.ALL,
@@ -2866,18 +2877,20 @@
      * app storage and apply any user restrictions.
      */
     public void onBeforeStartUser(int userId) {
-        final int userSerial = getUserSerialNumber(userId);
+        UserInfo userInfo = getUserInfo(userId);
+        if (userInfo == null) {
+            return;
+        }
+        final int userSerial = userInfo.serialNumber;
+        // Migrate only if build fingerprints mismatch
+        boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
         mPm.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_DE);
-        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_DE);
+        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_DE, migrateAppsData);
 
         if (userId != UserHandle.USER_SYSTEM) {
             synchronized (mRestrictionsLock) {
                 applyUserRestrictionsLR(userId);
             }
-            UserInfo userInfo = getUserInfoNoChecks(userId);
-            if (userInfo != null && !userInfo.isInitialized()) {
-                mPm.onBeforeUserStartUninitialized(userId);
-            }
         }
 
         maybeInitializeDemoMode(userId);
@@ -2888,9 +2901,15 @@
      * app storage.
      */
     public void onBeforeUnlockUser(@UserIdInt int userId) {
-        final int userSerial = getUserSerialNumber(userId);
+        UserInfo userInfo = getUserInfo(userId);
+        if (userInfo == null) {
+            return;
+        }
+        final int userSerial = userInfo.serialNumber;
+        // Migrate only if build fingerprints mismatch
+        boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
         mPm.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_CE);
-        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_CE);
+        mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_CE, migrateAppsData);
     }
 
     /**
@@ -2921,17 +2940,13 @@
             if (!TextUtils.isEmpty(demoLauncher)) {
                 ComponentName componentToEnable = ComponentName.unflattenFromString(demoLauncher);
                 String demoLauncherPkg = componentToEnable.getPackageName();
-                try {
-                    final IPackageManager iPm = AppGlobals.getPackageManager();
-                    iPm.setComponentEnabledSetting(componentToEnable,
-                            PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
-                            /* userId= */ userId);
-                    iPm.setApplicationEnabledSetting(demoLauncherPkg,
-                            PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
-                            /* userId= */ userId, null);
-                } catch (RemoteException re) {
-                    // Internal, shouldn't happen
-                }
+                final PackageManager pm = mContext.getPackageManager();
+                pm.setComponentEnabledSettingAsUser(componentToEnable,
+                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
+                        /* userId= */ userId);
+                pm.setApplicationEnabledSettingAsUser(demoLauncherPkg,
+                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
+                        /* userId= */ userId);
             }
         }
     }
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index c082143..0499757 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -104,7 +104,8 @@
             UserManager.DISALLOW_RUN_IN_BACKGROUND,
             UserManager.DISALLOW_DATA_ROAMING,
             UserManager.DISALLOW_SET_USER_ICON,
-            UserManager.DISALLOW_SET_WALLPAPER
+            UserManager.DISALLOW_SET_WALLPAPER,
+            UserManager.DISALLOW_OEM_UNLOCK
     });
 
     /**
@@ -138,7 +139,8 @@
      */
     private static final Set<String> IMMUTABLE_BY_OWNERS = Sets.newArraySet(
             UserManager.DISALLOW_RECORD_AUDIO,
-            UserManager.DISALLOW_WALLPAPER
+            UserManager.DISALLOW_WALLPAPER,
+            UserManager.DISALLOW_OEM_UNLOCK
     );
 
     /**
@@ -426,6 +428,7 @@
                             newValue ? 1 : 0);
                     break;
                 case UserManager.DISALLOW_FACTORY_RESET:
+                case UserManager.DISALLOW_OEM_UNLOCK:
                     if (newValue) {
                         PersistentDataBlockManager manager = (PersistentDataBlockManager) context
                                 .getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
diff --git a/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java
index 2e32fe3..c764833 100644
--- a/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java
+++ b/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java
@@ -134,7 +134,7 @@
     }
 
     public void immersiveModeChangedLw(String pkg, boolean isImmersiveMode,
-            boolean userSetupComplete) {
+            boolean userSetupComplete, boolean navBarEmpty) {
         mHandler.removeMessages(H.SHOW);
         if (isImmersiveMode) {
             final boolean disabled = PolicyControl.disableImmersiveConfirmation(pkg);
@@ -144,6 +144,7 @@
                     && (DEBUG_SHOW_EVERY_TIME || !mConfirmed)
                     && userSetupComplete
                     && !mVrModeEnabled
+                    && !navBarEmpty
                     && !UserManager.isDeviceInDemoMode(mContext)) {
                 mHandler.sendEmptyMessageDelayed(H.SHOW, mShowDelayMs);
             }
@@ -152,12 +153,13 @@
         }
     }
 
-    public boolean onPowerKeyDown(boolean isScreenOn, long time, boolean inImmersiveMode) {
+    public boolean onPowerKeyDown(boolean isScreenOn, long time, boolean inImmersiveMode,
+            boolean navBarEmpty) {
         if (!isScreenOn && (time - mPanicTime < mPanicThresholdMs)) {
             // turning the screen back on within the panic threshold
             return mClingWindow == null;
         }
-        if (isScreenOn && inImmersiveMode) {
+        if (isScreenOn && inImmersiveMode && !navBarEmpty) {
             // turning the screen off, remember if we were in immersive mode
             mPanicTime = time;
         } else {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 222f234..f0b128e 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -216,6 +216,8 @@
     static final int SHORT_PRESS_SLEEP_GO_TO_SLEEP = 0;
     static final int SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME = 1;
 
+    static final int PENDING_KEY_NULL = -1;
+
     // Controls navigation bar opacity depending on which workspace stacks are currently
     // visible.
     // Nav bar is always opaque when either the freeform stack or docked stack is visible.
@@ -410,6 +412,10 @@
     volatile boolean mRecentsVisible;
     volatile boolean mTvPictureInPictureVisible;
 
+    // Used to hold the last user key used to wake the device.  This helps us prevent up events
+    // from being passed to the foregrounded app without a corresponding down event
+    volatile int mPendingWakeKey = PENDING_KEY_NULL;
+
     int mRecentAppsHeldModifiers;
     boolean mLanguageSwitchKeyPressed;
 
@@ -1018,7 +1024,8 @@
         // Detect user pressing the power button in panic when an application has
         // taken over the whole screen.
         boolean panic = mImmersiveModeConfirmation.onPowerKeyDown(interactive,
-                SystemClock.elapsedRealtime(), isImmersiveMode(mLastSystemUiFlags));
+                SystemClock.elapsedRealtime(), isImmersiveMode(mLastSystemUiFlags),
+                isNavBarEmpty(mLastSystemUiFlags));
         if (panic) {
             mHandler.post(mHiddenNavPanic);
         }
@@ -5560,12 +5567,24 @@
             // key to the application.
             result = ACTION_PASS_TO_USER;
             isWakeKey = false;
-        } else if (!interactive && shouldDispatchInputWhenNonInteractive()) {
+
+            if (interactive) {
+                // If the screen is awake, but the button pressed was the one that woke the device
+                // then don't pass it to the application
+                if (keyCode == mPendingWakeKey && !down) {
+                    result = 0;
+                }
+                // Reset the pending key
+                mPendingWakeKey = PENDING_KEY_NULL;
+            }
+        } else if (!interactive && shouldDispatchInputWhenNonInteractive(event)) {
             // If we're currently dozing with the screen on and the keyguard showing, pass the key
             // to the application but preserve its wake key status to make sure we still move
             // from dozing to fully interactive if we would normally go from off to fully
             // interactive.
             result = ACTION_PASS_TO_USER;
+            // Since we're dispatching the input, reset the pending key
+            mPendingWakeKey = PENDING_KEY_NULL;
         } else {
             // When the screen is off and the key is not injected, determine whether
             // to wake the device but don't pass the key to the application.
@@ -5573,6 +5592,10 @@
             if (isWakeKey && (!down || !isWakeKeyWhenScreenOff(keyCode))) {
                 isWakeKey = false;
             }
+            // Cache the wake key on down event so we can also avoid sending the up event to the app
+            if (isWakeKey && down) {
+                mPendingWakeKey = keyCode;
+            }
         }
 
         // If the key would be handled globally, just return the result, don't worry about special
@@ -5949,7 +5972,7 @@
             }
         }
 
-        if (shouldDispatchInputWhenNonInteractive()) {
+        if (shouldDispatchInputWhenNonInteractive(null)) {
             return ACTION_PASS_TO_USER;
         }
 
@@ -5964,7 +5987,7 @@
         return 0;
     }
 
-    private boolean shouldDispatchInputWhenNonInteractive() {
+    private boolean shouldDispatchInputWhenNonInteractive(KeyEvent event) {
         final boolean displayOff = (mDisplay == null || mDisplay.getState() == Display.STATE_OFF);
 
         if (displayOff && !mHasFeatureWatch) {
@@ -5976,6 +5999,14 @@
             return true;
         }
 
+        // Watches handle BACK specially
+        if (mHasFeatureWatch
+                && event != null
+                && (event.getKeyCode() == KeyEvent.KEYCODE_BACK
+                        || event.getKeyCode() == KeyEvent.KEYCODE_STEM_PRIMARY)) {
+            return false;
+        }
+
         // Send events to a dozing dream even if the screen is off since the dream
         // is in control of the state of the screen.
         IDreamManager dreamManager = getDreamManager();
@@ -7281,8 +7312,8 @@
     }
 
     private boolean areSystemNavigationKeysEnabled() {
-        return Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.SYSTEM_NAVIGATION_KEYS_ENABLED, 1) == 1;
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 1) == 1;
     }
 
     @Override
@@ -7561,7 +7592,7 @@
         if (win != null && oldImmersiveMode != newImmersiveMode) {
             final String pkg = win.getOwningPackage();
             mImmersiveModeConfirmation.immersiveModeChangedLw(pkg, newImmersiveMode,
-                    isUserSetupComplete());
+                    isUserSetupComplete(), isNavBarEmpty(win.getSystemUiVisibility()));
         }
 
         vis = mNavigationBarController.updateVisibilityLw(transientNavBarAllowed, oldVis, vis);
@@ -7620,6 +7651,14 @@
                 && canHideNavigationBar();
     }
 
+    private static boolean isNavBarEmpty(int systemUiFlags) {
+        final int disableNavigationBar = (View.STATUS_BAR_DISABLE_HOME
+                | View.STATUS_BAR_DISABLE_BACK
+                | View.STATUS_BAR_DISABLE_RECENT);
+
+        return (systemUiFlags & disableNavigationBar) == disableNavigationBar;
+    }
+
     /**
      * @return whether the navigation or status bar can be made translucent
      *
diff --git a/services/core/java/com/android/server/power/Notifier.java b/services/core/java/com/android/server/power/Notifier.java
index 9ccfd67..4e9f5a2 100644
--- a/services/core/java/com/android/server/power/Notifier.java
+++ b/services/core/java/com/android/server/power/Notifier.java
@@ -194,6 +194,48 @@
         }
     }
 
+    public void onLongPartialWakeLockStart(String tag, int ownerUid, WorkSource workSource,
+            String historyTag) {
+        if (DEBUG) {
+            Slog.d(TAG, "onLongPartialWakeLockStart: ownerUid=" + ownerUid
+                    + ", workSource=" + workSource);
+        }
+
+        try {
+            if (workSource != null) {
+                final int N = workSource.size();
+                for (int i=0; i<N; i++) {
+                    mBatteryStats.noteLongPartialWakelockStart(tag, historyTag, workSource.get(i));
+                }
+            } else {
+                mBatteryStats.noteLongPartialWakelockStart(tag, historyTag, ownerUid);
+            }
+        } catch (RemoteException ex) {
+            // Ignore
+        }
+    }
+
+    public void onLongPartialWakeLockFinish(String tag, int ownerUid, WorkSource workSource,
+            String historyTag) {
+        if (DEBUG) {
+            Slog.d(TAG, "onLongPartialWakeLockFinish: ownerUid=" + ownerUid
+                    + ", workSource=" + workSource);
+        }
+
+        try {
+            if (workSource != null) {
+                final int N = workSource.size();
+                for (int i=0; i<N; i++) {
+                    mBatteryStats.noteLongPartialWakelockFinish(tag, historyTag, workSource.get(i));
+                }
+            } else {
+                mBatteryStats.noteLongPartialWakelockFinish(tag, historyTag, ownerUid);
+            }
+        } catch (RemoteException ex) {
+            // Ignore
+        }
+    }
+
     /**
      * Called when a wake lock is changing.
      */
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 264a910..8d13b0d 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -56,6 +56,7 @@
 import android.service.vr.IVrManager;
 import android.service.vr.IVrStateCallbacks;
 import android.util.EventLog;
+import android.util.PrintWriterPrinter;
 import android.util.Slog;
 import android.util.SparseIntArray;
 import android.util.TimeUtils;
@@ -73,9 +74,7 @@
 import com.android.server.am.BatteryStatsService;
 import com.android.server.lights.Light;
 import com.android.server.lights.LightsManager;
-import com.android.server.vr.VrManagerInternal;
 import com.android.server.vr.VrManagerService;
-import com.android.server.vr.VrStateListener;
 import libcore.util.Objects;
 
 import java.io.FileDescriptor;
@@ -108,6 +107,8 @@
     private static final int MSG_SANDMAN = 2;
     // Message: Sent when the screen brightness boost expires.
     private static final int MSG_SCREEN_BRIGHTNESS_BOOST_TIMEOUT = 3;
+    // Message: Polling to look for long held wake locks.
+    private static final int MSG_CHECK_FOR_LONG_WAKELOCKS = 4;
 
     // Dirty bit: mWakeLocks changed
     private static final int DIRTY_WAKE_LOCKS = 1 << 0;
@@ -159,6 +160,9 @@
     // This should perhaps be a setting.
     private static final int SCREEN_BRIGHTNESS_BOOST_TIMEOUT = 5 * 1000;
 
+    // How long a partial wake lock must be held until we consider it a long wake lock.
+    static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000;
+
     // Power hints defined in hardware/libhardware/include/hardware/power.h.
     private static final int POWER_HINT_LOW_POWER = 5;
     private static final int POWER_HINT_VR_MODE = 7;
@@ -221,6 +225,15 @@
     // A bitfield that summarizes the state of all active wakelocks.
     private int mWakeLockSummary;
 
+    // Have we scheduled a message to check for long wake locks?  This is when we will check.
+    private long mNotifyLongScheduled;
+
+    // Last time we checked for long wake locks.
+    private long mNotifyLongDispatched;
+
+    // The time we decided to do next long check.
+    private long mNotifyLongNextCheck;
+
     // If true, instructs the display controller to wait for the proximity sensor to
     // go negative before turning the screen on.
     private boolean mRequestWaitForNegativeProximity;
@@ -1026,6 +1039,38 @@
             mNotifier.onWakeLockAcquired(wakeLock.mFlags, wakeLock.mTag, wakeLock.mPackageName,
                     wakeLock.mOwnerUid, wakeLock.mOwnerPid, wakeLock.mWorkSource,
                     wakeLock.mHistoryTag);
+            restartNofifyLongTimerLocked(wakeLock);
+        }
+    }
+
+    private void enqueueNotifyLongMsgLocked(long time) {
+        mNotifyLongScheduled = time;
+        Message msg = mHandler.obtainMessage(MSG_CHECK_FOR_LONG_WAKELOCKS);
+        msg.setAsynchronous(true);
+        mHandler.sendMessageAtTime(msg, time);
+    }
+
+    private void restartNofifyLongTimerLocked(WakeLock wakeLock) {
+        wakeLock.mAcquireTime = SystemClock.uptimeMillis();
+        if ((wakeLock.mFlags & PowerManager.WAKE_LOCK_LEVEL_MASK)
+                == PowerManager.PARTIAL_WAKE_LOCK && mNotifyLongScheduled == 0) {
+            enqueueNotifyLongMsgLocked(wakeLock.mAcquireTime + MIN_LONG_WAKE_CHECK_INTERVAL);
+        }
+    }
+
+    private void notifyWakeLockLongStartedLocked(WakeLock wakeLock) {
+        if (mSystemReady && !wakeLock.mDisabled) {
+            wakeLock.mNotifiedLong = true;
+            mNotifier.onLongPartialWakeLockStart(wakeLock.mTag, wakeLock.mOwnerUid,
+                    wakeLock.mWorkSource, wakeLock.mHistoryTag);
+        }
+    }
+
+    private void notifyWakeLockLongFinishedLocked(WakeLock wakeLock) {
+        if (wakeLock.mNotifiedLong) {
+            wakeLock.mNotifiedLong = false;
+            mNotifier.onLongPartialWakeLockFinish(wakeLock.mTag, wakeLock.mOwnerUid,
+                    wakeLock.mWorkSource, wakeLock.mHistoryTag);
         }
     }
 
@@ -1035,15 +1080,23 @@
             mNotifier.onWakeLockChanging(wakeLock.mFlags, wakeLock.mTag, wakeLock.mPackageName,
                     wakeLock.mOwnerUid, wakeLock.mOwnerPid, wakeLock.mWorkSource,
                     wakeLock.mHistoryTag, flags, tag, packageName, uid, pid, ws, historyTag);
+            notifyWakeLockLongFinishedLocked(wakeLock);
+            // Changing the wake lock will count as releasing the old wake lock(s) and
+            // acquiring the new ones...  we do this because otherwise once a wakelock
+            // becomes long, if we just continued to treat it as long we can get in to
+            // situations where we spam battery stats with every following change to it.
+            restartNofifyLongTimerLocked(wakeLock);
         }
     }
 
     private void notifyWakeLockReleasedLocked(WakeLock wakeLock) {
         if (mSystemReady && wakeLock.mNotifiedAcquired) {
             wakeLock.mNotifiedAcquired = false;
+            wakeLock.mAcquireTime = 0;
             mNotifier.onWakeLockReleased(wakeLock.mFlags, wakeLock.mTag,
                     wakeLock.mPackageName, wakeLock.mOwnerUid, wakeLock.mOwnerPid,
                     wakeLock.mWorkSource, wakeLock.mHistoryTag);
+            notifyWakeLockLongFinishedLocked(wakeLock);
         }
     }
 
@@ -1600,6 +1653,42 @@
         }
     }
 
+    void checkForLongWakeLocks() {
+        synchronized (mLock) {
+            final long now = SystemClock.uptimeMillis();
+            mNotifyLongDispatched = now;
+            final long when = now - MIN_LONG_WAKE_CHECK_INTERVAL;
+            long nextCheckTime = Long.MAX_VALUE;
+            final int numWakeLocks = mWakeLocks.size();
+            for (int i = 0; i < numWakeLocks; i++) {
+                final WakeLock wakeLock = mWakeLocks.get(i);
+                if ((wakeLock.mFlags & PowerManager.WAKE_LOCK_LEVEL_MASK)
+                        == PowerManager.PARTIAL_WAKE_LOCK) {
+                    if (wakeLock.mNotifiedAcquired && !wakeLock.mNotifiedLong) {
+                        if (wakeLock.mAcquireTime < when) {
+                            // This wake lock has exceeded the long acquire time, report!
+                            notifyWakeLockLongStartedLocked(wakeLock);
+                        } else {
+                            // This wake lock could still become a long one, at this time.
+                            long checkTime = wakeLock.mAcquireTime + MIN_LONG_WAKE_CHECK_INTERVAL;
+                            if (checkTime < nextCheckTime) {
+                                nextCheckTime = checkTime;
+                            }
+                        }
+                    }
+                }
+            }
+            mNotifyLongScheduled = 0;
+            mHandler.removeMessages(MSG_CHECK_FOR_LONG_WAKELOCKS);
+            if (nextCheckTime != Long.MAX_VALUE) {
+                mNotifyLongNextCheck = nextCheckTime;
+                enqueueNotifyLongMsgLocked(nextCheckTime);
+            } else {
+                mNotifyLongNextCheck = 0;
+            }
+        }
+    }
+
     /**
      * Updates the value of mUserActivitySummary to summarize the user requested
      * state of the system such as whether the screen should be bright or dim.
@@ -2749,6 +2838,27 @@
             pw.println("  mHalAutoSuspendModeEnabled=" + mHalAutoSuspendModeEnabled);
             pw.println("  mHalInteractiveModeEnabled=" + mHalInteractiveModeEnabled);
             pw.println("  mWakeLockSummary=0x" + Integer.toHexString(mWakeLockSummary));
+            pw.print("  mNotifyLongScheduled=");
+            if (mNotifyLongScheduled == 0) {
+                pw.print("(none)");
+            } else {
+                TimeUtils.formatDuration(mNotifyLongScheduled, SystemClock.uptimeMillis(), pw);
+            }
+            pw.println();
+            pw.print("  mNotifyLongDispatched=");
+            if (mNotifyLongDispatched == 0) {
+                pw.print("(none)");
+            } else {
+                TimeUtils.formatDuration(mNotifyLongDispatched, SystemClock.uptimeMillis(), pw);
+            }
+            pw.println();
+            pw.print("  mNotifyLongNextCheck=");
+            if (mNotifyLongNextCheck == 0) {
+                pw.print("(none)");
+            } else {
+                TimeUtils.formatDuration(mNotifyLongNextCheck, SystemClock.uptimeMillis(), pw);
+            }
+            pw.println();
             pw.println("  mUserActivitySummary=0x" + Integer.toHexString(mUserActivitySummary));
             pw.println("  mRequestWaitForNegativeProximity=" + mRequestWaitForNegativeProximity);
             pw.println("  mSandmanScheduled=" + mSandmanScheduled);
@@ -2857,6 +2967,10 @@
             }
 
             pw.println();
+            pw.println("Looper state:");
+            mHandler.getLooper().dump(new PrintWriterPrinter(pw), "  ");
+
+            pw.println();
             pw.println("Wake Locks: size=" + mWakeLocks.size());
             for (WakeLock wl : mWakeLocks) {
                 pw.println("  " + wl);
@@ -2985,6 +3099,9 @@
                 case MSG_SCREEN_BRIGHTNESS_BOOST_TIMEOUT:
                     handleScreenBrightnessBoostTimeout();
                     break;
+                case MSG_CHECK_FOR_LONG_WAKELOCKS:
+                    checkForLongWakeLocks();
+                    break;
             }
         }
     }
@@ -3001,7 +3118,9 @@
         public String mHistoryTag;
         public final int mOwnerUid;
         public final int mOwnerPid;
+        public long mAcquireTime;
         public boolean mNotifiedAcquired;
+        public boolean mNotifiedLong;
         public boolean mDisabled;
 
         public WakeLock(IBinder lock, int flags, String tag, String packageName,
@@ -3060,9 +3179,34 @@
 
         @Override
         public String toString() {
-            return getLockLevelString()
-                    + " '" + mTag + "'" + getLockFlagsString() + (mDisabled ? " DISABLED" : "")
-                    + " (uid=" + mOwnerUid + ", pid=" + mOwnerPid + ", ws=" + mWorkSource + ")";
+            StringBuilder sb = new StringBuilder();
+            sb.append(getLockLevelString());
+            sb.append(" '");
+            sb.append(mTag);
+            sb.append("'");
+            sb.append(getLockFlagsString());
+            if (mDisabled) {
+                sb.append(" DISABLED");
+            }
+            if (mNotifiedAcquired) {
+                sb.append(" ACQ=");
+                TimeUtils.formatDuration(mAcquireTime-SystemClock.uptimeMillis(), sb);
+            }
+            if (mNotifiedLong) {
+                sb.append(" LONG");
+            }
+            sb.append(" (uid=");
+            sb.append(mOwnerUid);
+            if (mOwnerPid != 0) {
+                sb.append(" pid=");
+                sb.append(mOwnerPid);
+            }
+            if (mWorkSource != null) {
+                sb.append(" ws=");
+                sb.append(mWorkSource);
+            }
+            sb.append(")");
+            return sb.toString();
         }
 
         @SuppressWarnings("deprecation")
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index ca92b90..552803f 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -29,6 +29,7 @@
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.UserHandle;
+import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Slog;
 import android.view.KeyEvent;
@@ -942,6 +943,20 @@
                                 + " token=" + tok.token);
             }
             pw.println("  mCurrentUserId=" + mCurrentUserId);
+            pw.println("  mIcons=");
+            for (String slot : mIcons.keySet()) {
+                pw.println("    ");
+                pw.print(slot);
+                pw.print(" -> ");
+                final StatusBarIcon icon = mIcons.get(slot);
+                pw.print(icon);
+                if (!TextUtils.isEmpty(icon.contentDescription)) {
+                    pw.print(" \"");
+                    pw.print(icon.contentDescription);
+                    pw.print("\"");
+                }
+                pw.println();
+            }
         }
     }
 }
diff --git a/services/core/java/com/android/server/twilight/TwilightService.java b/services/core/java/com/android/server/twilight/TwilightService.java
index 89e5e58..ee7a4a0 100644
--- a/services/core/java/com/android/server/twilight/TwilightService.java
+++ b/services/core/java/com/android/server/twilight/TwilightService.java
@@ -16,18 +16,12 @@
 
 package com.android.server.twilight;
 
-import com.android.server.SystemService;
-import com.android.server.TwilightCalculator;
-
-import android.app.ActivityManager;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.database.ContentObserver;
 import android.location.Criteria;
 import android.location.Location;
 import android.location.LocationListener;
@@ -36,64 +30,52 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.provider.Settings.Secure;
 import android.text.format.DateUtils;
 import android.text.format.Time;
 import android.util.Slog;
 
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.SystemService;
+import com.android.server.TwilightCalculator;
+
 import java.util.ArrayList;
 import java.util.Iterator;
-
-import libcore.util.Objects;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * Figures out whether it's twilight time based on the user's location.
- *
+ * <p>
  * Used by the UI mode manager and other components to adjust night mode
  * effects based on sunrise and sunset.
  */
 public final class TwilightService extends SystemService {
-    static final String TAG = "TwilightService";
-    static final boolean DEBUG = false;
-    static final String ACTION_UPDATE_TWILIGHT_STATE =
+
+    private static final String TAG = "TwilightService";
+    private static final boolean DEBUG = false;
+
+    private static final String ACTION_UPDATE_TWILIGHT_STATE =
             "com.android.server.action.UPDATE_TWILIGHT_STATE";
 
-    // The amount of time after or before sunrise over which to start adjusting
-    // twilight affected things.  We want the change to happen gradually so that
-    // it is below the threshold of perceptibility and so that the adjustment has
-    // maximum effect well after dusk.
+    /**
+     * The amount of time after or before sunrise over which to start adjusting twilight affected
+     * things. We want the change to happen gradually so that it is below the threshold of
+     * perceptibility and so that the adjustment has and so that the adjustment has
+     * maximum effect well after dusk.
+     */
     private static final long TWILIGHT_ADJUSTMENT_TIME = DateUtils.HOUR_IN_MILLIS * 2;
 
-    // Broadcast when twilight changes.
-    public static final String ACTION_TWILIGHT_CHANGED = "android.intent.action.TWILIGHT_CHANGED";
+    private final Object mLock = new Object();
 
-    public static final String EXTRA_IS_NIGHT = "isNight";
-    public static final String EXTRA_AMOUNT = "amount";
+    @GuardedBy("mLock")
+    private final List<TwilightListenerRecord> mListeners = new ArrayList<>();
 
-    // Amount of time the TwilightService will stay locked in an override state before switching
-    // back to auto.
-    private static final long RESET_TIME = DateUtils.HOUR_IN_MILLIS * 2;
-    private static final String EXTRA_RESET_USER = "user";
+    private AlarmManager mAlarmManager;
+    private LocationManager mLocationManager;
+    private LocationHandler mLocationHandler;
 
-    private static final String ACTION_RESET_TWILIGHT_AUTO =
-            "com.android.server.action.RESET_TWILIGHT_AUTO";
-
-    final Object mLock = new Object();
-
-    AlarmManager mAlarmManager;
-    LocationManager mLocationManager;
-    LocationHandler mLocationHandler;
-
-    final ArrayList<TwilightListenerRecord> mListeners =
-            new ArrayList<TwilightListenerRecord>();
-
-    TwilightState mTwilightState;
-
-    private int mCurrentUser;
-    private boolean mLocked;
-    private boolean mBootCompleted;
+    @GuardedBy("mLock")
+    private TwilightState mTwilightState;
 
     public TwilightService(Context context) {
         super(context);
@@ -105,13 +87,11 @@
         mLocationManager = (LocationManager) getContext().getSystemService(
                 Context.LOCATION_SERVICE);
         mLocationHandler = new LocationHandler();
-        mCurrentUser = ActivityManager.getCurrentUser();
 
         IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
         filter.addAction(Intent.ACTION_TIME_CHANGED);
         filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
         filter.addAction(Intent.ACTION_USER_SWITCHED);
-        filter.addAction(ACTION_UPDATE_TWILIGHT_STATE);
         getContext().registerReceiver(mReceiver, filter);
 
         publishLocalService(TwilightManager.class, mService);
@@ -120,81 +100,29 @@
     @Override
     public void onBootPhase(int phase) {
         if (phase == PHASE_BOOT_COMPLETED) {
-            getContext().getContentResolver().registerContentObserver(
-                    Secure.getUriFor(Secure.TWILIGHT_MODE), false, mContentObserver, mCurrentUser);
-            mContentObserver.onChange(true);
-            mBootCompleted = true;
-            sendBroadcast();
-        }
-    }
-
-    private void reregisterSettingObserver() {
-        final ContentResolver contentResolver = getContext().getContentResolver();
-        contentResolver.unregisterContentObserver(mContentObserver);
-        contentResolver.registerContentObserver(Secure.getUriFor(Secure.TWILIGHT_MODE), false,
-                mContentObserver, mCurrentUser);
-        mContentObserver.onChange(true);
-    }
-
-    private void setLockedState(TwilightState state) {
-        synchronized (mLock) {
-            // Make sure we aren't locked so we can set the state.
-            mLocked = false;
-            setTwilightState(state);
-            // Make sure we leave the state locked, so it cant be changed.
-            mLocked = true;
-            // TODO: Don't bother updating state when locked.
+            // Initialize the current twilight state.
+            mLocationHandler.requestTwilightUpdate();
         }
     }
 
     private void setTwilightState(TwilightState state) {
         synchronized (mLock) {
-            if (mLocked) {
-                // State has been locked by secure setting, shouldn't be changed.
-                return;
-            }
-            if (!Objects.equal(mTwilightState, state)) {
+            if (!Objects.equals(mTwilightState, state)) {
                 if (DEBUG) {
                     Slog.d(TAG, "Twilight state changed: " + state);
                 }
 
                 mTwilightState = state;
 
-                final int listenerLen = mListeners.size();
-                for (int i = 0; i < listenerLen; i++) {
-                    mListeners.get(i).postUpdate();
+                for (TwilightListenerRecord mListener : mListeners) {
+                    mListener.postUpdate();
                 }
             }
         }
-        sendBroadcast();
-    }
-
-    private void sendBroadcast() {
-        synchronized (mLock) {
-            if (mTwilightState == null) {
-                return;
-            }
-            if (mBootCompleted) {
-                Intent intent = new Intent(ACTION_TWILIGHT_CHANGED);
-                intent.putExtra(EXTRA_IS_NIGHT, mTwilightState.isNight());
-                intent.putExtra(EXTRA_AMOUNT, mTwilightState.getAmount());
-                intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
-                getContext().sendStickyBroadcastAsUser(intent, UserHandle.ALL);
-            }
-        }
-    }
-
-    private void scheduleReset() {
-        long resetTime = System.currentTimeMillis() + RESET_TIME;
-        Intent resetIntent = new Intent(ACTION_RESET_TWILIGHT_AUTO);
-        resetIntent.putExtra(EXTRA_RESET_USER, mCurrentUser);
-        PendingIntent pendingIntent = PendingIntent.getBroadcast(
-                getContext(), 0, resetIntent, 0);
-        mAlarmManager.cancel(pendingIntent);
-        mAlarmManager.setExact(AlarmManager.RTC, resetTime, pendingIntent);
     }
 
     private static class TwilightListenerRecord implements Runnable {
+
         private final TwilightListener mListener;
         private final Handler mHandler;
 
@@ -211,15 +139,9 @@
         public void run() {
             mListener.onTwilightStateChanged();
         }
-
     }
 
     private final TwilightManager mService = new TwilightManager() {
-        /**
-         * Gets the current twilight state.
-         *
-         * @return The current twilight state, or null if no information is available.
-         */
         @Override
         public TwilightState getCurrentState() {
             synchronized (mLock) {
@@ -227,11 +149,6 @@
             }
         }
 
-        /**
-         * Listens for twilight time.
-         *
-         * @param listener The listener.
-         */
         @Override
         public void registerListener(TwilightListener listener, Handler handler) {
             synchronized (mLock) {
@@ -286,6 +203,7 @@
     }
 
     private final class LocationHandler extends Handler {
+
         private static final int MSG_ENABLE_LOCATION_UPDATES = 1;
         private static final int MSG_GET_NEW_LOCATION_UPDATE = 2;
         private static final int MSG_PROCESS_NEW_LOCATION = 3;
@@ -301,13 +219,14 @@
         private static final double FACTOR_GMT_OFFSET_LONGITUDE =
                 1000.0 * 360.0 / DateUtils.DAY_IN_MILLIS;
 
+        private final TwilightCalculator mTwilightCalculator = new TwilightCalculator();
+
         private boolean mPassiveListenerEnabled;
         private boolean mNetworkListenerEnabled;
         private boolean mDidFirstInit;
         private long mLastNetworkRegisterTime = -MIN_LOCATION_UPDATE_MS;
         private long mLastUpdateInterval;
         private Location mLocation;
-        private final TwilightCalculator mTwilightCalculator = new TwilightCalculator();
 
         public void processNewLocation(Location location) {
             Message msg = obtainMessage(MSG_PROCESS_NEW_LOCATION, location);
@@ -334,14 +253,14 @@
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case MSG_PROCESS_NEW_LOCATION: {
-                    final Location location = (Location)msg.obj;
+                    final Location location = (Location) msg.obj;
                     final boolean hasMoved = hasMoved(mLocation, location);
                     final boolean hasBetterAccuracy = mLocation == null
                             || location.getAccuracy() < mLocation.getAccuracy();
                     if (DEBUG) {
                         Slog.d(TAG, "Processing new location: " + location
-                               + ", hasMoved=" + hasMoved
-                               + ", hasBetterAccuracy=" + hasBetterAccuracy);
+                                + ", hasMoved=" + hasMoved
+                                + ", hasBetterAccuracy=" + hasBetterAccuracy);
                     }
                     if (hasMoved || hasBetterAccuracy) {
                         setLocation(location);
@@ -373,8 +292,8 @@
                     // distance.
                     boolean networkLocationEnabled;
                     try {
-                        networkLocationEnabled =
-                            mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+                        networkLocationEnabled = mLocationManager.isProviderEnabled(
+                                LocationManager.NETWORK_PROVIDER);
                     } catch (Exception e) {
                         // we may get IllegalArgumentException if network location provider
                         // does not exist or is not yet installed.
@@ -398,8 +317,8 @@
                     // and network).
                     boolean passiveLocationEnabled;
                     try {
-                        passiveLocationEnabled =
-                            mLocationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER);
+                        passiveLocationEnabled = mLocationManager.isProviderEnabled(
+                                LocationManager.PASSIVE_PROVIDER);
                     } catch (Exception e) {
                         // we may get IllegalArgumentException if passive location provider
                         // does not exist or is not yet installed.
@@ -409,7 +328,7 @@
                     if (!mPassiveListenerEnabled && passiveLocationEnabled) {
                         mPassiveListenerEnabled = true;
                         mLocationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER,
-                                0, LOCATION_UPDATE_DISTANCE_METER , mLocationListener);
+                                0, LOCATION_UPDATE_DISTANCE_METER, mLocationListener);
                     }
 
                     if (!(mNetworkListenerEnabled && mPassiveListenerEnabled)) {
@@ -444,14 +363,14 @@
                 // pick the most recent location
                 if (location == null || (lastKnownLocation != null &&
                         location.getElapsedRealtimeNanos() <
-                        lastKnownLocation.getElapsedRealtimeNanos())) {
+                                lastKnownLocation.getElapsedRealtimeNanos())) {
                     location = lastKnownLocation;
                 }
             }
 
             // In the case there is no location available (e.g. GPS fix or network location
-            // is not available yet), the longitude of the location is estimated using the timezone,
-            // latitude and accuracy are set to get a good average.
+            // is not available yet), the longitude of the location is estimated using the
+            // timezone, latitude and accuracy are set to get a good average.
             if (location == null) {
                 Time currentTime = new Time();
                 currentTime.set(System.currentTimeMillis());
@@ -543,58 +462,22 @@
                 Slog.d(TAG, "Next update in " + (nextUpdate - now) + " ms");
             }
 
-            Intent updateIntent = new Intent(ACTION_UPDATE_TWILIGHT_STATE);
-            PendingIntent pendingIntent = PendingIntent.getBroadcast(
-                    getContext(), 0, updateIntent, 0);
+            final PendingIntent pendingIntent = PendingIntent.getBroadcast(
+                    getContext(), 0, new Intent(ACTION_UPDATE_TWILIGHT_STATE), 0);
             mAlarmManager.cancel(pendingIntent);
             mAlarmManager.setExact(AlarmManager.RTC, nextUpdate, pendingIntent);
         }
     }
 
-    private final ContentObserver mContentObserver = new ContentObserver(new Handler()) {
-        @Override
-        public void onChange(boolean selfChange) {
-            super.onChange(selfChange);
-            int value = Secure.getIntForUser(getContext().getContentResolver(),
-                    Secure.TWILIGHT_MODE, Secure.TWILIGHT_MODE_AUTO, mCurrentUser);
-            if (value == Secure.TWILIGHT_MODE_LOCKED_OFF) {
-                setLockedState(new TwilightState(false, 0));
-            } else if (value == Secure.TWILIGHT_MODE_LOCKED_ON) {
-                setLockedState(new TwilightState(true, 1));
-            } else if (value == Secure.TWILIGHT_MODE_AUTO_OVERRIDE_OFF) {
-                setLockedState(new TwilightState(false, 0));
-                scheduleReset();
-            } else if (value == Secure.TWILIGHT_MODE_AUTO_OVERRIDE_ON) {
-                setLockedState(new TwilightState(true, 1));
-                scheduleReset();
-            } else {
-                mLocked = false;
-                mLocationHandler.requestTwilightUpdate();
-            }
-        }
-    };
-
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) {
-                mCurrentUser = ActivityManager.getCurrentUser();
-                reregisterSettingObserver();
-                return;
-            }
             if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())
                     && !intent.getBooleanExtra("state", false)) {
                 // Airplane mode is now off!
                 mLocationHandler.requestLocationUpdate();
                 return;
             }
-
-            if (ACTION_RESET_TWILIGHT_AUTO.equals(intent.getAction())) {
-                int user = intent.getIntExtra(EXTRA_RESET_USER, 0);
-                Settings.Secure.putIntForUser(getContext().getContentResolver(),
-                        Secure.TWILIGHT_MODE, Secure.TWILIGHT_MODE_AUTO, user);
-                return;
-            }
             // Time zone has changed or alarm expired.
             mLocationHandler.requestTwilightUpdate();
         }
@@ -602,32 +485,40 @@
 
     // A LocationListener to initialize the network location provider. The location updates
     // are handled through the passive location provider.
-    private final LocationListener mEmptyLocationListener =  new LocationListener() {
+    private final LocationListener mEmptyLocationListener = new LocationListener() {
+        @Override
         public void onLocationChanged(Location location) {
         }
 
-        public void onProviderDisabled(String provider) {
+        @Override
+        public void onStatusChanged(String provider, int status, Bundle extras) {
         }
 
+        @Override
         public void onProviderEnabled(String provider) {
         }
 
-        public void onStatusChanged(String provider, int status, Bundle extras) {
+        @Override
+        public void onProviderDisabled(String provider) {
         }
     };
 
     private final LocationListener mLocationListener = new LocationListener() {
+        @Override
         public void onLocationChanged(Location location) {
             mLocationHandler.processNewLocation(location);
         }
 
-        public void onProviderDisabled(String provider) {
+        @Override
+        public void onStatusChanged(String provider, int status, Bundle extras) {
         }
 
+        @Override
         public void onProviderEnabled(String provider) {
         }
 
-        public void onStatusChanged(String provider, int status, Bundle extras) {
+        @Override
+        public void onProviderDisabled(String provider) {
         }
     };
 }
diff --git a/services/core/java/com/android/server/twilight/TwilightState.java b/services/core/java/com/android/server/twilight/TwilightState.java
index 81abc13..dec053b 100644
--- a/services/core/java/com/android/server/twilight/TwilightState.java
+++ b/services/core/java/com/android/server/twilight/TwilightState.java
@@ -24,6 +24,7 @@
  * This object is immutable.
  */
 public class TwilightState {
+
     private final boolean mIsNight;
     private final float mAmount;
 
diff --git a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
index 77e8b1f..7126cb5 100644
--- a/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
+++ b/services/core/java/com/android/server/vr/EnabledComponentsObserver.java
@@ -215,7 +215,11 @@
      */
     public ArraySet<ComponentName> getInstalled(int userId) {
         synchronized (mLock) {
-            return mInstalledSet.get(userId);
+            ArraySet<ComponentName> ret = mInstalledSet.get(userId);
+            if (ret == null) {
+                return new ArraySet<ComponentName>();
+            }
+            return ret;
         }
     }
 
@@ -227,7 +231,12 @@
      */
     public ArraySet<ComponentName> getEnabled(int userId) {
         synchronized (mLock) {
-            return mEnabledSet.get(userId);
+            ArraySet<ComponentName> ret = mEnabledSet.get(userId);
+            if (ret == null) {
+                return new ArraySet<ComponentName>();
+            }
+            return ret;
+
         }
     }
 
@@ -246,7 +255,9 @@
         Intent queryIntent = new Intent(serviceName);
         List<ResolveInfo> installedServices = pm.queryIntentServicesAsUser(
                 queryIntent,
-                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA,
+                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA |
+                                    PackageManager.MATCH_DIRECT_BOOT_AWARE |
+                                    PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
                 userId);
         if (installedServices != null) {
             for (int i = 0, count = installedServices.size(); i < count; i++) {
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java
index 5fefd4c..7d20931 100644
--- a/services/core/java/com/android/server/vr/VrManagerService.java
+++ b/services/core/java/com/android/server/vr/VrManagerService.java
@@ -403,107 +403,6 @@
 
         publishLocalService(VrManagerInternal.class, new LocalService());
         publishBinderService(VR_MANAGER_BINDER_SERVICE, mVrManager.asBinder());
-
-        // If there are no VR packages installed on the device, then disable VR
-        // components, otherwise, enable them.
-        setEnabledStatusOfVrComponents();
-    }
-
-    private void setEnabledStatusOfVrComponents() {
-        ArraySet<ComponentName> vrComponents = SystemConfig.getInstance().getDefaultVrComponents();
-        if (vrComponents == null) {
-           return;
-        }
-
-        // We only want to enable VR components if there is a VR package installed on the device.
-        // The VR components themselves do not quality as a VR package, so exclude them.
-        ArraySet<String> vrComponentPackageNames = new ArraySet<>();
-        for (ComponentName componentName : vrComponents) {
-            vrComponentPackageNames.add(componentName.getPackageName());
-        }
-
-        // Check to see if there are any packages on the device, other than the VR component
-        // packages.
-        PackageManager pm = mContext.getPackageManager();
-        List<PackageInfo> packageInfos = pm.getInstalledPackages(
-                PackageManager.GET_CONFIGURATIONS);
-        boolean vrModeIsUsed = false;
-        for (PackageInfo packageInfo : packageInfos) {
-            if (packageInfo != null && packageInfo.packageName != null &&
-                    pm.getApplicationEnabledSetting(packageInfo.packageName) ==
-                            PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
-                vrModeIsUsed = enableVrComponentsIfVrModeUsed(pm, packageInfo,
-                        vrComponentPackageNames, vrComponents);
-                if (vrModeIsUsed) {
-                    break;
-                }
-            }
-        }
-
-        if (!vrModeIsUsed) {
-            Slog.i(TAG, "No VR packages found, disabling VR components");
-            setVrComponentsEnabledOrDisabled(vrComponents, false);
-
-            // Register to receive an intent when a new package is installed, in case that package
-            // requires VR components.
-            IntentFilter intentFilter = new IntentFilter();
-            intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
-            intentFilter.addDataScheme("package");
-            mContext.registerReceiver(new BroadcastReceiver() {
-                @Override
-                public void onReceive(Context context, Intent intent) {
-                    PackageManager pm = context.getPackageManager();
-                    final String packageName = intent.getData().getSchemeSpecificPart();
-                    if (packageName != null) {
-                        try {
-                            PackageInfo packageInfo = pm.getPackageInfo(packageName,
-                                    PackageManager.GET_CONFIGURATIONS);
-                            enableVrComponentsIfVrModeUsed(pm, packageInfo,
-                                    vrComponentPackageNames, vrComponents);
-                        } catch (NameNotFoundException e) {
-                        }
-                    }
-                };
-            }, intentFilter);
-        }
-    }
-
-    private void setVrComponentsEnabledOrDisabled(ArraySet<ComponentName> vrComponents,
-            boolean enabled) {
-        int state = enabled ?
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
-        PackageManager pm = mContext.getPackageManager();
-        for (ComponentName componentName : vrComponents) {
-            try {
-                // Note that we must first check for the existance of the package before trying
-                // to set its enabled state.  This is to prevent PackageManager from throwing
-                // an excepton if the package is not found (not just a NameNotFoundException
-                // exception).
-                PackageInfo packageInfo = pm.getPackageInfo(componentName.getPackageName(),
-                        PackageManager.GET_CONFIGURATIONS);
-                pm.setApplicationEnabledSetting(componentName.getPackageName(), state , 0);
-            } catch (NameNotFoundException e) {
-            }
-        }
-    }
-
-    private boolean enableVrComponentsIfVrModeUsed(PackageManager pm, PackageInfo packageInfo,
-            ArraySet<String> vrComponentPackageNames, ArraySet<ComponentName> vrComponents) {
-        boolean isVrComponent = vrComponents != null &&
-                vrComponentPackageNames.contains(packageInfo.packageName);
-        if (packageInfo != null && packageInfo.reqFeatures != null && !isVrComponent) {
-            for (FeatureInfo featureInfo : packageInfo.reqFeatures) {
-                if (featureInfo.name != null &&
-                    (featureInfo.name.equals(PackageManager.FEATURE_VR_MODE) ||
-                     featureInfo.name.equals(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE))) {
-                    Slog.i(TAG, "VR package found, enabling VR components");
-                    setVrComponentsEnabledOrDisabled(vrComponents, true);
-                    return true;
-                }
-            }
-        }
-        return false;
     }
 
     @Override
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 7907ea5..4cbccca 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -85,6 +85,7 @@
 
 import com.android.internal.R;
 import com.android.internal.content.PackageMonitor;
+import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.JournaledFile;
 import com.android.server.EventLogTags;
@@ -166,7 +167,7 @@
      * Observes the wallpaper for changes and notifies all IWallpaperServiceCallbacks
      * that the wallpaper has changed. The CREATE is triggered when there is no
      * wallpaper set and is created for the first time. The CLOSE_WRITE is triggered
-     * everytime the wallpaper is changed.
+     * every time the wallpaper is changed.
      */
     private class WallpaperObserver extends FileObserver {
 
@@ -175,7 +176,6 @@
         final File mWallpaperDir;
         final File mWallpaperFile;
         final File mWallpaperLockFile;
-        final File mWallpaperInfoFile;
 
         public WallpaperObserver(WallpaperData wallpaper) {
             super(getWallpaperDir(wallpaper.userId).getAbsolutePath(),
@@ -185,7 +185,6 @@
             mWallpaper = wallpaper;
             mWallpaperFile = new File(mWallpaperDir, WALLPAPER);
             mWallpaperLockFile = new File(mWallpaperDir, WALLPAPER_LOCK_ORIG);
-            mWallpaperInfoFile = new File(mWallpaperDir, WALLPAPER_INFO);
         }
 
         private WallpaperData dataForEvent(boolean sysChanged, boolean lockChanged) {
@@ -488,6 +487,7 @@
     final SparseArray<WallpaperData> mWallpaperMap = new SparseArray<WallpaperData>();
     final SparseArray<WallpaperData> mLockWallpaperMap = new SparseArray<WallpaperData>();
 
+    final SparseArray<Boolean> mUserRestorecon = new SparseArray<Boolean>();
     int mCurrentUserId;
 
     static class WallpaperData {
@@ -943,10 +943,34 @@
         mLockWallpaperMap.remove(userId);
     }
 
-    void onUnlockUser(int userId) {
+    void onUnlockUser(final int userId) {
         synchronized (mLock) {
-            if (mCurrentUserId == userId && mWaitingForUnlock) {
-                switchUser(userId, null);
+            if (mCurrentUserId == userId) {
+                if (mWaitingForUnlock) {
+                    // If we're switching users, now is when we transition the wallpaper
+                    switchUser(userId, null);
+                }
+
+                // Make sure that the SELinux labeling of all the relevant files is correct.
+                // This corrects for mislabeling bugs that might have arisen from move-to
+                // operations involving the wallpaper files.  This isn't timing-critical,
+                // so we do it in the background to avoid holding up the user unlock operation.
+                if (mUserRestorecon.get(userId) != Boolean.TRUE) {
+                    mUserRestorecon.put(userId, Boolean.TRUE);
+                    Runnable relabeler = new Runnable() {
+                        @Override
+                        public void run() {
+                            final File wallpaperDir = getWallpaperDir(userId);
+                            for (String filename : sPerUserFiles) {
+                                File f = new File(wallpaperDir, filename);
+                                if (f.exists()) {
+                                    SELinux.restorecon(f);
+                                }
+                            }
+                        }
+                    };
+                    BackgroundThread.getHandler().post(relabeler);
+                }
             }
         }
     }
@@ -1282,8 +1306,9 @@
     }
 
     @Override
-    public WallpaperInfo getWallpaperInfo() {
-        int userId = UserHandle.getCallingUserId();
+    public WallpaperInfo getWallpaperInfo(int userId) {
+        userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+                Binder.getCallingUid(), userId, false, true, "getWallpaperIdForUser", null);
         synchronized (mLock) {
             WallpaperData wallpaper = mWallpaperMap.get(userId);
             if (wallpaper != null && wallpaper.connection != null) {
@@ -1452,19 +1477,27 @@
     }
 
     @Override
-    public void setWallpaperComponentChecked(ComponentName name, String callingPackage) {
+    public void setWallpaperComponentChecked(ComponentName name, String callingPackage,
+            int userId) {
+
         if (isWallpaperSupported(callingPackage) && isSetWallpaperAllowed(callingPackage)) {
-            setWallpaperComponent(name);
+            setWallpaperComponent(name, userId);
         }
     }
 
     // ToDo: Remove this version of the function
     @Override
     public void setWallpaperComponent(ComponentName name) {
+        setWallpaperComponent(name, UserHandle.getCallingUserId());
+    }
+
+    private void setWallpaperComponent(ComponentName name, int userId) {
+        userId = ActivityManager.handleIncomingUser(getCallingPid(), getCallingUid(), userId,
+                false /* all */, true /* full */, "changing live wallpaper", null /* pkg */);
         checkPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT);
+
         synchronized (mLock) {
             if (DEBUG) Slog.v(TAG, "setWallpaperComponent name=" + name);
-            int userId = UserHandle.getCallingUserId();
             WallpaperData wallpaper = mWallpaperMap.get(userId);
             if (wallpaper == null) {
                 throw new IllegalStateException("Wallpaper not yet initialized for user " + userId);
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index 8be5dfb..1d6cc32 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -115,6 +115,16 @@
         }
     }
 
+    public void performComputeChangedWindowsNotLocked() {
+        WindowsForAccessibilityObserver observer = null;
+        synchronized (mWindowManagerService) {
+            observer = mWindowsForAccessibilityObserver;
+        }
+        if (observer != null) {
+            observer.performComputeChangedWindowsNotLocked();
+        }
+    }
+
     public void setMagnificationSpecLocked(MagnificationSpec spec) {
         if (mDisplayMagnifier != null) {
             mDisplayMagnifier.setMagnificationSpecLocked(spec);
@@ -389,7 +399,7 @@
             if (spec != null && !spec.isNop()) {
                 WindowManagerPolicy policy = mWindowManagerService.mPolicy;
                 final int windowType = windowState.mAttrs.type;
-                if (!policy.isTopLevelWindow(windowType) && windowState.mAttachedWindow != null
+                if (!policy.isTopLevelWindow(windowType) && windowState.isChildWindow()
                         && !policy.canMagnifyWindow(windowType)) {
                     return null;
                 }
@@ -1196,34 +1206,10 @@
                     (int) windowFrame.right, (int) windowFrame.bottom);
         }
 
-        private static WindowInfo obtainPopulatedWindowInfo(WindowState windowState,
-                Rect boundsInScreen) {
-            WindowInfo window = WindowInfo.obtain();
-            window.type = windowState.mAttrs.type;
-            window.layer = windowState.mLayer;
-            window.token = windowState.mClient.asBinder();
-            window.title = windowState.mAttrs.accessibilityTitle;
-            window.accessibilityIdOfAnchor = windowState.mAttrs.accessibilityIdOfAnchor;
-
-            WindowState attachedWindow = windowState.mAttachedWindow;
-            if (attachedWindow != null) {
-                window.parentToken = attachedWindow.mClient.asBinder();
-            }
-
-            window.focused = windowState.isFocused();
+        private static WindowInfo obtainPopulatedWindowInfo(
+                WindowState windowState, Rect boundsInScreen) {
+            final WindowInfo window = windowState.getWindowInfo();
             window.boundsInScreen.set(boundsInScreen);
-
-            final int childCount = windowState.mChildWindows.size();
-            if (childCount > 0) {
-                if (window.childTokens == null) {
-                    window.childTokens = new ArrayList<IBinder>();
-                }
-                for (int j = 0; j < childCount; j++) {
-                    WindowState child = windowState.mChildWindows.get(j);
-                    window.childTokens.add(child.mClient.asBinder());
-                }
-            }
-
             return window;
         }
 
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 2b58156..3aefc08 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -604,7 +604,7 @@
             float scaleH = mTmpRect.height() / (float) appHeight;
             Animation scale = new ScaleAnimation(scaleW, 1, scaleH, 1,
                     computePivot(mTmpRect.left, scaleW),
-                    computePivot(mTmpRect.right, scaleH));
+                    computePivot(mTmpRect.top, scaleH));
             scale.setInterpolator(mDecelerateInterpolator);
 
             Animation alpha = new AlphaAnimation(0, 1);
@@ -1615,8 +1615,7 @@
         if (isTransitionSet()) {
             clear();
             mNextAppTransitionType = NEXT_TRANSIT_TYPE_SCALE_UP;
-            putDefaultNextAppTransitionCoordinates(startX, startY, startX + startWidth,
-                    startY + startHeight, null);
+            putDefaultNextAppTransitionCoordinates(startX, startY, startWidth, startHeight, null);
             postAnimationCallback();
         }
     }
diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java
index a37b65a..39a549d 100644
--- a/services/core/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java
@@ -424,7 +424,7 @@
 
         final int numAllAppWinAnimators = mAllAppWinAnimators.size();
         for (int i = 0; i < numAllAppWinAnimators; i++) {
-            mAllAppWinAnimators.get(i).finishExit();
+            mAllAppWinAnimators.get(i).mWin.onExitAnimationDone();
         }
         mService.mAppTransition.notifyAppTransitionFinishedLocked(mAppToken.token);
         return false;
@@ -437,7 +437,7 @@
         for (int i=0; i<NW; i++) {
             WindowStateAnimator winAnimator = mAllAppWinAnimators.get(i);
             if (DEBUG_VISIBILITY) Slog.v(TAG, "performing show on: " + winAnimator);
-            winAnimator.performShowLocked();
+            winAnimator.mWin.performShowLocked();
             isAnimating |= winAnimator.isAnimationSet();
         }
         return isAnimating;
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 66e9fd86..1000043 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -26,7 +26,6 @@
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_MOVEMENT;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
-import static com.android.server.wm.WindowManagerService.WINDOW_REPLACEMENT_TIMEOUT_DURATION;
 import static com.android.server.wm.WindowManagerService.H.NOTIFY_ACTIVITY_DRAWN;
 
 import com.android.server.input.InputApplicationHandle;
@@ -225,7 +224,7 @@
                             win.mWinAnimator.mSurfaceController
                             + " pv=" + win.mPolicyVisibility
                             + " mDrawState=" + win.mWinAnimator.mDrawState
-                            + " ah=" + win.mAttachedHidden
+                            + " ph=" + win.isParentWindowHidden()
                             + " th="
                             + (win.mAppToken != null
                                     ? win.mAppToken.hiddenRequested : false)
@@ -363,7 +362,7 @@
 
             win.destroyOrSaveSurface();
             if (win.mRemoveOnExit) {
-                service.removeWindowInnerLocked(win);
+                win.remove();
             }
             final DisplayContent displayContent = win.getDisplayContent();
             if (displayContent != null && !displayList.contains(displayContent)) {
@@ -681,10 +680,10 @@
                 candidate.mReplacingWindow.mSkipEnterAnimationForSeamlessReplacement = false;
             }
             // Since the window already timed out, remove it immediately now.
-            // Use removeWindowInnerLocked() instead of removeWindowLocked(), as the latter
+            // Use WindowState#remove() instead of removeWindowLocked(), as the latter
             // delays removal on certain conditions, which will leave the stale window in the
             // stack and marked mWillReplaceWindow=false, so the window will never be removed.
-            service.removeWindowInnerLocked(candidate);
+            candidate.remove();
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index fba439f..4cdf601 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -30,6 +30,7 @@
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.graphics.Region.Op;
+import android.hardware.display.DisplayManagerInternal;
 import android.util.DisplayMetrics;
 import android.util.Slog;
 import android.view.Display;
@@ -94,9 +95,6 @@
     /** Detect user tapping outside of current focused stack bounds .*/
     Region mTouchExcludeRegion = new Region();
 
-    /** Detect user tapping in a non-resizeable task in docked or fullscreen stack .*/
-    Region mNonResizeableRegion = new Region();
-
     /** Save allocating when calculating rects */
     private final Rect mTmpRect = new Rect();
     private final Rect mTmpRect2 = new Rect();
@@ -200,12 +198,15 @@
     }
 
     void initializeDisplayBaseInfo() {
-        // Bootstrap the default logical display from the display manager.
-        final DisplayInfo newDisplayInfo =
-                mService.mDisplayManagerInternal.getDisplayInfo(mDisplayId);
-        if (newDisplayInfo != null) {
-            mDisplayInfo.copyFrom(newDisplayInfo);
+        final DisplayManagerInternal displayManagerInternal = mService.mDisplayManagerInternal;
+        if (displayManagerInternal != null) {
+            // Bootstrap the default logical display from the display manager.
+            final DisplayInfo newDisplayInfo = displayManagerInternal.getDisplayInfo(mDisplayId);
+            if (newDisplayInfo != null) {
+                mDisplayInfo.copyFrom(newDisplayInfo);
+            }
         }
+
         mBaseDisplayWidth = mInitialDisplayWidth = mDisplayInfo.logicalWidth;
         mBaseDisplayHeight = mInitialDisplayHeight = mDisplayInfo.logicalHeight;
         mBaseDisplayDensity = mInitialDisplayDensity = mDisplayInfo.logicalDensityDpi;
@@ -358,7 +359,6 @@
         mTouchExcludeRegion.set(mBaseDisplayRect);
         final int delta = mService.dipToPixel(RESIZE_HANDLE_WIDTH_IN_DP, mDisplayMetrics);
         boolean addBackFocusedTask = false;
-        mNonResizeableRegion.setEmpty();
         for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
             TaskStack stack = mStacks.get(stackNdx);
             final ArrayList<Task> tasks = stack.getTasks();
@@ -400,11 +400,6 @@
                     }
                     mTouchExcludeRegion.op(mTmpRect, Region.Op.DIFFERENCE);
                 }
-                if (task.isTwoFingerScrollMode()) {
-                    stack.getBounds(mTmpRect);
-                    mNonResizeableRegion.op(mTmpRect, Region.Op.UNION);
-                    break;
-                }
             }
         }
         // If we removed the focused task above, add it back and only leave its
@@ -432,7 +427,7 @@
             mTouchExcludeRegion.op(mTmpRegion, Op.UNION);
         }
         if (mTapDetector != null) {
-            mTapDetector.setTouchExcludeRegion(mTouchExcludeRegion, mNonResizeableRegion);
+            mTapDetector.setTouchExcludeRegion(mTouchExcludeRegion);
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index e73649d..f93e2ff 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -388,8 +388,8 @@
                 inputMethodManagerInternal.hideCurrentInputMethod();
                 mImeHideRequested = true;
             }
-        } else {
-            setMinimizedDockedStack(false);
+        } else if (setMinimizedDockedStack(false)) {
+            mService.mWindowPlacerLocked.performSurfacePlacement();
         }
     }
 
@@ -542,31 +542,43 @@
             return;
         }
 
-        clearImeAdjustAnimation();
+        final boolean imeChanged = clearImeAdjustAnimation();
+        boolean minimizedChange = false;
         if (minimizedDock) {
             if (animate) {
                 startAdjustAnimation(0f, 1f);
             } else {
-                setMinimizedDockedStack(true);
+                minimizedChange |= setMinimizedDockedStack(true);
             }
         } else {
             if (animate) {
                 startAdjustAnimation(1f, 0f);
             } else {
-                setMinimizedDockedStack(false);
+                minimizedChange |= setMinimizedDockedStack(false);
             }
         }
+        if (imeChanged || minimizedChange) {
+            if (imeChanged && !minimizedChange) {
+                Slog.d(TAG, "setMinimizedDockedStack: IME adjust changed due to minimizing,"
+                        + " minimizedDock=" + minimizedDock
+                        + " minimizedChange=" + minimizedChange);
+            }
+            mService.mWindowPlacerLocked.performSurfacePlacement();
+        }
     }
 
-    private void clearImeAdjustAnimation() {
+    private boolean clearImeAdjustAnimation() {
+        boolean changed = false;
         final ArrayList<TaskStack> stacks = mDisplayContent.getStacks();
         for (int i = stacks.size() - 1; i >= 0; --i) {
             final TaskStack stack = stacks.get(i);
             if (stack != null && stack.isAdjustedForIme()) {
                 stack.resetAdjustedForIme(true /* adjustBoundsNow */);
+                changed  = true;
             }
         }
         mAnimatingForIme = false;
+        return changed;
     }
 
     private void startAdjustAnimation(float from, float to) {
@@ -625,8 +637,21 @@
                 if (mDelayedImeWin != null) {
                     mDelayedImeWin.mWinAnimator.endDelayingAnimationStart();
                 }
+                // If the adjust status changed since this was posted, only notify
+                // the new states and don't animate.
+                long duration = 0;
+                if (mAdjustedForIme == adjustedForIme
+                        && mAdjustedForDivider == adjustedForDivider) {
+                    duration = IME_ADJUST_ANIM_DURATION;
+                } else {
+                    Slog.w(TAG, "IME adjust changed while waiting for drawn:"
+                            + " adjustedForIme=" + adjustedForIme
+                            + " adjustedForDivider=" + adjustedForDivider
+                            + " mAdjustedForIme=" + mAdjustedForIme
+                            + " mAdjustedForDivider=" + mAdjustedForDivider);
+                }
                 notifyAdjustedForImeChanged(
-                        adjustedForIme || adjustedForDivider, IME_ADJUST_ANIM_DURATION);
+                        mAdjustedForIme || mAdjustedForDivider, duration);
             };
         } else {
             notifyAdjustedForImeChanged(
@@ -634,15 +659,10 @@
         }
     }
 
-    private void setMinimizedDockedStack(boolean minimized) {
+    private boolean setMinimizedDockedStack(boolean minimized) {
         final TaskStack stack = mDisplayContent.getDockedStackVisibleForUserLocked();
         notifyDockedStackMinimizedChanged(minimized, 0);
-        if (stack == null) {
-            return;
-        }
-        if (stack.setAdjustedForMinimizedDock(minimized ? 1f : 0f)) {
-            mService.mWindowPlacerLocked.performSurfacePlacement();
-        }
+        return stack != null && stack.setAdjustedForMinimizedDock(minimized ? 1f : 0f);
     }
 
     private boolean isAnimationMaximizing() {
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index 4434730..00781c5 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -201,14 +201,6 @@
         inputWindowHandle.frameRight = frame.right;
         inputWindowHandle.frameBottom = frame.bottom;
 
-        if (child.isDockedInEffect()) {
-            // Adjust to account for non-resizeable tasks that's scrolled
-            inputWindowHandle.frameLeft += child.mXOffset;
-            inputWindowHandle.frameTop += child.mYOffset;
-            inputWindowHandle.frameRight += child.mXOffset;
-            inputWindowHandle.frameBottom += child.mYOffset;
-        }
-
         if (child.mGlobalScale != 1) {
             // If we are scaling the window, input coordinates need
             // to be inversely scaled to map from what is on screen
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index b4387b9..423b134 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -65,9 +65,6 @@
     final Rect mPreparedFrozenBounds = new Rect();
     final Configuration mPreparedFrozenMergedConfig = new Configuration();
 
-    private Rect mPreScrollBounds = new Rect();
-    private boolean mScrollValid;
-
     // Bounds used to calculate the insets.
     private final Rect mTempInsetBounds = new Rect();
 
@@ -234,22 +231,19 @@
             // Can't set to fullscreen if we don't have a display to get bounds from...
             return BOUNDS_CHANGE_NONE;
         }
-        if (mPreScrollBounds.equals(bounds) && oldFullscreen == mFullscreen && mRotation == rotation) {
+        if (mBounds.equals(bounds) && oldFullscreen == mFullscreen && mRotation == rotation) {
             return BOUNDS_CHANGE_NONE;
         }
 
         int boundsChange = BOUNDS_CHANGE_NONE;
-        if (mPreScrollBounds.left != bounds.left || mPreScrollBounds.top != bounds.top) {
+        if (mBounds.left != bounds.left || mBounds.top != bounds.top) {
             boundsChange |= BOUNDS_CHANGE_POSITION;
         }
-        if (mPreScrollBounds.width() != bounds.width() || mPreScrollBounds.height() != bounds.height()) {
+        if (mBounds.width() != bounds.width() || mBounds.height() != bounds.height()) {
             boundsChange |= BOUNDS_CHANGE_SIZE;
         }
 
-
-        mPreScrollBounds.set(bounds);
-
-        resetScrollLocked();
+        mBounds.set(bounds);
 
         mRotation = rotation;
         if (displayContent != null) {
@@ -352,67 +346,6 @@
         resizeLocked(mTmpRect2, mOverrideConfig, false /* forced */);
     }
 
-    void resetScrollLocked() {
-        if (mScrollValid) {
-            mScrollValid = false;
-            applyScrollToAllWindows(0, 0);
-        }
-        mBounds.set(mPreScrollBounds);
-    }
-
-    void applyScrollToAllWindows(final int xOffset, final int yOffset) {
-        for (int activityNdx = mAppTokens.size() - 1; activityNdx >= 0; --activityNdx) {
-            final ArrayList<WindowState> windows = mAppTokens.get(activityNdx).allAppWindows;
-            for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
-                final WindowState win = windows.get(winNdx);
-                win.mXOffset = xOffset;
-                win.mYOffset = yOffset;
-            }
-        }
-    }
-
-    void applyScrollToWindowIfNeeded(final WindowState win) {
-        if (mScrollValid) {
-            win.mXOffset = mBounds.left;
-            win.mYOffset = mBounds.top;
-        }
-    }
-
-    boolean scrollLocked(Rect bounds) {
-        // shift the task bound if it doesn't fully cover the stack area
-        mStack.getDimBounds(mTmpRect);
-        if (mService.mCurConfiguration.orientation == ORIENTATION_LANDSCAPE) {
-            if (bounds.left > mTmpRect.left) {
-                bounds.left = mTmpRect.left;
-                bounds.right = mTmpRect.left + mBounds.width();
-            } else if (bounds.right < mTmpRect.right) {
-                bounds.left = mTmpRect.right - mBounds.width();
-                bounds.right = mTmpRect.right;
-            }
-        } else {
-            if (bounds.top > mTmpRect.top) {
-                bounds.top = mTmpRect.top;
-                bounds.bottom = mTmpRect.top + mBounds.height();
-            } else if (bounds.bottom < mTmpRect.bottom) {
-                bounds.top = mTmpRect.bottom - mBounds.height();
-                bounds.bottom = mTmpRect.bottom;
-            }
-        }
-
-        // We can stop here if we're already scrolling and the scrolled bounds not changed.
-        if (mScrollValid && bounds.equals(mBounds)) {
-            return false;
-        }
-
-        // Normal setBounds() does not allow non-null bounds for fullscreen apps.
-        // We only change bounds for the scrolling case without change it size,
-        // on resizing path we should still want the validation.
-        mBounds.set(bounds);
-        mScrollValid = true;
-        applyScrollToAllWindows(bounds.left, bounds.top);
-        return true;
-    }
-
     /** Return true if the current bound can get outputted to the rest of the system as-is. */
     private boolean useCurrentBounds() {
         final DisplayContent displayContent = mStack.getDisplayContent();
@@ -583,11 +516,11 @@
         }
 
         // Device rotation changed.
-        // - Reset the bounds to the pre-scroll bounds as whatever scrolling was done is no longer
-        // valid.
+        // - We don't want the task to move around on the screen when this happens, so update the
+        //   task bounds so it stays in the same place.
         // - Rotate the bounds and notify activity manager if the task can be resized independently
-        // from its stack. The stack will take care of task rotation for the other case.
-        mTmpRect2.set(mPreScrollBounds);
+        //   from its stack. The stack will take care of task rotation for the other case.
+        mTmpRect2.set(mBounds);
 
         if (!StackId.isTaskResizeAllowed(mStack.mStackId)) {
             setBounds(mTmpRect2, mOverrideConfig);
@@ -600,7 +533,7 @@
             // call. We do this to prevent a deadlock between window manager lock and activity
             // manager lock been held.
             mService.mH.obtainMessage(RESIZE_TASK, mTaskId,
-                    RESIZE_MODE_SYSTEM_SCREEN_ROTATION, mPreScrollBounds).sendToTarget();
+                    RESIZE_MODE_SYSTEM_SCREEN_ROTATION, mBounds).sendToTarget();
         }
     }
 
@@ -708,36 +641,14 @@
         return mStack != null && mStack.mStackId == FREEFORM_WORKSPACE_STACK_ID;
     }
 
-    boolean inDockedWorkspace() {
-        return mStack != null && mStack.mStackId == DOCKED_STACK_ID;
-    }
-
     boolean inPinnedWorkspace() {
         return mStack != null && mStack.mStackId == PINNED_STACK_ID;
     }
 
-    boolean isResizeableByDockedStack() {
-        final DisplayContent displayContent = getDisplayContent();
-        return displayContent != null && displayContent.getDockedStackLocked() != null
-                && mStack != null && StackId.isTaskResizeableByDockedStack(mStack.mStackId);
-    }
-
     boolean isFloating() {
         return StackId.tasksAreFloating(mStack.mStackId);
     }
 
-    /**
-     * Whether the task should be treated as if it's docked. Returns true if the task
-     * is currently in docked workspace, or it's side-by-side to a docked task.
-     */
-    boolean isDockedInEffect() {
-        return inDockedWorkspace() || isResizeableByDockedStack();
-    }
-
-    boolean isTwoFingerScrollMode() {
-        return inCropWindowsResizeMode() && isDockedInEffect();
-    }
-
     WindowState getTopVisibleAppMainWindow() {
         final AppWindowToken token = getTopVisibleAppToken();
         return token != null ? token.findMainWindow() : null;
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index 80f73dc..5c321a1 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -345,20 +345,12 @@
         mStartDragX = startX;
         mStartDragY = startY;
 
-        if (mTask.isDockedInEffect()) {
-            // If this is a docked task or if task size is affected by docked stack changing size,
-            // we can only be here if the task is not resizeable and we're handling a two-finger
-            // scrolling. Use the original task bounds to position the task, the dim bounds
-            // is cropped and doesn't move.
-            mTask.getBounds(mTmpRect);
-        } else {
-            // Use the dim bounds, not the original task bounds. The cursor
-            // movement should be calculated relative to the visible bounds.
-            // Also, use the dim bounds of the task which accounts for
-            // multiple app windows. Don't use any bounds from win itself as it
-            // may not be the same size as the task.
-            mTask.getDimBounds(mTmpRect);
-        }
+        // Use the dim bounds, not the original task bounds. The cursor
+        // movement should be calculated relative to the visible bounds.
+        // Also, use the dim bounds of the task which accounts for
+        // multiple app windows. Don't use any bounds from win itself as it
+        // may not be the same size as the task.
+        mTask.getDimBounds(mTmpRect);
 
         if (resize) {
             if (startX < mTmpRect.left) {
@@ -422,52 +414,37 @@
         // This is a moving or scrolling operation.
         mTask.mStack.getDimBounds(mTmpRect);
 
-        boolean dragEnded = false;
         int nX = (int) x;
         int nY = (int) y;
         if (!mTmpRect.contains(nX, nY)) {
-            if (mTask.isDockedInEffect()) {
-                // We end the scrolling operation if position is outside the stack bounds.
-                dragEnded = true;
-            } else {
-                // For a moving operation we allow the pointer to go out of the stack bounds, but
-                // use the clamped pointer position for the drag bounds computation.
-                nX = Math.min(Math.max(nX, mTmpRect.left), mTmpRect.right);
-                nY = Math.min(Math.max(nY, mTmpRect.top), mTmpRect.bottom);
-            }
+            // For a moving operation we allow the pointer to go out of the stack bounds, but
+            // use the clamped pointer position for the drag bounds computation.
+            nX = Math.min(Math.max(nX, mTmpRect.left), mTmpRect.right);
+            nY = Math.min(Math.max(nY, mTmpRect.top), mTmpRect.bottom);
         }
 
         updateWindowDragBounds(nX, nY, mTmpRect);
         updateDimLayerVisibility(nX);
-        return dragEnded;
+        return false;
     }
 
     private void updateWindowDragBounds(int x, int y, Rect stackBounds) {
         final int offsetX = Math.round(x - mStartDragX);
         final int offsetY = Math.round(y - mStartDragY);
         mWindowDragBounds.set(mWindowOriginalBounds);
-        if (mTask.isDockedInEffect()) {
-            // Offset the bounds without clamp, the bounds will be shifted later
-            // by window manager before applying the scrolling.
-            if (mService.mCurConfiguration.orientation == ORIENTATION_LANDSCAPE) {
-                mWindowDragBounds.offset(offsetX, 0);
-            } else {
-                mWindowDragBounds.offset(0, offsetY);
-            }
-        } else {
-            // Horizontally, at least mMinVisibleWidth pixels of the window should remain visible.
-            final int maxLeft = stackBounds.right - mMinVisibleWidth;
-            final int minLeft = stackBounds.left + mMinVisibleWidth - mWindowOriginalBounds.width();
+        // Horizontally, at least mMinVisibleWidth pixels of the window should remain visible.
+        final int maxLeft = stackBounds.right - mMinVisibleWidth;
+        final int minLeft = stackBounds.left + mMinVisibleWidth - mWindowOriginalBounds.width();
 
-            // Vertically, the top mMinVisibleHeight of the window should remain visible.
-            // (This assumes that the window caption bar is at the top of the window).
-            final int minTop = stackBounds.top;
-            final int maxTop = stackBounds.bottom - mMinVisibleHeight;
+        // Vertically, the top mMinVisibleHeight of the window should remain visible.
+        // (This assumes that the window caption bar is at the top of the window).
+        final int minTop = stackBounds.top;
+        final int maxTop = stackBounds.bottom - mMinVisibleHeight;
 
-            mWindowDragBounds.offsetTo(
-                    Math.min(Math.max(mWindowOriginalBounds.left + offsetX, minLeft), maxLeft),
-                    Math.min(Math.max(mWindowOriginalBounds.top + offsetY, minTop), maxTop));
-        }
+        mWindowDragBounds.offsetTo(
+                Math.min(Math.max(mWindowOriginalBounds.left + offsetX, minLeft), maxLeft),
+                Math.min(Math.max(mWindowOriginalBounds.top + offsetY, minTop), maxTop));
+
         if (DEBUG_TASK_POSITIONING) Slog.d(TAG,
                 "updateWindowDragBounds: " + mWindowDragBounds);
     }
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 8be5b19..b137840 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -182,21 +182,9 @@
             Configuration config = configs.get(task.mTaskId);
             if (config != null) {
                 Rect bounds = taskBounds.get(task.mTaskId);
-                if (task.isTwoFingerScrollMode()) {
-                    // This is a non-resizeable task that's docked (or side-by-side to the docked
-                    // stack). It might have been scrolled previously, and after the stack resizing,
-                    // it might no longer fully cover the stack area.
-                    // Save the old bounds and re-apply the scroll. This adjusts the bounds to
-                    // fit the new stack bounds.
-                    task.resizeLocked(bounds, config, false /* forced */);
-                    task.getBounds(mTmpRect);
-                    task.scrollLocked(mTmpRect);
-                } else {
-                    task.resizeLocked(bounds, config, false /* forced */);
-                    task.setTempInsetBounds(
-                            taskTempInsetBounds != null ? taskTempInsetBounds.get(task.mTaskId)
-                                    : null);
-                }
+                task.resizeLocked(bounds, config, false /* forced */);
+                task.setTempInsetBounds(taskTempInsetBounds != null ?
+                        taskTempInsetBounds.get(task.mTaskId) : null);
             } else {
                 Slog.wtf(TAG_WM, "No config for task: " + task + ", is there a mismatch with AM?");
             }
@@ -250,19 +238,13 @@
         if (mFullscreen) {
             return;
         }
+
+        final boolean alignBottom = mAdjustedForIme && getDockSide() == DOCKED_TOP;
+
         // Update bounds of containing tasks.
         for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) {
             final Task task = mTasks.get(taskNdx);
-            if (task.isTwoFingerScrollMode()) {
-                // If we're scrolling we don't care about your bounds or configs,
-                // they should be null as if we were in fullscreen.
-                task.resizeLocked(null, null, false /* forced */);
-                task.getBounds(mTmpRect2);
-                task.scrollLocked(mTmpRect2);
-            } else {
-                final boolean alignBottom = mAdjustedForIme && getDockSide() == DOCKED_TOP;
-                task.alignToAdjustedBounds(adjustedBounds, tempInsetBounds, alignBottom);
-            }
+            task.alignToAdjustedBounds(adjustedBounds, tempInsetBounds, alignBottom);
         }
     }
 
@@ -542,11 +524,6 @@
         if (DEBUG_TASK_MOVEMENT) Slog.d(TAG_WM,
                 "positionTask: task=" + task + " position=" + position);
         mTasks.add(position, task);
-
-        // If we are moving the task across stacks, the scroll is no longer valid.
-        if (task.mStack != this) {
-            task.resetScrollLocked();
-        }
         task.mStack = this;
         task.updateDisplayInfo(mDisplayContent);
         boolean toTop = position == mTasks.size() - 1;
diff --git a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
index 73ce0f2..0310b97 100644
--- a/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
+++ b/services/core/java/com/android/server/wm/TaskTapPointerEventListener.java
@@ -19,7 +19,6 @@
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.hardware.input.InputManager;
-import android.view.GestureDetector;
 import android.view.MotionEvent;
 import android.view.WindowManagerPolicy.PointerEventListener;
 
@@ -37,10 +36,6 @@
     private final WindowManagerService mService;
     private final DisplayContent mDisplayContent;
     private final Rect mTmpRect = new Rect();
-    private final Region mNonResizeableRegion = new Region();
-    private boolean mTwoFingerScrolling;
-    private boolean mInGestureDetection;
-    private GestureDetector mGestureDetector;
     private int mPointerIconType = TYPE_NOT_SPECIFIED;
 
     public TaskTapPointerEventListener(WindowManagerService service,
@@ -49,18 +44,8 @@
         mDisplayContent = displayContent;
     }
 
-    // initialize the object, note this must be done outside WindowManagerService
-    // ctor, otherwise it may cause recursion as some code in GestureDetector ctor
-    // depends on WMS being already created.
-    void init() {
-        mGestureDetector = new GestureDetector(
-                mService.mContext, new TwoFingerScrollListener(), mService.mH);
-    }
-
     @Override
     public void onPointerEvent(MotionEvent motionEvent) {
-        doGestureDetection(motionEvent);
-
         final int action = motionEvent.getAction();
         switch (action & MotionEvent.ACTION_MASK) {
             case MotionEvent.ACTION_DOWN: {
@@ -73,15 +58,8 @@
                                 x, y, mDisplayContent).sendToTarget();
                     }
                 }
-                break;
             }
-
-            case MotionEvent.ACTION_MOVE: {
-                if (motionEvent.getPointerCount() != 2) {
-                    stopTwoFingerScroll();
-                }
-                break;
-            }
+            break;
 
             case MotionEvent.ACTION_HOVER_MOVE: {
                 final int x = (int) motionEvent.getX();
@@ -116,76 +94,14 @@
                         InputManager.getInstance().setPointerIconType(mPointerIconType);
                     }
                 }
-            } break;
-
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_POINTER_UP: {
-                stopTwoFingerScroll();
-                break;
             }
+            break;
         }
     }
 
-    private void doGestureDetection(MotionEvent motionEvent) {
-        if (mGestureDetector == null || mNonResizeableRegion.isEmpty()) {
-            return;
-        }
-        final int action = motionEvent.getAction() & MotionEvent.ACTION_MASK;
-        final int x = (int) motionEvent.getX();
-        final int y = (int) motionEvent.getY();
-        final boolean isTouchInside = mNonResizeableRegion.contains(x, y);
-        if (mInGestureDetection || action == MotionEvent.ACTION_DOWN && isTouchInside) {
-            // If we receive the following actions, or the pointer goes out of the area
-            // we're interested in, stop detecting and cancel the current detection.
-            mInGestureDetection = isTouchInside
-                    && action != MotionEvent.ACTION_UP
-                    && action != MotionEvent.ACTION_POINTER_UP
-                    && action != MotionEvent.ACTION_CANCEL;
-            if (mInGestureDetection) {
-                mGestureDetector.onTouchEvent(motionEvent);
-            } else {
-                MotionEvent cancelEvent = motionEvent.copy();
-                cancelEvent.cancel();
-                mGestureDetector.onTouchEvent(cancelEvent);
-                stopTwoFingerScroll();
-            }
-        }
-    }
-
-    private void onTwoFingerScroll(MotionEvent e) {
-        final int x = (int)e.getX(0);
-        final int y = (int)e.getY(0);
-        if (!mTwoFingerScrolling) {
-            mTwoFingerScrolling = true;
-            mService.mH.obtainMessage(
-                    H.TWO_FINGER_SCROLL_START, x, y, mDisplayContent).sendToTarget();
-        }
-    }
-
-    private void stopTwoFingerScroll() {
-        if (mTwoFingerScrolling) {
-            mTwoFingerScrolling = false;
-            mService.mH.obtainMessage(H.FINISH_TASK_POSITIONING).sendToTarget();
-        }
-    }
-
-    private final class TwoFingerScrollListener extends GestureDetector.SimpleOnGestureListener {
-        @Override
-        public boolean onScroll(MotionEvent e1, MotionEvent e2,
-                float distanceX, float distanceY) {
-            if (e2.getPointerCount() == 2) {
-                onTwoFingerScroll(e2);
-                return true;
-            }
-            stopTwoFingerScroll();
-            return false;
-        }
-    }
-
-    void setTouchExcludeRegion(Region newRegion, Region nonResizeableRegion) {
+    void setTouchExcludeRegion(Region newRegion) {
         synchronized (this) {
            mTouchExcludeRegion.set(newRegion);
-           mNonResizeableRegion.set(nonResizeableRegion);
         }
     }
 }
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 18f97a7..edb01f8 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -659,12 +659,13 @@
             // AND any starting window associated with it, AND below the
             // maximum layer the policy allows for wallpapers.
             while (wallpaperTargetIndex > 0) {
-                WindowState wb = windows.get(wallpaperTargetIndex - 1);
-                if (wb.mBaseLayer < maxLayer &&
-                        wb.mAttachedWindow != wallpaperTarget &&
-                        (wallpaperTarget.mAttachedWindow == null ||
-                                wb.mAttachedWindow != wallpaperTarget.mAttachedWindow) &&
-                        (wb.mAttrs.type != TYPE_APPLICATION_STARTING
+                final WindowState wb = windows.get(wallpaperTargetIndex - 1);
+                final WindowState wbParentWindow = wb.getParentWindow();
+                final WindowState wallpaperParentWindow = wallpaperTarget.getParentWindow();
+                if (wb.mBaseLayer < maxLayer
+                        && wbParentWindow != wallpaperTarget
+                        && (wallpaperParentWindow == null || wbParentWindow != wallpaperParentWindow)
+                        && (wb.mAttrs.type != TYPE_APPLICATION_STARTING
                                 || wallpaperTarget.mToken == null
                                 || wb.mToken != wallpaperTarget.mToken)) {
                     // This window is not related to the previous one in any
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index 55ade2e..a7a7a39 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -18,7 +18,6 @@
 
 import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
 import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SYSTEM_ERROR;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
 import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
@@ -353,7 +352,7 @@
                             + " hasSurface=" + win.mHasSurface
                             + " policyVis=" + win.mPolicyVisibility
                             + " destroying=" + win.mDestroying
-                            + " attHidden=" + win.mAttachedHidden
+                            + " parentHidden=" + win.isParentWindowHidden()
                             + " vis=" + win.mViewVisibility
                             + " hidden=" + win.mRootToken.hidden
                             + " anim=" + win.mWinAnimator.mAnimation);
@@ -370,7 +369,7 @@
                                 && !mPostKeyguardExitAnimation.hasEnded()
                                 && !winAnimator.mKeyguardGoingAwayAnimation
                                 && win.hasDrawnLw()
-                                && win.mAttachedWindow == null
+                                && !win.isChildWindow()
                                 && !win.mIsImWindow
                                 && displayId == Display.DEFAULT_DISPLAY;
 
@@ -388,7 +387,7 @@
                         if (DEBUG_KEYGUARD || DEBUG_VISIBILITY) Slog.v(TAG,
                                 "Now policy shown: " + win);
                         if ((mBulkUpdateParams & SET_FORCE_HIDING_CHANGED) != 0
-                                && win.mAttachedWindow == null) {
+                                && !win.isChildWindow()) {
                             if (unForceHiding == null) {
                                 unForceHiding = new ArrayList<>();
                             }
@@ -450,7 +449,7 @@
             final AppWindowToken atoken = win.mAppToken;
             if (winAnimator.mDrawState == READY_TO_SHOW) {
                 if (atoken == null || atoken.allDrawn) {
-                    if (winAnimator.performShowLocked()) {
+                    if (win.performShowLocked()) {
                         setPendingLayoutChanges(displayId,
                                 WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM);
                         if (DEBUG_LAYOUT_REPEATS) {
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
new file mode 100644
index 0000000..8cf89ec
--- /dev/null
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -0,0 +1,94 @@
+/*
+ * 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.server.wm;
+
+import android.annotation.CallSuper;
+
+import java.util.Comparator;
+import java.util.LinkedList;
+
+/**
+ * Defines common functionality for classes that can hold windows directly or through their
+ * children.
+ * The test class is {@link WindowContainerTests} which must be kept up-to-date and ran anytime
+ * changes are made to this class.
+ */
+class WindowContainer {
+
+    // The parent of this window container.
+    private WindowContainer mParent = null;
+
+    // List of children for this window container. List is in z-order as the children appear on
+    // screen with the top-most window container at the tail of the list.
+    protected final LinkedList<WindowContainer> mChildren = new LinkedList();
+
+    protected WindowContainer getParent() {
+        return mParent;
+    }
+
+    /**
+     * Adds the input window container has a child of this container in order based on the input
+     * comparator.
+     * @param child The window container to add as a child of this window container.
+     * @param comparator Comparator to use in determining the position the child should be added to.
+     *                   If null, the child will be added to the top.
+     */
+    @CallSuper
+    protected void addChild(WindowContainer child, Comparator<WindowContainer> comparator) {
+        child.mParent = this;
+
+        if (mChildren.isEmpty() || comparator == null) {
+            mChildren.add(child);
+            return;
+        }
+
+        final int count = mChildren.size();
+        for (int i = 0; i < count; i++) {
+            if (comparator.compare(child, mChildren.get(i)) < 0) {
+                mChildren.add(i, child);
+                return;
+            }
+        }
+
+        mChildren.add(child);
+    }
+
+    /** Removes this window container and its children */
+    @CallSuper
+    void remove() {
+        while (!mChildren.isEmpty()) {
+            final WindowContainer child = mChildren.removeLast();
+            child.remove();
+        }
+
+        if (mParent != null) {
+            mParent.mChildren.remove(this);
+            mParent = null;
+        }
+    }
+
+    /** Returns true if this window container has the input child. */
+    boolean hasChild(WindowContainer child) {
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final WindowContainer current = mChildren.get(i);
+            if (current == child || current.hasChild(child)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java
index 072e10f..7405cf9 100644
--- a/services/core/java/com/android/server/wm/WindowLayersController.java
+++ b/services/core/java/com/android/server/wm/WindowLayersController.java
@@ -119,18 +119,13 @@
         mInputMethodAnimLayerAdjustment = adj;
         final WindowState imw = mService.mInputMethodWindow;
         if (imw != null) {
-            imw.mWinAnimator.mAnimLayer = imw.mLayer + adj;
-            if (DEBUG_LAYERS) Slog.v(TAG_WM, "IM win " + imw
-                    + " anim layer: " + imw.mWinAnimator.mAnimLayer);
-            for (int i = imw.mChildWindows.size() - 1; i >= 0; i--) {
-                final WindowState childWindow = imw.mChildWindows.get(i);
-                childWindow.mWinAnimator.mAnimLayer = childWindow.mLayer + adj;
-                if (DEBUG_LAYERS) Slog.v(TAG_WM, "IM win " + childWindow
-                        + " anim layer: " + childWindow.mWinAnimator.mAnimLayer);
-            }
+            imw.adjustAnimLayer(adj);
         }
         for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) {
             final WindowState dialog = mService.mInputMethodDialogs.get(i);
+            // TODO: This and other places setting mAnimLayer can probably use WS.adjustAnimLayer,
+            // but need to make sure we are not setting things twice for child windows that are
+            // already in the list.
             dialog.mWinAnimator.mAnimLayer = dialog.mLayer + adj;
             if (DEBUG_LAYERS) Slog.v(TAG_WM, "IM win " + imw
                     + " anim layer: " + dialog.mWinAnimator.mAnimLayer);
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 2735ae7..5a4b7f7 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -388,7 +388,7 @@
 
     final boolean mLimitedAlphaCompositing;
 
-    final WindowManagerPolicy mPolicy = new PhoneWindowManager();
+    final WindowManagerPolicy mPolicy;
 
     final IActivityManager mActivityManager;
     final ActivityManagerInternal mAmInternal;
@@ -545,7 +545,7 @@
     SparseArray<DisplayContent> mDisplayContents = new SparseArray<>(2);
 
     int mRotation = 0;
-    int mForcedAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+    int mLastOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
     boolean mAltOrientation = false;
 
     private boolean mKeyguardWaitingForActivityDrawn;
@@ -924,14 +924,11 @@
     public static WindowManagerService main(final Context context,
             final InputManagerService im,
             final boolean haveInputMethods, final boolean showBootMsgs,
-            final boolean onlyCore) {
+            final boolean onlyCore, WindowManagerPolicy policy) {
         final WindowManagerService[] holder = new WindowManagerService[1];
-        DisplayThread.getHandler().runWithScissors(new Runnable() {
-            @Override
-            public void run() {
-                holder[0] = new WindowManagerService(context, im,
-                        haveInputMethods, showBootMsgs, onlyCore);
-            }
+        DisplayThread.getHandler().runWithScissors(() -> {
+            holder[0] = new WindowManagerService(context, im, haveInputMethods, showBootMsgs,
+                    onlyCore, policy);
         }, 0);
         return holder[0];
     }
@@ -948,7 +945,8 @@
     }
 
     private WindowManagerService(Context context, InputManagerService inputManager,
-            boolean haveInputMethods, boolean showBootMsgs, boolean onlyCore) {
+            boolean haveInputMethods, boolean showBootMsgs, boolean onlyCore,
+            WindowManagerPolicy policy) {
         mContext = context;
         mHaveInputMethods = haveInputMethods;
         mAllowBootMessages = showBootMsgs;
@@ -971,10 +969,12 @@
         mWallpaperControllerLocked = new WallpaperController(this);
         mWindowPlacerLocked = new WindowSurfacePlacer(this);
         mLayersController = new WindowLayersController(this);
+        mPolicy = policy;
 
         LocalServices.addService(WindowManagerPolicy.class, mPolicy);
 
-        mPointerEventDispatcher = new PointerEventDispatcher(mInputManager.monitorInput(TAG_WM));
+        mPointerEventDispatcher = mInputManager != null
+                ? new PointerEventDispatcher(mInputManager.monitorInput(TAG_WM)) : null;
 
         mFxSession = new SurfaceSession();
         mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
@@ -987,19 +987,18 @@
 
         mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
         mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
-        mPowerManagerInternal.registerLowPowerModeObserver(
-                new PowerManagerInternal.LowPowerModeListener() {
-            @Override
-            public void onLowPowerModeChanged(boolean enabled) {
+
+        if (mPowerManagerInternal != null) {
+            mPowerManagerInternal.registerLowPowerModeObserver((enabled) -> {
                 synchronized (mWindowMap) {
                     if (mAnimationsDisabled != enabled && !mAllowAnimationsInLowPowerMode) {
                         mAnimationsDisabled = enabled;
                         dispatchNewAnimatorScaleLocked(null);
                     }
                 }
-            }
-        });
-        mAnimationsDisabled = mPowerManagerInternal.getLowPowerModeEnabled();
+            });
+            mAnimationsDisabled = mPowerManagerInternal.getLowPowerModeEnabled();
+        }
         mScreenFrozenLock = mPowerManager.newWakeLock(
                 PowerManager.PARTIAL_WAKE_LOCK, "SCREEN_FROZEN");
         mScreenFrozenLock.setReferenceCounted(false);
@@ -1146,14 +1145,9 @@
     private int indexOfWinInWindowList(WindowState targetWin, WindowList windows) {
         for (int i = windows.size() - 1; i >= 0; i--) {
             final WindowState w = windows.get(i);
-            if (w == targetWin) {
+            if (w == targetWin || w.hasChild(targetWin)) {
                 return i;
             }
-            if (!w.mChildWindows.isEmpty()) {
-                if (indexOfWinInWindowList(targetWin, w.mChildWindows) >= 0) {
-                    return i;
-                }
-            }
         }
         return -1;
     }
@@ -1359,18 +1353,17 @@
         mWindowsChanged = true;
     }
 
-    private void addAttachedWindowToListLocked(final WindowState win, boolean addToToken) {
+    private void addChildWindowToListLocked(final WindowState win, boolean addToToken) {
         final WindowToken token = win.mToken;
         final DisplayContent displayContent = win.getDisplayContent();
         if (displayContent == null) {
             return;
         }
-        final WindowState attached = win.mAttachedWindow;
+        final WindowState parentWindow = win.getParentWindow();
 
         WindowList tokenWindowList = getTokenWindowsOnDisplay(token, displayContent);
 
-        // Figure out this window's ordering relative to the window
-        // it is attached to.
+        // Figure out this window's ordering relative to the parent window.
         final int NA = tokenWindowList.size();
         final int sublayer = win.mSubLayer;
         int largestSublayer = Integer.MIN_VALUE;
@@ -1384,19 +1377,17 @@
                 windowWithLargestSublayer = w;
             }
             if (sublayer < 0) {
-                // For negative sublayers, we go below all windows
-                // in the same sublayer.
+                // For negative sublayers, we go below all windows in the same sublayer.
                 if (wSublayer >= sublayer) {
                     if (addToToken) {
                         if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "Adding " + win + " to " + token);
                         token.windows.add(i, win);
                     }
-                    placeWindowBefore(wSublayer >= 0 ? attached : w, win);
+                    placeWindowBefore(wSublayer >= 0 ? parentWindow : w, win);
                     break;
                 }
             } else {
-                // For positive sublayers, we go above all windows
-                // in the same sublayer.
+                // For positive sublayers, we go above all windows in the same sublayer.
                 if (wSublayer > sublayer) {
                     if (addToToken) {
                         if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "Adding " + win + " to " + token);
@@ -1413,12 +1404,10 @@
                 token.windows.add(win);
             }
             if (sublayer < 0) {
-                placeWindowBefore(attached, win);
+                placeWindowBefore(parentWindow, win);
             } else {
-                placeWindowAfter(largestSublayer >= 0
-                                 ? windowWithLargestSublayer
-                                 : attached,
-                                 win);
+                placeWindowAfter(
+                        largestSublayer >= 0 ? windowWithLargestSublayer : parentWindow, win);
             }
         }
     }
@@ -1426,7 +1415,7 @@
     private void addWindowToListInOrderLocked(final WindowState win, boolean addToToken) {
         if (DEBUG_FOCUS) Slog.d(TAG_WM, "addWindowToListInOrderLocked: win=" + win +
                 " Callers=" + Debug.getCallers(4));
-        if (win.mAttachedWindow == null) {
+        if (!win.isChildWindow()) {
             final WindowToken token = win.mToken;
             int tokenWindowsPos = 0;
             if (token.appWindowToken != null) {
@@ -1439,7 +1428,7 @@
                 token.windows.add(tokenWindowsPos, win);
             }
         } else {
-            addAttachedWindowToListLocked(win, addToToken);
+            addChildWindowToListLocked(win, addToToken);
         }
 
         final AppWindowToken appToken = win.mAppToken;
@@ -1464,7 +1453,7 @@
                             + " viewVis=" + w.mViewVisibility
                             + " policyVis=" + w.mPolicyVisibility
                             + " policyVisAfterAnim=" + w.mPolicyVisibilityAfterAnim
-                            + " attachHid=" + w.mAttachedHidden
+                            + " parentHidden=" + w.isParentWindowHidden()
                             + " exiting=" + w.mAnimatingExit + " destroying=" + w.mDestroying);
                     if (w.mAppToken != null) {
                         Slog.i(TAG_WM, "  mAppToken.hiddenRequested=" + w.mAppToken.hiddenRequested);
@@ -1646,30 +1635,6 @@
         moveInputMethodDialogsLocked(pos);
     }
 
-    private int tmpRemoveWindowLocked(int interestingPos, WindowState win) {
-        WindowList windows = win.getWindowList();
-        int wpos = windows.indexOf(win);
-        if (wpos >= 0) {
-            if (wpos < interestingPos) interestingPos--;
-            if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Temp removing at " + wpos + ": " + win);
-            windows.remove(wpos);
-            mWindowsChanged = true;
-            int NC = win.mChildWindows.size();
-            while (NC > 0) {
-                NC--;
-                WindowState cw = win.mChildWindows.get(NC);
-                int cpos = windows.indexOf(cw);
-                if (cpos >= 0) {
-                    if (cpos < interestingPos) interestingPos--;
-                    if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Temp removing child at "
-                            + cpos + ": " + cw);
-                    windows.remove(cpos);
-                }
-            }
-        }
-        return interestingPos;
-    }
-
     private void reAddWindowToListInOrderLocked(WindowState win) {
         addWindowToListInOrderLocked(win, false);
         // This is a hack to get all of the child windows added as well
@@ -1681,7 +1646,7 @@
             if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "ReAdd removing from " + wpos + ": " + win);
             windows.remove(wpos);
             mWindowsChanged = true;
-            reAddWindowLocked(wpos, win);
+            win.reAddWindowLocked(wpos);
         }
     }
 
@@ -1701,7 +1666,7 @@
         final int N = dialogs.size();
         if (DEBUG_INPUT_METHOD) Slog.v(TAG_WM, "Removing " + N + " dialogs w/pos=" + pos);
         for (int i=0; i<N; i++) {
-            pos = tmpRemoveWindowLocked(pos, dialogs.get(i));
+            pos = dialogs.get(i).removeFromWindowList(pos);
         }
         if (DEBUG_INPUT_METHOD) {
             Slog.v(TAG_WM, "Window list w/pos=" + pos);
@@ -1714,7 +1679,7 @@
             if (mInputMethodWindow != null) {
                 while (pos < windows.size()) {
                     WindowState wp = windows.get(pos);
-                    if (wp == mInputMethodWindow || wp.mAttachedWindow == mInputMethodWindow) {
+                    if (wp == mInputMethodWindow || wp.getParentWindow() == mInputMethodWindow) {
                         pos++;
                         continue;
                     }
@@ -1725,7 +1690,7 @@
             for (int i=0; i<N; i++) {
                 WindowState win = dialogs.get(i);
                 win.mTargetAppToken = targetAppToken;
-                pos = reAddWindowLocked(pos, win);
+                pos = win.reAddWindowLocked(pos);
             }
             if (DEBUG_INPUT_METHOD) {
                 Slog.v(TAG_WM, "Final window list:");
@@ -1762,16 +1727,14 @@
             // First check to see if the input method windows are already
             // located here, and contiguous.
             final int N = windows.size();
-            WindowState firstImWin = imPos < N
-                    ? windows.get(imPos) : null;
+            final WindowState firstImWin = imPos < N ? windows.get(imPos) : null;
 
             // Figure out the actual input method window that should be
             // at the bottom of their stack.
-            WindowState baseImWin = imWin != null
-                    ? imWin : mInputMethodDialogs.get(0);
-            if (baseImWin.mChildWindows.size() > 0) {
-                WindowState cw = baseImWin.mChildWindows.get(0);
-                if (cw.mSubLayer < 0) baseImWin = cw;
+            WindowState baseImWin = imWin != null ? imWin : mInputMethodDialogs.get(0);
+            final WindowState cw = baseImWin.getBottomChild();
+            if (cw != null && cw.mSubLayer < 0) {
+                baseImWin = cw;
             }
 
             if (firstImWin == baseImWin) {
@@ -1807,13 +1770,13 @@
                     Slog.v(TAG_WM, "Moving IM from " + imPos);
                     logWindowList(windows, "  ");
                 }
-                imPos = tmpRemoveWindowLocked(imPos, imWin);
+                imPos = imWin.removeFromWindowList(imPos);
                 if (DEBUG_INPUT_METHOD) {
                     Slog.v(TAG_WM, "List after removing with new pos " + imPos + ":");
                     logWindowList(windows, "  ");
                 }
                 imWin.mTargetAppToken = mInputMethodTarget.mAppToken;
-                reAddWindowLocked(imPos, imWin);
+                imWin.reAddWindowLocked(imPos);
                 if (DEBUG_INPUT_METHOD) {
                     Slog.v(TAG_WM, "List after moving IM to " + imPos + ":");
                     logWindowList(windows, "  ");
@@ -1829,7 +1792,7 @@
 
             if (imWin != null) {
                 if (DEBUG_INPUT_METHOD) Slog.v(TAG_WM, "Moving IM from " + imPos);
-                tmpRemoveWindowLocked(0, imWin);
+                imWin.removeFromWindowList(0);
                 imWin.mTargetAppToken = null;
                 reAddWindowToListInOrderLocked(imWin);
                 if (DEBUG_INPUT_METHOD) {
@@ -1850,7 +1813,7 @@
         return true;
     }
 
-    private static boolean excludeWindowTypeFromTapOutTask(int windowType) {
+    static boolean excludeWindowTypeFromTapOutTask(int windowType) {
         switch (windowType) {
             case TYPE_STATUS_BAR:
             case TYPE_NAVIGATION_BAR:
@@ -2020,8 +1983,8 @@
                 addToken = true;
             }
 
-            WindowState win = new WindowState(this, session, client, token,
-                    attachedWindow, appOp[0], seq, attrs, viewVisibility, displayContent);
+            WindowState win = new WindowState(this, session, client, token, attachedWindow,
+                    appOp[0], seq, attrs, viewVisibility, displayContent, session.mUid);
             if (win.mDeathRecipient == null) {
                 // Client has apparently died, so there is no reason to
                 // continue.
@@ -2108,10 +2071,6 @@
                 }
             }
 
-            // If the window is being added to a task that's docked but non-resizeable,
-            // we need to update this new window's scroll position when it's added.
-            win.applyScrollIfNeeded();
-
             // If the window is being added to a stack that's currently adjusted for IME,
             // make sure to apply the same adjust to this new window.
             win.applyAdjustForImeIfNeeded();
@@ -2447,7 +2406,7 @@
             }
         }
 
-        removeWindowInnerLocked(win);
+        win.remove();
         // Removing a visible window will effect the computed orientation
         // So just update orientation if needed.
         if (wasVisible && updateOrientationFromAppTokensLocked(false)) {
@@ -2457,41 +2416,12 @@
         Binder.restoreCallingIdentity(origId);
     }
 
-    void removeWindowInnerLocked(WindowState win) {
-        if (win.mRemoved) {
-            // Nothing to do.
-            if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM,
-                    "removeWindowInnerLocked: " + win + " Already removed...");
-            return;
-        }
-
-        for (int i = win.mChildWindows.size() - 1; i >= 0; i--) {
-            WindowState cwin = win.mChildWindows.get(i);
-            Slog.w(TAG_WM, "Force-removing child win " + cwin + " from container " + win);
-            removeWindowInnerLocked(cwin);
-        }
-
-        win.mRemoved = true;
-
-        if (mInputMethodTarget == win) {
-            moveInputMethodWindowsIfNeededLocked(false);
-        }
-
-        if (false) {
-            RuntimeException e = new RuntimeException("here");
-            e.fillInStackTrace();
-            Slog.w(TAG_WM, "Removing window " + win, e);
-        }
-
-        final int type = win.mAttrs.type;
-        if (excludeWindowTypeFromTapOutTask(type)) {
-            final DisplayContent displaycontent = win.getDisplayContent();
-            displaycontent.mTapExcludedWindows.remove(win);
-        }
-        mPolicy.removeWindowLw(win);
-        win.removeLocked();
-
-        if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "removeWindowInnerLocked: " + win);
+    /**
+     * Performs some centralized bookkeeping clean-up on the window that is being removed.
+     * NOTE: Should only be called from {@link WindowState#remove()}
+     */
+    void postWindowRemoveCleanupLocked(WindowState win) {
+        if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "postWindowRemoveCleanupLocked: " + win);
         mWindowMap.remove(win.mClient.asBinder());
         if (win.mAppOp != AppOpsManager.OP_NONE) {
             mAppOps.finishOp(win.mAppOp, win.getOwningUid(), win.getOwningPackage());
@@ -2544,7 +2474,7 @@
             }
         }
 
-        if (type == TYPE_WALLPAPER) {
+        if (win.mAttrs.type == TYPE_WALLPAPER) {
             mWallpaperControllerLocked.clearLastWallpaperTimeoutTime();
             getDefaultDisplayContentLocked().pendingLayoutChanges |=
                     WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
@@ -2711,7 +2641,7 @@
                 if (win == null) {
                     return;
                 }
-                if (win.mAttachedWindow == null) {
+                if (!win.isChildWindow()) {
                     throw new IllegalArgumentException(
                             "repositionChild called but window is not"
                             + "attached to a parent win=" + win);
@@ -2913,9 +2843,23 @@
                     }
                     result |= RELAYOUT_RES_SURFACE_CHANGED;
                 }
+                final WindowSurfaceController surfaceController = winAnimator.mSurfaceController;
+                if (viewVisibility == View.VISIBLE && surfaceController != null) {
+                    // We already told the client to go invisible, but the message may not be
+                    // handled yet, or it might want to draw a last frame. If we already have a
+                    // surface, let the client use that, but don't create new surface at this point.
+                    surfaceController.getSurface(outSurface);
+                } else {
+                    if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Releasing surface in: " + win);
 
-                outSurface.release();
-                if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Releasing surface in: " + win);
+                    try {
+                        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "wmReleaseOutSurface_"
+                                + win.mAttrs.getTitle());
+                        outSurface.release();
+                    } finally {
+                        Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
+                    }
+                }
             }
 
             if (focusMayChange) {
@@ -3050,6 +2994,7 @@
         } else {
             // For some reason there isn't a surface.  Clear the
             // caller's object so they see the same state.
+            Slog.w(TAG_WM, "Failed to create surface control for " + win);
             outSurface.release();
         }
         return result;
@@ -3096,7 +3041,7 @@
             // resizing (as we only have one full-screen surface). So there is no need
             // to preserve and destroy windows which are attached to another, they
             // will keep their surface and its size may change over time.
-            if (win.mHasSurface && win.mAttachedWindow == null) {
+            if (win.mHasSurface && !win.isChildWindow()) {
                 winAnimator.preserveSurfaceLocked();
                 result |= WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME;
             }
@@ -3527,13 +3472,16 @@
                 // can re-appear and inflict its own orientation on us.  Keep the
                 // orientation stable until this all settles down.
                 return mLastWindowForcedOrientation;
-            } else if (mPolicy.isKeyguardLocked()
-                    && mLastKeyguardForcedOrientation != SCREEN_ORIENTATION_UNSPECIFIED) {
-                // Use the last orientation the keyguard forced while the display is frozen with the
-                // keyguard locked.
+            } else if (mPolicy.isKeyguardLocked()) {
+                // Use the last orientation the while the display is frozen with the
+                // keyguard locked. This could be the keyguard forced orientation or
+                // from a SHOW_WHEN_LOCKED window. We don't want to check the show when
+                // locked window directly though as things aren't stable while
+                // the display is frozen, for example the window could be momentarily unavailable
+                // due to activity relaunch.
                 if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Display is frozen while keyguard locked, "
-                        + "return " + mLastKeyguardForcedOrientation);
-                return mLastKeyguardForcedOrientation;
+                        + "return " + mLastOrientation);
+                return mLastOrientation;
             }
         } else {
             // TODO(multidisplay): Change to the correct display.
@@ -3663,12 +3611,12 @@
             }
         }
         if (DEBUG_ORIENTATION) Slog.v(TAG_WM,
-                "No app is requesting an orientation, return " + mForcedAppOrientation);
+                "No app is requesting an orientation, return " + mLastOrientation);
         // The next app has not been requested to be visible, so we keep the current orientation
         // to prevent freezing/unfreezing the display too early unless we are in multi-window, in
         // which we don't let the app customize the orientation unless it was the home task that
         // is handled above.
-        return inMultiWindow ? SCREEN_ORIENTATION_UNSPECIFIED : mForcedAppOrientation;
+        return inMultiWindow ? SCREEN_ORIENTATION_UNSPECIFIED : mLastOrientation;
     }
 
     @Override
@@ -3751,8 +3699,8 @@
         long ident = Binder.clearCallingIdentity();
         try {
             int req = getOrientationLocked();
-            if (req != mForcedAppOrientation) {
-                mForcedAppOrientation = req;
+            if (req != mLastOrientation) {
+                mLastOrientation = req;
                 //send a message to Policy indicating orientation change to take
                 //action like disabling/enabling sensors etc.,
                 mPolicy.setCurrentOrientationLw(req);
@@ -4352,7 +4300,7 @@
                 WindowState win = wtoken.allAppWindows.get(i);
                 if (win == wtoken.startingWindow) {
                     // Starting window that's exiting will be removed when the animation
-                    // finishes. Mark all relevant flags for that finishExit will proceed
+                    // finishes. Mark all relevant flags for that onExitAnimationDone will proceed
                     // all the way to actually remove it.
                     if (!visible && win.isVisibleNow() && wtoken.mAppAnimator.isAnimating()) {
                         win.mAnimatingExit = true;
@@ -4840,38 +4788,6 @@
         }
     }
 
-    private final int reAddWindowLocked(int index, WindowState win) {
-        final WindowList windows = win.getWindowList();
-        // Adding child windows relies on mChildWindows being ordered by mSubLayer.
-        final int NCW = win.mChildWindows.size();
-        boolean winAdded = false;
-        for (int j=0; j<NCW; j++) {
-            WindowState cwin = win.mChildWindows.get(j);
-            if (!winAdded && cwin.mSubLayer >= 0) {
-                if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Re-adding child window at "
-                        + index + ": " + cwin);
-                win.mRebuilding = false;
-                windows.add(index, win);
-                index++;
-                winAdded = true;
-            }
-            if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Re-adding window at "
-                    + index + ": " + cwin);
-            cwin.mRebuilding = false;
-            windows.add(index, cwin);
-            index++;
-        }
-        if (!winAdded) {
-            if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Re-adding window at "
-                    + index + ": " + win);
-            win.mRebuilding = false;
-            windows.add(index, win);
-            index++;
-        }
-        mWindowsChanged = true;
-        return index;
-    }
-
     private final int reAddAppWindowsLocked(final DisplayContent displayContent, int index,
                                             WindowToken token) {
         final int NW = token.windows.size();
@@ -4880,7 +4796,7 @@
             final DisplayContent winDisplayContent = win.getDisplayContent();
             if (winDisplayContent == displayContent || winDisplayContent == null) {
                 win.mDisplayContent = displayContent;
-                index = reAddWindowLocked(index, win);
+                index = win.reAddWindowLocked(index);
             }
         }
         return index;
@@ -5263,21 +5179,6 @@
         }
     }
 
-    public void scrollTask(int taskId, Rect bounds) {
-        synchronized (mWindowMap) {
-            Task task = mTaskIdToTask.get(taskId);
-            if (task == null) {
-                throw new IllegalArgumentException("scrollTask: taskId " + taskId
-                        + " not found.");
-            }
-
-            if (task.scrollLocked(bounds)) {
-                task.getDisplayContent().layoutNeeded = true;
-                mInputMonitor.setUpdateInputWindowsNeededLw();
-                mWindowPlacerLocked.performSurfacePlacement();
-            }
-        }
-    }
     /**
      * Starts deferring layout passes. Useful when doing multiple changes but to optimize
      * performance, only one layout pass should be done. This can be called multiple times, and
@@ -6165,6 +6066,21 @@
         }
     }
 
+    @Override
+    public Bitmap screenshotWallpaper() {
+        if (!checkCallingPermission(Manifest.permission.READ_FRAME_BUFFER,
+                "screenshotWallpaper()")) {
+            throw new SecurityException("Requires READ_FRAME_BUFFER permission");
+        }
+        try {
+            Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenshotWallpaper");
+            return screenshotApplicationsInner(null, Display.DEFAULT_DISPLAY, -1, -1, true, 1f,
+                    Bitmap.Config.ARGB_8888, true);
+        } finally {
+            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
+        }
+    }
+
     /**
      * Takes a snapshot of the screen.  In landscape mode this grabs the whole screen.
      * In portrait mode, it grabs the upper region of the screen based on the vertical dimension
@@ -6181,7 +6097,7 @@
             @Override
             public void run() {
                 Bitmap bm = screenshotApplicationsInner(null, Display.DEFAULT_DISPLAY, -1, -1,
-                        true, 1f, Bitmap.Config.ARGB_8888);
+                        true, 1f, Bitmap.Config.ARGB_8888, false);
                 try {
                     receiver.send(bm);
                 } catch (RemoteException e) {
@@ -6211,14 +6127,27 @@
         try {
             Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenshotApplications");
             return screenshotApplicationsInner(appToken, displayId, width, height, false,
-                    frameScale, Bitmap.Config.RGB_565);
+                    frameScale, Bitmap.Config.RGB_565, false);
         } finally {
             Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
         }
     }
 
+    /**
+     * Takes a snapshot of the screen.  In landscape mode this grabs the whole screen.
+     * In portrait mode, it grabs the full screenshot.
+     *
+     * @param displayId the Display to take a screenshot of.
+     * @param width the width of the target bitmap
+     * @param height the height of the target bitmap
+     * @param includeFullDisplay true if the screen should not be cropped before capture
+     * @param frameScale the scale to apply to the frame, only used when width = -1 and height = -1
+     * @param config of the output bitmap
+     * @param wallpaperOnly true if only the wallpaper layer should be included in the screenshot
+     */
     Bitmap screenshotApplicationsInner(IBinder appToken, int displayId, int width, int height,
-            boolean includeFullDisplay, float frameScale, Bitmap.Config config) {
+            boolean includeFullDisplay, float frameScale, Bitmap.Config config,
+            boolean wallpaperOnly) {
         final DisplayContent displayContent;
         synchronized(mWindowMap) {
             displayContent = getDisplayContentLocked(displayId);
@@ -6245,7 +6174,7 @@
 
         boolean screenshotReady;
         int minLayer;
-        if (appToken == null) {
+        if (appToken == null && !wallpaperOnly) {
             screenshotReady = true;
             minLayer = 0;
         } else {
@@ -6285,11 +6214,20 @@
                 if (ws.mLayer >= aboveAppLayer) {
                     continue;
                 }
+                if (wallpaperOnly && !ws.mIsWallpaper) {
+                    continue;
+                }
                 if (ws.mIsImWindow) {
                     if (!includeImeInScreenshot) {
                         continue;
                     }
                 } else if (ws.mIsWallpaper) {
+                    // If this is the wallpaper layer and we're only looking for the wallpaper layer
+                    // then the target window state is this one.
+                    if (wallpaperOnly) {
+                        appWin = ws;
+                    }
+
                     if (appWin == null) {
                         // We have not ran across the target window yet, so it is probably
                         // behind the wallpaper. This can happen when the keyguard is up and
@@ -6337,8 +6275,10 @@
                     }
                 }
 
-                if (ws.mAppToken != null && ws.mAppToken.token == appToken &&
-                        ws.isDisplayedLw() && winAnim.getShown()) {
+                final boolean foundTargetWs =
+                        (ws.mAppToken != null && ws.mAppToken.token == appToken)
+                        || (appWin != null && wallpaperOnly);
+                if (foundTargetWs && ws.isDisplayedLw() && winAnim.getShown()) {
                     screenshotReady = true;
                 }
 
@@ -6628,13 +6568,13 @@
         //       an orientation that has different metrics than it expected.
         //       eg. Portrait instead of Landscape.
 
-        int rotation = mPolicy.rotationForOrientationLw(mForcedAppOrientation, mRotation);
+        int rotation = mPolicy.rotationForOrientationLw(mLastOrientation, mRotation);
         boolean altOrientation = !mPolicy.rotationHasCompatibleMetricsLw(
-                mForcedAppOrientation, rotation);
+                mLastOrientation, rotation);
 
         if (DEBUG_ORIENTATION) {
-            Slog.v(TAG_WM, "Application requested orientation "
-                    + mForcedAppOrientation + ", got rotation " + rotation
+            Slog.v(TAG_WM, "Selected orientation "
+                    + mLastOrientation + ", got rotation " + rotation
                     + " which has " + (altOrientation ? "incompatible" : "compatible")
                     + " metrics");
         }
@@ -6648,7 +6588,7 @@
             Slog.v(TAG_WM,
                 "Rotation changed to " + rotation + (altOrientation ? " (alt)" : "")
                 + " from " + mRotation + (mAltOrientation ? " (alt)" : "")
-                + ", forceApp=" + mForcedAppOrientation);
+                + ", lastOrientation=" + mLastOrientation);
         }
 
         int oldRotation = mRotation;
@@ -7568,26 +7508,6 @@
         return true;
     }
 
-    private void startScrollingTask(DisplayContent displayContent, int startX, int startY) {
-        if (DEBUG_TASK_POSITIONING) Slog.d(TAG_WM,
-                "startScrollingTask: " + "{" + startX + ", " + startY + "}");
-
-        Task task = null;
-        synchronized (mWindowMap) {
-            int taskId = displayContent.taskIdFromPoint(startX, startY);
-            if (taskId >= 0) {
-                task = mTaskIdToTask.get(taskId);
-            }
-            if (task == null || !task.isDockedInEffect() || !startPositioningLocked(
-                    task.getTopVisibleAppMainWindow(), false /*resize*/, startX, startY)) {
-                return;
-            }
-        }
-        try {
-            mActivityManager.setFocusedTask(task.mTaskId);
-        } catch(RemoteException e) {}
-    }
-
     private void handleTapOutsideTask(DisplayContent displayContent, int x, int y) {
         int taskId = -1;
         synchronized (mWindowMap) {
@@ -7976,9 +7896,6 @@
             if (displayContent != null) {
                 mAnimator.addDisplayLocked(displayId);
                 displayContent.initializeDisplayBaseInfo();
-                if (displayContent.mTapDetector != null) {
-                    displayContent.mTapDetector.init();
-                }
             }
         }
     }
@@ -8043,8 +7960,6 @@
         public static final int RESIZE_STACK = 42;
         public static final int RESIZE_TASK = 43;
 
-        public static final int TWO_FINGER_SCROLL_START = 44;
-
         public static final int WINDOW_REPLACEMENT_TIMEOUT = 46;
 
         public static final int NOTIFY_APP_TRANSITION_STARTING = 47;
@@ -8542,11 +8457,6 @@
                     }
                     break;
 
-                case TWO_FINGER_SCROLL_START: {
-                    startScrollingTask((DisplayContent)msg.obj, msg.arg1, msg.arg2);
-                }
-                break;
-
                 case TAP_OUTSIDE_TASK: {
                     handleTapOutsideTask((DisplayContent)msg.obj, msg.arg1, msg.arg2);
                 }
@@ -10501,7 +10411,7 @@
             pw.print("  mRotation="); pw.print(mRotation);
                     pw.print(" mAltOrientation="); pw.println(mAltOrientation);
             pw.print("  mLastWindowForcedOrientation="); pw.print(mLastWindowForcedOrientation);
-                    pw.print(" mForcedAppOrientation="); pw.println(mForcedAppOrientation);
+                    pw.print(" mLastOrientation="); pw.println(mLastOrientation);
             pw.print("  mDeferredRotationPauseCount="); pw.println(mDeferredRotationPauseCount);
             pw.print("  Animation settings: disabled="); pw.print(mAnimationsDisabled);
                     pw.print(" window="); pw.print(mWindowAnimationScaleSetting);
@@ -10788,14 +10698,16 @@
         displayInfo.overscanTop = rect.top;
         displayInfo.overscanRight = rect.right;
         displayInfo.overscanBottom = rect.bottom;
-        mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(displayId, displayInfo);
-        configureDisplayPolicyLocked(displayContent);
+        if (mDisplayManagerInternal != null) {
+            mDisplayManagerInternal.setDisplayInfoOverrideFromWindowManager(displayId, displayInfo);
+            configureDisplayPolicyLocked(displayContent);
 
-        // TODO: Create an input channel for each display with touch capability.
-        if (displayId == Display.DEFAULT_DISPLAY) {
-            displayContent.mTapDetector = new TaskTapPointerEventListener(this, displayContent);
-            registerPointerEventListener(displayContent.mTapDetector);
-            registerPointerEventListener(mMousePositionTracker);
+            // TODO: Create an input channel for each display with touch capability.
+            if (displayId == Display.DEFAULT_DISPLAY) {
+                displayContent.mTapDetector = new TaskTapPointerEventListener(this, displayContent);
+                registerPointerEventListener(displayContent.mTapDetector);
+                registerPointerEventListener(mMousePositionTracker);
+            }
         }
 
         return displayContent;
@@ -11483,5 +11395,16 @@
                 return getDefaultDisplayContentLocked().getDockedDividerController().isResizing();
             }
         }
+
+        @Override
+        public void computeWindowsForAccessibility() {
+            final AccessibilityController accessibilityController;
+            synchronized (mWindowMap) {
+                accessibilityController = mAccessibilityController;
+            }
+            if (accessibilityController != null) {
+                accessibilityController.performComputeChangedWindowsNotLocked();
+            }
+        }
     }
 }
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 1ac3d44..21d02f8 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -25,6 +25,7 @@
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.Region;
+import android.os.Debug;
 import android.os.IBinder;
 import android.os.PowerManager;
 import android.os.RemoteCallbackList;
@@ -48,6 +49,7 @@
 import android.view.InputEventReceiver;
 import android.view.View;
 import android.view.ViewTreeObserver;
+import android.view.WindowInfo;
 import android.view.WindowManager;
 import android.view.WindowManagerPolicy;
 
@@ -55,11 +57,14 @@
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.LinkedList;
 
 import static android.app.ActivityManager.StackId;
 import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
 import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
 import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
+import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT;
 import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME;
 import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
@@ -99,13 +104,22 @@
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_CONFIGURATION;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_POWER;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_RESIZE;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STARTING_WINDOW;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_SURFACE_TRACE;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_MOVEMENT;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
+import static com.android.server.wm.WindowManagerService.TYPE_LAYER_MULTIPLIER;
+import static com.android.server.wm.WindowManagerService.TYPE_LAYER_OFFSET;
+import static com.android.server.wm.WindowStateAnimator.COMMIT_DRAW_PENDING;
+import static com.android.server.wm.WindowStateAnimator.HAS_DRAWN;
+import static com.android.server.wm.WindowStateAnimator.READY_TO_SHOW;
 
 class WindowList extends ArrayList<WindowState> {
     WindowList() {}
@@ -117,7 +131,7 @@
 /**
  * A window in the window manager.
  */
-final class WindowState implements WindowManagerPolicy.WindowState {
+class WindowState extends WindowContainer implements WindowManagerPolicy.WindowState {
     static final String TAG = TAG_WITH_CLASS_NAME ? "WindowState" : TAG_WM;
 
     // The minimal size of a window within the usable area of the freeform stack.
@@ -150,8 +164,7 @@
     // modified they will need to be locked.
     final WindowManager.LayoutParams mAttrs = new WindowManager.LayoutParams();
     final DeathRecipient mDeathRecipient;
-    final WindowState mAttachedWindow;
-    final WindowList mChildWindows = new WindowList();
+    private boolean mIsChildWindow;
     final int mBaseLayer;
     final int mSubLayer;
     final boolean mLayoutAttached;
@@ -166,7 +179,7 @@
     boolean mPolicyVisibilityAfterAnim = true;
     boolean mAppOpVisibility = true;
     boolean mAppFreezing;
-    boolean mAttachedHidden;    // is our parent window hidden?
+    boolean mHidden;    // Used to determine if to show child windows.
     boolean mWallpaperVisible;  // for wallpaper, what was last vis report?
     boolean mDragResizing;
     boolean mDragResizingChangeReported;
@@ -331,8 +344,6 @@
      */
     final Rect mInsetFrame = new Rect();
 
-    private static final Rect sTmpRect = new Rect();
-
     boolean mContentChanged;
 
     // If a window showing a wallpaper: the requested offset for the
@@ -503,15 +514,31 @@
      */
     boolean mSeamlesslyRotated = false;
 
+    /**
+     * Compares to window sub-layers and returns -1 if the first is lesser than the second in terms
+     * of z-order and 1 otherwise.
+     */
+    private static final Comparator<WindowContainer> sWindowSubLayerComparator = (w1, w2) -> {
+        final int layer1 = ((WindowState)w1).mSubLayer;
+        final int layer2 = ((WindowState)w2).mSubLayer;
+        if (layer1 < layer2 || (layer1 == layer2 && layer2 < 0 )) {
+            // We insert the child window into the list ordered by the sub-layer.
+            // For same sub-layers, the negative one should go below others; the positive one should
+            // go above others.
+            return -1;
+        }
+        return 1;
+    };
+
     WindowState(WindowManagerService service, Session s, IWindow c, WindowToken token,
-           WindowState attachedWindow, int appOp, int seq, WindowManager.LayoutParams a,
-           int viewVisibility, final DisplayContent displayContent) {
+           WindowState parentWindow, int appOp, int seq, WindowManager.LayoutParams a,
+           int viewVisibility, final DisplayContent displayContent, int ownerId) {
         mService = service;
         mSession = s;
         mClient = c;
         mAppOp = appOp;
         mToken = token;
-        mOwnerUid = s.mUid;
+        mOwnerUid = ownerId;
         mWindowId = new IWindowId.Stub() {
             @Override
             public void registerFocusObserver(IWindowFocusObserver observer) {
@@ -541,7 +568,7 @@
             c.asBinder().linkToDeath(deathRecipient, 0);
         } catch (RemoteException e) {
             mDeathRecipient = null;
-            mAttachedWindow = null;
+            mIsChildWindow = false;
             mLayoutAttached = false;
             mIsImWindow = false;
             mIsWallpaper = false;
@@ -554,65 +581,37 @@
         }
         mDeathRecipient = deathRecipient;
 
-        if ((mAttrs.type >= FIRST_SUB_WINDOW &&
-                mAttrs.type <= LAST_SUB_WINDOW)) {
+        if ((mAttrs.type >= FIRST_SUB_WINDOW && mAttrs.type <= LAST_SUB_WINDOW)) {
             // The multiplier here is to reserve space for multiple
             // windows in the same type layer.
-            mBaseLayer = mPolicy.windowTypeToLayerLw(
-                    attachedWindow.mAttrs.type) * WindowManagerService.TYPE_LAYER_MULTIPLIER
-                    + WindowManagerService.TYPE_LAYER_OFFSET;
+            mBaseLayer = mPolicy.windowTypeToLayerLw(parentWindow.mAttrs.type)
+                    * TYPE_LAYER_MULTIPLIER + TYPE_LAYER_OFFSET;
             mSubLayer = mPolicy.subWindowTypeToLayerLw(a.type);
-            mAttachedWindow = attachedWindow;
-            if (DEBUG_ADD_REMOVE) Slog.v(TAG, "Adding " + this + " to " + mAttachedWindow);
+            mIsChildWindow = true;
 
-            final WindowList childWindows = mAttachedWindow.mChildWindows;
-            final int numChildWindows = childWindows.size();
-            if (numChildWindows == 0) {
-                childWindows.add(this);
-            } else {
-                boolean added = false;
-                for (int i = 0; i < numChildWindows; i++) {
-                    final int childSubLayer = childWindows.get(i).mSubLayer;
-                    if (mSubLayer < childSubLayer
-                            || (mSubLayer == childSubLayer && childSubLayer < 0)) {
-                        // We insert the child window into the list ordered by the sub-layer. For
-                        // same sub-layers, the negative one should go below others; the positive
-                        // one should go above others.
-                        childWindows.add(i, this);
-                        added = true;
-                        break;
-                    }
-                }
-                if (!added) {
-                    childWindows.add(this);
-                }
-            }
+            if (DEBUG_ADD_REMOVE) Slog.v(TAG, "Adding " + this + " to " + parentWindow);
+            parentWindow.addChild(this, sWindowSubLayerComparator);
 
             mLayoutAttached = mAttrs.type !=
                     WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
-            mIsImWindow = attachedWindow.mAttrs.type == TYPE_INPUT_METHOD
-                    || attachedWindow.mAttrs.type == TYPE_INPUT_METHOD_DIALOG;
-            mIsWallpaper = attachedWindow.mAttrs.type == TYPE_WALLPAPER;
-            mIsFloatingLayer = mIsImWindow || mIsWallpaper;
+            mIsImWindow = parentWindow.mAttrs.type == TYPE_INPUT_METHOD
+                    || parentWindow.mAttrs.type == TYPE_INPUT_METHOD_DIALOG;
+            mIsWallpaper = parentWindow.mAttrs.type == TYPE_WALLPAPER;
         } else {
             // The multiplier here is to reserve space for multiple
             // windows in the same type layer.
             mBaseLayer = mPolicy.windowTypeToLayerLw(a.type)
-                    * WindowManagerService.TYPE_LAYER_MULTIPLIER
-                    + WindowManagerService.TYPE_LAYER_OFFSET;
+                    * TYPE_LAYER_MULTIPLIER + TYPE_LAYER_OFFSET;
             mSubLayer = 0;
-            mAttachedWindow = null;
+            mIsChildWindow = false;
             mLayoutAttached = false;
             mIsImWindow = mAttrs.type == TYPE_INPUT_METHOD
                     || mAttrs.type == TYPE_INPUT_METHOD_DIALOG;
             mIsWallpaper = mAttrs.type == TYPE_WALLPAPER;
-            mIsFloatingLayer = mIsImWindow || mIsWallpaper;
         }
+        mIsFloatingLayer = mIsImWindow || mIsWallpaper;
 
-        WindowState appWin = this;
-        while (appWin.isChildWindow()) {
-            appWin = appWin.mAttachedWindow;
-        }
+        final WindowState appWin = getTopParentWindow();
         WindowToken appToken = appWin.mToken;
         while (appToken.appWindowToken == null) {
             WindowToken parent = mService.mTokenMap.get(appToken.token);
@@ -1038,11 +1037,7 @@
 
     @Override
     public int getBaseType() {
-        WindowState win = this;
-        while (win.isChildWindow()) {
-            win = win.mAttachedWindow;
-        }
-        return win.mAttrs.type;
+        return getTopParentWindow().mAttrs.type;
     }
 
     @Override
@@ -1169,7 +1164,7 @@
      * TODO: See if there are other places we can use this check below instead of duplicating...
      */
     private boolean isVisibleUnchecked() {
-        return mHasSurface && mPolicyVisibility && !mAttachedHidden
+        return mHasSurface && mPolicyVisibility && !isParentWindowHidden()
                 && !mAnimatingExit && !mDestroying && (!mIsWallpaper || mWallpaperVisible);
     }
 
@@ -1197,7 +1192,7 @@
         final boolean animating = atoken != null && atoken.mAppAnimator.animation != null;
         return mHasSurface && !mDestroying && !mAnimatingExit
                 && (atoken == null ? mPolicyVisibility : !atoken.hiddenRequested)
-                && ((!mAttachedHidden && mViewVisibility == View.VISIBLE && !mRootToken.hidden)
+                && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mRootToken.hidden)
                         || mWinAnimator.mAnimation != null || animating);
     }
 
@@ -1236,7 +1231,7 @@
     boolean isVisibleOrAdding() {
         final AppWindowToken atoken = mAppToken;
         return (mHasSurface || (!mRelayoutCalled && mViewVisibility == View.VISIBLE))
-                && mPolicyVisibility && !mAttachedHidden
+                && mPolicyVisibility && !isParentWindowHidden()
                 && (atoken == null || !atoken.hiddenRequested)
                 && !mAnimatingExit && !mDestroying;
     }
@@ -1260,10 +1255,10 @@
         }
         final AppWindowToken atoken = mAppToken;
         if (atoken != null) {
-            return ((!mAttachedHidden && !atoken.hiddenRequested)
+            return ((!isParentWindowHidden() && !atoken.hiddenRequested)
                     || mWinAnimator.mAnimation != null || atoken.mAppAnimator.animation != null);
         }
-        return !mAttachedHidden || mWinAnimator.mAnimation != null;
+        return !isParentWindowHidden() || mWinAnimator.mAnimation != null;
     }
 
     /**
@@ -1301,7 +1296,7 @@
             return false;
         }
         return mHasSurface && mPolicyVisibility && !mDestroying
-                && ((!mAttachedHidden && mViewVisibility == View.VISIBLE && !mRootToken.hidden)
+                && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mRootToken.hidden)
                         || mWinAnimator.mAnimation != null
                         || ((mAppToken != null) && (mAppToken.mAppAnimator.animation != null)));
     }
@@ -1321,7 +1316,7 @@
             return false;
         }
         return mHasSurface && !mDestroying
-                && ((!mAttachedHidden && mViewVisibility == View.VISIBLE && !mRootToken.hidden)
+                && ((!isParentWindowHidden() && mViewVisibility == View.VISIBLE && !mRootToken.hidden)
                         || mWinAnimator.mAnimation != null
                         || ((atoken != null) && (atoken.mAppAnimator.animation != null)
                                 && !mWinAnimator.isDummyAnimation()));
@@ -1335,7 +1330,7 @@
     public boolean isDisplayedLw() {
         final AppWindowToken atoken = mAppToken;
         return isDrawnLw() && mPolicyVisibility
-            && ((!mAttachedHidden &&
+            && ((!isParentWindowHidden() &&
                     (atoken == null || !atoken.hiddenRequested))
                         || mWinAnimator.mAnimating
                         || (atoken != null && atoken.mAppAnimator.animation != null));
@@ -1357,7 +1352,7 @@
                 || !mRelayoutCalled
                 || (atoken == null && mRootToken.hidden)
                 || (atoken != null && atoken.hiddenRequested)
-                || mAttachedHidden
+                || isParentWindowHidden()
                 || (mAnimatingExit && !isAnimatingLw())
                 || mDestroying;
     }
@@ -1368,9 +1363,9 @@
      */
     public boolean isDrawFinishedLw() {
         return mHasSurface && !mDestroying &&
-                (mWinAnimator.mDrawState == WindowStateAnimator.COMMIT_DRAW_PENDING
-                || mWinAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW
-                || mWinAnimator.mDrawState == WindowStateAnimator.HAS_DRAWN);
+                (mWinAnimator.mDrawState == COMMIT_DRAW_PENDING
+                || mWinAnimator.mDrawState == READY_TO_SHOW
+                || mWinAnimator.mDrawState == HAS_DRAWN);
     }
 
     /**
@@ -1380,8 +1375,8 @@
     @Override
     public boolean isDrawnLw() {
         return mHasSurface && !mDestroying &&
-                (mWinAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW
-                || mWinAnimator.mDrawState == WindowStateAnimator.HAS_DRAWN);
+                (mWinAnimator.mDrawState == READY_TO_SHOW
+                || mWinAnimator.mDrawState == HAS_DRAWN);
     }
 
     /**
@@ -1406,7 +1401,7 @@
         return mHasSurface && (mContentChanged || mMovedByResize)
                 && !mAnimatingExit && mService.okToDisplay()
                 && (mFrame.top != mLastFrame.top || mFrame.left != mLastFrame.left)
-                && (mAttachedWindow == null || !mAttachedWindow.hasMoved());
+                && (!mIsChildWindow || !getParentWindow().hasMoved());
     }
 
     boolean isObscuringFullscreen(final DisplayInfo displayInfo) {
@@ -1447,13 +1442,31 @@
                 && mAppToken.mTask.mStack.isAdjustedForMinimizedDock();
     }
 
-    void removeLocked() {
+    @Override
+    void remove() {
+        super.remove();
+
+        if (mRemoved) {
+            // Nothing to do.
+            if (DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "WS.remove: " + this + " Already removed...");
+            return;
+        }
+
+        mRemoved = true;
+
+        if (mService.mInputMethodTarget == this) {
+            mService.moveInputMethodWindowsIfNeededLocked(false);
+        }
+
+        final int type = mAttrs.type;
+        if (WindowManagerService.excludeWindowTypeFromTapOutTask(type)) {
+            final DisplayContent displaycontent = getDisplayContent();
+            displaycontent.mTapExcludedWindows.remove(this);
+        }
+        mPolicy.removeWindowLw(this);
+
         disposeInputChannel();
 
-        if (isChildWindow()) {
-            if (DEBUG_ADD_REMOVE) Slog.v(TAG, "Removing " + this + " from " + mAttachedWindow);
-            mAttachedWindow.mChildWindows.remove(this);
-        }
         mWinAnimator.destroyDeferredSurfaceLocked();
         mWinAnimator.destroySurfaceLocked();
         mSession.windowRemovedLocked();
@@ -1463,6 +1476,8 @@
             // Ignore if it has already been removed (usually because
             // we are doing this as part of processing a death note.)
         }
+
+        mService.postWindowRemoveCleanupLocked(this);
     }
 
     void setHasSurface(boolean hasSurface) {
@@ -1624,7 +1639,7 @@
                 win.mReplacingWindow = null;
                 mSkipEnterAnimationForSeamlessReplacement = false;
                 if (win.mAnimatingExit || !animateReplacingWindow) {
-                    mService.removeWindowInnerLocked(win);
+                    win.remove();
                 }
             }
         }
@@ -1636,29 +1651,12 @@
         }
     }
 
-    boolean inDockedWorkspace() {
-        final Task task = getTask();
-        return task != null && task.inDockedWorkspace();
-    }
-
     // TODO: Strange usage of word workspace here and above.
     boolean inPinnedWorkspace() {
         final Task task = getTask();
         return task != null && task.inPinnedWorkspace();
     }
 
-    boolean isDockedInEffect() {
-        final Task task = getTask();
-        return task != null && task.isDockedInEffect();
-    }
-
-    void applyScrollIfNeeded() {
-        final Task task = getTask();
-        if (task != null) {
-            task.applyScrollToWindowIfNeeded(this);
-        }
-    }
-
     void applyAdjustForImeIfNeeded() {
         final Task task = getTask();
         if (task != null && task.mStack != null && task.mStack.isAdjustedForIme()) {
@@ -2103,7 +2101,7 @@
         mSurfaceSaved = false;
         if (mWinAnimator.mSurfaceController != null) {
             setHasSurface(true);
-            mWinAnimator.mDrawState = WindowStateAnimator.READY_TO_SHOW;
+            mWinAnimator.mDrawState = READY_TO_SHOW;
             mAnimatingWithSavedSurface = true;
 
             if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) {
@@ -2167,11 +2165,8 @@
     }
 
     boolean isHiddenFromUserLocked() {
-        // Attached windows are evaluated based on the window that they are attached to.
-        WindowState win = this;
-        while (win.isChildWindow()) {
-            win = win.mAttachedWindow;
-        }
+        // Child windows are evaluated based on their parent window.
+        final WindowState win = getTopParentWindow();
         if (win.mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
                 && win.mAppToken != null && win.mAppToken.showForAllUsers) {
 
@@ -2548,8 +2543,8 @@
             pw.print(prefix); pw.print("LastRequested w="); pw.print(mLastRequestedWidth);
                     pw.print(" h="); pw.println(mLastRequestedHeight);
         }
-        if (isChildWindow() || mLayoutAttached) {
-            pw.print(prefix); pw.print("mAttachedWindow="); pw.print(mAttachedWindow);
+        if (mIsChildWindow || mLayoutAttached) {
+            pw.print(prefix); pw.print("mParentWindow="); pw.print(getParentWindow());
                     pw.print(" mLayoutAttached="); pw.println(mLayoutAttached);
         }
         if (mIsImWindow || mIsWallpaper || mIsFloatingLayer) {
@@ -2589,14 +2584,14 @@
             pw.println(Integer.toHexString(mSystemUiVisibility));
         }
         if (!mPolicyVisibility || !mPolicyVisibilityAfterAnim || !mAppOpVisibility
-                || mAttachedHidden) {
+                || isParentWindowHidden()) {
             pw.print(prefix); pw.print("mPolicyVisibility=");
                     pw.print(mPolicyVisibility);
                     pw.print(" mPolicyVisibilityAfterAnim=");
                     pw.print(mPolicyVisibilityAfterAnim);
                     pw.print(" mAppOpVisibility=");
                     pw.print(mAppOpVisibility);
-                    pw.print(" mAttachedHidden="); pw.println(mAttachedHidden);
+                    pw.print(" parentHidden="); pw.println(isParentWindowHidden());
         }
         if (!mRelayoutCalled || mLayoutNeeded) {
             pw.print(prefix); pw.print("mRelayoutCalled="); pw.print(mRelayoutCalled);
@@ -2735,7 +2730,7 @@
             mLastTitle = title;
             mWasExiting = mAnimatingExit;
             mStringNameCache = "Window{" + Integer.toHexString(System.identityHashCode(this))
-                    + " u" + UserHandle.getUserId(mSession.mUid)
+                    + " u" + UserHandle.getUserId(mOwnerUid)
                     + " " + mLastTitle + (mAnimatingExit ? " EXITING}" : "}");
         }
         return mStringNameCache;
@@ -2767,7 +2762,7 @@
         // but SurfaceViews want to be always at a specific location so we don't fit it to the
         // display.
         final boolean fitToDisplay = (task == null || !nonFullscreenTask)
-                || (isChildWindow() && !noLimits);
+                || (mIsChildWindow && !noLimits);
         float x, y;
         int w,h;
 
@@ -2838,11 +2833,42 @@
     }
 
     boolean isChildWindow() {
-        return mAttachedWindow != null;
+        return mIsChildWindow;
+    }
+
+    /**
+     * Returns the bottom child window in regards to z-order of this window or null if no children.
+     */
+    WindowState getBottomChild() {
+        // Child windows are z-ordered based on sub-layer using {@link #sWindowSubLayerComparator}
+        // and the child with the lowest z-order will be at the head of the list.
+        return (WindowState) mChildren.peekFirst();
     }
 
     boolean layoutInParentFrame() {
-        return isChildWindow() && (mAttrs.privateFlags & PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME) != 0;
+        return mIsChildWindow
+                && (mAttrs.privateFlags & PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME) != 0;
+    }
+
+    /** Returns the parent window if this is a child of another window, else null. */
+    WindowState getParentWindow() {
+        // NOTE: We are not calling getParent() directly as the WindowState might be a child of a
+        // WindowContainer that isn't a WindowState.
+        return (mIsChildWindow) ? ((WindowState) super.getParent()) : null;
+    }
+
+    /** Returns the topmost parent window if this is a child of another window, else this. */
+    WindowState getTopParentWindow() {
+        WindowState w = this;
+        while (w.mIsChildWindow) {
+            w = w.getParentWindow();
+        }
+        return w;
+    }
+
+    boolean isParentWindowHidden() {
+        final WindowState parent = getParentWindow();
+        return (parent == null) ? false : parent.mHidden;
     }
 
     void setReplacing(boolean animate) {
@@ -2906,7 +2932,7 @@
     // them at such phases, as they won't be covered by window preservation,
     // and in general we expect them to return following relaunch.
     boolean shouldBeReplacedWithChildren() {
-        return isChildWindow() || mAttrs.type == TYPE_APPLICATION;
+        return mIsChildWindow || mAttrs.type == TYPE_APPLICATION;
     }
 
     public int getRotationAnimationHint() {
@@ -2916,4 +2942,244 @@
             return -1;
         }
     }
+
+    // This must be called while inside a transaction.
+    boolean performShowLocked() {
+        if (isHiddenFromUserLocked()) {
+            if (DEBUG_VISIBILITY) Slog.w(TAG, "hiding " + this + ", belonging to " + mOwnerUid);
+            hideLw(false);
+            return false;
+        }
+
+        logPerformShow("performShow on ");
+
+        if (mWinAnimator.mDrawState != READY_TO_SHOW || !isReadyForDisplayIgnoringKeyguard()) {
+            return false;
+        }
+
+        logPerformShow("Showing ");
+
+        mService.enableScreenIfNeededLocked();
+        mWinAnimator.applyEnterAnimationLocked();
+
+        // Force the show in the next prepareSurfaceLocked() call.
+        mWinAnimator.mLastAlpha = -1;
+        if (DEBUG_SURFACE_TRACE || DEBUG_ANIM) Slog.v(TAG,
+                "performShowLocked: mDrawState=HAS_DRAWN in " + this);
+        mWinAnimator.mDrawState = HAS_DRAWN;
+        mService.scheduleAnimationLocked();
+
+        if (mHidden) {
+            mHidden = false;
+            final DisplayContent displayContent = getDisplayContent();
+
+            for (int i = mChildren.size() - 1; i >= 0; --i) {
+                final WindowState c = (WindowState) mChildren.get(i);
+                if (c.mWinAnimator.mSurfaceController != null) {
+                    c.performShowLocked();
+                    // It hadn't been shown, which means layout not performed on it, so now we
+                    // want to make sure to do a layout.  If called from within the transaction
+                    // loop, this will cause it to restart with a new layout.
+                    if (displayContent != null) {
+                        displayContent.layoutNeeded = true;
+                    }
+                }
+            }
+        }
+
+        if (mAttrs.type != TYPE_APPLICATION_STARTING && mAppToken != null) {
+            mAppToken.onFirstWindowDrawn(this, mWinAnimator);
+        }
+
+        if (mAttrs.type == TYPE_INPUT_METHOD) {
+            mDisplayContent.mDividerControllerLocked.resetImeHideRequested();
+        }
+
+        return true;
+    }
+
+    void logPerformShow(String prefix) {
+        if (DEBUG_VISIBILITY
+                || (DEBUG_STARTING_WINDOW && mAttrs.type == TYPE_APPLICATION_STARTING)) {
+            Slog.v(TAG, prefix + this
+                    + ": mDrawState=" + mWinAnimator.drawStateToString()
+                    + " readyForDisplay=" + isReadyForDisplayIgnoringKeyguard()
+                    + " starting=" + (mAttrs.type == TYPE_APPLICATION_STARTING)
+                    + " during animation: policyVis=" + mPolicyVisibility
+                    + " parentHidden=" + isParentWindowHidden()
+                    + " tok.hiddenRequested="
+                    + (mAppToken != null ? mAppToken.hiddenRequested : false)
+                    + " tok.hidden=" + (mAppToken != null ? mAppToken.hidden : false)
+                    + " animating=" + mWinAnimator.mAnimating
+                    + " tok animating="
+                    + (mWinAnimator.mAppAnimator != null ? mWinAnimator.mAppAnimator.animating : false)
+                    + " Callers=" + Debug.getCallers(4));
+        }
+    }
+
+    WindowInfo getWindowInfo() {
+        WindowInfo windowInfo = WindowInfo.obtain();
+        windowInfo.type = mAttrs.type;
+        windowInfo.layer = mLayer;
+        windowInfo.token = mClient.asBinder();
+        windowInfo.title = mAttrs.accessibilityTitle;
+        windowInfo.accessibilityIdOfAnchor = mAttrs.accessibilityIdOfAnchor;
+        windowInfo.focused = isFocused();
+
+        if (mIsChildWindow) {
+            windowInfo.parentToken = getParentWindow().mClient.asBinder();
+        }
+
+        final int childCount = mChildren.size();
+        if (childCount > 0) {
+            if (windowInfo.childTokens == null) {
+                windowInfo.childTokens = new ArrayList(childCount);
+            }
+            for (int j = 0; j < childCount; j++) {
+                final WindowState child = (WindowState) mChildren.get(j);
+                windowInfo.childTokens.add(child.mClient.asBinder());
+            }
+        }
+        return windowInfo;
+    }
+
+    void adjustAnimLayer(int adj) {
+        mWinAnimator.mAnimLayer = mLayer + adj;
+        if (DEBUG_LAYERS) Slog.v(TAG_WM, "win=" + this + " anim layer: " + mWinAnimator.mAnimLayer);
+        for (int i = mChildren.size() - 1; i >= 0; i--) {
+            final WindowState childWindow = (WindowState) mChildren.get(i);
+            childWindow.adjustAnimLayer(adj);
+        }
+    }
+
+    // TODO: come-up with a better name for this method that represents what it does.
+    // Or, it is probably not going to matter anyways if we are successful in getting rid of
+    // the WindowList concept.
+    int reAddWindowLocked(int index) {
+        final WindowList windows = getWindowList();
+        // Adding child windows relies on child windows being ordered by mSubLayer using
+        // {@link #sWindowSubLayerComparator}.
+        final int childCount = mChildren.size();
+        boolean winAdded = false;
+        for (int j = 0; j < childCount; j++) {
+            final WindowState child = (WindowState) mChildren.get(j);
+            if (!winAdded && child.mSubLayer >= 0) {
+                if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM,
+                        "Re-adding child window at " + index + ": " + child);
+                mRebuilding = false;
+                windows.add(index, this);
+                index++;
+                winAdded = true;
+            }
+            if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Re-adding window at " + index + ": " + child);
+            child.mRebuilding = false;
+            windows.add(index, child);
+            index++;
+        }
+        if (!winAdded) {
+            if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Re-adding window at " + index + ": " + this);
+            mRebuilding = false;
+            windows.add(index, this);
+            index++;
+        }
+        mService.mWindowsChanged = true;
+        return index;
+    }
+
+    int removeFromWindowList(int interestingPos) {
+        final WindowList windows = getWindowList();
+        int wpos = windows.indexOf(this);
+        if (wpos < 0) {
+            return interestingPos;
+        }
+
+        if (wpos < interestingPos) interestingPos--;
+        if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Temp removing at " + wpos + ": " + this);
+        windows.remove(wpos);
+        mService.mWindowsChanged = true;
+        int childCount = mChildren.size();
+        while (childCount > 0) {
+            childCount--;
+            final WindowState cw = (WindowState) mChildren.get(childCount);
+            int cpos = windows.indexOf(cw);
+            if (cpos >= 0) {
+                if (cpos < interestingPos) interestingPos--;
+                if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM,
+                        "Temp removing child at " + cpos + ": " + cw);
+                windows.remove(cpos);
+            }
+        }
+        return interestingPos;
+    }
+
+    void onExitAnimationDone() {
+        if (DEBUG_ANIM) Slog.v(TAG, "onExitAnimationDone in " + this
+                + ": exiting=" + mAnimatingExit + " remove=" + mRemoveOnExit
+                + " windowAnimating=" + mWinAnimator.isWindowAnimationSet());
+
+        if (!mChildren.isEmpty()) {
+            // Copying to a different list as multiple children can be removed.
+            // TODO: Not sure if we really need to copy this into a different list.
+            final LinkedList childWindows = new LinkedList(mChildren);
+            for (int i = childWindows.size() - 1; i >= 0; i--) {
+                ((WindowState)childWindows.get(i)).onExitAnimationDone();
+            }
+        }
+
+        if (mWinAnimator.mEnteringAnimation) {
+            mWinAnimator.mEnteringAnimation = false;
+            mService.requestTraversal();
+            // System windows don't have an activity and an app token as a result, but need a way
+            // to be informed about their entrance animation end.
+            if (mAppToken == null) {
+                try {
+                    mClient.dispatchWindowShown();
+                } catch (RemoteException e) {
+                }
+            }
+        }
+
+        if (!mWinAnimator.isWindowAnimationSet()) {
+            //TODO (multidisplay): Accessibility is supported only for the default display.
+            if (mService.mAccessibilityController != null && getDisplayId() == DEFAULT_DISPLAY) {
+                mService.mAccessibilityController.onSomeWindowResizedOrMovedLocked();
+            }
+        }
+
+        if (!mAnimatingExit) {
+            return;
+        }
+
+        if (mWinAnimator.isWindowAnimationSet()) {
+            return;
+        }
+
+        if (WindowManagerService.localLOGV || DEBUG_ADD_REMOVE) Slog.v(TAG,
+                "Exit animation finished in " + this + ": remove=" + mRemoveOnExit);
+
+        mDestroying = true;
+
+        final boolean hasSurface = mWinAnimator.hasSurface();
+        if (hasSurface) {
+            mWinAnimator.hide("onExitAnimationDone");
+        }
+
+        // If we have an app token, we ask it to destroy the surface for us, so that it can take
+        // care to ensure the activity has actually stopped and the surface is not still in use.
+        // Otherwise we add the service to mDestroySurface and allow it to be processed in our next
+        // transaction.
+        if (mAppToken != null) {
+            mAppToken.destroySurfaces();
+        } else {
+            if (hasSurface) {
+                mService.mDestroySurface.add(this);
+            }
+            if (mRemoveOnExit) {
+                mService.mPendingRemove.add(this);
+                mRemoveOnExit = false;
+            }
+        }
+        mAnimatingExit = false;
+        mService.mWallpaperControllerLocked.hideWallpapers(this);
+    }
 }
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index e374ee9..34e5260 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -17,7 +17,6 @@
 package com.android.server.wm;
 
 import static android.app.ActivityManager.StackId;
-import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
 import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
@@ -25,7 +24,6 @@
 import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
 import static com.android.server.wm.AppWindowAnimator.sDummyAnimation;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
-import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS;
@@ -54,7 +52,6 @@
 import android.graphics.RectF;
 import android.graphics.Region;
 import android.os.Debug;
-import android.os.RemoteException;
 import android.os.Trace;
 import android.util.Slog;
 import android.view.DisplayInfo;
@@ -103,7 +100,7 @@
     // Unchanging local convenience fields.
     final WindowManagerService mService;
     final WindowState mWin;
-    final WindowStateAnimator mAttachedWinAnimator;
+    private final WindowStateAnimator mParentWinAnimator;
     final WindowAnimator mAnimator;
     AppWindowAnimator mAppAnimator;
     final Session mSession;
@@ -261,8 +258,7 @@
         }
 
         mWin = win;
-        mAttachedWinAnimator = win.mAttachedWindow == null
-                ? null : win.mAttachedWindow.mWinAnimator;
+        mParentWinAnimator = !win.isChildWindow() ? null : win.getParentWindow().mWinAnimator;
         mAppAnimator = win.mAppToken == null ? null : win.mAppToken.mAppAnimator;
         mSession = win.mSession;
         mAttrType = win.mAttrs.type;
@@ -310,7 +306,7 @@
      */
     boolean isAnimationSet() {
         return mAnimation != null
-                || (mAttachedWinAnimator != null && mAttachedWinAnimator.mAnimation != null)
+                || (mParentWinAnimator != null && mParentWinAnimator.mAnimation != null)
                 || (mAppAnimator != null && mAppAnimator.isAnimating());
     }
 
@@ -491,7 +487,7 @@
             }
         }
 
-        finishExit();
+        mWin.onExitAnimationDone();
         final int displayId = mWin.getDisplayId();
         mAnimator.setPendingLayoutChanges(displayId, WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM);
         if (DEBUG_LAYOUT_REPEATS)
@@ -505,80 +501,6 @@
         return false;
     }
 
-    void finishExit() {
-        if (DEBUG_ANIM) Slog.v(
-                TAG, "finishExit in " + this
-                + ": exiting=" + mWin.mAnimatingExit
-                + " remove=" + mWin.mRemoveOnExit
-                + " windowAnimating=" + isWindowAnimationSet());
-
-        if (!mWin.mChildWindows.isEmpty()) {
-            // Copying to a different list as multiple children can be removed.
-            final WindowList childWindows = new WindowList(mWin.mChildWindows);
-            for (int i = childWindows.size() - 1; i >= 0; i--) {
-                childWindows.get(i).mWinAnimator.finishExit();
-            }
-        }
-
-        if (mEnteringAnimation) {
-            mEnteringAnimation = false;
-            mService.requestTraversal();
-            // System windows don't have an activity and an app token as a result, but need a way
-            // to be informed about their entrance animation end.
-            if (mWin.mAppToken == null) {
-                try {
-                    mWin.mClient.dispatchWindowShown();
-                } catch (RemoteException e) {
-                }
-            }
-        }
-
-        if (!isWindowAnimationSet()) {
-            //TODO (multidisplay): Accessibility is supported only for the default display.
-            if (mService.mAccessibilityController != null
-                    && mWin.getDisplayId() == DEFAULT_DISPLAY) {
-                mService.mAccessibilityController.onSomeWindowResizedOrMovedLocked();
-            }
-        }
-
-        if (!mWin.mAnimatingExit) {
-            return;
-        }
-
-        if (isWindowAnimationSet()) {
-            return;
-        }
-
-        if (WindowManagerService.localLOGV || DEBUG_ADD_REMOVE) Slog.v(TAG,
-                "Exit animation finished in " + this + ": remove=" + mWin.mRemoveOnExit);
-
-
-        mWin.mDestroying = true;
-
-        final boolean hasSurface = hasSurface();
-        if (hasSurface) {
-            hide("finishExit");
-        }
-
-        // If we have an app token, we ask it to destroy the surface for us,
-        // so that it can take care to ensure the activity has actually stopped
-        // and the surface is not still in use. Otherwise we add the service to
-        // mDestroySurface and allow it to be processed in our next transaction.
-        if (mWin.mAppToken != null) {
-            mWin.mAppToken.destroySurfaces();
-        } else {
-            if (hasSurface) {
-                mService.mDestroySurface.add(mWin);
-            }
-            if (mWin.mRemoveOnExit) {
-                mService.mPendingRemove.add(mWin);
-                mWin.mRemoveOnExit = false;
-            }
-        }
-        mWin.mAnimatingExit = false;
-        mWallpaperControllerLocked.hideWallpapers(mWin);
-    }
-
     void hide(String reason) {
         if (!mLastHidden) {
             //dump();
@@ -630,7 +552,7 @@
         boolean result = false;
         final AppWindowToken atoken = mWin.mAppToken;
         if (atoken == null || atoken.allDrawn || mWin.mAttrs.type == TYPE_APPLICATION_STARTING) {
-            result = performShowLocked();
+            result = mWin.performShowLocked();
         }
         return result;
     }
@@ -853,15 +775,12 @@
             return;
         }
 
-        int i = mWin.mChildWindows.size();
         // When destroying a surface we want to make sure child windows are hidden. If we are
         // preserving the surface until redraw though we intend to swap it out with another surface
         // for resizing. In this case the window always remains visible to the user and the child
         // windows should likewise remain visible.
-        while (!mDestroyPreservedSurfaceUponRedraw && i > 0) {
-            i--;
-            WindowState c = mWin.mChildWindows.get(i);
-            c.mAttachedHidden = true;
+        if (!mDestroyPreservedSurfaceUponRedraw) {
+            mWin.mHidden = true;
         }
 
         try {
@@ -929,8 +848,8 @@
     void computeShownFrameLocked() {
         final boolean selfTransformation = mHasLocalTransformation;
         Transformation attachedTransformation =
-                (mAttachedWinAnimator != null && mAttachedWinAnimator.mHasLocalTransformation)
-                ? mAttachedWinAnimator.mTransformation : null;
+                (mParentWinAnimator != null && mParentWinAnimator.mHasLocalTransformation)
+                ? mParentWinAnimator.mTransformation : null;
         Transformation appTransformation = (mAppAnimator != null && mAppAnimator.hasTransformation)
                 ? mAppAnimator.transformation : null;
 
@@ -1161,7 +1080,7 @@
 
         // Initialize the decor rect to the entire frame.
         if (w.isDockedResizing() ||
-                (w.isChildWindow() && w.mAttachedWindow.isDockedResizing())) {
+                (w.isChildWindow() && w.getParentWindow().isDockedResizing())) {
 
             // If we are resizing with the divider, the task bounds might be smaller than the
             // stack bounds. The system decor is used to clip to the task bounds, which we don't
@@ -1547,7 +1466,7 @@
         if (mIsWallpaper && !mWin.mWallpaperVisible) {
             // Wallpaper is no longer visible and there is no wp target => hide it.
             hide("prepareSurfaceLocked");
-        } else if (w.mAttachedHidden || !w.isOnScreen()) {
+        } else if (w.isParentWindowHidden() || !w.isOnScreen()) {
             hide("prepareSurfaceLocked");
             mWallpaperControllerLocked.hideWallpapers(w);
 
@@ -1704,90 +1623,6 @@
         mSurfaceController.setSecure(isSecure);
     }
 
-    // This must be called while inside a transaction.
-    boolean performShowLocked() {
-        if (mWin.isHiddenFromUserLocked()) {
-            if (DEBUG_VISIBILITY) Slog.w(TAG, "hiding " + mWin + ", belonging to " + mWin.mOwnerUid);
-            mWin.hideLw(false);
-            return false;
-        }
-        if (DEBUG_VISIBILITY || (DEBUG_STARTING_WINDOW &&
-                mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING)) {
-            Slog.v(TAG, "performShow on " + this
-                    + ": mDrawState=" + drawStateToString() + " readyForDisplay="
-                    + mWin.isReadyForDisplayIgnoringKeyguard()
-                    + " starting=" + (mWin.mAttrs.type == TYPE_APPLICATION_STARTING)
-                    + " during animation: policyVis=" + mWin.mPolicyVisibility
-                    + " attHidden=" + mWin.mAttachedHidden
-                    + " tok.hiddenRequested="
-                    + (mWin.mAppToken != null ? mWin.mAppToken.hiddenRequested : false)
-                    + " tok.hidden="
-                    + (mWin.mAppToken != null ? mWin.mAppToken.hidden : false)
-                    + " animating=" + mAnimating
-                    + " tok animating="
-                    + (mAppAnimator != null ? mAppAnimator.animating : false) + " Callers="
-                    + Debug.getCallers(3));
-        }
-        if (mDrawState == READY_TO_SHOW && mWin.isReadyForDisplayIgnoringKeyguard()) {
-            if (DEBUG_VISIBILITY || (DEBUG_STARTING_WINDOW &&
-                    mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING)) {
-                Slog.v(TAG, "Showing " + this
-                        + " during animation: policyVis=" + mWin.mPolicyVisibility
-                        + " attHidden=" + mWin.mAttachedHidden
-                        + " tok.hiddenRequested="
-                        + (mWin.mAppToken != null ? mWin.mAppToken.hiddenRequested : false)
-                        + " tok.hidden="
-                        + (mWin.mAppToken != null ? mWin.mAppToken.hidden : false)
-                        + " animating=" + mAnimating
-                        + " tok animating="
-                        + (mAppAnimator != null ? mAppAnimator.animating : false));
-            }
-
-            mService.enableScreenIfNeededLocked();
-
-            applyEnterAnimationLocked();
-
-            // Force the show in the next prepareSurfaceLocked() call.
-            mLastAlpha = -1;
-            if (DEBUG_SURFACE_TRACE || DEBUG_ANIM)
-                Slog.v(TAG, "performShowLocked: mDrawState=HAS_DRAWN in " + mWin);
-            mDrawState = HAS_DRAWN;
-            mService.scheduleAnimationLocked();
-
-            int i = mWin.mChildWindows.size();
-            while (i > 0) {
-                i--;
-                WindowState c = mWin.mChildWindows.get(i);
-                if (c.mAttachedHidden) {
-                    c.mAttachedHidden = false;
-                    if (c.mWinAnimator.mSurfaceController != null) {
-                        c.mWinAnimator.performShowLocked();
-                        // It hadn't been shown, which means layout not
-                        // performed on it, so now we want to make sure to
-                        // do a layout.  If called from within the transaction
-                        // loop, this will cause it to restart with a new
-                        // layout.
-                        final DisplayContent displayContent = c.getDisplayContent();
-                        if (displayContent != null) {
-                            displayContent.layoutNeeded = true;
-                        }
-                    }
-                }
-            }
-
-            if (mWin.mAttrs.type != TYPE_APPLICATION_STARTING && mWin.mAppToken != null) {
-                mWin.mAppToken.onFirstWindowDrawn(mWin, this);
-            }
-
-            if (mWin.mAttrs.type == TYPE_INPUT_METHOD) {
-                mWin.mDisplayContent.mDividerControllerLocked.resetImeHideRequested();
-            }
-
-            return true;
-        }
-        return false;
-    }
-
     /**
      * Have the surface flinger show a surface, robustly dealing with
      * error conditions.  In particular, if there is not enough memory
@@ -2048,8 +1883,7 @@
         mDeferTransactionUntilFrame = frameNumber;
         mDeferTransactionTime = System.currentTimeMillis();
         mSurfaceController.deferTransactionUntil(
-                mWin.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
-                frameNumber);
+                mWin.getParentWindow().mWinAnimator.mSurfaceController.getHandle(), frameNumber);
     }
 
     // Defer the current transaction to the frame number of the last saved transaction.
@@ -2068,7 +1902,7 @@
             mDeferTransactionUntilFrame = -1;
         } else {
             mSurfaceController.deferTransactionUntil(
-                    mWin.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
+                    mWin.getParentWindow().mWinAnimator.mSurfaceController.getHandle(),
                     mDeferTransactionUntilFrame);
         }
     }
@@ -2151,11 +1985,12 @@
         //     (in the new coordinate space). We then freeze layer updates until the resize
         //     occurs, at which point we undo, them.
         if (w.isChildWindow() && mSurfaceController.getTransformToDisplayInverse()) {
-            frameRect.set(x, y, x+width, y+height);
+            frameRect.set(x, y, x + width, y + height);
             transform.mapRect(frameRect);
 
-            w.mAttrs.x = (int) frameRect.left - w.mAttachedWindow.mFrame.left;
-            w.mAttrs.y = (int) frameRect.top - w.mAttachedWindow.mFrame.top;
+            final Rect parentWindowFrame = w.getParentWindow().mFrame;
+            w.mAttrs.x = (int) frameRect.left - parentWindowFrame.left;
+            w.mAttrs.y = (int) frameRect.top - parentWindowFrame.top;
             w.mAttrs.width = (int) Math.ceil(frameRect.width());
             w.mAttrs.height = (int) Math.ceil(frameRect.height());
 
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index e5f9728..b8dec49 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -9,7 +9,6 @@
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE;
-import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
 import static android.view.WindowManager.LayoutParams.TYPE_DREAM;
 import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG;
 import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
@@ -214,9 +213,9 @@
             recoveringMemory = true;
             // Wait a little bit for things to settle down, and off we go.
             while (!mService.mForceRemoves.isEmpty()) {
-                WindowState ws = mService.mForceRemoves.remove(0);
+                final WindowState ws = mService.mForceRemoves.remove(0);
                 Slog.i(TAG, "Force removing: " + ws);
-                mService.removeWindowInnerLocked(ws);
+                ws.remove();
             }
             Slog.w(TAG, "Due to memory failure, waiting a bit for next layout");
             Object tmp = new Object();
@@ -545,8 +544,8 @@
             mService.mPendingRemove.clear();
             DisplayContentList displayList = new DisplayContentList();
             for (i = 0; i < N; i++) {
-                WindowState w = mService.mPendingRemoveTmp[i];
-                mService.removeWindowInnerLocked(w);
+                final WindowState w = mService.mPendingRemoveTmp[i];
+                w.remove();
                 final DisplayContent displayContent = w.getDisplayContent();
                 if (displayContent != null && !displayList.contains(displayContent)) {
                     displayList.add(displayContent);
@@ -664,8 +663,8 @@
                     for (int i = windows.size() - 1; i >= 0; i--) {
                         WindowState w = windows.get(i);
                         if (w.mHasSurface) {
-                            mService.mPolicy.applyPostLayoutPolicyLw(w, w.mAttrs,
-                                    w.mAttachedWindow);
+                            mService.mPolicy.applyPostLayoutPolicyLw(
+                                    w, w.mAttrs, w.getParentWindow());
                         }
                     }
                     displayContent.pendingLayoutChanges |=
@@ -811,7 +810,7 @@
                                         + winAnimator.mSurfaceController
                                         + " pv=" + w.mPolicyVisibility
                                         + " mDrawState=" + winAnimator.drawStateToString()
-                                        + " ah=" + w.mAttachedHidden
+                                        + " ph=" + w.isParentWindowHidden()
                                         + " th=" + atoken.hiddenRequested
                                         + " a=" + winAnimator.mAnimating);
                             }
@@ -959,13 +958,13 @@
                         + win.mRelayoutCalled + " hidden="
                         + win.mRootToken.hidden + " hiddenRequested="
                         + (atoken != null && atoken.hiddenRequested)
-                        + " mAttachedHidden=" + win.mAttachedHidden);
+                        + " parentHidden=" + win.isParentWindowHidden());
                 else Slog.v(TAG, "  VIS: mViewVisibility="
                         + win.mViewVisibility + " mRelayoutCalled="
                         + win.mRelayoutCalled + " hidden="
                         + win.mRootToken.hidden + " hiddenRequested="
                         + (atoken != null && atoken.hiddenRequested)
-                        + " mAttachedHidden=" + win.mAttachedHidden);
+                        + " parentHidden=" + win.isParentWindowHidden());
             }
 
             // If this view is GONE, then skip it -- keep the current
@@ -1041,7 +1040,7 @@
                     }
                     win.mLayoutNeeded = false;
                     win.prelayout();
-                    mService.mPolicy.layoutWindowLw(win, win.mAttachedWindow);
+                    mService.mPolicy.layoutWindowLw(win, win.getParentWindow());
                     win.mLayoutSeq = seq;
                     if (DEBUG_LAYOUT) Slog.v(TAG,
                             "  LAYOUT: mFrame=" + win.mFrame + " mContainingFrame="
@@ -1270,7 +1269,7 @@
                     // We also don't clear the mAnimatingExit flag for windows which have the
                     // mRemoveOnExit flag. This indicates an explicit remove request has been issued
                     // by the client. We should let animation proceed and not clear this flag or
-                    // they won't eventually be removed by WindowStateAnimator#finishExit.
+                    // they won't eventually be removed by WindowState#onExitAnimationDone.
                     if (!win.mWillReplaceWindow && !win.mRemoveOnExit) {
                         win.mAnimatingExit = false;
                         // Clear mAnimating flag together with mAnimatingExit. When animation
diff --git a/services/core/jni/com_android_server_AlarmManagerService.cpp b/services/core/jni/com_android_server_AlarmManagerService.cpp
index 407c072..8f6f613 100644
--- a/services/core/jni/com_android_server_AlarmManagerService.cpp
+++ b/services/core/jni/com_android_server_AlarmManagerService.cpp
@@ -37,11 +37,39 @@
 #include <errno.h>
 #include <unistd.h>
 #include <linux/ioctl.h>
-#include <linux/android_alarm.h>
 #include <linux/rtc.h>
 
 #include <memory>
 
+//--------------------------------------------------------------------------
+// The android_alarm.h header has been deleted from the kernel headers.
+// Add only the parts still needed, this should be deleted in the future.
+#include <linux/ioctl.h>
+
+enum android_alarm_type {
+  ANDROID_ALARM_RTC_WAKEUP,
+  ANDROID_ALARM_RTC,
+  ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
+  ANDROID_ALARM_ELAPSED_REALTIME,
+  ANDROID_ALARM_SYSTEMTIME,
+  ANDROID_ALARM_TYPE_COUNT,
+};
+
+enum android_alarm_return_flags {
+  ANDROID_ALARM_RTC_WAKEUP_MASK = 1U << ANDROID_ALARM_RTC_WAKEUP,
+  ANDROID_ALARM_RTC_MASK = 1U << ANDROID_ALARM_RTC,
+  ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP_MASK = 1U << ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
+  ANDROID_ALARM_ELAPSED_REALTIME_MASK = 1U << ANDROID_ALARM_ELAPSED_REALTIME,
+  ANDROID_ALARM_SYSTEMTIME_MASK = 1U << ANDROID_ALARM_SYSTEMTIME,
+  ANDROID_ALARM_TIME_CHANGE_MASK = 1U << 16
+};
+
+#define ALARM_IOW(c,type,size) _IOW('a', (c) | ((type) << 4), size)
+#define ANDROID_ALARM_WAIT _IO('a', 1)
+#define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec)
+#define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec)
+//--------------------------------------------------------------------------
+
 namespace android {
 
 static const size_t N_ANDROID_TIMERFDS = ANDROID_ALARM_TYPE_COUNT + 1;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 16196a04..32fc515 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -218,6 +218,8 @@
     private static final String ATTR_SETUP_COMPLETE = "setup-complete";
     private static final String ATTR_PROVISIONING_STATE = "provisioning-state";
     private static final String ATTR_PERMISSION_POLICY = "permission-policy";
+    private static final String ATTR_DEVICE_PROVISIONING_CONFIG_APPLIED =
+            "device-provisioning-config-applied";
 
     private static final String ATTR_DELEGATED_CERT_INSTALLER = "delegated-cert-installer";
     private static final String ATTR_APPLICATION_RESTRICTIONS_MANAGER
@@ -417,6 +419,8 @@
         int mUserProvisioningState;
         int mPermissionPolicy;
 
+        boolean mDeviceProvisioningConfigApplied = false;
+
         final ArrayMap<ComponentName, ActiveAdmin> mAdminMap = new ArrayMap<>();
         final ArrayList<ActiveAdmin> mAdminList = new ArrayList<>();
         final ArrayList<ComponentName> mRemovingAdmins = new ArrayList<>();
@@ -2173,6 +2177,10 @@
                 out.attribute(null, ATTR_SETUP_COMPLETE,
                         Boolean.toString(true));
             }
+            if (policy.mDeviceProvisioningConfigApplied) {
+                out.attribute(null, ATTR_DEVICE_PROVISIONING_CONFIG_APPLIED,
+                        Boolean.toString(true));
+            }
             if (policy.mUserProvisioningState != DevicePolicyManager.STATE_USER_UNMANAGED) {
                 out.attribute(null, ATTR_PROVISIONING_STATE,
                         Integer.toString(policy.mUserProvisioningState));
@@ -2333,6 +2341,12 @@
             if (userSetupComplete != null && Boolean.toString(true).equals(userSetupComplete)) {
                 policy.mUserSetupComplete = true;
             }
+            String deviceProvisioningConfigApplied = parser.getAttributeValue(null,
+                    ATTR_DEVICE_PROVISIONING_CONFIG_APPLIED);
+            if (deviceProvisioningConfigApplied != null
+                    && Boolean.toString(true).equals(deviceProvisioningConfigApplied)) {
+                policy.mDeviceProvisioningConfigApplied = true;
+            }
             String provisioningState = parser.getAttributeValue(null, ATTR_PROVISIONING_STATE);
             if (!TextUtils.isEmpty(provisioningState)) {
                 policy.mUserProvisioningState = Integer.parseInt(provisioningState);
@@ -5097,10 +5111,6 @@
         boolean legacyApp = false;
         if (ai.targetSdkVersion <= Build.VERSION_CODES.M) {
             legacyApp = true;
-        } else if ("com.google.android.apps.enterprise.dmagent".equals(ai.packageName)
-                && ai.versionCode == 697) {
-            // TODO: STOPSHIP remove this (revert ag/895987) once a new prebuilt is dropped
-            legacyApp = true;
         }
 
         final int rawStatus = getEncryptionStatus();
@@ -9032,6 +9042,11 @@
         }
     }
 
+    @Override
+    public boolean isDeviceProvisioned() {
+        return !TextUtils.isEmpty(mInjector.systemPropertiesGet(PROPERTY_DEVICE_OWNER_PRESENT));
+    }
+
     private void removePackageIfRequired(final String packageName, final int userId) {
         if (!packageHasActiveAdmins(packageName, userId)) {
             // Will not do anything if uninstall was not requested or was already started.
@@ -9098,4 +9113,23 @@
         // restrictions.
         pushUserRestrictions(userHandle);
     }
+
+    @Override
+    public void setDeviceProvisioningConfigApplied() {
+        enforceManageUsers();
+        synchronized (this) {
+            DevicePolicyData policy = getUserData(UserHandle.USER_SYSTEM);
+            policy.mDeviceProvisioningConfigApplied = true;
+            saveSettingsLocked(UserHandle.USER_SYSTEM);
+        }
+    }
+
+    @Override
+    public boolean isDeviceProvisioningConfigApplied() {
+        enforceManageUsers();
+        synchronized (this) {
+            final DevicePolicyData policy = getUserData(UserHandle.USER_SYSTEM);
+            return policy.mDeviceProvisioningConfigApplied;
+        }
+    }
 }
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 099f518..75b4dae 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -86,6 +86,7 @@
 import com.android.server.pm.PackageManagerService;
 import com.android.server.pm.ShortcutService;
 import com.android.server.pm.UserManagerService;
+import com.android.server.policy.PhoneWindowManager;
 import com.android.server.power.PowerManagerService;
 import com.android.server.power.ShutdownThread;
 import com.android.server.restrictions.RestrictionsManagerService;
@@ -159,6 +160,8 @@
             "com.google.android.clockwork.ThermalObserver";
     private static final String WEAR_BLUETOOTH_SERVICE_CLASS =
             "com.google.android.clockwork.bluetooth.WearBluetoothService";
+    private static final String WEAR_WIFI_MEDIATOR_SERVICE_CLASS =
+            "com.google.android.clockwork.wifi.WearWifiMediatorService";
     private static final String WEAR_TIME_SERVICE_CLASS =
             "com.google.android.clockwork.time.WearTimeService";
     private static final String ACCOUNT_SERVICE_CLASS =
@@ -614,7 +617,7 @@
             traceBeginAndSlog("StartWindowManagerService");
             wm = WindowManagerService.main(context, inputManager,
                     mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL,
-                    !mFirstBoot, mOnlyCore);
+                    !mFirstBoot, mOnlyCore, new PhoneWindowManager());
             ServiceManager.addService(Context.WINDOW_SERVICE, wm);
             ServiceManager.addService(Context.INPUT_SERVICE, inputManager);
             Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
@@ -1167,6 +1170,7 @@
 
         if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) {
             mSystemServiceManager.startService(WEAR_BLUETOOTH_SERVICE_CLASS);
+            mSystemServiceManager.startService(WEAR_WIFI_MEDIATOR_SERVICE_CLASS);
           if (!disableNonCoreServices) {
               mSystemServiceManager.startService(WEAR_TIME_SERVICE_CLASS);
           }
diff --git a/services/net/java/android/net/apf/ApfFilter.java b/services/net/java/android/net/apf/ApfFilter.java
index 57f784a..0f812ac 100644
--- a/services/net/java/android/net/apf/ApfFilter.java
+++ b/services/net/java/android/net/apf/ApfFilter.java
@@ -180,6 +180,7 @@
     private static final int IPV4_FRAGMENT_OFFSET_MASK = 0x1fff;
     private static final int IPV4_PROTOCOL_OFFSET = ETH_HEADER_LEN + 9;
     private static final int IPV4_DEST_ADDR_OFFSET = ETH_HEADER_LEN + 16;
+    private static final int IPV4_ANY_HOST_ADDRESS = 0;
 
     private static final int IPV6_NEXT_HEADER_OFFSET = ETH_HEADER_LEN + 6;
     private static final int IPV6_SRC_ADDR_OFFSET = ETH_HEADER_LEN + 8;
@@ -201,12 +202,14 @@
     private static final int DHCP_CLIENT_MAC_OFFSET = ETH_HEADER_LEN + UDP_HEADER_LEN + 28;
 
     private static final int ARP_HEADER_OFFSET = ETH_HEADER_LEN;
-    private static final byte[] ARP_IPV4_REQUEST_HEADER = new byte[]{
+    private static final int ARP_OPCODE_OFFSET = ARP_HEADER_OFFSET + 6;
+    private static final short ARP_OPCODE_REQUEST = 1;
+    private static final short ARP_OPCODE_REPLY = 2;
+    private static final byte[] ARP_IPV4_HEADER = new byte[]{
             0, 1, // Hardware type: Ethernet (1)
             8, 0, // Protocol type: IP (0x0800)
             6,    // Hardware size: 6
             4,    // Protocol size: 4
-            0, 1  // Opcode: request (1)
     };
     private static final int ARP_TARGET_IP_ADDRESS_OFFSET = ETH_HEADER_LEN + 24;
 
@@ -667,23 +670,48 @@
     private void generateArpFilterLocked(ApfGenerator gen) throws IllegalInstructionException {
         // Here's a basic summary of what the ARP filter program does:
         //
-        // if interface has IPv4 address:
-        //   if it's not an ARP IPv4 request:
-        //     pass
-        //   if it's not a request for our IPv4 address:
-        //     drop
+        // if not ARP IPv4
+        //   pass
+        // if not ARP IPv4 reply or request
+        //   pass
+        // if unicast ARP reply
+        //   pass
+        // if interface has no IPv4 address
+        //   if target ip is 0.0.0.0
+        //      drop
+        // else
+        //   if target ip is not the interface ip
+        //      drop
         // pass
 
-        if (mIPv4Address != null) {
-            // if it's not an ARP IPv4 request, pass
-            gen.addLoadImmediate(Register.R0, ARP_HEADER_OFFSET);
-            gen.addJumpIfBytesNotEqual(Register.R0, ARP_IPV4_REQUEST_HEADER, gen.PASS_LABEL);
-            // if it's not a request for our IPv4 address, drop
+        final String checkTargetIPv4 = "checkTargetIPv4";
+
+        // Pass if not ARP IPv4.
+        gen.addLoadImmediate(Register.R0, ARP_HEADER_OFFSET);
+        gen.addJumpIfBytesNotEqual(Register.R0, ARP_IPV4_HEADER, gen.PASS_LABEL);
+
+        // Pass if unknown ARP opcode.
+        gen.addLoad16(Register.R0, ARP_OPCODE_OFFSET);
+        gen.addJumpIfR0Equals(ARP_OPCODE_REQUEST, checkTargetIPv4); // Skip to unicast check
+        gen.addJumpIfR0NotEquals(ARP_OPCODE_REPLY, gen.PASS_LABEL);
+
+        // Pass if unicast reply.
+        gen.addLoadImmediate(Register.R0, ETH_DEST_ADDR_OFFSET);
+        gen.addJumpIfBytesNotEqual(Register.R0, ETH_BROADCAST_MAC_ADDRESS, gen.PASS_LABEL);
+
+        // Either a unicast request, a unicast reply, or a broadcast reply.
+        gen.defineLabel(checkTargetIPv4);
+        if (mIPv4Address == null) {
+            // When there is no IPv4 address, drop GARP replies (b/29404209).
+            gen.addLoad32(Register.R0, ARP_TARGET_IP_ADDRESS_OFFSET);
+            gen.addJumpIfR0Equals(IPV4_ANY_HOST_ADDRESS, gen.DROP_LABEL);
+        } else {
+            // When there is an IPv4 address, drop unicast/broadcast requests
+            // and broadcast replies with a different target IPv4 address.
             gen.addLoadImmediate(Register.R0, ARP_TARGET_IP_ADDRESS_OFFSET);
             gen.addJumpIfBytesNotEqual(Register.R0, mIPv4Address, gen.DROP_LABEL);
         }
 
-        // Otherwise, pass
         gen.addJump(gen.PASS_LABEL);
     }
 
diff --git a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
new file mode 100644
index 0000000..407d315
--- /dev/null
+++ b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java
@@ -0,0 +1,583 @@
+/*
+ * 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.ip;
+
+import static android.system.OsConstants.*;
+
+import android.net.IpPrefix;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.NetworkUtils;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.StructGroupReq;
+import android.system.StructTimeval;
+import android.util.Log;
+
+import com.android.internal.annotations.GuardedBy;
+
+import libcore.io.IoBridge;
+import libcore.util.HexEncoding;
+
+import java.io.FileDescriptor;
+import java.io.InterruptedIOException;
+import java.io.IOException;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+
+/**
+ * Basic IPv6 Router Advertisement Daemon.
+ *
+ * TODO:
+ *
+ *     - Rewrite using Handler (and friends) so that AlarmManager can deliver
+ *       "kick" messages when it's time to send a multicast RA.
+ *
+ *     - Support transmitting MAX_URGENT_RTR_ADVERTISEMENTS number of empty
+ *       RAs with zero default router lifetime when transitioning from an
+ *       advertising state to a non-advertising state.
+ *
+ * @hide
+ */
+public class RouterAdvertisementDaemon {
+    private static final String TAG = RouterAdvertisementDaemon.class.getSimpleName();
+    private static final byte ICMPV6_ND_ROUTER_SOLICIT = asByte(133);
+    private static final byte ICMPV6_ND_ROUTER_ADVERT  = asByte(134);
+    private static final int IPV6_MIN_MTU = 1280;
+    private static final int MIN_RA_HEADER_SIZE = 16;
+
+    // Summary of various timers and lifetimes.
+    private static final int MIN_RTR_ADV_INTERVAL_SEC = 300;
+    private static final int MAX_RTR_ADV_INTERVAL_SEC = 600;
+    // In general, router, prefix, and DNS lifetimes are all advised to be
+    // greater than or equal to 3 * MAX_RTR_ADV_INTERVAL.  Here, we double
+    // that to allow for multicast packet loss.
+    //
+    // This MAX_RTR_ADV_INTERVAL_SEC and DEFAULT_LIFETIME are also consistent
+    // with the https://tools.ietf.org/html/rfc7772#section-4 discussion of
+    // "approximately 7 RAs per hour".
+    private static final int DEFAULT_LIFETIME = 6 * MAX_RTR_ADV_INTERVAL_SEC;
+    // From https://tools.ietf.org/html/rfc4861#section-10 .
+    private static final int MIN_DELAY_BETWEEN_RAS_SEC = 3;
+    // Both initial and final RAs, but also for changes in RA contents.
+    // From https://tools.ietf.org/html/rfc4861#section-10 .
+    private static final int  MAX_URGENT_RTR_ADVERTISEMENTS = 5;
+
+    private static final int DAY_IN_SECONDS = 86_400;
+
+    private static final byte[] ALL_NODES = new byte[] {
+            (byte) 0xff, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
+    };
+
+    private final String mIfName;
+    private final int mIfIndex;
+    private final byte[] mHwAddr;
+    private final InetSocketAddress mAllNodes;
+
+    // This lock is to protect the RA from being updated while being
+    // transmitted on another thread  (multicast or unicast).
+    //
+    // TODO: This should be handled with a more RCU-like approach.
+    private final Object mLock = new Object();
+    @GuardedBy("mLock")
+    private final byte[] mRA = new byte[IPV6_MIN_MTU];
+    @GuardedBy("mLock")
+    private int mRaLength;
+
+    private volatile FileDescriptor mSocket;
+    private volatile MulticastTransmitter mMulticastTransmitter;
+    private volatile UnicastResponder mUnicastResponder;
+
+    public static class RaParams {
+        public boolean hasDefaultRoute;
+        public int mtu;
+        public HashSet<IpPrefix> prefixes;
+        public HashSet<Inet6Address> dnses;
+
+        public RaParams() {
+            hasDefaultRoute = false;
+            mtu = IPV6_MIN_MTU;
+            prefixes = new HashSet<IpPrefix>();
+            dnses = new HashSet<Inet6Address>();
+        }
+
+        public RaParams(RaParams other) {
+            hasDefaultRoute = other.hasDefaultRoute;
+            mtu = other.mtu;
+            prefixes = (HashSet) other.prefixes.clone();
+            dnses = (HashSet) other.dnses.clone();
+        }
+    }
+
+
+    public RouterAdvertisementDaemon(String ifname, int ifindex, byte[] hwaddr) {
+        mIfName = ifname;
+        mIfIndex = ifindex;
+        mHwAddr = hwaddr;
+        mAllNodes = new InetSocketAddress(getAllNodesForScopeId(mIfIndex), 0);
+    }
+
+    public void buildNewRa(RaParams params) {
+        if (params == null || params.prefixes.isEmpty()) {
+            // No RA to be served at this time.
+            clearRa();
+            return;
+        }
+
+        if (params.mtu < IPV6_MIN_MTU) {
+            params.mtu = IPV6_MIN_MTU;
+        }
+
+        final ByteBuffer ra = ByteBuffer.wrap(mRA);
+        ra.order(ByteOrder.BIG_ENDIAN);
+
+        synchronized (mLock) {
+            try {
+                putHeader(ra, params.hasDefaultRoute);
+                putSlla(ra, mHwAddr);
+                // https://tools.ietf.org/html/rfc5175#section-4 says:
+                //
+                //     "MUST NOT be added to a Router Advertisement message
+                //      if no flags in the option are set."
+                //
+                // putExpandedFlagsOption(ra);
+                putMtu(ra, params.mtu);
+                for (IpPrefix ipp : params.prefixes) {
+                    putPio(ra, ipp);
+                }
+                if (params.dnses.size() > 0) {
+                    putRdnss(ra, params.dnses);
+                }
+                mRaLength = ra.position();
+            } catch (BufferOverflowException e) {
+                Log.e(TAG, "Could not construct new RA: " + e);
+                mRaLength = 0;
+                return;
+            }
+        }
+
+        maybeNotifyMulticastTransmitter();
+    }
+
+    public boolean start() {
+        if (!createSocket()) {
+            return false;
+        }
+
+        mMulticastTransmitter = new MulticastTransmitter();
+        mMulticastTransmitter.start();
+
+        mUnicastResponder = new UnicastResponder();
+        mUnicastResponder.start();
+
+        return true;
+    }
+
+    public void stop() {
+        closeSocket();
+        mMulticastTransmitter = null;
+        mUnicastResponder = null;
+    }
+
+    private void clearRa() {
+        boolean notifySocket;
+        synchronized (mLock) {
+            notifySocket = (mRaLength != 0);
+            mRaLength = 0;
+        }
+        if (notifySocket) {
+            maybeNotifyMulticastTransmitter();
+        }
+    }
+
+    private void maybeNotifyMulticastTransmitter() {
+        final MulticastTransmitter m = mMulticastTransmitter;
+        if (m != null) {
+            m.hup();
+        }
+    }
+
+    private static Inet6Address getAllNodesForScopeId(int scopeId) {
+        try {
+            return Inet6Address.getByAddress("ff02::1", ALL_NODES, scopeId);
+        } catch (UnknownHostException uhe) {
+            Log.wtf(TAG, "Failed to construct ff02::1 InetAddress: " + uhe);
+            return null;
+        }
+    }
+
+    private static byte asByte(int value) { return (byte) value; }
+    private static short asShort(int value) { return (short) value; }
+
+    private static void putHeader(ByteBuffer ra, boolean hasDefaultRoute) {
+        /**
+            Router Advertisement Message Format
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |     Code      |          Checksum             |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            | Cur Hop Limit |M|O|H|Prf|P|R|R|       Router Lifetime         |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                         Reachable Time                        |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                          Retrans Timer                        |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |   Options ...
+            +-+-+-+-+-+-+-+-+-+-+-+-
+        */
+        final byte DEFAULT_HOPLIMIT = 64;
+        ra.put(ICMPV6_ND_ROUTER_ADVERT)
+          .put(asByte(0))
+          .putShort(asShort(0))
+          .put(DEFAULT_HOPLIMIT)
+          // RFC 4191 "high" preference, iff. advertising a default route.
+          .put(hasDefaultRoute ? asByte(0x08) : asByte(0))
+          .putShort(hasDefaultRoute ? asShort(DEFAULT_LIFETIME) : asShort(0))
+          .putInt(0)
+          .putInt(0);
+    }
+
+    private static void putSlla(ByteBuffer ra, byte[] slla) {
+        /**
+            Source/Target Link-layer Address
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |    Length     |    Link-Layer Address ...
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+        */
+        if (slla == null || slla.length != 6) {
+            // Only IEEE 802.3 6-byte addresses are supported.
+            return;
+        }
+        final byte ND_OPTION_SLLA = 1;
+        final byte SLLA_NUM_8OCTETS = 1;
+        ra.put(ND_OPTION_SLLA)
+          .put(SLLA_NUM_8OCTETS)
+          .put(slla);
+    }
+
+    private static void putExpandedFlagsOption(ByteBuffer ra) {
+        /**
+            Router Advertisement Expanded Flags Option
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |    Length     |         Bit fields available ..
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            ... for assignment                                              |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+
+        final byte ND_OPTION_EFO = 26;
+        final byte EFO_NUM_8OCTETS = 1;
+
+        ra.put(ND_OPTION_EFO)
+          .put(EFO_NUM_8OCTETS)
+          .putShort(asShort(0))
+          .putInt(0);
+    }
+
+    private static void putMtu(ByteBuffer ra, int mtu) {
+        /**
+            MTU
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |    Length     |           Reserved            |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                              MTU                              |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+        */
+        final byte ND_OPTION_MTU = 5;
+        final byte MTU_NUM_8OCTETS = 1;
+        ra.put(ND_OPTION_MTU)
+          .put(MTU_NUM_8OCTETS)
+          .putShort(asShort(0))
+          .putInt(mtu);
+    }
+
+    private static void putPio(ByteBuffer ra, IpPrefix ipp) {
+        /**
+            Prefix Information
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |    Length     | Prefix Length |L|A| Reserved1 |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                         Valid Lifetime                        |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                       Preferred Lifetime                      |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                           Reserved2                           |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                                                               |
+            +                                                               +
+            |                                                               |
+            +                            Prefix                             +
+            |                                                               |
+            +                                                               +
+            |                                                               |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+        */
+        final int prefixLength = ipp.getPrefixLength();
+        if (prefixLength != 64) {
+            return;
+        }
+        final byte ND_OPTION_PIO = 3;
+        final byte PIO_NUM_8OCTETS = 4;
+
+        final byte[] addr = ipp.getAddress().getAddress();
+        ra.put(ND_OPTION_PIO)
+          .put(PIO_NUM_8OCTETS)
+          .put(asByte(prefixLength))
+          .put(asByte(0xc0))  // L&A set
+          .putInt(DEFAULT_LIFETIME)
+          .putInt(DEFAULT_LIFETIME)
+          .putInt(0)
+          .put(addr);
+    }
+
+    private static void putRio(ByteBuffer ra, IpPrefix ipp) {
+        /**
+            Route Information Option
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |    Length     | Prefix Length |Resvd|Prf|Resvd|
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                        Route Lifetime                         |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                   Prefix (Variable Length)                    |
+            .                                                               .
+            .                                                               .
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+        final int prefixLength = ipp.getPrefixLength();
+        if (prefixLength > 64) {
+            return;
+        }
+        final byte ND_OPTION_RIO = 24;
+        final byte RIO_NUM_8OCTETS = asByte(
+                (prefixLength == 0) ? 1 : (prefixLength <= 8) ? 2 : 3);
+
+        final byte[] addr = ipp.getAddress().getAddress();
+        ra.put(ND_OPTION_RIO)
+          .put(RIO_NUM_8OCTETS)
+          .put(asByte(prefixLength))
+          .put(asByte(0x18))
+          .putInt(DEFAULT_LIFETIME);
+
+        // Rely upon an IpPrefix's address being properly zeroed.
+        if (prefixLength > 0) {
+            ra.put(addr, 0, (prefixLength <= 64) ? 8 : 16);
+        }
+    }
+
+    private static void putRdnss(ByteBuffer ra, Set<Inet6Address> dnses) {
+        /**
+            Recursive DNS Server (RDNSS) Option
+
+             0                   1                   2                   3
+             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |     Type      |     Length    |           Reserved            |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                           Lifetime                            |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+            |                                                               |
+            :            Addresses of IPv6 Recursive DNS Servers            :
+            |                                                               |
+            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         */
+
+        final byte ND_OPTION_RDNSS = 25;
+        final byte RDNSS_NUM_8OCTETS = asByte(dnses.size() * 2 + 1);
+        ra.put(ND_OPTION_RDNSS)
+          .put(RDNSS_NUM_8OCTETS)
+          .putShort(asShort(0))
+          .putInt(DEFAULT_LIFETIME);
+
+        for (Inet6Address dns : dnses) {
+            ra.put(dns.getAddress());
+        }
+    }
+
+    private boolean createSocket() {
+        final int SEND_TIMEOUT_MS = 300;
+
+        try {
+            mSocket = Os.socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
+            // Setting SNDTIMEO is purely for defensive purposes.
+            Os.setsockoptTimeval(
+                    mSocket, SOL_SOCKET, SO_SNDTIMEO, StructTimeval.fromMillis(SEND_TIMEOUT_MS));
+            Os.setsockoptIfreq(mSocket, SOL_SOCKET, SO_BINDTODEVICE, mIfName);
+            NetworkUtils.protectFromVpn(mSocket);
+            NetworkUtils.setupRaSocket(mSocket, mIfIndex);
+        } catch (ErrnoException | IOException e) {
+            Log.e(TAG, "Failed to create RA daemon socket: " + e);
+            return false;
+        }
+
+        return true;
+    }
+
+    private void closeSocket() {
+        if (mSocket != null) {
+            try {
+                IoBridge.closeAndSignalBlockedThreads(mSocket);
+            } catch (IOException ignored) {}
+        }
+        mSocket = null;
+    }
+
+    private boolean isSocketValid() {
+        final FileDescriptor s = mSocket;
+        return (s != null) && s.valid();
+    }
+
+    private boolean isSuitableDestination(InetSocketAddress dest) {
+        if (mAllNodes.equals(dest)) {
+            return true;
+        }
+
+        final InetAddress destip = dest.getAddress();
+        return (destip instanceof Inet6Address) &&
+                destip.isLinkLocalAddress() &&
+               (((Inet6Address) destip).getScopeId() == mIfIndex);
+    }
+
+    private void maybeSendRA(InetSocketAddress dest) {
+        if (dest == null || !isSuitableDestination(dest)) {
+            dest = mAllNodes;
+        }
+
+        try {
+            synchronized (mLock) {
+                if (mRaLength < MIN_RA_HEADER_SIZE) {
+                    // No actual RA to send.
+                    return;
+                }
+                Os.sendto(mSocket, mRA, 0, mRaLength, 0, dest);
+            }
+            Log.d(TAG, "RA sendto " + dest.getAddress().getHostAddress());
+        } catch (ErrnoException | SocketException e) {
+            if (isSocketValid()) {
+                Log.e(TAG, "sendto error: " + e);
+            }
+        }
+    }
+
+    private final class UnicastResponder extends Thread {
+        private final InetSocketAddress solicitor = new InetSocketAddress();
+        // The recycled buffer for receiving Router Solicitations from clients.
+        // If the RS is larger than IPV6_MIN_MTU the packets are truncated.
+        // This is fine since currently only byte 0 is examined anyway.
+        private final byte mSolication[] = new byte[IPV6_MIN_MTU];
+
+        @Override
+        public void run() {
+            while (isSocketValid()) {
+                try {
+                    // Blocking receive.
+                    final int rval = Os.recvfrom(
+                            mSocket, mSolication, 0, mSolication.length, 0, solicitor);
+                    // Do the least possible amount of validation.
+                    if (rval < 1 || mSolication[0] != ICMPV6_ND_ROUTER_SOLICIT) {
+                        continue;
+                    }
+                } catch (ErrnoException | SocketException e) {
+                    if (isSocketValid()) {
+                        Log.e(TAG, "recvfrom error: " + e);
+                    }
+                    continue;
+                }
+
+                maybeSendRA(solicitor);
+            }
+        }
+    }
+
+    // TODO: Consider moving this to run on a provided Looper as a Handler,
+    // with WakeupMessage-style messages providing the timer driven input.
+    private final class MulticastTransmitter extends Thread {
+        private final Random mRandom = new Random();
+        private final AtomicInteger mUrgentAnnouncements = new AtomicInteger(0);
+
+        @Override
+        public void run() {
+            while (isSocketValid()) {
+                try {
+                    Thread.sleep(getNextMulticastTransmitDelayMs());
+                } catch (InterruptedException ignored) {
+                    // Stop sleeping, immediately send an RA, and continue.
+                }
+
+                maybeSendRA(mAllNodes);
+            }
+        }
+
+        public void hup() {
+            // Set to one fewer that the desired number, because as soon as
+            // the thread interrupt is processed we immediately send an RA
+            // and mUrgentAnnouncements is not examined until the subsequent
+            // sleep interval computation (i.e. this way we send 3 and not 4).
+            mUrgentAnnouncements.set(MAX_URGENT_RTR_ADVERTISEMENTS - 1);
+            interrupt();
+        }
+
+        private int getNextMulticastTransmitDelaySec() {
+            synchronized (mLock) {
+                if (mRaLength < MIN_RA_HEADER_SIZE) {
+                    // No actual RA to send; just sleep for 1 day.
+                    return DAY_IN_SECONDS;
+                }
+            }
+
+            final int urgentPending = mUrgentAnnouncements.getAndDecrement();
+            if (urgentPending > 0) {
+                return MIN_DELAY_BETWEEN_RAS_SEC;
+            }
+
+            return MIN_RTR_ADV_INTERVAL_SEC + mRandom.nextInt(
+                    MAX_RTR_ADV_INTERVAL_SEC - MIN_RTR_ADV_INTERVAL_SEC);
+        }
+
+        private long getNextMulticastTransmitDelayMs() {
+            return 1000 * (long) getNextMulticastTransmitDelaySec();
+        }
+    }
+}
diff --git a/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java b/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java
index a92498b..1a60592 100644
--- a/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java
+++ b/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java
@@ -26,6 +26,7 @@
 import android.app.RetailDemoModeServiceInternal;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
+import android.content.ContentProvider;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -51,8 +52,10 @@
 import android.os.PowerManager;
 import android.os.RemoteException;
 import android.os.SystemClock;
+import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.provider.CallLog;
 import android.provider.MediaStore;
 import android.provider.Settings;
 import android.util.KeyValueListParser;
@@ -78,6 +81,7 @@
     private static final String DEMO_USER_NAME = "Demo";
     private static final String ACTION_RESET_DEMO =
             "com.android.server.retaildemo.ACTION_RESET_DEMO";
+    private static final String SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED = "sys.retaildemo.enabled";
 
     private static final int MSG_TURN_SCREEN_ON = 0;
     private static final int MSG_INACTIVITY_TIME_OUT = 1;
@@ -220,9 +224,13 @@
             if (mDeviceDemoModeUri.equals(uri)) {
                 mDeviceInDemoMode = UserManager.isDeviceInDemoMode(getContext());
                 if (mDeviceInDemoMode) {
+                    SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "1");
                     mHandler.sendEmptyMessage(MSG_START_NEW_SESSION);
-                } else if (mWakeLock.isHeld()) {
-                    mWakeLock.release();
+                } else {
+                    SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "0");
+                    if (mWakeLock.isHeld()) {
+                        mWakeLock.release();
+                    }
                 }
             }
             // If device is provisioned and left demo mode - run the cleanup in demo folder
@@ -231,8 +239,8 @@
                 BackgroundThread.getHandler().post(new Runnable() {
                     @Override
                     public void run() {
-                        if (!deleteDemoFolderContents()) {
-                            Slog.w(TAG, "Failed to delete demo folder contents");
+                        if (!deletePreloadsFolderContents()) {
+                            Slog.w(TAG, "Failed to delete preloads folder contents");
                         }
                     }
                 });
@@ -321,19 +329,24 @@
     private void setupDemoUser(UserInfo userInfo) {
         UserManager um = getUserManager();
         UserHandle user = UserHandle.of(userInfo.id);
-        LockPatternUtils lockPatternUtils = new LockPatternUtils(getContext());
-        lockPatternUtils.setLockScreenDisabled(true, userInfo.id);
         um.setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, true, user);
         um.setUserRestriction(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES, true, user);
         um.setUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, true, user);
         um.setUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER, true, user);
         um.setUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, true, user);
+        um.setUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH, true, user);
+        // Set this to false because the default is true on user creation
+        um.setUserRestriction(UserManager.DISALLOW_OUTGOING_CALLS, false, user);
+        // Disallow rebooting in safe mode - controlled by user 0
+        getUserManager().setUserRestriction(UserManager.DISALLOW_SAFE_BOOT, true,
+                UserHandle.SYSTEM);
         Settings.Secure.putIntForUser(getContext().getContentResolver(),
                 Settings.Secure.SKIP_FIRST_USE_HINTS, 1, userInfo.id);
         Settings.Secure.putIntForUser(getContext().getContentResolver(),
                 Settings.Global.PACKAGE_VERIFIER_ENABLE, 0, userInfo.id);
 
-        grantRuntimePermissionToCamera(userInfo.getUserHandle());
+        grantRuntimePermissionToCamera(user);
+        clearPrimaryCallLog();
     }
 
     private void grantRuntimePermissionToCamera(UserHandle user) {
@@ -351,7 +364,18 @@
         } catch (Exception e) {
             // Ignore
         }
+    }
 
+    private void clearPrimaryCallLog() {
+        final ContentResolver resolver = getContext().getContentResolver();
+
+        // Deleting primary user call log so that it doesn't get copied to the new demo user
+        final Uri uri = CallLog.Calls.CONTENT_URI;
+        try {
+            resolver.delete(uri, null, null);
+        } catch (Exception e) {
+            Slog.w(TAG, "Deleting call log failed: " + e);
+        }
     }
 
     void logSessionDuration() {
@@ -388,8 +412,8 @@
                 getContext().getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0;
     }
 
-    private boolean deleteDemoFolderContents() {
-        final File dir = Environment.getDataPreloadsDemoDirectory();
+    private boolean deletePreloadsFolderContents() {
+        final File dir = Environment.getDataPreloadsDirectory();
         Slog.i(TAG, "Deleting contents of " + dir);
         return FileUtils.deleteContents(dir);
     }
@@ -468,6 +492,7 @@
 
         if (UserManager.isDeviceInDemoMode(getContext())) {
             mDeviceInDemoMode = true;
+            SystemProperties.set(SYSTEM_PROPERTY_RETAIL_DEMO_ENABLED, "1");
             mHandler.sendEmptyMessage(MSG_START_NEW_SESSION);
         }
         SettingsObserver settingsObserver = new SettingsObserver(mHandler);
@@ -496,6 +521,9 @@
         mAmi.updatePersistentConfigurationForUser(getSystemUsersConfiguration(), userId);
         turnOffAllFlashLights();
         muteVolumeStreams();
+        // Disable lock screen for demo users.
+        LockPatternUtils lockPatternUtils = new LockPatternUtils(getContext());
+        lockPatternUtils.setLockScreenDisabled(true, userId);
         mNm.notifyAsUser(TAG, 1, createResetNotification(), UserHandle.of(userId));
 
         synchronized (mActivityLock) {
diff --git a/services/tests/servicestests/assets/shortcut/dumpsys_expected.txt b/services/tests/servicestests/assets/shortcut/dumpsys_expected.txt
new file mode 100644
index 0000000..eed2087
--- /dev/null
+++ b/services/tests/servicestests/assets/shortcut/dumpsys_expected.txt
@@ -0,0 +1,105 @@
+{
+ "shortcut": [
+  {
+   "userId": 0,
+   "launchers": [
+    {
+     "name": "com.android.launcher.1"
+    },
+    {
+     "name": "com.android.launcher.2"
+    },
+    {
+     "name": "com.android.launcher.3"
+    },
+    {
+     "name": "com.android.launcher.4"
+    },
+    {
+     "name": "com.android.launcher.1"
+    }
+   ],
+   "packages": [
+    {
+     "name": "com.android.test.1",
+     "dynamic": 3,
+     "manifest": 0,
+     "pinned": 4,
+     "bitmaps": 0,
+     "bitmapBytes": 0
+    },
+    {
+     "name": "com.android.test.2",
+     "dynamic": 4,
+     "manifest": 0,
+     "pinned": 5,
+     "bitmaps": 2,
+     "bitmapBytes": ***BITMAP_SIZE***
+    },
+    {
+     "name": "com.android.test.3",
+     "dynamic": 3,
+     "manifest": 0,
+     "pinned": 6,
+     "bitmaps": 0,
+     "bitmapBytes": 0
+    },
+    {
+     "name": "com.android.test.4",
+     "dynamic": 0,
+     "manifest": 0,
+     "pinned": 0,
+     "bitmaps": 0,
+     "bitmapBytes": 0
+    }
+   ]
+  },
+  {
+   "userId": 10,
+   "launchers": [
+    {
+     "name": "com.android.launcher.1"
+    }
+   ],
+   "packages": [
+    {
+     "name": "com.android.test.1",
+     "dynamic": 3,
+     "manifest": 0,
+     "pinned": 2,
+     "bitmaps": 0,
+     "bitmapBytes": 0
+    }
+   ]
+  },
+  {
+   "userId": 20,
+   "launchers": [
+    {
+     "name": "com.android.launcher.1"
+    },
+    {
+     "name": "com.android.launcher.2"
+    },
+    {
+     "name": "com.android.launcher.3"
+    },
+    {
+     "name": "com.android.launcher.1"
+    }
+   ],
+   "packages": [
+    {
+     "name": "com.android.test.1",
+     "dynamic": 3,
+     "manifest": 0,
+     "pinned": 6,
+     "bitmaps": 0,
+     "bitmapBytes": 0
+    }
+   ]
+  }
+ ],
+ "lowRam": false,
+ "iconSize": 128
+}
diff --git a/services/tests/servicestests/res/xml/shortcut_error_3.xml b/services/tests/servicestests/res/xml/shortcut_error_3.xml
index a7b9b84..24ee024 100644
--- a/services/tests/servicestests/res/xml/shortcut_error_3.xml
+++ b/services/tests/servicestests/res/xml/shortcut_error_3.xml
@@ -19,6 +19,10 @@
         android:shortcutShortLabel="@string/shortcut_title1"
     />
     <shortcut
+        android:shortcutId="@string/shortcut_title1"
+        android:shortcutShortLabel="@string/shortcut_title1"
+    />
+    <shortcut
         android:shortcutId="x3"
         android:shortcutShortLabel="@string/shortcut_title1"
         >
@@ -26,5 +30,7 @@
             android:action="android.intent.action.VIEW"
             >
         </intent>
+        <categories android:name="@string/shortcut_title1" />
+        <categories android:name="cat2" />
     </shortcut>
 </shortcuts>
diff --git a/services/tests/servicestests/res/xml/shortcut_error_4.xml b/services/tests/servicestests/res/xml/shortcut_error_4.xml
index 3697bb4..f680e99 100644
--- a/services/tests/servicestests/res/xml/shortcut_error_4.xml
+++ b/services/tests/servicestests/res/xml/shortcut_error_4.xml
@@ -19,7 +19,9 @@
         android:shortcutId="ms1"
         android:shortcutShortLabel="@string/shortcut_title1"
         >
-        <intent android:action="action1" />
+        <intent android:action="action1" >
+            <extra android:name="key1" android:value="value1" />
+        </intent>
     </shortcut>
 
     <!-- Invalid: no intent -->
@@ -28,13 +30,17 @@
         android:shortcutShortLabel="@string/shortcut_title1"
         />
 
-    <!-- Valid: more than one intent; first one will be picked. -->
+    <!-- Valid: more than one intent -->
     <shortcut
         android:shortcutId="ms2"
         android:shortcutShortLabel="@string/shortcut_title1"
         >
-        <intent android:action="action2_1" />
-        <intent android:action="action2_2" />
+        <intent android:action="action2_1" >
+            <extra android:name="key1" android:value="value1" />
+        </intent>
+        <intent android:action="action2_2">
+            <extra android:name="key2" android:value="value2" />
+        </intent>
     </shortcut>
 
     <!-- Valid: disabled shortcut doesn't need an intent -->
@@ -53,11 +59,12 @@
         <intent android:action="action4" />
     </shortcut>
 
-    <!-- Invalid, no intent action -->
+    <!-- Invalid, no intent action (if any of the intents is invalid, the entire shortcut will be invalid.) -->
     <shortcut
         android:shortcutId="ms_ignored2"
         android:shortcutShortLabel="@string/shortcut_title1"
         >
         <intent android:data="x"/>
+        <intent android:action="actionx"/>
     </shortcut>
 </shortcuts>
diff --git a/services/tests/servicestests/src/android/net/apf/ApfTest.java b/services/tests/servicestests/src/android/net/apf/ApfTest.java
index 815133a..bd76118 100644
--- a/services/tests/servicestests/src/android/net/apf/ApfTest.java
+++ b/services/tests/servicestests/src/android/net/apf/ApfTest.java
@@ -580,7 +580,7 @@
 
         public TestApfFilter(IpManager.Callback ipManagerCallback, boolean multicastFilter,
                 IpConnectivityLog log) throws Exception {
-            super(new ApfCapabilities(2, 1000, ARPHRD_ETHER), NetworkInterface.getByName("lo"),
+            super(new ApfCapabilities(2, 1536, ARPHRD_ETHER), NetworkInterface.getByName("lo"),
                     ipManagerCallback, multicastFilter, log);
         }
 
@@ -618,6 +618,7 @@
     }
 
     private static final int ETH_HEADER_LEN = 14;
+    private static final int ETH_DEST_ADDR_OFFSET = 0;
     private static final int ETH_ETHERTYPE_OFFSET = 12;
     private static final byte[] ETH_BROADCAST_MAC_ADDRESS = new byte[]{
         (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff };
@@ -676,9 +677,18 @@
             4,    // Protocol size: 4
             0, 1  // Opcode: request (1)
     };
+    private static final byte[] ARP_IPV4_REPLY_HEADER = new byte[]{
+            0, 1, // Hardware type: Ethernet (1)
+            8, 0, // Protocol type: IP (0x0800)
+            6,    // Hardware size: 6
+            4,    // Protocol size: 4
+            0, 2  // Opcode: reply (2)
+    };
     private static final int ARP_TARGET_IP_ADDRESS_OFFSET = ETH_HEADER_LEN + 24;
 
     private static final byte[] MOCK_IPV4_ADDR = new byte[]{10, 0, 0, 1};
+    private static final byte[] ANOTHER_IPV4_ADDR = new byte[]{10, 0, 0, 2};
+    private static final byte[] IPV4_ANY_HOST_ADDR = new byte[]{0, 0, 0, 0};
 
     @LargeTest
     public void testApfFilterIPv4() throws Exception {
@@ -801,51 +811,81 @@
         apfFilter.shutdown();
     }
 
-    private void verifyArpFilter(MockIpManagerCallback ipManagerCallback, ApfFilter apfFilter,
-            LinkProperties linkProperties, int filterResult) {
-        ipManagerCallback.resetApfProgramWait();
-        apfFilter.setLinkProperties(linkProperties);
-        byte[] program = ipManagerCallback.getApfProgram();
-        ByteBuffer packet = ByteBuffer.wrap(new byte[100]);
-        packet.putShort(ETH_ETHERTYPE_OFFSET, (short)ETH_P_ARP);
-        assertPass(program, packet.array(), 0);
-        packet.position(ARP_HEADER_OFFSET);
-        packet.put(ARP_IPV4_REQUEST_HEADER);
-        assertVerdict(filterResult, program, packet.array(), 0);
-        packet.position(ARP_TARGET_IP_ADDRESS_OFFSET);
-        packet.put(MOCK_IPV4_ADDR);
-        assertPass(program, packet.array(), 0);
+    private byte[] getProgram(MockIpManagerCallback cb, ApfFilter filter, LinkProperties lp) {
+        cb.resetApfProgramWait();
+        filter.setLinkProperties(lp);
+        return cb.getApfProgram();
+    }
+
+    private void verifyArpFilter(byte[] program, int filterResult) {
+        // Verify ARP request packet
+        assertPass(program, arpRequestBroadcast(MOCK_IPV4_ADDR), 0);
+        assertVerdict(filterResult, program, arpRequestBroadcast(ANOTHER_IPV4_ADDR), 0);
+        assertDrop(program, arpRequestBroadcast(IPV4_ANY_HOST_ADDR), 0);
+
+        // Verify unicast ARP reply packet is always accepted.
+        assertPass(program, arpReplyUnicast(MOCK_IPV4_ADDR), 0);
+        assertPass(program, arpReplyUnicast(ANOTHER_IPV4_ADDR), 0);
+        assertPass(program, arpReplyUnicast(IPV4_ANY_HOST_ADDR), 0);
+
+        // Verify GARP reply packets are always filtered
+        assertDrop(program, garpReply(), 0);
     }
 
     @LargeTest
     public void testApfFilterArp() throws Exception {
         MockIpManagerCallback ipManagerCallback = new MockIpManagerCallback();
         ApfFilter apfFilter = new TestApfFilter(ipManagerCallback, ALLOW_MULTICAST, mLog);
-        byte[] program = ipManagerCallback.getApfProgram();
 
-        // Verify initially ARP filter is off
-        ByteBuffer packet = ByteBuffer.wrap(new byte[100]);
-        packet.putShort(ETH_ETHERTYPE_OFFSET, (short)ETH_P_ARP);
-        assertPass(program, packet.array(), 0);
-        packet.position(ARP_HEADER_OFFSET);
-        packet.put(ARP_IPV4_REQUEST_HEADER);
-        assertPass(program, packet.array(), 0);
-        packet.position(ARP_TARGET_IP_ADDRESS_OFFSET);
-        packet.put(MOCK_IPV4_ADDR);
-        assertPass(program, packet.array(), 0);
+        // Verify initially ARP request filter is off, and GARP filter is on.
+        verifyArpFilter(ipManagerCallback.getApfProgram(), PASS);
 
         // Inform ApfFilter of our address and verify ARP filtering is on
+        LinkAddress linkAddress = new LinkAddress(InetAddress.getByAddress(MOCK_IPV4_ADDR), 24);
         LinkProperties lp = new LinkProperties();
-        assertTrue(lp.addLinkAddress(
-                new LinkAddress(InetAddress.getByAddress(MOCK_IPV4_ADDR), 24)));
-        verifyArpFilter(ipManagerCallback, apfFilter, lp, DROP);
+        assertTrue(lp.addLinkAddress(linkAddress));
+        verifyArpFilter(getProgram(ipManagerCallback, apfFilter, lp), DROP);
 
         // Inform ApfFilter of loss of IP and verify ARP filtering is off
-        verifyArpFilter(ipManagerCallback, apfFilter, new LinkProperties(), PASS);
+        verifyArpFilter(getProgram(ipManagerCallback, apfFilter, new LinkProperties()), PASS);
 
         apfFilter.shutdown();
     }
 
+    private static byte[] arpRequestBroadcast(byte[] tip) {
+        ByteBuffer packet = ByteBuffer.wrap(new byte[100]);
+        packet.putShort(ETH_ETHERTYPE_OFFSET, (short)ETH_P_ARP);
+        packet.position(ETH_DEST_ADDR_OFFSET);
+        packet.put(ETH_BROADCAST_MAC_ADDRESS);
+        packet.position(ARP_HEADER_OFFSET);
+        packet.put(ARP_IPV4_REQUEST_HEADER);
+        packet.position(ARP_TARGET_IP_ADDRESS_OFFSET);
+        packet.put(tip);
+        return packet.array();
+    }
+
+    private static byte[] arpReplyUnicast(byte[] tip) {
+        ByteBuffer packet = ByteBuffer.wrap(new byte[100]);
+        packet.putShort(ETH_ETHERTYPE_OFFSET, (short)ETH_P_ARP);
+        packet.position(ARP_HEADER_OFFSET);
+        packet.put(ARP_IPV4_REPLY_HEADER);
+        packet.position(ARP_TARGET_IP_ADDRESS_OFFSET);
+        packet.put(tip);
+        return packet.array();
+    }
+
+    private static byte[] garpReply() {
+        ByteBuffer packet = ByteBuffer.wrap(new byte[100]);
+        packet.putShort(ETH_ETHERTYPE_OFFSET, (short)ETH_P_ARP);
+        packet.position(ETH_DEST_ADDR_OFFSET);
+        packet.put(ETH_BROADCAST_MAC_ADDRESS);
+        packet.position(ARP_HEADER_OFFSET);
+        packet.put(ARP_IPV4_REPLY_HEADER);
+        packet.position(ARP_TARGET_IP_ADDRESS_OFFSET);
+        packet.put(IPV4_ANY_HOST_ADDR);
+        return packet.array();
+    }
+
     // Verify that the last program pushed to the IpManager.Callback properly filters the
     // given packet for the given lifetime.
     private void verifyRaLifetime(MockIpManagerCallback ipManagerCallback, ByteBuffer packet,
diff --git a/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java b/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java
index ba77b03..f2a9315 100644
--- a/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/ConnectivityServiceTest.java
@@ -1040,6 +1040,8 @@
     enum CallbackState {
         NONE,
         AVAILABLE,
+        NETWORK_CAPABILITIES,
+        LINK_PROPERTIES,
         LOSING,
         LOST
     }
@@ -1072,18 +1074,21 @@
         }
         private final LinkedBlockingQueue<CallbackInfo> mCallbacks = new LinkedBlockingQueue<>();
 
-        private void setLastCallback(CallbackState state, Network network, Object o) {
+        protected void setLastCallback(CallbackState state, Network network, Object o) {
             mCallbacks.offer(new CallbackInfo(state, network, o));
         }
 
+        @Override
         public void onAvailable(Network network) {
             setLastCallback(CallbackState.AVAILABLE, network, null);
         }
 
+        @Override
         public void onLosing(Network network, int maxMsToLive) {
             setLastCallback(CallbackState.LOSING, network, maxMsToLive /* autoboxed int */);
         }
 
+        @Override
         public void onLost(Network network) {
             setLastCallback(CallbackState.LOST, network, null);
         }
@@ -1744,6 +1749,67 @@
         defaultNetworkCallback.expectCallback(CallbackState.LOST, mCellNetworkAgent);
     }
 
+    private class TestRequestUpdateCallback extends TestNetworkCallback {
+        @Override
+        public void onCapabilitiesChanged(Network network, NetworkCapabilities netCap) {
+            setLastCallback(CallbackState.NETWORK_CAPABILITIES, network, netCap);
+        }
+
+        @Override
+        public void onLinkPropertiesChanged(Network network, LinkProperties linkProp) {
+            setLastCallback(CallbackState.LINK_PROPERTIES, network, linkProp);
+        }
+    }
+
+    @LargeTest
+    public void testRequestCallbackUpdates() throws Exception {
+        // File a network request for mobile.
+        final TestNetworkCallback cellNetworkCallback = new TestRequestUpdateCallback();
+        final NetworkRequest cellRequest = new NetworkRequest.Builder()
+                .addTransportType(TRANSPORT_CELLULAR).build();
+        mCm.requestNetwork(cellRequest, cellNetworkCallback);
+
+        // Bring up the mobile network.
+        mCellNetworkAgent = new MockNetworkAgent(TRANSPORT_CELLULAR);
+        mCellNetworkAgent.connect(true);
+
+        // We should get onAvailable().
+        cellNetworkCallback.expectCallback(CallbackState.AVAILABLE, mCellNetworkAgent);
+        // We should get onCapabilitiesChanged(), when the mobile network successfully validates.
+        cellNetworkCallback.expectCallback(CallbackState.NETWORK_CAPABILITIES, mCellNetworkAgent);
+        cellNetworkCallback.assertNoCallback();
+
+        // Update LinkProperties.
+        final LinkProperties lp = new LinkProperties();
+        lp.setInterfaceName("foonet_data0");
+        mCellNetworkAgent.sendLinkProperties(lp);
+        // We should get onLinkPropertiesChanged().
+        cellNetworkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
+        cellNetworkCallback.assertNoCallback();
+
+        // Register a garden variety default network request.
+        final TestNetworkCallback dfltNetworkCallback = new TestRequestUpdateCallback();
+        mCm.registerDefaultNetworkCallback(dfltNetworkCallback);
+        // Only onAvailable() is called; no other information is delivered.
+        dfltNetworkCallback.expectCallback(CallbackState.AVAILABLE, mCellNetworkAgent);
+        dfltNetworkCallback.assertNoCallback();
+
+        // Request a NetworkCapabilities update; only the requesting callback is notified.
+        mCm.requestNetworkCapabilities(dfltNetworkCallback);
+        dfltNetworkCallback.expectCallback(CallbackState.NETWORK_CAPABILITIES, mCellNetworkAgent);
+        cellNetworkCallback.assertNoCallback();
+        dfltNetworkCallback.assertNoCallback();
+
+        // Request a LinkProperties update; only the requesting callback is notified.
+        mCm.requestLinkProperties(dfltNetworkCallback);
+        dfltNetworkCallback.expectCallback(CallbackState.LINK_PROPERTIES, mCellNetworkAgent);
+        cellNetworkCallback.assertNoCallback();
+        dfltNetworkCallback.assertNoCallback();
+
+        mCm.unregisterNetworkCallback(dfltNetworkCallback);
+        mCm.unregisterNetworkCallback(cellNetworkCallback);
+    }
+
     @SmallTest
     public void testRequestBenchmark() throws Exception {
         // Benchmarks connecting and switching performance in the presence of a large number of
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/KeyEventDispatcherTest.java b/services/tests/servicestests/src/com/android/server/accessibility/KeyEventDispatcherTest.java
index 6eb76b7..0ab91a1 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/KeyEventDispatcherTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/KeyEventDispatcherTest.java
@@ -47,6 +47,7 @@
 import android.view.WindowManagerPolicy;
 import com.android.server.accessibility.KeyEventDispatcher.KeyEventFilter;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -71,8 +72,11 @@
     private ArgumentCaptor<Integer> mFilter1SequenceCaptor = ArgumentCaptor.forClass(Integer.class);
     private ArgumentCaptor<Integer> mFilter2SequenceCaptor = ArgumentCaptor.forClass(Integer.class);
 
-    static {
-        Looper.prepare();
+    @BeforeClass
+    public static void oneTimeInitialization() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
     }
 
     @Before
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java b/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java
new file mode 100644
index 0000000..5920fef
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/MotionEventInjectorTest.java
@@ -0,0 +1,548 @@
+/*
+ * 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.server.accessibility;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+
+import android.accessibilityservice.IAccessibilityServiceClient;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.RemoteException;
+import android.support.test.runner.AndroidJUnit4;
+import android.util.Log;
+import android.util.Pair;
+import android.view.InputDevice;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.WindowManagerPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.view.accessibility.AccessibilityEvent;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatcher;
+
+/**
+ * Tests for MotionEventInjector
+ */
+@RunWith(AndroidJUnit4.class)
+public class MotionEventInjectorTest {
+    private static final String LOG_TAG = "MotionEventInjectorTest";
+    private static final int CLICK_X = 100;
+    private static final int CLICK_Y_START = 200;
+    private static final int CLICK_Y_END = 201;
+    private static final int CLICK_DURATION = 10;
+    private static final int SEQUENCE = 50;
+
+    private static final int SECOND_CLICK_X = 1000;
+    private static final int SECOND_CLICK_Y = 2000;
+    private static final int SECOND_SEQUENCE = 51;
+
+    private static final int MOTION_EVENT_SOURCE = InputDevice.SOURCE_TOUCHSCREEN;
+    private static final int OTHER_EVENT_SOURCE = InputDevice.SOURCE_MOUSE;
+
+    MotionEventInjector mMotionEventInjector;
+    IAccessibilityServiceClient mServiceInterface;
+    List<MotionEvent> mClickList = new ArrayList<>();
+    List<MotionEvent> mSecondClickList = new ArrayList<>();
+    ArgumentCaptor<MotionEvent> mCaptor1 = ArgumentCaptor.forClass(MotionEvent.class);
+    ArgumentCaptor<MotionEvent> mCaptor2 = ArgumentCaptor.forClass(MotionEvent.class);
+    MessageCapturingHandler mMessageCapturingHandler;
+    MotionEventMatcher mClickEvent0Matcher;
+    MotionEventMatcher mClickEvent1Matcher;
+    MotionEventMatcher mClickEvent2Matcher;
+    MotionEventMatcher mSecondClickEvent0Matcher;
+
+    @BeforeClass
+    public static void oneTimeInitialization() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+    }
+
+    @Before
+    public void setUp() {
+        mMessageCapturingHandler = new MessageCapturingHandler();
+        mMotionEventInjector = new MotionEventInjector(mMessageCapturingHandler);
+        mClickList.add(
+                MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, CLICK_X, CLICK_Y_START, 0));
+        mClickList.add(MotionEvent.obtain(
+                0, CLICK_DURATION, MotionEvent.ACTION_MOVE, CLICK_X, CLICK_Y_END, 0));
+        mClickList.add(MotionEvent.obtain(
+                0, CLICK_DURATION, MotionEvent.ACTION_UP, CLICK_X, CLICK_Y_END, 0));
+        for (int i = 0; i < mClickList.size(); i++) {
+            mClickList.get(i).setSource(MOTION_EVENT_SOURCE);
+        }
+
+        mClickEvent0Matcher = new MotionEventMatcher(mClickList.get(0));
+        mClickEvent1Matcher = new MotionEventMatcher(mClickList.get(1));
+        mClickEvent2Matcher = new MotionEventMatcher(mClickList.get(2));
+
+        mSecondClickList.add(MotionEvent.obtain(
+                0, 0, MotionEvent.ACTION_DOWN, SECOND_CLICK_X, SECOND_CLICK_Y, 0));
+        mSecondClickList.add(MotionEvent.obtain(
+                0, CLICK_DURATION, MotionEvent.ACTION_MOVE, SECOND_CLICK_X, CLICK_Y_END, 0));
+        mSecondClickList.add(MotionEvent.obtain(
+                0, CLICK_DURATION, MotionEvent.ACTION_UP, SECOND_CLICK_X, CLICK_Y_END, 0));
+        for (int i = 0; i < mSecondClickList.size(); i++) {
+            mSecondClickList.get(i).setSource(MOTION_EVENT_SOURCE);
+        }
+
+        mSecondClickEvent0Matcher = new MotionEventMatcher(mSecondClickList.get(0));
+
+        mServiceInterface = mock(IAccessibilityServiceClient.class);
+    }
+
+    @Test
+    public void testInjectEvents_shouldEmergeInOrderWithCorrectTiming() throws RemoteException {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        verifyNoMoreInteractions(next);
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+
+        verify(next).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(),
+                eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+        long gestureStart = mCaptor1.getValue().getDownTime();
+        mClickEvent0Matcher.offsetTimesBy(gestureStart);
+        mClickEvent1Matcher.offsetTimesBy(gestureStart);
+        mClickEvent2Matcher.offsetTimesBy(gestureStart);
+
+        verify(next).onMotionEvent(argThat(mClickEvent0Matcher), argThat(mClickEvent0Matcher),
+                eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+        verifyNoMoreInteractions(next);
+        reset(next);
+
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+        verify(next).onMotionEvent(argThat(mClickEvent1Matcher), argThat(mClickEvent1Matcher),
+                eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+        verifyNoMoreInteractions(next);
+        reset(next);
+
+        verifyZeroInteractions(mServiceInterface);
+
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+        verify(next).onMotionEvent(argThat(mClickEvent2Matcher), argThat(mClickEvent2Matcher),
+                eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+        verifyNoMoreInteractions(next);
+        reset(next);
+
+        verify(mServiceInterface).onPerformGestureResult(SEQUENCE, true);
+        verifyNoMoreInteractions(mServiceInterface);
+    }
+
+    @Test
+    public void testInjectEvents_eventWithManyPointers_shouldNotCrash() {
+        int manyPointersCount = 20;
+        MotionEvent.PointerCoords[] pointerCoords =
+                new MotionEvent.PointerCoords[manyPointersCount];
+        MotionEvent.PointerProperties[] pointerProperties =
+                new MotionEvent.PointerProperties[manyPointersCount];
+        for (int i = 0; i < manyPointersCount; i++) {
+            pointerProperties[i] = new MotionEvent.PointerProperties();
+            pointerProperties[i].id = i;
+            pointerProperties[i].toolType = MotionEvent.TOOL_TYPE_UNKNOWN;
+            pointerCoords[i] = new MotionEvent.PointerCoords();
+            pointerCoords[i].clear();
+            pointerCoords[i].pressure = 1.0f;
+            pointerCoords[i].size = 1.0f;
+            pointerCoords[i].x = i;
+            pointerCoords[i].y = i;
+        }
+        List<MotionEvent> events = new ArrayList<>();
+        events.add(MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, manyPointersCount,
+                pointerProperties, pointerCoords, 0, 0,
+                1.0f, 1.0f, 0, 0, InputDevice.SOURCE_TOUCHSCREEN, 0));
+        events.add(MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, manyPointersCount,
+                pointerProperties, pointerCoords, 0, 0,
+                1.0f, 1.0f, 0, 0, InputDevice.SOURCE_TOUCHSCREEN, 0));
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.injectEvents(events, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendAllMessages();
+        verify(next, times(2)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        assertEquals(MotionEvent.ACTION_DOWN, mCaptor1.getAllValues().get(0).getActionMasked());
+        assertEquals(MotionEvent.ACTION_UP, mCaptor1.getAllValues().get(1).getActionMasked());
+    }
+
+    @Test
+    public void testRegularEvent_afterGestureComplete_shouldPassToNext() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        mMessageCapturingHandler.sendAllMessages(); // Send all motion events
+        reset(next);
+        mMotionEventInjector.onMotionEvent(mSecondClickList.get(0), mClickList.get(0), 0);
+        verify(next).onMotionEvent(argThat(mSecondClickEvent0Matcher),
+                argThat(mClickEvent0Matcher), eq(0));
+    }
+
+    @Test
+    public void testInjectEvents_withRealGestureUnderway_shouldCancelRealAndPassInjected() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.onMotionEvent(mClickList.get(0), mClickList.get(0), 0);
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+
+        verify(next, times(2)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertEquals(MotionEvent.ACTION_CANCEL, mCaptor1.getAllValues().get(1).getActionMasked());
+        reset(next);
+
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+        verify(next).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(),
+                eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+        long gestureStart = mCaptor1.getValue().getDownTime();
+        mSecondClickEvent0Matcher.offsetTimesBy(gestureStart);
+
+        verify(next).onMotionEvent(argThat(mSecondClickEvent0Matcher),
+                argThat(mSecondClickEvent0Matcher), eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+    }
+
+    @Test
+    public void testInjectEvents_withRealMouseGestureUnderway_shouldContinueRealAndPassInjected() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        MotionEvent mouseEvent = MotionEvent.obtain(mClickList.get(0));
+        mouseEvent.setSource(InputDevice.SOURCE_MOUSE);
+        MotionEventMatcher mouseEventMatcher = new MotionEventMatcher(mouseEvent);
+        mMotionEventInjector.onMotionEvent(mouseEvent, mouseEvent, 0);
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+        verify(next, times(2)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        assertTrue(mouseEventMatcher.matches(mCaptor1.getAllValues().get(0)));
+        mSecondClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(1).getDownTime());
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(1)));
+    }
+
+    @Test
+    public void testInjectEvents_withRealGestureFinished_shouldJustPassInjected() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.onMotionEvent(mClickList.get(0), mClickList.get(0), 0);
+        mMotionEventInjector.onMotionEvent(mClickList.get(1), mClickList.get(1), 0);
+        mMotionEventInjector.onMotionEvent(mClickList.get(2), mClickList.get(2), 0);
+
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        verify(next, times(3)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertTrue(mClickEvent1Matcher.matches(mCaptor1.getAllValues().get(1)));
+        assertTrue(mClickEvent2Matcher.matches(mCaptor1.getAllValues().get(2)));
+        reset(next);
+
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+        verify(next).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(),
+                eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+        mSecondClickEvent0Matcher.offsetTimesBy(mCaptor1.getValue().getDownTime());
+        verify(next).onMotionEvent(argThat(mSecondClickEvent0Matcher),
+                argThat(mSecondClickEvent0Matcher), eq(WindowManagerPolicy.FLAG_PASS_TO_USER));
+    }
+
+    @Test
+    public void testOnMotionEvents_openInjectedGestureInProgress_shouldCancelAndNotifyAndPassReal()
+            throws RemoteException {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+        mMotionEventInjector.onMotionEvent(mSecondClickList.get(0), mSecondClickList.get(0), 0);
+
+        verify(next, times(3)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        mClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(0).getDownTime());
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertEquals(MotionEvent.ACTION_CANCEL, mCaptor1.getAllValues().get(1).getActionMasked());
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(2)));
+        verify(mServiceInterface).onPerformGestureResult(SEQUENCE, false);
+    }
+
+    @Test
+    public void testOnMotionEvents_closedInjectedGestureInProgress_shouldOnlyNotifyAndPassReal()
+            throws RemoteException {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mClickList.add(MotionEvent.obtain(2 * CLICK_DURATION, 2 * CLICK_DURATION,
+                MotionEvent.ACTION_DOWN, CLICK_X, CLICK_Y_START, 0));
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+
+        // Send 3 motion events, leaving the extra down in the queue
+        mMessageCapturingHandler.sendOneMessage();
+        mMessageCapturingHandler.sendOneMessage();
+        mMessageCapturingHandler.sendOneMessage();
+
+        mMotionEventInjector.onMotionEvent(mSecondClickList.get(0), mClickList.get(0), 0);
+
+        verify(next, times(4)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        long gestureStart = mCaptor1.getAllValues().get(0).getDownTime();
+        mClickEvent0Matcher.offsetTimesBy(gestureStart);
+        mClickEvent1Matcher.offsetTimesBy(gestureStart);
+        mClickEvent2Matcher.offsetTimesBy(gestureStart);
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertTrue(mClickEvent1Matcher.matches(mCaptor1.getAllValues().get(1)));
+        assertTrue(mClickEvent2Matcher.matches(mCaptor1.getAllValues().get(2)));
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(3)));
+
+        verify(mServiceInterface).onPerformGestureResult(SEQUENCE, false);
+        assertFalse(mMessageCapturingHandler.hasMessages());
+    }
+
+    @Test
+    public void testInjectEvents_openInjectedGestureInProgress_shouldCancelAndNotifyAndPassNew()
+            throws RemoteException {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SECOND_SEQUENCE);
+        mMessageCapturingHandler.sendLastMessage(); // Process the second event injection
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+
+        verify(mServiceInterface, times(1)).onPerformGestureResult(SEQUENCE, false);
+        verify(next, times(3)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        mClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(0).getDownTime());
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertEquals(MotionEvent.ACTION_CANCEL, mCaptor1.getAllValues().get(1).getActionMasked());
+        mSecondClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(2).getDownTime());
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(2)));
+    }
+
+    @Test
+    public void testInjectEvents_closedInjectedGestureInProgress_shouldOnlyNotifyAndPassNew()
+            throws RemoteException {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        MotionEvent newEvent = MotionEvent.obtain(2 * CLICK_DURATION, 2 * CLICK_DURATION,
+                MotionEvent.ACTION_DOWN, CLICK_X, CLICK_Y_START, 0);
+        newEvent.setSource(mClickList.get(0).getSource());
+        mClickList.add(newEvent);
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+
+        // Send 3 motion events, leaving newEvent in the queue
+        mMessageCapturingHandler.sendOneMessage();
+        mMessageCapturingHandler.sendOneMessage();
+        mMessageCapturingHandler.sendOneMessage();
+
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SECOND_SEQUENCE);
+        mMessageCapturingHandler.sendLastMessage(); // Process the event injection
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+
+        verify(mServiceInterface).onPerformGestureResult(SEQUENCE, false);
+        verify(next, times(4)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        long gestureStart = mCaptor1.getAllValues().get(0).getDownTime();
+        mClickEvent0Matcher.offsetTimesBy(gestureStart);
+        mClickEvent1Matcher.offsetTimesBy(gestureStart);
+        mClickEvent2Matcher.offsetTimesBy(gestureStart);
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertTrue(mClickEvent1Matcher.matches(mCaptor1.getAllValues().get(1)));
+        assertTrue(mClickEvent2Matcher.matches(mCaptor1.getAllValues().get(2)));
+        mSecondClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(3).getDownTime());
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(3)));
+    }
+
+    @Test
+    public void testClearEvents_realGestureInProgress_shouldForgetAboutGesture() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.onMotionEvent(mClickList.get(0), mClickList.get(0), 0);
+        mMotionEventInjector.clearEvents(MOTION_EVENT_SOURCE);
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+
+        verify(next, times(2)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        mSecondClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(1).getDownTime());
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(1)));
+    }
+
+    @Test
+    public void testClearEventsOnOtherSource_realGestureInProgress_shouldNotForgetAboutGesture() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        mMotionEventInjector.onMotionEvent(mClickList.get(0), mClickList.get(0), 0);
+        mMotionEventInjector.clearEvents(OTHER_EVENT_SOURCE);
+        mMotionEventInjector.injectEvents(mSecondClickList, mServiceInterface, SECOND_SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        mMessageCapturingHandler.sendOneMessage(); // Send a motion event
+
+        verify(next, times(3)).onMotionEvent(mCaptor1.capture(), mCaptor2.capture(), anyInt());
+        assertTrue(mClickEvent0Matcher.matches(mCaptor1.getAllValues().get(0)));
+        assertEquals(MotionEvent.ACTION_CANCEL, mCaptor1.getAllValues().get(1).getActionMasked());
+        mSecondClickEvent0Matcher.offsetTimesBy(mCaptor1.getAllValues().get(2).getDownTime());
+        assertTrue(mSecondClickEvent0Matcher.matches(mCaptor1.getAllValues().get(2)));
+    }
+
+    @Test
+    public void testOnDestroy_shouldCancelGestures() throws RemoteException {
+        mMotionEventInjector.onDestroy();
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        verify(mServiceInterface).onPerformGestureResult(SEQUENCE, false);
+    }
+
+    @Test
+    public void testInjectEvents_withNoNext_shouldCancel() throws RemoteException {
+        mMotionEventInjector.injectEvents(mClickList, mServiceInterface, SEQUENCE);
+        mMessageCapturingHandler.sendOneMessage(); // Process the event injection
+        verify(mServiceInterface).onPerformGestureResult(SEQUENCE, false);
+    }
+
+    @Test
+    public void testOnMotionEvent_withNoNext_shouldNotCrash() {
+        mMotionEventInjector.onMotionEvent(mClickList.get(0), mClickList.get(0), 0);
+    }
+
+    @Test
+    public void testOnKeyEvent_shouldPassToNext() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        KeyEvent event = new KeyEvent(0, 0);
+        mMotionEventInjector.onKeyEvent(event, 0);
+        verify(next).onKeyEvent(event, 0);
+    }
+
+    @Test
+    public void testOnKeyEvent_withNoNext_shouldNotCrash() {
+        KeyEvent event = new KeyEvent(0, 0);
+        mMotionEventInjector.onKeyEvent(event, 0);
+    }
+
+    @Test
+    public void testOnAccessibilityEvent_shouldPassToNext() {
+        EventStreamTransformation next = attachMockNext(mMotionEventInjector);
+        AccessibilityEvent event = AccessibilityEvent.obtain();
+        mMotionEventInjector.onAccessibilityEvent(event);
+        verify(next).onAccessibilityEvent(event);
+    }
+
+    @Test
+    public void testOnAccessibilityEvent_withNoNext_shouldNotCrash() {
+        AccessibilityEvent event = AccessibilityEvent.obtain();
+        mMotionEventInjector.onAccessibilityEvent(event);
+    }
+
+    private EventStreamTransformation attachMockNext(MotionEventInjector motionEventInjector) {
+        EventStreamTransformation next = mock(EventStreamTransformation.class);
+        motionEventInjector.setNext(next);
+        return next;
+    }
+
+    static class MotionEventMatcher extends ArgumentMatcher<MotionEvent> {
+        long mDownTime;
+        long mEventTime;
+        long mActionMasked;
+        int mX;
+        int mY;
+
+        MotionEventMatcher(long downTime, long eventTime, int actionMasked, int x, int y) {
+            mDownTime = downTime;
+            mEventTime = eventTime;
+            mActionMasked = actionMasked;
+            mX = x;
+            mY = y;
+        }
+
+        MotionEventMatcher(MotionEvent event) {
+            this(event.getDownTime(), event.getEventTime(), event.getActionMasked(),
+                    (int) event.getX(), (int) event.getY());
+        }
+
+        void offsetTimesBy(long timeOffset) {
+            mDownTime += timeOffset;
+            mEventTime += timeOffset;
+        }
+
+        @Override
+        public boolean matches(Object o) {
+            MotionEvent event = (MotionEvent) o;
+            if ((event.getDownTime() == mDownTime) && (event.getEventTime() == mEventTime)
+                    && (event.getActionMasked() == mActionMasked) && ((int) event.getX() == mX)
+                    && ((int) event.getY() == mY)) {
+                return true;
+            }
+            Log.e(LOG_TAG, "MotionEvent match failed");
+            Log.e(LOG_TAG, "event.getDownTime() = " + event.getDownTime()
+                    + ", expected " + mDownTime);
+            Log.e(LOG_TAG, "event.getEventTime() = " + event.getEventTime()
+                    + ", expected " + mEventTime);
+            Log.e(LOG_TAG, "event.getActionMasked() = " + event.getActionMasked()
+                    + ", expected " + mActionMasked);
+            Log.e(LOG_TAG, "event.getX() = " + event.getX() + ", expected " + mX);
+            Log.e(LOG_TAG, "event.getY() = " + event.getY() + ", expected " + mY);
+            return false;
+        }
+    }
+
+    private class MessageCapturingHandler extends Handler {
+        List<Pair<Message, Long>> timedMessages = new ArrayList<>();
+
+        @Override
+        public boolean sendMessageAtTime(Message message, long uptimeMillis) {
+            timedMessages.add(new Pair<>(Message.obtain(message), uptimeMillis));
+            return super.sendMessageAtTime(message, uptimeMillis);
+        }
+
+        void sendOneMessage() {
+            Message message = timedMessages.remove(0).first;
+            removeMessages(message.what, message.obj);
+            mMotionEventInjector.handleMessage(message);
+            removeStaleMessages();
+        }
+
+        void sendAllMessages() {
+            while (!timedMessages.isEmpty()) {
+                sendOneMessage();
+            }
+        }
+
+        void sendLastMessage() {
+            Message message = timedMessages.remove(timedMessages.size() - 1).first;
+            removeMessages(message.what, message.obj);
+            mMotionEventInjector.handleMessage(message);
+            removeStaleMessages();
+        }
+
+        boolean hasMessages() {
+            removeStaleMessages();
+            return !timedMessages.isEmpty();
+        }
+
+        private void removeStaleMessages() {
+            for (int i = 0; i < timedMessages.size(); i++) {
+                Message message = timedMessages.get(i).first;
+                if (!hasMessages(message.what, message.obj)) {
+                    timedMessages.remove(i--);
+                }
+            }
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
new file mode 100644
index 0000000..872ebe8
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
@@ -0,0 +1,179 @@
+/*
+ * 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.server.am;
+
+import android.content.Context;
+import android.content.IIntentReceiver;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.RemoteException;
+import android.os.UserManagerInternal;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import com.android.server.pm.UserManagerService;
+import com.android.server.wm.WindowManagerService;
+
+import org.mockito.Mockito;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.when;
+
+public class UserControllerTest extends AndroidTestCase {
+    private static String TAG = UserControllerTest.class.getSimpleName();
+    private UserController mUserController;
+    private TestInjector mInjector;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mInjector = new TestInjector(getContext());
+        mUserController = new UserController(mInjector);
+        setUpUser(10, 0);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        mInjector.handlerThread.quit();
+
+    }
+
+    public void testStartUser() throws RemoteException {
+        mUserController.startUser(10, true);
+
+        Mockito.verify(mInjector.getWindowManager()).startFreezingScreen(anyInt(), anyInt());
+        Mockito.verify(mInjector.getWindowManager(), never()).stopFreezingScreen();
+        List<String> expectedActions = Arrays.asList(Intent.ACTION_USER_STARTED,
+                Intent.ACTION_USER_SWITCHED, Intent.ACTION_USER_STARTING);
+        assertEquals(expectedActions, getActions(mInjector.sentIntents));
+    }
+
+    private void setUpUser(int userId, int flags) {
+        UserInfo userInfo = new UserInfo(userId, "User" + userId, flags);
+        when(mInjector.userManagerMock.getUserInfo(eq(userId))).thenReturn(userInfo);
+    }
+
+    private static List<String> getActions(List<Intent> intents) {
+        List<String> result = new ArrayList<>();
+        for (Intent intent : intents) {
+            result.add(intent.getAction());
+        }
+        return result;
+    }
+
+    private static class TestInjector extends UserController.Injector {
+        final Object lock = new Object();
+        Handler handler;
+        HandlerThread handlerThread;
+        UserManagerService userManagerMock;
+        UserManagerInternal userManagerInternalMock;
+        WindowManagerService windowManagerMock;
+        private Context mCtx;
+        List<Intent> sentIntents = new ArrayList<>();
+
+        TestInjector(Context ctx) {
+            super(null);
+            mCtx = ctx;
+            handlerThread = new HandlerThread(TAG);
+            handlerThread.start();
+            handler = new Handler(handlerThread.getLooper());
+            userManagerMock = mock(UserManagerService.class);
+            userManagerInternalMock = mock(UserManagerInternal.class);
+            windowManagerMock = mock(WindowManagerService.class);
+        }
+
+        @Override
+        protected Object getLock() {
+            return lock;
+        }
+
+        @Override
+        protected Handler getHandler() {
+            return handler;
+        }
+
+        @Override
+        protected UserManagerService getUserManager() {
+            return userManagerMock;
+        }
+
+        @Override
+        UserManagerInternal getUserManagerInternal() {
+            return userManagerInternalMock;
+        }
+
+        @Override
+        protected Context getContext() {
+            return mCtx;
+        }
+
+        @Override
+        int checkCallingPermission(String permission) {
+            Log.i(TAG, "checkCallingPermission " + permission);
+            return PERMISSION_GRANTED;
+        }
+
+        @Override
+        void stackSupervisorSetLockTaskModeLocked(TaskRecord task, int lockTaskModeState,
+                String reason, boolean andResume) {
+            Log.i(TAG, "stackSupervisorSetLockTaskModeLocked");
+        }
+
+        @Override
+        WindowManagerService getWindowManager() {
+            return windowManagerMock;
+        }
+
+        @Override
+        void updateUserConfigurationLocked() {
+            Log.i(TAG, "updateUserConfigurationLocked");
+        }
+
+        @Override
+        protected int broadcastIntentLocked(Intent intent, String resolvedType,
+                IIntentReceiver resultTo, int resultCode, String resultData, Bundle resultExtras,
+                String[] requiredPermissions, int appOp, Bundle bOptions, boolean ordered,
+                boolean sticky, int callingPid, int callingUid, int userId) {
+            Log.i(TAG, "broadcastIntentLocked " + intent);
+            sentIntents.add(intent);
+            return 0;
+        }
+
+        @Override
+        boolean stackSupervisorSwitchUserLocked(int userId, UserState uss) {
+            Log.i(TAG, "stackSupervisorSwitchUserLocked " + userId);
+            return true;
+        }
+
+        @Override
+        void startHomeActivityLocked(int userId, String reason) {
+            Log.i(TAG, "startHomeActivityLocked " + userId);
+        }
+   }
+}
\ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 3f6ab36..ff1c3b6 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -34,13 +34,12 @@
 import static org.mockito.Mockito.when;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.RequiresPermission;
 import android.annotation.UserIdInt;
 import android.app.Activity;
 import android.app.ActivityManagerInternal;
 import android.app.IUidObserver;
 import android.app.usage.UsageStatsManagerInternal;
+import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -92,6 +91,8 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -104,17 +105,19 @@
 import java.util.function.BiFunction;
 import java.util.function.BiPredicate;
 import java.util.function.Consumer;
+import java.util.function.Function;
 
 public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
     protected static final String TAG = "ShortcutManagerTest";
 
+    protected static final boolean DUMP_IN_TEARDOWN = false; // DO NOT SUBMIT WITH true
+
     /**
      * Whether to enable dump or not.  Should be only true when debugging to avoid bugs where
      * dump affecting the behavior.
      */
-    protected static final boolean ENABLE_DUMP = false; // DO NOT SUBMIT WITH true
-
-    protected static final boolean DUMP_IN_TEARDOWN = false; // DO NOT SUBMIT WITH true
+    protected static final boolean ENABLE_DUMP = false // DO NOT SUBMIT WITH true
+            || DUMP_IN_TEARDOWN || ShortcutService.DEBUG;
 
     protected static final String[] EMPTY_STRINGS = new String[0]; // Just for readability.
 
@@ -152,6 +155,11 @@
             // ignore.
             return null;
         }
+
+        @Override
+        public void unregisterReceiver(BroadcastReceiver receiver) {
+            // ignore.
+        }
     }
 
     /** Context used in the client side */
@@ -180,11 +188,6 @@
         }
 
         @Override
-        public void startActivityAsUser(@RequiresPermission Intent intent, @Nullable Bundle options,
-                UserHandle userId) {
-        }
-
-        @Override
         public int getUserId() {
             return UserHandle.USER_SYSTEM;
         }
@@ -210,6 +213,11 @@
         }
 
         @Override
+        public String injectGetLocaleTagsForUser(@UserIdInt int userId) {
+            return mInjectedLocale.toLanguageTag();
+        }
+
+        @Override
         boolean injectShouldPerformVerification() {
             return true; // Always verify during unit tests.
         }
@@ -290,11 +298,6 @@
         }
 
         @Override
-        PackageManagerInternal injectPackageManagerInternal() {
-            return mMockPackageManagerInternal;
-        }
-
-        @Override
         boolean hasShortcutHostPermission(@NonNull String callingPackage, int userId) {
             return mDefaultLauncherChecker.test(callingPackage, userId);
         }
@@ -382,9 +385,7 @@
 
         @Override
         void injectPostToHandler(Runnable r) {
-            final long token = mContext.injectClearCallingIdentity();
-            r.run();
-            mContext.injectRestoreCallingIdentity(token);
+            runOnHandler(r);
         }
 
         @Override
@@ -400,9 +401,9 @@
         }
 
         @Override
-        void wtf(String message, Exception e) {
+        void wtf(String message, Throwable th) {
             // During tests, WTF is fatal.
-            fail(message + "  exception: " + e);
+            fail(message + "  exception: " + th + "\n" + Log.getStackTraceString(th));
         }
     }
 
@@ -452,9 +453,7 @@
 
         @Override
         void postToPackageMonitorHandler(Runnable r) {
-            final long token = mContext.injectClearCallingIdentity();
-            r.run();
-            mContext.injectRestoreCallingIdentity(token);
+            runOnHandler(r);
         }
 
         @Override
@@ -473,13 +472,6 @@
         void injectRestoreCallingIdentity(long token) {
             mInjectedCallingUid = (int) token;
         }
-
-        @Override
-        protected void startShortcutIntentAsPublisher(@NonNull Intent intent,
-                @NonNull String publisherPackage, Bundle startActivityOptions, int userId) {
-            // Just forward to startActivityAsUser() during unit tests.
-            mContext.startActivityAsUser(intent, startActivityOptions, UserHandle.of(userId));
-        }
     }
 
     protected class LauncherAppsTestable extends LauncherApps {
@@ -497,6 +489,9 @@
     public static class ShortcutActivity3 extends Activity {
     }
 
+    protected Looper mLooper;
+    protected Handler mHandler;
+
     protected ServiceContext mServiceContext;
     protected ClientContext mClientContext;
 
@@ -615,6 +610,10 @@
     protected final HashMap<String, LinkedHashMap<ComponentName, Integer>> mActivityMetadataResId
             = new HashMap<>();
 
+    protected final Map<Integer, UserInfo> mUserInfos = new HashMap<>();
+    protected final Map<Integer, Boolean> mRunningUsers = new HashMap<>();
+    protected final Map<Integer, Boolean> mUnlockedUsers = new HashMap<>();
+
     static {
         QUERY_ALL.setQueryFlags(
                 ShortcutQuery.FLAG_GET_ALL_KINDS);
@@ -624,6 +623,9 @@
     protected void setUp() throws Exception {
         super.setUp();
 
+        mLooper = Looper.getMainLooper();
+        mHandler = new Handler(mLooper);
+
         mServiceContext = spy(new ServiceContext());
         mClientContext = new ClientContext();
 
@@ -667,56 +669,59 @@
         deleteAllSavedFiles();
 
         // Set up users.
-        doAnswer(inv -> {
-                assertSystem();
-                return USER_INFO_0;
-        }).when(mMockUserManager).getUserInfo(eq(USER_0));
+        when(mMockUserManager.getUserInfo(anyInt())).thenAnswer(new AnswerWithSystemCheck<>(
+                inv -> mUserInfos.get((Integer) inv.getArguments()[0])));
 
-        doAnswer(inv -> {
-                assertSystem();
-                return USER_INFO_10;
-        }).when(mMockUserManager).getUserInfo(eq(USER_10));
+        mUserInfos.put(USER_0, USER_INFO_0);
+        mUserInfos.put(USER_10, USER_INFO_10);
+        mUserInfos.put(USER_11, USER_INFO_11);
+        mUserInfos.put(USER_P0, USER_INFO_P0);
 
-        doAnswer(inv -> {
-                assertSystem();
-                return USER_INFO_11;
-        }).when(mMockUserManager).getUserInfo(eq(USER_11));
+        // Set up isUserRunning and isUserUnlocked.
+        when(mMockUserManager.isUserRunning(anyInt())).thenAnswer(new AnswerWithSystemCheck<>(
+                        inv -> mRunningUsers.get((Integer) inv.getArguments()[0])));
 
-        doAnswer(inv -> {
-                assertSystem();
-                return USER_INFO_P0;
-        }).when(mMockUserManager).getUserInfo(eq(USER_P0));
+        when(mMockUserManager.isUserUnlocked(anyInt())).thenAnswer(new AnswerWithSystemCheck<>(
+                        inv -> {
+                            final int userId = (Integer) inv.getArguments()[0];
+                            return mRunningUsers.get(userId) && mUnlockedUsers.get(userId);
+                        }));
 
-        // User 0 is always running.
-        when(mMockUserManager.isUserRunning(eq(USER_0))).thenAnswer(new AnswerIsUserRunning(true));
+        // User 0 is always running
+        mRunningUsers.put(USER_0, true);
+        mRunningUsers.put(USER_10, false);
+        mRunningUsers.put(USER_11, false);
+        mRunningUsers.put(USER_P0, false);
 
+        // Unlock all users by default.
+        mUnlockedUsers.put(USER_0, true);
+        mUnlockedUsers.put(USER_10, true);
+        mUnlockedUsers.put(USER_11, true);
+        mUnlockedUsers.put(USER_P0, true);
+
+        // Set up resources
         setUpAppResources();
 
         // Start the service.
         initService();
         setCaller(CALLING_PACKAGE_1);
-
-        // In order to complicate the situation, we set mLocaleChangeSequenceNumber to 1 by
-        // calling this.  Running test with mLocaleChangeSequenceNumber == 0 might make us miss
-        // some edge cases.
-        mInternal.onSystemLocaleChangedNoLock();
     }
 
     /**
      * Returns a boolean but also checks if the current UID is SYSTEM_UID.
      */
-    protected class AnswerIsUserRunning implements Answer<Boolean> {
-        protected final boolean mAnswer;
+    protected class AnswerWithSystemCheck<T> implements Answer<T> {
+        private final Function<InvocationOnMock, T> mChecker;
 
-        protected AnswerIsUserRunning(boolean answer) {
-            mAnswer = answer;
+        public AnswerWithSystemCheck(Function<InvocationOnMock, T> checker) {
+            mChecker = checker;
         }
 
         @Override
-        public Boolean answer(InvocationOnMock invocation) throws Throwable {
-            assertEquals("isUserRunning() must be called on SYSTEM UID.",
+        public T answer(InvocationOnMock invocation) throws Throwable {
+            assertEquals("Must be called on SYSTEM UID.",
                     Process.SYSTEM_UID, mInjectedCallingUid);
-            return mAnswer;
+            return mChecker.apply(invocation);
         }
     }
 
@@ -805,7 +810,7 @@
         LocalServices.removeServiceForTest(ShortcutServiceInternal.class);
 
         // Instantiate targets.
-        mService = new ShortcutServiceTestable(mServiceContext, Looper.getMainLooper());
+        mService = new ShortcutServiceTestable(mServiceContext, mLooper);
         mManager = new ShortcutManagerTestable(mClientContext, mService);
 
         mInternal = LocalServices.getService(ShortcutServiceInternal.class);
@@ -817,12 +822,6 @@
         // Send boot sequence events.
         mService.onBootPhase(SystemService.PHASE_LOCK_SETTINGS_READY);
 
-        // Make sure a call to onSystemLocaleChangedNoLock() before PHASE_BOOT_COMPLETED will be
-        // ignored.
-        final long origSequenceNumber = mService.getLocaleChangeSequenceNumber();
-        mInternal.onSystemLocaleChangedNoLock();
-        assertEquals(origSequenceNumber, mService.getLocaleChangeSequenceNumber());
-
         mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
     }
 
@@ -844,6 +843,15 @@
         mLauncherAppsMap.clear();
     }
 
+    protected void runOnHandler(Runnable r) {
+        final long token = mServiceContext.injectClearCallingIdentity();
+        try {
+            r.run();
+        } finally {
+            mServiceContext.injectRestoreCallingIdentity(token);
+        }
+    }
+
     protected void addPackage(String packageName, int uid, int version) {
         addPackage(packageName, uid, version, packageName);
     }
@@ -1082,17 +1090,32 @@
     protected void dumpsysOnLogcat(String message, boolean force) {
         if (force || !ENABLE_DUMP) return;
 
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        final PrintWriter pw = new PrintWriter(out);
-        mService.dumpInner(pw, null);
-        pw.close();
-
         Log.v(TAG, "Dumping ShortcutService: " + message);
-        for (String line : out.toString().split("\n")) {
+        for (String line : dumpsys(null).split("\n")) {
             Log.v(TAG, line);
         }
     }
 
+    protected String dumpCheckin() {
+        return dumpsys(new String[]{"--checkin"});
+    }
+
+    private String dumpsys(String[] args) {
+        final ArrayList<String> origPermissions = new ArrayList<>(mCallerPermissions);
+        mCallerPermissions.add(android.Manifest.permission.DUMP);
+        try {
+            final ByteArrayOutputStream out = new ByteArrayOutputStream();
+            final PrintWriter pw = new PrintWriter(out);
+            mService.dump(/* fd */ null, pw, args);
+            pw.close();
+
+            return out.toString();
+        } finally {
+            mCallerPermissions.clear();
+            mCallerPermissions.addAll(origPermissions);
+        }
+    }
+
     /**
      * For debugging, dump arbitrary file on logcat.
      */
@@ -1262,6 +1285,35 @@
         return s;
     }
 
+    protected ShortcutInfo makeShortcutWithIntents(String id, Intent... intents) {
+        return makeShortcut(
+                id, "Title-" + id, /* activity =*/ null, /* icon =*/ null,
+                intents, /* rank =*/ 0);
+    }
+
+    /**
+     * Make a shortcut with details.
+     */
+    protected ShortcutInfo makeShortcut(String id, String title, ComponentName activity,
+            Icon icon, Intent[] intents, int rank) {
+        final ShortcutInfo.Builder  b = new ShortcutInfo.Builder(mClientContext, id)
+                .setActivity(new ComponentName(mClientContext.getPackageName(), "dummy"))
+                .setShortLabel(title)
+                .setRank(rank)
+                .setIntents(intents);
+        if (icon != null) {
+            b.setIcon(icon);
+        }
+        if (activity != null) {
+            b.setActivity(activity);
+        }
+        final ShortcutInfo s = b.build();
+
+        s.setTimestamp(mInjectedCurrentTimeMillis); // HACK
+
+        return s;
+    }
+
     /**
      * Make a shortcut with details.
      */
@@ -1347,33 +1399,53 @@
         assertTrue(getPackageShortcut(packageName, shortcutId, userId) == null);
     }
 
+    protected Intent[] launchShortcutAndGetIntentsInner(Runnable shortcutStarter,
+            @NonNull String packageName, @NonNull String shortcutId, int userId) {
+        reset(mMockActivityManagerInternal);
+        shortcutStarter.run();
+
+        final ArgumentCaptor<Intent[]> intentsCaptor = ArgumentCaptor.forClass(Intent[].class);
+        verify(mMockActivityManagerInternal).startActivitiesAsPackage(
+                eq(packageName),
+                eq(userId),
+                intentsCaptor.capture(),
+                any(Bundle.class));
+        return intentsCaptor.getValue();
+    }
+
+    protected Intent[] launchShortcutAndGetIntents(
+            @NonNull String packageName, @NonNull String shortcutId, int userId) {
+        return launchShortcutAndGetIntentsInner(
+                () -> {
+                    mLauncherApps.startShortcut(packageName, shortcutId, null, null,
+                            UserHandle.of(userId));
+                }, packageName, shortcutId, userId
+        );
+    }
+
     protected Intent launchShortcutAndGetIntent(
             @NonNull String packageName, @NonNull String shortcutId, int userId) {
-        reset(mServiceContext);
-        mLauncherApps.startShortcut(packageName, shortcutId, null, null,
-                UserHandle.of(userId));
+        final Intent[] intents = launchShortcutAndGetIntents(packageName, shortcutId, userId);
+        assertEquals(1, intents.length);
+        return intents[0];
+    }
 
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
-        verify(mServiceContext).startActivityAsUser(
-                intentCaptor.capture(),
-                any(Bundle.class),
-                eq(UserHandle.of(userId)));
-        return intentCaptor.getValue();
+    protected Intent[] launchShortcutAndGetIntents_withShortcutInfo(
+            @NonNull String packageName, @NonNull String shortcutId, int userId) {
+        return launchShortcutAndGetIntentsInner(
+                () -> {
+                    mLauncherApps.startShortcut(
+                            getShortcutInfoAsLauncher(packageName, shortcutId, userId), null, null);
+                }, packageName, shortcutId, userId
+        );
     }
 
     protected Intent launchShortcutAndGetIntent_withShortcutInfo(
             @NonNull String packageName, @NonNull String shortcutId, int userId) {
-        reset(mServiceContext);
-
-        mLauncherApps.startShortcut(
-                getShortcutInfoAsLauncher(packageName, shortcutId, userId), null, null);
-
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
-        verify(mServiceContext).startActivityAsUser(
-                intentCaptor.capture(),
-                any(Bundle.class),
-                eq(UserHandle.of(userId)));
-        return intentCaptor.getValue();
+        final Intent[] intents = launchShortcutAndGetIntents_withShortcutInfo(
+                packageName, shortcutId, userId);
+        assertEquals(1, intents.length);
+        return intents[0];
     }
 
     protected void assertShortcutLaunchable(@NonNull String packageName, @NonNull String shortcutId,
@@ -1382,21 +1454,34 @@
         assertNotNull(launchShortcutAndGetIntent_withShortcutInfo(packageName, shortcutId, userId));
     }
 
-    protected void assertShortcutNotLaunchable(@NonNull String packageName,
+    protected void assertShortcutNotLaunched(@NonNull String packageName,
             @NonNull String shortcutId, int userId) {
-        reset(mServiceContext);
+        reset(mMockActivityManagerInternal);
         try {
             mLauncherApps.startShortcut(packageName, shortcutId, null, null,
                     UserHandle.of(userId));
-        } catch (SecurityException expected) {
-            // security exception is okay.
-            return;
+            fail("ActivityNotFoundException was not thrown");
+        } catch (ActivityNotFoundException expected) {
         }
         // This shouldn't have been called.
-        verify(mServiceContext, times(0)).startActivityAsUser(
-                any(Intent.class),
-                any(Bundle.class),
-                any(UserHandle.class));
+        verify(mMockActivityManagerInternal, times(0)).startActivitiesAsPackage(
+                anyString(),
+                anyInt(),
+                any(Intent[].class),
+                any(Bundle.class));
+    }
+
+    protected void assertStartShortcutThrowsException(@NonNull String packageName,
+            @NonNull String shortcutId, int userId, Class<?> expectedException) {
+        Exception thrown = null;
+        try {
+            mLauncherApps.startShortcut(packageName, shortcutId, null, null,
+                    UserHandle.of(userId));
+        } catch (Exception e) {
+            thrown = e;
+        }
+        assertNotNull("Exception was not thrown", thrown);
+        assertEquals("Exception type different", expectedException, thrown.getClass());
     }
 
     protected void assertBitmapDirectories(int userId, String... expectedDirectories) {
@@ -1442,12 +1527,30 @@
         return new File(si.getBitmapPath()).getName();
     }
 
+    /**
+     * @return all shortcuts stored internally for the caller.  This reflects the *internal* view
+     * of shortcuts, which may be different from what {@link #getCallerVisibleShortcuts} would
+     * return, because getCallerVisibleShortcuts() will get shortcuts from the proper "front door"
+     * which performs some extra checks, like {@link ShortcutPackage#onRestored}.
+     */
     protected List<ShortcutInfo> getCallerShortcuts() {
         final ShortcutPackage p = mService.getPackageShortcutForTest(
                 getCallingPackage(), getCallingUserId());
         return p == null ? null : p.getAllShortcutsForTest();
     }
 
+    /**
+     * @return all shortcuts owned by caller that are actually visible via ShortcutManager.
+     * See also {@link #getCallerShortcuts}.
+     */
+    protected List<ShortcutInfo> getCallerVisibleShortcuts() {
+        final ArrayList<ShortcutInfo> ret = new ArrayList<>();
+        ret.addAll(mManager.getDynamicShortcuts());
+        ret.addAll(mManager.getPinnedShortcuts());
+        ret.addAll(mManager.getManifestShortcuts());
+        return ret;
+    }
+
     protected ShortcutInfo getCallerShortcut(String shortcutId) {
         return getPackageShortcut(getCallingPackage(), shortcutId, getCallingUserId());
     }
@@ -1658,6 +1761,8 @@
 
             mLauncherApps.pinShortcuts(CALLING_PACKAGE_1, list("s2", "s5"), HANDLE_USER_P0);
         });
+
+        // Note LAUNCHER_3 has allowBackup=false.
         runWithCaller(LAUNCHER_3, USER_0, () -> {
             mLauncherApps.pinShortcuts(CALLING_PACKAGE_1, list("s3"), HANDLE_USER_0);
             mLauncherApps.pinShortcuts(CALLING_PACKAGE_2, list("s3", "s4"), HANDLE_USER_0);
@@ -1747,4 +1852,18 @@
         }
         return actualShortcuts;
     }
+
+    public String readTestAsset(String assetPath) throws IOException {
+        final StringBuilder sb = new StringBuilder();
+        try (BufferedReader br = new BufferedReader(
+                new InputStreamReader(
+                        getTestContext().getResources().getAssets().open(assetPath)))) {
+            String line;
+            while ((line = br.readLine()) != null) {
+                sb.append(line);
+                sb.append(System.lineSeparator());
+            }
+        }
+        return sb.toString();
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
index c7be3d9..5206507 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -55,14 +55,19 @@
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import android.Manifest.permission;
+import android.app.ActivityManager;
+import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -74,6 +79,7 @@
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.UserHandle;
@@ -1670,18 +1676,32 @@
 
         // Get pinned shortcuts from launcher
         runWithCaller(LAUNCHER_1, USER_0, () -> {
-            // CALLING_PACKAGE_1 deleted s2, but it's pinned, so it still exists.
-            assertShortcutIds(assertAllPinned(assertAllNotKeyFieldsOnly(assertAllDisabled(
-                    mLauncherApps.getShortcuts(buildQuery(/* time =*/ 0, CALLING_PACKAGE_1,
-                    /* activity =*/ null, ShortcutQuery.FLAG_GET_PINNED), getCallingUser())))),
-                    "s2");
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
+            // CALLING_PACKAGE_1 deleted s2, but it's pinned, so it still exists, and disabled.
+            assertWith(mLauncherApps.getShortcuts(buildQuery(/* time =*/ 0, CALLING_PACKAGE_1,
+                    /* activity =*/ null, ShortcutQuery.FLAG_GET_PINNED), getCallingUser()))
+                    .haveIds("s2")
+                    .areAllPinned()
+                    .areAllNotWithKeyFieldsOnly()
+                    .areAllDisabled();
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_0,
+                    ActivityNotFoundException.class);
 
-            assertShortcutIds(assertAllPinned(assertAllNotKeyFieldsOnly(
-                    mLauncherApps.getShortcuts(buildQuery(/* time =*/ 0, CALLING_PACKAGE_2,
-                    /* activity =*/ null, ShortcutQuery.FLAG_GET_PINNED), getCallingUser()))),
-                    "s3", "s4");
-            assertShortcutNotLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
+            // Here, s4 is still enabled and launchable, but s3 is disabled.
+            assertWith(mLauncherApps.getShortcuts(buildQuery(/* time =*/ 0, CALLING_PACKAGE_2,
+                    /* activity =*/ null, ShortcutQuery.FLAG_GET_PINNED), getCallingUser()))
+                    .haveIds("s3", "s4")
+                    .areAllPinned()
+                    .areAllNotWithKeyFieldsOnly()
+
+                    .selectByIds("s3")
+                    .areAllDisabled()
+
+                    .revertToOriginalList()
+                    .selectByIds("s4")
+                    .areAllEnabled();
+
+            assertStartShortcutThrowsException(CALLING_PACKAGE_2, "s3", USER_0,
+                    ActivityNotFoundException.class);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s4", USER_0);
 
             assertShortcutIds(assertAllPinned(assertAllNotKeyFieldsOnly(assertAllEnabled(
@@ -2112,12 +2132,18 @@
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_1, USER_P0, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2154,12 +2180,18 @@
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_2, USER_P0, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2196,12 +2228,18 @@
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_2, USER_10, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2261,19 +2299,27 @@
                     "s1", "s2", "s3");
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_0,
+                    ActivityNotFoundException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_0,
+                    ActivityNotFoundException.class);
 
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_1, USER_P0, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2304,18 +2350,25 @@
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_0,
+                    ActivityNotFoundException.class);
 
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_2, USER_P0, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2345,19 +2398,27 @@
                     "s1", "s3");
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_0,
+                    ActivityNotFoundException.class);
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
 
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_2, "s2", USER_0,
+                    ActivityNotFoundException.class);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_2, USER_10, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2373,20 +2434,29 @@
                     /* activity =*/ null, PIN_AND_DYNAMIC), HANDLE_USER_10)),
                     "s1", "s2", "s3");
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_0,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_0,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_0,
+                    SecurityException.class);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_2, "s1", USER_0,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_2, "s2", USER_0,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_2, "s3", USER_0,
+                    SecurityException.class);
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    ActivityNotFoundException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    ActivityNotFoundException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    ActivityNotFoundException.class);
         });
 
         // Save & load and make sure we still have the same information.
@@ -2422,19 +2492,27 @@
                     "s1", "s2", "s3");
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_0,
+                    ActivityNotFoundException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_0,
+                    ActivityNotFoundException.class);
 
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_1, USER_P0, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2465,18 +2543,25 @@
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_0,
+                    ActivityNotFoundException.class);
 
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
         runWithCaller(LAUNCHER_2, USER_P0, () -> {
             assertShortcutIds(assertAllPinned(
@@ -2506,80 +2591,140 @@
                     "s1", "s3");
 
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_0,
+                    ActivityNotFoundException.class);
             assertShortcutLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
 
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s1", USER_0);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_2, "s2", USER_0);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_2, "s2", USER_0,
+                    ActivityNotFoundException.class);
             assertShortcutLaunchable(CALLING_PACKAGE_2, "s3", USER_0);
 
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s1", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s2", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s3", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s4", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s5", USER_10);
-            assertShortcutNotLaunchable(CALLING_PACKAGE_1, "s6", USER_10);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s2", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s3", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s4", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s5", USER_10,
+                    SecurityException.class);
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s6", USER_10,
+                    SecurityException.class);
         });
     }
 
     public void testStartShortcut() {
         // Create some shortcuts.
-        setCaller(CALLING_PACKAGE_1);
-        final ShortcutInfo s1_1 = makeShortcut(
-                "s1",
-                "Title 1",
-                makeComponent(ShortcutActivity.class),
-                /* icon =*/ null,
-                makeIntent(Intent.ACTION_ASSIST, ShortcutActivity2.class,
-                        "key1", "val1", "nest", makeBundle("key", 123)),
-                /* weight */ 10);
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            final ShortcutInfo s1_1 = makeShortcut(
+                    "s1",
+                    "Title 1",
+                    makeComponent(ShortcutActivity.class),
+            /* icon =*/ null,
+                    makeIntent(Intent.ACTION_ASSIST, ShortcutActivity2.class,
+                            "key1", "val1", "nest", makeBundle("key", 123)),
+            /* rank */ 10);
 
-        final ShortcutInfo s1_2 = makeShortcut(
-                "s2",
-                "Title 2",
-                /* activity */ null,
-                /* icon =*/ null,
-                makeIntent(Intent.ACTION_ASSIST, ShortcutActivity3.class),
-                /* weight */ 12);
+            final ShortcutInfo s1_2 = makeShortcut(
+                    "s2",
+                    "Title 2",
+            /* activity */ null,
+            /* icon =*/ null,
+                    makeIntent(Intent.ACTION_ASSIST, ShortcutActivity3.class),
+            /* rank */ 12);
 
-        assertTrue(mManager.setDynamicShortcuts(list(s1_1, s1_2)));
+            final ShortcutInfo s1_3 = makeShortcut("s3");
 
-        setCaller(CALLING_PACKAGE_2);
-        final ShortcutInfo s2_1 = makeShortcut(
-                "s1",
-                "ABC",
-                makeComponent(ShortcutActivity.class),
-                /* icon =*/ null,
-                makeIntent(Intent.ACTION_ANSWER, ShortcutActivity.class,
-                        "key1", "val1", "nest", makeBundle("key", 123)),
-                /* weight */ 10);
-        assertTrue(mManager.setDynamicShortcuts(list(s2_1)));
+            assertTrue(mManager.setDynamicShortcuts(list(s1_1, s1_2, s1_3)));
+        });
 
-        // Pin all.
-        setCaller(LAUNCHER_1);
-        mLauncherApps.pinShortcuts(CALLING_PACKAGE_1,
-                list("s1", "s2"), getCallingUser());
+        runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+            final ShortcutInfo s2_1 = makeShortcut(
+                    "s1",
+                    "ABC",
+                    makeComponent(ShortcutActivity.class),
+                    /* icon =*/ null,
+                    makeIntent(Intent.ACTION_ANSWER, ShortcutActivity.class,
+                            "key1", "val1", "nest", makeBundle("key", 123)),
+                    /* weight */ 10);
+            assertTrue(mManager.setDynamicShortcuts(list(s2_1)));
+        });
 
-        mLauncherApps.pinShortcuts(CALLING_PACKAGE_2,
-                list("s1"), getCallingUser());
+        // Pin some.
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.pinShortcuts(CALLING_PACKAGE_1,
+                    list("s1", "s2"), getCallingUser());
+
+            mLauncherApps.pinShortcuts(CALLING_PACKAGE_2,
+                    list("s1"), getCallingUser());
+        });
 
         // Just to make it complicated, delete some.
-        setCaller(CALLING_PACKAGE_1);
-        mManager.removeDynamicShortcuts(list("s2"));
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            mManager.removeDynamicShortcuts(list("s2"));
+        });
 
-        // intent and check.
-        setCaller(LAUNCHER_1);
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            assertEquals(
+                    ShortcutActivity2.class.getName(),
+                    launchShortcutAndGetIntent(CALLING_PACKAGE_1, "s1", USER_0)
+                            .getComponent().getClassName());
+            assertEquals(
+                    ShortcutActivity3.class.getName(),
+                    launchShortcutAndGetIntent(CALLING_PACKAGE_1, "s2", USER_0)
+                            .getComponent().getClassName());
+            assertEquals(
+                    ShortcutActivity.class.getName(),
+                    launchShortcutAndGetIntent(CALLING_PACKAGE_2, "s1", USER_0)
+                            .getComponent().getClassName());
 
-        Intent intent;
-        intent = launchShortcutAndGetIntent(CALLING_PACKAGE_1, "s1", USER_0);
-        assertEquals(ShortcutActivity2.class.getName(), intent.getComponent().getClassName());
+            assertShortcutLaunchable(CALLING_PACKAGE_1, "s3", USER_0);
 
+            assertShortcutNotLaunched("no-such-package", "s2", USER_0);
+            assertShortcutNotLaunched(CALLING_PACKAGE_1, "xxxx", USER_0);
+        });
 
-        intent = launchShortcutAndGetIntent(CALLING_PACKAGE_1, "s2", USER_0);
-        assertEquals(ShortcutActivity3.class.getName(), intent.getComponent().getClassName());
+        // LAUNCHER_1 is no longer the default launcher
+        setDefaultLauncherChecker((pkg, userId) -> false);
 
-        intent = launchShortcutAndGetIntent(CALLING_PACKAGE_2, "s1", USER_0);
-        assertEquals(ShortcutActivity.class.getName(), intent.getComponent().getClassName());
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            // Not the default launcher, but pinned shortcuts are still lauchable.
+            assertEquals(
+                    ShortcutActivity2.class.getName(),
+                    launchShortcutAndGetIntent(CALLING_PACKAGE_1, "s1", USER_0)
+                            .getComponent().getClassName());
+            assertEquals(
+                    ShortcutActivity3.class.getName(),
+                    launchShortcutAndGetIntent(CALLING_PACKAGE_1, "s2", USER_0)
+                            .getComponent().getClassName());
+            assertEquals(
+                    ShortcutActivity.class.getName(),
+                    launchShortcutAndGetIntent(CALLING_PACKAGE_2, "s1", USER_0)
+                            .getComponent().getClassName());
+
+            // Not pinned, so not lauchable.
+        });
+
+        // Test inner errors.
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            // Not launchable.
+            doReturn(ActivityManager.START_CLASS_NOT_FOUND)
+                    .when(mMockActivityManagerInternal).startActivitiesAsPackage(
+                            anyString(), anyInt(), any(Intent[].class), any(Bundle.class));
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_0,
+                    ActivityNotFoundException.class);
+
+            // Still not launchable.
+            doReturn(ActivityManager.START_CLASS_NOT_FOUND)
+                    .when(mMockActivityManagerInternal)
+                    .startActivitiesAsPackage(
+                            anyString(), anyInt(), any(Intent[].class), any(Bundle.class));
+            assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_0,
+                    ActivityNotFoundException.class);
+        });
+
 
         // TODO Check extra, etc
     }
@@ -2843,8 +2988,8 @@
         assertCallbackNotReceived(c11_1);
 
         // Work profile, now running.
-        doAnswer(new AnswerIsUserRunning(false)).when(mMockUserManager).isUserRunning(anyInt());
-        doAnswer(new AnswerIsUserRunning(true)).when(mMockUserManager).isUserRunning(eq(USER_P0));
+        mRunningUsers.clear();
+        mRunningUsers.put(USER_P0, true);
 
         resetAll(all);
         runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
@@ -2862,9 +3007,8 @@
         assertCallbackReceived(cP0_1, HANDLE_USER_P0, CALLING_PACKAGE_1, "s1", "s2", "s3", "s4");
 
         // Normal secondary user.
-
-        doAnswer(new AnswerIsUserRunning(false)).when(mMockUserManager).isUserRunning(anyInt());
-        doAnswer(new AnswerIsUserRunning(true)).when(mMockUserManager).isUserRunning(eq(USER_10));
+        mRunningUsers.clear();
+        mRunningUsers.put(USER_10, true);
 
         resetAll(all);
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -2986,7 +3130,7 @@
             assertEquals(2, mManager.getRemainingCallCount());
         });
 
-        mService.getShortcutsForTest().get(UserHandle.USER_SYSTEM).setDefaultLauncherComponent(
+        mService.getShortcutsForTest().get(UserHandle.USER_SYSTEM).setLauncher(
                 new ComponentName("pkg1", "class"));
 
         // Restore.
@@ -3020,7 +3164,7 @@
         });
 
         assertEquals("pkg1", mService.getShortcutsForTest().get(UserHandle.USER_SYSTEM)
-                .getDefaultLauncherComponent().getPackageName());
+                .getLastKnownLauncher().getPackageName());
 
         // Start another user
         mService.handleUnlockUser(USER_10);
@@ -3036,7 +3180,7 @@
             assertEquals("title10-1-1", getCallerShortcut("s1").getTitle());
             assertEquals("title10-1-2", getCallerShortcut("s2").getTitle());
         });
-        assertNull(mService.getShortcutsForTest().get(USER_10).getDefaultLauncherComponent());
+        assertNull(mService.getShortcutsForTest().get(USER_10).getLastKnownLauncher());
 
         // Try stopping the user
         mService.handleCleanupUser(USER_10);
@@ -3327,7 +3471,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_2);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -3344,7 +3488,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -3706,7 +3850,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
             assertWith(getCallerShortcuts())
@@ -3746,7 +3890,7 @@
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
 
         uninstallPackage(USER_0, CALLING_PACKAGE_1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageDeleteIntent(CALLING_PACKAGE_1, USER_0));
 
         assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
@@ -3763,8 +3907,10 @@
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_10));
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
 
+        mRunningUsers.put(USER_10, true);
+
         uninstallPackage(USER_10, CALLING_PACKAGE_2);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageDeleteIntent(CALLING_PACKAGE_2, USER_10));
 
         assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
@@ -3855,7 +4001,7 @@
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_10));
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
 
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageDataClear(CALLING_PACKAGE_1, USER_0));
 
         assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
@@ -3872,7 +4018,9 @@
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_10));
         assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
 
-        mService.mPackageMonitor.onReceive(getTestContext(),
+        mRunningUsers.put(USER_10, true);
+
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageDataClear(CALLING_PACKAGE_2, USER_10));
 
         assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
@@ -3892,12 +4040,14 @@
 
     public void testHandlePackageClearData_manifestRepublished() {
 
+        mRunningUsers.put(USER_10, true);
+
         // Add two manifests and two dynamics.
         addManifestShortcutResource(
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_2);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_10));
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -3918,7 +4068,7 @@
         });
 
         // Clear data
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageDataClear(CALLING_PACKAGE_1, USER_10));
 
         // Only manifest shortcuts will remain, and are no longer pinned.
@@ -3983,9 +4133,9 @@
         reset(c0);
         reset(c10);
 
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageUpdateIntent(CALLING_PACKAGE_1, USER_0));
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageUpdateIntent(CALLING_PACKAGE_1, USER_10));
 
         waitOnMainThread();
@@ -4006,7 +4156,7 @@
         updatePackageVersion(CALLING_PACKAGE_1, 1);
 
         // Then send the broadcast, to only user-0.
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageUpdateIntent(CALLING_PACKAGE_1, USER_0));
 
         waitOnMainThread();
@@ -4037,12 +4187,14 @@
         // notification to the launcher.
         mInjectedCurrentTimeMillis = START_TIME + 200;
 
-        doAnswer(new AnswerIsUserRunning(true)).when(mMockUserManager).isUserRunning(eq(USER_10));
+        mRunningUsers.put(USER_10, true);
 
         reset(c0);
         reset(c10);
         mService.handleUnlockUser(USER_10);
 
+        waitOnMainThread();
+
         shortcuts = ArgumentCaptor.forClass(List.class);
         verify(c0, times(0)).onShortcutsChanged(
                 eq(CALLING_PACKAGE_1),
@@ -4069,7 +4221,7 @@
         updatePackageVersion(CALLING_PACKAGE_2, 10);
 
         // Then send the broadcast, to only user-0.
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageUpdateIntent(CALLING_PACKAGE_2, USER_0));
         mService.handleUnlockUser(USER_10);
 
@@ -4093,7 +4245,7 @@
         updatePackageVersion(CALLING_PACKAGE_3, 100);
 
         // Then send the broadcast, to only user-0.
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageUpdateIntent(CALLING_PACKAGE_3, USER_0));
         mService.handleUnlockUser(USER_10);
 
@@ -4175,7 +4327,7 @@
 
         // Update the package.
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageUpdateIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -4201,8 +4353,10 @@
         addManifestShortcutResource(ACTIVITY1, R.xml.shortcut_1);
         addManifestShortcutResource(ACTIVITY2, R.xml.shortcut_1_alt);
 
+        mRunningUsers.put(USER_10, true);
+
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_10));
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -4234,7 +4388,7 @@
         });
 
         // First, no changes.
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageChangedIntent(CALLING_PACKAGE_1, USER_10));
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -4257,7 +4411,7 @@
 
         // Disable activity 1
         mEnabledActivityChecker = (activity, userId) -> !ACTIVITY1.equals(activity);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageChangedIntent(CALLING_PACKAGE_1, USER_10));
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -4277,7 +4431,7 @@
         // Re-enable activity 1.
         // Manifest shortcuts will be re-published, but dynamic ones are not.
         mEnabledActivityChecker = (activity, userId) -> true;
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageChangedIntent(CALLING_PACKAGE_1, USER_10));
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -4301,7 +4455,7 @@
         // Disable activity 2
         // Because "ms1-alt" and "s2" are both pinned, they will remain, but disabled.
         mEnabledActivityChecker = (activity, userId) -> !ACTIVITY2.equals(activity);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageChangedIntent(CALLING_PACKAGE_1, USER_10));
 
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
@@ -4364,7 +4518,7 @@
         setCaller(LAUNCHER_1, USER_0);
         assertForLauncherCallback(mLauncherApps, () -> {
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageUpdateIntent(CALLING_PACKAGE_1, USER_0));
         }).assertCallbackCalledForPackageAndUser(CALLING_PACKAGE_1, HANDLE_USER_0)
                 // Make sure the launcher gets callbacks.
@@ -4481,8 +4635,10 @@
         final ShortcutUser user0 = mService.getUserShortcutsLocked(USER_0);
         assertExistsAndShadow(user0.getAllPackagesForTest().get(CALLING_PACKAGE_1));
         assertExistsAndShadow(user0.getAllPackagesForTest().get(CALLING_PACKAGE_2));
-        assertExistsAndShadow(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_1)));
-        assertExistsAndShadow(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_2)));
+        assertExistsAndShadow(user0.getAllLaunchersForTest().get(
+                PackageWithUser.of(USER_0, LAUNCHER_1)));
+        assertExistsAndShadow(user0.getAllLaunchersForTest().get(
+                PackageWithUser.of(USER_0, LAUNCHER_2)));
 
         assertNull(user0.getAllPackagesForTest().get(CALLING_PACKAGE_3));
         assertNull(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_3)));
@@ -4490,90 +4646,98 @@
 
         installPackage(USER_0, CALLING_PACKAGE_1);
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertEquals(0, mManager.getDynamicShortcuts().size());
-            assertShortcutIds(assertAllPinned(
-                    mManager.getPinnedShortcuts()),
-                    "s1", "s2");
+            assertWith(getCallerVisibleShortcuts())
+                    .selectDynamic()
+                    .isEmpty()
+
+                    .revertToOriginalList()
+                    .selectPinned()
+                    .haveIds("s1", "s2");
         });
 
         installPackage(USER_0, LAUNCHER_1);
         runWithCaller(LAUNCHER_1, USER_0, () -> {
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0)),
-                    "s1");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
-                    /* empty, not restored */ );
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
-                    /* empty, not restored */ );
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s1");
 
-            assertEquals(0, mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0).size());
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0))
+                    .isEmpty();
         });
 
         installPackage(USER_0, CALLING_PACKAGE_2);
         runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
-            assertEquals(0, mManager.getDynamicShortcuts().size());
-            assertShortcutIds(assertAllPinned(
-                    mManager.getPinnedShortcuts()),
-                    "s1", "s2", "s3");
+            assertWith(getCallerVisibleShortcuts())
+                    .selectDynamic()
+                    .isEmpty()
+
+                    .revertToOriginalList()
+                    .selectPinned()
+                    .haveIds("s1", "s2", "s3");
         });
 
         runWithCaller(LAUNCHER_1, USER_0, () -> {
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0)),
-                    "s1");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0)),
-                    "s1", "s2");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
-                    /* empty, not restored */ );
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s1");
 
-            assertEquals(0, mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0).size());
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s1", "s2");
+
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0))
+                    .isEmpty();
         });
 
         // 3 shouldn't be backed up, so no pinned shortcuts.
         installPackage(USER_0, CALLING_PACKAGE_3);
         runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
-            assertEquals(0, mManager.getDynamicShortcuts().size());
-            assertEquals(0, mManager.getPinnedShortcuts().size());
+            assertWith(getCallerVisibleShortcuts())
+                    .isEmpty();
         });
 
         // Launcher on a different profile shouldn't be restored.
         runWithCaller(LAUNCHER_1, USER_P0, () -> {
-            assertEquals(0,
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0)
-                            .size());
-            assertEquals(0,
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0)
-                            .size());
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
-                    /* wasn't restored, so still empty */ );
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0))
+                    .isEmpty();
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
+                    .isEmpty();
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
+                    .isEmpty();
         });
 
         // Package on a different profile, no restore.
         installPackage(USER_P0, CALLING_PACKAGE_1);
         runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
-            assertEquals(0, mManager.getDynamicShortcuts().size());
-            assertEquals(0, mManager.getPinnedShortcuts().size());
+            assertWith(getCallerVisibleShortcuts())
+                    .isEmpty();
         });
 
         // Restore launcher 2 on user 0.
         installPackage(USER_0, LAUNCHER_2);
         runWithCaller(LAUNCHER_2, USER_0, () -> {
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0)),
-                    "s2");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0)),
-                    "s2", "s3");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
-                    /* wasn't restored, so still empty */ );
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s2");
 
-            assertEquals(0, mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0).size());
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s2", "s3");
+
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0))
+                    .isEmpty();
         });
 
 
@@ -4581,33 +4745,33 @@
         // make sure they still have the same result.
         installPackage(USER_0, CALLING_PACKAGE_1);
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertEquals(0, mManager.getDynamicShortcuts().size());
-            assertShortcutIds(assertAllPinned(
-                    mManager.getPinnedShortcuts()),
-                    "s1", "s2");
+            assertWith(getCallerVisibleShortcuts())
+                    .areAllPinned()
+                    .haveIds("s1", "s2");
         });
 
         installPackage(USER_0, LAUNCHER_1);
         runWithCaller(LAUNCHER_1, USER_0, () -> {
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0)),
-                    "s1");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0)),
-                    "s1", "s2");
-            assertShortcutIds(assertAllPinned(
-                    mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
-                    /* wasn't restored, so still empty */ );
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s1");
 
-            assertEquals(0, mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0).size());
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
+                    .areAllPinned()
+                    .haveIds("s1", "s2");
+
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0))
+                    .isEmpty();
         });
 
         installPackage(USER_0, CALLING_PACKAGE_2);
         runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
-            assertEquals(0, mManager.getDynamicShortcuts().size());
-            assertShortcutIds(assertAllPinned(
-                    mManager.getPinnedShortcuts()),
-                    "s1", "s2", "s3");
+            assertWith(getCallerVisibleShortcuts())
+                    .areAllPinned()
+                    .haveIds("s1", "s2", "s3");
         });
     }
 
@@ -4928,6 +5092,112 @@
         });
     }
 
+    public void testBackupAndRestore_disabled() {
+        prepareCrossProfileDataSet();
+
+        // Before doing backup & restore, disable s1.
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            mManager.disableShortcuts(list("s1"));
+        });
+
+        backupAndRestore();
+
+        // Below is copied from checkBackupAndRestore_success.
+
+        // Make sure non-system user is not restored.
+        final ShortcutUser userP0 = mService.getUserShortcutsLocked(USER_P0);
+        assertEquals(0, userP0.getAllPackagesForTest().size());
+        assertEquals(0, userP0.getAllLaunchersForTest().size());
+
+        // Make sure only "allowBackup" apps are restored, and are shadow.
+        final ShortcutUser user0 = mService.getUserShortcutsLocked(USER_0);
+        assertExistsAndShadow(user0.getAllPackagesForTest().get(CALLING_PACKAGE_1));
+        assertExistsAndShadow(user0.getAllPackagesForTest().get(CALLING_PACKAGE_2));
+        assertExistsAndShadow(user0.getAllLaunchersForTest().get(
+                PackageWithUser.of(USER_0, LAUNCHER_1)));
+        assertExistsAndShadow(user0.getAllLaunchersForTest().get(
+                PackageWithUser.of(USER_0, LAUNCHER_2)));
+
+        assertNull(user0.getAllPackagesForTest().get(CALLING_PACKAGE_3));
+        assertNull(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_0, LAUNCHER_3)));
+        assertNull(user0.getAllLaunchersForTest().get(PackageWithUser.of(USER_P0, LAUNCHER_1)));
+
+        installPackage(USER_0, CALLING_PACKAGE_1);
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertWith(getCallerVisibleShortcuts())
+                    .areAllEnabled() // disabled shortcuts shouldn't be restored.
+
+                    .selectDynamic()
+                    .isEmpty()
+
+                    .revertToOriginalList()
+                    .selectPinned()
+                    // s1 is not restored.
+                    .haveIds("s2");
+        });
+
+        installPackage(USER_0, LAUNCHER_1);
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            // Note, s1 was pinned by launcher 1, but was disabled, so isn't restored.
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_1), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_2), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(buildAllQuery(CALLING_PACKAGE_3), HANDLE_USER_0))
+                    .isEmpty();
+
+            assertWith(mLauncherApps.getShortcuts(QUERY_ALL, HANDLE_USER_P0))
+                    .isEmpty();
+        });
+    }
+
+
+    public void testBackupAndRestore_manifestNotRestored() {
+        // Publish two manifest shortcuts.
+        addManifestShortcutResource(
+                new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
+                R.xml.shortcut_2);
+        updatePackageVersion(CALLING_PACKAGE_1, 1);
+        mService.mPackageMonitor.onReceive(mServiceContext,
+                genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
+
+        // Pin from launcher 1.
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.pinShortcuts(CALLING_PACKAGE_1, list("ms1", "ms2"), HANDLE_USER_0);
+        });
+
+        // Update and now ms2 is gone -> disabled.
+        addManifestShortcutResource(
+                new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
+                R.xml.shortcut_1);
+        updatePackageVersion(CALLING_PACKAGE_1, 1);
+        mService.mPackageMonitor.onReceive(mServiceContext,
+                genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
+
+        // Make sure the manifest shortcuts have been published.
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertWith(getCallerShortcuts())
+                    .areAllPinned()
+                    .haveIds("ms1", "ms2")
+
+                    .selectByIds("ms1")
+                    .areAllManifest()
+                    .areAllEnabled()
+
+                    .revertToOriginalList()
+                    .selectByIds("ms2")
+                    .areAllNotManifest()
+                    .areAllDisabled();
+        });
+
+        // Now do the regular backup & restore test.
+        // The existence of the manifest shortcuts shouldn't affect the result.
+        prepareCrossProfileDataSet();
+        backupAndRestore();
+    }
+
     public void testSaveAndLoad_crossProfile() {
         prepareCrossProfileDataSet();
 
@@ -5364,7 +5634,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5385,7 +5655,7 @@
                 new ComponentName(CALLING_PACKAGE_2, ShortcutActivity.class.getName()),
                 R.xml.shortcut_5);
         updatePackageVersion(CALLING_PACKAGE_2, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_2, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5422,7 +5692,7 @@
                 new ComponentName(CALLING_PACKAGE_2, ShortcutActivity.class.getName()),
                 R.xml.shortcut_2);
         updatePackageLastUpdateTime(CALLING_PACKAGE_2, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_2, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5455,9 +5725,36 @@
             assertEmpty(mManager.getManifestShortcuts());
             assertEmpty(mManager.getPinnedShortcuts());
         });
-        // Send PACKAGE_ADD broadcast to have Package 2 on user-10 publish manifest shortcuts.
+        // Send add broadcast, but the user is not running, so should be ignored.
+        mRunningUsers.put(USER_10, false);
+        mUnlockedUsers.put(USER_10, false);
+
         mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_2, USER_10));
+        runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
+            // Don't use the mManager APIs to get shortcuts, because they'll trigger the package
+            // update check.
+            // So look the internal data directly using getCallerShortcuts().
+            assertEmpty(getCallerShortcuts());
+        });
+
+        // Try again, but the user is locked, so still ignored.
+        mRunningUsers.put(USER_10, true);
+                mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageAddIntent(CALLING_PACKAGE_2, USER_10));
+        runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
+            // Don't use the mManager APIs to get shortcuts, because they'll trigger the package
+            // update check.
+            // So look the internal data directly using getCallerShortcuts().
+            assertEmpty(getCallerShortcuts());
+        });
+
+        // Unlock the user, now it should work.
+        mUnlockedUsers.put(USER_10, true);
+
+        // Send PACKAGE_ADD broadcast to have Package 2 on user-10 publish manifest shortcuts.
+                mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageAddIntent(CALLING_PACKAGE_2, USER_10));
 
         runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
             assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
@@ -5497,7 +5794,7 @@
                 R.xml.shortcut_5_reverse);
 
         updatePackageLastUpdateTime(CALLING_PACKAGE_2, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_2, USER_0));
 
         runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
@@ -5525,7 +5822,7 @@
                 new ComponentName(CALLING_PACKAGE_2, ShortcutActivity2.class.getName()),
                 R.xml.shortcut_0);
         updatePackageLastUpdateTime(CALLING_PACKAGE_2, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_2, USER_0));
 
         // No manifest shortcuts, and pinned ones are disabled.
@@ -5556,14 +5853,16 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_error_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Only the valid one is published.
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
-                    mManager.getManifestShortcuts()))),
-                    "x1");
+            assertWith(getCallerShortcuts())
+                    .areAllManifest()
+                    .areAllImmutable()
+                    .areAllEnabled()
+                    .haveIds("x1");
         });
 
         // Package 1 updated, which has one valid manifest shortcut and one invalid.
@@ -5571,14 +5870,16 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_error_2);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Only the valid one is published.
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
-                    mManager.getManifestShortcuts()))),
-                    "x2");
+            assertWith(getCallerShortcuts())
+                    .areAllManifest()
+                    .areAllImmutable()
+                    .areAllEnabled()
+                    .haveIds("x2");
         });
 
         // Package 1 updated, which has one valid manifest shortcut and one invalid.
@@ -5586,14 +5887,19 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_error_3);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Only the valid one is published.
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertShortcutIds(assertAllManifest(assertAllImmutable(assertAllEnabled(
-                    mManager.getManifestShortcuts()))),
-                    "x3");
+            assertWith(getCallerShortcuts())
+                    .areAllManifest()
+                    .areAllImmutable()
+                    .areAllEnabled()
+                    .haveIds("x3")
+                    .forShortcutWithId("x3", si -> {
+                        assertEquals(set("cat2"), si.getCategories());
+                     });
         });
     }
 
@@ -5602,7 +5908,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_error_4);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5617,11 +5923,41 @@
                     .areAllEnabled()
                     .forShortcutWithId("ms1", si -> {
                         assertTrue(si.isEnabled());
+                        assertEquals(1, si.getIntents().length);
+
                         assertEquals("action1", si.getIntent().getAction());
+                        assertEquals("value1", si.getIntent().getStringExtra("key1"));
+                        assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK |
+                                Intent.FLAG_ACTIVITY_CLEAR_TASK |
+                                Intent.FLAG_ACTIVITY_TASK_ON_HOME, si.getIntent().getFlags());
+
+                        assertEquals("action1", si.getIntents()[0].getAction());
+                        assertEquals("value1", si.getIntents()[0].getStringExtra("key1"));
+                        assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK |
+                                Intent.FLAG_ACTIVITY_CLEAR_TASK |
+                                Intent.FLAG_ACTIVITY_TASK_ON_HOME, si.getIntents()[0].getFlags());
                     })
                     .forShortcutWithId("ms2", si -> {
                         assertTrue(si.isEnabled());
-                        assertEquals("action2_1", si.getIntent().getAction());
+                        assertEquals(2, si.getIntents().length);
+
+                        // getIntent will return the last one.
+                        assertEquals("action2_2", si.getIntent().getAction());
+                        assertEquals("value2", si.getIntent().getStringExtra("key2"));
+                        assertEquals(0, si.getIntent().getFlags());
+
+                        final Intent i1 = si.getIntents()[0];
+                        final Intent i2 = si.getIntents()[1];
+
+                        assertEquals("action2_1", i1.getAction());
+                        assertEquals("value1", i1.getStringExtra("key1"));
+                        assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK |
+                                        Intent.FLAG_ACTIVITY_CLEAR_TASK |
+                                        Intent.FLAG_ACTIVITY_TASK_ON_HOME, i1.getFlags());
+
+                        assertEquals("action2_2", i2.getAction());
+                        assertEquals("value2", i2.getStringExtra("key2"));
+                        assertEquals(0, i2.getFlags());
                     });
         });
 
@@ -5630,7 +5966,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_5);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5668,7 +6004,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_error_4);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Make sure 3, 4 and 5 still exist but disabled.
@@ -5694,7 +6030,8 @@
                         assertEquals(si.getId(), "action1", si.getIntent().getAction());
                     })
                     .forShortcutWithId("ms2", si -> {
-                        assertEquals(si.getId(), "action2_1", si.getIntent().getAction());
+                        // getIntent returns the last one.
+                        assertEquals(si.getId(), "action2_2", si.getIntent().getAction());
                     })
                     .forShortcutWithId("ms3", si -> {
                         assertEquals(si.getId(), Intent.ACTION_VIEW, si.getIntent().getAction());
@@ -5716,7 +6053,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_5);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Only the valid one is published.
@@ -5813,7 +6150,7 @@
         });
     }
 
-    public void testManifestShortcuts_localeChange() {
+    public void testManifestShortcuts_localeChange() throws InterruptedException {
         mService.handleUnlockUser(USER_0);
 
         // Package 1 updated, which has one valid manifest shortcut and one invalid.
@@ -5821,7 +6158,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_2);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -5869,8 +6206,15 @@
 
         mInjectedCurrentTimeMillis++;
 
+        // Change the locale and send the broadcast, make sure the launcher gets a callback too.
         mInjectedLocale = Locale.JAPANESE;
-        mInternal.onSystemLocaleChangedNoLock();
+
+        setCaller(LAUNCHER_1, USER_0);
+
+        assertForLauncherCallback(mLauncherApps, () -> {
+            mService.mReceiver.onReceive(mServiceContext, new Intent(Intent.ACTION_LOCALE_CHANGED));
+        }).assertCallbackCalledForPackageAndUser(CALLING_PACKAGE_1, HANDLE_USER_0)
+                .haveIds("ms1", "ms2", "s1");
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
             // check first shortcut.
@@ -5918,7 +6262,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Only the valid one is published.
@@ -5937,7 +6281,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1_disable);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Because shortcut 1 wasn't pinned, it'll just go away.
@@ -5958,7 +6302,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Only the valid one is published.
@@ -5981,7 +6325,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1_disable);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         // Because shortcut 1 was pinned, it'll still exist as pinned, but disabled.
@@ -6014,7 +6358,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_2_duplicate);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -6044,7 +6388,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity2.class.getName()),
                 R.xml.shortcut_5);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -6116,7 +6460,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_5);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -6166,7 +6510,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_2);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(LAUNCHER_1, USER_0, () -> {
@@ -6177,7 +6521,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_1);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -6259,7 +6603,7 @@
                 new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                 R.xml.shortcut_5);
         updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(getTestContext(),
+                mService.mPackageMonitor.onReceive(getTestContext(),
                 genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
@@ -6329,7 +6673,7 @@
                     new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                     R.xml.shortcut_2);
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
             assertEquals(2, mManager.getManifestShortcuts().size());
 
@@ -6455,7 +6799,7 @@
                     new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                     R.xml.shortcut_2);
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
 
             assertEquals(2, mManager.getManifestShortcuts().size());
@@ -6604,7 +6948,7 @@
                     new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
                     R.xml.shortcut_1);
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
             assertEquals(1, mManager.getManifestShortcuts().size());
 
@@ -6624,7 +6968,7 @@
                     new ComponentName(CALLING_PACKAGE_1, ShortcutActivity2.class.getName()),
                     R.xml.shortcut_1_alt);
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
             assertEquals(3, mManager.getManifestShortcuts().size());
 
@@ -6644,7 +6988,7 @@
                     new ComponentName(CALLING_PACKAGE_1, ShortcutActivity2.class.getName()),
                     R.xml.shortcut_5_alt); // manifest has 5, but max is 3, so a2 will have 3.
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
             assertEquals(5, mManager.getManifestShortcuts().size());
 
@@ -6663,7 +7007,7 @@
                     new ComponentName(CALLING_PACKAGE_1, ShortcutActivity2.class.getName()),
                     R.xml.shortcut_0);
             updatePackageVersion(CALLING_PACKAGE_1, 1);
-            mService.mPackageMonitor.onReceive(getTestContext(),
+                    mService.mPackageMonitor.onReceive(getTestContext(),
                     genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
             assertEquals(0, mManager.getManifestShortcuts().size());
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
index f570ff2..f97355a 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest2.java
@@ -47,6 +47,12 @@
 import com.android.frameworks.servicestests.R;
 import com.android.server.pm.ShortcutService.ConfigConstants;
 
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Locale;
+
 /**
  * Tests for ShortcutService and ShortcutManager.
  *
@@ -84,7 +90,7 @@
 
         assertExpectException(
                 RuntimeException.class,
-                "intent cannot be null",
+                "intents cannot contain null",
                 () -> new ShortcutInfo.Builder(getTestContext(), "id").setIntent(null));
 
         assertExpectException(
@@ -130,7 +136,6 @@
         assertExpectException(NullPointerException.class, "action must be set",
                 () -> new ShortcutInfo.Builder(getTestContext(), "id").setIntent(new Intent()));
 
-        // same for add.
         assertExpectException(
                 IllegalArgumentException.class, "Short label must be provided", () -> {
             ShortcutInfo si = new ShortcutInfo.Builder(getTestContext(), "id")
@@ -139,6 +144,7 @@
             assertTrue(getManager().setDynamicShortcuts(list(si)));
         });
 
+        // same for add.
         assertExpectException(
                 IllegalArgumentException.class, "Short label must be provided", () -> {
             ShortcutInfo si = new ShortcutInfo.Builder(getTestContext(), "id")
@@ -147,7 +153,6 @@
             assertTrue(getManager().addDynamicShortcuts(list(si)));
         });
 
-        // same for add.
         assertExpectException(NullPointerException.class, "Intent must be provided", () -> {
             ShortcutInfo si = new ShortcutInfo.Builder(getTestContext(), "id")
                     .setActivity(new ComponentName(getTestContext().getPackageName(), "s"))
@@ -181,6 +186,33 @@
                     .build();
             assertTrue(getManager().addDynamicShortcuts(list(si)));
         });
+
+        // Now all activities are not main.
+        mMainActivityChecker = (component, userId) -> false;
+
+        assertExpectException(
+                IllegalStateException.class, "is not main", () -> {
+                    ShortcutInfo si = new ShortcutInfo.Builder(getTestContext(), "id")
+                            .setActivity(new ComponentName(getTestContext(), "s"))
+                            .build();
+                    assertTrue(getManager().setDynamicShortcuts(list(si)));
+                });
+        // For add
+        assertExpectException(
+                IllegalStateException.class, "is not main", () -> {
+                    ShortcutInfo si = new ShortcutInfo.Builder(getTestContext(), "id")
+                            .setActivity(new ComponentName(getTestContext(), "s"))
+                            .build();
+                    assertTrue(getManager().addDynamicShortcuts(list(si)));
+                });
+        // For update
+        assertExpectException(
+                IllegalStateException.class, "is not main", () -> {
+                    ShortcutInfo si = new ShortcutInfo.Builder(getTestContext(), "id")
+                            .setActivity(new ComponentName(getTestContext(), "s"))
+                            .build();
+                    assertTrue(getManager().updateShortcuts(list(si)));
+                });
     }
 
     public void testShortcutInfoParcel() {
@@ -847,11 +879,16 @@
         final long now = mInjectedCurrentTimeMillis;
         mInjectedCurrentTimeMillis += 1;
 
+        dumpsysOnLogcat("before save");
+
         // Save and load.
         mService.saveDirtyInfo();
         initService();
         mService.handleUnlockUser(USER_10);
 
+        dumpUserFile(USER_10);
+        dumpsysOnLogcat("after load");
+
         ShortcutInfo si;
         si = mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "id", USER_10);
 
@@ -880,6 +917,8 @@
         // to test it.
         si = mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "id2", USER_10);
         assertEquals(1, si.getRank());
+
+        dumpUserFile(USER_10);
     }
 
     public void testShortcutInfoSaveAndLoad_resId() throws InterruptedException {
@@ -1101,7 +1140,30 @@
                     assertEquals(intent.getAction(), si.getIntent().getAction());
                     assertEquals(intent.getData(), si.getIntent().getData());
                     assertEquals(intent.getComponent(), si.getIntent().getComponent());
-                    assertBundlesEqual(intent.getExtras(), si.getExtras());
+                    assertBundlesEqual(intent.getExtras(), si.getIntent().getExtras());
+                });
+    }
+
+    private void checkShortcutInfoSaveAndLoad_intents(Intent... intents) {
+        assertTrue(mManager.setDynamicShortcuts(list(
+                makeShortcutWithIntents("s1", intents))));
+        initService();
+        mService.handleUnlockUser(USER_0);
+
+        assertWith(getCallerShortcuts())
+                .haveIds("s1")
+                .forShortcutWithId("s1", si -> {
+
+                    final Intent[] actual = si.getIntents();
+                    assertEquals(intents.length, actual.length);
+
+                    for (int i = 0; i < intents.length; i++) {
+                        assertEquals(intents[i].getAction(), actual[i].getAction());
+                        assertEquals(intents[i].getData(), actual[i].getData());
+                        assertEquals(intents[i].getComponent(), actual[i].getComponent());
+                        assertEquals(intents[i].getFlags(), actual[i].getFlags());
+                        assertBundlesEqual(intents[i].getExtras(), actual[i].getExtras());
+                    }
                 });
     }
 
@@ -1144,6 +1206,30 @@
                 .putExtras(makeBundle("a", "b")));
 
         mInjectedCurrentTimeMillis += INTERVAL; // reset throttling.
+
+        // Multi-intents
+        checkShortcutInfoSaveAndLoad_intents(
+                new Intent(Intent.ACTION_MAIN).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK),
+                new Intent(Intent.ACTION_VIEW).setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
+        );
+
+        checkShortcutInfoSaveAndLoad_intents(
+                new Intent(Intent.ACTION_MAIN).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+                        .setComponent(new ComponentName("a", "b")),
+                new Intent(Intent.ACTION_VIEW)
+                        .setComponent(new ComponentName("a", "b"))
+                );
+
+        checkShortcutInfoSaveAndLoad_intents(
+                new Intent(Intent.ACTION_MAIN)
+                        .setComponent(new ComponentName("a", "b")),
+                new Intent(Intent.ACTION_VIEW).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+                        .setComponent(new ComponentName("a", "b")),
+                new Intent("xyz").setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
+                        | Intent.FILL_IN_COMPONENT)
+                        .setComponent(new ComponentName("a", "b")).putExtras(
+                        makeBundle("xx", "yy"))
+                );
     }
 
     public void testThrottling() {
@@ -1331,13 +1417,12 @@
         mService.saveDirtyInfo();
         initService();
 
-        final long origSequenceNumber = mService.getLocaleChangeSequenceNumber();
-
-        mInternal.onSystemLocaleChangedNoLock();
-        assertEquals(origSequenceNumber + 1, mService.getLocaleChangeSequenceNumber());
+        mInjectedLocale = Locale.CHINA;
+        mService.mReceiver.onReceive(mServiceContext, new Intent(Intent.ACTION_LOCALE_CHANGED));
 
         // Note at this point only user-0 is loaded, and the counters are reset for this user,
-        // but it will work for other users too, because we persist when
+        // but it will work for other users too because we check the locale change at any
+        // API entry point.
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
             assertEquals(3, mManager.getRemainingCallCount());
@@ -1358,11 +1443,28 @@
             assertEquals(3, mManager.getRemainingCallCount());
         });
 
+        // Make sure even if we receive ACTION_LOCALE_CHANGED, if the locale hasn't actually
+        // changed, we don't reset throttling.
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            mManager.updateShortcuts(list());
+            assertEquals(2, mManager.getRemainingCallCount());
+        });
+
+        mService.mReceiver.onReceive(mServiceContext, new Intent(Intent.ACTION_LOCALE_CHANGED));
+
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertEquals(2, mManager.getRemainingCallCount()); // Still 2.
+        });
+
         mService.saveDirtyInfo();
         initService();
 
-        // Make sure the counter is persisted.
-        assertEquals(origSequenceNumber + 1, mService.getLocaleChangeSequenceNumber());
+        // The locale should be persisted, so it still shouldn't reset throttling.
+        mService.mReceiver.onReceive(mServiceContext, new Intent(Intent.ACTION_LOCALE_CHANGED));
+
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertEquals(2, mManager.getRemainingCallCount()); // Still 2.
+        });
     }
 
     public void testThrottling_foreground() throws Exception {
@@ -1518,12 +1620,22 @@
                 ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE);
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
             assertEquals(3, mManager.getRemainingCallCount());
+            assertFalse(mManager.isRateLimitingActive());
 
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+            assertEquals(2, mManager.getRemainingCallCount());
+            assertFalse(mManager.isRateLimitingActive());
+
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
+
+            assertEquals(1, mManager.getRemainingCallCount());
+            assertFalse(mManager.isRateLimitingActive());
+
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
 
             assertEquals(0, mManager.getRemainingCallCount());
+            assertTrue(mManager.isRateLimitingActive());
         });
         runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
             assertEquals(3, mManager.getRemainingCallCount());
@@ -1533,6 +1645,7 @@
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
 
             assertEquals(0, mManager.getRemainingCallCount());
+            assertTrue(mManager.isRateLimitingActive());
         });
         runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
             MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
@@ -1542,6 +1655,7 @@
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
 
             assertEquals(0, mManager.getRemainingCallCount());
+            assertTrue(mManager.isRateLimitingActive());
         });
         runWithCaller(CALLING_PACKAGE_4, USER_0, () -> {
             MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
@@ -1551,6 +1665,7 @@
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
 
             assertEquals(0, mManager.getRemainingCallCount());
+            assertTrue(mManager.isRateLimitingActive());
         });
         runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
             MoreAsserts.assertNotEqual(3, mManager.getRemainingCallCount());
@@ -1560,6 +1675,7 @@
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
 
             assertEquals(0, mManager.getRemainingCallCount());
+            assertTrue(mManager.isRateLimitingActive());
         });
         runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
             assertEquals(3, mManager.getRemainingCallCount());
@@ -1569,6 +1685,7 @@
             mManager.setDynamicShortcuts(list(makeShortcut("s")));
 
             assertEquals(3, mManager.getRemainingCallCount()); // Still 3!
+            assertFalse(mManager.isRateLimitingActive());
         });
     }
 
@@ -1808,4 +1925,46 @@
                 ShortcutInfo.lookUpResourceId(res, "drawable/black_16x64", null,
                         getTestContext().getPackageName()));
     }
+
+    public void testDumpCheckin() throws IOException {
+        prepareCrossProfileDataSet();
+
+        // prepareCrossProfileDataSet() doesn't set any icons, so do set here.
+        final Icon res32x32 = Icon.createWithResource(getTestContext(), R.drawable.black_32x32);
+        final Icon res64x64 = Icon.createWithResource(getTestContext(), R.drawable.black_64x64);
+        final Icon bmp32x32 = Icon.createWithBitmap(BitmapFactory.decodeResource(
+                getTestContext().getResources(), R.drawable.black_32x32));
+        final Icon bmp64x64 = Icon.createWithBitmap(BitmapFactory.decodeResource(
+                getTestContext().getResources(), R.drawable.black_64x64));
+
+        runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeShortcutWithIcon("res32x32", res32x32),
+                    makeShortcutWithIcon("res64x64", res64x64),
+                    makeShortcutWithIcon("bmp32x32", bmp32x32),
+                    makeShortcutWithIcon("bmp64x64", bmp64x64))));
+        });
+        // We can't predict the compressed bitmap sizes, so get the real sizes here.
+        final long bitmapTotal =
+                new File(getPackageShortcut(CALLING_PACKAGE_2, "bmp32x32", USER_0)
+                        .getBitmapPath()).length() +
+                new File(getPackageShortcut(CALLING_PACKAGE_2, "bmp64x64", USER_0)
+                        .getBitmapPath()).length();
+
+        // Read the expected output and inject the bitmap size.
+        final String expected = readTestAsset("shortcut/dumpsys_expected.txt")
+                .replace("***BITMAP_SIZE***", String.valueOf(bitmapTotal));
+
+        assertEquals(expected, dumpCheckin());
+    }
+
+    public void testDumpsysNoPermission() {
+        assertExpectException(SecurityException.class, "android.permission.DUMP",
+                () -> mService.dump(null, new PrintWriter(new StringWriter()), null));
+
+        // System can call it without the permission.
+        runWithSystemUid(() -> {
+            mService.dump(null, new PrintWriter(new StringWriter()), null);
+        });
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest4.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest4.java
index 54c4b22..583c3d4 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest4.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest4.java
@@ -100,7 +100,7 @@
     );
 
     public void testPersistingWeirdCharacters() {
-        final Intent intent = new Intent(Intent.ACTION_VIEW)
+        final Intent intent = new Intent(Intent.ACTION_MAIN)
                 .putExtras(sIntentExtras);
 
         runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
new file mode 100644
index 0000000..ffb2953
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest6.java
@@ -0,0 +1,317 @@
+/*
+ * 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.server.pm;
+
+import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.list;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.List;
+
+/**
+ * Tests for {@link ShortcutService#hasShortcutHostPermissionInner}.
+ */
+@SmallTest
+public class ShortcutManagerTest6 extends BaseShortcutManagerTest {
+
+    private static final String PACKAGE_SYSTEM_LAUNCHER = "com.android.systemlauncher";
+    private static final String PACKAGE_SYSTEM_LAUNCHER_NAME = "systemlauncher_name";
+    private static final int PACKAGE_SYSTEM_LAUNCHER_PRIORITY = 0;
+
+    private static final String PACKAGE_FALLBACK_LAUNCHER = "com.android.settings";
+    private static final String PACKAGE_FALLBACK_LAUNCHER_NAME = "fallback";
+    private static final int PACKAGE_FALLBACK_LAUNCHER_PRIORITY = -999;
+
+    private void prepareGetHomeActivitiesAsUser(ComponentName preferred,
+            List<ResolveInfo> candidates, int userId) {
+        doAnswer(inv -> {
+            ((List) inv.getArguments()[0]).addAll(candidates);
+            return preferred;
+        }).when(mMockPackageManagerInternal).getHomeActivitiesAsUser(any(List.class), eq(userId));
+    }
+
+    private static ComponentName cn(String packageName, String name) {
+        return new ComponentName(packageName, name);
+    }
+
+    private static ResolveInfo ri(String packageName, String name, boolean isSystem, int priority) {
+        final ResolveInfo ri = new ResolveInfo();
+        ri.activityInfo = new ActivityInfo();
+        ri.activityInfo.applicationInfo = new ApplicationInfo();
+
+        ri.activityInfo.packageName = packageName;
+        ri.activityInfo.name = name;
+        if (isSystem) {
+            ri.activityInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        }
+        ri.priority = priority;
+        return ri;
+    }
+
+    private static ResolveInfo getSystemLauncher() {
+        return ri(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME, true,
+                PACKAGE_SYSTEM_LAUNCHER_PRIORITY);
+    }
+
+    private static ResolveInfo getFallbackLauncher() {
+        return ri(PACKAGE_FALLBACK_LAUNCHER, PACKAGE_FALLBACK_LAUNCHER_NAME, true,
+                PACKAGE_FALLBACK_LAUNCHER_PRIORITY);
+    }
+
+    public void testHasShortcutHostPermissionInner_systemLauncherOnly() {
+        // Preferred isn't set, use the system launcher.
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ null,
+                list(getSystemLauncher(), getFallbackLauncher()),
+                USER_0);
+        assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+        // Should be cached.
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        // Also make sure the last known is saved, but the cached is not.
+
+        initService();
+
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(null,
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+    }
+
+    public void testHasShortcutHostPermissionInner_with3pLauncher() {
+        // Preferred isn't set, still use the system launcher.
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ null,
+                list(getSystemLauncher(), getFallbackLauncher(),
+                        ri(CALLING_PACKAGE_1, "name", false, 0),
+                        ri(CALLING_PACKAGE_2, "name", false, 0)
+                ),
+                USER_0);
+        assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+        // Should be cached.
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+    }
+
+    public void testHasShortcutHostPermissionInner_with3pLauncher_complicated() {
+        // Preferred is set.  That's the default launcher.
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ cn(CALLING_PACKAGE_2, "name"),
+                list(getSystemLauncher(), getFallbackLauncher(),
+                        ri(CALLING_PACKAGE_1, "name", false, 0),
+                        ri(CALLING_PACKAGE_2, "name", false, 0)
+                ),
+                USER_0);
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+        assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+        // Should be cached.
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+
+        // Once set, even after the preferred launcher is cleared, SM still allows it to access
+        // shortcuts.
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ null,
+                list(getSystemLauncher(), getFallbackLauncher(),
+                        ri(CALLING_PACKAGE_1, "name", false, 0),
+                        ri(CALLING_PACKAGE_2, "name", false, 0)
+                ),
+                USER_0);
+
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+        assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+        // Should be cached.
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        // However, if the component has been disabled, then we'll recalculate it.
+        mEnabledActivityChecker = (comp, user) -> false;
+
+        assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+        mEnabledActivityChecker = (comp, user) -> true;
+
+        // Now the preferred changed.
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ cn(CALLING_PACKAGE_1, "xyz"),
+                list(getSystemLauncher(), getFallbackLauncher(),
+                        ri(CALLING_PACKAGE_1, "name", false, 0),
+                        ri(CALLING_PACKAGE_2, "name", false, 0)
+                ),
+                USER_0);
+
+        assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+
+        // Should be cached.
+        assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+
+        // As long as there's the cached launcher set, even if getHomeActivitiesAsUser()
+        // returns different values, the cached one is still the default.
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ getSystemLauncher().activityInfo.getComponentName(),
+                list(getSystemLauncher(), getFallbackLauncher()),
+                USER_0);
+
+        assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+
+        // Cached ones haven't changed.
+        assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(CALLING_PACKAGE_1, "xyz"),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        // However, now the "real" default launcher is the system one.  So if the system
+        // launcher asks for shortcuts, we'll allow it.
+        assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+
+        // Since the cache is updated, CALLING_PACKAGE_1 no longer has the permission.
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+
+        // Cached ones haven't changed.
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+    }
+
+    public void testHasShortcutHostPermissionInner_multiUser() {
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ null,
+                list(getSystemLauncher(), getFallbackLauncher()),
+                USER_0);
+
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ cn(CALLING_PACKAGE_2, "name"),
+                list(getSystemLauncher(), getFallbackLauncher(),
+                        ri(CALLING_PACKAGE_1, "name", false, 0),
+                        ri(CALLING_PACKAGE_2, "name", false, 0)
+                ),
+                USER_10);
+
+        assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_0));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_0));
+
+        // Check the cache.
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getLastKnownLauncher());
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_10));
+        assertFalse(mService.hasShortcutHostPermissionInner(PACKAGE_FALLBACK_LAUNCHER, USER_10));
+        assertFalse(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_1, USER_10));
+        assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_10));
+
+        // Check the cache.
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_10).getLastKnownLauncher());
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+    }
+
+    public void testHasShortcutHostPermissionInner_clearCache() {
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ null,
+                list(getSystemLauncher(), getFallbackLauncher()),
+                USER_0);
+
+        prepareGetHomeActivitiesAsUser(
+                /* preferred */ cn(CALLING_PACKAGE_2, "name"),
+                list(getSystemLauncher(), getFallbackLauncher(),
+                        ri(CALLING_PACKAGE_1, "name", false, 0),
+                        ri(CALLING_PACKAGE_2, "name", false, 0)
+                ),
+                USER_10);
+
+        assertTrue(mService.hasShortcutHostPermissionInner(PACKAGE_SYSTEM_LAUNCHER, USER_0));
+        assertTrue(mService.hasShortcutHostPermissionInner(CALLING_PACKAGE_2, USER_10));
+
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+
+        // Send ACTION_PREFERRED_ACTIVITY_CHANGED on user 10.
+        // But the user is not running, so will be ignored.
+        mService.mPackageMonitor.onReceive(mServiceContext,
+                new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED).putExtra(
+                        Intent.EXTRA_USER_HANDLE, USER_10));
+
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        assertEquals(cn(CALLING_PACKAGE_2, "name"),
+                mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+
+         // Send it again after starting the user.
+        mRunningUsers.put(USER_10, true);
+        mService.mPackageMonitor.onReceive(mServiceContext,
+                new Intent(Intent.ACTION_PREFERRED_ACTIVITY_CHANGED).putExtra(
+                        Intent.EXTRA_USER_HANDLE, USER_10));
+
+        assertEquals(cn(PACKAGE_SYSTEM_LAUNCHER, PACKAGE_SYSTEM_LAUNCHER_NAME),
+                mService.getUserShortcutsLocked(USER_0).getCachedLauncher());
+
+        // Only user-10's cache is cleared.
+        assertEquals(null,
+                mService.getUserShortcutsLocked(USER_10).getCachedLauncher());
+
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index ced4980..34e86e7 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -21,11 +21,15 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.UserInfo;
+import android.app.ActivityManager;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.provider.Settings;
 import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
 import android.test.suitebuilder.annotation.MediumTest;
+import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.internal.util.ArrayUtils;
 
@@ -34,24 +38,39 @@
 import java.util.List;
 
 /** Test {@link UserManager} functionality. */
-@MediumTest
 public class UserManagerTest extends AndroidTestCase {
-    private static final int REMOVE_CHECK_INTERVAL = 500;
-    private static final int REMOVE_TIMEOUT = 60 * 1000;
+    private static final int REMOVE_CHECK_INTERVAL_MILLIS = 500; // 0.5 seconds
+    private static final int REMOVE_TIMEOUT_MILLIS = 60 * 1000; // 60 seconds
+    private static final int SWITCH_CHECK_INTERVAL_MILLIS = 2 * 1000; // 2 seconds
+    private static final int SWITCH_USER_TIMEOUT_MILLIS = 40 * 1000; // 40 seconds
+
+    private final Object mUserRemoveLock = new Object();
+    private final Object mUserSwitchLock = new Object();
+
     private UserManager mUserManager = null;
-    private final Object mUserLock = new Object();
     private List<Integer> usersToRemove;
 
     @Override
     public void setUp() throws Exception {
         super.setUp();
         mUserManager = UserManager.get(getContext());
+
         IntentFilter filter = new IntentFilter(Intent.ACTION_USER_REMOVED);
+        filter.addAction(Intent.ACTION_USER_SWITCHED);
         getContext().registerReceiver(new BroadcastReceiver() {
             @Override
             public void onReceive(Context context, Intent intent) {
-                synchronized (mUserLock) {
-                    mUserLock.notifyAll();
+                switch (intent.getAction()) {
+                    case Intent.ACTION_USER_REMOVED:
+                        synchronized (mUserRemoveLock) {
+                            mUserRemoveLock.notifyAll();
+                        }
+                        break;
+                    case Intent.ACTION_USER_SWITCHED:
+                        synchronized (mUserSwitchLock) {
+                            mUserSwitchLock.notifyAll();
+                        }
+                        break;
                 }
             }
         }, filter);
@@ -81,10 +100,12 @@
         }
     }
 
+    @SmallTest
     public void testHasSystemUser() throws Exception {
         assertTrue(findUser(UserHandle.USER_SYSTEM));
     }
 
+    @MediumTest
     public void testAddUser() throws Exception {
         UserInfo userInfo = createUser("Guest 1", UserInfo.FLAG_GUEST);
         assertTrue(userInfo != null);
@@ -105,6 +126,7 @@
         assertTrue(found);
     }
 
+    @MediumTest
     public void testAdd2Users() throws Exception {
         UserInfo user1 = createUser("Guest 1", UserInfo.FLAG_GUEST);
         UserInfo user2 = createUser("User 2", UserInfo.FLAG_ADMIN);
@@ -117,6 +139,7 @@
         assertTrue(findUser(user2.id));
     }
 
+    @MediumTest
     public void testRemoveUser() throws Exception {
         UserInfo userInfo = createUser("Guest 1", UserInfo.FLAG_GUEST);
         removeUser(userInfo.id);
@@ -124,6 +147,7 @@
         assertFalse(findUser(userInfo.id));
     }
 
+    @MediumTest
     public void testAddGuest() throws Exception {
         UserInfo userInfo1 = createUser("Guest 1", UserInfo.FLAG_GUEST);
         UserInfo userInfo2 = createUser("Guest 2", UserInfo.FLAG_GUEST);
@@ -131,19 +155,54 @@
         assertNull(userInfo2);
     }
 
+    @MediumTest
+    public void testGetProfileParent() throws Exception {
+        final int primaryUserId = mUserManager.getPrimaryUser().id;
+
+        UserInfo userInfo = createProfileForUser("Profile",
+                UserInfo.FLAG_MANAGED_PROFILE, primaryUserId);
+        assertNotNull(userInfo);
+
+        UserInfo parentProfileInfo = mUserManager.getProfileParent(userInfo.id);
+        assertNotNull(parentProfileInfo);
+        assertEquals(parentProfileInfo.id, primaryUserId);
+    }
+
     // Make sure only one managed profile can be created
+    @MediumTest
     public void testAddManagedProfile() throws Exception {
         final int primaryUserId = mUserManager.getPrimaryUser().id;
         UserInfo userInfo1 = createProfileForUser("Managed 1",
                 UserInfo.FLAG_MANAGED_PROFILE, primaryUserId);
         UserInfo userInfo2 = createProfileForUser("Managed 2",
                 UserInfo.FLAG_MANAGED_PROFILE, primaryUserId);
+
         assertNotNull(userInfo1);
         assertNull(userInfo2);
         // Verify that current user is not a managed profile
         assertFalse(mUserManager.isManagedProfile());
     }
 
+    @MediumTest
+    public void testAddRestrictedProfile() throws Exception {
+        UserInfo userInfo = createRestrictedProfile("Profile");
+        assertNotNull(userInfo);
+
+        Bundle restrictions = mUserManager.getUserRestrictions(UserHandle.of(userInfo.id));
+        assertTrue("Restricted profile should have DISALLOW_MODIFY_ACCOUNTS restriction by default",
+                restrictions.getBoolean(UserManager.DISALLOW_MODIFY_ACCOUNTS));
+        assertTrue("Restricted profile should have DISALLOW_SHARE_LOCATION restriction by default",
+                restrictions.getBoolean(UserManager.DISALLOW_SHARE_LOCATION));
+
+        int locationMode = Settings.Secure.getIntForUser(getContext().getContentResolver(),
+                Settings.Secure.LOCATION_MODE,
+                Settings.Secure.LOCATION_MODE_HIGH_ACCURACY,
+                userInfo.id);
+        assertEquals("Restricted profile should have setting LOCATION_MODE set to "
+                + "LOCATION_MODE_OFF by default", locationMode, Settings.Secure.LOCATION_MODE_OFF);
+    }
+
+    @MediumTest
     public void testGetUserCreationTime() throws Exception {
         final int primaryUserId = mUserManager.getPrimaryUser().id;
         UserInfo profile = createProfileForUser("Managed 1",
@@ -177,7 +236,6 @@
         }
     }
 
-
     private boolean findUser(int id) {
         List<UserInfo> list = mUserManager.getUsers();
 
@@ -189,6 +247,7 @@
         return false;
     }
 
+    @MediumTest
     public void testSerialNumber() {
         UserInfo user1 = createUser("User 1", 0);
         int serialNumber1 = user1.serialNumber;
@@ -201,6 +260,7 @@
         assertEquals(user2.id, mUserManager.getUserHandle(serialNumber2));
     }
 
+    @MediumTest
     public void testGetSerialNumbersOfUsers() {
         UserInfo user1 = createUser("User 1", 0);
         UserInfo user2 = createUser("User 2", 0);
@@ -212,6 +272,7 @@
                 ArrayUtils.contains(serialNumbersOfUsers, user2.serialNumber));
     }
 
+    @MediumTest
     public void testMaxUsers() {
         int N = UserManager.getMaxSupportedUsers();
         int count = mUserManager.getUsers().size();
@@ -226,6 +287,17 @@
         assertNull(extra);
     }
 
+    @MediumTest
+    public void testGetUserCount() {
+        int count = mUserManager.getUsers().size();
+        UserInfo user1 = createUser("User 1", 0);
+        assertNotNull(user1);
+        UserInfo user2 = createUser("User 2", 0);
+        assertNotNull(user2);
+        assertEquals(count + 2, mUserManager.getUserCount());
+    }
+
+    @MediumTest
     public void testRestrictions() {
         UserInfo testUser = createUser("User 1", 0);
 
@@ -241,18 +313,66 @@
         assertEquals(stored.getBoolean(UserManager.DISALLOW_INSTALL_APPS), true);
     }
 
-    private void removeUser(int userId) {
-        synchronized (mUserLock) {
-            mUserManager.removeUser(userId);
+    @MediumTest
+    public void testSetDefaultGuestRestrictions() {
+        final Bundle origGuestRestrictions = mUserManager.getDefaultGuestRestrictions();
+        Bundle restrictions = new Bundle();
+        restrictions.putBoolean(UserManager.DISALLOW_FUN, true);
+        mUserManager.setDefaultGuestRestrictions(restrictions);
+
+        try {
+            UserInfo guest = createUser("Guest", UserInfo.FLAG_GUEST);
+            assertNotNull(guest);
+            assertTrue(mUserManager.hasUserRestriction(UserManager.DISALLOW_FUN,
+                    guest.getUserHandle()));
+        } finally {
+            mUserManager.setDefaultGuestRestrictions(origGuestRestrictions);
+        }
+    }
+
+    @LargeTest
+    public void testSwitchUser() {
+        ActivityManager am = getContext().getSystemService(ActivityManager.class);
+        final int startUser = am.getCurrentUser();
+        UserInfo user = createUser("User", 0);
+        assertNotNull(user);
+        // Switch to the user just created.
+        switchUser(user.id);
+        // Switch back to the starting user.
+        switchUser(startUser);
+    }
+
+    private void switchUser(int userId) {
+        synchronized (mUserSwitchLock) {
+            ActivityManager am = getContext().getSystemService(ActivityManager.class);
+            am.switchUser(userId);
             long time = System.currentTimeMillis();
-            while (mUserManager.getUserInfo(userId) != null) {
+            while (am.getCurrentUser() != userId) {
                 try {
-                    mUserLock.wait(REMOVE_CHECK_INTERVAL);
+                    mUserSwitchLock.wait(SWITCH_CHECK_INTERVAL_MILLIS);
                 } catch (InterruptedException ie) {
                     Thread.currentThread().interrupt();
                     return;
                 }
-                if (System.currentTimeMillis() - time > REMOVE_TIMEOUT) {
+                if (System.currentTimeMillis() - time > SWITCH_USER_TIMEOUT_MILLIS) {
+                    fail("Timeout waiting for the user switch to u" + userId);
+                }
+            }
+        }
+    }
+
+    private void removeUser(int userId) {
+        synchronized (mUserRemoveLock) {
+            mUserManager.removeUser(userId);
+            long time = System.currentTimeMillis();
+            while (mUserManager.getUserInfo(userId) != null) {
+                try {
+                    mUserRemoveLock.wait(REMOVE_CHECK_INTERVAL_MILLIS);
+                } catch (InterruptedException ie) {
+                    Thread.currentThread().interrupt();
+                    return;
+                }
+                if (System.currentTimeMillis() - time > REMOVE_TIMEOUT_MILLIS) {
                     fail("Timeout waiting for removeUser. userId = " + userId);
                 }
             }
@@ -275,4 +395,11 @@
         return profile;
     }
 
+    private UserInfo createRestrictedProfile(String name) {
+        UserInfo profile = mUserManager.createRestrictedProfile(name);
+        if (profile != null) {
+            usersToRemove.add(profile.id);
+        }
+        return profile;
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/wm/TestIWindow.java b/services/tests/servicestests/src/com/android/server/wm/TestIWindow.java
new file mode 100644
index 0000000..1514e69
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/wm/TestIWindow.java
@@ -0,0 +1,110 @@
+/*
+ * 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.server.wm;
+
+import com.android.internal.os.IResultReceiver;
+
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+import android.view.DragEvent;
+import android.view.IWindow;
+
+public class TestIWindow extends IWindow.Stub {
+    @Override
+    public void executeCommand(String command, String parameters,
+            ParcelFileDescriptor descriptor)
+            throws RemoteException {
+
+    }
+
+    @Override
+    public void resized(Rect frame, Rect overscanInsets, Rect contentInsets, Rect visibleInsets,
+            Rect stableInsets, Rect outsets, boolean reportDraw, Configuration newConfig,
+            Rect backDropFrame, boolean forceLayout, boolean alwaysConsumeNavBar)
+            throws RemoteException {
+
+    }
+
+    @Override
+    public void moved(int newX, int newY) throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchAppVisibility(boolean visible) throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchGetNewSurface() throws RemoteException {
+
+    }
+
+    @Override
+    public void windowFocusChanged(boolean hasFocus, boolean inTouchMode)
+            throws RemoteException {
+
+    }
+
+    @Override
+    public void closeSystemDialogs(String reason) throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep,
+            boolean sync)
+            throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchWallpaperCommand(String action, int x, int y, int z, Bundle extras,
+            boolean sync) throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchDragEvent(DragEvent event) throws RemoteException {
+
+    }
+
+    @Override
+    public void updatePointerIcon(float x, float y) throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchSystemUiVisibilityChanged(int seq, int globalVisibility, int localValue,
+            int localChanges) throws RemoteException {
+
+    }
+
+    @Override
+    public void dispatchWindowShown() throws RemoteException {
+
+    }
+
+    @Override
+    public void requestAppKeyboardShortcuts(IResultReceiver receiver, int deviceId)
+            throws RemoteException {
+
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java
new file mode 100644
index 0000000..936949e
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java
@@ -0,0 +1,711 @@
+/*
+ * 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.server.wm;
+
+import com.android.internal.policy.IShortcutService;
+
+import android.content.Context;
+import android.content.res.CompatibilityInfo;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.Display;
+import android.view.IWindowManager;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.WindowManagerPolicy;
+import android.view.animation.Animation;
+
+import java.io.PrintWriter;
+
+import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW;
+import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
+import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ABOVE_SUB_PANEL;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL;
+import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS;
+import static android.view.WindowManager.LayoutParams.TYPE_DISPLAY_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
+import static android.view.WindowManager.LayoutParams.TYPE_DRAG;
+import static android.view.WindowManager.LayoutParams.TYPE_DREAM;
+import static android.view.WindowManager.LayoutParams.TYPE_INPUT_CONSUMER;
+import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
+import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
+import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG;
+import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_SCRIM;
+import static android.view.WindowManager.LayoutParams.TYPE_MAGNIFICATION_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
+import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
+import static android.view.WindowManager.LayoutParams.TYPE_PHONE;
+import static android.view.WindowManager.LayoutParams.TYPE_POINTER;
+import static android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
+import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION;
+import static android.view.WindowManager.LayoutParams.TYPE_QS_DIALOG;
+import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT;
+import static android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR;
+import static android.view.WindowManager.LayoutParams.TYPE_SECURE_SYSTEM_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
+import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL;
+import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL;
+import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
+import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
+import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
+import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
+import static android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION;
+import static android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION_STARTING;
+import static android.view.WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
+
+public class TestWindowManagerPolicy implements WindowManagerPolicy {
+    private static final String TAG = "TestWindowManagerPolicy";
+
+    @Override
+    public void registerShortcutKey(long shortcutCode, IShortcutService shortcutKeyReceiver)
+            throws RemoteException {
+
+    }
+
+    @Override
+    public void init(Context context, IWindowManager windowManager,
+            WindowManagerFuncs windowManagerFuncs) {
+
+    }
+
+    @Override
+    public boolean isDefaultOrientationForced() {
+        return false;
+    }
+
+    @Override
+    public void setInitialDisplaySize(Display display, int width, int height, int density) {
+
+    }
+
+    @Override
+    public void setDisplayOverscan(Display display, int left, int top, int right, int bottom) {
+
+    }
+
+    @Override
+    public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp) {
+        return 0;
+    }
+
+    @Override
+    public boolean checkShowToOwnerOnly(WindowManager.LayoutParams attrs) {
+        return false;
+    }
+
+    @Override
+    public void adjustWindowParamsLw(WindowManager.LayoutParams attrs) {
+
+    }
+
+    @Override
+    public void adjustConfigurationLw(Configuration config, int keyboardPresence,
+            int navigationPresence) {
+
+    }
+
+    @Override
+    public int windowTypeToLayerLw(int type) {
+        // TODO: figure-out a good way to keep this in-sync with PhoneWindowManager...sigh!
+        if (type >= FIRST_APPLICATION_WINDOW && type <= LAST_APPLICATION_WINDOW) {
+            return 2;
+        }
+        switch (type) {
+            case TYPE_PRIVATE_PRESENTATION:
+                return 2;
+            case TYPE_WALLPAPER:
+                // wallpaper is at the bottom, though the window manager may move it.
+                return 2;
+            case TYPE_DOCK_DIVIDER:
+                return 2;
+            case TYPE_QS_DIALOG:
+                return 2;
+            case TYPE_PHONE:
+                return 3;
+            case TYPE_SEARCH_BAR:
+            case TYPE_VOICE_INTERACTION_STARTING:
+                return 4;
+            case TYPE_VOICE_INTERACTION:
+                // voice interaction layer is almost immediately above apps.
+                return 5;
+            case TYPE_INPUT_CONSUMER:
+                return 6;
+            case TYPE_SYSTEM_DIALOG:
+                return 7;
+            case TYPE_TOAST:
+                // toasts and the plugged-in battery thing
+                return 8;
+            case TYPE_PRIORITY_PHONE:
+                // SIM errors and unlock.  Not sure if this really should be in a high layer.
+                return 9;
+            case TYPE_DREAM:
+                // used for Dreams (screensavers with TYPE_DREAM windows)
+                return 10;
+            case TYPE_SYSTEM_ALERT:
+                // like the ANR / app crashed dialogs
+                return 11;
+            case TYPE_INPUT_METHOD:
+                // on-screen keyboards and other such input method user interfaces go here.
+                return 12;
+            case TYPE_INPUT_METHOD_DIALOG:
+                // on-screen keyboards and other such input method user interfaces go here.
+                return 13;
+            case TYPE_KEYGUARD_SCRIM:
+                // the safety window that shows behind keyguard while keyguard is starting
+                return 14;
+            case TYPE_STATUS_BAR_SUB_PANEL:
+                return 15;
+            case TYPE_STATUS_BAR:
+                return 16;
+            case TYPE_STATUS_BAR_PANEL:
+                return 17;
+            case TYPE_KEYGUARD_DIALOG:
+                return 18;
+            case TYPE_VOLUME_OVERLAY:
+                // the on-screen volume indicator and controller shown when the user
+                // changes the device volume
+                return 19;
+            case TYPE_SYSTEM_OVERLAY:
+                // the on-screen volume indicator and controller shown when the user
+                // changes the device volume
+                return 20;
+            case TYPE_NAVIGATION_BAR:
+                // the navigation bar, if available, shows atop most things
+                return 21;
+            case TYPE_NAVIGATION_BAR_PANEL:
+                // some panels (e.g. search) need to show on top of the navigation bar
+                return 22;
+            case TYPE_SCREENSHOT:
+                // screenshot selection layer shouldn't go above system error, but it should cover
+                // navigation bars at the very least.
+                return 23;
+            case TYPE_SYSTEM_ERROR:
+                // system-level error dialogs
+                return 24;
+            case TYPE_MAGNIFICATION_OVERLAY:
+                // used to highlight the magnified portion of a display
+                return 25;
+            case TYPE_DISPLAY_OVERLAY:
+                // used to simulate secondary display devices
+                return 26;
+            case TYPE_DRAG:
+                // the drag layer: input for drag-and-drop is associated with this window,
+                // which sits above all other focusable windows
+                return 27;
+            case TYPE_ACCESSIBILITY_OVERLAY:
+                // overlay put by accessibility services to intercept user interaction
+                return 28;
+            case TYPE_SECURE_SYSTEM_OVERLAY:
+                return 29;
+            case TYPE_BOOT_PROGRESS:
+                return 30;
+            case TYPE_POINTER:
+                // the (mouse) pointer layer
+                return 31;
+        }
+        Log.e(TAG, "Unknown window type: " + type);
+        return 2;
+    }
+
+    @Override
+    public int subWindowTypeToLayerLw(int type) {
+        // TODO: figure-out a good way to keep this in-sync with PhoneWindowManager...
+        switch (type) {
+            case TYPE_APPLICATION_PANEL:
+            case TYPE_APPLICATION_ATTACHED_DIALOG:
+                return 1;
+            case TYPE_APPLICATION_MEDIA:
+                return -2;
+            case TYPE_APPLICATION_MEDIA_OVERLAY:
+                return -1;
+            case TYPE_APPLICATION_SUB_PANEL:
+                return 2;
+            case TYPE_APPLICATION_ABOVE_SUB_PANEL:
+                return 3;
+        }
+        Log.e(TAG, "Unknown sub-window type: " + type);
+        return 0;
+    }
+
+    @Override
+    public int getMaxWallpaperLayer() {
+        return 0;
+    }
+
+    @Override
+    public int getNonDecorDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode) {
+        return 0;
+    }
+
+    @Override
+    public int getNonDecorDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode) {
+        return 0;
+    }
+
+    @Override
+    public int getConfigDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode) {
+        return 0;
+    }
+
+    @Override
+    public int getConfigDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode) {
+        return 0;
+    }
+
+    @Override
+    public boolean isForceHiding(WindowManager.LayoutParams attrs) {
+        return false;
+    }
+
+    @Override
+    public boolean isKeyguardHostWindow(WindowManager.LayoutParams attrs) {
+        return false;
+    }
+
+    @Override
+    public boolean canBeForceHidden(WindowState win,
+            WindowManager.LayoutParams attrs) {
+        return false;
+    }
+
+    @Override
+    public WindowState getWinShowWhenLockedLw() {
+        return null;
+    }
+
+    @Override
+    public View addStartingWindow(IBinder appToken, String packageName, int theme,
+            CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon,
+            int logo, int windowFlags, Configuration overrideConfig) {
+        return null;
+    }
+
+    @Override
+    public void removeStartingWindow(IBinder appToken, View window) {
+
+    }
+
+    @Override
+    public int prepareAddWindowLw(WindowState win,
+            WindowManager.LayoutParams attrs) {
+        return 0;
+    }
+
+    @Override
+    public void removeWindowLw(WindowState win) {
+
+    }
+
+    @Override
+    public int selectAnimationLw(WindowState win, int transit) {
+        return 0;
+    }
+
+    @Override
+    public void selectRotationAnimationLw(int[] anim) {
+
+    }
+
+    @Override
+    public boolean validateRotationAnimationLw(int exitAnimId, int enterAnimId,
+            boolean forceDefault) {
+        return false;
+    }
+
+    @Override
+    public Animation createForceHideEnterAnimation(boolean onWallpaper,
+            boolean goingToNotificationShade) {
+        return null;
+    }
+
+    @Override
+    public Animation createForceHideWallpaperExitAnimation(boolean goingToNotificationShade) {
+        return null;
+    }
+
+    @Override
+    public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
+        return 0;
+    }
+
+    @Override
+    public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) {
+        return 0;
+    }
+
+    @Override
+    public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event,
+            int policyFlags) {
+        return 0;
+    }
+
+    @Override
+    public KeyEvent dispatchUnhandledKey(WindowState win, KeyEvent event,
+            int policyFlags) {
+        return null;
+    }
+
+    @Override
+    public void beginLayoutLw(boolean isDefaultDisplay, int displayWidth, int displayHeight,
+            int displayRotation, int uiMode) {
+
+    }
+
+    @Override
+    public int getSystemDecorLayerLw() {
+        return 0;
+    }
+
+    @Override
+    public void getContentRectLw(Rect r) {
+
+    }
+
+    @Override
+    public void layoutWindowLw(WindowState win,
+            WindowState attached) {
+
+    }
+
+    @Override
+    public boolean getInsetHintLw(WindowManager.LayoutParams attrs, Rect taskBounds,
+            int displayRotation, int displayWidth, int displayHeight, Rect outContentInsets,
+            Rect outStableInsets, Rect outOutsets) {
+        return false;
+    }
+
+    @Override
+    public void finishLayoutLw() {
+
+    }
+
+    @Override
+    public void beginPostLayoutPolicyLw(int displayWidth, int displayHeight) {
+
+    }
+
+    @Override
+    public void applyPostLayoutPolicyLw(WindowState win,
+            WindowManager.LayoutParams attrs, WindowState attached) {
+
+    }
+
+    @Override
+    public int finishPostLayoutPolicyLw() {
+        return 0;
+    }
+
+    @Override
+    public boolean allowAppAnimationsLw() {
+        return false;
+    }
+
+    @Override
+    public int focusChangedLw(WindowState lastFocus,
+            WindowState newFocus) {
+        return 0;
+    }
+
+    @Override
+    public void startedWakingUp() {
+
+    }
+
+    @Override
+    public void finishedWakingUp() {
+
+    }
+
+    @Override
+    public void startedGoingToSleep(int why) {
+
+    }
+
+    @Override
+    public void finishedGoingToSleep(int why) {
+
+    }
+
+    @Override
+    public void screenTurningOn(ScreenOnListener screenOnListener) {
+
+    }
+
+    @Override
+    public void screenTurnedOn() {
+
+    }
+
+    @Override
+    public void screenTurnedOff() {
+
+    }
+
+    @Override
+    public boolean isScreenOn() {
+        return false;
+    }
+
+    @Override
+    public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
+
+    }
+
+    @Override
+    public void notifyCameraLensCoverSwitchChanged(long whenNanos, boolean lensCovered) {
+
+    }
+
+    @Override
+    public void enableKeyguard(boolean enabled) {
+
+    }
+
+    @Override
+    public void exitKeyguardSecurely(OnKeyguardExitResult callback) {
+
+    }
+
+    @Override
+    public boolean isKeyguardLocked() {
+        return false;
+    }
+
+    @Override
+    public boolean isKeyguardSecure(int userId) {
+        return false;
+    }
+
+    @Override
+    public boolean isKeyguardShowingOrOccluded() {
+        return false;
+    }
+
+    @Override
+    public boolean isKeyguardShowingAndNotOccluded() {
+        return false;
+    }
+
+    @Override
+    public boolean inKeyguardRestrictedKeyInputMode() {
+        return false;
+    }
+
+    @Override
+    public void dismissKeyguardLw() {
+
+    }
+
+    @Override
+    public void notifyActivityDrawnForKeyguardLw() {
+
+    }
+
+    @Override
+    public boolean isKeyguardDrawnLw() {
+        return false;
+    }
+
+    @Override
+    public int rotationForOrientationLw(int orientation,
+            int lastRotation) {
+        return 0;
+    }
+
+    @Override
+    public boolean rotationHasCompatibleMetricsLw(int orientation,
+            int rotation) {
+        return false;
+    }
+
+    @Override
+    public void setRotationLw(int rotation) {
+
+    }
+
+    @Override
+    public void setSafeMode(boolean safeMode) {
+
+    }
+
+    @Override
+    public void systemReady() {
+
+    }
+
+    @Override
+    public void systemBooted() {
+
+    }
+
+    @Override
+    public void showBootMessage(CharSequence msg, boolean always) {
+
+    }
+
+    @Override
+    public void hideBootMessages() {
+
+    }
+
+    @Override
+    public void userActivity() {
+
+    }
+
+    @Override
+    public void enableScreenAfterBoot() {
+
+    }
+
+    @Override
+    public void setCurrentOrientationLw(int newOrientation) {
+
+    }
+
+    @Override
+    public boolean performHapticFeedbackLw(WindowState win, int effectId,
+            boolean always) {
+        return false;
+    }
+
+    @Override
+    public void keepScreenOnStartedLw() {
+
+    }
+
+    @Override
+    public void keepScreenOnStoppedLw() {
+
+    }
+
+    @Override
+    public int getUserRotationMode() {
+        return 0;
+    }
+
+    @Override
+    public void setUserRotationMode(int mode,
+            int rotation) {
+
+    }
+
+    @Override
+    public int adjustSystemUiVisibilityLw(int visibility) {
+        return 0;
+    }
+
+    @Override
+    public boolean hasNavigationBar() {
+        return false;
+    }
+
+    @Override
+    public void lockNow(Bundle options) {
+
+    }
+
+    @Override
+    public void setLastInputMethodWindowLw(WindowState ime,
+            WindowState target) {
+
+    }
+
+    @Override
+    public void showRecentApps(boolean fromHome) {
+
+    }
+
+    @Override
+    public void showGlobalActions() {
+
+    }
+
+    @Override
+    public int getInputMethodWindowVisibleHeightLw() {
+        return 0;
+    }
+
+    @Override
+    public void setCurrentUserLw(int newUserId) {
+
+    }
+
+    @Override
+    public void dump(String prefix, PrintWriter writer, String[] args) {
+
+    }
+
+    @Override
+    public boolean canMagnifyWindow(int windowType) {
+        return false;
+    }
+
+    @Override
+    public boolean isTopLevelWindow(int windowType) {
+        return false;
+    }
+
+    @Override
+    public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
+
+    }
+
+    @Override
+    public void getStableInsetsLw(int displayRotation, int displayWidth, int displayHeight,
+            Rect outInsets) {
+
+    }
+
+    @Override
+    public boolean isNavBarForcedShownLw(WindowState win) {
+        return false;
+    }
+
+    @Override
+    public void getNonDecorInsetsLw(int displayRotation, int displayWidth, int displayHeight,
+            Rect outInsets) {
+
+    }
+
+    @Override
+    public boolean isDockSideAllowed(int dockSide) {
+        return false;
+    }
+
+    @Override
+    public void onConfigurationChanged() {
+
+    }
+
+    @Override
+    public boolean shouldRotateSeamlessly(int oldRotation, int newRotation) {
+        return false;
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowContainerTests.java
new file mode 100644
index 0000000..bd7c0b3
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowContainerTests.java
@@ -0,0 +1,175 @@
+/*
+ * 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.server.wm;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.Comparator;
+
+/**
+ * Test class for {@link WindowContainer}.
+ *
+ * Build: mmma -j32 frameworks/base/services/tests/servicestests
+ * Install: adb install -r out/target/product/marlin/data/app/FrameworksServicesTests/FrameworksServicesTests.apk
+ * Run: adb shell am instrument -w -e class com.android.server.wm.WindowContainerTests com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
+ */
+@SmallTest
+public class WindowContainerTests extends AndroidTestCase {
+
+    public void testCreation() throws Exception {
+        final TestWindowContainer w = new TestWindowContainer();
+        assertNull("window must have no parent", w.getParentWindow());
+        assertEquals("window must have no children", 0, w.getChildrenCount());
+    }
+
+    public void testAdd() throws Exception {
+        final TestWindowContainer root = new TestWindowContainer();
+
+        final TestWindowContainer layer1 = root.addChildWindow(1);
+        final TestWindowContainer secondLayer1 = root.addChildWindow(1);
+        final TestWindowContainer layer2 = root.addChildWindow(2);
+        final TestWindowContainer layerNeg1 = root.addChildWindow(-1);
+        final TestWindowContainer layerNeg2 = root.addChildWindow(-2);
+        final TestWindowContainer secondLayerNeg1 = root.addChildWindow(-1);
+        final TestWindowContainer layer0 = root.addChildWindow(0);
+
+        assertEquals(7, root.getChildrenCount());
+
+        assertEquals(root, layer1.getParentWindow());
+        assertEquals(root, secondLayer1.getParentWindow());
+        assertEquals(root, layer2.getParentWindow());
+        assertEquals(root, layerNeg1.getParentWindow());
+        assertEquals(root, layerNeg2.getParentWindow());
+        assertEquals(root, secondLayerNeg1.getParentWindow());
+        assertEquals(root, layer0.getParentWindow());
+
+        assertEquals(layerNeg2, root.getChildAt(0));
+        assertEquals(secondLayerNeg1, root.getChildAt(1));
+        assertEquals(layerNeg1, root.getChildAt(2));
+        assertEquals(layer0, root.getChildAt(3));
+        assertEquals(layer1, root.getChildAt(4));
+        assertEquals(secondLayer1, root.getChildAt(5));
+        assertEquals(layer2, root.getChildAt(6));
+    }
+
+    public void testHasChild() throws Exception {
+        final TestWindowContainer root = new TestWindowContainer();
+
+        final TestWindowContainer child1 = root.addChildWindow(1);
+        final TestWindowContainer child2 = root.addChildWindow(1);
+        final TestWindowContainer child11 = child1.addChildWindow(1);
+        final TestWindowContainer child12 = child1.addChildWindow(1);
+        final TestWindowContainer child21 = child2.addChildWindow(1);
+
+        assertEquals(2, root.getChildrenCount());
+        assertEquals(2, child1.getChildrenCount());
+        assertEquals(1, child2.getChildrenCount());
+
+        assertTrue(root.hasChild(child1));
+        assertTrue(root.hasChild(child2));
+        assertTrue(root.hasChild(child11));
+        assertTrue(root.hasChild(child12));
+        assertTrue(root.hasChild(child21));
+
+        assertTrue(child1.hasChild(child11));
+        assertTrue(child1.hasChild(child12));
+        assertFalse(child1.hasChild(child21));
+
+        assertTrue(child2.hasChild(child21));
+        assertFalse(child2.hasChild(child11));
+        assertFalse(child2.hasChild(child12));
+   }
+
+    public void testRemove() throws Exception {
+        final TestWindowContainer root = new TestWindowContainer();
+
+        final TestWindowContainer child1 = root.addChildWindow(1);
+        final TestWindowContainer child2 = root.addChildWindow(1);
+        final TestWindowContainer child11 = child1.addChildWindow(1);
+        final TestWindowContainer child12 = child1.addChildWindow(1);
+        final TestWindowContainer child21 = child2.addChildWindow(1);
+
+        child12.remove();
+        assertNull(child12.getParentWindow());
+        assertEquals(1, child1.getChildrenCount());
+        assertFalse(child1.hasChild(child12));
+        assertFalse(root.hasChild(child12));
+
+        child2.remove();
+        assertNull(child2.getParentWindow());
+        assertNull(child21.getParentWindow());
+        assertEquals(0, child2.getChildrenCount());
+        assertEquals(1, root.getChildrenCount());
+        assertFalse(root.hasChild(child2));
+        assertFalse(root.hasChild(child21));
+
+        assertTrue(root.hasChild(child1));
+        assertTrue(root.hasChild(child11));
+
+        root.remove();
+        assertEquals(0, root.getChildrenCount());
+    }
+
+    /* Used so we can gain access to some protected members of the {@link WindowContainer} class */
+    private class TestWindowContainer extends WindowContainer {
+        private final int mLayer;
+
+        /**
+         * Compares 2 window layers and returns -1 if the first is lesser than the second in terms
+         * of z-order and 1 otherwise.
+         */
+        private final Comparator<WindowContainer> mWindowSubLayerComparator = (w1, w2) -> {
+            final int layer1 = ((TestWindowContainer)w1).mLayer;
+            final int layer2 = ((TestWindowContainer)w2).mLayer;
+            if (layer1 < layer2 || (layer1 == layer2 && layer2 < 0 )) {
+                // We insert the child window into the list ordered by the mLayer.
+                // For same layers, the negative one should go below others; the positive one should
+                // go above others.
+                return -1;
+            }
+            return 1;
+        };
+
+        TestWindowContainer() {
+            mLayer = 0;
+        }
+
+        TestWindowContainer(int layer) {
+            mLayer = layer;
+        }
+
+        TestWindowContainer getParentWindow() {
+            return (TestWindowContainer) getParent();
+        }
+
+        int getChildrenCount() {
+            return mChildren.size();
+        }
+
+        TestWindowContainer addChildWindow(int layer) {
+            TestWindowContainer child = new TestWindowContainer(layer);
+            addChild(child, mWindowSubLayerComparator);
+            return child;
+        }
+
+        TestWindowContainer getChildAt(int index) {
+            return (TestWindowContainer) mChildren.get(index);
+        }
+    }
+
+}
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java
new file mode 100644
index 0000000..64de15d
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java
@@ -0,0 +1,156 @@
+/*
+ * 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.server.wm;
+
+import android.content.Context;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.IWindow;
+import android.view.WindowManager;
+import android.view.WindowManagerPolicy;
+
+import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
+
+/**
+ * Tests for the {@link WindowState} class.
+ *
+ * Build: mmma -j32 frameworks/base/services/tests/servicestests
+ * Install: adb install -r out/target/product/angler/data/app/FrameworksServicesTests/FrameworksServicesTests.apk
+ * Run: adb shell am instrument -w -e class com.android.server.wm.WindowStateTests com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
+ */
+@SmallTest
+public class WindowStateTests extends AndroidTestCase {
+
+    private static WindowManagerService sWm = null;
+    private WindowToken mWindowToken;
+    private final WindowManagerPolicy mPolicy = new TestWindowManagerPolicy();
+    private final IWindow mIWindow = new TestIWindow();
+
+    @Override
+    public void setUp() throws Exception {
+        final Context context = getContext();
+//        final InputManagerService im = new InputManagerService(context);
+        if (sWm == null) {
+            // We only want to do this once for the test process as we don't want WM to try to
+            // register a bunch of local services again.
+            sWm = WindowManagerService.main(context, /*im*/ null, true, false, false, mPolicy);
+        }
+        mWindowToken = new WindowToken(sWm, null, 0, false);
+    }
+
+    public void testIsParentWindowHidden() throws Exception {
+        final WindowState parentWindow = createWindow(null, TYPE_APPLICATION);
+        final WindowState child1 = createWindow(parentWindow, FIRST_SUB_WINDOW);
+        final WindowState child2 = createWindow(parentWindow, FIRST_SUB_WINDOW);
+
+        assertFalse(parentWindow.mHidden);
+        assertFalse(parentWindow.isParentWindowHidden());
+        assertFalse(child1.isParentWindowHidden());
+        assertFalse(child2.isParentWindowHidden());
+
+        parentWindow.mHidden = true;
+        assertFalse(parentWindow.isParentWindowHidden());
+        assertTrue(child1.isParentWindowHidden());
+        assertTrue(child2.isParentWindowHidden());
+    }
+
+    public void testIsChildWindow() throws Exception {
+        final WindowState parentWindow = createWindow(null, TYPE_APPLICATION);
+        final WindowState child1 = createWindow(parentWindow, FIRST_SUB_WINDOW);
+        final WindowState child2 = createWindow(parentWindow, FIRST_SUB_WINDOW);
+        final WindowState randomWindow = createWindow(null, TYPE_APPLICATION);
+
+        assertFalse(parentWindow.isChildWindow());
+        assertTrue(child1.isChildWindow());
+        assertTrue(child2.isChildWindow());
+        assertFalse(randomWindow.isChildWindow());
+    }
+
+    public void testHasChild() throws Exception {
+        final WindowState win1 = createWindow(null, TYPE_APPLICATION);
+        final WindowState win11 = createWindow(win1, FIRST_SUB_WINDOW);
+        final WindowState win12 = createWindow(win1, FIRST_SUB_WINDOW);
+        final WindowState win2 = createWindow(null, TYPE_APPLICATION);
+        final WindowState win21 = createWindow(win2, FIRST_SUB_WINDOW);
+        final WindowState randomWindow = createWindow(null, TYPE_APPLICATION);
+
+        assertTrue(win1.hasChild(win11));
+        assertTrue(win1.hasChild(win12));
+        assertTrue(win2.hasChild(win21));
+
+        assertFalse(win1.hasChild(win21));
+        assertFalse(win1.hasChild(randomWindow));
+
+        assertFalse(win2.hasChild(win11));
+        assertFalse(win2.hasChild(win12));
+        assertFalse(win2.hasChild(randomWindow));
+    }
+
+    public void testGetBottomChild() throws Exception {
+        final WindowState parentWindow = createWindow(null, TYPE_APPLICATION);
+        assertNull(parentWindow.getBottomChild());
+
+        final WindowState child1 = createWindow(parentWindow, TYPE_APPLICATION_PANEL);
+        assertEquals(child1, parentWindow.getBottomChild());
+
+        final WindowState child2 = createWindow(parentWindow, TYPE_APPLICATION_PANEL);
+        // Since child1 and child2 are at the same layer, then child2 is expect to be added on top
+        // on child1
+        assertEquals(child1, parentWindow.getBottomChild());
+
+        final WindowState child3 = createWindow(parentWindow, TYPE_APPLICATION_MEDIA_OVERLAY);
+        // Since child3 is a negative layer, we would expect it to be added below current children
+        // with positive layers.
+        assertEquals(child3, parentWindow.getBottomChild());
+
+        final WindowState child4 = createWindow(parentWindow, TYPE_APPLICATION_MEDIA_OVERLAY);
+        // We would also expect additional negative layers to be added below existing negative
+        // layers.
+        assertEquals(child4, parentWindow.getBottomChild());
+    }
+
+    public void testGetParentWindow() throws Exception {
+        final WindowState parentWindow = createWindow(null, TYPE_APPLICATION);
+        final WindowState child1 = createWindow(parentWindow, FIRST_SUB_WINDOW);
+        final WindowState child2 = createWindow(parentWindow, FIRST_SUB_WINDOW);
+
+        assertNull(parentWindow.getParentWindow());
+        assertEquals(parentWindow, child1.getParentWindow());
+        assertEquals(parentWindow, child2.getParentWindow());
+    }
+
+    public void testGetTopParentWindow() throws Exception {
+        final WindowState root = createWindow(null, TYPE_APPLICATION);
+        final WindowState child1 = createWindow(root, FIRST_SUB_WINDOW);
+        final WindowState child2 = createWindow(child1, FIRST_SUB_WINDOW);
+
+        assertEquals(root, root.getTopParentWindow());
+        assertEquals(root, child1.getTopParentWindow());
+        assertEquals(child1, child2.getParentWindow());
+        assertEquals(root, child2.getTopParentWindow());
+    }
+
+    private WindowState createWindow(WindowState parent, int type) {
+        final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(type);
+
+        return new WindowState(sWm, null, mIWindow, mWindowToken, parent, 0, 0, attrs, 0,
+                sWm.getDefaultDisplayContentLocked(), 0);
+    }
+}
diff --git a/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java b/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java
index f89c4e4..ce7adfa 100644
--- a/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java
+++ b/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java
@@ -861,8 +861,8 @@
         if (b1 == null && b2 == null) {
             return; // pass
         }
-        assertNotNull(b1);
-        assertNotNull(b2);
+        assertNotNull("b1 is null but b2 is not", b1);
+        assertNotNull("b2 is null but b1 is not", b2);
 
         // HashSet makes the error message readable.
         assertEquals(set(b1.keySet()), set(b2.keySet()));
@@ -973,6 +973,9 @@
 
         waitOnMainThread();
 
+        // TODO unregister doesn't work well during unit tests.  Figure out and fix it.
+        // launcherApps.unregisterCallback(asserter.getMockCallback());
+
         return asserter;
     }
 }
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index eb3c665..69cf1a2 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -838,6 +838,10 @@
                     && mAppWidgetManager.isBoundWidgetPackage(packageName, userId)) {
                 return false;
             }
+
+            if (isDeviceProvisioningPackage(packageName)) {
+                return false;
+            }
         }
 
         if (!isAppIdleUnfiltered(packageName, userId, elapsedRealtime)) {
@@ -930,6 +934,16 @@
         return dpm.packageHasActiveAdmins(packageName, userId);
     }
 
+    /**
+     * Returns {@code true} if the supplied package is the device provisioning app. Otherwise,
+     * returns {@code false}.
+     */
+    private boolean isDeviceProvisioningPackage(String packageName) {
+        String deviceProvisioningPackage = getContext().getResources().getString(
+                com.android.internal.R.string.config_deviceProvisioningPackage);
+        return deviceProvisioningPackage != null && deviceProvisioningPackage.equals(packageName);
+    }
+
     private boolean isCarrierApp(String packageName) {
         synchronized (mLock) {
             if (!mHaveCarrierPrivilegedApps) {
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
index 3779d87..e89585c 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
@@ -696,8 +696,13 @@
         Slog.w(TAG, "Recognition aborted");
         MetricsLogger.count(mContext, "sth_recognition_aborted", 1);
         ModelData modelData = getModelDataForLocked(event.soundModelHandle);
-        if (modelData != null) {
+        if (modelData != null && modelData.isModelStarted()) {
             modelData.setStopped();
+            try {
+                modelData.getCallback().onRecognitionPaused();
+            } catch (RemoteException e) {
+                Slog.w(TAG, "RemoteException in onRecognitionPaused", e);
+            }
         }
     }
 
diff --git a/telecomm/java/android/telecom/ConferenceParticipant.java b/telecomm/java/android/telecom/ConferenceParticipant.java
index db0f151..20b04eb 100644
--- a/telecomm/java/android/telecom/ConferenceParticipant.java
+++ b/telecomm/java/android/telecom/ConferenceParticipant.java
@@ -114,13 +114,13 @@
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("[ConferenceParticipant Handle: ");
-        sb.append(mHandle);
+        sb.append(Log.pii(mHandle));
         sb.append(" DisplayName: ");
-        sb.append(mDisplayName);
+        sb.append(Log.pii(mDisplayName));
         sb.append(" Endpoint: ");
-        sb.append(mEndpoint);
+        sb.append(Log.pii(mEndpoint));
         sb.append(" State: ");
-        sb.append(mState);
+        sb.append(Connection.stateToString(mState));
         sb.append("]");
         return sb.toString();
     }
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 766e930..ee055f4 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -370,8 +370,14 @@
      */
     public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 1<<5;
 
+    /**
+     * Indicates that the connection represents a downgraded IMS conference.
+     * @hide
+     */
+    public static final int PROPERTY_IS_DOWNGRADED_CONFERENCE = 1<<6;
+
     //**********************************************************************************************
-    // Next PROPERTY value: 1<<6
+    // Next PROPERTY value: 1<<7
     //**********************************************************************************************
 
     /**
@@ -407,11 +413,11 @@
 
     /**
      * Boolean connection extra key on a {@link Connection} which indicates that adding an
-     * additional call is disallowed when there is a video call in progress.
+     * additional call is disallowed.
      * @hide
      */
-    public static final String EXTRA_DISABLE_ADD_CALL_DURING_VIDEO_CALL =
-            "android.telecom.extra.DISABLE_ADD_CALL_DURING_VIDEO_CALL";
+    public static final String EXTRA_DISABLE_ADD_CALL =
+            "android.telecom.extra.DISABLE_ADD_CALL";
 
     /**
      * Connection event used to inform Telecom that it should play the on hold tone.  This is used
@@ -1551,6 +1557,8 @@
                 return "RINGING";
             case STATE_DIALING:
                 return "DIALING";
+            case STATE_PULLING_CALL:
+                return "PULLING_CALL";
             case STATE_ACTIVE:
                 return "ACTIVE";
             case STATE_HOLDING:
diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java
index fc7d741..0c75630 100644
--- a/telecomm/java/android/telecom/ConnectionService.java
+++ b/telecomm/java/android/telecom/ConnectionService.java
@@ -556,6 +556,9 @@
                 case Connection.STATE_DIALING:
                     mAdapter.setDialing(id);
                     break;
+                case Connection.STATE_PULLING_CALL:
+                    mAdapter.setPulling(id);
+                    break;
                 case Connection.STATE_DISCONNECTED:
                     // Handled in onDisconnected()
                     break;
diff --git a/telecomm/java/android/telecom/ConnectionServiceAdapter.java b/telecomm/java/android/telecom/ConnectionServiceAdapter.java
index c8cd3c0..df7d539 100644
--- a/telecomm/java/android/telecom/ConnectionServiceAdapter.java
+++ b/telecomm/java/android/telecom/ConnectionServiceAdapter.java
@@ -143,6 +143,21 @@
     }
 
     /**
+     * Sets a call's state to pulling (e.g. a call with {@link Connection#PROPERTY_IS_EXTERNAL_CALL}
+     * is being pulled to the local device.
+     *
+     * @param callId The unique ID of the call whose state is changing to dialing.
+     */
+    void setPulling(String callId) {
+        for (IConnectionServiceAdapter adapter : mAdapters) {
+            try {
+                adapter.setPulling(callId);
+            } catch (RemoteException e) {
+            }
+        }
+    }
+
+    /**
      * Sets a call's state to disconnected.
      *
      * @param callId The unique ID of the call whose state is changing to disconnected.
diff --git a/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java b/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java
index bf28feb..486f9d5 100644
--- a/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java
+++ b/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java
@@ -65,6 +65,7 @@
     private static final int MSG_REMOVE_EXTRAS = 25;
     private static final int MSG_ON_CONNECTION_EVENT = 26;
     private static final int MSG_SET_CONNECTION_PROPERTIES = 27;
+    private static final int MSG_SET_PULLING = 28;
 
     private final IConnectionServiceAdapter mDelegate;
 
@@ -101,6 +102,9 @@
                 case MSG_SET_DIALING:
                     mDelegate.setDialing((String) msg.obj);
                     break;
+                case MSG_SET_PULLING:
+                    mDelegate.setPulling((String) msg.obj);
+                    break;
                 case MSG_SET_DISCONNECTED: {
                     SomeArgs args = (SomeArgs) msg.obj;
                     try {
@@ -299,6 +303,11 @@
         }
 
         @Override
+        public void setPulling(String connectionId) {
+            mHandler.obtainMessage(MSG_SET_PULLING, connectionId).sendToTarget();
+        }
+
+        @Override
         public void setDisconnected(
                 String connectionId, DisconnectCause disconnectCause) {
             SomeArgs args = SomeArgs.obtain();
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index dbc2b0c..473e394 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -220,6 +220,7 @@
     private final Icon mIcon;
     private final Bundle mExtras;
     private boolean mIsEnabled;
+    private String mGroupId;
 
     /**
      * Helper class for creating a {@link PhoneAccount}.
@@ -236,6 +237,7 @@
         private Icon mIcon;
         private Bundle mExtras;
         private boolean mIsEnabled = false;
+        private String mGroupId = "";
 
         /**
          * Creates a builder with the specified {@link PhoneAccountHandle} and label.
@@ -263,6 +265,7 @@
             mIcon = phoneAccount.getIcon();
             mIsEnabled = phoneAccount.isEnabled();
             mExtras = phoneAccount.getExtras();
+            mGroupId = phoneAccount.getGroupId();
         }
 
         /**
@@ -387,6 +390,27 @@
         }
 
         /**
+         * Sets the group Id of the {@link PhoneAccount}. When a new {@link PhoneAccount} is
+         * registered to Telecom, it will replace another {@link PhoneAccount} that is already
+         * registered in Telecom and take on the current user defaults and enabled status. There can
+         * only be one {@link PhoneAccount} with a non-empty group number registered to Telecom at a
+         * time. By default, there is no group Id for a {@link PhoneAccount} (an empty String). Only
+         * grouped {@link PhoneAccount}s with the same {@link ConnectionService} can be replaced.
+         * @param groupId The group Id of the {@link PhoneAccount} that will replace any other
+         * registered {@link PhoneAccount} in Telecom with the same Group Id.
+         * @return The builder
+         * @hide
+         */
+        public Builder setGroupId(String groupId) {
+            if (groupId != null) {
+                mGroupId = groupId;
+            } else {
+                mGroupId = "";
+            }
+            return this;
+        }
+
+        /**
          * Creates an instance of a {@link PhoneAccount} based on the current builder settings.
          *
          * @return The {@link PhoneAccount}.
@@ -408,7 +432,8 @@
                     mShortDescription,
                     mSupportedUriSchemes,
                     mExtras,
-                    mIsEnabled);
+                    mIsEnabled,
+                    mGroupId);
         }
     }
 
@@ -423,7 +448,8 @@
             CharSequence shortDescription,
             List<String> supportedUriSchemes,
             Bundle extras,
-            boolean isEnabled) {
+            boolean isEnabled,
+            String groupId) {
         mAccountHandle = account;
         mAddress = address;
         mSubscriptionAddress = subscriptionAddress;
@@ -435,6 +461,7 @@
         mSupportedUriSchemes = Collections.unmodifiableList(supportedUriSchemes);
         mExtras = extras;
         mIsEnabled = isEnabled;
+        mGroupId = groupId;
     }
 
     public static Builder builder(
@@ -564,6 +591,21 @@
     }
 
     /**
+     * A non-empty {@link String} representing the group that A {@link PhoneAccount} is in or an
+     * empty {@link String} if the {@link PhoneAccount} is not in a group. If this
+     * {@link PhoneAccount} is in a group, this new {@link PhoneAccount} will replace a registered
+     * {@link PhoneAccount} that is in the same group. When the {@link PhoneAccount} is replaced,
+     * its user defined defaults and enabled status will also pass to this new {@link PhoneAccount}.
+     * Only {@link PhoneAccount}s that share the same {@link ConnectionService} can be replaced.
+     *
+     * @return A non-empty String Id if this {@link PhoneAccount} belongs to a group.
+     * @hide
+     */
+    public String getGroupId() {
+        return mGroupId;
+    }
+
+    /**
      * Determines if the {@link PhoneAccount} supports calls to/from addresses with a specified URI
      * scheme.
      *
@@ -644,6 +686,7 @@
         }
         out.writeByte((byte) (mIsEnabled ? 1 : 0));
         out.writeBundle(mExtras);
+        out.writeString(mGroupId);
     }
 
     public static final Creator<PhoneAccount> CREATOR
@@ -687,6 +730,7 @@
         }
         mIsEnabled = in.readByte() == 1;
         mExtras = in.readBundle();
+        mGroupId = in.readString();
     }
 
     @Override
@@ -704,6 +748,8 @@
         }
         sb.append(" Extras: ");
         sb.append(mExtras);
+        sb.append(" GroupId: ");
+        sb.append(Log.pii(mGroupId));
         sb.append("]");
         return sb.toString();
     }
diff --git a/telecomm/java/android/telecom/RemoteConnectionService.java b/telecomm/java/android/telecom/RemoteConnectionService.java
index 21a7706..306b3c1 100644
--- a/telecomm/java/android/telecom/RemoteConnectionService.java
+++ b/telecomm/java/android/telecom/RemoteConnectionService.java
@@ -118,6 +118,12 @@
         }
 
         @Override
+        public void setPulling(String callId) {
+            findConnectionForAction(callId, "setPulling")
+                    .setState(Connection.STATE_PULLING_CALL);
+        }
+
+        @Override
         public void setDisconnected(String callId, DisconnectCause disconnectCause) {
             if (mConnectionById.containsKey(callId)) {
                 findConnectionForAction(callId, "setDisconnected")
diff --git a/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl b/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl
index 9bc8ffe..3bf83ae 100644
--- a/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl
+++ b/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl
@@ -47,6 +47,8 @@
 
     void setDialing(String callId);
 
+    void setPulling(String callId);
+
     void setDisconnected(String callId, in DisconnectCause disconnectCause);
 
     void setOnHold(String callId);
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index f3882a9..d399b55 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -24,6 +24,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 
+import com.android.ims.ImsReasonInfo;
 import com.android.internal.telephony.ICarrierConfigLoader;
 
 /**
@@ -285,6 +286,16 @@
     public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_ENABLED_BOOL =
             "carrier_default_wfc_ims_roaming_enabled_bool";
 
+    /**
+     * Flag indicating whether failed calls due to no service should prompt the user to enable
+     * WIFI calling.  When {@code true}, if the user attempts to establish a call when there is no
+     * service available, they are connected to WIFI, and WIFI calling is disabled, a different
+     * call failure message will be used to encourage the user to enable WIFI calling.
+     * @hide
+     */
+    public static final String KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL =
+            "carrier_promote_wfc_on_call_fail_bool";
+
     /** Flag specifying whether provisioning is required for VOLTE. */
     public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
             = "carrier_volte_provisioning_required_bool";
@@ -392,6 +403,13 @@
             "always_show_emergency_alert_onoff_bool";
 
     /**
+     * The flag to disable cell broadcast severe alert when extreme alert is disabled.
+     * @hide
+     */
+    public static final String KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL =
+            "disable_severe_when_extreme_disabled_bool";
+
+    /**
      * The data call APN retry configuration for default type APN.
      * @hide
      */
@@ -679,6 +697,8 @@
     public static final String KEY_MMS_UA_PROF_TAG_NAME_STRING = "uaProfTagName";
     public static final String KEY_MMS_UA_PROF_URL_STRING = "uaProfUrl";
     public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
+    /** @hide */
+    public static final String KEY_MMS_CLOSE_CONNECTION_BOOL = "mmsCloseConnection";
 
     /**
      * If carriers require differentiate un-provisioned status: cold sim or out of credit sim
@@ -784,6 +804,13 @@
     public static final int CDMA_ROAMING_MODE_ANY = 2;
 
     /**
+     * Report IMEI as device id even if it's a CDMA/LTE phone.
+     *
+     * @hide
+     */
+    public static final String KEY_FORCE_IMEI_BOOL = "force_imei_bool";
+
+    /**
      * The families of Radio Access Technologies that will get clustered and ratcheted,
      * ie, we will report transitions up within the family, but not down until we change
      * cells.  This prevents flapping between base technologies and higher techs that are
@@ -825,11 +852,46 @@
             "allow_merge_wifi_calls_when_vowifi_off_bool";
 
     /**
-     * When true, indicates that adding a call is disabled when there is an ongoing video call.
+     * When true, indicates that adding a call is disabled when there is an ongoing video call
+     * or when there is an ongoing call on wifi which was downgraded from video and VoWifi is
+     * turned off.
      */
     public static final String KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL =
             "allow_add_call_during_video_call";
 
+    /**
+     * When true, indicates that the HD audio icon in the in-call screen should not be shown for
+     * VoWifi calls.
+     * @hide
+     */
+    public static final String KEY_WIFI_CALLS_CAN_BE_HD_AUDIO = "wifi_calls_can_be_hd_audio";
+
+    /**
+     * When true, indicates that the HD audio icon in the in-call screen should not be shown for
+     * video calls.
+     * @hide
+     */
+    public static final String KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO = "video_calls_can_be_hd_audio";
+
+    /**
+     * Defines operator-specific {@link com.android.ims.ImsReasonInfo} mappings.
+     *
+     * Format: "ORIGINAL_CODE|MESSAGE|NEW_CODE"
+     * Where {@code ORIGINAL_CODE} corresponds to a {@link ImsReasonInfo#getCode()} code,
+     * {@code MESSAGE} corresponds to an expected {@link ImsReasonInfo#getExtraMessage()} string,
+     * and {@code NEW_CODE} is the new {@code ImsReasonInfo#CODE_*} which this combination of
+     * original code and message shall be remapped to.
+     *
+     * Example: "501|call completion elsewhere|1014"
+     * When the {@link ImsReasonInfo#getCode()} is {@link ImsReasonInfo#CODE_USER_TERMINATED} and
+     * the {@link ImsReasonInfo#getExtraMessage()} is {@code "call completion elsewhere"},
+     * {@link ImsReasonInfo#CODE_ANSWERED_ELSEWHERE} shall be used as the {@link ImsReasonInfo}
+     * code instead.
+     * @hide
+     */
+    public static final String KEY_IMS_REASONINFO_MAPPING_STRING_ARRAY =
+            "ims_reasoninfo_mapping_string_array";
+
     /** The default value for every variable. */
     private final static PersistableBundle sDefaults;
 
@@ -847,6 +909,7 @@
         sDefaults.putBoolean(KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, false);
         sDefaults.putBoolean(KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL, false);
         sDefaults.putBoolean(KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_ENABLED_BOOL, false);
+        sDefaults.putBoolean(KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL, false);
         sDefaults.putInt(KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT, 2);
         sDefaults.putBoolean(KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL, false);
         sDefaults.putBoolean(KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL, false);
@@ -897,6 +960,7 @@
         sDefaults.putBoolean(KEY_ALLOW_ADDING_APNS_BOOL, true);
         sDefaults.putBoolean(KEY_BROADCAST_EMERGENCY_CALL_STATE_CHANGES_BOOL, false);
         sDefaults.putBoolean(KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL, false);
+        sDefaults.putBoolean(KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL, true);
         sDefaults.putString(KEY_CARRIER_DATA_CALL_RETRY_CONFIG_DEFAULT_STRING,
                 "default_randomization=2000,5000,10000,20000,40000,80000:5000,160000:5000,"
                         + "320000:5000,640000:5000,1280000:5000,1800000:5000");
@@ -949,6 +1013,7 @@
         sDefaults.putBoolean(KEY_MMS_SMS_DELIVERY_REPORT_ENABLED_BOOL, true);
         sDefaults.putBoolean(KEY_MMS_SUPPORT_HTTP_CHARSET_HEADER_BOOL, false);
         sDefaults.putBoolean(KEY_MMS_SUPPORT_MMS_CONTENT_DISPOSITION_BOOL, true);
+        sDefaults.putBoolean(KEY_MMS_CLOSE_CONNECTION_BOOL, false);
         sDefaults.putInt(KEY_MMS_ALIAS_MAX_CHARS_INT, 48);
         sDefaults.putInt(KEY_MMS_ALIAS_MIN_CHARS_INT, 2);
         sDefaults.putInt(KEY_MMS_HTTP_SOCKET_TIMEOUT_INT, 60 * 1000);
@@ -968,6 +1033,7 @@
         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);
+        sDefaults.putBoolean(KEY_FORCE_IMEI_BOOL, false);
         sDefaults.putInt(KEY_CDMA_ROAMING_MODE_INT, CDMA_ROAMING_MODE_RADIO_DEFAULT);
 
         // Carrier Signalling Receivers
@@ -985,6 +1051,10 @@
         sDefaults.putBoolean(KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL, false);
         sDefaults.putBoolean(KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL, true);
         sDefaults.putBoolean(KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL, true);
+        sDefaults.putBoolean(KEY_WIFI_CALLS_CAN_BE_HD_AUDIO, true);
+        sDefaults.putBoolean(KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO, true);
+
+        sDefaults.putStringArray(KEY_IMS_REASONINFO_MAPPING_STRING_ARRAY, null);
     }
 
     /**
diff --git a/telephony/java/android/telephony/DisconnectCause.java b/telephony/java/android/telephony/DisconnectCause.java
index 80ae4af..d7d4e84 100644
--- a/telephony/java/android/telephony/DisconnectCause.java
+++ b/telephony/java/android/telephony/DisconnectCause.java
@@ -206,6 +206,12 @@
      */
     public static final int ANSWERED_ELSEWHERE = 52;
 
+    /**
+     * The call was terminated because the maximum allowable number of calls has been reached.
+     * {@hide}
+     */
+    public static final int MAXIMUM_NUMBER_OF_CALLS_REACHED = 53;
+
     //*********************************************************************************************
     // When adding a disconnect type:
     // 1) Please assign the new type the next id value below.
@@ -214,14 +220,14 @@
     // 4) Update toString() with the newly added disconnect type.
     // 5) Update android.telecom.DisconnectCauseUtil with any mappings to a telecom.DisconnectCause.
     //
-    // NextId: 53
+    // NextId: 54
     //*********************************************************************************************
 
     /** Smallest valid value for call disconnect codes. */
     public static final int MINIMUM_VALID_VALUE = NOT_DISCONNECTED;
 
     /** Largest valid value for call disconnect codes. */
-    public static final int MAXIMUM_VALID_VALUE = ANSWERED_ELSEWHERE;
+    public static final int MAXIMUM_VALID_VALUE = MAXIMUM_NUMBER_OF_CALLS_REACHED;
 
     /** Private constructor to avoid class instantiation. */
     private DisconnectCause() {
@@ -335,6 +341,8 @@
             return "CALL_PULLED";
         case ANSWERED_ELSEWHERE:
             return "ANSWERED_ELSEWHERE";
+        case MAXIMUM_NUMBER_OF_CALLS_REACHED:
+            return "MAXIMUM_NUMER_OF_CALLS_REACHED";
         default:
             return "INVALID: " + cause;
         }
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index dc053bf..18772cc 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -5424,6 +5424,39 @@
     }
 
     /**
+     * Return the Preferred Roaming List Version
+     *
+     * Requires that the calling app has READ_PRIVILEGED_PHONE_STATE permission
+     *
+     * @return PRLVersion or null if error.
+     * @hide
+     */
+    public String getCdmaPrlVersion() {
+        return getCdmaPrlVersion(getDefaultSubscription());
+    }
+
+    /**
+     * Return the Preferred Roaming List Version
+     *
+     * Requires that the calling app has READ_PRIVILEGED_PHONE_STATE permission
+     *
+     * @param subId the subscription ID that this request applies to.
+     * @return PRLVersion or null if error.
+     * @hide
+     */
+    public String getCdmaPrlVersion(int subId) {
+        try {
+            ITelephony service = getITelephony();
+            if (service != null) {
+                return service.getCdmaPrlVersion(subId);
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error calling ITelephony#getCdmaPrlVersion", e);
+        }
+        return null;
+    }
+
+    /**
      * Get snapshot of Telephony histograms
      * @return List of Telephony histograms
      * Requires Permission:
@@ -5538,5 +5571,22 @@
         }
         return 0;
     }
+
+    /**
+     * Policy control of data connection. Usually used when data limit is passed.
+     * @param enabled True if enabling the data, otherwise disabling.
+     * @param subId sub id
+     * @hide
+     */
+    public void setPolicyDataEnabled(boolean enabled, int subId) {
+        try {
+            ITelephony service = getITelephony();
+            if (service != null) {
+                service.setPolicyDataEnabled(enabled, subId);
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error calling ITelephony#setPolicyDataEnabled", e);
+        }
+    }
 }
 
diff --git a/telephony/java/com/android/ims/ImsCallProfile.java b/telephony/java/com/android/ims/ImsCallProfile.java
index 65254d8..36abfc9 100644
--- a/telephony/java/com/android/ims/ImsCallProfile.java
+++ b/telephony/java/com/android/ims/ImsCallProfile.java
@@ -205,6 +205,14 @@
      */
     public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
 
+    /**
+     * Similar to {@link #EXTRA_CALL_RAT_TYPE}, except with a lowercase 'c'.  Used to ensure
+     * compatibility with modems that are non-compliant with the {@link #EXTRA_CALL_RAT_TYPE}
+     * extra key.  Should be removed when the non-compliant modems are fixed.
+     * @hide
+     */
+    public static final String EXTRA_CALL_RAT_TYPE_ALT = "callRadioTech";
+
     public int mServiceType;
     public int mCallType;
     public int mRestrictCause = CALL_RESTRICT_CAUSE_NONE;
diff --git a/telephony/java/com/android/ims/ImsExternalCallState.java b/telephony/java/com/android/ims/ImsExternalCallState.java
index 71c1837..da26073 100644
--- a/telephony/java/com/android/ims/ImsExternalCallState.java
+++ b/telephony/java/com/android/ims/ImsExternalCallState.java
@@ -19,6 +19,7 @@
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.telecom.Log;
 import android.telephony.Rlog;
 
 /*
@@ -130,7 +131,7 @@
     @Override
     public String toString() {
         return "ImsExternalCallState { mCallId = " + mCallId +
-                ", mAddress = " + mAddress +
+                ", mAddress = " + Log.pii(mAddress) +
                 ", mIsPullable = " + mIsPullable +
                 ", mCallState = " + mCallState +
                 ", mCallType = " + mCallType +
diff --git a/telephony/java/com/android/ims/ImsReasonInfo.java b/telephony/java/com/android/ims/ImsReasonInfo.java
index 9369b20..408ad31 100644
--- a/telephony/java/com/android/ims/ImsReasonInfo.java
+++ b/telephony/java/com/android/ims/ImsReasonInfo.java
@@ -25,6 +25,7 @@
  * @hide
  */
 public class ImsReasonInfo implements Parcelable {
+
     /**
      * Specific code of each types
      */
@@ -284,6 +285,19 @@
     public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402;
 
     /**
+     * The maximum number of calls allowed has been reached.  Used in a multi-endpoint scenario
+     * where the number of calls across all connected devices has reached the maximum.
+     */
+    public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403;
+
+    /**
+     * Similar to {@link #CODE_LOCAL_CALL_DECLINE}, except indicates that a remote device has
+     * declined the call.  Used in a multi-endpoint scenario where a remote device declined an
+     * incoming call.
+     */
+    public static final int CODE_REMOTE_CALL_DECLINE = 1404;
+
+    /**
      * Network string error messages.
      * mExtraMessage may have these values.
      */
diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java
index 8166e00..f01e4c0 100644
--- a/telephony/java/com/android/internal/telephony/DctConstants.java
+++ b/telephony/java/com/android/internal/telephony/DctConstants.java
@@ -105,6 +105,7 @@
     public static final int EVENT_DEVICE_PROVISIONED_CHANGE = BASE + 43;
     public static final int EVENT_REDIRECTION_DETECTED = BASE + 44;
     public static final int EVENT_PCO_DATA_RECEIVED = BASE + 45;
+    public static final int EVENT_SET_CARRIER_DATA_ENABLED = BASE + 46;
 
     /***** Constants *****/
 
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 2168b0e..7e7071e 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1107,6 +1107,16 @@
     String getEsn(int subId);
 
     /**
+    * Return the Preferred Roaming List Version
+    *
+    * Requires that the calling app has READ_PRIVILEGED_PHONE_STATE permission
+    * @param subId the subscription ID that this request applies to.
+    * @return PRLVersion or null if error.
+    * @hide
+    */
+    String getCdmaPrlVersion(int subId);
+
+    /**
      * Get snapshot of Telephony histograms
      * @return List of Telephony histograms
      * Requires Permission:
@@ -1158,4 +1168,12 @@
      * @hide
      */
     long getVtDataUsage();
+
+    /**
+     * Policy control of data connection. Usually used when data limit is passed.
+     * @param enabled True if enabling the data, otherwise disabling.
+     * @param subId Subscription index
+     * @hide
+     */
+    void setPolicyDataEnabled(boolean enabled, int subId);
 }
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 330dbab..4eae4ab 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -752,6 +752,13 @@
         throw new UnsupportedOperationException();
     }
 
+    /** @hide - hidden in superclass */
+    @Override
+    public void setComponentEnabledSettingAsUser(ComponentName componentName,
+            int newState, int flags, int userId) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public int getComponentEnabledSetting(ComponentName componentName) {
         throw new UnsupportedOperationException();
@@ -762,6 +769,13 @@
         throw new UnsupportedOperationException();
     }
 
+    /** @hide - hidden in superclass */
+    @Override
+    public void setApplicationEnabledSettingAsUser(String packageName, int newState, int flags,
+            int userId) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public int getApplicationEnabledSetting(String packageName) {
         throw new UnsupportedOperationException();
diff --git a/tests/AppLaunch/Android.mk b/tests/AppLaunch/Android.mk
index c0560fd..e6f6c39 100644
--- a/tests/AppLaunch/Android.mk
+++ b/tests/AppLaunch/Android.mk
@@ -11,7 +11,9 @@
 LOCAL_CERTIFICATE := platform
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-test
+
 include $(BUILD_PACKAGE)
 
 # Use the following include to make our test apk.
-include $(call all-makefiles-under,$(LOCAL_PATH))
\ No newline at end of file
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/AppLaunch/AndroidManifest.xml b/tests/AppLaunch/AndroidManifest.xml
index ac6760b..7dfd7ba 100644
--- a/tests/AppLaunch/AndroidManifest.xml
+++ b/tests/AppLaunch/AndroidManifest.xml
@@ -3,6 +3,14 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.tests.applaunch"
     android:sharedUserId="android.uid.system" >
+
+   <uses-permission android:name="android.permission.REAL_GET_TASKS" />
+   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+   <uses-sdk
+        android:minSdkVersion="22"
+        android:targetSdkVersion="24" />
+
     <instrumentation android:label="Measure app start up time"
                      android:name="android.test.InstrumentationTestRunner"
                      android:targetPackage="com.android.tests.applaunch" />
@@ -10,4 +18,4 @@
     <application android:label="App Launch Test">
         <uses-library android:name="android.test.runner" />
     </application>
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
index 085b7aa..2346f85 100644
--- a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
+++ b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
@@ -15,14 +15,13 @@
  */
 package com.android.tests.applaunch;
 
+import java.io.OutputStreamWriter;
+
 import android.accounts.Account;
 import android.accounts.AccountManager;
+import android.app.ActivityManagerNative;
 import android.app.ActivityManager;
 import android.app.ActivityManager.ProcessErrorStateInfo;
-import android.app.ActivityManagerNative;
-import android.app.IActivityManager;
-import android.app.IActivityManager.WaitResult;
-import android.app.UiAutomation;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -31,16 +30,29 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.UserHandle;
+import android.app.UiAutomation;
+import android.app.IActivityManager;
+import android.app.IActivityManager.WaitResult;
+import android.support.test.rule.logging.AtraceLogger;
 import android.test.InstrumentationTestCase;
 import android.test.InstrumentationTestRunner;
 import android.util.Log;
-
+import java.io.File;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.ArrayList;
 import java.util.Map;
 import java.util.Set;
+import android.os.ParcelFileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
 
 /**
  * This test is intended to measure the time it takes for the apps to start.
@@ -55,27 +67,66 @@
 
     private static final int JOIN_TIMEOUT = 10000;
     private static final String TAG = AppLaunch.class.getSimpleName();
-    private static final String KEY_APPS = "apps";
-    private static final String KEY_LAUNCH_ITERATIONS = "launch_iterations";
     // optional parameter: comma separated list of required account types before proceeding
     // with the app launch
     private static final String KEY_REQUIRED_ACCOUNTS = "required_accounts";
-    private static final String KEY_SKIP_INITIAL_LAUNCH = "skip_initial_launch";
+    private static final String KEY_APPS = "apps";
+    private static final String KEY_TRIAL_LAUNCH = "trial_launch";
+    private static final String KEY_LAUNCH_ITERATIONS = "launch_iterations";
+    private static final String KEY_LAUNCH_ORDER = "launch_order";
+    private static final String KEY_DROP_CACHE = "drop_cache";
+    private static final String KEY_SIMPLEPPERF_CMD = "simpleperf_cmd";
+    private static final String KEY_TRACE_ITERATIONS = "trace_iterations";
+    private static final String KEY_LAUNCH_DIRECTORY = "launch_directory";
+    private static final String KEY_TRACE_DIRECTORY = "trace_directory";
+    private static final String KEY_TRACE_CATEGORY = "trace_categories";
+    private static final String KEY_TRACE_BUFFERSIZE = "trace_bufferSize";
+    private static final String KEY_TRACE_DUMPINTERVAL = "tracedump_interval";
     private static final String WEARABLE_ACTION_GOOGLE =
             "com.google.android.wearable.action.GOOGLE";
     private static final int INITIAL_LAUNCH_IDLE_TIMEOUT = 60000; //60s to allow app to idle
     private static final int POST_LAUNCH_IDLE_TIMEOUT = 750; //750ms idle for non initial launches
-    private static final int BETWEEN_LAUNCH_SLEEP_TIMEOUT = 2000; //2s between launching apps
+    private static final int BETWEEN_LAUNCH_SLEEP_TIMEOUT = 5000; //5s between launching apps
+    private static final String LAUNCH_SUB_DIRECTORY = "launch_logs";
+    private static final String LAUNCH_FILE = "applaunch.txt";
+    private static final String TRACE_SUB_DIRECTORY = "atrace_logs";
+    private static final String DEFAULT_TRACE_CATEGORIES = "sched,freq,gfx,view,dalvik,webview,"
+            + "input,wm,disk,am,wm";
+    private static final String DEFAULT_TRACE_BUFFER_SIZE = "20000";
+    private static final String DEFAULT_TRACE_DUMP_INTERVAL = "10";
+    private static final String TRIAL_LAUNCH = "TRAIL_LAUNCH";
+    private static final String DELIMITER = ",";
+    private static final String DROP_CACHE_SCRIPT = "/data/local/tmp/dropCache.sh";
+    private static final String APP_LAUNCH_CMD = "am start -W -n";
+    private static final String SUCCESS_MESSAGE = "Status: ok";
+    private static final String THIS_TIME = "ThisTime:";
+    private static final String LAUNCH_ITERATION = "LAUNCH_ITERATION - %d";
+    private static final String TRACE_ITERATION = "TRACE_ITERATION - %d";
+    private static final String LAUNCH_ITERATION_PREFIX = "LAUNCH_ITERATION";
+    private static final String TRACE_ITERATION_PREFIX = "TRACE_ITERATION";
+    private static final String LAUNCH_ORDER_CYCLIC = "cyclic";
+    private static final String LAUNCH_ORDER_SEQUENTIAL = "sequential";
+
 
     private Map<String, Intent> mNameToIntent;
     private Map<String, String> mNameToProcess;
+    private List<LaunchOrder> mLaunchOrderList = new ArrayList<LaunchOrder>();
     private Map<String, String> mNameToResultKey;
-    private Map<String, Long> mNameToLaunchTime;
+    private Map<String, List<Long>> mNameToLaunchTime;
     private IActivityManager mAm;
+    private String mSimplePerfCmd = null;
+    private String mLaunchOrder = null;
+    private boolean mDropCache = false;
     private int mLaunchIterations = 10;
+    private int mTraceLaunchCount = 0;
+    private String mTraceDirectoryStr = null;
     private Bundle mResult = new Bundle();
     private Set<String> mRequiredAccounts;
-    private boolean mSkipInitialLaunch = false;
+    private boolean mTrailLaunch = true;
+    private File mFile = null;
+    private FileOutputStream mOutputStream = null;
+    private BufferedWriter mBufferedWriter = null;
+
 
     @Override
     protected void setUp() throws Exception {
@@ -89,69 +140,231 @@
         super.tearDown();
     }
 
-    public void testMeasureStartUpTime() throws RemoteException, NameNotFoundException {
+    public void testMeasureStartUpTime() throws RemoteException, NameNotFoundException,
+            IOException, InterruptedException {
         InstrumentationTestRunner instrumentation =
                 (InstrumentationTestRunner)getInstrumentation();
         Bundle args = instrumentation.getArguments();
         mAm = ActivityManagerNative.getDefault();
-
+        String launchDirectory = args.getString(KEY_LAUNCH_DIRECTORY);
+        mTraceDirectoryStr = args.getString(KEY_TRACE_DIRECTORY);
+        mDropCache = Boolean.parseBoolean(args.getString(KEY_DROP_CACHE));
+        mSimplePerfCmd = args.getString(KEY_SIMPLEPPERF_CMD);
+        mLaunchOrder = args.getString(KEY_LAUNCH_ORDER, LAUNCH_ORDER_CYCLIC);
         createMappings();
         parseArgs(args);
         checkAccountSignIn();
 
-        if (!mSkipInitialLaunch) {
-            // do initial app launch, without force stopping
-            for (String app : mNameToResultKey.keySet()) {
-                long launchTime = startApp(app, false);
-                if (launchTime <= 0) {
-                    mNameToLaunchTime.put(app, -1L);
-                    // simply pass the app if launch isn't successful
-                    // error should have already been logged by startApp
-                    continue;
-                } else {
-                    mNameToLaunchTime.put(app, launchTime);
-                }
-                sleep(INITIAL_LAUNCH_IDLE_TIMEOUT);
-                closeApp(app, false);
-                sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
+        // Root directory for applaunch file to log the app launch output
+        // Will be useful in case of simpleperf command is used
+        File launchRootDir = null;
+        if (null != launchDirectory && !launchDirectory.isEmpty()) {
+            launchRootDir = new File(launchDirectory);
+            if (!launchRootDir.exists() && !launchRootDir.mkdirs()) {
+                throw new IOException("Unable to create the destination directory");
             }
         }
-        // do the real app launch now
-        for (int i = 0; i < mLaunchIterations; i++) {
-            for (String app : mNameToResultKey.keySet()) {
-                long prevLaunchTime = mNameToLaunchTime.get(app);
-                long launchTime = 0;
-                if (prevLaunchTime < 0) {
-                    // skip if the app has previous failures
-                    continue;
+
+        try {
+            File launchSubDir = new File(launchRootDir, LAUNCH_SUB_DIRECTORY);
+            if (!launchSubDir.exists() && !launchSubDir.mkdirs()) {
+                throw new IOException("Unable to create the lauch file sub directory");
+            }
+            mFile = new File(launchSubDir, LAUNCH_FILE);
+            mOutputStream = new FileOutputStream(mFile);
+            mBufferedWriter = new BufferedWriter(new OutputStreamWriter(
+                    mOutputStream));
+
+            // Root directory for trace file during the launches
+            File rootTrace = null;
+            File rootTraceSubDir = null;
+            int traceBufferSize = 0;
+            int traceDumpInterval = 0;
+            Set<String> traceCategoriesSet = null;
+            if (null != mTraceDirectoryStr && !mTraceDirectoryStr.isEmpty()) {
+                rootTrace = new File(mTraceDirectoryStr);
+                if (!rootTrace.exists() && !rootTrace.mkdirs()) {
+                    throw new IOException("Unable to create the trace directory");
                 }
-                launchTime = startApp(app, true);
-                if (launchTime <= 0) {
-                    // if it fails once, skip the rest of the launches
-                    mNameToLaunchTime.put(app, -1L);
-                    continue;
+                rootTraceSubDir = new File(rootTrace, TRACE_SUB_DIRECTORY);
+                if (!rootTraceSubDir.exists() && !rootTraceSubDir.mkdirs()) {
+                    throw new IOException("Unable to create the trace sub directory");
                 }
-                // keep the min launch time
-                if (launchTime < prevLaunchTime) {
-                    mNameToLaunchTime.put(app, launchTime);
+                assertNotNull("Trace iteration parameter is mandatory",
+                        args.getString(KEY_TRACE_ITERATIONS));
+                mTraceLaunchCount = Integer.parseInt(args.getString(KEY_TRACE_ITERATIONS));
+                String traceCategoriesStr = args
+                        .getString(KEY_TRACE_CATEGORY, DEFAULT_TRACE_CATEGORIES);
+                traceBufferSize = Integer.parseInt(args.getString(KEY_TRACE_BUFFERSIZE,
+                        DEFAULT_TRACE_BUFFER_SIZE));
+                traceDumpInterval = Integer.parseInt(args.getString(KEY_TRACE_DUMPINTERVAL,
+                        DEFAULT_TRACE_DUMP_INTERVAL));
+                traceCategoriesSet = new HashSet<String>();
+                if (!traceCategoriesStr.isEmpty()) {
+                    String[] traceCategoriesSplit = traceCategoriesStr.split(DELIMITER);
+                    for (int i = 0; i < traceCategoriesSplit.length; i++) {
+                        traceCategoriesSet.add(traceCategoriesSplit[i]);
+                    }
                 }
-                sleep(POST_LAUNCH_IDLE_TIMEOUT);
-                closeApp(app, true);
-                sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
+            }
+
+            // Get the app launch order based on launch order, trial launch,
+            // launch iterations and trace iterations
+            setLaunchOrder();
+
+            for (LaunchOrder launch : mLaunchOrderList) {
+
+                // App launch times for trial launch will not be used for final
+                // launch time calculations.
+                if (launch.getLaunchReason().equals(TRIAL_LAUNCH)) {
+                    // In the "applaunch.txt" file, trail launches is referenced using
+                    // "TRIAL_LAUNCH"
+                    long launchTime = startApp(launch.getApp(), true, launch.getLaunchReason());
+                    if (launchTime < 0) {
+                        List<Long> appLaunchList = new ArrayList<Long>();
+                        appLaunchList.add(-1L);
+                        mNameToLaunchTime.put(launch.getApp(), appLaunchList);
+                        // simply pass the app if launch isn't successful
+                        // error should have already been logged by startApp
+                        continue;
+                    }
+                    sleep(INITIAL_LAUNCH_IDLE_TIMEOUT);
+                    closeApp(launch.getApp(), true);
+                    dropCache();
+                    sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
+                }
+
+                // App launch times used for final calculation
+                if (launch.getLaunchReason().contains(LAUNCH_ITERATION_PREFIX)) {
+                    long launchTime = -1;
+                    if (null != mNameToLaunchTime.get(launch.getApp())) {
+                        long firstLaunchTime = mNameToLaunchTime.get(launch.getApp()).get(0);
+                        if (firstLaunchTime < 0) {
+                            // skip if the app has failures while launched first
+                            continue;
+                        }
+                    }
+                    // In the "applaunch.txt" file app launches are referenced using
+                    // "LAUNCH_ITERATION - ITERATION NUM"
+                    launchTime = startApp(launch.getApp(), true, launch.getLaunchReason());
+                    if (launchTime < 0) {
+                        // if it fails once, skip the rest of the launches
+                        List<Long> appLaunchList = new ArrayList<Long>();
+                        appLaunchList.add(-1L);
+                        mNameToLaunchTime.put(launch.getApp(), appLaunchList);
+                        continue;
+                    } else {
+                        if (null != mNameToLaunchTime.get(launch.getApp())) {
+                            mNameToLaunchTime.get(launch.getApp()).add(launchTime);
+                        } else {
+                            List<Long> appLaunchList = new ArrayList<Long>();
+                            appLaunchList.add(launchTime);
+                            mNameToLaunchTime.put(launch.getApp(), appLaunchList);
+                        }
+                    }
+                    sleep(POST_LAUNCH_IDLE_TIMEOUT);
+                    closeApp(launch.getApp(), true);
+                    dropCache();
+                    sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
+                }
+
+                // App launch times for trace launch will not be used for final
+                // launch time calculations.
+                if (launch.getLaunchReason().contains(TRACE_ITERATION_PREFIX)) {
+                    AtraceLogger atraceLogger = AtraceLogger
+                            .getAtraceLoggerInstance(getInstrumentation());
+                    // Start the trace
+                    try {
+                        atraceLogger.atraceStart(traceCategoriesSet, traceBufferSize,
+                                traceDumpInterval, rootTraceSubDir,
+                                String.format("%s-%s", launch.getApp(), launch.getLaunchReason()));
+                        startApp(launch.getApp(), true, launch.getLaunchReason());
+                        sleep(POST_LAUNCH_IDLE_TIMEOUT);
+                    } finally {
+                        // Stop the trace
+                        atraceLogger.atraceStop();
+                        closeApp(launch.getApp(), true);
+                        dropCache();
+                        sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
+                    }
+                }
+            }
+        } finally {
+            if (null != mBufferedWriter) {
+                mBufferedWriter.close();
             }
         }
+
         for (String app : mNameToResultKey.keySet()) {
-            long launchTime = mNameToLaunchTime.get(app);
-            if (launchTime != -1) {
-                mResult.putLong(mNameToResultKey.get(app), launchTime);
+            StringBuilder launchTimes = new StringBuilder();
+            for (Long launch : mNameToLaunchTime.get(app)) {
+                launchTimes.append(launch);
+                launchTimes.append(",");
             }
+            mResult.putString(mNameToResultKey.get(app), launchTimes.toString());
         }
         instrumentation.sendStatus(0, mResult);
     }
 
+    /**
+     * If launch order is "cyclic" then apps will be launched one after the
+     * other for each iteration count.
+     * If launch order is "sequential" then each app will be launched for given number
+     * iterations at once before launching the other apps.
+     */
+    private void setLaunchOrder() {
+        if (LAUNCH_ORDER_CYCLIC.equalsIgnoreCase(mLaunchOrder)) {
+            if (mTrailLaunch) {
+                for (String app : mNameToResultKey.keySet()) {
+                    mLaunchOrderList.add(new LaunchOrder(app, TRIAL_LAUNCH));
+                }
+            }
+            for (int launchCount = 0; launchCount < mLaunchIterations; launchCount++) {
+                for (String app : mNameToResultKey.keySet()) {
+                    mLaunchOrderList.add(new LaunchOrder(app,
+                            String.format(LAUNCH_ITERATION, launchCount)));
+                }
+            }
+            if (mTraceDirectoryStr != null && !mTraceDirectoryStr.isEmpty()) {
+                for (int traceCount = 0; traceCount < mTraceLaunchCount; traceCount++) {
+                    for (String app : mNameToResultKey.keySet()) {
+                        mLaunchOrderList.add(new LaunchOrder(app,
+                                String.format(TRACE_ITERATION, traceCount)));
+                    }
+                }
+            }
+        } else if (LAUNCH_ORDER_SEQUENTIAL.equalsIgnoreCase(mLaunchOrder)) {
+            for (String app : mNameToResultKey.keySet()) {
+                if (mTrailLaunch) {
+                    mLaunchOrderList.add(new LaunchOrder(app, TRIAL_LAUNCH));
+                }
+                for (int launchCount = 0; launchCount < mLaunchIterations; launchCount++) {
+                    mLaunchOrderList.add(new LaunchOrder(app,
+                            String.format(LAUNCH_ITERATION, launchCount)));
+                }
+                if (mTraceDirectoryStr != null && !mTraceDirectoryStr.isEmpty()) {
+                    for (int traceCount = 0; traceCount < mTraceLaunchCount; traceCount++) {
+                        mLaunchOrderList.add(new LaunchOrder(app,
+                                String.format(TRACE_ITERATION, traceCount)));
+                    }
+                }
+            }
+        } else {
+            assertTrue("Launch order is not valid parameter", false);
+        }
+    }
+
+    private void dropCache() {
+        if (true == mDropCache) {
+            assertNotNull("Issue in dropping the cache",
+                    getInstrumentation().getUiAutomation()
+                            .executeShellCommand(DROP_CACHE_SCRIPT));
+        }
+    }
+
     private void parseArgs(Bundle args) {
         mNameToResultKey = new LinkedHashMap<String, String>();
-        mNameToLaunchTime = new HashMap<String, Long>();
+        mNameToLaunchTime = new HashMap<String, List<Long>>();
         String launchIterations = args.getString(KEY_LAUNCH_ITERATIONS);
         if (launchIterations != null) {
             mLaunchIterations = Integer.parseInt(launchIterations);
@@ -169,7 +382,7 @@
             }
 
             mNameToResultKey.put(parts[0], parts[1]);
-            mNameToLaunchTime.put(parts[0], 0L);
+            mNameToLaunchTime.put(parts[0], null);
         }
         String requiredAccounts = args.getString(KEY_REQUIRED_ACCOUNTS);
         if (requiredAccounts != null) {
@@ -178,7 +391,7 @@
                 mRequiredAccounts.add(accountType);
             }
         }
-        mSkipInitialLaunch = "true".equals(args.getString(KEY_SKIP_INITIAL_LAUNCH));
+        mTrailLaunch = "true".equals(args.getString(KEY_TRIAL_LAUNCH));
     }
 
     private boolean hasLeanback(Context context) {
@@ -222,7 +435,7 @@
         }
     }
 
-    private long startApp(String appName, boolean forceStopBeforeLaunch)
+    private long startApp(String appName, boolean forceStopBeforeLaunch, String launchReason)
             throws NameNotFoundException, RemoteException {
         Log.i(TAG, "Starting " + appName);
 
@@ -230,9 +443,10 @@
         if (startIntent == null) {
             Log.w(TAG, "App does not exist: " + appName);
             mResult.putString(mNameToResultKey.get(appName), "App does not exist");
-            return -1;
+            return -1L;
         }
-        AppLaunchRunnable runnable = new AppLaunchRunnable(startIntent, forceStopBeforeLaunch);
+        AppLaunchRunnable runnable = new AppLaunchRunnable(startIntent, forceStopBeforeLaunch ,
+                launchReason);
         Thread t = new Thread(runnable);
         t.start();
         try {
@@ -240,21 +454,7 @@
         } catch (InterruptedException e) {
             // ignore
         }
-        WaitResult result = runnable.getResult();
-        // report error if any of the following is true:
-        // * launch thread is alive
-        // * result is not null, but:
-        //   * result is not START_SUCCESS
-        //   * or in case of no force stop, result is not TASK_TO_FRONT either
-        if (t.isAlive() || (result != null
-                && ((result.result != ActivityManager.START_SUCCESS)
-                        && (!forceStopBeforeLaunch
-                                && result.result != ActivityManager.START_TASK_TO_FRONT)))) {
-            Log.w(TAG, "Assuming app " + appName + " crashed.");
-            reportError(appName, mNameToProcess.get(appName));
-            return -1;
-        }
-        return result.thisTime;
+        return runnable.getResult();
     }
 
     private void checkAccountSignIn() {
@@ -337,39 +537,117 @@
                 + " not found in process list, most likely it is crashed");
     }
 
-    private class AppLaunchRunnable implements Runnable {
-        private Intent mLaunchIntent;
-        private IActivityManager.WaitResult mResult;
-        private boolean mForceStopBeforeLaunch;
+    private class LaunchOrder {
+        private String mApp;
+        private String mLaunchReason;
 
-        public AppLaunchRunnable(Intent intent, boolean forceStopBeforeLaunch) {
-            mLaunchIntent = intent;
-            mForceStopBeforeLaunch = forceStopBeforeLaunch;
+        LaunchOrder(String app,String launchReason){
+            mApp = app;
+            mLaunchReason = launchReason;
         }
 
-        public IActivityManager.WaitResult getResult() {
+        public String getApp() {
+            return mApp;
+        }
+
+        public void setApp(String app) {
+            mApp = app;
+        }
+
+        public String getLaunchReason() {
+            return mLaunchReason;
+        }
+
+        public void setLaunchReason(String launchReason) {
+            mLaunchReason = launchReason;
+        }
+    }
+
+    private class AppLaunchRunnable implements Runnable {
+        private Intent mLaunchIntent;
+        private Long mResult;
+        private boolean mForceStopBeforeLaunch;
+        private String mLaunchReason;
+
+        public AppLaunchRunnable(Intent intent, boolean forceStopBeforeLaunch,
+                String launchReason) {
+            mLaunchIntent = intent;
+            mForceStopBeforeLaunch = forceStopBeforeLaunch;
+            mLaunchReason = launchReason;
+        }
+
+        public Long getResult() {
             return mResult;
         }
 
         public void run() {
             try {
                 String packageName = mLaunchIntent.getComponent().getPackageName();
+                String componentName = mLaunchIntent.getComponent().flattenToShortString();
                 if (mForceStopBeforeLaunch) {
                     mAm.forceStopPackage(packageName, UserHandle.USER_CURRENT);
                 }
-                String mimeType = mLaunchIntent.getType();
-                if (mimeType == null && mLaunchIntent.getData() != null
-                        && "content".equals(mLaunchIntent.getData().getScheme())) {
-                    mimeType = mAm.getProviderMimeType(mLaunchIntent.getData(),
-                            UserHandle.USER_CURRENT);
+                String launchCmd = String.format("%s %s", APP_LAUNCH_CMD, componentName);
+                if (null != mSimplePerfCmd) {
+                    launchCmd = String.format("%s %s", mSimplePerfCmd, launchCmd);
                 }
-
-                mResult = mAm.startActivityAndWait(null, null, mLaunchIntent, mimeType,
-                        null, null, 0, mLaunchIntent.getFlags(), null, null,
-                        UserHandle.USER_CURRENT);
+                Log.v(TAG, "Final launch cmd:" + launchCmd);
+                ParcelFileDescriptor parcelDesc = getInstrumentation().getUiAutomation()
+                        .executeShellCommand(launchCmd);
+                mResult = Long.parseLong(parseLaunchTimeAndWrite(parcelDesc, String.format
+                        ("App Launch :%s %s",
+                                componentName, mLaunchReason)), 10);
             } catch (RemoteException e) {
                 Log.w(TAG, "Error launching app", e);
             }
         }
+
+        /**
+         * Method to parse the launch time info and write the result to file
+         *
+         * @param parcelDesc
+         * @return
+         */
+        private String parseLaunchTimeAndWrite(ParcelFileDescriptor parcelDesc, String headerInfo) {
+            String launchTime = "-1";
+            boolean launchSuccess = false;
+            try {
+                InputStream inputStream = new FileInputStream(parcelDesc.getFileDescriptor());
+                StringBuilder appLaunchOuput = new StringBuilder();
+                /* SAMPLE OUTPUT :
+                Starting: Intent { cmp=com.google.android.calculator/com.android.calculator2.Calculator }
+                Status: ok
+                Activity: com.google.android.calculator/com.android.calculator2.Calculator
+                ThisTime: 357
+                TotalTime: 357
+                WaitTime: 377
+                Complete*/
+                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
+                        inputStream));
+                String line = null;
+                int lineCount = 1;
+                mBufferedWriter.newLine();
+                mBufferedWriter.write(headerInfo);
+                mBufferedWriter.newLine();
+                while ((line = bufferedReader.readLine()) != null) {
+                    if (lineCount == 2 && line.contains(SUCCESS_MESSAGE)) {
+                        launchSuccess = true;
+                    }
+                    if (launchSuccess && lineCount == 4) {
+                        String launchSplit[] = line.split(":");
+                        launchTime = launchSplit[1].trim();
+                    }
+                    mBufferedWriter.write(line);
+                    mBufferedWriter.newLine();
+                    lineCount++;
+                }
+                mBufferedWriter.flush();
+                inputStream.close();
+            } catch (IOException e) {
+                Log.w(TAG, "Error writing the launch file", e);
+            }
+            return launchTime;
+        }
+
     }
 }
diff --git a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java
index 0ff95c4..a2385d6 100644
--- a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java
+++ b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java
@@ -645,11 +645,11 @@
         }
 
         public void onAvailabilityChanged(int status) {
-            postMessage(mModelInfo.name + "Availability changed to: " + status);
+            postMessage(mModelInfo.name + " availability changed to: " + status);
         }
 
         public void onDetected(SoundTriggerDetector.EventPayload event) {
-            postMessage(mModelInfo.name + "onDetected(): " + eventPayloadToString(event));
+            postMessage(mModelInfo.name + " onDetected(): " + eventPayloadToString(event));
             synchronized (SoundTriggerTestService.this) {
                 if (mUserActivity != null) {
                     mUserActivity.handleDetection(mModelInfo.modelUuid);
@@ -661,7 +661,7 @@
         }
 
         public void onError() {
-            postMessage(mModelInfo.name + "onError()");
+            postMessage(mModelInfo.name + " onError()");
             setModelState(mModelInfo, "Error");
         }
 
@@ -671,7 +671,7 @@
         }
 
         public void onRecognitionResumed() {
-            postMessage(mModelInfo.name + "onRecognitionResumed()");
+            postMessage(mModelInfo.name + " onRecognitionResumed()");
             setModelState(mModelInfo, "Resumed");
         }
     }
diff --git a/tests/UiBench/AndroidManifest.xml b/tests/UiBench/AndroidManifest.xml
index 97b4216..12143b7 100644
--- a/tests/UiBench/AndroidManifest.xml
+++ b/tests/UiBench/AndroidManifest.xml
@@ -190,5 +190,15 @@
                 <category android:name="com.android.test.uibench.TEST" />
             </intent-filter>
         </activity>
+
+        <!-- Notification Shade -->
+        <activity
+            android:name=".NotificationShadeActivity"
+            android:label="Notification Shade">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.android.test.uibench.TEST" />
+            </intent-filter>
+        </activity>
     </application>
 </manifest>
diff --git a/tests/UiBench/res/layout/notification.xml b/tests/UiBench/res/layout/notification.xml
new file mode 100644
index 0000000..57c5b44
--- /dev/null
+++ b/tests/UiBench/res/layout/notification.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:background="@android:color/white"
+    android:paddingBottom="4dp">
+    <View android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#aaa"/>
+    <TextView
+        android:id="@+id/info"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:drawablePadding="2dp"
+        android:gravity="center_vertical"
+        android:textAppearance="@android:style/TextAppearance.Material.Notification.Info"
+        android:paddingLeft="16dp"
+        android:paddingTop="4dp"/>
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="@android:style/TextAppearance.Material.Notification.Title"
+        android:paddingLeft="16dp"/>
+    <TextView
+        android:id="@+id/line2"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="@android:style/TextAppearance.Material.Notification.Line2"
+        android:paddingLeft="16dp"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/tests/UiBench/res/values/dimens.xml b/tests/UiBench/res/values/dimens.xml
index 099da77..a788491 100644
--- a/tests/UiBench/res/values/dimens.xml
+++ b/tests/UiBench/res/values/dimens.xml
@@ -16,4 +16,5 @@
 <resources>
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="default_spacing">16dp</dimen>
+    <dimen name="notification_icon_size">16dp</dimen>
 </resources>
diff --git a/tests/UiBench/src/com/android/test/uibench/NotificationShadeActivity.java b/tests/UiBench/src/com/android/test/uibench/NotificationShadeActivity.java
new file mode 100644
index 0000000..70deeea
--- /dev/null
+++ b/tests/UiBench/src/com/android/test/uibench/NotificationShadeActivity.java
@@ -0,0 +1,161 @@
+/*
+ * 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.test.uibench;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.view.GestureDetector;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.widget.LinearLayout;
+import android.widget.Scroller;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+
+public class NotificationShadeActivity extends AppCompatActivity {
+
+    private static class FakeNotificationStackView extends LinearLayout {
+        private static final int INITIAL_ELEVATION = 40;
+
+        private LayoutInflater mLayoutInflater;
+        private GestureDetector mGestureDetector;
+        private Scroller mScroller;
+        private ArrayList<View> mChildren = new ArrayList<>();
+        private int mChildrenCount = 0;
+        private int mFullHeight = 0;
+        private int mScaledTouchSlop;
+
+        private Runnable mUpdateAction = new Runnable() {
+            @Override
+            public void run() {
+                if (mScroller.computeScrollOffset()) {
+                    updateState(mScroller.getCurrY());
+                    postOnAnimation(this);
+                }
+            }
+        };
+
+        private GestureDetector.OnGestureListener mGestureListener =
+                new GestureDetector.SimpleOnGestureListener() {
+            @Override
+            public boolean onDown(MotionEvent motionEvent) {
+                return true;
+            }
+
+            @Override
+            public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vY) {
+                if (Math.abs(e1.getY() - e2.getY()) <= mScaledTouchSlop) {
+                    return false;
+                }
+                mScroller.fling(0, mFullHeight, 0, (int) vY, 0, 0, 0, getHeight());
+                postOnAnimation(mUpdateAction);
+                return true;
+            }
+        };
+
+        private void generateNextView() {
+            View view = mLayoutInflater.inflate(R.layout.notification, this, false);
+            boolean even = mChildren.size() % 2 == 0;
+            Context context = getContext();
+            ((TextView) view.findViewById(R.id.title)).setText(even ?
+                    "Very important notification" : "Next video to watch");
+            ((TextView) view.findViewById(R.id.line2)).setText(even ?
+                    "Wifi nearby" : "Amazing cats");
+            TextView infoView = (TextView) view.findViewById(R.id.info);
+            Drawable drawable = context.getDrawable(even ? R.drawable.ic_menu_manage
+                    : R.drawable.ic_menu_slideshow);
+            int size = context.getResources().getDimensionPixelSize(R.dimen.notification_icon_size);
+            drawable.setBounds(0, 0, size, size);
+            infoView.setCompoundDrawables(drawable, null, null, null);
+            infoView.setText(even ? "Android System" : "Youtube");
+            mChildren.add(view);
+        }
+
+        public FakeNotificationStackView(Context context) {
+            super(context);
+            setOrientation(LinearLayout.VERTICAL);
+            mLayoutInflater = LayoutInflater.from(getContext());
+            mGestureDetector = new GestureDetector(getContext(), mGestureListener);
+            mScaledTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
+            mScroller = new Scroller(getContext());
+        }
+
+        private int lastChildHeight() {
+            return (int) mChildren.get(mChildrenCount - 1).getTag();
+        }
+
+        private void updateState(int expectedHeight) {
+            if (expectedHeight == 0 && mChildrenCount == 0) {
+                return;
+            }
+            for (View v: mChildren) {
+                v.setTranslationY(0);
+                v.setElevation(INITIAL_ELEVATION);
+            }
+            if (mChildrenCount != 0 && expectedHeight < mFullHeight - lastChildHeight()) {
+                while (mChildrenCount > 0){
+                    if (expectedHeight > mFullHeight - lastChildHeight()) {
+                        break;
+                    }
+                    mFullHeight -= lastChildHeight();
+                    removeView(mChildren.get(mChildrenCount - 1));
+                    mChildrenCount--;
+                }
+            } else if (expectedHeight > mFullHeight) {
+                while (expectedHeight > mFullHeight) {
+                    if (mChildrenCount == mChildren.size()) {
+                        generateNextView();
+                    }
+                    mChildrenCount++;
+                    View child = mChildren.get(mChildrenCount - 1);
+                    child.setElevation(INITIAL_ELEVATION);
+                    int widthSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST);
+                    int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+                    child.measure(widthSpec, heightSpec);
+                    addView(child);
+                    int measuredHeight = child.getMeasuredHeight();
+                    child.setTag(measuredHeight);
+                    mFullHeight += measuredHeight;
+                }
+            }
+            if (mChildrenCount == 0) {
+                return;
+            }
+            View lastChild = mChildren.get(mChildrenCount - 1);
+            int translationY = expectedHeight - mFullHeight;
+            lastChild.setTranslationY(translationY);
+            float p = - ((float) translationY) / lastChildHeight();
+            lastChild.setElevation((1 - p) * INITIAL_ELEVATION);
+        }
+
+        @Override
+        public boolean onTouchEvent(MotionEvent ev) {
+            return mGestureDetector.onTouchEvent(ev);
+        }
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(new FakeNotificationStackView(this));
+    }
+}
diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk
index b701445..2a490d1 100644
--- a/tools/aapt/Android.mk
+++ b/tools/aapt/Android.mk
@@ -57,8 +57,8 @@
 aaptHostStaticLibs := \
     libandroidfw \
     libpng \
-    liblog \
     libutils \
+    liblog \
     libcutils \
     libexpat \
     libziparchive-host \
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index 447ace6..288b2a3 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -750,7 +750,7 @@
     }
 
     // Source for AndroidManifest.xml
-    const String8 manifestFile = String8::format("%s@AndroidManifest.xml", filename);
+    const String8 manifestFile("AndroidManifest.xml");
 
     // The dynamicRefTable can be null if there are no resources for this asset cookie.
     // This fine.
@@ -850,14 +850,16 @@
                 depth++;
                 const char16_t* ctag16 = tree.getElementName(&len);
                 if (ctag16 == NULL) {
-                    fprintf(stderr, "ERROR: failed to get XML element name (bad string pool)\n");
+                    SourcePos(manifestFile, tree.getLineNumber()).error(
+                            "ERROR: failed to get XML element name (bad string pool)");
                     goto bail;
                 }
                 String8 tag(ctag16);
                 //printf("Depth %d tag %s\n", depth, tag.string());
                 if (depth == 1) {
                     if (tag != "manifest") {
-                        fprintf(stderr, "ERROR: manifest does not start with <manifest> tag\n");
+                        SourcePos(manifestFile, tree.getLineNumber()).error(
+                                "ERROR: manifest does not start with <manifest> tag");
                         goto bail;
                     }
                     String8 pkg = AaptXml::getAttribute(tree, NULL, "package", NULL);
@@ -867,12 +869,14 @@
                         String8 error;
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR: %s\n", error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name': %s", error.string());
                             goto bail;
                         }
 
                         if (name == "") {
-                            fprintf(stderr, "ERROR: missing 'android:name' for permission\n");
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR: missing 'android:name' for permission");
                             goto bail;
                         }
                         printf("permission: %s\n",
@@ -881,12 +885,14 @@
                         String8 error;
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR: %s\n", error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
                             goto bail;
                         }
 
                         if (name == "") {
-                            fprintf(stderr, "ERROR: missing 'android:name' for uses-permission\n");
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR: missing 'android:name' for uses-permission");
                             goto bail;
                         }
                         printUsesPermission(name,
@@ -896,13 +902,14 @@
                         String8 error;
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR: %s\n", error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
                             goto bail;
                         }
 
                         if (name == "") {
-                            fprintf(stderr, "ERROR: missing 'android:name' for "
-                                    "uses-permission-sdk-23\n");
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR: missing 'android:name' for uses-permission-sdk-23");
                             goto bail;
                         }
                         printUsesPermissionSdk23(
@@ -1163,14 +1170,16 @@
 
                 const char16_t* ctag16 = tree.getElementName(&len);
                 if (ctag16 == NULL) {
-                    fprintf(stderr, "ERROR: failed to get XML element name (bad string pool)\n");
+                    SourcePos(manifestFile, tree.getLineNumber()).error(
+                            "ERROR: failed to get XML element name (bad string pool)");
                     goto bail;
                 }
                 String8 tag(ctag16);
                 //printf("Depth %d,  %s\n", depth, tag.string());
                 if (depth == 1) {
                     if (tag != "manifest") {
-                        fprintf(stderr, "ERROR: manifest does not start with <manifest> tag\n");
+                        SourcePos(manifestFile, tree.getLineNumber()).error(
+                                "ERROR: manifest does not start with <manifest> tag");
                         goto bail;
                     }
                     pkg = AaptXml::getAttribute(tree, NULL, "package", NULL);
@@ -1179,7 +1188,8 @@
                     int32_t versionCode = AaptXml::getIntegerAttribute(tree, VERSION_CODE_ATTR,
                             &error);
                     if (error != "") {
-                        fprintf(stderr, "ERROR getting 'android:versionCode' attribute: %s\n",
+                        SourcePos(manifestFile, tree.getLineNumber()).error(
+                                "ERROR getting 'android:versionCode' attribute: %s",
                                 error.string());
                         goto bail;
                     }
@@ -1191,7 +1201,8 @@
                     String8 versionName = AaptXml::getResolvedAttribute(res, tree,
                             VERSION_NAME_ATTR, &error);
                     if (error != "") {
-                        fprintf(stderr, "ERROR getting 'android:versionName' attribute: %s\n",
+                        SourcePos(manifestFile, tree.getLineNumber()).error(
+                                "ERROR getting 'android:versionName' attribute: %s",
                                 error.string());
                         goto bail;
                     }
@@ -1212,7 +1223,8 @@
                     int32_t installLocation = AaptXml::getResolvedIntegerAttribute(res, tree,
                             INSTALL_LOCATION_ATTR, &error);
                     if (error != "") {
-                        fprintf(stderr, "ERROR getting 'android:installLocation' attribute: %s\n",
+                        SourcePos(manifestFile, tree.getLineNumber()).error(
+                                "ERROR getting 'android:installLocation' attribute: %s",
                                 error.string());
                         goto bail;
                     }
@@ -1278,14 +1290,15 @@
 
                         String8 icon = AaptXml::getResolvedAttribute(res, tree, ICON_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:icon' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:icon' attribute: %s", error.string());
                             goto bail;
                         }
                         int32_t testOnly = AaptXml::getIntegerAttribute(tree, TEST_ONLY_ATTR, 0,
                                 &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:testOnly' attribute: %s\n",
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:testOnly' attribute: %s",
                                     error.string());
                             goto bail;
                         }
@@ -1293,8 +1306,8 @@
                         String8 banner = AaptXml::getResolvedAttribute(res, tree, BANNER_ATTR,
                                                                        &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:banner' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:banner' attribute: %s", error.string());
                             goto bail;
                         }
                         printf("application: label='%s' ",
@@ -1312,8 +1325,8 @@
                         int32_t isGame = AaptXml::getResolvedIntegerAttribute(res, tree,
                                 ISGAME_ATTR, 0, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:isGame' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:isGame' attribute: %s", error.string());
                             goto bail;
                         }
                         if (isGame != 0) {
@@ -1323,7 +1336,8 @@
                         int32_t debuggable = AaptXml::getResolvedIntegerAttribute(res, tree,
                                 DEBUGGABLE_ATTR, 0, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:debuggable' attribute: %s\n",
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:debuggable' attribute: %s",
                                     error.string());
                             goto bail;
                         }
@@ -1352,8 +1366,8 @@
                             String8 name = AaptXml::getResolvedAttribute(res, tree,
                                     MIN_SDK_VERSION_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr,
-                                        "ERROR getting 'android:minSdkVersion' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:minSdkVersion' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1374,8 +1388,8 @@
                             String8 name = AaptXml::getResolvedAttribute(res, tree,
                                     TARGET_SDK_VERSION_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr,
-                                        "ERROR getting 'android:targetSdkVersion' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:targetSdkVersion' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1440,8 +1454,8 @@
                         FeatureGroup group;
                         group.label = AaptXml::getResolvedAttribute(res, tree, LABEL_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:label' attribute:"
-                                    " %s\n", error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:label' attribute: %s", error.string());
                             goto bail;
                         }
                         featureGroups.add(group);
@@ -1486,13 +1500,14 @@
                     } else if (tag == "uses-permission") {
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
                             goto bail;
                         }
 
                         if (name == "") {
-                            fprintf(stderr, "ERROR: missing 'android:name' for uses-permission\n");
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR: missing 'android:name' for uses-permission");
                             goto bail;
                         }
 
@@ -1521,14 +1536,14 @@
                     } else if (tag == "uses-permission-sdk-23" || tag == "uses-permission-sdk-m") {
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
                             goto bail;
                         }
 
                         if (name == "") {
-                            fprintf(stderr, "ERROR: missing 'android:name' for "
-                                    "uses-permission-sdk-23\n");
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR: missing 'android:name' for uses-permission-sdk-23");
                             goto bail;
                         }
 
@@ -1543,9 +1558,9 @@
                             printf("uses-package:'%s'\n",
                                     ResTable::normalizeForOutput(name.string()).string());
                         } else {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
-                                    error.string());
-                                goto bail;
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
+                            goto bail;
                         }
                     } else if (tag == "original-package") {
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
@@ -1553,9 +1568,9 @@
                             printf("original-package:'%s'\n",
                                     ResTable::normalizeForOutput(name.string()).string());
                         } else {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
-                                    error.string());
-                                goto bail;
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
+                            goto bail;
                         }
                     } else if (tag == "supports-gl-texture") {
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
@@ -1563,15 +1578,15 @@
                             printf("supports-gl-texture:'%s'\n",
                                     ResTable::normalizeForOutput(name.string()).string());
                         } else {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
-                                    error.string());
-                                goto bail;
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
+                            goto bail;
                         }
                     } else if (tag == "compatible-screens") {
                         printCompatibleScreens(tree, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting compatible screens: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting compatible screens: %s", error.string());
                             goto bail;
                         }
                         depth--;
@@ -1608,7 +1623,8 @@
                             withinActivity = true;
                             activityName = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:name' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1616,7 +1632,8 @@
                             activityLabel = AaptXml::getResolvedAttribute(res, tree, LABEL_ATTR,
                                     &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:label' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:label' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1624,7 +1641,8 @@
                             activityIcon = AaptXml::getResolvedAttribute(res, tree, ICON_ATTR,
                                     &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:icon' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:icon' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1632,7 +1650,8 @@
                             activityBanner = AaptXml::getResolvedAttribute(res, tree, BANNER_ATTR,
                                     &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:banner' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:banner' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1659,9 +1678,9 @@
                         } else if (tag == "uses-library") {
                             String8 libraryName = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr,
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
                                         "ERROR getting 'android:name' attribute for uses-library"
-                                        " %s\n", error.string());
+                                        " %s", error.string());
                                 goto bail;
                             }
                             int req = AaptXml::getIntegerAttribute(tree,
@@ -1674,9 +1693,9 @@
                             receiverName = AaptXml::getAttribute(tree, NAME_ATTR, &error);
 
                             if (error != "") {
-                                fprintf(stderr,
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
                                         "ERROR getting 'android:name' attribute for receiver:"
-                                        " %s\n", error.string());
+                                        " %s", error.string());
                                 goto bail;
                             }
 
@@ -1687,9 +1706,9 @@
                                     hasBindDeviceAdminPermission = true;
                                 }
                             } else {
-                                fprintf(stderr,
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
                                         "ERROR getting 'android:permission' attribute for"
-                                        " receiver '%s': %s\n",
+                                        " receiver '%s': %s",
                                         receiverName.string(), error.string());
                             }
                         } else if (tag == "service") {
@@ -1697,8 +1716,9 @@
                             serviceName = AaptXml::getAttribute(tree, NAME_ATTR, &error);
 
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:name' attribute for "
-                                        "service:%s\n", error.string());
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:name' attribute for "
+                                        "service:%s", error.string());
                                 goto bail;
                             }
 
@@ -1723,8 +1743,9 @@
                                     hasBindDreamServicePermission = true;
                                 }
                             } else {
-                                fprintf(stderr, "ERROR getting 'android:permission' attribute for "
-                                        "service '%s': %s\n", serviceName.string(), error.string());
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:permission' attribute for "
+                                        "service '%s': %s", serviceName.string(), error.string());
                             }
                         } else if (tag == "provider") {
                             withinProvider = true;
@@ -1732,26 +1753,27 @@
                             bool exported = AaptXml::getResolvedIntegerAttribute(res, tree,
                                     EXPORTED_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr,
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
                                         "ERROR getting 'android:exported' attribute for provider:"
-                                        " %s\n", error.string());
+                                        " %s", error.string());
                                 goto bail;
                             }
 
                             bool grantUriPermissions = AaptXml::getResolvedIntegerAttribute(
                                     res, tree, GRANT_URI_PERMISSIONS_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr,
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
                                         "ERROR getting 'android:grantUriPermissions' attribute for "
-                                        "provider: %s\n", error.string());
+                                        "provider: %s", error.string());
                                 goto bail;
                             }
 
                             String8 permission = AaptXml::getResolvedAttribute(res, tree,
                                     PERMISSION_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:permission' attribute for "
-                                        "provider: %s\n", error.string());
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:permission' attribute for "
+                                        "provider: %s", error.string());
                                 goto bail;
                             }
 
@@ -1762,8 +1784,9 @@
                             String8 metaDataName = AaptXml::getResolvedAttribute(res, tree,
                                     NAME_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:name' attribute for "
-                                        "meta-data:%s\n", error.string());
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:name' attribute for "
+                                        "meta-data: %s", error.string());
                                 goto bail;
                             }
                             printf("meta-data: name='%s' ",
@@ -1776,9 +1799,10 @@
                                 printResolvedResourceAttribute(res, tree, RESOURCE_ATTR,
                                         String8("resource"), &error);
                                 if (error != "") {
-                                    fprintf(stderr, "ERROR getting 'android:value' or "
+                                    SourcePos(manifestFile, tree.getLineNumber()).error(
+                                            "ERROR getting 'android:value' or "
                                             "'android:resource' attribute for "
-                                            "meta-data:%s\n", error.string());
+                                            "meta-data: %s", error.string());
                                     goto bail;
                                 }
                             }
@@ -1788,7 +1812,8 @@
                             if (name != "" && error == "") {
                                 supportedInput.add(name);
                             } else {
-                                fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:name' attribute: %s",
                                         error.string());
                                 goto bail;
                             }
@@ -1847,8 +1872,9 @@
                     } else if (withinService && tag == "meta-data") {
                         String8 name = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute for "
-                                    "meta-data tag in service '%s': %s\n", serviceName.string(),
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute for "
+                                    "meta-data tag in service '%s': %s", serviceName.string(),
                                     error.string());
                             goto bail;
                         }
@@ -1863,8 +1889,9 @@
                             String8 xmlPath = AaptXml::getResolvedAttribute(res, tree,
                                     RESOURCE_ATTR, &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting 'android:resource' attribute for "
-                                        "meta-data tag in service '%s': %s\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting 'android:resource' attribute for "
+                                        "meta-data tag in service '%s': %s",
                                         serviceName.string(), error.string());
                                 goto bail;
                             }
@@ -1872,7 +1899,8 @@
                             Vector<String8> categories = getNfcAidCategories(assets, xmlPath,
                                     offHost, &error);
                             if (error != "") {
-                                fprintf(stderr, "ERROR getting AID category for service '%s'\n",
+                                SourcePos(manifestFile, tree.getLineNumber()).error(
+                                        "ERROR getting AID category for service '%s'",
                                         serviceName.string());
                                 goto bail;
                             }
@@ -1893,8 +1921,8 @@
                     if (tag == "action") {
                         action = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'android:name' attribute: %s", error.string());
                             goto bail;
                         }
 
@@ -1949,8 +1977,8 @@
                     if (tag == "category") {
                         String8 category = AaptXml::getAttribute(tree, NAME_ATTR, &error);
                         if (error != "") {
-                            fprintf(stderr, "ERROR getting 'name' attribute: %s\n",
-                                    error.string());
+                            SourcePos(manifestFile, tree.getLineNumber()).error(
+                                    "ERROR getting 'name' attribute: %s", error.string());
                             goto bail;
                         }
                         if (withinActivity) {
@@ -2261,6 +2289,10 @@
     result = NO_ERROR;
 
 bail:
+    if (SourcePos::hasErrors()) {
+        SourcePos::printErrors(stderr);
+    }
+
     if (asset) {
         delete asset;
     }
diff --git a/tools/aapt/Images.cpp b/tools/aapt/Images.cpp
index 9939c18..aea16c7 100644
--- a/tools/aapt/Images.cpp
+++ b/tools/aapt/Images.cpp
@@ -808,13 +808,13 @@
     assert(outPatch->paddingTop == inPatch->paddingTop);
     assert(outPatch->paddingBottom == inPatch->paddingBottom);
     for (int i = 0; i < outPatch->numXDivs; i++) {
-        assert(outPatch->xDivs[i] == inPatch->xDivs[i]);
+        assert(outPatch->getXDivs()[i] == inPatch->getXDivs()[i]);
     }
     for (int i = 0; i < outPatch->numYDivs; i++) {
-        assert(outPatch->yDivs[i] == inPatch->yDivs[i]);
+        assert(outPatch->getYDivs()[i] == inPatch->getYDivs()[i]);
     }
     for (int i = 0; i < outPatch->numColors; i++) {
-        assert(outPatch->colors[i] == inPatch->colors[i]);
+        assert(outPatch->getColors()[i] == inPatch->getColors()[i]);
     }
     free(newData);
 }
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index e640733..b278831 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -326,13 +326,18 @@
         }
         String8 resPath = it.getPath();
         resPath.convertToResPath();
-        table->addEntry(SourcePos(it.getPath(), 0), String16(assets->getPackage()),
+        status_t result = table->addEntry(SourcePos(it.getPath(), 0),
+                        String16(assets->getPackage()),
                         type16,
                         baseName,
                         String16(resPath),
                         NULL,
                         &it.getParams());
-        assets->addResource(it.getLeafName(), resPath, it.getFile(), type8);
+        if (result != NO_ERROR) {
+            hasErrors = true;
+        } else {
+            assets->addResource(it.getLeafName(), resPath, it.getFile(), type8);
+        }
     }
 
     return hasErrors ? STATUST(UNKNOWN_ERROR) : NO_ERROR;
@@ -1370,6 +1375,10 @@
         }
     }
 
+    if (hasErrors) {
+        return UNKNOWN_ERROR;
+    }
+
     // --------------------------------------------------------------------
     // Assignment of resource IDs and initial generation of resource table.
     // --------------------------------------------------------------------
@@ -2920,6 +2929,19 @@
         if (!keepTag && inApplication && depth == 3) {
             if (tag == "activity" || tag == "service" || tag == "receiver" || tag == "provider") {
                 keepTag = true;
+
+                if (mainDex) {
+                    String8 componentProcess = AaptXml::getAttribute(tree,
+                            "http://schemas.android.com/apk/res/android", "process", &error);
+                    if (error != "") {
+                        fprintf(stderr, "ERROR: %s\n", error.string());
+                        return -1;
+                    }
+
+                    const String8& process =
+                            componentProcess.length() > 0 ? componentProcess : defaultProcess;
+                    keepTag = process.length() > 0 && process.find(":") != 0;
+                }
             }
         }
         if (keepTag) {
@@ -2932,19 +2954,6 @@
 
             keepTag = name.length() > 0;
 
-            if (keepTag && mainDex) {
-                String8 componentProcess = AaptXml::getAttribute(tree,
-                        "http://schemas.android.com/apk/res/android", "process", &error);
-                if (error != "") {
-                    fprintf(stderr, "ERROR: %s\n", error.string());
-                    return -1;
-                }
-
-                const String8& process =
-                        componentProcess.length() > 0 ? componentProcess : defaultProcess;
-                keepTag = process.length() > 0 && process.find(":") != 0;
-            }
-
             if (keepTag) {
                 addProguardKeepRule(keep, name, pkg.string(),
                         assFile->getPrintableSource(), tree.getLineNumber());
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index 6a4b637..6d80a69 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -4521,6 +4521,7 @@
         const ConfigDescription& sourceConfig,
         const int sdkVersionToGenerate) {
     assert(sdkVersionToGenerate > sourceConfig.sdkVersion);
+    assert(configList != NULL);
     const DefaultKeyedVector<ConfigDescription, sp<ResourceTable::Entry>>& entries
             = configList->getEntries();
     ssize_t idx = entries.indexOfKey(sourceConfig);
diff --git a/tools/aapt2/Android.mk b/tools/aapt2/Android.mk
index f2c13ba..bbb9a51 100644
--- a/tools/aapt2/Android.mk
+++ b/tools/aapt2/Android.mk
@@ -103,6 +103,7 @@
 	java/JavaClassGenerator_test.cpp \
 	java/ManifestClassGenerator_test.cpp \
 	Locale_test.cpp \
+	NameMangler_test.cpp \
 	Resource_test.cpp \
 	ResourceParser_test.cpp \
 	ResourceTable_test.cpp \
diff --git a/tools/aapt2/AppInfo.h b/tools/aapt2/AppInfo.h
index 51d8ca6..1d39b72 100644
--- a/tools/aapt2/AppInfo.h
+++ b/tools/aapt2/AppInfo.h
@@ -31,12 +31,12 @@
     /**
      * App's package name.
      */
-    std::u16string package;
+    std::string package;
 
     /**
      * The App's minimum SDK version.
      */
-    Maybe<std::u16string> minSdkVersion;
+    Maybe<std::string> minSdkVersion;
 };
 
 } // namespace aapt
diff --git a/tools/aapt2/ConfigDescription.cpp b/tools/aapt2/ConfigDescription.cpp
index 13f8b3b..c1697e7 100644
--- a/tools/aapt2/ConfigDescription.cpp
+++ b/tools/aapt2/ConfigDescription.cpp
@@ -783,4 +783,10 @@
     }
 }
 
+ConfigDescription ConfigDescription::copyWithoutSdkVersion() const {
+    ConfigDescription copy = *this;
+    copy.sdkVersion = 0;
+    return copy;
+}
+
 } // namespace aapt
diff --git a/tools/aapt2/ConfigDescription.h b/tools/aapt2/ConfigDescription.h
index 5749816..ef0d147 100644
--- a/tools/aapt2/ConfigDescription.h
+++ b/tools/aapt2/ConfigDescription.h
@@ -65,6 +65,8 @@
     bool operator!=(const ConfigDescription& o) const;
     bool operator>=(const ConfigDescription& o) const;
     bool operator>(const ConfigDescription& o) const;
+
+    ConfigDescription copyWithoutSdkVersion() const;
 };
 
 inline ConfigDescription::ConfigDescription() {
diff --git a/tools/aapt2/ConfigDescription_test.cpp b/tools/aapt2/ConfigDescription_test.cpp
index e68d6be..455a57f 100644
--- a/tools/aapt2/ConfigDescription_test.cpp
+++ b/tools/aapt2/ConfigDescription_test.cpp
@@ -16,10 +16,9 @@
 
 #include "ConfigDescription.h"
 #include "SdkConstants.h"
-
+#include "test/Test.h"
 #include "util/StringPiece.h"
 
-#include <gtest/gtest.h>
 #include <string>
 
 namespace aapt {
diff --git a/tools/aapt2/Flags.cpp b/tools/aapt2/Flags.cpp
index 666e8a8e..2033a4c 100644
--- a/tools/aapt2/Flags.cpp
+++ b/tools/aapt2/Flags.cpp
@@ -101,7 +101,7 @@
         // Split the description by newlines and write out the argument (which is empty after
         // the first line) followed by the description line. This will make sure that multiline
         // descriptions are still right justified and aligned.
-        for (StringPiece line : util::tokenize<char>(flag.description, '\n')) {
+        for (StringPiece line : util::tokenize(flag.description, '\n')) {
             *out << " " << std::setw(kWidth) << std::left << argLine << line << "\n";
             argLine = " ";
         }
diff --git a/tools/aapt2/Locale_test.cpp b/tools/aapt2/Locale_test.cpp
index 758e1e3..e4b8ce7 100644
--- a/tools/aapt2/Locale_test.cpp
+++ b/tools/aapt2/Locale_test.cpp
@@ -23,7 +23,7 @@
 namespace aapt {
 
 static ::testing::AssertionResult TestLanguage(const char* input, const char* lang) {
-    std::vector<std::string> parts = util::splitAndLowercase(std::string(input), '-');
+    std::vector<std::string> parts = util::splitAndLowercase(input, '-');
     LocaleValue lv;
     ssize_t count = lv.initFromParts(std::begin(parts), std::end(parts));
     if (count < 0) {
@@ -45,7 +45,7 @@
 
 static ::testing::AssertionResult TestLanguageRegion(const char* input, const char* lang,
                                                      const char* region) {
-    std::vector<std::string> parts = util::splitAndLowercase(std::string(input), '-');
+    std::vector<std::string> parts = util::splitAndLowercase(input, '-');
     LocaleValue lv;
     ssize_t count = lv.initFromParts(std::begin(parts), std::end(parts));
     if (count < 0) {
diff --git a/tools/aapt2/NameMangler.h b/tools/aapt2/NameMangler.h
index 054b9ee..505a982e 100644
--- a/tools/aapt2/NameMangler.h
+++ b/tools/aapt2/NameMangler.h
@@ -18,7 +18,6 @@
 #define AAPT_NAME_MANGLER_H
 
 #include "Resource.h"
-
 #include "util/Maybe.h"
 
 #include <set>
@@ -31,12 +30,12 @@
      * Represents the package we are trying to build. References pointing
      * to this package are not mangled, and mangled references inherit this package name.
      */
-    std::u16string targetPackageName;
+    std::string targetPackageName;
 
     /**
      * We must know which references to mangle, and which to keep (android vs. com.android.support).
      */
-    std::set<std::u16string> packagesToMangle;
+    std::set<std::string> packagesToMangle;
 };
 
 class NameMangler {
@@ -53,14 +52,11 @@
             return {};
         }
 
-        return ResourceName{
-                mPolicy.targetPackageName,
-                name.type,
-                mangleEntry(name.package, name.entry)
-        };
+        std::string mangledEntryName = mangleEntry(name.package, name.entry);
+        return ResourceName(mPolicy.targetPackageName, name.type, mangledEntryName);
     }
 
-    bool shouldMangle(const std::u16string& package) const {
+    bool shouldMangle(const std::string& package) const {
         if (package.empty() || mPolicy.targetPackageName == package) {
             return false;
         }
@@ -72,8 +68,8 @@
      * The mangled name should contain symbols that are illegal to define in XML,
      * so that there will never be name mangling collisions.
      */
-    static std::u16string mangleEntry(const std::u16string& package, const std::u16string& name) {
-        return package + u"$" + name;
+    static std::string mangleEntry(const std::string& package, const std::string& name) {
+        return package + "$" + name;
     }
 
     /**
@@ -81,8 +77,8 @@
      * and the package in `outPackage`. Returns true if the name was unmangled or
      * false if the name was never mangled to begin with.
      */
-    static bool unmangle(std::u16string* outName, std::u16string* outPackage) {
-        size_t pivot = outName->find(u'$');
+    static bool unmangle(std::string* outName, std::string* outPackage) {
+        size_t pivot = outName->find('$');
         if (pivot == std::string::npos) {
             return false;
         }
diff --git a/tools/aapt2/NameMangler_test.cpp b/tools/aapt2/NameMangler_test.cpp
index 6103655..f624df2 100644
--- a/tools/aapt2/NameMangler_test.cpp
+++ b/tools/aapt2/NameMangler_test.cpp
@@ -15,31 +15,32 @@
  */
 
 #include "NameMangler.h"
+#include "test/Test.h"
 
-#include <gtest/gtest.h>
 #include <string>
 
 namespace aapt {
 
 TEST(NameManglerTest, MangleName) {
-    std::u16string package = u"android.appcompat";
-    std::u16string name = u"Platform.AppCompat";
+    std::string package = "android.appcompat";
+    std::string name = "Platform.AppCompat";
 
-    NameMangler::mangle(package, &name);
-    EXPECT_EQ(name, u"android.appcompat$Platform.AppCompat");
+    std::string mangledName = NameMangler::mangleEntry(package, name);
+    EXPECT_EQ(mangledName, "android.appcompat$Platform.AppCompat");
 
-    std::u16string newPackage;
-    ASSERT_TRUE(NameMangler::unmangle(&name, &newPackage));
-    EXPECT_EQ(name, u"Platform.AppCompat");
-    EXPECT_EQ(newPackage, u"android.appcompat");
+    std::string unmangledPackage;
+    std::string unmangledName = mangledName;
+    ASSERT_TRUE(NameMangler::unmangle(&unmangledName, &unmangledPackage));
+    EXPECT_EQ(unmangledName, "Platform.AppCompat");
+    EXPECT_EQ(unmangledPackage, "android.appcompat");
 }
 
 TEST(NameManglerTest, IgnoreUnmangledName) {
-    std::u16string package;
-    std::u16string name = u"foo_bar";
+    std::string package;
+    std::string name = "foo_bar";
 
     EXPECT_FALSE(NameMangler::unmangle(&name, &package));
-    EXPECT_EQ(name, u"foo_bar");
+    EXPECT_EQ(name, "foo_bar");
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/Resource.cpp b/tools/aapt2/Resource.cpp
index 9328b69..b7a091e 100644
--- a/tools/aapt2/Resource.cpp
+++ b/tools/aapt2/Resource.cpp
@@ -22,62 +22,62 @@
 
 namespace aapt {
 
-StringPiece16 toString(ResourceType type) {
+StringPiece toString(ResourceType type) {
     switch (type) {
-        case ResourceType::kAnim:          return u"anim";
-        case ResourceType::kAnimator:      return u"animator";
-        case ResourceType::kArray:         return u"array";
-        case ResourceType::kAttr:          return u"attr";
-        case ResourceType::kAttrPrivate:   return u"^attr-private";
-        case ResourceType::kBool:          return u"bool";
-        case ResourceType::kColor:         return u"color";
-        case ResourceType::kDimen:         return u"dimen";
-        case ResourceType::kDrawable:      return u"drawable";
-        case ResourceType::kFraction:      return u"fraction";
-        case ResourceType::kId:            return u"id";
-        case ResourceType::kInteger:       return u"integer";
-        case ResourceType::kInterpolator:  return u"interpolator";
-        case ResourceType::kLayout:        return u"layout";
-        case ResourceType::kMenu:          return u"menu";
-        case ResourceType::kMipmap:        return u"mipmap";
-        case ResourceType::kPlurals:       return u"plurals";
-        case ResourceType::kRaw:           return u"raw";
-        case ResourceType::kString:        return u"string";
-        case ResourceType::kStyle:         return u"style";
-        case ResourceType::kStyleable:     return u"styleable";
-        case ResourceType::kTransition:    return u"transition";
-        case ResourceType::kXml:           return u"xml";
+        case ResourceType::kAnim:          return "anim";
+        case ResourceType::kAnimator:      return "animator";
+        case ResourceType::kArray:         return "array";
+        case ResourceType::kAttr:          return "attr";
+        case ResourceType::kAttrPrivate:   return "^attr-private";
+        case ResourceType::kBool:          return "bool";
+        case ResourceType::kColor:         return "color";
+        case ResourceType::kDimen:         return "dimen";
+        case ResourceType::kDrawable:      return "drawable";
+        case ResourceType::kFraction:      return "fraction";
+        case ResourceType::kId:            return "id";
+        case ResourceType::kInteger:       return "integer";
+        case ResourceType::kInterpolator:  return "interpolator";
+        case ResourceType::kLayout:        return "layout";
+        case ResourceType::kMenu:          return "menu";
+        case ResourceType::kMipmap:        return "mipmap";
+        case ResourceType::kPlurals:       return "plurals";
+        case ResourceType::kRaw:           return "raw";
+        case ResourceType::kString:        return "string";
+        case ResourceType::kStyle:         return "style";
+        case ResourceType::kStyleable:     return "styleable";
+        case ResourceType::kTransition:    return "transition";
+        case ResourceType::kXml:           return "xml";
     }
     return {};
 }
 
-static const std::map<StringPiece16, ResourceType> sResourceTypeMap {
-        { u"anim", ResourceType::kAnim },
-        { u"animator", ResourceType::kAnimator },
-        { u"array", ResourceType::kArray },
-        { u"attr", ResourceType::kAttr },
-        { u"^attr-private", ResourceType::kAttrPrivate },
-        { u"bool", ResourceType::kBool },
-        { u"color", ResourceType::kColor },
-        { u"dimen", ResourceType::kDimen },
-        { u"drawable", ResourceType::kDrawable },
-        { u"fraction", ResourceType::kFraction },
-        { u"id", ResourceType::kId },
-        { u"integer", ResourceType::kInteger },
-        { u"interpolator", ResourceType::kInterpolator },
-        { u"layout", ResourceType::kLayout },
-        { u"menu", ResourceType::kMenu },
-        { u"mipmap", ResourceType::kMipmap },
-        { u"plurals", ResourceType::kPlurals },
-        { u"raw", ResourceType::kRaw },
-        { u"string", ResourceType::kString },
-        { u"style", ResourceType::kStyle },
-        { u"styleable", ResourceType::kStyleable },
-        { u"transition", ResourceType::kTransition },
-        { u"xml", ResourceType::kXml },
+static const std::map<StringPiece, ResourceType> sResourceTypeMap {
+        { "anim", ResourceType::kAnim },
+        { "animator", ResourceType::kAnimator },
+        { "array", ResourceType::kArray },
+        { "attr", ResourceType::kAttr },
+        { "^attr-private", ResourceType::kAttrPrivate },
+        { "bool", ResourceType::kBool },
+        { "color", ResourceType::kColor },
+        { "dimen", ResourceType::kDimen },
+        { "drawable", ResourceType::kDrawable },
+        { "fraction", ResourceType::kFraction },
+        { "id", ResourceType::kId },
+        { "integer", ResourceType::kInteger },
+        { "interpolator", ResourceType::kInterpolator },
+        { "layout", ResourceType::kLayout },
+        { "menu", ResourceType::kMenu },
+        { "mipmap", ResourceType::kMipmap },
+        { "plurals", ResourceType::kPlurals },
+        { "raw", ResourceType::kRaw },
+        { "string", ResourceType::kString },
+        { "style", ResourceType::kStyle },
+        { "styleable", ResourceType::kStyleable },
+        { "transition", ResourceType::kTransition },
+        { "xml", ResourceType::kXml },
 };
 
-const ResourceType* parseResourceType(const StringPiece16& str) {
+const ResourceType* parseResourceType(const StringPiece& str) {
     auto iter = sResourceTypeMap.find(str);
     if (iter == std::end(sResourceTypeMap)) {
         return nullptr;
diff --git a/tools/aapt2/Resource.h b/tools/aapt2/Resource.h
index 03ca42b..22d75a2 100644
--- a/tools/aapt2/Resource.h
+++ b/tools/aapt2/Resource.h
@@ -24,6 +24,7 @@
 
 #include <iomanip>
 #include <limits>
+#include <sstream>
 #include <string>
 #include <tuple>
 #include <vector>
@@ -60,28 +61,28 @@
     kXml,
 };
 
-StringPiece16 toString(ResourceType type);
+StringPiece toString(ResourceType type);
 
 /**
  * Returns a pointer to a valid ResourceType, or nullptr if
  * the string was invalid.
  */
-const ResourceType* parseResourceType(const StringPiece16& str);
+const ResourceType* parseResourceType(const StringPiece& str);
 
 /**
  * A resource's name. This can uniquely identify
  * a resource in the ResourceTable.
  */
 struct ResourceName {
-    std::u16string package;
+    std::string package;
     ResourceType type;
-    std::u16string entry;
+    std::string entry;
 
     ResourceName() : type(ResourceType::kRaw) {}
-    ResourceName(const StringPiece16& p, ResourceType t, const StringPiece16& e);
+    ResourceName(const StringPiece& p, ResourceType t, const StringPiece& e);
 
     bool isValid() const;
-    std::u16string toString() const;
+    std::string toString() const;
 };
 
 /**
@@ -91,15 +92,15 @@
  * of the original string.
  */
 struct ResourceNameRef {
-    StringPiece16 package;
+    StringPiece package;
     ResourceType type;
-    StringPiece16 entry;
+    StringPiece entry;
 
     ResourceNameRef() = default;
     ResourceNameRef(const ResourceNameRef&) = default;
     ResourceNameRef(ResourceNameRef&&) = default;
     ResourceNameRef(const ResourceName& rhs);
-    ResourceNameRef(const StringPiece16& p, ResourceType t, const StringPiece16& e);
+    ResourceNameRef(const StringPiece& p, ResourceType t, const StringPiece& e);
     ResourceNameRef& operator=(const ResourceNameRef& rhs) = default;
     ResourceNameRef& operator=(ResourceNameRef&& rhs) = default;
     ResourceNameRef& operator=(const ResourceName& rhs);
@@ -252,7 +253,7 @@
 // ResourceName implementation.
 //
 
-inline ResourceName::ResourceName(const StringPiece16& p, ResourceType t, const StringPiece16& e) :
+inline ResourceName::ResourceName(const StringPiece& p, ResourceType t, const StringPiece& e) :
         package(p.toString()), type(t), entry(e.toString()) {
 }
 
@@ -275,14 +276,6 @@
             != std::tie(rhs.package, rhs.type, rhs.entry);
 }
 
-inline std::u16string ResourceName::toString() const {
-    std::u16string result;
-    if (!package.empty()) {
-        result = package + u":";
-    }
-    return result + aapt::toString(type).toString() + u"/" + entry;
-}
-
 inline ::std::ostream& operator<<(::std::ostream& out, const ResourceName& name) {
     if (!name.package.empty()) {
         out << name.package << ":";
@@ -290,6 +283,11 @@
     return out << name.type << "/" << name.entry;
 }
 
+inline std::string ResourceName::toString() const {
+    std::stringstream stream;
+    stream << *this;
+    return stream.str();
+}
 
 //
 // ResourceNameRef implementation.
@@ -299,8 +297,8 @@
         package(rhs.package), type(rhs.type), entry(rhs.entry) {
 }
 
-inline ResourceNameRef::ResourceNameRef(const StringPiece16& p, ResourceType t,
-                                        const StringPiece16& e) :
+inline ResourceNameRef::ResourceNameRef(const StringPiece& p, ResourceType t,
+                                        const StringPiece& e) :
         package(p), type(t), entry(e) {
 }
 
@@ -312,7 +310,7 @@
 }
 
 inline ResourceName ResourceNameRef::toResourceName() const {
-    return { package.toString(), type, entry.toString() };
+    return ResourceName(package, type, entry);
 }
 
 inline bool ResourceNameRef::isValid() const {
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp
index a84c306..45d3db9 100644
--- a/tools/aapt2/ResourceParser.cpp
+++ b/tools/aapt2/ResourceParser.cpp
@@ -28,33 +28,33 @@
 
 namespace aapt {
 
-constexpr const char16_t* sXliffNamespaceUri = u"urn:oasis:names:tc:xliff:document:1.2";
+constexpr const char* sXliffNamespaceUri = "urn:oasis:names:tc:xliff:document:1.2";
 
 /**
  * Returns true if the element is <skip> or <eat-comment> and can be safely ignored.
  */
-static bool shouldIgnoreElement(const StringPiece16& ns, const StringPiece16& name) {
-    return ns.empty() && (name == u"skip" || name == u"eat-comment");
+static bool shouldIgnoreElement(const StringPiece& ns, const StringPiece& name) {
+    return ns.empty() && (name == "skip" || name == "eat-comment");
 }
 
-static uint32_t parseFormatType(const StringPiece16& piece) {
-    if (piece == u"reference")      return android::ResTable_map::TYPE_REFERENCE;
-    else if (piece == u"string")    return android::ResTable_map::TYPE_STRING;
-    else if (piece == u"integer")   return android::ResTable_map::TYPE_INTEGER;
-    else if (piece == u"boolean")   return android::ResTable_map::TYPE_BOOLEAN;
-    else if (piece == u"color")     return android::ResTable_map::TYPE_COLOR;
-    else if (piece == u"float")     return android::ResTable_map::TYPE_FLOAT;
-    else if (piece == u"dimension") return android::ResTable_map::TYPE_DIMENSION;
-    else if (piece == u"fraction")  return android::ResTable_map::TYPE_FRACTION;
-    else if (piece == u"enum")      return android::ResTable_map::TYPE_ENUM;
-    else if (piece == u"flags")     return android::ResTable_map::TYPE_FLAGS;
+static uint32_t parseFormatType(const StringPiece& piece) {
+    if (piece == "reference")      return android::ResTable_map::TYPE_REFERENCE;
+    else if (piece == "string")    return android::ResTable_map::TYPE_STRING;
+    else if (piece == "integer")   return android::ResTable_map::TYPE_INTEGER;
+    else if (piece == "boolean")   return android::ResTable_map::TYPE_BOOLEAN;
+    else if (piece == "color")     return android::ResTable_map::TYPE_COLOR;
+    else if (piece == "float")     return android::ResTable_map::TYPE_FLOAT;
+    else if (piece == "dimension") return android::ResTable_map::TYPE_DIMENSION;
+    else if (piece == "fraction")  return android::ResTable_map::TYPE_FRACTION;
+    else if (piece == "enum")      return android::ResTable_map::TYPE_ENUM;
+    else if (piece == "flags")     return android::ResTable_map::TYPE_FLAGS;
     return 0;
 }
 
-static uint32_t parseFormatAttribute(const StringPiece16& str) {
+static uint32_t parseFormatAttribute(const StringPiece& str) {
     uint32_t mask = 0;
-    for (StringPiece16 part : util::tokenize(str, u'|')) {
-        StringPiece16 trimmedPart = util::trimWhitespace(part);
+    for (StringPiece part : util::tokenize(str, '|')) {
+        StringPiece trimmedPart = util::trimWhitespace(part);
         uint32_t type = parseFormatType(trimmedPart);
         if (type == 0) {
             return 0;
@@ -74,14 +74,14 @@
     Source source;
     ResourceId id;
     Maybe<SymbolState> symbolState;
-    std::u16string comment;
+    std::string comment;
     std::unique_ptr<Value> value;
     std::list<ParsedResource> childResources;
 };
 
 // Recursively adds resources to the ResourceTable.
 static bool addResourcesToTable(ResourceTable* table, IDiagnostics* diag, ParsedResource* res) {
-    StringPiece16 trimmedComment = util::trimWhitespace(res->comment);
+    StringPiece trimmedComment = util::trimWhitespace(res->comment);
     if (trimmedComment.size() != res->comment.size()) {
         // Only if there was a change do we re-assign.
         res->comment = trimmedComment.toString();
@@ -130,7 +130,7 @@
 /**
  * Build a string from XML that converts nested elements into Span objects.
  */
-bool ResourceParser::flattenXmlSubtree(xml::XmlPullParser* parser, std::u16string* outRawString,
+bool ResourceParser::flattenXmlSubtree(xml::XmlPullParser* parser, std::string* outRawString,
                                        StyleString* outStyleString) {
     std::vector<Span> spanStack;
 
@@ -176,12 +176,12 @@
             depth++;
 
             // Build a span object out of the nested element.
-            std::u16string spanName = parser->getElementName();
+            std::string spanName = parser->getElementName();
             const auto endAttrIter = parser->endAttributes();
             for (auto attrIter = parser->beginAttributes(); attrIter != endAttrIter; ++attrIter) {
-                spanName += u";";
+                spanName += ";";
                 spanName += attrIter->name;
-                spanName += u"=";
+                spanName += "=";
                 spanName += attrIter->value;
             }
 
@@ -214,7 +214,7 @@
             continue;
         }
 
-        if (!parser->getElementNamespace().empty() || parser->getElementName() != u"resources") {
+        if (!parser->getElementNamespace().empty() || parser->getElementName() != "resources") {
             mDiag->error(DiagMessage(mSource.withLine(parser->getLineNumber()))
                          << "root element must be <resources>");
             return false;
@@ -236,7 +236,7 @@
     std::set<ResourceName> strippedResources;
 
     bool error = false;
-    std::u16string comment;
+    std::string comment;
     const size_t depth = parser->getDepth();
     while (xml::XmlPullParser::nextChildNode(parser, depth)) {
         const xml::XmlPullParser::Event event = parser->getEvent();
@@ -261,9 +261,9 @@
             continue;
         }
 
-        std::u16string elementName = parser->getElementName();
-        if (elementName == u"skip" || elementName == u"eat-comment") {
-            comment = u"";
+        std::string elementName = parser->getElementName();
+        if (elementName == "skip" || elementName == "eat-comment") {
+            comment = "";
             continue;
         }
 
@@ -273,8 +273,8 @@
         parsedResource.comment = std::move(comment);
 
         // Extract the product name if it exists.
-        if (Maybe<StringPiece16> maybeProduct = xml::findNonEmptyAttribute(parser, u"product")) {
-            parsedResource.product = util::utf16ToUtf8(maybeProduct.value());
+        if (Maybe<StringPiece> maybeProduct = xml::findNonEmptyAttribute(parser, "product")) {
+            parsedResource.product = maybeProduct.value().toString();
         }
 
         // Parse the resource regardless of product.
@@ -310,43 +310,43 @@
 
     using BagParseFunc = std::function<bool(ResourceParser*, xml::XmlPullParser*, ParsedResource*)>;
 
-    static const auto elToItemMap = ImmutableMap<std::u16string, ItemTypeFormat>::createPreSorted({
-            { u"bool",      { ResourceType::kBool, android::ResTable_map::TYPE_BOOLEAN } },
-            { u"color",     { ResourceType::kColor, android::ResTable_map::TYPE_COLOR } },
-            { u"dimen",     { ResourceType::kDimen, android::ResTable_map::TYPE_FLOAT
+    static const auto elToItemMap = ImmutableMap<std::string, ItemTypeFormat>::createPreSorted({
+            { "bool",      { ResourceType::kBool, android::ResTable_map::TYPE_BOOLEAN } },
+            { "color",     { ResourceType::kColor, android::ResTable_map::TYPE_COLOR } },
+            { "dimen",     { ResourceType::kDimen, android::ResTable_map::TYPE_FLOAT
                                                     | android::ResTable_map::TYPE_FRACTION
                                                     | android::ResTable_map::TYPE_DIMENSION } },
-            { u"drawable",  { ResourceType::kDrawable, android::ResTable_map::TYPE_COLOR } },
-            { u"fraction",  { ResourceType::kFraction, android::ResTable_map::TYPE_FLOAT
+            { "drawable",  { ResourceType::kDrawable, android::ResTable_map::TYPE_COLOR } },
+            { "fraction",  { ResourceType::kFraction, android::ResTable_map::TYPE_FLOAT
                                                        | android::ResTable_map::TYPE_FRACTION
                                                        | android::ResTable_map::TYPE_DIMENSION } },
-            { u"integer",   { ResourceType::kInteger, android::ResTable_map::TYPE_INTEGER } },
-            { u"string",    { ResourceType::kString, android::ResTable_map::TYPE_STRING } },
+            { "integer",   { ResourceType::kInteger, android::ResTable_map::TYPE_INTEGER } },
+            { "string",    { ResourceType::kString, android::ResTable_map::TYPE_STRING } },
     });
 
-    static const auto elToBagMap = ImmutableMap<std::u16string, BagParseFunc>::createPreSorted({
-            { u"add-resource",      std::mem_fn(&ResourceParser::parseAddResource) },
-            { u"array",             std::mem_fn(&ResourceParser::parseArray) },
-            { u"attr",              std::mem_fn(&ResourceParser::parseAttr) },
-            { u"declare-styleable", std::mem_fn(&ResourceParser::parseDeclareStyleable) },
-            { u"integer-array",     std::mem_fn(&ResourceParser::parseIntegerArray) },
-            { u"java-symbol",       std::mem_fn(&ResourceParser::parseSymbol) },
-            { u"plurals",           std::mem_fn(&ResourceParser::parsePlural) },
-            { u"public",            std::mem_fn(&ResourceParser::parsePublic) },
-            { u"public-group",      std::mem_fn(&ResourceParser::parsePublicGroup) },
-            { u"string-array",      std::mem_fn(&ResourceParser::parseStringArray) },
-            { u"style",             std::mem_fn(&ResourceParser::parseStyle) },
-            { u"symbol",            std::mem_fn(&ResourceParser::parseSymbol) },
+    static const auto elToBagMap = ImmutableMap<std::string, BagParseFunc>::createPreSorted({
+            { "add-resource",      std::mem_fn(&ResourceParser::parseAddResource) },
+            { "array",             std::mem_fn(&ResourceParser::parseArray) },
+            { "attr",              std::mem_fn(&ResourceParser::parseAttr) },
+            { "declare-styleable", std::mem_fn(&ResourceParser::parseDeclareStyleable) },
+            { "integer-array",     std::mem_fn(&ResourceParser::parseIntegerArray) },
+            { "java-symbol",       std::mem_fn(&ResourceParser::parseSymbol) },
+            { "plurals",           std::mem_fn(&ResourceParser::parsePlural) },
+            { "public",            std::mem_fn(&ResourceParser::parsePublic) },
+            { "public-group",      std::mem_fn(&ResourceParser::parsePublicGroup) },
+            { "string-array",      std::mem_fn(&ResourceParser::parseStringArray) },
+            { "style",             std::mem_fn(&ResourceParser::parseStyle) },
+            { "symbol",            std::mem_fn(&ResourceParser::parseSymbol) },
     });
 
-    std::u16string resourceType = parser->getElementName();
+    std::string resourceType = parser->getElementName();
 
     // The value format accepted for this resource.
     uint32_t resourceFormat = 0u;
 
-    if (resourceType == u"item") {
+    if (resourceType == "item") {
         // Items have their type encoded in the type attribute.
-        if (Maybe<StringPiece16> maybeType = xml::findNonEmptyAttribute(parser, u"type")) {
+        if (Maybe<StringPiece> maybeType = xml::findNonEmptyAttribute(parser, "type")) {
             resourceType = maybeType.value().toString();
         } else {
             mDiag->error(DiagMessage(mSource.withLine(parser->getLineNumber()))
@@ -354,7 +354,7 @@
             return false;
         }
 
-        if (Maybe<StringPiece16> maybeFormat = xml::findNonEmptyAttribute(parser, u"format")) {
+        if (Maybe<StringPiece> maybeFormat = xml::findNonEmptyAttribute(parser, "format")) {
             // An explicit format for this resource was specified. The resource will retain
             // its type in its name, but the accepted value for this type is overridden.
             resourceFormat = parseFormatType(maybeFormat.value());
@@ -368,9 +368,9 @@
 
     // Get the name of the resource. This will be checked later, because not all
     // XML elements require a name.
-    Maybe<StringPiece16> maybeName = xml::findNonEmptyAttribute(parser, u"name");
+    Maybe<StringPiece> maybeName = xml::findNonEmptyAttribute(parser, "name");
 
-    if (resourceType == u"id") {
+    if (resourceType == "id") {
         if (!maybeName) {
             mDiag->error(DiagMessage(outResource->source)
                          << "<" << parser->getElementName() << "> missing 'name' attribute");
@@ -411,7 +411,7 @@
     const auto bagIter = elToBagMap.find(resourceType);
     if (bagIter != elToBagMap.end()) {
         // Ensure we have a name (unless this is a <public-group>).
-        if (resourceType != u"public-group") {
+        if (resourceType != "public-group") {
             if (!maybeName) {
                 mDiag->error(DiagMessage(outResource->source)
                              << "<" << parser->getElementName() << "> missing 'name' attribute");
@@ -480,7 +480,7 @@
                                                const bool allowRawValue) {
     const size_t beginXmlLine = parser->getLineNumber();
 
-    std::u16string rawValue;
+    std::string rawValue;
     StyleString styleString;
     if (!flattenXmlSubtree(parser, &rawValue, &styleString)) {
         return {};
@@ -505,7 +505,7 @@
     if (processedItem) {
         // Fix up the reference.
         if (Reference* ref = valueCast<Reference>(processedItem.get())) {
-            transformReferenceFromNamespace(parser, u"", ref);
+            transformReferenceFromNamespace(parser, "", ref);
         }
         return processedItem;
     }
@@ -527,7 +527,7 @@
 
 bool ResourceParser::parseString(xml::XmlPullParser* parser, ParsedResource* outResource) {
     bool formatted = true;
-    if (Maybe<StringPiece16> formattedAttr = xml::findAttribute(parser, u"formatted")) {
+    if (Maybe<StringPiece> formattedAttr = xml::findAttribute(parser, "formatted")) {
         if (!ResourceUtils::tryParseBool(formattedAttr.value(), &formatted)) {
             mDiag->error(DiagMessage(outResource->source)
                          << "invalid value for 'formatted'. Must be a boolean");
@@ -536,7 +536,7 @@
     }
 
     bool translateable = mOptions.translatable;
-    if (Maybe<StringPiece16> translateableAttr = xml::findAttribute(parser, u"translatable")) {
+    if (Maybe<StringPiece> translateableAttr = xml::findAttribute(parser, "translatable")) {
         if (!ResourceUtils::tryParseBool(translateableAttr.value(), &translateable)) {
             mDiag->error(DiagMessage(outResource->source)
                          << "invalid value for 'translatable'. Must be a boolean");
@@ -574,7 +574,7 @@
 }
 
 bool ResourceParser::parsePublic(xml::XmlPullParser* parser, ParsedResource* outResource) {
-    Maybe<StringPiece16> maybeType = xml::findNonEmptyAttribute(parser, u"type");
+    Maybe<StringPiece> maybeType = xml::findNonEmptyAttribute(parser, "type");
     if (!maybeType) {
         mDiag->error(DiagMessage(outResource->source) << "<public> must have a 'type' attribute");
         return false;
@@ -589,10 +589,10 @@
 
     outResource->name.type = *parsedType;
 
-    if (Maybe<StringPiece16> maybeId = xml::findNonEmptyAttribute(parser, u"id")) {
+    if (Maybe<StringPiece> maybeId = xml::findNonEmptyAttribute(parser, "id")) {
         android::Res_value val;
-        bool result = android::ResTable::stringToInt(maybeId.value().data(),
-                                                     maybeId.value().size(), &val);
+        std::u16string idStr16 = util::utf8ToUtf16(maybeId.value());
+        bool result = android::ResTable::stringToInt(idStr16.data(), idStr16.size(), &val);
         ResourceId resourceId(val.data);
         if (!result || !resourceId.isValid()) {
             mDiag->error(DiagMessage(outResource->source)
@@ -612,7 +612,7 @@
 }
 
 bool ResourceParser::parsePublicGroup(xml::XmlPullParser* parser, ParsedResource* outResource) {
-    Maybe<StringPiece16> maybeType = xml::findNonEmptyAttribute(parser, u"type");
+    Maybe<StringPiece> maybeType = xml::findNonEmptyAttribute(parser, "type");
     if (!maybeType) {
         mDiag->error(DiagMessage(outResource->source)
                      << "<public-group> must have a 'type' attribute");
@@ -626,7 +626,7 @@
         return false;
     }
 
-    Maybe<StringPiece16> maybeId = xml::findNonEmptyAttribute(parser, u"first-id");
+    Maybe<StringPiece> maybeId = xml::findNonEmptyAttribute(parser, "first-id");
     if (!maybeId) {
         mDiag->error(DiagMessage(outResource->source)
                      << "<public-group> must have a 'first-id' attribute");
@@ -634,8 +634,8 @@
     }
 
     android::Res_value val;
-    bool result = android::ResTable::stringToInt(maybeId.value().data(),
-                                                 maybeId.value().size(), &val);
+    std::u16string idStr16 = util::utf8ToUtf16(maybeId.value());
+    bool result = android::ResTable::stringToInt(idStr16.data(), idStr16.size(), &val);
     ResourceId nextId(val.data);
     if (!result || !nextId.isValid()) {
         mDiag->error(DiagMessage(outResource->source)
@@ -643,7 +643,7 @@
         return false;
     }
 
-    std::u16string comment;
+    std::string comment;
     bool error = false;
     const size_t depth = parser->getDepth();
     while (xml::XmlPullParser::nextChildNode(parser, depth)) {
@@ -656,23 +656,23 @@
         }
 
         const Source itemSource = mSource.withLine(parser->getLineNumber());
-        const std::u16string& elementNamespace = parser->getElementNamespace();
-        const std::u16string& elementName = parser->getElementName();
-        if (elementNamespace.empty() && elementName == u"public") {
-            Maybe<StringPiece16> maybeName = xml::findNonEmptyAttribute(parser, u"name");
+        const std::string& elementNamespace = parser->getElementNamespace();
+        const std::string& elementName = parser->getElementName();
+        if (elementNamespace.empty() && elementName == "public") {
+            Maybe<StringPiece> maybeName = xml::findNonEmptyAttribute(parser, "name");
             if (!maybeName) {
                 mDiag->error(DiagMessage(itemSource) << "<public> must have a 'name' attribute");
                 error = true;
                 continue;
             }
 
-            if (xml::findNonEmptyAttribute(parser, u"id")) {
+            if (xml::findNonEmptyAttribute(parser, "id")) {
                 mDiag->error(DiagMessage(itemSource) << "'id' is ignored within <public-group>");
                 error = true;
                 continue;
             }
 
-            if (xml::findNonEmptyAttribute(parser, u"type")) {
+            if (xml::findNonEmptyAttribute(parser, "type")) {
                 mDiag->error(DiagMessage(itemSource) << "'type' is ignored within <public-group>");
                 error = true;
                 continue;
@@ -698,7 +698,7 @@
 }
 
 bool ResourceParser::parseSymbolImpl(xml::XmlPullParser* parser, ParsedResource* outResource) {
-    Maybe<StringPiece16> maybeType = xml::findNonEmptyAttribute(parser, u"type");
+    Maybe<StringPiece> maybeType = xml::findNonEmptyAttribute(parser, "type");
     if (!maybeType) {
         mDiag->error(DiagMessage(outResource->source)
                      << "<" << parser->getElementName() << "> must have a 'type' attribute");
@@ -751,7 +751,7 @@
 
     uint32_t typeMask = 0;
 
-    Maybe<StringPiece16> maybeFormat = xml::findAttribute(parser, u"format");
+    Maybe<StringPiece> maybeFormat = xml::findAttribute(parser, "format");
     if (maybeFormat) {
         typeMask = parseFormatAttribute(maybeFormat.value());
         if (typeMask == 0) {
@@ -763,11 +763,12 @@
 
     Maybe<int32_t> maybeMin, maybeMax;
 
-    if (Maybe<StringPiece16> maybeMinStr = xml::findAttribute(parser, u"min")) {
-        StringPiece16 minStr = util::trimWhitespace(maybeMinStr.value());
+    if (Maybe<StringPiece> maybeMinStr = xml::findAttribute(parser, "min")) {
+        StringPiece minStr = util::trimWhitespace(maybeMinStr.value());
         if (!minStr.empty()) {
+            std::u16string minStr16 = util::utf8ToUtf16(minStr);
             android::Res_value value;
-            if (android::ResTable::stringToInt(minStr.data(), minStr.size(), &value)) {
+            if (android::ResTable::stringToInt(minStr16.data(), minStr16.size(), &value)) {
                 maybeMin = static_cast<int32_t>(value.data);
             }
         }
@@ -779,11 +780,12 @@
         }
     }
 
-    if (Maybe<StringPiece16> maybeMaxStr = xml::findAttribute(parser, u"max")) {
-        StringPiece16 maxStr = util::trimWhitespace(maybeMaxStr.value());
+    if (Maybe<StringPiece> maybeMaxStr = xml::findAttribute(parser, "max")) {
+        StringPiece maxStr = util::trimWhitespace(maybeMaxStr.value());
         if (!maxStr.empty()) {
+            std::u16string maxStr16 = util::utf8ToUtf16(maxStr);
             android::Res_value value;
-            if (android::ResTable::stringToInt(maxStr.data(), maxStr.size(), &value)) {
+            if (android::ResTable::stringToInt(maxStr16.data(), maxStr16.size(), &value)) {
                 maybeMax = static_cast<int32_t>(value.data);
             }
         }
@@ -809,7 +811,7 @@
 
     std::set<Attribute::Symbol, SymbolComparator> items;
 
-    std::u16string comment;
+    std::string comment;
     bool error = false;
     const size_t depth = parser->getDepth();
     while (xml::XmlPullParser::nextChildNode(parser, depth)) {
@@ -822,10 +824,10 @@
         }
 
         const Source itemSource = mSource.withLine(parser->getLineNumber());
-        const std::u16string& elementNamespace = parser->getElementNamespace();
-        const std::u16string& elementName = parser->getElementName();
-        if (elementNamespace.empty() && (elementName == u"flag" || elementName == u"enum")) {
-            if (elementName == u"enum") {
+        const std::string& elementNamespace = parser->getElementNamespace();
+        const std::string& elementName = parser->getElementName();
+        if (elementNamespace.empty() && (elementName == "flag" || elementName == "enum")) {
+            if (elementName == "enum") {
                 if (typeMask & android::ResTable_map::TYPE_FLAGS) {
                     mDiag->error(DiagMessage(itemSource)
                                  << "can not define an <enum>; already defined a <flag>");
@@ -834,7 +836,7 @@
                 }
                 typeMask |= android::ResTable_map::TYPE_ENUM;
 
-            } else if (elementName == u"flag") {
+            } else if (elementName == "flag") {
                 if (typeMask & android::ResTable_map::TYPE_ENUM) {
                     mDiag->error(DiagMessage(itemSource)
                                  << "can not define a <flag>; already defined an <enum>");
@@ -896,24 +898,24 @@
 }
 
 Maybe<Attribute::Symbol> ResourceParser::parseEnumOrFlagItem(xml::XmlPullParser* parser,
-                                                             const StringPiece16& tag) {
+                                                             const StringPiece& tag) {
     const Source source = mSource.withLine(parser->getLineNumber());
 
-    Maybe<StringPiece16> maybeName = xml::findNonEmptyAttribute(parser, u"name");
+    Maybe<StringPiece> maybeName = xml::findNonEmptyAttribute(parser, "name");
     if (!maybeName) {
         mDiag->error(DiagMessage(source) << "no attribute 'name' found for tag <" << tag << ">");
         return {};
     }
 
-    Maybe<StringPiece16> maybeValue = xml::findNonEmptyAttribute(parser, u"value");
+    Maybe<StringPiece> maybeValue = xml::findNonEmptyAttribute(parser, "value");
     if (!maybeValue) {
         mDiag->error(DiagMessage(source) << "no attribute 'value' found for tag <" << tag << ">");
         return {};
     }
 
+    std::u16string value16 = util::utf8ToUtf16(maybeValue.value());
     android::Res_value val;
-    if (!android::ResTable::stringToInt(maybeValue.value().data(),
-                                        maybeValue.value().size(), &val)) {
+    if (!android::ResTable::stringToInt(value16.data(), value16.size(), &val)) {
         mDiag->error(DiagMessage(source) << "invalid value '" << maybeValue.value()
                      << "' for <" << tag << ">; must be an integer");
         return {};
@@ -923,25 +925,25 @@
             Reference(ResourceNameRef({}, ResourceType::kId, maybeName.value())), val.data };
 }
 
-static Maybe<Reference> parseXmlAttributeName(StringPiece16 str) {
+static Maybe<Reference> parseXmlAttributeName(StringPiece str) {
     str = util::trimWhitespace(str);
-    const char16_t* start = str.data();
-    const char16_t* const end = start + str.size();
-    const char16_t* p = start;
+    const char* start = str.data();
+    const char* const end = start + str.size();
+    const char* p = start;
 
     Reference ref;
-    if (p != end && *p == u'*') {
+    if (p != end && *p == '*') {
         ref.privateReference = true;
         start++;
         p++;
     }
 
-    StringPiece16 package;
-    StringPiece16 name;
+    StringPiece package;
+    StringPiece name;
     while (p != end) {
-        if (*p == u':') {
-            package = StringPiece16(start, p - start);
-            name = StringPiece16(p + 1, end - (p + 1));
+        if (*p == ':') {
+            package = StringPiece(start, p - start);
+            name = StringPiece(p + 1, end - (p + 1));
             break;
         }
         p++;
@@ -955,7 +957,7 @@
 bool ResourceParser::parseStyleItem(xml::XmlPullParser* parser, Style* style) {
     const Source source = mSource.withLine(parser->getLineNumber());
 
-    Maybe<StringPiece16> maybeName = xml::findNonEmptyAttribute(parser, u"name");
+    Maybe<StringPiece> maybeName = xml::findNonEmptyAttribute(parser, "name");
     if (!maybeName) {
         mDiag->error(DiagMessage(source) << "<item> must have a 'name' attribute");
         return false;
@@ -967,7 +969,7 @@
         return false;
     }
 
-    transformReferenceFromNamespace(parser, u"", &maybeKey.value());
+    transformReferenceFromNamespace(parser, "", &maybeKey.value());
     maybeKey.value().setSource(source);
 
     std::unique_ptr<Item> value = parseXml(parser, 0, kAllowRawString);
@@ -985,7 +987,7 @@
 
     std::unique_ptr<Style> style = util::make_unique<Style>();
 
-    Maybe<StringPiece16> maybeParent = xml::findAttribute(parser, u"parent");
+    Maybe<StringPiece> maybeParent = xml::findAttribute(parser, "parent");
     if (maybeParent) {
         // If the parent is empty, we don't have a parent, but we also don't infer either.
         if (!maybeParent.value().empty()) {
@@ -998,12 +1000,12 @@
 
             // Transform the namespace prefix to the actual package name, and mark the reference as
             // private if appropriate.
-            transformReferenceFromNamespace(parser, u"", &style->parent.value());
+            transformReferenceFromNamespace(parser, "", &style->parent.value());
         }
 
     } else {
         // No parent was specified, so try inferring it from the style name.
-        std::u16string styleName = outResource->name.entry;
+        std::string styleName = outResource->name.entry;
         size_t pos = styleName.find_last_of(u'.');
         if (pos != std::string::npos) {
             style->parentInferred = true;
@@ -1020,9 +1022,9 @@
             continue;
         }
 
-        const std::u16string& elementNamespace = parser->getElementNamespace();
-        const std::u16string& elementName = parser->getElementName();
-        if (elementNamespace == u"" && elementName == u"item") {
+        const std::string& elementNamespace = parser->getElementNamespace();
+        const std::string& elementName = parser->getElementName();
+        if (elementNamespace == "" && elementName == "item") {
             error |= !parseStyleItem(parser, style.get());
 
         } else if (!shouldIgnoreElement(elementNamespace, elementName)) {
@@ -1059,7 +1061,7 @@
     std::unique_ptr<Array> array = util::make_unique<Array>();
 
     bool translateable = mOptions.translatable;
-    if (Maybe<StringPiece16> translateableAttr = xml::findAttribute(parser, u"translatable")) {
+    if (Maybe<StringPiece> translateableAttr = xml::findAttribute(parser, "translatable")) {
         if (!ResourceUtils::tryParseBool(translateableAttr.value(), &translateable)) {
             mDiag->error(DiagMessage(outResource->source)
                          << "invalid value for 'translatable'. Must be a boolean");
@@ -1077,9 +1079,9 @@
         }
 
         const Source itemSource = mSource.withLine(parser->getLineNumber());
-        const std::u16string& elementNamespace = parser->getElementNamespace();
-        const std::u16string& elementName = parser->getElementName();
-        if (elementNamespace.empty() && elementName == u"item") {
+        const std::string& elementNamespace = parser->getElementNamespace();
+        const std::string& elementName = parser->getElementName();
+        if (elementNamespace.empty() && elementName == "item") {
             std::unique_ptr<Item> item = parseXml(parser, typeMask, kNoRawString);
             if (!item) {
                 mDiag->error(DiagMessage(itemSource) << "could not parse array item");
@@ -1118,10 +1120,10 @@
         }
 
         const Source itemSource = mSource.withLine(parser->getLineNumber());
-        const std::u16string& elementNamespace = parser->getElementNamespace();
-        const std::u16string& elementName = parser->getElementName();
-        if (elementNamespace.empty() && elementName == u"item") {
-            Maybe<StringPiece16> maybeQuantity = xml::findNonEmptyAttribute(parser, u"quantity");
+        const std::string& elementNamespace = parser->getElementNamespace();
+        const std::string& elementName = parser->getElementName();
+        if (elementNamespace.empty() && elementName == "item") {
+            Maybe<StringPiece> maybeQuantity = xml::findNonEmptyAttribute(parser, "quantity");
             if (!maybeQuantity) {
                 mDiag->error(DiagMessage(itemSource) << "<item> in <plurals> requires attribute "
                              << "'quantity'");
@@ -1129,19 +1131,19 @@
                 continue;
             }
 
-            StringPiece16 trimmedQuantity = util::trimWhitespace(maybeQuantity.value());
+            StringPiece trimmedQuantity = util::trimWhitespace(maybeQuantity.value());
             size_t index = 0;
-            if (trimmedQuantity == u"zero") {
+            if (trimmedQuantity == "zero") {
                 index = Plural::Zero;
-            } else if (trimmedQuantity == u"one") {
+            } else if (trimmedQuantity == "one") {
                 index = Plural::One;
-            } else if (trimmedQuantity == u"two") {
+            } else if (trimmedQuantity == "two") {
                 index = Plural::Two;
-            } else if (trimmedQuantity == u"few") {
+            } else if (trimmedQuantity == "few") {
                 index = Plural::Few;
-            } else if (trimmedQuantity == u"many") {
+            } else if (trimmedQuantity == "many") {
                 index = Plural::Many;
-            } else if (trimmedQuantity == u"other") {
+            } else if (trimmedQuantity == "other") {
                 index = Plural::Other;
             } else {
                 mDiag->error(DiagMessage(itemSource)
@@ -1196,7 +1198,7 @@
 
     std::unique_ptr<Styleable> styleable = util::make_unique<Styleable>();
 
-    std::u16string comment;
+    std::string comment;
     bool error = false;
     const size_t depth = parser->getDepth();
     while (xml::XmlPullParser::nextChildNode(parser, depth)) {
@@ -1209,10 +1211,10 @@
         }
 
         const Source itemSource = mSource.withLine(parser->getLineNumber());
-        const std::u16string& elementNamespace = parser->getElementNamespace();
-        const std::u16string& elementName = parser->getElementName();
-        if (elementNamespace.empty() && elementName == u"attr") {
-            Maybe<StringPiece16> maybeName = xml::findNonEmptyAttribute(parser, u"name");
+        const std::string& elementNamespace = parser->getElementNamespace();
+        const std::string& elementName = parser->getElementName();
+        if (elementNamespace.empty() && elementName == "attr") {
+            Maybe<StringPiece> maybeName = xml::findNonEmptyAttribute(parser, "name");
             if (!maybeName) {
                 mDiag->error(DiagMessage(itemSource) << "<attr> tag must have a 'name' attribute");
                 error = true;
@@ -1230,7 +1232,7 @@
             }
 
             Reference& childRef = maybeRef.value();
-            xml::transformReferenceFromNamespace(parser, u"", &childRef);
+            xml::transformReferenceFromNamespace(parser, "", &childRef);
 
             // Create the ParsedResource that will add the attribute to the table.
             ParsedResource childResource;
diff --git a/tools/aapt2/ResourceParser.h b/tools/aapt2/ResourceParser.h
index ee5b337..ece3090 100644
--- a/tools/aapt2/ResourceParser.h
+++ b/tools/aapt2/ResourceParser.h
@@ -63,7 +63,7 @@
      * contains the escaped and whitespace trimmed text, while `outRawString`
      * contains the unescaped text. Returns true on success.
      */
-    bool flattenXmlSubtree(xml::XmlPullParser* parser, std::u16string* outRawString,
+    bool flattenXmlSubtree(xml::XmlPullParser* parser, std::string* outRawString,
                            StyleString* outStyleString);
 
     /*
@@ -89,7 +89,7 @@
     bool parseAttr(xml::XmlPullParser* parser, ParsedResource* outResource);
     bool parseAttrImpl(xml::XmlPullParser* parser, ParsedResource* outResource, bool weak);
     Maybe<Attribute::Symbol> parseEnumOrFlagItem(xml::XmlPullParser* parser,
-                                                 const StringPiece16& tag);
+                                                 const StringPiece& tag);
     bool parseStyle(xml::XmlPullParser* parser, ParsedResource* outResource);
     bool parseStyleItem(xml::XmlPullParser* parser, Style* style);
     bool parseDeclareStyleable(xml::XmlPullParser* parser, ParsedResource* outResource);
diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp
index 3450de9..b456c04 100644
--- a/tools/aapt2/ResourceParser_test.cpp
+++ b/tools/aapt2/ResourceParser_test.cpp
@@ -18,10 +18,9 @@
 #include "ResourceTable.h"
 #include "ResourceUtils.h"
 #include "ResourceValues.h"
-#include "test/Context.h"
+#include "test/Test.h"
 #include "xml/XmlPullParser.h"
 
-#include <gtest/gtest.h>
 #include <sstream>
 #include <string>
 
@@ -69,18 +68,18 @@
     std::string input = "<string name=\"foo\">   \"  hey there \" </string>";
     ASSERT_TRUE(testParse(input));
 
-    String* str = test::getValue<String>(&mTable, u"@string/foo");
+    String* str = test::getValue<String>(&mTable, "@string/foo");
     ASSERT_NE(nullptr, str);
-    EXPECT_EQ(std::u16string(u"  hey there "), *str->value);
+    EXPECT_EQ(std::string("  hey there "), *str->value);
 }
 
 TEST_F(ResourceParserTest, ParseEscapedString) {
     std::string input = "<string name=\"foo\">\\?123</string>";
     ASSERT_TRUE(testParse(input));
 
-    String* str = test::getValue<String>(&mTable, u"@string/foo");
+    String* str = test::getValue<String>(&mTable, "@string/foo");
     ASSERT_NE(nullptr, str);
-    EXPECT_EQ(std::u16string(u"?123"), *str->value);
+    EXPECT_EQ(std::string("?123"), *str->value);
 }
 
 TEST_F(ResourceParserTest, ParseFormattedString) {
@@ -97,9 +96,9 @@
                         "  There are <xliff:g id=\"count\">%1$d</xliff:g> apples</string>";
     ASSERT_TRUE(testParse(input));
 
-    String* str = test::getValue<String>(&mTable, u"@string/foo");
+    String* str = test::getValue<String>(&mTable, "@string/foo");
     ASSERT_NE(nullptr, str);
-    EXPECT_EQ(StringPiece16(u"There are %1$d apples"), StringPiece16(*str->value));
+    EXPECT_EQ(StringPiece("There are %1$d apples"), StringPiece(*str->value));
 }
 
 TEST_F(ResourceParserTest, ParseNull) {
@@ -110,7 +109,7 @@
     // a non-existing value, and this causes problems in styles when trying to resolve
     // an attribute. Null values must be encoded as android::Res_value::TYPE_REFERENCE
     // with a data value of 0.
-    BinaryPrimitive* integer = test::getValue<BinaryPrimitive>(&mTable, u"@integer/foo");
+    BinaryPrimitive* integer = test::getValue<BinaryPrimitive>(&mTable, "@integer/foo");
     ASSERT_NE(nullptr, integer);
     EXPECT_EQ(uint16_t(android::Res_value::TYPE_REFERENCE), integer->value.dataType);
     EXPECT_EQ(0u, integer->value.data);
@@ -120,7 +119,7 @@
     std::string input = "<integer name=\"foo\">@empty</integer>";
     ASSERT_TRUE(testParse(input));
 
-    BinaryPrimitive* integer = test::getValue<BinaryPrimitive>(&mTable, u"@integer/foo");
+    BinaryPrimitive* integer = test::getValue<BinaryPrimitive>(&mTable, "@integer/foo");
     ASSERT_NE(nullptr, integer);
     EXPECT_EQ(uint16_t(android::Res_value::TYPE_NULL), integer->value.dataType);
     EXPECT_EQ(uint32_t(android::Res_value::DATA_NULL_EMPTY), integer->value.data);
@@ -131,11 +130,11 @@
                         "<attr name=\"bar\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Attribute* attr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* attr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(nullptr, attr);
     EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_STRING), attr->typeMask);
 
-    attr = test::getValue<Attribute>(&mTable, u"@attr/bar");
+    attr = test::getValue<Attribute>(&mTable, "@attr/bar");
     ASSERT_NE(nullptr, attr);
     EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_ANY), attr->typeMask);
 }
@@ -151,20 +150,20 @@
         </declare-styleable>)EOF";
     ASSERT_TRUE(testParse(input, watchConfig));
 
-    EXPECT_EQ(nullptr, test::getValueForConfig<Attribute>(&mTable, u"@attr/foo", watchConfig));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Attribute>(&mTable, u"@attr/baz", watchConfig));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Styleable>(&mTable, u"@styleable/bar", watchConfig));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Attribute>(&mTable, "@attr/foo", watchConfig));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Attribute>(&mTable, "@attr/baz", watchConfig));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Styleable>(&mTable, "@styleable/bar", watchConfig));
 
-    EXPECT_NE(nullptr, test::getValue<Attribute>(&mTable, u"@attr/foo"));
-    EXPECT_NE(nullptr, test::getValue<Attribute>(&mTable, u"@attr/baz"));
-    EXPECT_NE(nullptr, test::getValue<Styleable>(&mTable, u"@styleable/bar"));
+    EXPECT_NE(nullptr, test::getValue<Attribute>(&mTable, "@attr/foo"));
+    EXPECT_NE(nullptr, test::getValue<Attribute>(&mTable, "@attr/baz"));
+    EXPECT_NE(nullptr, test::getValue<Styleable>(&mTable, "@styleable/bar"));
 }
 
 TEST_F(ResourceParserTest, ParseAttrWithMinMax) {
     std::string input = "<attr name=\"foo\" min=\"10\" max=\"23\" format=\"integer\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Attribute* attr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* attr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(nullptr, attr);
     EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_INTEGER), attr->typeMask);
     EXPECT_EQ(10, attr->minInt);
@@ -183,7 +182,7 @@
                         "<attr name=\"foo\" format=\"string\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Attribute* attr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* attr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(nullptr, attr);
     EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_STRING), attr->typeMask);
 }
@@ -197,7 +196,7 @@
                         "</declare-styleable>";
     ASSERT_TRUE(testParse(input));
 
-    Attribute* attr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* attr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(nullptr, attr);
     EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_BOOLEAN), attr->typeMask);
 }
@@ -210,21 +209,21 @@
                         "</attr>";
     ASSERT_TRUE(testParse(input));
 
-    Attribute* enumAttr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* enumAttr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(enumAttr, nullptr);
     EXPECT_EQ(enumAttr->typeMask, android::ResTable_map::TYPE_ENUM);
     ASSERT_EQ(enumAttr->symbols.size(), 3u);
 
     AAPT_ASSERT_TRUE(enumAttr->symbols[0].symbol.name);
-    EXPECT_EQ(enumAttr->symbols[0].symbol.name.value().entry, u"bar");
+    EXPECT_EQ(enumAttr->symbols[0].symbol.name.value().entry, "bar");
     EXPECT_EQ(enumAttr->symbols[0].value, 0u);
 
     AAPT_ASSERT_TRUE(enumAttr->symbols[1].symbol.name);
-    EXPECT_EQ(enumAttr->symbols[1].symbol.name.value().entry, u"bat");
+    EXPECT_EQ(enumAttr->symbols[1].symbol.name.value().entry, "bat");
     EXPECT_EQ(enumAttr->symbols[1].value, 1u);
 
     AAPT_ASSERT_TRUE(enumAttr->symbols[2].symbol.name);
-    EXPECT_EQ(enumAttr->symbols[2].symbol.name.value().entry, u"baz");
+    EXPECT_EQ(enumAttr->symbols[2].symbol.name.value().entry, "baz");
     EXPECT_EQ(enumAttr->symbols[2].value, 2u);
 }
 
@@ -236,25 +235,25 @@
                         "</attr>";
     ASSERT_TRUE(testParse(input));
 
-    Attribute* flagAttr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* flagAttr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(nullptr, flagAttr);
     EXPECT_EQ(flagAttr->typeMask, android::ResTable_map::TYPE_FLAGS);
     ASSERT_EQ(flagAttr->symbols.size(), 3u);
 
     AAPT_ASSERT_TRUE(flagAttr->symbols[0].symbol.name);
-    EXPECT_EQ(flagAttr->symbols[0].symbol.name.value().entry, u"bar");
+    EXPECT_EQ(flagAttr->symbols[0].symbol.name.value().entry, "bar");
     EXPECT_EQ(flagAttr->symbols[0].value, 0u);
 
     AAPT_ASSERT_TRUE(flagAttr->symbols[1].symbol.name);
-    EXPECT_EQ(flagAttr->symbols[1].symbol.name.value().entry, u"bat");
+    EXPECT_EQ(flagAttr->symbols[1].symbol.name.value().entry, "bat");
     EXPECT_EQ(flagAttr->symbols[1].value, 1u);
 
     AAPT_ASSERT_TRUE(flagAttr->symbols[2].symbol.name);
-    EXPECT_EQ(flagAttr->symbols[2].symbol.name.value().entry, u"baz");
+    EXPECT_EQ(flagAttr->symbols[2].symbol.name.value().entry, "baz");
     EXPECT_EQ(flagAttr->symbols[2].value, 2u);
 
     std::unique_ptr<BinaryPrimitive> flagValue = ResourceUtils::tryParseFlagSymbol(flagAttr,
-                                                                                   u"baz|bat");
+                                                                                   "baz|bat");
     ASSERT_NE(nullptr, flagValue);
     EXPECT_EQ(flagValue->value.data, 1u | 2u);
 }
@@ -276,32 +275,32 @@
                         "</style>";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo");
     ASSERT_NE(nullptr, style);
     AAPT_ASSERT_TRUE(style->parent);
     AAPT_ASSERT_TRUE(style->parent.value().name);
-    EXPECT_EQ(test::parseNameOrDie(u"@style/fu"), style->parent.value().name.value());
+    EXPECT_EQ(test::parseNameOrDie("@style/fu"), style->parent.value().name.value());
     ASSERT_EQ(3u, style->entries.size());
 
     AAPT_ASSERT_TRUE(style->entries[0].key.name);
-    EXPECT_EQ(test::parseNameOrDie(u"@attr/bar"), style->entries[0].key.name.value());
+    EXPECT_EQ(test::parseNameOrDie("@attr/bar"), style->entries[0].key.name.value());
 
     AAPT_ASSERT_TRUE(style->entries[1].key.name);
-    EXPECT_EQ(test::parseNameOrDie(u"@attr/bat"), style->entries[1].key.name.value());
+    EXPECT_EQ(test::parseNameOrDie("@attr/bat"), style->entries[1].key.name.value());
 
     AAPT_ASSERT_TRUE(style->entries[2].key.name);
-    EXPECT_EQ(test::parseNameOrDie(u"@attr/baz"), style->entries[2].key.name.value());
+    EXPECT_EQ(test::parseNameOrDie("@attr/baz"), style->entries[2].key.name.value());
 }
 
 TEST_F(ResourceParserTest, ParseStyleWithShorthandParent) {
     std::string input = "<style name=\"foo\" parent=\"com.app:Theme\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo");
     ASSERT_NE(nullptr, style);
     AAPT_ASSERT_TRUE(style->parent);
     AAPT_ASSERT_TRUE(style->parent.value().name);
-    EXPECT_EQ(test::parseNameOrDie(u"@com.app:style/Theme"), style->parent.value().name.value());
+    EXPECT_EQ(test::parseNameOrDie("@com.app:style/Theme"), style->parent.value().name.value());
 }
 
 TEST_F(ResourceParserTest, ParseStyleWithPackageAliasedParent) {
@@ -309,11 +308,11 @@
                         "       name=\"foo\" parent=\"app:Theme\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo");
     ASSERT_NE(nullptr, style);
     AAPT_ASSERT_TRUE(style->parent);
     AAPT_ASSERT_TRUE(style->parent.value().name);
-    EXPECT_EQ(test::parseNameOrDie(u"@android:style/Theme"), style->parent.value().name.value());
+    EXPECT_EQ(test::parseNameOrDie("@android:style/Theme"), style->parent.value().name.value());
 }
 
 TEST_F(ResourceParserTest, ParseStyleWithPackageAliasedItems) {
@@ -323,21 +322,21 @@
             "</style>";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo");
     ASSERT_NE(nullptr, style);
     ASSERT_EQ(1u, style->entries.size());
-    EXPECT_EQ(test::parseNameOrDie(u"@android:attr/bar"), style->entries[0].key.name.value());
+    EXPECT_EQ(test::parseNameOrDie("@android:attr/bar"), style->entries[0].key.name.value());
 }
 
 TEST_F(ResourceParserTest, ParseStyleWithInferredParent) {
     std::string input = "<style name=\"foo.bar\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo.bar");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo.bar");
     ASSERT_NE(nullptr, style);
     AAPT_ASSERT_TRUE(style->parent);
     AAPT_ASSERT_TRUE(style->parent.value().name);
-    EXPECT_EQ(style->parent.value().name.value(), test::parseNameOrDie(u"@style/foo"));
+    EXPECT_EQ(style->parent.value().name.value(), test::parseNameOrDie("@style/foo"));
     EXPECT_TRUE(style->parentInferred);
 }
 
@@ -345,7 +344,7 @@
     std::string input = "<style name=\"foo.bar\" parent=\"\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo.bar");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo.bar");
     ASSERT_NE(nullptr, style);
     AAPT_EXPECT_FALSE(style->parent);
     EXPECT_FALSE(style->parentInferred);
@@ -355,7 +354,7 @@
     std::string input = R"EOF(<style name="foo" parent="*android:style/bar" />)EOF";
     ASSERT_TRUE(testParse(input));
 
-    Style* style = test::getValue<Style>(&mTable, u"@style/foo");
+    Style* style = test::getValue<Style>(&mTable, "@style/foo");
     ASSERT_NE(nullptr, style);
     AAPT_ASSERT_TRUE(style->parent);
     EXPECT_TRUE(style->parent.value().privateReference);
@@ -365,7 +364,7 @@
     std::string input = "<string name=\"foo\">@+id/bar</string>";
     ASSERT_TRUE(testParse(input));
 
-    Id* id = test::getValue<Id>(&mTable, u"@id/bar");
+    Id* id = test::getValue<Id>(&mTable, "@id/bar");
     ASSERT_NE(id, nullptr);
 }
 
@@ -380,31 +379,31 @@
     ASSERT_TRUE(testParse(input));
 
     Maybe<ResourceTable::SearchResult> result =
-            mTable.findResource(test::parseNameOrDie(u"@styleable/foo"));
+            mTable.findResource(test::parseNameOrDie("@styleable/foo"));
     AAPT_ASSERT_TRUE(result);
     EXPECT_EQ(SymbolState::kPublic, result.value().entry->symbolStatus.state);
 
-    Attribute* attr = test::getValue<Attribute>(&mTable, u"@attr/bar");
+    Attribute* attr = test::getValue<Attribute>(&mTable, "@attr/bar");
     ASSERT_NE(attr, nullptr);
     EXPECT_TRUE(attr->isWeak());
 
-    attr = test::getValue<Attribute>(&mTable, u"@attr/bat");
+    attr = test::getValue<Attribute>(&mTable, "@attr/bat");
     ASSERT_NE(attr, nullptr);
     EXPECT_TRUE(attr->isWeak());
 
-    attr = test::getValue<Attribute>(&mTable, u"@attr/baz");
+    attr = test::getValue<Attribute>(&mTable, "@attr/baz");
     ASSERT_NE(attr, nullptr);
     EXPECT_TRUE(attr->isWeak());
     EXPECT_EQ(1u, attr->symbols.size());
 
-    EXPECT_NE(nullptr, test::getValue<Id>(&mTable, u"@id/foo"));
+    EXPECT_NE(nullptr, test::getValue<Id>(&mTable, "@id/foo"));
 
-    Styleable* styleable = test::getValue<Styleable>(&mTable, u"@styleable/foo");
+    Styleable* styleable = test::getValue<Styleable>(&mTable, "@styleable/foo");
     ASSERT_NE(styleable, nullptr);
     ASSERT_EQ(3u, styleable->entries.size());
 
-    EXPECT_EQ(test::parseNameOrDie(u"@attr/bar"), styleable->entries[0].name.value());
-    EXPECT_EQ(test::parseNameOrDie(u"@attr/bat"), styleable->entries[1].name.value());
+    EXPECT_EQ(test::parseNameOrDie("@attr/bar"), styleable->entries[0].name.value());
+    EXPECT_EQ(test::parseNameOrDie("@attr/bat"), styleable->entries[1].name.value());
 }
 
 TEST_F(ResourceParserTest, ParsePrivateAttributesDeclareStyleable) {
@@ -413,17 +412,17 @@
                         "  <attr name=\"privAndroid:bat\" />\n"
                         "</declare-styleable>";
     ASSERT_TRUE(testParse(input));
-    Styleable* styleable = test::getValue<Styleable>(&mTable, u"@styleable/foo");
+    Styleable* styleable = test::getValue<Styleable>(&mTable, "@styleable/foo");
     ASSERT_NE(nullptr, styleable);
     ASSERT_EQ(2u, styleable->entries.size());
 
     EXPECT_TRUE(styleable->entries[0].privateReference);
     AAPT_ASSERT_TRUE(styleable->entries[0].name);
-    EXPECT_EQ(std::u16string(u"android"), styleable->entries[0].name.value().package);
+    EXPECT_EQ(std::string("android"), styleable->entries[0].name.value().package);
 
     EXPECT_TRUE(styleable->entries[1].privateReference);
     AAPT_ASSERT_TRUE(styleable->entries[1].name);
-    EXPECT_EQ(std::u16string(u"android"), styleable->entries[1].name.value().package);
+    EXPECT_EQ(std::string("android"), styleable->entries[1].name.value().package);
 }
 
 TEST_F(ResourceParserTest, ParseArray) {
@@ -434,7 +433,7 @@
                         "</array>";
     ASSERT_TRUE(testParse(input));
 
-    Array* array = test::getValue<Array>(&mTable, u"@array/foo");
+    Array* array = test::getValue<Array>(&mTable, "@array/foo");
     ASSERT_NE(array, nullptr);
     ASSERT_EQ(3u, array->items.size());
 
@@ -448,7 +447,7 @@
                         "  <item>\"Werk\"</item>\n"
                         "</string-array>\n";
     ASSERT_TRUE(testParse(input));
-    EXPECT_NE(nullptr, test::getValue<Array>(&mTable, u"@array/foo"));
+    EXPECT_NE(nullptr, test::getValue<Array>(&mTable, "@array/foo"));
 }
 
 TEST_F(ResourceParserTest, ParsePlural) {
@@ -464,9 +463,9 @@
                         "<string name=\"foo\">Hi</string>";
     ASSERT_TRUE(testParse(input));
 
-    String* value = test::getValue<String>(&mTable, u"@string/foo");
+    String* value = test::getValue<String>(&mTable, "@string/foo");
     ASSERT_NE(nullptr, value);
-    EXPECT_EQ(value->getComment(), u"This is a comment");
+    EXPECT_EQ(value->getComment(), "This is a comment");
 }
 
 TEST_F(ResourceParserTest, DoNotCombineMultipleComments) {
@@ -476,9 +475,9 @@
 
     ASSERT_TRUE(testParse(input));
 
-    String* value = test::getValue<String>(&mTable, u"@string/foo");
+    String* value = test::getValue<String>(&mTable, "@string/foo");
     ASSERT_NE(nullptr, value);
-    EXPECT_EQ(value->getComment(), u"Two");
+    EXPECT_EQ(value->getComment(), "Two");
 }
 
 TEST_F(ResourceParserTest, IgnoreCommentBeforeEndTag) {
@@ -490,9 +489,9 @@
 
     ASSERT_TRUE(testParse(input));
 
-    String* value = test::getValue<String>(&mTable, u"@string/foo");
+    String* value = test::getValue<String>(&mTable, "@string/foo");
     ASSERT_NE(nullptr, value);
-    EXPECT_EQ(value->getComment(), u"One");
+    EXPECT_EQ(value->getComment(), "One");
 }
 
 TEST_F(ResourceParserTest, ParseNestedComments) {
@@ -510,17 +509,17 @@
         </attr>)EOF";
     ASSERT_TRUE(testParse(input));
 
-    Styleable* styleable = test::getValue<Styleable>(&mTable, u"@styleable/foo");
+    Styleable* styleable = test::getValue<Styleable>(&mTable, "@styleable/foo");
     ASSERT_NE(nullptr, styleable);
     ASSERT_EQ(1u, styleable->entries.size());
 
-    EXPECT_EQ(StringPiece16(u"The name of the bar"), styleable->entries.front().getComment());
+    EXPECT_EQ(StringPiece("The name of the bar"), styleable->entries.front().getComment());
 
-    Attribute* attr = test::getValue<Attribute>(&mTable, u"@attr/foo");
+    Attribute* attr = test::getValue<Attribute>(&mTable, "@attr/foo");
     ASSERT_NE(nullptr, attr);
     ASSERT_EQ(1u, attr->symbols.size());
 
-    EXPECT_EQ(StringPiece16(u"The very first"), attr->symbols.front().symbol.getComment());
+    EXPECT_EQ(StringPiece("The very first"), attr->symbols.front().symbol.getComment());
 }
 
 /*
@@ -531,7 +530,7 @@
     std::string input = "<public type=\"id\" name=\"foo\"/>";
     ASSERT_TRUE(testParse(input));
 
-    Id* id = test::getValue<Id>(&mTable, u"@id/foo");
+    Id* id = test::getValue<Id>(&mTable, "@id/foo");
     ASSERT_NE(nullptr, id);
 }
 
@@ -546,22 +545,22 @@
     )EOF";
     ASSERT_TRUE(testParse(input));
 
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, u"@string/foo",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, "@string/foo",
                                                                  ConfigDescription::defaultConfig(),
                                                                  "phone"));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, u"@string/foo",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, "@string/foo",
                                                                  ConfigDescription::defaultConfig(),
                                                                  "no-sdcard"));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, u"@string/bar",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, "@string/bar",
                                                                  ConfigDescription::defaultConfig(),
                                                                  ""));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, u"@string/baz",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, "@string/baz",
                                                                  ConfigDescription::defaultConfig(),
                                                                  ""));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, u"@string/bit",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, "@string/bit",
                                                                  ConfigDescription::defaultConfig(),
                                                                  "phablet"));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, u"@string/bot",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<String>(&mTable, "@string/bot",
                                                                  ConfigDescription::defaultConfig(),
                                                                  "default"));
 }
@@ -575,7 +574,7 @@
     ASSERT_TRUE(testParse(input));
 
     Maybe<ResourceTable::SearchResult> result = mTable.findResource(
-            test::parseNameOrDie(u"@attr/foo"));
+            test::parseNameOrDie("@attr/foo"));
     AAPT_ASSERT_TRUE(result);
 
     AAPT_ASSERT_TRUE(result.value().package->id);
@@ -586,7 +585,7 @@
                         result.value().entry->id.value());
     EXPECT_EQ(ResourceId(0x01010040), actualId);
 
-    result = mTable.findResource(test::parseNameOrDie(u"@attr/bar"));
+    result = mTable.findResource(test::parseNameOrDie("@attr/bar"));
     AAPT_ASSERT_TRUE(result);
 
     AAPT_ASSERT_TRUE(result.value().package->id);
@@ -611,7 +610,7 @@
     ASSERT_TRUE(testParse(input));
 
     Maybe<ResourceTable::SearchResult> result = mTable.findResource(
-            test::parseNameOrDie(u"@string/bar"));
+            test::parseNameOrDie("@string/bar"));
     AAPT_ASSERT_TRUE(result);
     const ResourceEntry* entry = result.value().entry;
     ASSERT_NE(nullptr, entry);
@@ -622,7 +621,7 @@
     std::string input = R"EOF(<item name="foo" type="integer" format="float">0.3</item>)EOF";
     ASSERT_TRUE(testParse(input));
 
-    BinaryPrimitive* val = test::getValue<BinaryPrimitive>(&mTable, u"@integer/foo");
+    BinaryPrimitive* val = test::getValue<BinaryPrimitive>(&mTable, "@integer/foo");
     ASSERT_NE(nullptr, val);
 
     EXPECT_EQ(uint32_t(android::Res_value::TYPE_FLOAT), val->value.dataType);
diff --git a/tools/aapt2/ResourceTable.cpp b/tools/aapt2/ResourceTable.cpp
index e700ed9..4d418d9 100644
--- a/tools/aapt2/ResourceTable.cpp
+++ b/tools/aapt2/ResourceTable.cpp
@@ -35,11 +35,11 @@
 
 template <typename T>
 static bool lessThanStructWithName(const std::unique_ptr<T>& lhs,
-                                   const StringPiece16& rhs) {
+                                   const StringPiece& rhs) {
     return lhs->name.compare(0, lhs->name.size(), rhs.data(), rhs.size()) < 0;
 }
 
-ResourceTablePackage* ResourceTable::findPackage(const StringPiece16& name) {
+ResourceTablePackage* ResourceTable::findPackage(const StringPiece& name) {
     const auto last = packages.end();
     auto iter = std::lower_bound(packages.begin(), last, name,
                                  lessThanStructWithName<ResourceTablePackage>);
@@ -58,7 +58,7 @@
     return nullptr;
 }
 
-ResourceTablePackage* ResourceTable::createPackage(const StringPiece16& name, Maybe<uint8_t> id) {
+ResourceTablePackage* ResourceTable::createPackage(const StringPiece& name, Maybe<uint8_t> id) {
     ResourceTablePackage* package = findOrCreatePackage(name);
     if (id && !package->id) {
         package->id = id;
@@ -71,7 +71,7 @@
     return package;
 }
 
-ResourceTablePackage* ResourceTable::findOrCreatePackage(const StringPiece16& name) {
+ResourceTablePackage* ResourceTable::findOrCreatePackage(const StringPiece& name) {
     const auto last = packages.end();
     auto iter = std::lower_bound(packages.begin(), last, name,
                                  lessThanStructWithName<ResourceTablePackage>);
@@ -102,7 +102,7 @@
     return types.emplace(iter, new ResourceTableType(type))->get();
 }
 
-ResourceEntry* ResourceTableType::findEntry(const StringPiece16& name) {
+ResourceEntry* ResourceTableType::findEntry(const StringPiece& name) {
     const auto last = entries.end();
     auto iter = std::lower_bound(entries.begin(), last, name,
                                  lessThanStructWithName<ResourceEntry>);
@@ -112,7 +112,7 @@
     return nullptr;
 }
 
-ResourceEntry* ResourceTableType::findOrCreateEntry(const StringPiece16& name) {
+ResourceEntry* ResourceTableType::findOrCreateEntry(const StringPiece& name) {
     auto last = entries.end();
     auto iter = std::lower_bound(entries.begin(), last, name,
                                  lessThanStructWithName<ResourceEntry>);
@@ -261,8 +261,8 @@
     return 0;
 }
 
-static constexpr const char16_t* kValidNameChars = u"._-";
-static constexpr const char16_t* kValidNameMangledChars = u"._-$";
+static constexpr const char* kValidNameChars = "._-";
+static constexpr const char* kValidNameMangledChars = "._-$";
 
 bool ResourceTable::addResource(const ResourceNameRef& name,
                                 const ConfigDescription& config,
@@ -286,7 +286,7 @@
 bool ResourceTable::addFileReference(const ResourceNameRef& name,
                                      const ConfigDescription& config,
                                      const Source& source,
-                                     const StringPiece16& path,
+                                     const StringPiece& path,
                                      IDiagnostics* diag) {
     return addFileReferenceImpl(name, config, source, path, nullptr, kValidNameChars, diag);
 }
@@ -294,7 +294,7 @@
 bool ResourceTable::addFileReferenceAllowMangled(const ResourceNameRef& name,
                                                  const ConfigDescription& config,
                                                  const Source& source,
-                                                 const StringPiece16& path,
+                                                 const StringPiece& path,
                                                  io::IFile* file,
                                                  IDiagnostics* diag) {
     return addFileReferenceImpl(name, config, source, path, file, kValidNameMangledChars, diag);
@@ -303,9 +303,9 @@
 bool ResourceTable::addFileReferenceImpl(const ResourceNameRef& name,
                                          const ConfigDescription& config,
                                          const Source& source,
-                                         const StringPiece16& path,
+                                         const StringPiece& path,
                                          io::IFile* file,
-                                         const char16_t* validChars,
+                                         const char* validChars,
                                          IDiagnostics* diag) {
     std::unique_ptr<FileReference> fileRef = util::make_unique<FileReference>(
             stringPool.makeRef(path));
@@ -339,7 +339,7 @@
                                     const ConfigDescription& config,
                                     const StringPiece& product,
                                     std::unique_ptr<Value> value,
-                                    const char16_t* validChars,
+                                    const char* validChars,
                                     std::function<int(Value*,Value*)> conflictResolver,
                                     IDiagnostics* diag) {
     assert(value && "value can't be nullptr");
@@ -353,7 +353,7 @@
                     << "' has invalid entry name '"
                     << name.entry
                     << "'. Invalid character '"
-                    << StringPiece16(badCharIter, 1)
+                    << StringPiece(badCharIter, 1)
                     << "'");
         return false;
     }
@@ -438,7 +438,7 @@
 }
 
 bool ResourceTable::setSymbolStateImpl(const ResourceNameRef& name, const ResourceId resId,
-                                       const Symbol& symbol, const char16_t* validChars,
+                                       const Symbol& symbol, const char* validChars,
                                        IDiagnostics* diag) {
     assert(diag && "diagnostics can't be nullptr");
 
@@ -450,7 +450,7 @@
                     << "' has invalid entry name '"
                     << name.entry
                     << "'. Invalid character '"
-                    << StringPiece16(badCharIter, 1)
+                    << StringPiece(badCharIter, 1)
                     << "'");
         return false;
     }
diff --git a/tools/aapt2/ResourceTable.h b/tools/aapt2/ResourceTable.h
index 5690ea6..a5efe35 100644
--- a/tools/aapt2/ResourceTable.h
+++ b/tools/aapt2/ResourceTable.h
@@ -48,7 +48,7 @@
 struct Symbol {
     SymbolState state = SymbolState::kUndefined;
     Source source;
-    std::u16string comment;
+    std::string comment;
 };
 
 class ResourceConfigValue {
@@ -86,7 +86,7 @@
      * this determines the order of this resource
      * when doing lookups.
      */
-    const std::u16string name;
+    const std::string name;
 
     /**
      * The entry ID for this resource.
@@ -103,7 +103,7 @@
      */
     std::vector<std::unique_ptr<ResourceConfigValue>> values;
 
-    ResourceEntry(const StringPiece16& name) : name(name.toString()) { }
+    ResourceEntry(const StringPiece& name) : name(name.toString()) { }
 
     ResourceConfigValue* findValue(const ConfigDescription& config);
     ResourceConfigValue* findValue(const ConfigDescription& config, const StringPiece& product);
@@ -147,8 +147,8 @@
 
     explicit ResourceTableType(const ResourceType type) : type(type) { }
 
-    ResourceEntry* findEntry(const StringPiece16& name);
-    ResourceEntry* findOrCreateEntry(const StringPiece16& name);
+    ResourceEntry* findEntry(const StringPiece& name);
+    ResourceEntry* findOrCreateEntry(const StringPiece& name);
 
 private:
     DISALLOW_COPY_AND_ASSIGN(ResourceTableType);
@@ -165,7 +165,7 @@
 public:
     PackageType type = PackageType::App;
     Maybe<uint8_t> id;
-    std::u16string name;
+    std::string name;
 
     std::vector<std::unique_ptr<ResourceTableType>> types;
 
@@ -209,13 +209,13 @@
     bool addFileReference(const ResourceNameRef& name,
                               const ConfigDescription& config,
                               const Source& source,
-                              const StringPiece16& path,
+                              const StringPiece& path,
                               IDiagnostics* diag);
 
     bool addFileReferenceAllowMangled(const ResourceNameRef& name,
                                       const ConfigDescription& config,
                                       const Source& source,
-                                      const StringPiece16& path,
+                                      const StringPiece& path,
                                       io::IFile* file,
                                       IDiagnostics* diag);
 
@@ -276,21 +276,21 @@
      * exist. The empty string is a valid package and typically is used to represent the
      * 'current' package before it is known to the ResourceTable.
      */
-    ResourceTablePackage* findPackage(const StringPiece16& name);
+    ResourceTablePackage* findPackage(const StringPiece& name);
 
     ResourceTablePackage* findPackageById(uint8_t id);
 
-    ResourceTablePackage* createPackage(const StringPiece16& name, Maybe<uint8_t> id = {});
+    ResourceTablePackage* createPackage(const StringPiece& name, Maybe<uint8_t> id = {});
 
 private:
-    ResourceTablePackage* findOrCreatePackage(const StringPiece16& name);
+    ResourceTablePackage* findOrCreatePackage(const StringPiece& name);
 
     bool addFileReferenceImpl(const ResourceNameRef& name,
                               const ConfigDescription& config,
                               const Source& source,
-                              const StringPiece16& path,
+                              const StringPiece& path,
                               io::IFile* file,
-                              const char16_t* validChars,
+                              const char* validChars,
                               IDiagnostics* diag);
 
     bool addResourceImpl(const ResourceNameRef& name,
@@ -298,14 +298,14 @@
                          const ConfigDescription& config,
                          const StringPiece& product,
                          std::unique_ptr<Value> value,
-                         const char16_t* validChars,
+                         const char* validChars,
                          std::function<int(Value*,Value*)> conflictResolver,
                          IDiagnostics* diag);
 
     bool setSymbolStateImpl(const ResourceNameRef& name,
                             ResourceId resId,
                             const Symbol& symbol,
-                            const char16_t* validChars,
+                            const char* validChars,
                             IDiagnostics* diag);
 
     DISALLOW_COPY_AND_ASSIGN(ResourceTable);
diff --git a/tools/aapt2/ResourceTable_test.cpp b/tools/aapt2/ResourceTable_test.cpp
index d6c52ab..cf6660c 100644
--- a/tools/aapt2/ResourceTable_test.cpp
+++ b/tools/aapt2/ResourceTable_test.cpp
@@ -17,12 +17,10 @@
 #include "Diagnostics.h"
 #include "ResourceTable.h"
 #include "ResourceValues.h"
+#include "test/Test.h"
 #include "util/Util.h"
 
-#include "test/Builders.h"
-
 #include <algorithm>
-#include <gtest/gtest.h>
 #include <ostream>
 #include <string>
 
@@ -32,13 +30,13 @@
     ResourceTable table;
 
     EXPECT_FALSE(table.addResource(
-            ResourceNameRef(u"android", ResourceType::kId, u"hey,there"),
+            test::parseNameOrDie("@android:id/hey,there"),
             ConfigDescription{}, "",
             test::ValueBuilder<Id>().setSource("test.xml", 21u).build(),
             test::getDiagnostics()));
 
     EXPECT_FALSE(table.addResource(
-            ResourceNameRef(u"android", ResourceType::kId, u"hey:there"),
+            test::parseNameOrDie("@android:id/hey:there"),
             ConfigDescription{}, "",
             test::ValueBuilder<Id>().setSource("test.xml", 21u).build(),
             test::getDiagnostics()));
@@ -47,14 +45,13 @@
 TEST(ResourceTableTest, AddOneResource) {
     ResourceTable table;
 
-    EXPECT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/id"),
-                                  ConfigDescription{},
-                                  "",
-                                  test::ValueBuilder<Id>()
-                                          .setSource("test/path/file.xml", 23u).build(),
-                                  test::getDiagnostics()));
+    EXPECT_TRUE(table.addResource(
+            test::parseNameOrDie("@android:attr/id"),
+            ConfigDescription{}, "",
+            test::ValueBuilder<Id>().setSource("test/path/file.xml", 23u).build(),
+            test::getDiagnostics()));
 
-    ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:attr/id"));
+    ASSERT_NE(nullptr, test::getValue<Id>(&table, "@android:attr/id"));
 }
 
 TEST(ResourceTableTest, AddMultipleResources) {
@@ -65,56 +62,58 @@
     memcpy(languageConfig.language, "pl", sizeof(languageConfig.language));
 
     EXPECT_TRUE(table.addResource(
-            test::parseNameOrDie(u"@android:attr/layout_width"),
-            config,
-            "",
+            test::parseNameOrDie("@android:attr/layout_width"),
+            config, "",
             test::ValueBuilder<Id>().setSource("test/path/file.xml", 10u).build(),
             test::getDiagnostics()));
 
     EXPECT_TRUE(table.addResource(
-            test::parseNameOrDie(u"@android:attr/id"),
-            config,
-            "",
+            test::parseNameOrDie("@android:attr/id"),
+            config, "",
             test::ValueBuilder<Id>().setSource("test/path/file.xml", 12u).build(),
             test::getDiagnostics()));
 
     EXPECT_TRUE(table.addResource(
-            test::parseNameOrDie(u"@android:string/ok"),
-            config,
-            "",
+            test::parseNameOrDie("@android:string/ok"),
+            config, "",
             test::ValueBuilder<Id>().setSource("test/path/file.xml", 14u).build(),
             test::getDiagnostics()));
 
     EXPECT_TRUE(table.addResource(
-            test::parseNameOrDie(u"@android:string/ok"),
-            languageConfig,
-            "",
+            test::parseNameOrDie("@android:string/ok"),
+            languageConfig, "",
             test::ValueBuilder<BinaryPrimitive>(android::Res_value{})
                     .setSource("test/path/file.xml", 20u)
                     .build(),
             test::getDiagnostics()));
 
-    ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:attr/layout_width"));
-    ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:attr/id"));
-    ASSERT_NE(nullptr, test::getValue<Id>(&table, u"@android:string/ok"));
-    ASSERT_NE(nullptr, test::getValueForConfig<BinaryPrimitive>(&table, u"@android:string/ok",
+    ASSERT_NE(nullptr, test::getValue<Id>(&table, "@android:attr/layout_width"));
+    ASSERT_NE(nullptr, test::getValue<Id>(&table, "@android:attr/id"));
+    ASSERT_NE(nullptr, test::getValue<Id>(&table, "@android:string/ok"));
+    ASSERT_NE(nullptr, test::getValueForConfig<BinaryPrimitive>(&table, "@android:string/ok",
                                                                 languageConfig));
 }
 
 TEST(ResourceTableTest, OverrideWeakResourceValue) {
     ResourceTable table;
 
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/foo"), ConfigDescription{},
-                                  "", util::make_unique<Attribute>(true), test::getDiagnostics()));
+    ASSERT_TRUE(table.addResource(
+            test::parseNameOrDie("@android:attr/foo"),
+            ConfigDescription{}, "",
+            util::make_unique<Attribute>(true),
+            test::getDiagnostics()));
 
-    Attribute* attr = test::getValue<Attribute>(&table, u"@android:attr/foo");
+    Attribute* attr = test::getValue<Attribute>(&table, "@android:attr/foo");
     ASSERT_NE(nullptr, attr);
     EXPECT_TRUE(attr->isWeak());
 
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:attr/foo"), ConfigDescription{},
-                                  "", util::make_unique<Attribute>(false), test::getDiagnostics()));
+    ASSERT_TRUE(table.addResource(
+            test::parseNameOrDie("@android:attr/foo"),
+            ConfigDescription{}, "",
+            util::make_unique<Attribute>(false),
+            test::getDiagnostics()));
 
-    attr = test::getValue<Attribute>(&table, u"@android:attr/foo");
+    attr = test::getValue<Attribute>(&table, "@android:attr/foo");
     ASSERT_NE(nullptr, attr);
     EXPECT_FALSE(attr->isWeak());
 }
@@ -122,26 +121,24 @@
 TEST(ResourceTableTest, ProductVaryingValues) {
     ResourceTable table;
 
-    EXPECT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/foo"),
-                                  test::parseConfigOrDie("land"),
-                                  "tablet",
+    EXPECT_TRUE(table.addResource(test::parseNameOrDie("@android:string/foo"),
+                                  test::parseConfigOrDie("land"), "tablet",
                                   util::make_unique<Id>(),
                                   test::getDiagnostics()));
-    EXPECT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/foo"),
-                                  test::parseConfigOrDie("land"),
-                                  "phone",
+    EXPECT_TRUE(table.addResource(test::parseNameOrDie("@android:string/foo"),
+                                  test::parseConfigOrDie("land"), "phone",
                                   util::make_unique<Id>(),
                                   test::getDiagnostics()));
 
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/foo",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/foo",
                                                              test::parseConfigOrDie("land"),
                                                              "tablet"));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/foo",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/foo",
                                                              test::parseConfigOrDie("land"),
                                                              "phone"));
 
     Maybe<ResourceTable::SearchResult> sr = table.findResource(
-            test::parseNameOrDie(u"@android:string/foo"));
+            test::parseNameOrDie("@android:string/foo"));
     AAPT_ASSERT_TRUE(sr);
     std::vector<ResourceConfigValue*> values = sr.value().entry->findAllValues(
             test::parseConfigOrDie("land"));
diff --git a/tools/aapt2/ResourceUtils.cpp b/tools/aapt2/ResourceUtils.cpp
index 302c04f..31d6435a6 100644
--- a/tools/aapt2/ResourceUtils.cpp
+++ b/tools/aapt2/ResourceUtils.cpp
@@ -27,19 +27,52 @@
 namespace aapt {
 namespace ResourceUtils {
 
-bool extractResourceName(const StringPiece16& str, StringPiece16* outPackage,
-                         StringPiece16* outType, StringPiece16* outEntry) {
+Maybe<ResourceName> toResourceName(const android::ResTable::resource_name& nameIn) {
+    ResourceName nameOut;
+    if (!nameIn.package) {
+        return {};
+    }
+
+    nameOut.package = util::utf16ToUtf8(StringPiece16(nameIn.package, nameIn.packageLen));
+
+    const ResourceType* type;
+    if (nameIn.type) {
+        type = parseResourceType(util::utf16ToUtf8(StringPiece16(nameIn.type, nameIn.typeLen)));
+    } else if (nameIn.type8) {
+        type = parseResourceType(StringPiece(nameIn.type8, nameIn.typeLen));
+    } else {
+        return {};
+    }
+
+    if (!type) {
+        return {};
+    }
+
+    nameOut.type = *type;
+
+    if (nameIn.name) {
+        nameOut.entry = util::utf16ToUtf8(StringPiece16(nameIn.name, nameIn.nameLen));
+    } else if (nameIn.name8) {
+        nameOut.entry = StringPiece(nameIn.name8, nameIn.nameLen).toString();
+    } else {
+        return {};
+    }
+    return nameOut;
+}
+
+bool extractResourceName(const StringPiece& str, StringPiece* outPackage,
+                         StringPiece* outType, StringPiece* outEntry) {
     bool hasPackageSeparator = false;
     bool hasTypeSeparator = false;
-    const char16_t* start = str.data();
-    const char16_t* end = start + str.size();
-    const char16_t* current = start;
+    const char* start = str.data();
+    const char* end = start + str.size();
+    const char* current = start;
     while (current != end) {
-        if (outType->size() == 0 && *current == u'/') {
+        if (outType->size() == 0 && *current == '/') {
             hasTypeSeparator = true;
             outType->assign(start, current - start);
             start = current + 1;
-        } else if (outPackage->size() == 0 && *current == u':') {
+        } else if (outPackage->size() == 0 && *current == ':') {
             hasPackageSeparator = true;
             outPackage->assign(start, current - start);
             start = current + 1;
@@ -51,21 +84,21 @@
     return !(hasPackageSeparator && outPackage->empty()) && !(hasTypeSeparator && outType->empty());
 }
 
-bool parseResourceName(const StringPiece16& str, ResourceNameRef* outRef, bool* outPrivate) {
+bool parseResourceName(const StringPiece& str, ResourceNameRef* outRef, bool* outPrivate) {
     if (str.empty()) {
         return false;
     }
 
     size_t offset = 0;
     bool priv = false;
-    if (str.data()[0] == u'*') {
+    if (str.data()[0] == '*') {
         priv = true;
         offset = 1;
     }
 
-    StringPiece16 package;
-    StringPiece16 type;
-    StringPiece16 entry;
+    StringPiece package;
+    StringPiece type;
+    StringPiece entry;
     if (!extractResourceName(str.substr(offset, str.size() - offset), &package, &type, &entry)) {
         return false;
     }
@@ -91,18 +124,18 @@
     return true;
 }
 
-bool tryParseReference(const StringPiece16& str, ResourceNameRef* outRef, bool* outCreate,
+bool tryParseReference(const StringPiece& str, ResourceNameRef* outRef, bool* outCreate,
                        bool* outPrivate) {
-    StringPiece16 trimmedStr(util::trimWhitespace(str));
+    StringPiece trimmedStr(util::trimWhitespace(str));
     if (trimmedStr.empty()) {
         return false;
     }
 
     bool create = false;
     bool priv = false;
-    if (trimmedStr.data()[0] == u'@') {
+    if (trimmedStr.data()[0] == '@') {
         size_t offset = 1;
-        if (trimmedStr.data()[1] == u'+') {
+        if (trimmedStr.data()[1] == '+') {
             create = true;
             offset += 1;
         }
@@ -137,26 +170,26 @@
     return false;
 }
 
-bool isReference(const StringPiece16& str) {
+bool isReference(const StringPiece& str) {
     return tryParseReference(str, nullptr, nullptr, nullptr);
 }
 
-bool tryParseAttributeReference(const StringPiece16& str, ResourceNameRef* outRef) {
-    StringPiece16 trimmedStr(util::trimWhitespace(str));
+bool tryParseAttributeReference(const StringPiece& str, ResourceNameRef* outRef) {
+    StringPiece trimmedStr(util::trimWhitespace(str));
     if (trimmedStr.empty()) {
         return false;
     }
 
-    if (*trimmedStr.data() == u'?') {
-        StringPiece16 package;
-        StringPiece16 type;
-        StringPiece16 entry;
+    if (*trimmedStr.data() == '?') {
+        StringPiece package;
+        StringPiece type;
+        StringPiece entry;
         if (!extractResourceName(trimmedStr.substr(1, trimmedStr.size() - 1),
                                  &package, &type, &entry)) {
             return false;
         }
 
-        if (!type.empty() && type != u"attr") {
+        if (!type.empty() && type != "attr") {
             return false;
         }
 
@@ -174,7 +207,7 @@
     return false;
 }
 
-bool isAttributeReference(const StringPiece16& str) {
+bool isAttributeReference(const StringPiece& str) {
     return tryParseAttributeReference(str, nullptr);
 }
 
@@ -186,23 +219,23 @@
  * <[*]package>:[style/]<entry>
  * [[*]package:style/]<entry>
  */
-Maybe<Reference> parseStyleParentReference(const StringPiece16& str, std::string* outError) {
+Maybe<Reference> parseStyleParentReference(const StringPiece& str, std::string* outError) {
     if (str.empty()) {
         return {};
     }
 
-    StringPiece16 name = str;
+    StringPiece name = str;
 
     bool hasLeadingIdentifiers = false;
     bool privateRef = false;
 
     // Skip over these identifiers. A style's parent is a normal reference.
-    if (name.data()[0] == u'@' || name.data()[0] == u'?') {
+    if (name.data()[0] == '@' || name.data()[0] == '?') {
         hasLeadingIdentifiers = true;
         name = name.substr(1, name.size() - 1);
     }
 
-    if (name.data()[0] == u'*') {
+    if (name.data()[0] == '*') {
         privateRef = true;
         name = name.substr(1, name.size() - 1);
     }
@@ -210,7 +243,7 @@
     ResourceNameRef ref;
     ref.type = ResourceType::kStyle;
 
-    StringPiece16 typeStr;
+    StringPiece typeStr;
     extractResourceName(name, &ref.package, &typeStr, &ref.entry);
     if (!typeStr.empty()) {
         // If we have a type, make sure it is a Style.
@@ -235,7 +268,7 @@
     return result;
 }
 
-std::unique_ptr<Reference> tryParseReference(const StringPiece16& str, bool* outCreate) {
+std::unique_ptr<Reference> tryParseReference(const StringPiece& str, bool* outCreate) {
     ResourceNameRef ref;
     bool privateRef = false;
     if (tryParseReference(str, &ref, outCreate, &privateRef)) {
@@ -253,14 +286,14 @@
     return {};
 }
 
-std::unique_ptr<BinaryPrimitive> tryParseNullOrEmpty(const StringPiece16& str) {
-    StringPiece16 trimmedStr(util::trimWhitespace(str));
+std::unique_ptr<BinaryPrimitive> tryParseNullOrEmpty(const StringPiece& str) {
+    StringPiece trimmedStr(util::trimWhitespace(str));
     android::Res_value value = { };
-    if (trimmedStr == u"@null") {
+    if (trimmedStr == "@null") {
         // TYPE_NULL with data set to 0 is interpreted by the runtime as an error.
         // Instead we set the data type to TYPE_REFERENCE with a value of 0.
         value.dataType = android::Res_value::TYPE_REFERENCE;
-    } else if (trimmedStr == u"@empty") {
+    } else if (trimmedStr == "@empty") {
         // TYPE_NULL with value of DATA_NULL_EMPTY is handled fine by the runtime.
         value.dataType = android::Res_value::TYPE_NULL;
         value.data = android::Res_value::DATA_NULL_EMPTY;
@@ -271,8 +304,8 @@
 }
 
 std::unique_ptr<BinaryPrimitive> tryParseEnumSymbol(const Attribute* enumAttr,
-                                                    const StringPiece16& str) {
-    StringPiece16 trimmedStr(util::trimWhitespace(str));
+                                                    const StringPiece& str) {
+    StringPiece trimmedStr(util::trimWhitespace(str));
     for (const Attribute::Symbol& symbol : enumAttr->symbols) {
         // Enum symbols are stored as @package:id/symbol resources,
         // so we need to match against the 'entry' part of the identifier.
@@ -288,7 +321,7 @@
 }
 
 std::unique_ptr<BinaryPrimitive> tryParseFlagSymbol(const Attribute* flagAttr,
-                                                    const StringPiece16& str) {
+                                                    const StringPiece& str) {
     android::Res_value flags = { };
     flags.dataType = android::Res_value::TYPE_INT_HEX;
     flags.data = 0u;
@@ -298,8 +331,8 @@
         return util::make_unique<BinaryPrimitive>(flags);
     }
 
-    for (StringPiece16 part : util::tokenize(str, u'|')) {
-        StringPiece16 trimmedPart = util::trimWhitespace(part);
+    for (StringPiece part : util::tokenize(str, '|')) {
+        StringPiece trimmedPart = util::trimWhitespace(part);
 
         bool flagSet = false;
         for (const Attribute::Symbol& symbol : flagAttr->symbols) {
@@ -320,24 +353,24 @@
     return util::make_unique<BinaryPrimitive>(flags);
 }
 
-static uint32_t parseHex(char16_t c, bool* outError) {
-    if (c >= u'0' && c <= u'9') {
-        return c - u'0';
-    } else if (c >= u'a' && c <= u'f') {
-        return c - u'a' + 0xa;
-    } else if (c >= u'A' && c <= u'F') {
-        return c - u'A' + 0xa;
+static uint32_t parseHex(char c, bool* outError) {
+    if (c >= '0' && c <= '9') {
+        return c - '0';
+    } else if (c >= 'a' && c <= 'f') {
+        return c - 'a' + 0xa;
+    } else if (c >= 'A' && c <= 'F') {
+        return c - 'A' + 0xa;
     } else {
         *outError = true;
         return 0xffffffffu;
     }
 }
 
-std::unique_ptr<BinaryPrimitive> tryParseColor(const StringPiece16& str) {
-    StringPiece16 colorStr(util::trimWhitespace(str));
-    const char16_t* start = colorStr.data();
+std::unique_ptr<BinaryPrimitive> tryParseColor(const StringPiece& str) {
+    StringPiece colorStr(util::trimWhitespace(str));
+    const char* start = colorStr.data();
     const size_t len = colorStr.size();
-    if (len == 0 || start[0] != u'#') {
+    if (len == 0 || start[0] != '#') {
         return {};
     }
 
@@ -387,14 +420,14 @@
     return error ? std::unique_ptr<BinaryPrimitive>() : util::make_unique<BinaryPrimitive>(value);
 }
 
-bool tryParseBool(const StringPiece16& str, bool* outValue) {
-    StringPiece16 trimmedStr(util::trimWhitespace(str));
-    if (trimmedStr == u"true" || trimmedStr == u"TRUE" || trimmedStr == u"True") {
+bool tryParseBool(const StringPiece& str, bool* outValue) {
+    StringPiece trimmedStr(util::trimWhitespace(str));
+    if (trimmedStr == "true" || trimmedStr == "TRUE" || trimmedStr == "True") {
         if (outValue) {
             *outValue = true;
         }
         return true;
-    } else if (trimmedStr == u"false" || trimmedStr == u"FALSE" || trimmedStr == u"False") {
+    } else if (trimmedStr == "false" || trimmedStr == "FALSE" || trimmedStr == "False") {
         if (outValue) {
             *outValue = false;
         }
@@ -403,22 +436,24 @@
     return false;
 }
 
-Maybe<int> tryParseSdkVersion(const StringPiece16& str) {
-    StringPiece16 trimmedStr(util::trimWhitespace(str));
+Maybe<int> tryParseSdkVersion(const StringPiece& str) {
+    StringPiece trimmedStr(util::trimWhitespace(str));
+
+    std::u16string str16 = util::utf8ToUtf16(trimmedStr);
     android::Res_value value;
-    if (android::ResTable::stringToInt(trimmedStr.data(), trimmedStr.size(), &value)) {
+    if (android::ResTable::stringToInt(str16.data(), str16.size(), &value)) {
         return static_cast<int>(value.data);
     }
 
     // Try parsing the code name.
-    std::pair<StringPiece16, int> entry = getDevelopmentSdkCodeNameAndVersion();
+    std::pair<StringPiece, int> entry = getDevelopmentSdkCodeNameAndVersion();
     if (entry.first == trimmedStr) {
         return entry.second;
     }
     return {};
 }
 
-std::unique_ptr<BinaryPrimitive> tryParseBool(const StringPiece16& str) {
+std::unique_ptr<BinaryPrimitive> tryParseBool(const StringPiece& str) {
     bool result = false;
     if (tryParseBool(str, &result)) {
         android::Res_value value = {};
@@ -434,17 +469,19 @@
     return {};
 }
 
-std::unique_ptr<BinaryPrimitive> tryParseInt(const StringPiece16& str) {
+std::unique_ptr<BinaryPrimitive> tryParseInt(const StringPiece& str) {
+    std::u16string str16 = util::utf8ToUtf16(str);
     android::Res_value value;
-    if (!android::ResTable::stringToInt(str.data(), str.size(), &value)) {
+    if (!android::ResTable::stringToInt(str16.data(), str16.size(), &value)) {
         return {};
     }
     return util::make_unique<BinaryPrimitive>(value);
 }
 
-std::unique_ptr<BinaryPrimitive> tryParseFloat(const StringPiece16& str) {
+std::unique_ptr<BinaryPrimitive> tryParseFloat(const StringPiece& str) {
+    std::u16string str16 = util::utf8ToUtf16(str);
     android::Res_value value;
-    if (!android::ResTable::stringToFloat(str.data(), str.size(), &value)) {
+    if (!android::ResTable::stringToFloat(str16.data(), str16.size(), &value)) {
         return {};
     }
     return util::make_unique<BinaryPrimitive>(value);
@@ -490,7 +527,8 @@
 }
 
 std::unique_ptr<Item> parseItemForAttribute(
-        const StringPiece16& value, uint32_t typeMask,
+        const StringPiece& value,
+        uint32_t typeMask,
         std::function<void(const ResourceName&)> onCreateReference) {
     std::unique_ptr<BinaryPrimitive> nullOrEmpty = tryParseNullOrEmpty(value);
     if (nullOrEmpty) {
@@ -549,7 +587,7 @@
  * allows.
  */
 std::unique_ptr<Item> parseItemForAttribute(
-        const StringPiece16& str, const Attribute* attr,
+        const StringPiece& str, const Attribute* attr,
         std::function<void(const ResourceName&)> onCreateReference) {
     const uint32_t typeMask = attr->typeMask;
     std::unique_ptr<Item> value = parseItemForAttribute(str, typeMask, onCreateReference);
diff --git a/tools/aapt2/ResourceUtils.h b/tools/aapt2/ResourceUtils.h
index 3a03caf..871ed7c 100644
--- a/tools/aapt2/ResourceUtils.h
+++ b/tools/aapt2/ResourceUtils.h
@@ -28,6 +28,11 @@
 namespace aapt {
 namespace ResourceUtils {
 
+/**
+ * Convert an android::ResTable::resource_name to an aapt::ResourceName struct.
+ */
+Maybe<ResourceName> toResourceName(const android::ResTable::resource_name& name);
+
 /*
  * Extracts the package, type, and name from a string of the format:
  *
@@ -37,15 +42,15 @@
  * individual extracted piece to verify that the pieces are valid.
  * Returns false if there was no package but a ':' was present.
  */
-bool extractResourceName(const StringPiece16& str, StringPiece16* outPackage,
-                         StringPiece16* outType, StringPiece16* outEntry);
+bool extractResourceName(const StringPiece& str, StringPiece* outPackage,
+                         StringPiece* outType, StringPiece* outEntry);
 
 /**
  * Returns true if the string was parsed as a resource name ([*][package:]type/name), with
  * `outResource` set to the parsed resource name and `outPrivate` set to true if a '*' prefix
  * was present.
  */
-bool parseResourceName(const StringPiece16& str, ResourceNameRef* outResource,
+bool parseResourceName(const StringPiece& str, ResourceNameRef* outResource,
                        bool* outPrivate = nullptr);
 
 /*
@@ -55,34 +60,34 @@
  * If '+' was present in the reference, `outCreate` is set to true.
  * If '*' was present in the reference, `outPrivate` is set to true.
  */
-bool tryParseReference(const StringPiece16& str, ResourceNameRef* outReference,
+bool tryParseReference(const StringPiece& str, ResourceNameRef* outReference,
                        bool* outCreate = nullptr, bool* outPrivate = nullptr);
 
 /*
  * Returns true if the string is in the form of a resource reference (@[+][package:]type/name).
  */
-bool isReference(const StringPiece16& str);
+bool isReference(const StringPiece& str);
 
 /*
  * Returns true if the string was parsed as an attribute reference (?[package:][type/]name),
  * with `outReference` set to the parsed reference.
  */
-bool tryParseAttributeReference(const StringPiece16& str, ResourceNameRef* outReference);
+bool tryParseAttributeReference(const StringPiece& str, ResourceNameRef* outReference);
 
 /**
  * Returns true if the string is in the form of an attribute reference(?[package:][type/]name).
  */
-bool isAttributeReference(const StringPiece16& str);
+bool isAttributeReference(const StringPiece& str);
 
 /**
  * Returns true if the value is a boolean, putting the result in `outValue`.
  */
-bool tryParseBool(const StringPiece16& str, bool* outValue);
+bool tryParseBool(const StringPiece& str, bool* outValue);
 
 /**
  * Parses an SDK version, which can be an integer, or a letter from A-Z.
  */
-Maybe<int> tryParseSdkVersion(const StringPiece16& str);
+Maybe<int> tryParseSdkVersion(const StringPiece& str);
 
 /*
  * Returns a Reference, or None Maybe instance if the string `str` was parsed as a
@@ -93,58 +98,58 @@
  * ?[package:]style/<entry> or
  * <package>:[style/]<entry>
  */
-Maybe<Reference> parseStyleParentReference(const StringPiece16& str, std::string* outError);
+Maybe<Reference> parseStyleParentReference(const StringPiece& str, std::string* outError);
 
 /*
  * Returns a Reference object if the string was parsed as a resource or attribute reference,
  * ( @[+][package:]type/name | ?[package:]type/name ) setting outCreate to true if
  * the '+' was present in the string.
  */
-std::unique_ptr<Reference> tryParseReference(const StringPiece16& str, bool* outCreate = nullptr);
+std::unique_ptr<Reference> tryParseReference(const StringPiece& str, bool* outCreate = nullptr);
 
 /*
  * Returns a BinaryPrimitve object representing @null or @empty if the string was parsed
  * as one.
  */
-std::unique_ptr<BinaryPrimitive> tryParseNullOrEmpty(const StringPiece16& str);
+std::unique_ptr<BinaryPrimitive> tryParseNullOrEmpty(const StringPiece& str);
 
 /*
  * Returns a BinaryPrimitve object representing a color if the string was parsed
  * as one.
  */
-std::unique_ptr<BinaryPrimitive> tryParseColor(const StringPiece16& str);
+std::unique_ptr<BinaryPrimitive> tryParseColor(const StringPiece& str);
 
 /*
  * Returns a BinaryPrimitve object representing a boolean if the string was parsed
  * as one.
  */
-std::unique_ptr<BinaryPrimitive> tryParseBool(const StringPiece16& str);
+std::unique_ptr<BinaryPrimitive> tryParseBool(const StringPiece& str);
 
 /*
  * Returns a BinaryPrimitve object representing an integer if the string was parsed
  * as one.
  */
-std::unique_ptr<BinaryPrimitive> tryParseInt(const StringPiece16& str);
+std::unique_ptr<BinaryPrimitive> tryParseInt(const StringPiece& str);
 
 /*
  * Returns a BinaryPrimitve object representing a floating point number
  * (float, dimension, etc) if the string was parsed as one.
  */
-std::unique_ptr<BinaryPrimitive> tryParseFloat(const StringPiece16& str);
+std::unique_ptr<BinaryPrimitive> tryParseFloat(const StringPiece& str);
 
 /*
  * Returns a BinaryPrimitve object representing an enum symbol if the string was parsed
  * as one.
  */
 std::unique_ptr<BinaryPrimitive> tryParseEnumSymbol(const Attribute* enumAttr,
-                                                    const StringPiece16& str);
+                                                    const StringPiece& str);
 
 /*
  * Returns a BinaryPrimitve object representing a flag symbol if the string was parsed
  * as one.
  */
 std::unique_ptr<BinaryPrimitive> tryParseFlagSymbol(const Attribute* enumAttr,
-                                                    const StringPiece16& str);
+                                                    const StringPiece& str);
 /*
  * Try to convert a string to an Item for the given attribute. The attribute will
  * restrict what values the string can be converted to.
@@ -152,11 +157,11 @@
  * reference to an ID that must be created (@+id/foo).
  */
 std::unique_ptr<Item> parseItemForAttribute(
-        const StringPiece16& value, const Attribute* attr,
+        const StringPiece& value, const Attribute* attr,
         std::function<void(const ResourceName&)> onCreateReference = {});
 
 std::unique_ptr<Item> parseItemForAttribute(
-        const StringPiece16& value, uint32_t typeMask,
+        const StringPiece& value, uint32_t typeMask,
         std::function<void(const ResourceName&)> onCreateReference = {});
 
 uint32_t androidTypeToAttributeTypeMask(uint16_t type);
diff --git a/tools/aapt2/ResourceUtils_test.cpp b/tools/aapt2/ResourceUtils_test.cpp
index 7425f97..fb76914 100644
--- a/tools/aapt2/ResourceUtils_test.cpp
+++ b/tools/aapt2/ResourceUtils_test.cpp
@@ -16,69 +16,66 @@
 
 #include "Resource.h"
 #include "ResourceUtils.h"
-#include "test/Builders.h"
-#include "test/Common.h"
-
-#include <gtest/gtest.h>
+#include "test/Test.h"
 
 namespace aapt {
 
 TEST(ResourceUtilsTest, ParseBool) {
     bool val = false;
-    EXPECT_TRUE(ResourceUtils::tryParseBool(u"true", &val));
+    EXPECT_TRUE(ResourceUtils::tryParseBool("true", &val));
     EXPECT_TRUE(val);
 
-    EXPECT_TRUE(ResourceUtils::tryParseBool(u"TRUE", &val));
+    EXPECT_TRUE(ResourceUtils::tryParseBool("TRUE", &val));
     EXPECT_TRUE(val);
 
-    EXPECT_TRUE(ResourceUtils::tryParseBool(u"True", &val));
+    EXPECT_TRUE(ResourceUtils::tryParseBool("True", &val));
     EXPECT_TRUE(val);
 
-    EXPECT_TRUE(ResourceUtils::tryParseBool(u"false", &val));
+    EXPECT_TRUE(ResourceUtils::tryParseBool("false", &val));
     EXPECT_FALSE(val);
 
-    EXPECT_TRUE(ResourceUtils::tryParseBool(u"FALSE", &val));
+    EXPECT_TRUE(ResourceUtils::tryParseBool("FALSE", &val));
     EXPECT_FALSE(val);
 
-    EXPECT_TRUE(ResourceUtils::tryParseBool(u"False", &val));
+    EXPECT_TRUE(ResourceUtils::tryParseBool("False", &val));
     EXPECT_FALSE(val);
 }
 
 TEST(ResourceUtilsTest, ParseResourceName) {
     ResourceNameRef actual;
     bool actualPriv = false;
-    EXPECT_TRUE(ResourceUtils::parseResourceName(u"android:color/foo", &actual, &actualPriv));
-    EXPECT_EQ(ResourceNameRef(u"android", ResourceType::kColor, u"foo"), actual);
+    EXPECT_TRUE(ResourceUtils::parseResourceName("android:color/foo", &actual, &actualPriv));
+    EXPECT_EQ(ResourceNameRef("android", ResourceType::kColor, "foo"), actual);
     EXPECT_FALSE(actualPriv);
 
-    EXPECT_TRUE(ResourceUtils::parseResourceName(u"color/foo", &actual, &actualPriv));
-    EXPECT_EQ(ResourceNameRef({}, ResourceType::kColor, u"foo"), actual);
+    EXPECT_TRUE(ResourceUtils::parseResourceName("color/foo", &actual, &actualPriv));
+    EXPECT_EQ(ResourceNameRef({}, ResourceType::kColor, "foo"), actual);
     EXPECT_FALSE(actualPriv);
 
-    EXPECT_TRUE(ResourceUtils::parseResourceName(u"*android:color/foo", &actual, &actualPriv));
-    EXPECT_EQ(ResourceNameRef(u"android", ResourceType::kColor, u"foo"), actual);
+    EXPECT_TRUE(ResourceUtils::parseResourceName("*android:color/foo", &actual, &actualPriv));
+    EXPECT_EQ(ResourceNameRef("android", ResourceType::kColor, "foo"), actual);
     EXPECT_TRUE(actualPriv);
 
-    EXPECT_FALSE(ResourceUtils::parseResourceName(StringPiece16(), &actual, &actualPriv));
+    EXPECT_FALSE(ResourceUtils::parseResourceName(StringPiece(), &actual, &actualPriv));
 }
 
 TEST(ResourceUtilsTest, ParseReferenceWithNoPackage) {
-    ResourceNameRef expected({}, ResourceType::kColor, u"foo");
+    ResourceNameRef expected({}, ResourceType::kColor, "foo");
     ResourceNameRef actual;
     bool create = false;
     bool privateRef = false;
-    EXPECT_TRUE(ResourceUtils::tryParseReference(u"@color/foo", &actual, &create, &privateRef));
+    EXPECT_TRUE(ResourceUtils::tryParseReference("@color/foo", &actual, &create, &privateRef));
     EXPECT_EQ(expected, actual);
     EXPECT_FALSE(create);
     EXPECT_FALSE(privateRef);
 }
 
 TEST(ResourceUtilsTest, ParseReferenceWithPackage) {
-    ResourceNameRef expected(u"android", ResourceType::kColor, u"foo");
+    ResourceNameRef expected("android", ResourceType::kColor, "foo");
     ResourceNameRef actual;
     bool create = false;
     bool privateRef = false;
-    EXPECT_TRUE(ResourceUtils::tryParseReference(u"@android:color/foo", &actual, &create,
+    EXPECT_TRUE(ResourceUtils::tryParseReference("@android:color/foo", &actual, &create,
                                                  &privateRef));
     EXPECT_EQ(expected, actual);
     EXPECT_FALSE(create);
@@ -86,11 +83,11 @@
 }
 
 TEST(ResourceUtilsTest, ParseReferenceWithSurroundingWhitespace) {
-    ResourceNameRef expected(u"android", ResourceType::kColor, u"foo");
+    ResourceNameRef expected("android", ResourceType::kColor, "foo");
     ResourceNameRef actual;
     bool create = false;
     bool privateRef = false;
-    EXPECT_TRUE(ResourceUtils::tryParseReference(u"\t @android:color/foo\n \n\t", &actual,
+    EXPECT_TRUE(ResourceUtils::tryParseReference("\t @android:color/foo\n \n\t", &actual,
                                                  &create, &privateRef));
     EXPECT_EQ(expected, actual);
     EXPECT_FALSE(create);
@@ -98,11 +95,11 @@
 }
 
 TEST(ResourceUtilsTest, ParseAutoCreateIdReference) {
-    ResourceNameRef expected(u"android", ResourceType::kId, u"foo");
+    ResourceNameRef expected("android", ResourceType::kId, "foo");
     ResourceNameRef actual;
     bool create = false;
     bool privateRef = false;
-    EXPECT_TRUE(ResourceUtils::tryParseReference(u"@+android:id/foo", &actual, &create,
+    EXPECT_TRUE(ResourceUtils::tryParseReference("@+android:id/foo", &actual, &create,
                                                  &privateRef));
     EXPECT_EQ(expected, actual);
     EXPECT_TRUE(create);
@@ -110,11 +107,11 @@
 }
 
 TEST(ResourceUtilsTest, ParsePrivateReference) {
-    ResourceNameRef expected(u"android", ResourceType::kId, u"foo");
+    ResourceNameRef expected("android", ResourceType::kId, "foo");
     ResourceNameRef actual;
     bool create = false;
     bool privateRef = false;
-    EXPECT_TRUE(ResourceUtils::tryParseReference(u"@*android:id/foo", &actual, &create,
+    EXPECT_TRUE(ResourceUtils::tryParseReference("@*android:id/foo", &actual, &create,
                                                  &privateRef));
     EXPECT_EQ(expected, actual);
     EXPECT_FALSE(create);
@@ -125,68 +122,68 @@
     bool create = false;
     bool privateRef = false;
     ResourceNameRef actual;
-    EXPECT_FALSE(ResourceUtils::tryParseReference(u"@+android:color/foo", &actual, &create,
+    EXPECT_FALSE(ResourceUtils::tryParseReference("@+android:color/foo", &actual, &create,
                                                   &privateRef));
 }
 
 TEST(ResourceUtilsTest, ParseAttributeReferences) {
-    EXPECT_TRUE(ResourceUtils::isAttributeReference(u"?android"));
-    EXPECT_TRUE(ResourceUtils::isAttributeReference(u"?android:foo"));
-    EXPECT_TRUE(ResourceUtils::isAttributeReference(u"?attr/foo"));
-    EXPECT_TRUE(ResourceUtils::isAttributeReference(u"?android:attr/foo"));
+    EXPECT_TRUE(ResourceUtils::isAttributeReference("?android"));
+    EXPECT_TRUE(ResourceUtils::isAttributeReference("?android:foo"));
+    EXPECT_TRUE(ResourceUtils::isAttributeReference("?attr/foo"));
+    EXPECT_TRUE(ResourceUtils::isAttributeReference("?android:attr/foo"));
 }
 
 TEST(ResourceUtilsTest, FailParseIncompleteReference) {
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?style/foo"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?android:style/foo"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?android:"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?android:attr/"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?:attr/"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?:attr/foo"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?:/"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?:/foo"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?attr/"));
-    EXPECT_FALSE(ResourceUtils::isAttributeReference(u"?/foo"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?style/foo"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?android:style/foo"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?android:"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?android:attr/"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?:attr/"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?:attr/foo"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?:/"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?:/foo"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?attr/"));
+    EXPECT_FALSE(ResourceUtils::isAttributeReference("?/foo"));
 }
 
 TEST(ResourceUtilsTest, ParseStyleParentReference) {
-    const ResourceName kAndroidStyleFooName(u"android", ResourceType::kStyle, u"foo");
-    const ResourceName kStyleFooName({}, ResourceType::kStyle, u"foo");
+    const ResourceName kAndroidStyleFooName("android", ResourceType::kStyle, "foo");
+    const ResourceName kStyleFooName({}, ResourceType::kStyle, "foo");
 
     std::string errStr;
-    Maybe<Reference> ref = ResourceUtils::parseStyleParentReference(u"@android:style/foo", &errStr);
+    Maybe<Reference> ref = ResourceUtils::parseStyleParentReference("@android:style/foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kAndroidStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"@style/foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("@style/foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"?android:style/foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("?android:style/foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kAndroidStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"?style/foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("?style/foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"android:style/foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("android:style/foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kAndroidStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"android:foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("android:foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kAndroidStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"@android:foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("@android:foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kAndroidStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kStyleFooName);
 
-    ref = ResourceUtils::parseStyleParentReference(u"*android:style/foo", &errStr);
+    ref = ResourceUtils::parseStyleParentReference("*android:style/foo", &errStr);
     AAPT_ASSERT_TRUE(ref);
     EXPECT_EQ(ref.value().name.value(), kAndroidStyleFooName);
     EXPECT_TRUE(ref.value().privateReference);
@@ -195,11 +192,11 @@
 TEST(ResourceUtilsTest, ParseEmptyFlag) {
     std::unique_ptr<Attribute> attr = test::AttributeBuilder(false)
             .setTypeMask(android::ResTable_map::TYPE_FLAGS)
-            .addItem(u"one", 0x01)
-            .addItem(u"two", 0x02)
+            .addItem("one", 0x01)
+            .addItem("two", 0x02)
             .build();
 
-    std::unique_ptr<BinaryPrimitive> result = ResourceUtils::tryParseFlagSymbol(attr.get(), u"");
+    std::unique_ptr<BinaryPrimitive> result = ResourceUtils::tryParseFlagSymbol(attr.get(), "");
     ASSERT_NE(nullptr, result);
     EXPECT_EQ(0u, result->value.data);
 }
diff --git a/tools/aapt2/ResourceValues.h b/tools/aapt2/ResourceValues.h
index aa1b550..8ae71ad 100644
--- a/tools/aapt2/ResourceValues.h
+++ b/tools/aapt2/ResourceValues.h
@@ -84,15 +84,15 @@
     /**
      * Returns the comment that was associated with this resource.
      */
-    StringPiece16 getComment() const {
+    const std::string& getComment() const {
         return mComment;
     }
 
-    void setComment(const StringPiece16& str) {
+    void setComment(const StringPiece& str) {
         mComment = str.toString();
     }
 
-    void setComment(std::u16string&& str) {
+    void setComment(std::string&& str) {
         mComment = std::move(str);
     }
 
@@ -115,7 +115,7 @@
 
 protected:
     Source mSource;
-    std::u16string mComment;
+    std::string mComment;
     bool mWeak = false;
     bool mTranslateable = true;
 };
diff --git a/tools/aapt2/Resource_test.cpp b/tools/aapt2/Resource_test.cpp
index 48dc521..06cddc7 100644
--- a/tools/aapt2/Resource_test.cpp
+++ b/tools/aapt2/Resource_test.cpp
@@ -14,102 +14,101 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-
 #include "Resource.h"
+#include "test/Test.h"
 
 namespace aapt {
 
 TEST(ResourceTypeTest, ParseResourceTypes) {
-    const ResourceType* type = parseResourceType(u"anim");
+    const ResourceType* type = parseResourceType("anim");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kAnim);
 
-    type = parseResourceType(u"animator");
+    type = parseResourceType("animator");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kAnimator);
 
-    type = parseResourceType(u"array");
+    type = parseResourceType("array");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kArray);
 
-    type = parseResourceType(u"attr");
+    type = parseResourceType("attr");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kAttr);
 
-    type = parseResourceType(u"^attr-private");
+    type = parseResourceType("^attr-private");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kAttrPrivate);
 
-    type = parseResourceType(u"bool");
+    type = parseResourceType("bool");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kBool);
 
-    type = parseResourceType(u"color");
+    type = parseResourceType("color");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kColor);
 
-    type = parseResourceType(u"dimen");
+    type = parseResourceType("dimen");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kDimen);
 
-    type = parseResourceType(u"drawable");
+    type = parseResourceType("drawable");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kDrawable);
 
-    type = parseResourceType(u"fraction");
+    type = parseResourceType("fraction");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kFraction);
 
-    type = parseResourceType(u"id");
+    type = parseResourceType("id");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kId);
 
-    type = parseResourceType(u"integer");
+    type = parseResourceType("integer");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kInteger);
 
-    type = parseResourceType(u"interpolator");
+    type = parseResourceType("interpolator");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kInterpolator);
 
-    type = parseResourceType(u"layout");
+    type = parseResourceType("layout");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kLayout);
 
-    type = parseResourceType(u"menu");
+    type = parseResourceType("menu");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kMenu);
 
-    type = parseResourceType(u"mipmap");
+    type = parseResourceType("mipmap");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kMipmap);
 
-    type = parseResourceType(u"plurals");
+    type = parseResourceType("plurals");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kPlurals);
 
-    type = parseResourceType(u"raw");
+    type = parseResourceType("raw");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kRaw);
 
-    type = parseResourceType(u"string");
+    type = parseResourceType("string");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kString);
 
-    type = parseResourceType(u"style");
+    type = parseResourceType("style");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kStyle);
 
-    type = parseResourceType(u"transition");
+    type = parseResourceType("transition");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kTransition);
 
-    type = parseResourceType(u"xml");
+    type = parseResourceType("xml");
     ASSERT_NE(type, nullptr);
     EXPECT_EQ(*type, ResourceType::kXml);
 
-    type = parseResourceType(u"blahaha");
+    type = parseResourceType("blahaha");
     EXPECT_EQ(type, nullptr);
 }
 
diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp
index 7312ee3..91e755d 100644
--- a/tools/aapt2/SdkConstants.cpp
+++ b/tools/aapt2/SdkConstants.cpp
@@ -23,7 +23,7 @@
 
 namespace aapt {
 
-static const char16_t* sDevelopmentSdkCodeName = u"O";
+static const char* sDevelopmentSdkCodeName = "O";
 static int sDevelopmentSdkLevel = 26;
 
 static const std::vector<std::pair<uint16_t, size_t>> sAttrIdMap = {
@@ -63,671 +63,671 @@
     return iter->second;
 }
 
-static const std::unordered_map<std::u16string, size_t> sAttrMap = {
-    { u"marqueeRepeatLimit", 2 },
-    { u"windowNoDisplay", 3 },
-    { u"backgroundDimEnabled", 3 },
-    { u"inputType", 3 },
-    { u"isDefault", 3 },
-    { u"windowDisablePreview", 3 },
-    { u"privateImeOptions", 3 },
-    { u"editorExtras", 3 },
-    { u"settingsActivity", 3 },
-    { u"fastScrollEnabled", 3 },
-    { u"reqTouchScreen", 3 },
-    { u"reqKeyboardType", 3 },
-    { u"reqHardKeyboard", 3 },
-    { u"reqNavigation", 3 },
-    { u"windowSoftInputMode", 3 },
-    { u"imeFullscreenBackground", 3 },
-    { u"noHistory", 3 },
-    { u"headerDividersEnabled", 3 },
-    { u"footerDividersEnabled", 3 },
-    { u"candidatesTextStyleSpans", 3 },
-    { u"smoothScrollbar", 3 },
-    { u"reqFiveWayNav", 3 },
-    { u"keyBackground", 3 },
-    { u"keyTextSize", 3 },
-    { u"labelTextSize", 3 },
-    { u"keyTextColor", 3 },
-    { u"keyPreviewLayout", 3 },
-    { u"keyPreviewOffset", 3 },
-    { u"keyPreviewHeight", 3 },
-    { u"verticalCorrection", 3 },
-    { u"popupLayout", 3 },
-    { u"state_long_pressable", 3 },
-    { u"keyWidth", 3 },
-    { u"keyHeight", 3 },
-    { u"horizontalGap", 3 },
-    { u"verticalGap", 3 },
-    { u"rowEdgeFlags", 3 },
-    { u"codes", 3 },
-    { u"popupKeyboard", 3 },
-    { u"popupCharacters", 3 },
-    { u"keyEdgeFlags", 3 },
-    { u"isModifier", 3 },
-    { u"isSticky", 3 },
-    { u"isRepeatable", 3 },
-    { u"iconPreview", 3 },
-    { u"keyOutputText", 3 },
-    { u"keyLabel", 3 },
-    { u"keyIcon", 3 },
-    { u"keyboardMode", 3 },
-    { u"isScrollContainer", 3 },
-    { u"fillEnabled", 3 },
-    { u"updatePeriodMillis", 3 },
-    { u"initialLayout", 3 },
-    { u"voiceSearchMode", 3 },
-    { u"voiceLanguageModel", 3 },
-    { u"voicePromptText", 3 },
-    { u"voiceLanguage", 3 },
-    { u"voiceMaxResults", 3 },
-    { u"bottomOffset", 3 },
-    { u"topOffset", 3 },
-    { u"allowSingleTap", 3 },
-    { u"handle", 3 },
-    { u"content", 3 },
-    { u"animateOnClick", 3 },
-    { u"configure", 3 },
-    { u"hapticFeedbackEnabled", 3 },
-    { u"innerRadius", 3 },
-    { u"thickness", 3 },
-    { u"sharedUserLabel", 3 },
-    { u"dropDownWidth", 3 },
-    { u"dropDownAnchor", 3 },
-    { u"imeOptions", 3 },
-    { u"imeActionLabel", 3 },
-    { u"imeActionId", 3 },
-    { u"imeExtractEnterAnimation", 3 },
-    { u"imeExtractExitAnimation", 3 },
-    { u"tension", 4 },
-    { u"extraTension", 4 },
-    { u"anyDensity", 4 },
-    { u"searchSuggestThreshold", 4 },
-    { u"includeInGlobalSearch", 4 },
-    { u"onClick", 4 },
-    { u"targetSdkVersion", 4 },
-    { u"maxSdkVersion", 4 },
-    { u"testOnly", 4 },
-    { u"contentDescription", 4 },
-    { u"gestureStrokeWidth", 4 },
-    { u"gestureColor", 4 },
-    { u"uncertainGestureColor", 4 },
-    { u"fadeOffset", 4 },
-    { u"fadeDuration", 4 },
-    { u"gestureStrokeType", 4 },
-    { u"gestureStrokeLengthThreshold", 4 },
-    { u"gestureStrokeSquarenessThreshold", 4 },
-    { u"gestureStrokeAngleThreshold", 4 },
-    { u"eventsInterceptionEnabled", 4 },
-    { u"fadeEnabled", 4 },
-    { u"backupAgent", 4 },
-    { u"allowBackup", 4 },
-    { u"glEsVersion", 4 },
-    { u"queryAfterZeroResults", 4 },
-    { u"dropDownHeight", 4 },
-    { u"smallScreens", 4 },
-    { u"normalScreens", 4 },
-    { u"largeScreens", 4 },
-    { u"progressBarStyleInverse", 4 },
-    { u"progressBarStyleSmallInverse", 4 },
-    { u"progressBarStyleLargeInverse", 4 },
-    { u"searchSettingsDescription", 4 },
-    { u"textColorPrimaryInverseDisableOnly", 4 },
-    { u"autoUrlDetect", 4 },
-    { u"resizeable", 4 },
-    { u"required", 5 },
-    { u"accountType", 5 },
-    { u"contentAuthority", 5 },
-    { u"userVisible", 5 },
-    { u"windowShowWallpaper", 5 },
-    { u"wallpaperOpenEnterAnimation", 5 },
-    { u"wallpaperOpenExitAnimation", 5 },
-    { u"wallpaperCloseEnterAnimation", 5 },
-    { u"wallpaperCloseExitAnimation", 5 },
-    { u"wallpaperIntraOpenEnterAnimation", 5 },
-    { u"wallpaperIntraOpenExitAnimation", 5 },
-    { u"wallpaperIntraCloseEnterAnimation", 5 },
-    { u"wallpaperIntraCloseExitAnimation", 5 },
-    { u"supportsUploading", 5 },
-    { u"killAfterRestore", 5 },
-    { u"restoreNeedsApplication", 5 },
-    { u"smallIcon", 5 },
-    { u"accountPreferences", 5 },
-    { u"textAppearanceSearchResultSubtitle", 5 },
-    { u"textAppearanceSearchResultTitle", 5 },
-    { u"summaryColumn", 5 },
-    { u"detailColumn", 5 },
-    { u"detailSocialSummary", 5 },
-    { u"thumbnail", 5 },
-    { u"detachWallpaper", 5 },
-    { u"finishOnCloseSystemDialogs", 5 },
-    { u"scrollbarFadeDuration", 5 },
-    { u"scrollbarDefaultDelayBeforeFade", 5 },
-    { u"fadeScrollbars", 5 },
-    { u"colorBackgroundCacheHint", 5 },
-    { u"dropDownHorizontalOffset", 5 },
-    { u"dropDownVerticalOffset", 5 },
-    { u"quickContactBadgeStyleWindowSmall", 6 },
-    { u"quickContactBadgeStyleWindowMedium", 6 },
-    { u"quickContactBadgeStyleWindowLarge", 6 },
-    { u"quickContactBadgeStyleSmallWindowSmall", 6 },
-    { u"quickContactBadgeStyleSmallWindowMedium", 6 },
-    { u"quickContactBadgeStyleSmallWindowLarge", 6 },
-    { u"author", 7 },
-    { u"autoStart", 7 },
-    { u"expandableListViewWhiteStyle", 8 },
-    { u"installLocation", 8 },
-    { u"vmSafeMode", 8 },
-    { u"webTextViewStyle", 8 },
-    { u"restoreAnyVersion", 8 },
-    { u"tabStripLeft", 8 },
-    { u"tabStripRight", 8 },
-    { u"tabStripEnabled", 8 },
-    { u"logo", 9 },
-    { u"xlargeScreens", 9 },
-    { u"immersive", 9 },
-    { u"overScrollMode", 9 },
-    { u"overScrollHeader", 9 },
-    { u"overScrollFooter", 9 },
-    { u"filterTouchesWhenObscured", 9 },
-    { u"textSelectHandleLeft", 9 },
-    { u"textSelectHandleRight", 9 },
-    { u"textSelectHandle", 9 },
-    { u"textSelectHandleWindowStyle", 9 },
-    { u"popupAnimationStyle", 9 },
-    { u"screenSize", 9 },
-    { u"screenDensity", 9 },
-    { u"allContactsName", 11 },
-    { u"windowActionBar", 11 },
-    { u"actionBarStyle", 11 },
-    { u"navigationMode", 11 },
-    { u"displayOptions", 11 },
-    { u"subtitle", 11 },
-    { u"customNavigationLayout", 11 },
-    { u"hardwareAccelerated", 11 },
-    { u"measureWithLargestChild", 11 },
-    { u"animateFirstView", 11 },
-    { u"dropDownSpinnerStyle", 11 },
-    { u"actionDropDownStyle", 11 },
-    { u"actionButtonStyle", 11 },
-    { u"showAsAction", 11 },
-    { u"previewImage", 11 },
-    { u"actionModeBackground", 11 },
-    { u"actionModeCloseDrawable", 11 },
-    { u"windowActionModeOverlay", 11 },
-    { u"valueFrom", 11 },
-    { u"valueTo", 11 },
-    { u"valueType", 11 },
-    { u"propertyName", 11 },
-    { u"ordering", 11 },
-    { u"fragment", 11 },
-    { u"windowActionBarOverlay", 11 },
-    { u"fragmentOpenEnterAnimation", 11 },
-    { u"fragmentOpenExitAnimation", 11 },
-    { u"fragmentCloseEnterAnimation", 11 },
-    { u"fragmentCloseExitAnimation", 11 },
-    { u"fragmentFadeEnterAnimation", 11 },
-    { u"fragmentFadeExitAnimation", 11 },
-    { u"actionBarSize", 11 },
-    { u"imeSubtypeLocale", 11 },
-    { u"imeSubtypeMode", 11 },
-    { u"imeSubtypeExtraValue", 11 },
-    { u"splitMotionEvents", 11 },
-    { u"listChoiceBackgroundIndicator", 11 },
-    { u"spinnerMode", 11 },
-    { u"animateLayoutChanges", 11 },
-    { u"actionBarTabStyle", 11 },
-    { u"actionBarTabBarStyle", 11 },
-    { u"actionBarTabTextStyle", 11 },
-    { u"actionOverflowButtonStyle", 11 },
-    { u"actionModeCloseButtonStyle", 11 },
-    { u"titleTextStyle", 11 },
-    { u"subtitleTextStyle", 11 },
-    { u"iconifiedByDefault", 11 },
-    { u"actionLayout", 11 },
-    { u"actionViewClass", 11 },
-    { u"activatedBackgroundIndicator", 11 },
-    { u"state_activated", 11 },
-    { u"listPopupWindowStyle", 11 },
-    { u"popupMenuStyle", 11 },
-    { u"textAppearanceLargePopupMenu", 11 },
-    { u"textAppearanceSmallPopupMenu", 11 },
-    { u"breadCrumbTitle", 11 },
-    { u"breadCrumbShortTitle", 11 },
-    { u"listDividerAlertDialog", 11 },
-    { u"textColorAlertDialogListItem", 11 },
-    { u"loopViews", 11 },
-    { u"dialogTheme", 11 },
-    { u"alertDialogTheme", 11 },
-    { u"dividerVertical", 11 },
-    { u"homeAsUpIndicator", 11 },
-    { u"enterFadeDuration", 11 },
-    { u"exitFadeDuration", 11 },
-    { u"selectableItemBackground", 11 },
-    { u"autoAdvanceViewId", 11 },
-    { u"useIntrinsicSizeAsMinimum", 11 },
-    { u"actionModeCutDrawable", 11 },
-    { u"actionModeCopyDrawable", 11 },
-    { u"actionModePasteDrawable", 11 },
-    { u"textEditPasteWindowLayout", 11 },
-    { u"textEditNoPasteWindowLayout", 11 },
-    { u"textIsSelectable", 11 },
-    { u"windowEnableSplitTouch", 11 },
-    { u"indeterminateProgressStyle", 11 },
-    { u"progressBarPadding", 11 },
-    { u"animationResolution", 11 },
-    { u"state_accelerated", 11 },
-    { u"baseline", 11 },
-    { u"homeLayout", 11 },
-    { u"opacity", 11 },
-    { u"alpha", 11 },
-    { u"transformPivotX", 11 },
-    { u"transformPivotY", 11 },
-    { u"translationX", 11 },
-    { u"translationY", 11 },
-    { u"scaleX", 11 },
-    { u"scaleY", 11 },
-    { u"rotation", 11 },
-    { u"rotationX", 11 },
-    { u"rotationY", 11 },
-    { u"showDividers", 11 },
-    { u"dividerPadding", 11 },
-    { u"borderlessButtonStyle", 11 },
-    { u"dividerHorizontal", 11 },
-    { u"itemPadding", 11 },
-    { u"buttonBarStyle", 11 },
-    { u"buttonBarButtonStyle", 11 },
-    { u"segmentedButtonStyle", 11 },
-    { u"staticWallpaperPreview", 11 },
-    { u"allowParallelSyncs", 11 },
-    { u"isAlwaysSyncable", 11 },
-    { u"verticalScrollbarPosition", 11 },
-    { u"fastScrollAlwaysVisible", 11 },
-    { u"fastScrollThumbDrawable", 11 },
-    { u"fastScrollPreviewBackgroundLeft", 11 },
-    { u"fastScrollPreviewBackgroundRight", 11 },
-    { u"fastScrollTrackDrawable", 11 },
-    { u"fastScrollOverlayPosition", 11 },
-    { u"customTokens", 11 },
-    { u"nextFocusForward", 11 },
-    { u"firstDayOfWeek", 11 },
-    { u"showWeekNumber", 11 },
-    { u"minDate", 11 },
-    { u"maxDate", 11 },
-    { u"shownWeekCount", 11 },
-    { u"selectedWeekBackgroundColor", 11 },
-    { u"focusedMonthDateColor", 11 },
-    { u"unfocusedMonthDateColor", 11 },
-    { u"weekNumberColor", 11 },
-    { u"weekSeparatorLineColor", 11 },
-    { u"selectedDateVerticalBar", 11 },
-    { u"weekDayTextAppearance", 11 },
-    { u"dateTextAppearance", 11 },
-    { u"solidColor", 11 },
-    { u"spinnersShown", 11 },
-    { u"calendarViewShown", 11 },
-    { u"state_multiline", 11 },
-    { u"detailsElementBackground", 11 },
-    { u"textColorHighlightInverse", 11 },
-    { u"textColorLinkInverse", 11 },
-    { u"editTextColor", 11 },
-    { u"editTextBackground", 11 },
-    { u"horizontalScrollViewStyle", 11 },
-    { u"layerType", 11 },
-    { u"alertDialogIcon", 11 },
-    { u"windowMinWidthMajor", 11 },
-    { u"windowMinWidthMinor", 11 },
-    { u"queryHint", 11 },
-    { u"fastScrollTextColor", 11 },
-    { u"largeHeap", 11 },
-    { u"windowCloseOnTouchOutside", 11 },
-    { u"datePickerStyle", 11 },
-    { u"calendarViewStyle", 11 },
-    { u"textEditSidePasteWindowLayout", 11 },
-    { u"textEditSideNoPasteWindowLayout", 11 },
-    { u"actionMenuTextAppearance", 11 },
-    { u"actionMenuTextColor", 11 },
-    { u"textCursorDrawable", 12 },
-    { u"resizeMode", 12 },
-    { u"requiresSmallestWidthDp", 12 },
-    { u"compatibleWidthLimitDp", 12 },
-    { u"largestWidthLimitDp", 12 },
-    { u"state_hovered", 13 },
-    { u"state_drag_can_accept", 13 },
-    { u"state_drag_hovered", 13 },
-    { u"stopWithTask", 13 },
-    { u"switchTextOn", 13 },
-    { u"switchTextOff", 13 },
-    { u"switchPreferenceStyle", 13 },
-    { u"switchTextAppearance", 13 },
-    { u"track", 13 },
-    { u"switchMinWidth", 13 },
-    { u"switchPadding", 13 },
-    { u"thumbTextPadding", 13 },
-    { u"textSuggestionsWindowStyle", 13 },
-    { u"textEditSuggestionItemLayout", 13 },
-    { u"rowCount", 13 },
-    { u"rowOrderPreserved", 13 },
-    { u"columnCount", 13 },
-    { u"columnOrderPreserved", 13 },
-    { u"useDefaultMargins", 13 },
-    { u"alignmentMode", 13 },
-    { u"layout_row", 13 },
-    { u"layout_rowSpan", 13 },
-    { u"layout_columnSpan", 13 },
-    { u"actionModeSelectAllDrawable", 13 },
-    { u"isAuxiliary", 13 },
-    { u"accessibilityEventTypes", 13 },
-    { u"packageNames", 13 },
-    { u"accessibilityFeedbackType", 13 },
-    { u"notificationTimeout", 13 },
-    { u"accessibilityFlags", 13 },
-    { u"canRetrieveWindowContent", 13 },
-    { u"listPreferredItemHeightLarge", 13 },
-    { u"listPreferredItemHeightSmall", 13 },
-    { u"actionBarSplitStyle", 13 },
-    { u"actionProviderClass", 13 },
-    { u"backgroundStacked", 13 },
-    { u"backgroundSplit", 13 },
-    { u"textAllCaps", 13 },
-    { u"colorPressedHighlight", 13 },
-    { u"colorLongPressedHighlight", 13 },
-    { u"colorFocusedHighlight", 13 },
-    { u"colorActivatedHighlight", 13 },
-    { u"colorMultiSelectHighlight", 13 },
-    { u"drawableStart", 13 },
-    { u"drawableEnd", 13 },
-    { u"actionModeStyle", 13 },
-    { u"minResizeWidth", 13 },
-    { u"minResizeHeight", 13 },
-    { u"actionBarWidgetTheme", 13 },
-    { u"uiOptions", 13 },
-    { u"subtypeLocale", 13 },
-    { u"subtypeExtraValue", 13 },
-    { u"actionBarDivider", 13 },
-    { u"actionBarItemBackground", 13 },
-    { u"actionModeSplitBackground", 13 },
-    { u"textAppearanceListItem", 13 },
-    { u"textAppearanceListItemSmall", 13 },
-    { u"targetDescriptions", 13 },
-    { u"directionDescriptions", 13 },
-    { u"overridesImplicitlyEnabledSubtype", 13 },
-    { u"listPreferredItemPaddingLeft", 13 },
-    { u"listPreferredItemPaddingRight", 13 },
-    { u"requiresFadingEdge", 13 },
-    { u"publicKey", 13 },
-    { u"parentActivityName", 16 },
-    { u"isolatedProcess", 16 },
-    { u"importantForAccessibility", 16 },
-    { u"keyboardLayout", 16 },
-    { u"fontFamily", 16 },
-    { u"mediaRouteButtonStyle", 16 },
-    { u"mediaRouteTypes", 16 },
-    { u"supportsRtl", 17 },
-    { u"textDirection", 17 },
-    { u"textAlignment", 17 },
-    { u"layoutDirection", 17 },
-    { u"paddingStart", 17 },
-    { u"paddingEnd", 17 },
-    { u"layout_marginStart", 17 },
-    { u"layout_marginEnd", 17 },
-    { u"layout_toStartOf", 17 },
-    { u"layout_toEndOf", 17 },
-    { u"layout_alignStart", 17 },
-    { u"layout_alignEnd", 17 },
-    { u"layout_alignParentStart", 17 },
-    { u"layout_alignParentEnd", 17 },
-    { u"listPreferredItemPaddingStart", 17 },
-    { u"listPreferredItemPaddingEnd", 17 },
-    { u"singleUser", 17 },
-    { u"presentationTheme", 17 },
-    { u"subtypeId", 17 },
-    { u"initialKeyguardLayout", 17 },
-    { u"widgetCategory", 17 },
-    { u"permissionGroupFlags", 17 },
-    { u"labelFor", 17 },
-    { u"permissionFlags", 17 },
-    { u"checkedTextViewStyle", 17 },
-    { u"showOnLockScreen", 17 },
-    { u"format12Hour", 17 },
-    { u"format24Hour", 17 },
-    { u"timeZone", 17 },
-    { u"mipMap", 18 },
-    { u"mirrorForRtl", 18 },
-    { u"windowOverscan", 18 },
-    { u"requiredForAllUsers", 18 },
-    { u"indicatorStart", 18 },
-    { u"indicatorEnd", 18 },
-    { u"childIndicatorStart", 18 },
-    { u"childIndicatorEnd", 18 },
-    { u"restrictedAccountType", 18 },
-    { u"requiredAccountType", 18 },
-    { u"canRequestTouchExplorationMode", 18 },
-    { u"canRequestEnhancedWebAccessibility", 18 },
-    { u"canRequestFilterKeyEvents", 18 },
-    { u"layoutMode", 18 },
-    { u"keySet", 19 },
-    { u"targetId", 19 },
-    { u"fromScene", 19 },
-    { u"toScene", 19 },
-    { u"transition", 19 },
-    { u"transitionOrdering", 19 },
-    { u"fadingMode", 19 },
-    { u"startDelay", 19 },
-    { u"ssp", 19 },
-    { u"sspPrefix", 19 },
-    { u"sspPattern", 19 },
-    { u"addPrintersActivity", 19 },
-    { u"vendor", 19 },
-    { u"category", 19 },
-    { u"isAsciiCapable", 19 },
-    { u"autoMirrored", 19 },
-    { u"supportsSwitchingToNextInputMethod", 19 },
-    { u"requireDeviceUnlock", 19 },
-    { u"apduServiceBanner", 19 },
-    { u"accessibilityLiveRegion", 19 },
-    { u"windowTranslucentStatus", 19 },
-    { u"windowTranslucentNavigation", 19 },
-    { u"advancedPrintOptionsActivity", 19 },
-    { u"banner", 20 },
-    { u"windowSwipeToDismiss", 20 },
-    { u"isGame", 20 },
-    { u"allowEmbedded", 20 },
-    { u"setupActivity", 20 },
-    { u"fastScrollStyle", 21 },
-    { u"windowContentTransitions", 21 },
-    { u"windowContentTransitionManager", 21 },
-    { u"translationZ", 21 },
-    { u"tintMode", 21 },
-    { u"controlX1", 21 },
-    { u"controlY1", 21 },
-    { u"controlX2", 21 },
-    { u"controlY2", 21 },
-    { u"transitionName", 21 },
-    { u"transitionGroup", 21 },
-    { u"viewportWidth", 21 },
-    { u"viewportHeight", 21 },
-    { u"fillColor", 21 },
-    { u"pathData", 21 },
-    { u"strokeColor", 21 },
-    { u"strokeWidth", 21 },
-    { u"trimPathStart", 21 },
-    { u"trimPathEnd", 21 },
-    { u"trimPathOffset", 21 },
-    { u"strokeLineCap", 21 },
-    { u"strokeLineJoin", 21 },
-    { u"strokeMiterLimit", 21 },
-    { u"colorControlNormal", 21 },
-    { u"colorControlActivated", 21 },
-    { u"colorButtonNormal", 21 },
-    { u"colorControlHighlight", 21 },
-    { u"persistableMode", 21 },
-    { u"titleTextAppearance", 21 },
-    { u"subtitleTextAppearance", 21 },
-    { u"slideEdge", 21 },
-    { u"actionBarTheme", 21 },
-    { u"textAppearanceListItemSecondary", 21 },
-    { u"colorPrimary", 21 },
-    { u"colorPrimaryDark", 21 },
-    { u"colorAccent", 21 },
-    { u"nestedScrollingEnabled", 21 },
-    { u"windowEnterTransition", 21 },
-    { u"windowExitTransition", 21 },
-    { u"windowSharedElementEnterTransition", 21 },
-    { u"windowSharedElementExitTransition", 21 },
-    { u"windowAllowReturnTransitionOverlap", 21 },
-    { u"windowAllowEnterTransitionOverlap", 21 },
-    { u"sessionService", 21 },
-    { u"stackViewStyle", 21 },
-    { u"switchStyle", 21 },
-    { u"elevation", 21 },
-    { u"excludeId", 21 },
-    { u"excludeClass", 21 },
-    { u"hideOnContentScroll", 21 },
-    { u"actionOverflowMenuStyle", 21 },
-    { u"documentLaunchMode", 21 },
-    { u"maxRecents", 21 },
-    { u"autoRemoveFromRecents", 21 },
-    { u"stateListAnimator", 21 },
-    { u"toId", 21 },
-    { u"fromId", 21 },
-    { u"reversible", 21 },
-    { u"splitTrack", 21 },
-    { u"targetName", 21 },
-    { u"excludeName", 21 },
-    { u"matchOrder", 21 },
-    { u"windowDrawsSystemBarBackgrounds", 21 },
-    { u"statusBarColor", 21 },
-    { u"navigationBarColor", 21 },
-    { u"contentInsetStart", 21 },
-    { u"contentInsetEnd", 21 },
-    { u"contentInsetLeft", 21 },
-    { u"contentInsetRight", 21 },
-    { u"paddingMode", 21 },
-    { u"layout_rowWeight", 21 },
-    { u"layout_columnWeight", 21 },
-    { u"translateX", 21 },
-    { u"translateY", 21 },
-    { u"selectableItemBackgroundBorderless", 21 },
-    { u"elegantTextHeight", 21 },
-    { u"searchKeyphraseId", 21 },
-    { u"searchKeyphrase", 21 },
-    { u"searchKeyphraseSupportedLocales", 21 },
-    { u"windowTransitionBackgroundFadeDuration", 21 },
-    { u"overlapAnchor", 21 },
-    { u"progressTint", 21 },
-    { u"progressTintMode", 21 },
-    { u"progressBackgroundTint", 21 },
-    { u"progressBackgroundTintMode", 21 },
-    { u"secondaryProgressTint", 21 },
-    { u"secondaryProgressTintMode", 21 },
-    { u"indeterminateTint", 21 },
-    { u"indeterminateTintMode", 21 },
-    { u"backgroundTint", 21 },
-    { u"backgroundTintMode", 21 },
-    { u"foregroundTint", 21 },
-    { u"foregroundTintMode", 21 },
-    { u"buttonTint", 21 },
-    { u"buttonTintMode", 21 },
-    { u"thumbTint", 21 },
-    { u"thumbTintMode", 21 },
-    { u"fullBackupOnly", 21 },
-    { u"propertyXName", 21 },
-    { u"propertyYName", 21 },
-    { u"relinquishTaskIdentity", 21 },
-    { u"tileModeX", 21 },
-    { u"tileModeY", 21 },
-    { u"actionModeShareDrawable", 21 },
-    { u"actionModeFindDrawable", 21 },
-    { u"actionModeWebSearchDrawable", 21 },
-    { u"transitionVisibilityMode", 21 },
-    { u"minimumHorizontalAngle", 21 },
-    { u"minimumVerticalAngle", 21 },
-    { u"maximumAngle", 21 },
-    { u"searchViewStyle", 21 },
-    { u"closeIcon", 21 },
-    { u"goIcon", 21 },
-    { u"searchIcon", 21 },
-    { u"voiceIcon", 21 },
-    { u"commitIcon", 21 },
-    { u"suggestionRowLayout", 21 },
-    { u"queryBackground", 21 },
-    { u"submitBackground", 21 },
-    { u"buttonBarPositiveButtonStyle", 21 },
-    { u"buttonBarNeutralButtonStyle", 21 },
-    { u"buttonBarNegativeButtonStyle", 21 },
-    { u"popupElevation", 21 },
-    { u"actionBarPopupTheme", 21 },
-    { u"multiArch", 21 },
-    { u"touchscreenBlocksFocus", 21 },
-    { u"windowElevation", 21 },
-    { u"launchTaskBehindTargetAnimation", 21 },
-    { u"launchTaskBehindSourceAnimation", 21 },
-    { u"restrictionType", 21 },
-    { u"dayOfWeekBackground", 21 },
-    { u"dayOfWeekTextAppearance", 21 },
-    { u"headerMonthTextAppearance", 21 },
-    { u"headerDayOfMonthTextAppearance", 21 },
-    { u"headerYearTextAppearance", 21 },
-    { u"yearListItemTextAppearance", 21 },
-    { u"yearListSelectorColor", 21 },
-    { u"calendarTextColor", 21 },
-    { u"recognitionService", 21 },
-    { u"timePickerStyle", 21 },
-    { u"timePickerDialogTheme", 21 },
-    { u"headerTimeTextAppearance", 21 },
-    { u"headerAmPmTextAppearance", 21 },
-    { u"numbersTextColor", 21 },
-    { u"numbersBackgroundColor", 21 },
-    { u"numbersSelectorColor", 21 },
-    { u"amPmTextColor", 21 },
-    { u"amPmBackgroundColor", 21 },
-    { u"searchKeyphraseRecognitionFlags", 21 },
-    { u"checkMarkTint", 21 },
-    { u"checkMarkTintMode", 21 },
-    { u"popupTheme", 21 },
-    { u"toolbarStyle", 21 },
-    { u"windowClipToOutline", 21 },
-    { u"datePickerDialogTheme", 21 },
-    { u"showText", 21 },
-    { u"windowReturnTransition", 21 },
-    { u"windowReenterTransition", 21 },
-    { u"windowSharedElementReturnTransition", 21 },
-    { u"windowSharedElementReenterTransition", 21 },
-    { u"resumeWhilePausing", 21 },
-    { u"datePickerMode", 21 },
-    { u"timePickerMode", 21 },
-    { u"inset", 21 },
-    { u"letterSpacing", 21 },
-    { u"fontFeatureSettings", 21 },
-    { u"outlineProvider", 21 },
-    { u"contentAgeHint", 21 },
-    { u"country", 21 },
-    { u"windowSharedElementsUseOverlay", 21 },
-    { u"reparent", 21 },
-    { u"reparentWithOverlay", 21 },
-    { u"ambientShadowAlpha", 21 },
-    { u"spotShadowAlpha", 21 },
-    { u"navigationIcon", 21 },
-    { u"navigationContentDescription", 21 },
-    { u"fragmentExitTransition", 21 },
-    { u"fragmentEnterTransition", 21 },
-    { u"fragmentSharedElementEnterTransition", 21 },
-    { u"fragmentReturnTransition", 21 },
-    { u"fragmentSharedElementReturnTransition", 21 },
-    { u"fragmentReenterTransition", 21 },
-    { u"fragmentAllowEnterTransitionOverlap", 21 },
-    { u"fragmentAllowReturnTransitionOverlap", 21 },
-    { u"patternPathData", 21 },
-    { u"strokeAlpha", 21 },
-    { u"fillAlpha", 21 },
-    { u"windowActivityTransitions", 21 },
-    { u"colorEdgeEffect", 21 }
+static const std::unordered_map<std::string, size_t> sAttrMap = {
+    { "marqueeRepeatLimit", 2 },
+    { "windowNoDisplay", 3 },
+    { "backgroundDimEnabled", 3 },
+    { "inputType", 3 },
+    { "isDefault", 3 },
+    { "windowDisablePreview", 3 },
+    { "privateImeOptions", 3 },
+    { "editorExtras", 3 },
+    { "settingsActivity", 3 },
+    { "fastScrollEnabled", 3 },
+    { "reqTouchScreen", 3 },
+    { "reqKeyboardType", 3 },
+    { "reqHardKeyboard", 3 },
+    { "reqNavigation", 3 },
+    { "windowSoftInputMode", 3 },
+    { "imeFullscreenBackground", 3 },
+    { "noHistory", 3 },
+    { "headerDividersEnabled", 3 },
+    { "footerDividersEnabled", 3 },
+    { "candidatesTextStyleSpans", 3 },
+    { "smoothScrollbar", 3 },
+    { "reqFiveWayNav", 3 },
+    { "keyBackground", 3 },
+    { "keyTextSize", 3 },
+    { "labelTextSize", 3 },
+    { "keyTextColor", 3 },
+    { "keyPreviewLayout", 3 },
+    { "keyPreviewOffset", 3 },
+    { "keyPreviewHeight", 3 },
+    { "verticalCorrection", 3 },
+    { "popupLayout", 3 },
+    { "state_long_pressable", 3 },
+    { "keyWidth", 3 },
+    { "keyHeight", 3 },
+    { "horizontalGap", 3 },
+    { "verticalGap", 3 },
+    { "rowEdgeFlags", 3 },
+    { "codes", 3 },
+    { "popupKeyboard", 3 },
+    { "popupCharacters", 3 },
+    { "keyEdgeFlags", 3 },
+    { "isModifier", 3 },
+    { "isSticky", 3 },
+    { "isRepeatable", 3 },
+    { "iconPreview", 3 },
+    { "keyOutputText", 3 },
+    { "keyLabel", 3 },
+    { "keyIcon", 3 },
+    { "keyboardMode", 3 },
+    { "isScrollContainer", 3 },
+    { "fillEnabled", 3 },
+    { "updatePeriodMillis", 3 },
+    { "initialLayout", 3 },
+    { "voiceSearchMode", 3 },
+    { "voiceLanguageModel", 3 },
+    { "voicePromptText", 3 },
+    { "voiceLanguage", 3 },
+    { "voiceMaxResults", 3 },
+    { "bottomOffset", 3 },
+    { "topOffset", 3 },
+    { "allowSingleTap", 3 },
+    { "handle", 3 },
+    { "content", 3 },
+    { "animateOnClick", 3 },
+    { "configure", 3 },
+    { "hapticFeedbackEnabled", 3 },
+    { "innerRadius", 3 },
+    { "thickness", 3 },
+    { "sharedUserLabel", 3 },
+    { "dropDownWidth", 3 },
+    { "dropDownAnchor", 3 },
+    { "imeOptions", 3 },
+    { "imeActionLabel", 3 },
+    { "imeActionId", 3 },
+    { "imeExtractEnterAnimation", 3 },
+    { "imeExtractExitAnimation", 3 },
+    { "tension", 4 },
+    { "extraTension", 4 },
+    { "anyDensity", 4 },
+    { "searchSuggestThreshold", 4 },
+    { "includeInGlobalSearch", 4 },
+    { "onClick", 4 },
+    { "targetSdkVersion", 4 },
+    { "maxSdkVersion", 4 },
+    { "testOnly", 4 },
+    { "contentDescription", 4 },
+    { "gestureStrokeWidth", 4 },
+    { "gestureColor", 4 },
+    { "uncertainGestureColor", 4 },
+    { "fadeOffset", 4 },
+    { "fadeDuration", 4 },
+    { "gestureStrokeType", 4 },
+    { "gestureStrokeLengthThreshold", 4 },
+    { "gestureStrokeSquarenessThreshold", 4 },
+    { "gestureStrokeAngleThreshold", 4 },
+    { "eventsInterceptionEnabled", 4 },
+    { "fadeEnabled", 4 },
+    { "backupAgent", 4 },
+    { "allowBackup", 4 },
+    { "glEsVersion", 4 },
+    { "queryAfterZeroResults", 4 },
+    { "dropDownHeight", 4 },
+    { "smallScreens", 4 },
+    { "normalScreens", 4 },
+    { "largeScreens", 4 },
+    { "progressBarStyleInverse", 4 },
+    { "progressBarStyleSmallInverse", 4 },
+    { "progressBarStyleLargeInverse", 4 },
+    { "searchSettingsDescription", 4 },
+    { "textColorPrimaryInverseDisableOnly", 4 },
+    { "autoUrlDetect", 4 },
+    { "resizeable", 4 },
+    { "required", 5 },
+    { "accountType", 5 },
+    { "contentAuthority", 5 },
+    { "userVisible", 5 },
+    { "windowShowWallpaper", 5 },
+    { "wallpaperOpenEnterAnimation", 5 },
+    { "wallpaperOpenExitAnimation", 5 },
+    { "wallpaperCloseEnterAnimation", 5 },
+    { "wallpaperCloseExitAnimation", 5 },
+    { "wallpaperIntraOpenEnterAnimation", 5 },
+    { "wallpaperIntraOpenExitAnimation", 5 },
+    { "wallpaperIntraCloseEnterAnimation", 5 },
+    { "wallpaperIntraCloseExitAnimation", 5 },
+    { "supportsUploading", 5 },
+    { "killAfterRestore", 5 },
+    { "restoreNeedsApplication", 5 },
+    { "smallIcon", 5 },
+    { "accountPreferences", 5 },
+    { "textAppearanceSearchResultSubtitle", 5 },
+    { "textAppearanceSearchResultTitle", 5 },
+    { "summaryColumn", 5 },
+    { "detailColumn", 5 },
+    { "detailSocialSummary", 5 },
+    { "thumbnail", 5 },
+    { "detachWallpaper", 5 },
+    { "finishOnCloseSystemDialogs", 5 },
+    { "scrollbarFadeDuration", 5 },
+    { "scrollbarDefaultDelayBeforeFade", 5 },
+    { "fadeScrollbars", 5 },
+    { "colorBackgroundCacheHint", 5 },
+    { "dropDownHorizontalOffset", 5 },
+    { "dropDownVerticalOffset", 5 },
+    { "quickContactBadgeStyleWindowSmall", 6 },
+    { "quickContactBadgeStyleWindowMedium", 6 },
+    { "quickContactBadgeStyleWindowLarge", 6 },
+    { "quickContactBadgeStyleSmallWindowSmall", 6 },
+    { "quickContactBadgeStyleSmallWindowMedium", 6 },
+    { "quickContactBadgeStyleSmallWindowLarge", 6 },
+    { "author", 7 },
+    { "autoStart", 7 },
+    { "expandableListViewWhiteStyle", 8 },
+    { "installLocation", 8 },
+    { "vmSafeMode", 8 },
+    { "webTextViewStyle", 8 },
+    { "restoreAnyVersion", 8 },
+    { "tabStripLeft", 8 },
+    { "tabStripRight", 8 },
+    { "tabStripEnabled", 8 },
+    { "logo", 9 },
+    { "xlargeScreens", 9 },
+    { "immersive", 9 },
+    { "overScrollMode", 9 },
+    { "overScrollHeader", 9 },
+    { "overScrollFooter", 9 },
+    { "filterTouchesWhenObscured", 9 },
+    { "textSelectHandleLeft", 9 },
+    { "textSelectHandleRight", 9 },
+    { "textSelectHandle", 9 },
+    { "textSelectHandleWindowStyle", 9 },
+    { "popupAnimationStyle", 9 },
+    { "screenSize", 9 },
+    { "screenDensity", 9 },
+    { "allContactsName", 11 },
+    { "windowActionBar", 11 },
+    { "actionBarStyle", 11 },
+    { "navigationMode", 11 },
+    { "displayOptions", 11 },
+    { "subtitle", 11 },
+    { "customNavigationLayout", 11 },
+    { "hardwareAccelerated", 11 },
+    { "measureWithLargestChild", 11 },
+    { "animateFirstView", 11 },
+    { "dropDownSpinnerStyle", 11 },
+    { "actionDropDownStyle", 11 },
+    { "actionButtonStyle", 11 },
+    { "showAsAction", 11 },
+    { "previewImage", 11 },
+    { "actionModeBackground", 11 },
+    { "actionModeCloseDrawable", 11 },
+    { "windowActionModeOverlay", 11 },
+    { "valueFrom", 11 },
+    { "valueTo", 11 },
+    { "valueType", 11 },
+    { "propertyName", 11 },
+    { "ordering", 11 },
+    { "fragment", 11 },
+    { "windowActionBarOverlay", 11 },
+    { "fragmentOpenEnterAnimation", 11 },
+    { "fragmentOpenExitAnimation", 11 },
+    { "fragmentCloseEnterAnimation", 11 },
+    { "fragmentCloseExitAnimation", 11 },
+    { "fragmentFadeEnterAnimation", 11 },
+    { "fragmentFadeExitAnimation", 11 },
+    { "actionBarSize", 11 },
+    { "imeSubtypeLocale", 11 },
+    { "imeSubtypeMode", 11 },
+    { "imeSubtypeExtraValue", 11 },
+    { "splitMotionEvents", 11 },
+    { "listChoiceBackgroundIndicator", 11 },
+    { "spinnerMode", 11 },
+    { "animateLayoutChanges", 11 },
+    { "actionBarTabStyle", 11 },
+    { "actionBarTabBarStyle", 11 },
+    { "actionBarTabTextStyle", 11 },
+    { "actionOverflowButtonStyle", 11 },
+    { "actionModeCloseButtonStyle", 11 },
+    { "titleTextStyle", 11 },
+    { "subtitleTextStyle", 11 },
+    { "iconifiedByDefault", 11 },
+    { "actionLayout", 11 },
+    { "actionViewClass", 11 },
+    { "activatedBackgroundIndicator", 11 },
+    { "state_activated", 11 },
+    { "listPopupWindowStyle", 11 },
+    { "popupMenuStyle", 11 },
+    { "textAppearanceLargePopupMen", 11 },
+    { "textAppearanceSmallPopupMen", 11 },
+    { "breadCrumbTitle", 11 },
+    { "breadCrumbShortTitle", 11 },
+    { "listDividerAlertDialog", 11 },
+    { "textColorAlertDialogListItem", 11 },
+    { "loopViews", 11 },
+    { "dialogTheme", 11 },
+    { "alertDialogTheme", 11 },
+    { "dividerVertical", 11 },
+    { "homeAsUpIndicator", 11 },
+    { "enterFadeDuration", 11 },
+    { "exitFadeDuration", 11 },
+    { "selectableItemBackground", 11 },
+    { "autoAdvanceViewId", 11 },
+    { "useIntrinsicSizeAsMinimum", 11 },
+    { "actionModeCutDrawable", 11 },
+    { "actionModeCopyDrawable", 11 },
+    { "actionModePasteDrawable", 11 },
+    { "textEditPasteWindowLayout", 11 },
+    { "textEditNoPasteWindowLayout", 11 },
+    { "textIsSelectable", 11 },
+    { "windowEnableSplitTouch", 11 },
+    { "indeterminateProgressStyle", 11 },
+    { "progressBarPadding", 11 },
+    { "animationResolution", 11 },
+    { "state_accelerated", 11 },
+    { "baseline", 11 },
+    { "homeLayout", 11 },
+    { "opacity", 11 },
+    { "alpha", 11 },
+    { "transformPivotX", 11 },
+    { "transformPivotY", 11 },
+    { "translationX", 11 },
+    { "translationY", 11 },
+    { "scaleX", 11 },
+    { "scaleY", 11 },
+    { "rotation", 11 },
+    { "rotationX", 11 },
+    { "rotationY", 11 },
+    { "showDividers", 11 },
+    { "dividerPadding", 11 },
+    { "borderlessButtonStyle", 11 },
+    { "dividerHorizontal", 11 },
+    { "itemPadding", 11 },
+    { "buttonBarStyle", 11 },
+    { "buttonBarButtonStyle", 11 },
+    { "segmentedButtonStyle", 11 },
+    { "staticWallpaperPreview", 11 },
+    { "allowParallelSyncs", 11 },
+    { "isAlwaysSyncable", 11 },
+    { "verticalScrollbarPosition", 11 },
+    { "fastScrollAlwaysVisible", 11 },
+    { "fastScrollThumbDrawable", 11 },
+    { "fastScrollPreviewBackgroundLeft", 11 },
+    { "fastScrollPreviewBackgroundRight", 11 },
+    { "fastScrollTrackDrawable", 11 },
+    { "fastScrollOverlayPosition", 11 },
+    { "customTokens", 11 },
+    { "nextFocusForward", 11 },
+    { "firstDayOfWeek", 11 },
+    { "showWeekNumber", 11 },
+    { "minDate", 11 },
+    { "maxDate", 11 },
+    { "shownWeekCount", 11 },
+    { "selectedWeekBackgroundColor", 11 },
+    { "focusedMonthDateColor", 11 },
+    { "unfocusedMonthDateColor", 11 },
+    { "weekNumberColor", 11 },
+    { "weekSeparatorLineColor", 11 },
+    { "selectedDateVerticalBar", 11 },
+    { "weekDayTextAppearance", 11 },
+    { "dateTextAppearance", 11 },
+    { "solidColor", 11 },
+    { "spinnersShown", 11 },
+    { "calendarViewShown", 11 },
+    { "state_multiline", 11 },
+    { "detailsElementBackground", 11 },
+    { "textColorHighlightInverse", 11 },
+    { "textColorLinkInverse", 11 },
+    { "editTextColor", 11 },
+    { "editTextBackground", 11 },
+    { "horizontalScrollViewStyle", 11 },
+    { "layerType", 11 },
+    { "alertDialogIcon", 11 },
+    { "windowMinWidthMajor", 11 },
+    { "windowMinWidthMinor", 11 },
+    { "queryHint", 11 },
+    { "fastScrollTextColor", 11 },
+    { "largeHeap", 11 },
+    { "windowCloseOnTouchOutside", 11 },
+    { "datePickerStyle", 11 },
+    { "calendarViewStyle", 11 },
+    { "textEditSidePasteWindowLayout", 11 },
+    { "textEditSideNoPasteWindowLayout", 11 },
+    { "actionMenuTextAppearance", 11 },
+    { "actionMenuTextColor", 11 },
+    { "textCursorDrawable", 12 },
+    { "resizeMode", 12 },
+    { "requiresSmallestWidthDp", 12 },
+    { "compatibleWidthLimitDp", 12 },
+    { "largestWidthLimitDp", 12 },
+    { "state_hovered", 13 },
+    { "state_drag_can_accept", 13 },
+    { "state_drag_hovered", 13 },
+    { "stopWithTask", 13 },
+    { "switchTextOn", 13 },
+    { "switchTextOff", 13 },
+    { "switchPreferenceStyle", 13 },
+    { "switchTextAppearance", 13 },
+    { "track", 13 },
+    { "switchMinWidth", 13 },
+    { "switchPadding", 13 },
+    { "thumbTextPadding", 13 },
+    { "textSuggestionsWindowStyle", 13 },
+    { "textEditSuggestionItemLayout", 13 },
+    { "rowCount", 13 },
+    { "rowOrderPreserved", 13 },
+    { "columnCount", 13 },
+    { "columnOrderPreserved", 13 },
+    { "useDefaultMargins", 13 },
+    { "alignmentMode", 13 },
+    { "layout_row", 13 },
+    { "layout_rowSpan", 13 },
+    { "layout_columnSpan", 13 },
+    { "actionModeSelectAllDrawable", 13 },
+    { "isAuxiliary", 13 },
+    { "accessibilityEventTypes", 13 },
+    { "packageNames", 13 },
+    { "accessibilityFeedbackType", 13 },
+    { "notificationTimeout", 13 },
+    { "accessibilityFlags", 13 },
+    { "canRetrieveWindowContent", 13 },
+    { "listPreferredItemHeightLarge", 13 },
+    { "listPreferredItemHeightSmall", 13 },
+    { "actionBarSplitStyle", 13 },
+    { "actionProviderClass", 13 },
+    { "backgroundStacked", 13 },
+    { "backgroundSplit", 13 },
+    { "textAllCaps", 13 },
+    { "colorPressedHighlight", 13 },
+    { "colorLongPressedHighlight", 13 },
+    { "colorFocusedHighlight", 13 },
+    { "colorActivatedHighlight", 13 },
+    { "colorMultiSelectHighlight", 13 },
+    { "drawableStart", 13 },
+    { "drawableEnd", 13 },
+    { "actionModeStyle", 13 },
+    { "minResizeWidth", 13 },
+    { "minResizeHeight", 13 },
+    { "actionBarWidgetTheme", 13 },
+    { "uiOptions", 13 },
+    { "subtypeLocale", 13 },
+    { "subtypeExtraValue", 13 },
+    { "actionBarDivider", 13 },
+    { "actionBarItemBackground", 13 },
+    { "actionModeSplitBackground", 13 },
+    { "textAppearanceListItem", 13 },
+    { "textAppearanceListItemSmall", 13 },
+    { "targetDescriptions", 13 },
+    { "directionDescriptions", 13 },
+    { "overridesImplicitlyEnabledSubtype", 13 },
+    { "listPreferredItemPaddingLeft", 13 },
+    { "listPreferredItemPaddingRight", 13 },
+    { "requiresFadingEdge", 13 },
+    { "publicKey", 13 },
+    { "parentActivityName", 16 },
+    { "isolatedProcess", 16 },
+    { "importantForAccessibility", 16 },
+    { "keyboardLayout", 16 },
+    { "fontFamily", 16 },
+    { "mediaRouteButtonStyle", 16 },
+    { "mediaRouteTypes", 16 },
+    { "supportsRtl", 17 },
+    { "textDirection", 17 },
+    { "textAlignment", 17 },
+    { "layoutDirection", 17 },
+    { "paddingStart", 17 },
+    { "paddingEnd", 17 },
+    { "layout_marginStart", 17 },
+    { "layout_marginEnd", 17 },
+    { "layout_toStartOf", 17 },
+    { "layout_toEndOf", 17 },
+    { "layout_alignStart", 17 },
+    { "layout_alignEnd", 17 },
+    { "layout_alignParentStart", 17 },
+    { "layout_alignParentEnd", 17 },
+    { "listPreferredItemPaddingStart", 17 },
+    { "listPreferredItemPaddingEnd", 17 },
+    { "singleUser", 17 },
+    { "presentationTheme", 17 },
+    { "subtypeId", 17 },
+    { "initialKeyguardLayout", 17 },
+    { "widgetCategory", 17 },
+    { "permissionGroupFlags", 17 },
+    { "labelFor", 17 },
+    { "permissionFlags", 17 },
+    { "checkedTextViewStyle", 17 },
+    { "showOnLockScreen", 17 },
+    { "format12Hour", 17 },
+    { "format24Hour", 17 },
+    { "timeZone", 17 },
+    { "mipMap", 18 },
+    { "mirrorForRtl", 18 },
+    { "windowOverscan", 18 },
+    { "requiredForAllUsers", 18 },
+    { "indicatorStart", 18 },
+    { "indicatorEnd", 18 },
+    { "childIndicatorStart", 18 },
+    { "childIndicatorEnd", 18 },
+    { "restrictedAccountType", 18 },
+    { "requiredAccountType", 18 },
+    { "canRequestTouchExplorationMode", 18 },
+    { "canRequestEnhancedWebAccessibility", 18 },
+    { "canRequestFilterKeyEvents", 18 },
+    { "layoutMode", 18 },
+    { "keySet", 19 },
+    { "targetId", 19 },
+    { "fromScene", 19 },
+    { "toScene", 19 },
+    { "transition", 19 },
+    { "transitionOrdering", 19 },
+    { "fadingMode", 19 },
+    { "startDelay", 19 },
+    { "ssp", 19 },
+    { "sspPrefix", 19 },
+    { "sspPattern", 19 },
+    { "addPrintersActivity", 19 },
+    { "vendor", 19 },
+    { "category", 19 },
+    { "isAsciiCapable", 19 },
+    { "autoMirrored", 19 },
+    { "supportsSwitchingToNextInputMethod", 19 },
+    { "requireDeviceUnlock", 19 },
+    { "apduServiceBanner", 19 },
+    { "accessibilityLiveRegion", 19 },
+    { "windowTranslucentStatus", 19 },
+    { "windowTranslucentNavigation", 19 },
+    { "advancedPrintOptionsActivity", 19 },
+    { "banner", 20 },
+    { "windowSwipeToDismiss", 20 },
+    { "isGame", 20 },
+    { "allowEmbedded", 20 },
+    { "setupActivity", 20 },
+    { "fastScrollStyle", 21 },
+    { "windowContentTransitions", 21 },
+    { "windowContentTransitionManager", 21 },
+    { "translationZ", 21 },
+    { "tintMode", 21 },
+    { "controlX1", 21 },
+    { "controlY1", 21 },
+    { "controlX2", 21 },
+    { "controlY2", 21 },
+    { "transitionName", 21 },
+    { "transitionGroup", 21 },
+    { "viewportWidth", 21 },
+    { "viewportHeight", 21 },
+    { "fillColor", 21 },
+    { "pathData", 21 },
+    { "strokeColor", 21 },
+    { "strokeWidth", 21 },
+    { "trimPathStart", 21 },
+    { "trimPathEnd", 21 },
+    { "trimPathOffset", 21 },
+    { "strokeLineCap", 21 },
+    { "strokeLineJoin", 21 },
+    { "strokeMiterLimit", 21 },
+    { "colorControlNormal", 21 },
+    { "colorControlActivated", 21 },
+    { "colorButtonNormal", 21 },
+    { "colorControlHighlight", 21 },
+    { "persistableMode", 21 },
+    { "titleTextAppearance", 21 },
+    { "subtitleTextAppearance", 21 },
+    { "slideEdge", 21 },
+    { "actionBarTheme", 21 },
+    { "textAppearanceListItemSecondary", 21 },
+    { "colorPrimary", 21 },
+    { "colorPrimaryDark", 21 },
+    { "colorAccent", 21 },
+    { "nestedScrollingEnabled", 21 },
+    { "windowEnterTransition", 21 },
+    { "windowExitTransition", 21 },
+    { "windowSharedElementEnterTransition", 21 },
+    { "windowSharedElementExitTransition", 21 },
+    { "windowAllowReturnTransitionOverlap", 21 },
+    { "windowAllowEnterTransitionOverlap", 21 },
+    { "sessionService", 21 },
+    { "stackViewStyle", 21 },
+    { "switchStyle", 21 },
+    { "elevation", 21 },
+    { "excludeId", 21 },
+    { "excludeClass", 21 },
+    { "hideOnContentScroll", 21 },
+    { "actionOverflowMenuStyle", 21 },
+    { "documentLaunchMode", 21 },
+    { "maxRecents", 21 },
+    { "autoRemoveFromRecents", 21 },
+    { "stateListAnimator", 21 },
+    { "toId", 21 },
+    { "fromId", 21 },
+    { "reversible", 21 },
+    { "splitTrack", 21 },
+    { "targetName", 21 },
+    { "excludeName", 21 },
+    { "matchOrder", 21 },
+    { "windowDrawsSystemBarBackgrounds", 21 },
+    { "statusBarColor", 21 },
+    { "navigationBarColor", 21 },
+    { "contentInsetStart", 21 },
+    { "contentInsetEnd", 21 },
+    { "contentInsetLeft", 21 },
+    { "contentInsetRight", 21 },
+    { "paddingMode", 21 },
+    { "layout_rowWeight", 21 },
+    { "layout_columnWeight", 21 },
+    { "translateX", 21 },
+    { "translateY", 21 },
+    { "selectableItemBackgroundBorderless", 21 },
+    { "elegantTextHeight", 21 },
+    { "searchKeyphraseId", 21 },
+    { "searchKeyphrase", 21 },
+    { "searchKeyphraseSupportedLocales", 21 },
+    { "windowTransitionBackgroundFadeDuration", 21 },
+    { "overlapAnchor", 21 },
+    { "progressTint", 21 },
+    { "progressTintMode", 21 },
+    { "progressBackgroundTint", 21 },
+    { "progressBackgroundTintMode", 21 },
+    { "secondaryProgressTint", 21 },
+    { "secondaryProgressTintMode", 21 },
+    { "indeterminateTint", 21 },
+    { "indeterminateTintMode", 21 },
+    { "backgroundTint", 21 },
+    { "backgroundTintMode", 21 },
+    { "foregroundTint", 21 },
+    { "foregroundTintMode", 21 },
+    { "buttonTint", 21 },
+    { "buttonTintMode", 21 },
+    { "thumbTint", 21 },
+    { "thumbTintMode", 21 },
+    { "fullBackupOnly", 21 },
+    { "propertyXName", 21 },
+    { "propertyYName", 21 },
+    { "relinquishTaskIdentity", 21 },
+    { "tileModeX", 21 },
+    { "tileModeY", 21 },
+    { "actionModeShareDrawable", 21 },
+    { "actionModeFindDrawable", 21 },
+    { "actionModeWebSearchDrawable", 21 },
+    { "transitionVisibilityMode", 21 },
+    { "minimumHorizontalAngle", 21 },
+    { "minimumVerticalAngle", 21 },
+    { "maximumAngle", 21 },
+    { "searchViewStyle", 21 },
+    { "closeIcon", 21 },
+    { "goIcon", 21 },
+    { "searchIcon", 21 },
+    { "voiceIcon", 21 },
+    { "commitIcon", 21 },
+    { "suggestionRowLayout", 21 },
+    { "queryBackground", 21 },
+    { "submitBackground", 21 },
+    { "buttonBarPositiveButtonStyle", 21 },
+    { "buttonBarNeutralButtonStyle", 21 },
+    { "buttonBarNegativeButtonStyle", 21 },
+    { "popupElevation", 21 },
+    { "actionBarPopupTheme", 21 },
+    { "multiArch", 21 },
+    { "touchscreenBlocksFocus", 21 },
+    { "windowElevation", 21 },
+    { "launchTaskBehindTargetAnimation", 21 },
+    { "launchTaskBehindSourceAnimation", 21 },
+    { "restrictionType", 21 },
+    { "dayOfWeekBackground", 21 },
+    { "dayOfWeekTextAppearance", 21 },
+    { "headerMonthTextAppearance", 21 },
+    { "headerDayOfMonthTextAppearance", 21 },
+    { "headerYearTextAppearance", 21 },
+    { "yearListItemTextAppearance", 21 },
+    { "yearListSelectorColor", 21 },
+    { "calendarTextColor", 21 },
+    { "recognitionService", 21 },
+    { "timePickerStyle", 21 },
+    { "timePickerDialogTheme", 21 },
+    { "headerTimeTextAppearance", 21 },
+    { "headerAmPmTextAppearance", 21 },
+    { "numbersTextColor", 21 },
+    { "numbersBackgroundColor", 21 },
+    { "numbersSelectorColor", 21 },
+    { "amPmTextColor", 21 },
+    { "amPmBackgroundColor", 21 },
+    { "searchKeyphraseRecognitionFlags", 21 },
+    { "checkMarkTint", 21 },
+    { "checkMarkTintMode", 21 },
+    { "popupTheme", 21 },
+    { "toolbarStyle", 21 },
+    { "windowClipToOutline", 21 },
+    { "datePickerDialogTheme", 21 },
+    { "showText", 21 },
+    { "windowReturnTransition", 21 },
+    { "windowReenterTransition", 21 },
+    { "windowSharedElementReturnTransition", 21 },
+    { "windowSharedElementReenterTransition", 21 },
+    { "resumeWhilePausing", 21 },
+    { "datePickerMode", 21 },
+    { "timePickerMode", 21 },
+    { "inset", 21 },
+    { "letterSpacing", 21 },
+    { "fontFeatureSettings", 21 },
+    { "outlineProvider", 21 },
+    { "contentAgeHint", 21 },
+    { "country", 21 },
+    { "windowSharedElementsUseOverlay", 21 },
+    { "reparent", 21 },
+    { "reparentWithOverlay", 21 },
+    { "ambientShadowAlpha", 21 },
+    { "spotShadowAlpha", 21 },
+    { "navigationIcon", 21 },
+    { "navigationContentDescription", 21 },
+    { "fragmentExitTransition", 21 },
+    { "fragmentEnterTransition", 21 },
+    { "fragmentSharedElementEnterTransition", 21 },
+    { "fragmentReturnTransition", 21 },
+    { "fragmentSharedElementReturnTransition", 21 },
+    { "fragmentReenterTransition", 21 },
+    { "fragmentAllowEnterTransitionOverlap", 21 },
+    { "fragmentAllowReturnTransitionOverlap", 21 },
+    { "patternPathData", 21 },
+    { "strokeAlpha", 21 },
+    { "fillAlpha", 21 },
+    { "windowActivityTransitions", 21 },
+    { "colorEdgeEffect", 21 }
 };
 
 size_t findAttributeSdkLevel(const ResourceName& name) {
-    if (name.package != u"android" && name.type != ResourceType::kAttr) {
+    if (name.package != "android" && name.type != ResourceType::kAttr) {
         return 0;
     }
 
@@ -738,8 +738,8 @@
     return SDK_LOLLIPOP_MR1;
 }
 
-std::pair<StringPiece16, int> getDevelopmentSdkCodeNameAndVersion() {
-    return std::make_pair(StringPiece16(sDevelopmentSdkCodeName), sDevelopmentSdkLevel);
+std::pair<StringPiece, int> getDevelopmentSdkCodeNameAndVersion() {
+    return std::make_pair(StringPiece(sDevelopmentSdkCodeName), sDevelopmentSdkLevel);
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/SdkConstants.h b/tools/aapt2/SdkConstants.h
index a6dba8b..f28679f 100644
--- a/tools/aapt2/SdkConstants.h
+++ b/tools/aapt2/SdkConstants.h
@@ -49,7 +49,7 @@
 
 size_t findAttributeSdkLevel(ResourceId id);
 size_t findAttributeSdkLevel(const ResourceName& name);
-std::pair<StringPiece16, int> getDevelopmentSdkCodeNameAndVersion();
+std::pair<StringPiece, int> getDevelopmentSdkCodeNameAndVersion();
 
 } // namespace aapt
 
diff --git a/tools/aapt2/StringPool.cpp b/tools/aapt2/StringPool.cpp
index aadb00b..fe4b967 100644
--- a/tools/aapt2/StringPool.cpp
+++ b/tools/aapt2/StringPool.cpp
@@ -59,11 +59,11 @@
     return *this;
 }
 
-const std::u16string* StringPool::Ref::operator->() const {
+const std::string* StringPool::Ref::operator->() const {
     return &mEntry->value;
 }
 
-const std::u16string& StringPool::Ref::operator*() const {
+const std::string& StringPool::Ref::operator*() const {
     return mEntry->value;
 }
 
@@ -124,15 +124,15 @@
     return mEntry->str.getContext();
 }
 
-StringPool::Ref StringPool::makeRef(const StringPiece16& str) {
+StringPool::Ref StringPool::makeRef(const StringPiece& str) {
     return makeRefImpl(str, Context{}, true);
 }
 
-StringPool::Ref StringPool::makeRef(const StringPiece16& str, const Context& context) {
+StringPool::Ref StringPool::makeRef(const StringPiece& str, const Context& context) {
     return makeRefImpl(str, context, true);
 }
 
-StringPool::Ref StringPool::makeRefImpl(const StringPiece16& str, const Context& context,
+StringPool::Ref StringPool::makeRefImpl(const StringPiece& str, const Context& context,
         bool unique) {
     if (unique) {
         auto iter = mIndexedStrings.find(str);
@@ -147,7 +147,7 @@
     entry->index = mStrings.size();
     entry->ref = 0;
     mStrings.emplace_back(entry);
-    mIndexedStrings.insert(std::make_pair(StringPiece16(entry->value), entry));
+    mIndexedStrings.insert(std::make_pair(StringPiece(entry->value), entry));
     return Ref(entry);
 }
 
@@ -162,13 +162,12 @@
     entry->index = mStrings.size();
     entry->ref = 0;
     mStrings.emplace_back(entry);
-    mIndexedStrings.insert(std::make_pair(StringPiece16(entry->value), entry));
+    mIndexedStrings.insert(std::make_pair(StringPiece(entry->value), entry));
 
     StyleEntry* styleEntry = new StyleEntry();
     styleEntry->str = Ref(entry);
     for (const aapt::Span& span : str.spans) {
-        styleEntry->spans.emplace_back(Span{makeRef(span.name),
-                span.firstChar, span.lastChar});
+        styleEntry->spans.emplace_back(Span{ makeRef(span.name), span.firstChar, span.lastChar });
     }
     styleEntry->ref = 0;
     mStyles.emplace_back(styleEntry);
@@ -182,7 +181,7 @@
     entry->index = mStrings.size();
     entry->ref = 0;
     mStrings.emplace_back(entry);
-    mIndexedStrings.insert(std::make_pair(StringPiece16(entry->value), entry));
+    mIndexedStrings.insert(std::make_pair(StringPiece(entry->value), entry));
 
     StyleEntry* styleEntry = new StyleEntry();
     styleEntry->str = Ref(entry);
@@ -320,33 +319,40 @@
         indices++;
 
         if (utf8) {
-            std::string encoded = util::utf16ToUtf8(entry->value);
+            const std::string& encoded = entry->value;
+            const ssize_t utf16Length = utf8_to_utf16_length(
+                    reinterpret_cast<const uint8_t*>(entry->value.data()), entry->value.size());
+            assert(utf16Length >= 0);
 
-            const size_t totalSize = encodedLengthUnits<char>(entry->value.size())
+            const size_t totalSize = encodedLengthUnits<char>(utf16Length)
                     + encodedLengthUnits<char>(encoded.length())
                     + encoded.size() + 1;
 
             char* data = out->nextBlock<char>(totalSize);
 
-            // First encode the actual UTF16 string length.
-            data = encodeLength(data, entry->value.size());
+            // First encode the UTF16 string length.
+            data = encodeLength(data, utf16Length);
 
-            // Now encode the size of the converted UTF8 string.
+            // Now encode the size of the real UTF8 string.
             data = encodeLength(data, encoded.length());
             strncpy(data, encoded.data(), encoded.size());
+
         } else {
-            const size_t totalSize = encodedLengthUnits<char16_t>(entry->value.size())
-                    + entry->value.size() + 1;
+            const std::u16string encoded = util::utf8ToUtf16(entry->value);
+            const ssize_t utf16Length = encoded.size();
+
+            // Total number of 16-bit words to write.
+            const size_t totalSize = encodedLengthUnits<char16_t>(utf16Length) + encoded.size() + 1;
 
             char16_t* data = out->nextBlock<char16_t>(totalSize);
 
             // Encode the actual UTF16 string length.
-            data = encodeLength(data, entry->value.size());
-            const size_t byteLength = entry->value.size() * sizeof(char16_t);
+            data = encodeLength(data, utf16Length);
+            const size_t byteLength = encoded.size() * sizeof(char16_t);
 
             // NOTE: For some reason, strncpy16(data, entry->value.data(), entry->value.size())
             // truncates the string.
-            memcpy(data, entry->value.data(), byteLength);
+            memcpy(data, encoded.data(), byteLength);
 
             // The null-terminating character is already here due to the block of data being set
             // to 0s on allocation.
diff --git a/tools/aapt2/StringPool.h b/tools/aapt2/StringPool.h
index 5f88543..72ae9d1 100644
--- a/tools/aapt2/StringPool.h
+++ b/tools/aapt2/StringPool.h
@@ -30,13 +30,13 @@
 namespace aapt {
 
 struct Span {
-    std::u16string name;
+    std::string name;
     uint32_t firstChar;
     uint32_t lastChar;
 };
 
 struct StyleString {
-    std::u16string str;
+    std::string str;
     std::vector<Span> spans;
 };
 
@@ -56,8 +56,8 @@
         ~Ref();
 
         Ref& operator=(const Ref& rhs);
-        const std::u16string* operator->() const;
-        const std::u16string& operator*() const;
+        const std::string* operator->() const;
+        const std::string& operator*() const;
 
         size_t getIndex() const;
         const Context& getContext() const;
@@ -95,7 +95,7 @@
 
     class Entry {
     public:
-        std::u16string value;
+        std::string value;
         Context context;
         size_t index;
 
@@ -136,14 +136,14 @@
      * Adds a string to the pool, unless it already exists. Returns
      * a reference to the string in the pool.
      */
-    Ref makeRef(const StringPiece16& str);
+    Ref makeRef(const StringPiece& str);
 
     /**
      * Adds a string to the pool, unless it already exists, with a context
      * object that can be used when sorting the string pool. Returns
      * a reference to the string in the pool.
      */
-    Ref makeRef(const StringPiece16& str, const Context& context);
+    Ref makeRef(const StringPiece& str, const Context& context);
 
     /**
      * Adds a style to the string pool and returns a reference to it.
@@ -195,11 +195,11 @@
 
     static bool flatten(BigBuffer* out, const StringPool& pool, bool utf8);
 
-    Ref makeRefImpl(const StringPiece16& str, const Context& context, bool unique);
+    Ref makeRefImpl(const StringPiece& str, const Context& context, bool unique);
 
     std::vector<std::unique_ptr<Entry>> mStrings;
     std::vector<std::unique_ptr<StyleEntry>> mStyles;
-    std::unordered_multimap<StringPiece16, Entry*> mIndexedStrings;
+    std::unordered_multimap<StringPiece, Entry*> mIndexedStrings;
 };
 
 //
diff --git a/tools/aapt2/StringPool_test.cpp b/tools/aapt2/StringPool_test.cpp
index 562d80e..1367af7 100644
--- a/tools/aapt2/StringPool_test.cpp
+++ b/tools/aapt2/StringPool_test.cpp
@@ -15,9 +15,9 @@
  */
 
 #include "StringPool.h"
+#include "test/Test.h"
 #include "util/Util.h"
 
-#include <gtest/gtest.h>
 #include <string>
 
 namespace aapt {
@@ -25,37 +25,37 @@
 TEST(StringPoolTest, InsertOneString) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"wut");
-    EXPECT_EQ(*ref, u"wut");
+    StringPool::Ref ref = pool.makeRef("wut");
+    EXPECT_EQ(*ref, "wut");
 }
 
 TEST(StringPoolTest, InsertTwoUniqueStrings) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"wut");
-    StringPool::Ref ref2 = pool.makeRef(u"hey");
+    StringPool::Ref ref = pool.makeRef("wut");
+    StringPool::Ref ref2 = pool.makeRef("hey");
 
-    EXPECT_EQ(*ref, u"wut");
-    EXPECT_EQ(*ref2, u"hey");
+    EXPECT_EQ(*ref, "wut");
+    EXPECT_EQ(*ref2, "hey");
 }
 
 TEST(StringPoolTest, DoNotInsertNewDuplicateString) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"wut");
-    StringPool::Ref ref2 = pool.makeRef(u"wut");
+    StringPool::Ref ref = pool.makeRef("wut");
+    StringPool::Ref ref2 = pool.makeRef("wut");
 
-    EXPECT_EQ(*ref, u"wut");
-    EXPECT_EQ(*ref2, u"wut");
+    EXPECT_EQ(*ref, "wut");
+    EXPECT_EQ(*ref2, "wut");
     EXPECT_EQ(1u, pool.size());
 }
 
 TEST(StringPoolTest, MaintainInsertionOrderIndex) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"z");
-    StringPool::Ref ref2 = pool.makeRef(u"a");
-    StringPool::Ref ref3 = pool.makeRef(u"m");
+    StringPool::Ref ref = pool.makeRef("z");
+    StringPool::Ref ref2 = pool.makeRef("a");
+    StringPool::Ref ref3 = pool.makeRef("m");
 
     EXPECT_EQ(0u, ref.getIndex());
     EXPECT_EQ(1u, ref2.getIndex());
@@ -65,39 +65,39 @@
 TEST(StringPoolTest, PruneStringsWithNoReferences) {
     StringPool pool;
 
-    StringPool::Ref refA = pool.makeRef(u"foo");
+    StringPool::Ref refA = pool.makeRef("foo");
     {
-        StringPool::Ref ref = pool.makeRef(u"wut");
-        EXPECT_EQ(*ref, u"wut");
+        StringPool::Ref ref = pool.makeRef("wut");
+        EXPECT_EQ(*ref, "wut");
         EXPECT_EQ(2u, pool.size());
     }
-    StringPool::Ref refB = pool.makeRef(u"bar");
+    StringPool::Ref refB = pool.makeRef("bar");
 
     EXPECT_EQ(3u, pool.size());
     pool.prune();
     EXPECT_EQ(2u, pool.size());
     StringPool::const_iterator iter = begin(pool);
-    EXPECT_EQ((*iter)->value, u"foo");
+    EXPECT_EQ((*iter)->value, "foo");
     EXPECT_LT((*iter)->index, 2u);
     ++iter;
-    EXPECT_EQ((*iter)->value, u"bar");
+    EXPECT_EQ((*iter)->value, "bar");
     EXPECT_LT((*iter)->index, 2u);
 }
 
 TEST(StringPoolTest, SortAndMaintainIndexesInReferences) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"z");
-    StringPool::StyleRef ref2 = pool.makeRef(StyleString{ {u"a"} });
-    StringPool::Ref ref3 = pool.makeRef(u"m");
+    StringPool::Ref ref = pool.makeRef("z");
+    StringPool::StyleRef ref2 = pool.makeRef(StyleString{ {"a"} });
+    StringPool::Ref ref3 = pool.makeRef("m");
 
-    EXPECT_EQ(*ref, u"z");
+    EXPECT_EQ(*ref, "z");
     EXPECT_EQ(0u, ref.getIndex());
 
-    EXPECT_EQ(*(ref2->str), u"a");
+    EXPECT_EQ(*(ref2->str), "a");
     EXPECT_EQ(1u, ref2.getIndex());
 
-    EXPECT_EQ(*ref3, u"m");
+    EXPECT_EQ(*ref3, "m");
     EXPECT_EQ(2u, ref3.getIndex());
 
     pool.sort([](const StringPool::Entry& a, const StringPool::Entry& b) -> bool {
@@ -105,30 +105,30 @@
     });
 
 
-    EXPECT_EQ(*ref, u"z");
+    EXPECT_EQ(*ref, "z");
     EXPECT_EQ(2u, ref.getIndex());
 
-    EXPECT_EQ(*(ref2->str), u"a");
+    EXPECT_EQ(*(ref2->str), "a");
     EXPECT_EQ(0u, ref2.getIndex());
 
-    EXPECT_EQ(*ref3, u"m");
+    EXPECT_EQ(*ref3, "m");
     EXPECT_EQ(1u, ref3.getIndex());
 }
 
 TEST(StringPoolTest, SortAndStillDedupe) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"z");
-    StringPool::Ref ref2 = pool.makeRef(u"a");
-    StringPool::Ref ref3 = pool.makeRef(u"m");
+    StringPool::Ref ref = pool.makeRef("z");
+    StringPool::Ref ref2 = pool.makeRef("a");
+    StringPool::Ref ref3 = pool.makeRef("m");
 
     pool.sort([](const StringPool::Entry& a, const StringPool::Entry& b) -> bool {
         return a.value < b.value;
     });
 
-    StringPool::Ref ref4 = pool.makeRef(u"z");
-    StringPool::Ref ref5 = pool.makeRef(u"a");
-    StringPool::Ref ref6 = pool.makeRef(u"m");
+    StringPool::Ref ref4 = pool.makeRef("z");
+    StringPool::Ref ref5 = pool.makeRef("a");
+    StringPool::Ref ref6 = pool.makeRef("m");
 
     EXPECT_EQ(ref4.getIndex(), ref.getIndex());
     EXPECT_EQ(ref5.getIndex(), ref2.getIndex());
@@ -139,20 +139,20 @@
     StringPool pool;
 
     StyleString str {
-        { u"android" },
+        { "android" },
         {
-            Span{ { u"b" }, 2, 6 }
+            Span{ { "b" }, 2, 6 }
         }
     };
 
     StringPool::StyleRef ref = pool.makeRef(str);
 
     EXPECT_EQ(0u, ref.getIndex());
-    EXPECT_EQ(std::u16string(u"android"), *(ref->str));
+    EXPECT_EQ(std::string("android"), *(ref->str));
     ASSERT_EQ(1u, ref->spans.size());
 
     const StringPool::Span& span = ref->spans.front();
-    EXPECT_EQ(*(span.name), u"b");
+    EXPECT_EQ(*(span.name), "b");
     EXPECT_EQ(2u, span.firstChar);
     EXPECT_EQ(6u, span.lastChar);
 }
@@ -160,9 +160,9 @@
 TEST(StringPoolTest, DoNotDedupeStyleWithSameStringAsNonStyle) {
     StringPool pool;
 
-    StringPool::Ref ref = pool.makeRef(u"android");
+    StringPool::Ref ref = pool.makeRef("android");
 
-    StyleString str { { u"android" } };
+    StyleString str { { "android" } };
     StringPool::StyleRef styleRef = pool.makeRef(str);
 
     EXPECT_NE(ref.getIndex(), styleRef.getIndex());
@@ -184,7 +184,7 @@
     using namespace android; // For NO_ERROR on Windows.
 
     StringPool pool;
-    pool.makeRef(u"\u093f");
+    pool.makeRef("\u093f");
     BigBuffer buffer(1024);
     StringPool::flattenUtf16(&buffer, pool);
 
@@ -198,20 +198,20 @@
     EXPECT_EQ(0u, str[1]);
 }
 
-constexpr const char16_t* sLongString = u"バッテリーを長持ちさせるため、バッテリーセーバーは端末のパフォーマンスを抑え、バイブレーション、位置情報サービス、大半のバックグラウンドデータを制限します。メール、SMSや、同期を使 用するその他のアプリは、起動しても更新されないことがあります。バッテリーセーバーは端末の充電中は自動的にOFFになります。";
+constexpr const char* sLongString = "バッテリーを長持ちさせるため、バッテリーセーバーは端末のパフォーマンスを抑え、バイブレーション、位置情報サービス、大半のバックグラウンドデータを制限します。メール、SMSや、同期を使 用するその他のアプリは、起動しても更新されないことがあります。バッテリーセーバーは端末の充電中は自動的にOFFになります。";
 
-TEST(StringPoolTest, FlattenUtf8) {
+TEST(StringPoolTest, Flatten) {
     using namespace android; // For NO_ERROR on Windows.
 
     StringPool pool;
 
-    StringPool::Ref ref1 = pool.makeRef(u"hello");
-    StringPool::Ref ref2 = pool.makeRef(u"goodbye");
+    StringPool::Ref ref1 = pool.makeRef("hello");
+    StringPool::Ref ref2 = pool.makeRef("goodbye");
     StringPool::Ref ref3 = pool.makeRef(sLongString);
-    StringPool::Ref ref4 = pool.makeRef(u"");
+    StringPool::Ref ref4 = pool.makeRef("");
     StringPool::StyleRef ref5 = pool.makeRef(StyleString{
-            { u"style" },
-            { Span{ { u"b" }, 0, 1 }, Span{ { u"i" }, 2, 3 } }
+            { "style" },
+            { Span{ { "b" }, 0, 1 }, Span{ { "i" }, 2, 3 } }
     });
 
     EXPECT_EQ(0u, ref1.getIndex());
@@ -220,30 +220,43 @@
     EXPECT_EQ(3u, ref4.getIndex());
     EXPECT_EQ(4u, ref5.getIndex());
 
-    BigBuffer buffer(1024);
-    StringPool::flattenUtf8(&buffer, pool);
+    BigBuffer buffers[2] = { BigBuffer(1024), BigBuffer(1024) };
+    StringPool::flattenUtf8(&buffers[0], pool);
+    StringPool::flattenUtf16(&buffers[1], pool);
 
-    std::unique_ptr<uint8_t[]> data = util::copy(buffer);
-    {
+    // Test both UTF-8 and UTF-16 buffers.
+    for (const BigBuffer& buffer : buffers) {
+        std::unique_ptr<uint8_t[]> data = util::copy(buffer);
+
         ResStringPool test;
         ASSERT_EQ(test.setTo(data.get(), buffer.size()), NO_ERROR);
 
-        EXPECT_EQ(util::getString(test, 0), u"hello");
-        EXPECT_EQ(util::getString(test, 1), u"goodbye");
-        EXPECT_EQ(util::getString(test, 2), sLongString);
+        EXPECT_EQ(std::string("hello"), util::getString(test, 0));
+        EXPECT_EQ(StringPiece16(u"hello"), util::getString16(test, 0));
+
+        EXPECT_EQ(std::string("goodbye"), util::getString(test, 1));
+        EXPECT_EQ(StringPiece16(u"goodbye"), util::getString16(test, 1));
+
+        EXPECT_EQ(StringPiece(sLongString), util::getString(test, 2));
+        EXPECT_EQ(util::utf8ToUtf16(sLongString), util::getString16(test, 2).toString());
+
         size_t len;
-        EXPECT_NE(nullptr, test.stringAt(3, &len));
-        EXPECT_EQ(util::getString(test, 4), u"style");
+        EXPECT_TRUE(test.stringAt(3, &len) != nullptr || test.string8At(3, &len) != nullptr);
+
+        EXPECT_EQ(std::string("style"), util::getString(test, 4));
+        EXPECT_EQ(StringPiece16(u"style"), util::getString16(test, 4));
 
         const ResStringPool_span* span = test.styleAt(4);
         ASSERT_NE(nullptr, span);
-        EXPECT_EQ(util::getString(test, span->name.index), u"b");
+        EXPECT_EQ(std::string("b"), util::getString(test, span->name.index));
+        EXPECT_EQ(StringPiece16(u"b"), util::getString16(test, span->name.index));
         EXPECT_EQ(0u, span->firstChar);
         EXPECT_EQ(1u, span->lastChar);
         span++;
 
         ASSERT_NE(ResStringPool_span::END, span->name.index);
-        EXPECT_EQ(util::getString(test, span->name.index), u"i");
+        EXPECT_EQ(std::string("i"), util::getString(test, span->name.index));
+        EXPECT_EQ(StringPiece16(u"i"), util::getString16(test, span->name.index));
         EXPECT_EQ(2u, span->firstChar);
         EXPECT_EQ(3u, span->lastChar);
         span++;
diff --git a/tools/aapt2/ValueVisitor_test.cpp b/tools/aapt2/ValueVisitor_test.cpp
index 1624079..11eab33 100644
--- a/tools/aapt2/ValueVisitor_test.cpp
+++ b/tools/aapt2/ValueVisitor_test.cpp
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
-#include <string>
-
 #include "ResourceValues.h"
-#include "util/Util.h"
 #include "ValueVisitor.h"
-#include "test/Builders.h"
+#include "test/Test.h"
+#include "util/Util.h"
+
+#include <string>
 
 namespace aapt {
 
@@ -51,7 +50,7 @@
 };
 
 TEST(ValueVisitorTest, VisitsReference) {
-    Reference ref(ResourceName{u"android", ResourceType::kAttr, u"foo"});
+    Reference ref(ResourceName{"android", ResourceType::kAttr, "foo"});
     SingleReferenceVisitor visitor;
     ref.accept(&visitor);
 
@@ -60,8 +59,8 @@
 
 TEST(ValueVisitorTest, VisitsReferencesInStyle) {
     std::unique_ptr<Style> style = test::StyleBuilder()
-            .setParent(u"@android:style/foo")
-            .addItem(u"@android:attr/one", test::buildReference(u"@android:id/foo"))
+            .setParent("@android:style/foo")
+            .addItem("@android:attr/one", test::buildReference("@android:id/foo"))
             .build();
 
     StyleVisitor visitor;
@@ -74,11 +73,11 @@
 }
 
 TEST(ValueVisitorTest, ValueCast) {
-    std::unique_ptr<Reference> ref = test::buildReference(u"@android:color/white");
+    std::unique_ptr<Reference> ref = test::buildReference("@android:color/white");
     EXPECT_NE(valueCast<Reference>(ref.get()), nullptr);
 
     std::unique_ptr<Style> style = test::StyleBuilder()
-            .addItem(u"@android:attr/foo", test::buildReference(u"@android:color/black"))
+            .addItem("@android:attr/foo", test::buildReference("@android:color/black"))
             .build();
     EXPECT_NE(valueCast<Style>(style.get()), nullptr);
     EXPECT_EQ(valueCast<Reference>(style.get()), nullptr);
diff --git a/tools/aapt2/compile/Compile.cpp b/tools/aapt2/compile/Compile.cpp
index 5d11c40..39e4489 100644
--- a/tools/aapt2/compile/Compile.cpp
+++ b/tools/aapt2/compile/Compile.cpp
@@ -43,8 +43,8 @@
 
 struct ResourcePathData {
     Source source;
-    std::u16string resourceDir;
-    std::u16string name;
+    std::string resourceDir;
+    std::string name;
     std::string extension;
 
     // Original config str. We keep this because when we parse the config, we may add on
@@ -96,8 +96,8 @@
 
     return ResourcePathData{
             Source(path),
-            util::utf8ToUtf16(dirStr),
-            util::utf8ToUtf16(name),
+            dirStr.toString(),
+            name.toString(),
             extension.toString(),
             configStr.toString(),
             config
@@ -127,7 +127,7 @@
 }
 
 static bool isHidden(const StringPiece& filename) {
-    return util::stringStartsWith<char>(filename, ".");
+    return util::stringStartsWith(filename, ".");
 }
 
 /**
@@ -200,7 +200,7 @@
         parserOptions.errorOnPositionalArguments = !options.legacyMode;
 
         // If the filename includes donottranslate, then the default translatable is false.
-        parserOptions.translatable = pathData.name.find(u"donottranslate") == std::string::npos;
+        parserOptions.translatable = pathData.name.find("donottranslate") == std::string::npos;
 
         ResourceParser resParser(context->getDiagnostics(), &table, pathData.source,
                                  pathData.config, parserOptions);
@@ -440,8 +440,8 @@
        return nullptr;
     }
 
-    const std::u16string& getCompilationPackage() override {
-        static std::u16string empty;
+    const std::string& getCompilationPackage() override {
+        static std::string empty;
         return empty;
     }
 
@@ -530,7 +530,7 @@
             context.getDiagnostics()->note(DiagMessage(pathData.source) << "processing");
         }
 
-        if (pathData.resourceDir == u"values") {
+        if (pathData.resourceDir == "values") {
             // Overwrite the extension.
             pathData.extension = "arsc";
 
diff --git a/tools/aapt2/compile/IdAssigner.cpp b/tools/aapt2/compile/IdAssigner.cpp
index aa4a580..341c9b3 100644
--- a/tools/aapt2/compile/IdAssigner.cpp
+++ b/tools/aapt2/compile/IdAssigner.cpp
@@ -15,7 +15,6 @@
  */
 
 #include "ResourceTable.h"
-
 #include "compile/IdAssigner.h"
 #include "process/IResourceTableConsumer.h"
 #include "util/Util.h"
diff --git a/tools/aapt2/compile/IdAssigner_test.cpp b/tools/aapt2/compile/IdAssigner_test.cpp
index e25a17a..802e99a 100644
--- a/tools/aapt2/compile/IdAssigner_test.cpp
+++ b/tools/aapt2/compile/IdAssigner_test.cpp
@@ -27,10 +27,10 @@
 
 TEST(IdAssignerTest, AssignIds) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addSimple(u"@android:attr/foo")
-            .addSimple(u"@android:attr/bar")
-            .addSimple(u"@android:id/foo")
-            .setPackageId(u"android", 0x01)
+            .addSimple("@android:attr/foo")
+            .addSimple("@android:attr/bar")
+            .addSimple("@android:id/foo")
+            .setPackageId("android", 0x01)
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
@@ -42,12 +42,12 @@
 
 TEST(IdAssignerTest, AssignIdsWithReservedIds) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addSimple(u"@android:attr/foo", ResourceId(0x01040006))
-            .addSimple(u"@android:attr/bar")
-            .addSimple(u"@android:id/foo")
-            .addSimple(u"@app:id/biz")
-            .setPackageId(u"android", 0x01)
-            .setPackageId(u"app", 0x7f)
+            .addSimple("@android:attr/foo", ResourceId(0x01040006))
+            .addSimple("@android:attr/bar")
+            .addSimple("@android:id/foo")
+            .addSimple("@app:id/biz")
+            .setPackageId("android", 0x01)
+            .setPackageId("app", 0x7f)
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
@@ -59,10 +59,10 @@
 
 TEST(IdAssignerTest, FailWhenNonUniqueIdsAssigned) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addSimple(u"@android:attr/foo", ResourceId(0x01040006))
-            .addSimple(u"@android:attr/bar", ResourceId(0x01040006))
-            .setPackageId(u"android", 0x01)
-            .setPackageId(u"app", 0x7f)
+            .addSimple("@android:attr/foo", ResourceId(0x01040006))
+            .addSimple("@android:attr/bar", ResourceId(0x01040006))
+            .setPackageId("android", 0x01)
+            .setPackageId("app", 0x7f)
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
diff --git a/tools/aapt2/compile/Png.cpp b/tools/aapt2/compile/Png.cpp
index bbf7f41..055d8b5 100644
--- a/tools/aapt2/compile/Png.cpp
+++ b/tools/aapt2/compile/Png.cpp
@@ -1234,7 +1234,7 @@
         goto bail;
     }
 
-    if (util::stringEndsWith<char>(source.path, ".9.png")) {
+    if (util::stringEndsWith(source.path, ".9.png")) {
         std::string errorMsg;
         if (!do9Patch(&pngInfo, &errorMsg)) {
             mDiag->error(DiagMessage() << errorMsg);
diff --git a/tools/aapt2/compile/PseudolocaleGenerator.cpp b/tools/aapt2/compile/PseudolocaleGenerator.cpp
index d080e16..732101f 100644
--- a/tools/aapt2/compile/PseudolocaleGenerator.cpp
+++ b/tools/aapt2/compile/PseudolocaleGenerator.cpp
@@ -29,7 +29,7 @@
                                                          StringPool* pool) {
     Pseudolocalizer localizer(method);
 
-    const StringPiece16 originalText = *string->value->str;
+    const StringPiece originalText = *string->value->str;
 
     StyleString localized;
 
@@ -147,7 +147,7 @@
     }
 
     void visit(String* string) override {
-        std::u16string result = mLocalizer.start() + mLocalizer.text(*string->value) +
+        std::string result = mLocalizer.start() + mLocalizer.text(*string->value) +
                 mLocalizer.end();
         std::unique_ptr<String> localized = util::make_unique<String>(mPool->makeRef(result));
         localized->setSource(string->getSource());
diff --git a/tools/aapt2/compile/PseudolocaleGenerator_test.cpp b/tools/aapt2/compile/PseudolocaleGenerator_test.cpp
index 4cb6ea2..1816abc 100644
--- a/tools/aapt2/compile/PseudolocaleGenerator_test.cpp
+++ b/tools/aapt2/compile/PseudolocaleGenerator_test.cpp
@@ -15,21 +15,18 @@
  */
 
 #include "compile/PseudolocaleGenerator.h"
-#include "test/Builders.h"
-#include "test/Common.h"
-#include "test/Context.h"
+#include "test/Test.h"
 #include "util/Util.h"
 
 #include <androidfw/ResourceTypes.h>
-#include <gtest/gtest.h>
 
 namespace aapt {
 
 TEST(PseudolocaleGeneratorTest, PseudolocalizeStyledString) {
     StringPool pool;
     StyleString originalStyle;
-    originalStyle.str = u"Hello world!";
-    originalStyle.spans = { Span{ u"b", 2, 3 }, Span{ u"b", 6, 7 }, Span{ u"i", 1, 10 } };
+    originalStyle.str = "Hello world!";
+    originalStyle.spans = { Span{ "b", 2, 3 }, Span{ "b", 6, 7 }, Span{ "i", 1, 10 } };
 
     std::unique_ptr<StyledString> newString = pseudolocalizeStyledString(
             util::make_unique<StyledString>(pool.makeRef(originalStyle)).get(),
@@ -38,51 +35,51 @@
     EXPECT_EQ(originalStyle.str, *newString->value->str);
     ASSERT_EQ(originalStyle.spans.size(), newString->value->spans.size());
 
-    EXPECT_EQ(2u, newString->value->spans[0].firstChar);
-    EXPECT_EQ(3u, newString->value->spans[0].lastChar);
-    EXPECT_EQ(std::u16string(u"b"), *newString->value->spans[0].name);
+    EXPECT_EQ(std::string("He").size(), newString->value->spans[0].firstChar);
+    EXPECT_EQ(std::string("Hel").size(), newString->value->spans[0].lastChar);
+    EXPECT_EQ(std::string("b"), *newString->value->spans[0].name);
 
-    EXPECT_EQ(6u, newString->value->spans[1].firstChar);
-    EXPECT_EQ(7u, newString->value->spans[1].lastChar);
-    EXPECT_EQ(std::u16string(u"b"), *newString->value->spans[1].name);
+    EXPECT_EQ(std::string("Hello ").size(), newString->value->spans[1].firstChar);
+    EXPECT_EQ(std::string("Hello w").size(), newString->value->spans[1].lastChar);
+    EXPECT_EQ(std::string("b"), *newString->value->spans[1].name);
 
-    EXPECT_EQ(1u, newString->value->spans[2].firstChar);
-    EXPECT_EQ(10u, newString->value->spans[2].lastChar);
-    EXPECT_EQ(std::u16string(u"i"), *newString->value->spans[2].name);
+    EXPECT_EQ(std::string("H").size(), newString->value->spans[2].firstChar);
+    EXPECT_EQ(std::string("Hello worl").size(), newString->value->spans[2].lastChar);
+    EXPECT_EQ(std::string("i"), *newString->value->spans[2].name);
 
-    originalStyle.spans.push_back(Span{ u"em", 0, 11u });
+    originalStyle.spans.push_back(Span{ "em", 0, 11u });
 
     newString = pseudolocalizeStyledString(
             util::make_unique<StyledString>(pool.makeRef(originalStyle)).get(),
             Pseudolocalizer::Method::kAccent, &pool);
 
-    EXPECT_EQ(std::u16string(u"[Ĥéļļö ŵöŕļð¡ one two]"), *newString->value->str);
+    EXPECT_EQ(std::string("[Ĥéļļö ŵöŕļð¡ one two]"), *newString->value->str);
     ASSERT_EQ(originalStyle.spans.size(), newString->value->spans.size());
 
-    EXPECT_EQ(3u, newString->value->spans[0].firstChar);
-    EXPECT_EQ(4u, newString->value->spans[0].lastChar);
+    EXPECT_EQ(std::string("[Ĥé").size(), newString->value->spans[0].firstChar);
+    EXPECT_EQ(std::string("[Ĥéļ").size(), newString->value->spans[0].lastChar);
 
-    EXPECT_EQ(7u, newString->value->spans[1].firstChar);
-    EXPECT_EQ(8u, newString->value->spans[1].lastChar);
+    EXPECT_EQ(std::string("[Ĥéļļö ").size(), newString->value->spans[1].firstChar);
+    EXPECT_EQ(std::string("[Ĥéļļö ŵ").size(), newString->value->spans[1].lastChar);
 
-    EXPECT_EQ(2u, newString->value->spans[2].firstChar);
-    EXPECT_EQ(11u, newString->value->spans[2].lastChar);
+    EXPECT_EQ(std::string("[Ĥ").size(), newString->value->spans[2].firstChar);
+    EXPECT_EQ(std::string("[Ĥéļļö ŵöŕļ").size(), newString->value->spans[2].lastChar);
 
-    EXPECT_EQ(1u, newString->value->spans[3].firstChar);
-    EXPECT_EQ(12u, newString->value->spans[3].lastChar);
+    EXPECT_EQ(std::string("[").size(), newString->value->spans[3].firstChar);
+    EXPECT_EQ(std::string("[Ĥéļļö ŵöŕļð").size(), newString->value->spans[3].lastChar);
 }
 
 TEST(PseudolocaleGeneratorTest, PseudolocalizeOnlyDefaultConfigs) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addString(u"@android:string/one", u"one")
-            .addString(u"@android:string/two", ResourceId{}, test::parseConfigOrDie("en"), u"two")
-            .addString(u"@android:string/three", u"three")
-            .addString(u"@android:string/three", ResourceId{}, test::parseConfigOrDie("en-rXA"),
-                       u"three")
-            .addString(u"@android:string/four", u"four")
+            .addString("@android:string/one", "one")
+            .addString("@android:string/two", ResourceId{}, test::parseConfigOrDie("en"), "two")
+            .addString("@android:string/three", "three")
+            .addString("@android:string/three", ResourceId{}, test::parseConfigOrDie("en-rXA"),
+                       "three")
+            .addString("@android:string/four", "four")
             .build();
 
-    String* val = test::getValue<String>(table.get(), u"@android:string/four");
+    String* val = test::getValue<String>(table.get(), "@android:string/four");
     val->setTranslateable(false);
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
@@ -90,31 +87,31 @@
     ASSERT_TRUE(generator.consume(context.get(), table.get()));
 
     // Normal pseudolocalization should take place.
-    ASSERT_NE(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/one",
+    ASSERT_NE(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/one",
                                                        test::parseConfigOrDie("en-rXA")));
-    ASSERT_NE(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/one",
+    ASSERT_NE(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/one",
                                                        test::parseConfigOrDie("ar-rXB")));
 
     // No default config for android:string/two, so no pseudlocales should exist.
-    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/two",
+    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/two",
                                                        test::parseConfigOrDie("en-rXA")));
-    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/two",
+    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/two",
                                                        test::parseConfigOrDie("ar-rXB")));
 
 
     // Check that we didn't override manual pseudolocalization.
-    val = test::getValueForConfig<String>(table.get(), u"@android:string/three",
+    val = test::getValueForConfig<String>(table.get(), "@android:string/three",
                                           test::parseConfigOrDie("en-rXA"));
     ASSERT_NE(nullptr, val);
-    EXPECT_EQ(std::u16string(u"three"), *val->value);
+    EXPECT_EQ(std::string("three"), *val->value);
 
-    ASSERT_NE(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/three",
+    ASSERT_NE(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/three",
                                                        test::parseConfigOrDie("ar-rXB")));
 
     // Check that four's translateable marker was honored.
-    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/four",
+    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/four",
                                                        test::parseConfigOrDie("en-rXA")));
-    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), u"@android:string/four",
+    ASSERT_EQ(nullptr, test::getValueForConfig<String>(table.get(), "@android:string/four",
                                                        test::parseConfigOrDie("ar-rXB")));
 
 }
diff --git a/tools/aapt2/compile/Pseudolocalizer.cpp b/tools/aapt2/compile/Pseudolocalizer.cpp
index 767d746..90d0d85 100644
--- a/tools/aapt2/compile/Pseudolocalizer.cpp
+++ b/tools/aapt2/compile/Pseudolocalizer.cpp
@@ -20,41 +20,41 @@
 namespace aapt {
 
 // String basis to generate expansion
-static const std::u16string k_expansion_string = u"one two three "
+static const std::string k_expansion_string = "one two three "
         "four five six seven eight nine ten eleven twelve thirteen "
         "fourteen fiveteen sixteen seventeen nineteen twenty";
 
 // Special unicode characters to override directionality of the words
-static const std::u16string k_rlm = u"\u200f";
-static const std::u16string k_rlo = u"\u202e";
-static const std::u16string k_pdf = u"\u202c";
+static const std::string k_rlm = "\u200f";
+static const std::string k_rlo = "\u202e";
+static const std::string k_pdf = "\u202c";
 
 // Placeholder marks
-static const std::u16string k_placeholder_open = u"\u00bb";
-static const std::u16string k_placeholder_close = u"\u00ab";
+static const std::string k_placeholder_open = "\u00bb";
+static const std::string k_placeholder_close = "\u00ab";
 
-static const char16_t k_arg_start = u'{';
-static const char16_t k_arg_end = u'}';
+static const char k_arg_start = '{';
+static const char k_arg_end = '}';
 
 class PseudoMethodNone : public PseudoMethodImpl {
 public:
-    std::u16string text(const StringPiece16& text) override { return text.toString(); }
-    std::u16string placeholder(const StringPiece16& text) override { return text.toString(); }
+    std::string text(const StringPiece& text) override { return text.toString(); }
+    std::string placeholder(const StringPiece& text) override { return text.toString(); }
 };
 
 class PseudoMethodBidi : public PseudoMethodImpl {
 public:
-    std::u16string text(const StringPiece16& text) override;
-    std::u16string placeholder(const StringPiece16& text) override;
+    std::string text(const StringPiece& text) override;
+    std::string placeholder(const StringPiece& text) override;
 };
 
 class PseudoMethodAccent : public PseudoMethodImpl {
 public:
     PseudoMethodAccent() : mDepth(0), mWordCount(0), mLength(0) {}
-    std::u16string start() override;
-    std::u16string end() override;
-    std::u16string text(const StringPiece16& text) override;
-    std::u16string placeholder(const StringPiece16& text) override;
+    std::string start() override;
+    std::string end() override;
+    std::string text(const StringPiece& text) override;
+    std::string placeholder(const StringPiece& text) override;
 private:
     size_t mDepth;
     size_t mWordCount;
@@ -79,12 +79,12 @@
     }
 }
 
-std::u16string Pseudolocalizer::text(const StringPiece16& text) {
-    std::u16string out;
+std::string Pseudolocalizer::text(const StringPiece& text) {
+    std::string out;
     size_t depth = mLastDepth;
     size_t lastpos, pos;
     const size_t length = text.size();
-    const char16_t* str = text.data();
+    const char* str = text.data();
     bool escaped = false;
     for (lastpos = pos = 0; pos < length; pos++) {
         char16_t c = str[pos];
@@ -111,7 +111,7 @@
             }
             size_t size = nextpos - lastpos;
             if (size) {
-                std::u16string chunk = text.substr(lastpos, size).toString();
+                std::string chunk = text.substr(lastpos, size).toString();
                 if (pseudo) {
                     chunk = mImpl->text(chunk);
                 } else if (str[lastpos] == k_arg_start && str[nextpos - 1] == k_arg_end) {
@@ -131,67 +131,67 @@
     return out;
 }
 
-static const char16_t* pseudolocalizeChar(const char16_t c) {
+static const char* pseudolocalizeChar(const char c) {
     switch (c) {
-        case 'a':   return u"\u00e5";
-        case 'b':   return u"\u0253";
-        case 'c':   return u"\u00e7";
-        case 'd':   return u"\u00f0";
-        case 'e':   return u"\u00e9";
-        case 'f':   return u"\u0192";
-        case 'g':   return u"\u011d";
-        case 'h':   return u"\u0125";
-        case 'i':   return u"\u00ee";
-        case 'j':   return u"\u0135";
-        case 'k':   return u"\u0137";
-        case 'l':   return u"\u013c";
-        case 'm':   return u"\u1e3f";
-        case 'n':   return u"\u00f1";
-        case 'o':   return u"\u00f6";
-        case 'p':   return u"\u00fe";
-        case 'q':   return u"\u0051";
-        case 'r':   return u"\u0155";
-        case 's':   return u"\u0161";
-        case 't':   return u"\u0163";
-        case 'u':   return u"\u00fb";
-        case 'v':   return u"\u0056";
-        case 'w':   return u"\u0175";
-        case 'x':   return u"\u0445";
-        case 'y':   return u"\u00fd";
-        case 'z':   return u"\u017e";
-        case 'A':   return u"\u00c5";
-        case 'B':   return u"\u03b2";
-        case 'C':   return u"\u00c7";
-        case 'D':   return u"\u00d0";
-        case 'E':   return u"\u00c9";
-        case 'G':   return u"\u011c";
-        case 'H':   return u"\u0124";
-        case 'I':   return u"\u00ce";
-        case 'J':   return u"\u0134";
-        case 'K':   return u"\u0136";
-        case 'L':   return u"\u013b";
-        case 'M':   return u"\u1e3e";
-        case 'N':   return u"\u00d1";
-        case 'O':   return u"\u00d6";
-        case 'P':   return u"\u00de";
-        case 'Q':   return u"\u0071";
-        case 'R':   return u"\u0154";
-        case 'S':   return u"\u0160";
-        case 'T':   return u"\u0162";
-        case 'U':   return u"\u00db";
-        case 'V':   return u"\u03bd";
-        case 'W':   return u"\u0174";
-        case 'X':   return u"\u00d7";
-        case 'Y':   return u"\u00dd";
-        case 'Z':   return u"\u017d";
-        case '!':   return u"\u00a1";
-        case '?':   return u"\u00bf";
-        case '$':   return u"\u20ac";
-        default:    return NULL;
+        case 'a':   return "\u00e5";
+        case 'b':   return "\u0253";
+        case 'c':   return "\u00e7";
+        case 'd':   return "\u00f0";
+        case 'e':   return "\u00e9";
+        case 'f':   return "\u0192";
+        case 'g':   return "\u011d";
+        case 'h':   return "\u0125";
+        case 'i':   return "\u00ee";
+        case 'j':   return "\u0135";
+        case 'k':   return "\u0137";
+        case 'l':   return "\u013c";
+        case 'm':   return "\u1e3f";
+        case 'n':   return "\u00f1";
+        case 'o':   return "\u00f6";
+        case 'p':   return "\u00fe";
+        case 'q':   return "\u0051";
+        case 'r':   return "\u0155";
+        case 's':   return "\u0161";
+        case 't':   return "\u0163";
+        case 'u':   return "\u00fb";
+        case 'v':   return "\u0056";
+        case 'w':   return "\u0175";
+        case 'x':   return "\u0445";
+        case 'y':   return "\u00fd";
+        case 'z':   return "\u017e";
+        case 'A':   return "\u00c5";
+        case 'B':   return "\u03b2";
+        case 'C':   return "\u00c7";
+        case 'D':   return "\u00d0";
+        case 'E':   return "\u00c9";
+        case 'G':   return "\u011c";
+        case 'H':   return "\u0124";
+        case 'I':   return "\u00ce";
+        case 'J':   return "\u0134";
+        case 'K':   return "\u0136";
+        case 'L':   return "\u013b";
+        case 'M':   return "\u1e3e";
+        case 'N':   return "\u00d1";
+        case 'O':   return "\u00d6";
+        case 'P':   return "\u00de";
+        case 'Q':   return "\u0071";
+        case 'R':   return "\u0154";
+        case 'S':   return "\u0160";
+        case 'T':   return "\u0162";
+        case 'U':   return "\u00db";
+        case 'V':   return "\u03bd";
+        case 'W':   return "\u0174";
+        case 'X':   return "\u00d7";
+        case 'Y':   return "\u00dd";
+        case 'Z':   return "\u017d";
+        case '!':   return "\u00a1";
+        case '?':   return "\u00bf";
+        case '$':   return "\u20ac";
+        default:    return nullptr;
     }
 }
 
-static bool isPossibleNormalPlaceholderEnd(const char16_t c) {
+static bool isPossibleNormalPlaceholderEnd(const char c) {
     switch (c) {
         case 's': return true;
         case 'S': return true;
@@ -218,11 +218,11 @@
     }
 }
 
-static std::u16string pseudoGenerateExpansion(const unsigned int length) {
-    std::u16string result = k_expansion_string;
-    const char16_t* s = result.data();
+static std::string pseudoGenerateExpansion(const unsigned int length) {
+    std::string result = k_expansion_string;
+    const char* s = result.data();
     if (result.size() < length) {
-        result += u" ";
+        result += " ";
         result += pseudoGenerateExpansion(length - result.size());
     } else {
         int ext = 0;
@@ -238,26 +238,26 @@
     return result;
 }
 
-std::u16string PseudoMethodAccent::start() {
-    std::u16string result;
+std::string PseudoMethodAccent::start() {
+    std::string result;
     if (mDepth == 0) {
-        result = u"[";
+        result = "[";
     }
     mWordCount = mLength = 0;
     mDepth++;
     return result;
 }
 
-std::u16string PseudoMethodAccent::end() {
-    std::u16string result;
+std::string PseudoMethodAccent::end() {
+    std::string result;
     if (mLength) {
-        result += u" ";
+        result += " ";
         result += pseudoGenerateExpansion(mWordCount > 3 ? mLength : mLength / 2);
     }
     mWordCount = mLength = 0;
     mDepth--;
     if (mDepth == 0) {
-        result += u"]";
+        result += "]";
     }
     return result;
 }
@@ -267,17 +267,17 @@
  *
  * Note: This leaves placeholder syntax untouched.
  */
-std::u16string PseudoMethodAccent::text(const StringPiece16& source)
+std::string PseudoMethodAccent::text(const StringPiece& source)
 {
-    const char16_t* s = source.data();
-    std::u16string result;
+    const char* s = source.data();
+    std::string result;
     const size_t I = source.size();
     bool lastspace = true;
     for (size_t i = 0; i < I; i++) {
-        char16_t c = s[i];
+        char c = s[i];
         if (c == '%') {
             // Placeholder syntax, no need to pseudolocalize
-            std::u16string chunk;
+            std::string chunk;
             bool end = false;
             chunk.append(&c, 1);
             while (!end && i + 1 < I) {
@@ -300,7 +300,7 @@
             bool tag_closed = false;
             while (!tag_closed && i < I) {
                 if (c == '&') {
-                    std::u16string escapeText;
+                    std::string escapeText;
                     escapeText.append(&c, 1);
                     bool end = false;
                     size_t htmlCodePos = i;
@@ -322,7 +322,7 @@
                         }
                     }
                     result += escapeText;
-                    if (escapeText != u"&lt;") {
+                    if (escapeText != "&lt;") {
                         tag_closed = true;
                     }
                     continue;
@@ -338,11 +338,11 @@
             }
         } else {
             // This is a pure text that should be pseudolocalized
-            const char16_t* p = pseudolocalizeChar(c);
+            const char* p = pseudolocalizeChar(c);
             if (p != nullptr) {
                 result += p;
             } else {
-                bool space = util::isspace16(c);
+                bool space = isspace(c);
                 if (lastspace && !space) {
                     mWordCount++;
                 }
@@ -356,19 +356,19 @@
     return result;
 }
 
-std::u16string PseudoMethodAccent::placeholder(const StringPiece16& source) {
+std::string PseudoMethodAccent::placeholder(const StringPiece& source) {
     // Surround a placeholder with brackets
     return k_placeholder_open + source.toString() + k_placeholder_close;
 }
 
-std::u16string PseudoMethodBidi::text(const StringPiece16& source) {
-    const char16_t* s = source.data();
-    std::u16string result;
+std::string PseudoMethodBidi::text(const StringPiece& source) {
+    const char* s = source.data();
+    std::string result;
     bool lastspace = true;
     bool space = true;
     for (size_t i = 0; i < source.size(); i++) {
-        char16_t c = s[i];
-        space = util::isspace16(c);
+        char c = s[i];
+        space = isspace(c);
         if (lastspace && !space) {
             // Word start
             result += k_rlm + k_rlo;
@@ -386,7 +386,7 @@
     return result;
 }
 
-std::u16string PseudoMethodBidi::placeholder(const StringPiece16& source) {
+std::string PseudoMethodBidi::placeholder(const StringPiece& source) {
     // Surround a placeholder with directionality change sequence
     return k_rlm + k_rlo + source.toString() + k_pdf + k_rlm;
 }
diff --git a/tools/aapt2/compile/Pseudolocalizer.h b/tools/aapt2/compile/Pseudolocalizer.h
index 8818c17..7db88de 100644
--- a/tools/aapt2/compile/Pseudolocalizer.h
+++ b/tools/aapt2/compile/Pseudolocalizer.h
@@ -29,10 +29,10 @@
 class PseudoMethodImpl {
 public:
     virtual ~PseudoMethodImpl() {}
-    virtual std::u16string start() { return {}; }
-    virtual std::u16string end() { return {}; }
-    virtual std::u16string text(const StringPiece16& text) = 0;
-    virtual std::u16string placeholder(const StringPiece16& text) = 0;
+    virtual std::string start() { return {}; }
+    virtual std::string end() { return {}; }
+    virtual std::string text(const StringPiece& text) = 0;
+    virtual std::string placeholder(const StringPiece& text) = 0;
 };
 
 class Pseudolocalizer {
@@ -45,9 +45,9 @@
 
     Pseudolocalizer(Method method);
     void setMethod(Method method);
-    std::u16string start() { return mImpl->start(); }
-    std::u16string end() { return mImpl->end(); }
-    std::u16string text(const StringPiece16& text);
+    std::string start() { return mImpl->start(); }
+    std::string end() { return mImpl->end(); }
+    std::string text(const StringPiece& text);
 private:
     std::unique_ptr<PseudoMethodImpl> mImpl;
     size_t mLastDepth;
diff --git a/tools/aapt2/compile/Pseudolocalizer_test.cpp b/tools/aapt2/compile/Pseudolocalizer_test.cpp
index 36c8896..c33e152 100644
--- a/tools/aapt2/compile/Pseudolocalizer_test.cpp
+++ b/tools/aapt2/compile/Pseudolocalizer_test.cpp
@@ -28,9 +28,8 @@
 static ::testing::AssertionResult simpleHelper(const char* input, const char* expected,
                                                Pseudolocalizer::Method method) {
     Pseudolocalizer pseudo(method);
-    std::string result = util::utf16ToUtf8(
-            pseudo.start() + pseudo.text(util::utf8ToUtf16(input)) + pseudo.end());
-    if (StringPiece(expected) != result) {
+    std::string result = pseudo.start() + pseudo.text(input) + pseudo.end();
+    if (result != expected) {
         return ::testing::AssertionFailure() << expected << " != " << result;
     }
     return ::testing::AssertionSuccess();
@@ -40,12 +39,9 @@
                                                  const char* expected,
                                                  Pseudolocalizer::Method method) {
     Pseudolocalizer pseudo(method);
-    std::string result = util::utf16ToUtf8(pseudo.start() +
-                                           pseudo.text(util::utf8ToUtf16(in1)) +
-                                           pseudo.text(util::utf8ToUtf16(in2)) +
-                                           pseudo.text(util::utf8ToUtf16(in3)) +
-                                           pseudo.end());
-    if (StringPiece(expected) != result) {
+    std::string result = pseudo.start() + pseudo.text(in1) + pseudo.text(in2) + pseudo.text(in3) +
+            pseudo.end();
+    if (result != expected) {
         return ::testing::AssertionFailure() << expected << " != " << result;
     }
     return ::testing::AssertionSuccess();
@@ -218,10 +214,10 @@
 
 TEST(PseudolocalizerTest, RedefineMethod) {
     Pseudolocalizer pseudo(Pseudolocalizer::Method::kAccent);
-    std::u16string result = pseudo.text(u"Hello, ");
+    std::string result = pseudo.text("Hello, ");
     pseudo.setMethod(Pseudolocalizer::Method::kNone);
-    result += pseudo.text(u"world!");
-    ASSERT_EQ(StringPiece("Ĥéļļö, world!"), util::utf16ToUtf8(result));
+    result += pseudo.text("world!");
+    ASSERT_EQ(StringPiece("Ĥéļļö, world!"), result);
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/compile/XmlIdCollector_test.cpp b/tools/aapt2/compile/XmlIdCollector_test.cpp
index a37ea86..ea1ced3 100644
--- a/tools/aapt2/compile/XmlIdCollector_test.cpp
+++ b/tools/aapt2/compile/XmlIdCollector_test.cpp
@@ -38,13 +38,13 @@
     ASSERT_TRUE(collector.consume(context.get(), doc.get()));
 
     EXPECT_EQ(1, std::count(doc->file.exportedSymbols.begin(), doc->file.exportedSymbols.end(),
-                             SourcedResourceName{ test::parseNameOrDie(u"@id/foo"), 3u }));
+                             SourcedResourceName{ test::parseNameOrDie("@id/foo"), 3u }));
 
     EXPECT_EQ(1, std::count(doc->file.exportedSymbols.begin(), doc->file.exportedSymbols.end(),
-                             SourcedResourceName{ test::parseNameOrDie(u"@id/bar"), 3u }));
+                             SourcedResourceName{ test::parseNameOrDie("@id/bar"), 3u }));
 
     EXPECT_EQ(1, std::count(doc->file.exportedSymbols.begin(), doc->file.exportedSymbols.end(),
-                             SourcedResourceName{ test::parseNameOrDie(u"@id/car"), 6u }));
+                             SourcedResourceName{ test::parseNameOrDie("@id/car"), 6u }));
 }
 
 TEST(XmlIdCollectorTest, DontCollectNonIds) {
diff --git a/tools/aapt2/diff/Diff.cpp b/tools/aapt2/diff/Diff.cpp
index 1ff6ef6..9b1f057 100644
--- a/tools/aapt2/diff/Diff.cpp
+++ b/tools/aapt2/diff/Diff.cpp
@@ -28,7 +28,7 @@
 
 class DiffContext : public IAaptContext {
 public:
-    const std::u16string& getCompilationPackage() override {
+    const std::string& getCompilationPackage() override {
         return mEmpty;
     }
 
@@ -57,7 +57,7 @@
     }
 
 private:
-    std::u16string mEmpty;
+    std::string mEmpty;
     StdErrDiagnostics mDiagnostics;
     NameMangler mNameMangler = NameMangler(NameManglerPolicy{});
     SymbolTable mSymbolTable;
diff --git a/tools/aapt2/dump/Dump.cpp b/tools/aapt2/dump/Dump.cpp
index 8f0dd3a..88c6f64 100644
--- a/tools/aapt2/dump/Dump.cpp
+++ b/tools/aapt2/dump/Dump.cpp
@@ -137,8 +137,8 @@
         return nullptr;
     }
 
-    const std::u16string& getCompilationPackage() override {
-        static std::u16string empty;
+    const std::string& getCompilationPackage() override {
+        static std::string empty;
         return empty;
     }
 
diff --git a/tools/aapt2/flatten/TableFlattener.cpp b/tools/aapt2/flatten/TableFlattener.cpp
index 28a7928..5fbb0fe 100644
--- a/tools/aapt2/flatten/TableFlattener.cpp
+++ b/tools/aapt2/flatten/TableFlattener.cpp
@@ -25,6 +25,7 @@
 
 #include <android-base/macros.h>
 #include <algorithm>
+#include <sstream>
 #include <type_traits>
 #include <numeric>
 
@@ -231,7 +232,8 @@
         }
 
         // Copy the package name in device endianness.
-        strcpy16_htod(pkgHeader->name, arraysize(pkgHeader->name), mPackage->name);
+        strcpy16_htod(pkgHeader->name, arraysize(pkgHeader->name),
+                      util::utf8ToUtf16(mPackage->name));
 
         // Serialize the types. We do this now so that our type and key strings
         // are populated. We write those first.
@@ -423,9 +425,9 @@
             // If there is a gap in the type IDs, fill in the StringPool
             // with empty values until we reach the ID we expect.
             while (type->id.value() > expectedTypeId) {
-                std::u16string typeName(u"?");
-                typeName += expectedTypeId;
-                mTypePool.makeRef(typeName);
+                std::stringstream typeName;
+                typeName << "?" << expectedTypeId;
+                mTypePool.makeRef(typeName.str());
                 expectedTypeId++;
             }
             expectedTypeId++;
diff --git a/tools/aapt2/flatten/TableFlattener_test.cpp b/tools/aapt2/flatten/TableFlattener_test.cpp
index d0f831e..e720e7e 100644
--- a/tools/aapt2/flatten/TableFlattener_test.cpp
+++ b/tools/aapt2/flatten/TableFlattener_test.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include "ResourceUtils.h"
 #include "flatten/TableFlattener.h"
 #include "test/Test.h"
 #include "unflatten/BinaryResourceParser.h"
@@ -27,7 +28,7 @@
 public:
     void SetUp() override {
         mContext = test::ContextBuilder()
-                .setCompilationPackage(u"com.app.test")
+                .setCompilationPackage("com.app.test")
                 .setPackageId(0x7f)
                 .build();
     }
@@ -62,7 +63,7 @@
     }
 
     ::testing::AssertionResult exists(ResTable* table,
-                                      const StringPiece16& expectedName,
+                                      const StringPiece& expectedName,
                                       const ResourceId expectedId,
                                       const ConfigDescription& expectedConfig,
                                       const uint8_t expectedDataType, const uint32_t expectedData,
@@ -104,25 +105,16 @@
             return ::testing::AssertionFailure() << "failed to find resource name";
         }
 
-        StringPiece16 package16(actualName.package, actualName.packageLen);
-        if (package16 != expectedResName.package) {
+        Maybe<ResourceName> resName = ResourceUtils::toResourceName(actualName);
+        if (!resName) {
             return ::testing::AssertionFailure()
-                    << "expected package '" << expectedResName.package << "' but got '"
-                    << package16 << "'";
-        }
-
-        StringPiece16 type16(actualName.type, actualName.typeLen);
-        if (type16 != toString(expectedResName.type)) {
-            return ::testing::AssertionFailure()
-                    << "expected type '" << expectedResName.type
-                    << "' but got '" << type16 << "'";
-        }
-
-        StringPiece16 name16(actualName.name, actualName.nameLen);
-        if (name16 != expectedResName.entry) {
-            return ::testing::AssertionFailure()
-                    << "expected name '" << expectedResName.entry
-                    << "' but got '" << name16 << "'";
+                    << "expected name '" << expectedResName << "' but got '"
+                    << StringPiece16(actualName.package, actualName.packageLen)
+                    << ":"
+                    << StringPiece16(actualName.type, actualName.typeLen)
+                    << "/"
+                    << StringPiece16(actualName.name, actualName.nameLen)
+                    << "'";
         }
 
         if (expectedConfig != config) {
@@ -139,67 +131,67 @@
 
 TEST_F(TableFlattenerTest, FlattenFullyLinkedTable) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addSimple(u"@com.app.test:id/one", ResourceId(0x7f020000))
-            .addSimple(u"@com.app.test:id/two", ResourceId(0x7f020001))
-            .addValue(u"@com.app.test:id/three", ResourceId(0x7f020002),
-                      test::buildReference(u"@com.app.test:id/one", ResourceId(0x7f020000)))
-            .addValue(u"@com.app.test:integer/one", ResourceId(0x7f030000),
+            .setPackageId("com.app.test", 0x7f)
+            .addSimple("@com.app.test:id/one", ResourceId(0x7f020000))
+            .addSimple("@com.app.test:id/two", ResourceId(0x7f020001))
+            .addValue("@com.app.test:id/three", ResourceId(0x7f020002),
+                      test::buildReference("@com.app.test:id/one", ResourceId(0x7f020000)))
+            .addValue("@com.app.test:integer/one", ResourceId(0x7f030000),
                       util::make_unique<BinaryPrimitive>(uint8_t(Res_value::TYPE_INT_DEC), 1u))
-            .addValue(u"@com.app.test:integer/one", test::parseConfigOrDie("v1"),
+            .addValue("@com.app.test:integer/one", test::parseConfigOrDie("v1"),
                       ResourceId(0x7f030000),
                       util::make_unique<BinaryPrimitive>(uint8_t(Res_value::TYPE_INT_DEC), 2u))
-            .addString(u"@com.app.test:string/test", ResourceId(0x7f040000), u"foo")
-            .addString(u"@com.app.test:layout/bar", ResourceId(0x7f050000), u"res/layout/bar.xml")
+            .addString("@com.app.test:string/test", ResourceId(0x7f040000), "foo")
+            .addString("@com.app.test:layout/bar", ResourceId(0x7f050000), "res/layout/bar.xml")
             .build();
 
     ResTable resTable;
     ASSERT_TRUE(flatten(table.get(), &resTable));
 
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:id/one", ResourceId(0x7f020000), {},
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:id/one", ResourceId(0x7f020000), {},
                        Res_value::TYPE_INT_BOOLEAN, 0u, 0u));
 
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:id/two", ResourceId(0x7f020001), {},
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:id/two", ResourceId(0x7f020001), {},
                        Res_value::TYPE_INT_BOOLEAN, 0u, 0u));
 
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:id/three", ResourceId(0x7f020002), {},
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:id/three", ResourceId(0x7f020002), {},
                        Res_value::TYPE_REFERENCE, 0x7f020000u, 0u));
 
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:integer/one", ResourceId(0x7f030000),
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:integer/one", ResourceId(0x7f030000),
                        {}, Res_value::TYPE_INT_DEC, 1u,
                        ResTable_config::CONFIG_VERSION));
 
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:integer/one", ResourceId(0x7f030000),
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:integer/one", ResourceId(0x7f030000),
                        test::parseConfigOrDie("v1"), Res_value::TYPE_INT_DEC, 2u,
                        ResTable_config::CONFIG_VERSION));
 
-    StringPiece16 fooStr = u"foo";
+    std::u16string fooStr = u"foo";
     ssize_t idx = resTable.getTableStringBlock(0)->indexOfString(fooStr.data(), fooStr.size());
     ASSERT_GE(idx, 0);
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:string/test", ResourceId(0x7f040000),
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:string/test", ResourceId(0x7f040000),
                        {}, Res_value::TYPE_STRING, (uint32_t) idx, 0u));
 
-    StringPiece16 barPath = u"res/layout/bar.xml";
+    std::u16string barPath = u"res/layout/bar.xml";
     idx = resTable.getTableStringBlock(0)->indexOfString(barPath.data(), barPath.size());
     ASSERT_GE(idx, 0);
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:layout/bar", ResourceId(0x7f050000), {},
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:layout/bar", ResourceId(0x7f050000), {},
                        Res_value::TYPE_STRING, (uint32_t) idx, 0u));
 }
 
 TEST_F(TableFlattenerTest, FlattenEntriesWithGapsInIds) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addSimple(u"@com.app.test:id/one", ResourceId(0x7f020001))
-            .addSimple(u"@com.app.test:id/three", ResourceId(0x7f020003))
+            .setPackageId("com.app.test", 0x7f)
+            .addSimple("@com.app.test:id/one", ResourceId(0x7f020001))
+            .addSimple("@com.app.test:id/three", ResourceId(0x7f020003))
             .build();
 
     ResTable resTable;
     ASSERT_TRUE(flatten(table.get(), &resTable));
 
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:id/one", ResourceId(0x7f020001), {},
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:id/one", ResourceId(0x7f020001), {},
                        Res_value::TYPE_INT_BOOLEAN, 0u, 0u));
-    EXPECT_TRUE(exists(&resTable, u"@com.app.test:id/three", ResourceId(0x7f020003), {},
-                           Res_value::TYPE_INT_BOOLEAN, 0u, 0u));
+    EXPECT_TRUE(exists(&resTable, "@com.app.test:id/three", ResourceId(0x7f020003), {},
+                       Res_value::TYPE_INT_BOOLEAN, 0u, 0u));
 }
 
 TEST_F(TableFlattenerTest, FlattenMinMaxAttributes) {
@@ -208,15 +200,15 @@
     attr.minInt = 10;
     attr.maxInt = 23;
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addValue(u"@android:attr/foo", ResourceId(0x01010000),
+            .setPackageId("android", 0x01)
+            .addValue("@android:attr/foo", ResourceId(0x01010000),
                       util::make_unique<Attribute>(attr))
             .build();
 
     ResourceTable result;
     ASSERT_TRUE(flatten(table.get(), &result));
 
-    Attribute* actualAttr = test::getValue<Attribute>(&result, u"@android:attr/foo");
+    Attribute* actualAttr = test::getValue<Attribute>(&result, "@android:attr/foo");
     ASSERT_NE(nullptr, actualAttr);
     EXPECT_EQ(attr.isWeak(), actualAttr->isWeak());
     EXPECT_EQ(attr.typeMask, actualAttr->typeMask);
diff --git a/tools/aapt2/flatten/XmlFlattener.cpp b/tools/aapt2/flatten/XmlFlattener.cpp
index 2cf7dda..a743177 100644
--- a/tools/aapt2/flatten/XmlFlattener.cpp
+++ b/tools/aapt2/flatten/XmlFlattener.cpp
@@ -57,7 +57,7 @@
             mBuffer(buffer), mOptions(options) {
     }
 
-    void addString(const StringPiece16& str, uint32_t priority, android::ResStringPool_ref* dest,
+    void addString(const StringPiece& str, uint32_t priority, android::ResStringPool_ref* dest,
                    bool treatEmptyStringAsNull = false) {
         if (str.empty() && treatEmptyStringAsNull) {
             // Some parts of the runtime treat null differently than empty string.
@@ -205,9 +205,9 @@
                     xmlAttr->compiledAttribute.value().id.value() == kIdAttr) {
                 flatElem->idIndex = util::hostToDevice16(attributeIndex);
             } else if (xmlAttr->namespaceUri.empty()) {
-                if (xmlAttr->name == u"class") {
+                if (xmlAttr->name == "class") {
                     flatElem->classIndex = util::hostToDevice16(attributeIndex);
-                } else if (xmlAttr->name == u"style") {
+                } else if (xmlAttr->name == "style") {
                     flatElem->styleIndex = util::hostToDevice16(attributeIndex);
                 }
             }
diff --git a/tools/aapt2/flatten/XmlFlattener_test.cpp b/tools/aapt2/flatten/XmlFlattener_test.cpp
index ef06528..9efee1e 100644
--- a/tools/aapt2/flatten/XmlFlattener_test.cpp
+++ b/tools/aapt2/flatten/XmlFlattener_test.cpp
@@ -16,13 +16,11 @@
 
 #include "flatten/XmlFlattener.h"
 #include "link/Linkers.h"
-#include "test/Builders.h"
-#include "test/Context.h"
+#include "test/Test.h"
 #include "util/BigBuffer.h"
 #include "util/Util.h"
 
 #include <androidfw/ResourceTypes.h>
-#include <gtest/gtest.h>
 
 namespace aapt {
 
@@ -30,15 +28,15 @@
 public:
     void SetUp() override {
         mContext = test::ContextBuilder()
-                .setCompilationPackage(u"com.app.test")
-                .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test" })
+                .setCompilationPackage("com.app.test")
+                .setNameManglerPolicy(NameManglerPolicy{ "com.app.test" })
                 .addSymbolSource(test::StaticSymbolSourceBuilder()
-                        .addSymbol(u"@android:attr/id", ResourceId(0x010100d0),
+                        .addSymbol("@android:attr/id", ResourceId(0x010100d0),
                                    test::AttributeBuilder().build())
-                        .addSymbol(u"@com.app.test:id/id", ResourceId(0x7f020000))
-                        .addSymbol(u"@android:attr/paddingStart", ResourceId(0x010103b3),
+                        .addSymbol("@com.app.test:id/id", ResourceId(0x7f020000))
+                        .addSymbol("@android:attr/paddingStart", ResourceId(0x010103b3),
                                    test::AttributeBuilder().build())
-                        .addSymbol(u"@android:attr/colorAccent", ResourceId(0x01010435),
+                        .addSymbol("@android:attr/colorAccent", ResourceId(0x01010435),
                                    test::AttributeBuilder().build())
                         .build())
                 .build();
diff --git a/tools/aapt2/java/AnnotationProcessor.cpp b/tools/aapt2/java/AnnotationProcessor.cpp
index b7e7f90..23ff8ab 100644
--- a/tools/aapt2/java/AnnotationProcessor.cpp
+++ b/tools/aapt2/java/AnnotationProcessor.cpp
@@ -47,23 +47,13 @@
     mComment << "\n * " << std::move(comment);
 }
 
-void AnnotationProcessor::appendComment(const StringPiece16& comment) {
-    // We need to process line by line to clean-up whitespace and append prefixes.
-    for (StringPiece16 line : util::tokenize(comment, u'\n')) {
-        line = util::trimWhitespace(line);
-        if (!line.empty()) {
-            std::string utf8Line = util::utf16ToUtf8(line);
-            appendCommentLine(utf8Line);
-        }
-    }
-}
-
 void AnnotationProcessor::appendComment(const StringPiece& comment) {
+    // We need to process line by line to clean-up whitespace and append prefixes.
     for (StringPiece line : util::tokenize(comment, '\n')) {
         line = util::trimWhitespace(line);
         if (!line.empty()) {
-            std::string utf8Line = line.toString();
-            appendCommentLine(utf8Line);
+            std::string lineCopy = line.toString();
+            appendCommentLine(lineCopy);
         }
     }
 }
@@ -75,7 +65,7 @@
 void AnnotationProcessor::writeToStream(std::ostream* out, const StringPiece& prefix) const {
     if (mHasComments) {
         std::string result = mComment.str();
-        for (StringPiece line : util::tokenize<char>(result, '\n')) {
+        for (StringPiece line : util::tokenize(result, '\n')) {
            *out << prefix << line << "\n";
         }
         *out << prefix << " */" << "\n";
diff --git a/tools/aapt2/java/AnnotationProcessor.h b/tools/aapt2/java/AnnotationProcessor.h
index 8309dd9..cfc32f3 100644
--- a/tools/aapt2/java/AnnotationProcessor.h
+++ b/tools/aapt2/java/AnnotationProcessor.h
@@ -57,7 +57,6 @@
      * Adds more comments. Since resources can have various values with different configurations,
      * we need to collect all the comments.
      */
-    void appendComment(const StringPiece16& comment);
     void appendComment(const StringPiece& comment);
 
     void appendNewLine();
diff --git a/tools/aapt2/java/JavaClassGenerator.cpp b/tools/aapt2/java/JavaClassGenerator.cpp
index 84df0b4..fbaefb1 100644
--- a/tools/aapt2/java/JavaClassGenerator.cpp
+++ b/tools/aapt2/java/JavaClassGenerator.cpp
@@ -19,7 +19,6 @@
 #include "ResourceTable.h"
 #include "ResourceValues.h"
 #include "ValueVisitor.h"
-
 #include "java/AnnotationProcessor.h"
 #include "java/ClassDefinition.h"
 #include "java/JavaClassGenerator.h"
@@ -39,20 +38,20 @@
         mContext(context), mTable(table), mOptions(options) {
 }
 
-static const std::set<StringPiece16> sJavaIdentifiers = {
-    u"abstract", u"assert", u"boolean", u"break", u"byte",
-    u"case", u"catch", u"char", u"class", u"const", u"continue",
-    u"default", u"do", u"double", u"else", u"enum", u"extends",
-    u"final", u"finally", u"float", u"for", u"goto", u"if",
-    u"implements", u"import", u"instanceof", u"int", u"interface",
-    u"long", u"native", u"new", u"package", u"private", u"protected",
-    u"public", u"return", u"short", u"static", u"strictfp", u"super",
-    u"switch", u"synchronized", u"this", u"throw", u"throws",
-    u"transient", u"try", u"void", u"volatile", u"while", u"true",
-    u"false", u"null"
+static const std::set<StringPiece> sJavaIdentifiers = {
+    "abstract", "assert", "boolean", "break", "byte",
+    "case", "catch", "char", "class", "const", "continue",
+    "default", "do", "double", "else", "enum", "extends",
+    "final", "finally", "float", "for", "goto", "if",
+    "implements", "import", "instanceof", "int", "interface",
+    "long", "native", "new", "package", "private", "protected",
+    "public", "return", "short", "static", "strictfp", "super",
+    "switch", "synchronized", "this", "throw", "throws",
+    "transient", "try", "void", "volatile", "while", "true",
+    "false", "null"
 };
 
-static bool isValidSymbol(const StringPiece16& symbol) {
+static bool isValidSymbol(const StringPiece& symbol) {
     return sJavaIdentifiers.find(symbol) == sJavaIdentifiers.end();
 }
 
@@ -60,8 +59,8 @@
  * Java symbols can not contain . or -, but those are valid in a resource name.
  * Replace those with '_'.
  */
-static std::string transform(const StringPiece16& symbol) {
-    std::string output = util::utf16ToUtf8(symbol);
+static std::string transform(const StringPiece& symbol) {
+    std::string output = symbol.toString();
     for (char& c : output) {
         if (c == '.' || c == '-') {
             c = '_';
@@ -83,7 +82,7 @@
  */
 static std::string transformNestedAttr(const ResourceNameRef& attrName,
                                        const std::string& styleableClassName,
-                                       const StringPiece16& packageNameToGenerate) {
+                                       const StringPiece& packageNameToGenerate) {
     std::string output = styleableClassName;
 
     // We may reference IDs from other packages, so prefix the entry name with
@@ -204,8 +203,8 @@
     }
 }
 
-void JavaClassGenerator::addMembersToStyleableClass(const StringPiece16& packageNameToGenerate,
-                                                    const std::u16string& entryName,
+void JavaClassGenerator::addMembersToStyleableClass(const StringPiece& packageNameToGenerate,
+                                                    const std::string& entryName,
                                                     const Styleable* styleable,
                                                     ClassDefinition* outStyleableClassDef) {
     const std::string className = transform(entryName);
@@ -284,8 +283,8 @@
                 continue;
             }
 
-            StringPiece16 attrCommentLine = entry.symbol->attribute->getComment();
-            if (attrCommentLine.contains(StringPiece16(u"@removed"))) {
+            StringPiece attrCommentLine = entry.symbol->attribute->getComment();
+            if (attrCommentLine.contains("@removed")) {
                 // Removed attributes are public but hidden from the documentation, so don't emit
                 // them as part of the class documentation.
                 continue;
@@ -354,12 +353,12 @@
             continue;
         }
 
-        StringPiece16 comment = styleableAttr.attrRef->getComment();
+        StringPiece comment = styleableAttr.attrRef->getComment();
         if (styleableAttr.symbol->attribute && comment.empty()) {
             comment = styleableAttr.symbol->attribute->getComment();
         }
 
-        if (comment.contains(StringPiece16(u"@removed"))) {
+        if (comment.contains("@removed")) {
             // Removed attributes are public but hidden from the documentation, so don't emit them
             // as part of the class documentation.
             continue;
@@ -367,7 +366,7 @@
 
         const ResourceName& attrName = styleableAttr.attrRef->name.value();
 
-        StringPiece16 packageName = attrName.package;
+        StringPiece packageName = attrName.package;
         if (packageName.empty()) {
             packageName = mContext->getCompilationPackage();
         }
@@ -403,7 +402,7 @@
     }
 }
 
-bool JavaClassGenerator::addMembersToTypeClass(const StringPiece16& packageNameToGenerate,
+bool JavaClassGenerator::addMembersToTypeClass(const StringPiece& packageNameToGenerate,
                                                const ResourceTablePackage* package,
                                                const ResourceTableType* type,
                                                ClassDefinition* outTypeClassDef) {
@@ -418,8 +417,8 @@
             id = ResourceId(package->id.value(), type->id.value(), entry->id.value());
         }
 
-        std::u16string unmangledPackage;
-        std::u16string unmangledName = entry->name;
+        std::string unmangledPackage;
+        std::string unmangledName = entry->name;
         if (NameMangler::unmangle(&unmangledName, &unmangledPackage)) {
             // The entry name was mangled, and we successfully unmangled it.
             // Check that we want to emit this symbol.
@@ -481,7 +480,7 @@
     return true;
 }
 
-bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate, std::ostream* out) {
+bool JavaClassGenerator::generate(const StringPiece& packageNameToGenerate, std::ostream* out) {
     return generate(packageNameToGenerate, packageNameToGenerate, out);
 }
 
@@ -494,8 +493,8 @@
     }
 }
 
-bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
-                                  const StringPiece16& outPackageName, std::ostream* out) {
+bool JavaClassGenerator::generate(const StringPiece& packageNameToGenerate,
+                                  const StringPiece& outPackageName, std::ostream* out) {
 
     ClassDefinition rClass("R", ClassQualifier::None, true);
 
@@ -509,8 +508,7 @@
                     (mOptions.types == JavaClassGeneratorOptions::SymbolTypes::kPublic);
 
             std::unique_ptr<ClassDefinition> classDef = util::make_unique<ClassDefinition>(
-                    util::utf16ToUtf8(toString(type->type)), ClassQualifier::Static,
-                    forceCreationIfEmpty);
+                    toString(type->type), ClassQualifier::Static, forceCreationIfEmpty);
 
             bool result = addMembersToTypeClass(packageNameToGenerate, package.get(), type.get(),
                                                 classDef.get());
@@ -545,8 +543,7 @@
 
     appendJavaDocAnnotations(mOptions.javadocAnnotations, rClass.getCommentBuilder());
 
-    if (!ClassDefinition::writeJavaFile(&rClass, util::utf16ToUtf8(outPackageName),
-                                        mOptions.useFinal, out)) {
+    if (!ClassDefinition::writeJavaFile(&rClass, outPackageName, mOptions.useFinal, out)) {
         return false;
     }
 
diff --git a/tools/aapt2/java/JavaClassGenerator.h b/tools/aapt2/java/JavaClassGenerator.h
index 77e0ed7..901a86e 100644
--- a/tools/aapt2/java/JavaClassGenerator.h
+++ b/tools/aapt2/java/JavaClassGenerator.h
@@ -66,22 +66,22 @@
      * We need to generate these symbols in a separate file.
      * Returns true on success.
      */
-    bool generate(const StringPiece16& packageNameToGenerate, std::ostream* out);
+    bool generate(const StringPiece& packageNameToGenerate, std::ostream* out);
 
-    bool generate(const StringPiece16& packageNameToGenerate,
-                  const StringPiece16& outputPackageName,
+    bool generate(const StringPiece& packageNameToGenerate,
+                  const StringPiece& outputPackageName,
                   std::ostream* out);
 
     const std::string& getError() const;
 
 private:
-    bool addMembersToTypeClass(const StringPiece16& packageNameToGenerate,
+    bool addMembersToTypeClass(const StringPiece& packageNameToGenerate,
                                const ResourceTablePackage* package,
                                const ResourceTableType* type,
                                ClassDefinition* outTypeClassDef);
 
-    void addMembersToStyleableClass(const StringPiece16& packageNameToGenerate,
-                                    const std::u16string& entryName,
+    void addMembersToStyleableClass(const StringPiece& packageNameToGenerate,
+                                    const std::string& entryName,
                                     const Styleable* styleable,
                                     ClassDefinition* outStyleableClassDef);
 
diff --git a/tools/aapt2/java/JavaClassGenerator_test.cpp b/tools/aapt2/java/JavaClassGenerator_test.cpp
index 46266b3..57a8047 100644
--- a/tools/aapt2/java/JavaClassGenerator_test.cpp
+++ b/tools/aapt2/java/JavaClassGenerator_test.cpp
@@ -25,40 +25,40 @@
 
 TEST(JavaClassGeneratorTest, FailWhenEntryIsJavaKeyword) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addSimple(u"@android:id/class", ResourceId(0x01020000))
+            .setPackageId("android", 0x01)
+            .addSimple("@android:id/class", ResourceId(0x01020000))
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGenerator generator(context.get(), table.get(), {});
 
     std::stringstream out;
-    EXPECT_FALSE(generator.generate(u"android", &out));
+    EXPECT_FALSE(generator.generate("android", &out));
 }
 
 TEST(JavaClassGeneratorTest, TransformInvalidJavaIdentifierCharacter) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addSimple(u"@android:id/hey-man", ResourceId(0x01020000))
-            .addValue(u"@android:attr/cool.attr", ResourceId(0x01010000),
+            .setPackageId("android", 0x01)
+            .addSimple("@android:id/hey-man", ResourceId(0x01020000))
+            .addValue("@android:attr/cool.attr", ResourceId(0x01010000),
                       test::AttributeBuilder(false).build())
-            .addValue(u"@android:styleable/hey.dude", ResourceId(0x01030000),
+            .addValue("@android:styleable/hey.dude", ResourceId(0x01030000),
                       test::StyleableBuilder()
-                              .addItem(u"@android:attr/cool.attr", ResourceId(0x01010000))
+                              .addItem("@android:attr/cool.attr", ResourceId(0x01010000))
                               .build())
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGenerator generator(context.get(), table.get(), {});
 
     std::stringstream out;
-    EXPECT_TRUE(generator.generate(u"android", &out));
+    EXPECT_TRUE(generator.generate("android", &out));
 
     std::string output = out.str();
 
@@ -74,18 +74,18 @@
 
 TEST(JavaClassGeneratorTest, CorrectPackageNameIsUsed) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addSimple(u"@android:id/one", ResourceId(0x01020000))
-            .addSimple(u"@android:id/com.foo$two", ResourceId(0x01020001))
+            .setPackageId("android", 0x01)
+            .addSimple("@android:id/one", ResourceId(0x01020000))
+            .addSimple("@android:id/com.foo$two", ResourceId(0x01020001))
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGenerator generator(context.get(), table.get(), {});
     std::stringstream out;
-    ASSERT_TRUE(generator.generate(u"android", u"com.android.internal", &out));
+    ASSERT_TRUE(generator.generate("android", "com.android.internal", &out));
 
     std::string output = out.str();
     EXPECT_NE(std::string::npos, output.find("package com.android.internal;"));
@@ -96,18 +96,18 @@
 
 TEST(JavaClassGeneratorTest, AttrPrivateIsWrittenAsAttr) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addSimple(u"@android:attr/two", ResourceId(0x01010001))
-            .addSimple(u"@android:^attr-private/one", ResourceId(0x01010000))
+            .setPackageId("android", 0x01)
+            .addSimple("@android:attr/two", ResourceId(0x01010001))
+            .addSimple("@android:^attr-private/one", ResourceId(0x01010000))
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGenerator generator(context.get(), table.get(), {});
     std::stringstream out;
-    ASSERT_TRUE(generator.generate(u"android", &out));
+    ASSERT_TRUE(generator.generate("android", &out));
 
     std::string output = out.str();
     EXPECT_NE(std::string::npos, output.find("public static final class attr"));
@@ -117,17 +117,17 @@
 TEST(JavaClassGeneratorTest, OnlyWritePublicResources) {
     StdErrDiagnostics diag;
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addSimple(u"@android:id/one", ResourceId(0x01020000))
-            .addSimple(u"@android:id/two", ResourceId(0x01020001))
-            .addSimple(u"@android:id/three", ResourceId(0x01020002))
-            .setSymbolState(u"@android:id/one", ResourceId(0x01020000), SymbolState::kPublic)
-            .setSymbolState(u"@android:id/two", ResourceId(0x01020001), SymbolState::kPrivate)
+            .setPackageId("android", 0x01)
+            .addSimple("@android:id/one", ResourceId(0x01020000))
+            .addSimple("@android:id/two", ResourceId(0x01020001))
+            .addSimple("@android:id/three", ResourceId(0x01020002))
+            .setSymbolState("@android:id/one", ResourceId(0x01020000), SymbolState::kPublic)
+            .setSymbolState("@android:id/two", ResourceId(0x01020001), SymbolState::kPrivate)
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
 
     JavaClassGeneratorOptions options;
@@ -135,7 +135,7 @@
     {
         JavaClassGenerator generator(context.get(), table.get(), options);
         std::stringstream out;
-        ASSERT_TRUE(generator.generate(u"android", &out));
+        ASSERT_TRUE(generator.generate("android", &out));
         std::string output = out.str();
         EXPECT_NE(std::string::npos, output.find("public static final int one=0x01020000;"));
         EXPECT_EQ(std::string::npos, output.find("two"));
@@ -146,7 +146,7 @@
     {
         JavaClassGenerator generator(context.get(), table.get(), options);
         std::stringstream out;
-        ASSERT_TRUE(generator.generate(u"android", &out));
+        ASSERT_TRUE(generator.generate("android", &out));
         std::string output = out.str();
         EXPECT_NE(std::string::npos, output.find("public static final int one=0x01020000;"));
         EXPECT_NE(std::string::npos, output.find("public static final int two=0x01020001;"));
@@ -157,7 +157,7 @@
     {
         JavaClassGenerator generator(context.get(), table.get(), options);
         std::stringstream out;
-        ASSERT_TRUE(generator.generate(u"android", &out));
+        ASSERT_TRUE(generator.generate("android", &out));
         std::string output = out.str();
         EXPECT_NE(std::string::npos, output.find("public static final int one=0x01020000;"));
         EXPECT_NE(std::string::npos, output.find("public static final int two=0x01020001;"));
@@ -198,27 +198,27 @@
 
 TEST(JavaClassGeneratorTest, EmitOtherPackagesAttributesInStyleable) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-                .setPackageId(u"android", 0x01)
-                .setPackageId(u"com.lib", 0x02)
-                .addValue(u"@android:attr/bar", ResourceId(0x01010000),
+                .setPackageId("android", 0x01)
+                .setPackageId("com.lib", 0x02)
+                .addValue("@android:attr/bar", ResourceId(0x01010000),
                           test::AttributeBuilder(false).build())
-                .addValue(u"@com.lib:attr/bar", ResourceId(0x02010000),
+                .addValue("@com.lib:attr/bar", ResourceId(0x02010000),
                            test::AttributeBuilder(false).build())
-                .addValue(u"@android:styleable/foo", ResourceId(0x01030000),
+                .addValue("@android:styleable/foo", ResourceId(0x01030000),
                           test::StyleableBuilder()
-                                  .addItem(u"@android:attr/bar", ResourceId(0x01010000))
-                                  .addItem(u"@com.lib:attr/bar", ResourceId(0x02010000))
+                                  .addItem("@android:attr/bar", ResourceId(0x01010000))
+                                  .addItem("@com.lib:attr/bar", ResourceId(0x02010000))
                                   .build())
                 .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGenerator generator(context.get(), table.get(), {});
 
     std::stringstream out;
-    EXPECT_TRUE(generator.generate(u"android", &out));
+    EXPECT_TRUE(generator.generate("android", &out));
 
     std::string output = out.str();
     EXPECT_NE(std::string::npos, output.find("int foo_bar="));
@@ -227,19 +227,19 @@
 
 TEST(JavaClassGeneratorTest, CommentsForSimpleResourcesArePresent) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addSimple(u"@android:id/foo", ResourceId(0x01010000))
+            .setPackageId("android", 0x01)
+            .addSimple("@android:id/foo", ResourceId(0x01010000))
             .build();
-    test::getValue<Id>(table.get(), u"@android:id/foo")
-            ->setComment(std::u16string(u"This is a comment\n@deprecated"));
+    test::getValue<Id>(table.get(), "@android:id/foo")
+            ->setComment(std::string("This is a comment\n@deprecated"));
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGenerator generator(context.get(), table.get(), {});
     std::stringstream out;
-    ASSERT_TRUE(generator.generate(u"android", &out));
+    ASSERT_TRUE(generator.generate("android", &out));
     std::string actual = out.str();
 
     const char* expectedText =
@@ -259,59 +259,56 @@
 
 TEST(JavaClassGeneratorTest, CommentsForStyleablesAndNestedAttributesArePresent) {
     Attribute attr(false);
-    attr.setComment(StringPiece16(u"This is an attribute"));
+    attr.setComment(StringPiece("This is an attribute"));
 
     Styleable styleable;
-    styleable.entries.push_back(Reference(test::parseNameOrDie(u"@android:attr/one")));
-    styleable.setComment(StringPiece16(u"This is a styleable"));
+    styleable.entries.push_back(Reference(test::parseNameOrDie("@android:attr/one")));
+    styleable.setComment(StringPiece("This is a styleable"));
 
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addValue(u"@android:attr/one", util::make_unique<Attribute>(attr))
-            .addValue(u"@android:styleable/Container",
+            .setPackageId("android", 0x01)
+            .addValue("@android:attr/one", util::make_unique<Attribute>(attr))
+            .addValue("@android:styleable/Container",
                       std::unique_ptr<Styleable>(styleable.clone(nullptr)))
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGeneratorOptions options;
     options.useFinal = false;
     JavaClassGenerator generator(context.get(), table.get(), options);
     std::stringstream out;
-    ASSERT_TRUE(generator.generate(u"android", &out));
+    ASSERT_TRUE(generator.generate("android", &out));
     std::string actual = out.str();
 
     EXPECT_NE(std::string::npos, actual.find("@attr name android:one"));
     EXPECT_NE(std::string::npos, actual.find("@attr description"));
-    EXPECT_NE(std::string::npos, actual.find(util::utf16ToUtf8(attr.getComment())));
-    EXPECT_NE(std::string::npos, actual.find(util::utf16ToUtf8(styleable.getComment())));
+    EXPECT_NE(std::string::npos, actual.find(attr.getComment().data()));
+    EXPECT_NE(std::string::npos, actual.find(styleable.getComment().data()));
 }
 
 TEST(JavaClassGeneratorTest, CommentsForRemovedAttributesAreNotPresentInClass) {
     Attribute attr(false);
-    attr.setComment(StringPiece16(u"@removed"));
-
+    attr.setComment(StringPiece("@removed"));
 
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"android", 0x01)
-            .addValue(u"@android:attr/one", util::make_unique<Attribute>(attr))
+            .setPackageId("android", 0x01)
+            .addValue("@android:attr/one", util::make_unique<Attribute>(attr))
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
-            .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+            .setNameManglerPolicy(NameManglerPolicy{ "android" })
             .build();
     JavaClassGeneratorOptions options;
     options.useFinal = false;
     JavaClassGenerator generator(context.get(), table.get(), options);
     std::stringstream out;
-    ASSERT_TRUE(generator.generate(u"android", &out));
+    ASSERT_TRUE(generator.generate("android", &out));
     std::string actual = out.str();
 
-    std::cout << actual << std::endl;
-
     EXPECT_EQ(std::string::npos, actual.find("@attr name android:one"));
     EXPECT_EQ(std::string::npos, actual.find("@attr description"));
 
diff --git a/tools/aapt2/java/ManifestClassGenerator.cpp b/tools/aapt2/java/ManifestClassGenerator.cpp
index be8955e..5ff11b1 100644
--- a/tools/aapt2/java/ManifestClassGenerator.cpp
+++ b/tools/aapt2/java/ManifestClassGenerator.cpp
@@ -25,12 +25,12 @@
 
 namespace aapt {
 
-static Maybe<StringPiece16> extractJavaIdentifier(IDiagnostics* diag, const Source& source,
-                                                  const StringPiece16& value) {
-    const StringPiece16 sep = u".";
+static Maybe<StringPiece> extractJavaIdentifier(IDiagnostics* diag, const Source& source,
+                                                const StringPiece& value) {
+    const StringPiece sep = ".";
     auto iter = std::find_end(value.begin(), value.end(), sep.begin(), sep.end());
 
-    StringPiece16 result;
+    StringPiece result;
     if (iter != value.end()) {
         result.assign(iter + sep.size(), value.end() - (iter + sep.size()));
     } else {
@@ -42,15 +42,15 @@
         return {};
     }
 
-    iter = util::findNonAlphaNumericAndNotInSet(result, u"_");
+    iter = util::findNonAlphaNumericAndNotInSet(result, "_");
     if (iter != result.end()) {
         diag->error(DiagMessage(source)
-                    << "invalid character '" << StringPiece16(iter, 1)
+                    << "invalid character '" << StringPiece(iter, 1)
                     << "' in '" << result << "'");
         return {};
     }
 
-    if (*result.begin() >= u'0' && *result.begin() <= u'9') {
+    if (*result.begin() >= '0' && *result.begin() <= '9') {
         diag->error(DiagMessage(source) << "symbol can not start with a digit");
         return {};
     }
@@ -60,20 +60,20 @@
 
 static bool writeSymbol(const Source& source, IDiagnostics* diag, xml::Element* el,
                         ClassDefinition* classDef) {
-    xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, u"name");
+    xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, "name");
     if (!attr) {
         diag->error(DiagMessage(source) << "<" << el->name << "> must define 'android:name'");
         return false;
     }
 
-    Maybe<StringPiece16> result = extractJavaIdentifier(diag, source.withLine(el->lineNumber),
-                                                        attr->value);
+    Maybe<StringPiece> result = extractJavaIdentifier(diag, source.withLine(el->lineNumber),
+                                                      attr->value);
     if (!result) {
         return false;
     }
 
     std::unique_ptr<StringMember> stringMember = util::make_unique<StringMember>(
-            util::utf16ToUtf8(result.value()), util::utf16ToUtf8(attr->value));
+            result.value(), attr->value);
     stringMember->getCommentBuilder()->appendComment(el->comment);
 
     classDef->addMember(std::move(stringMember));
@@ -87,7 +87,7 @@
         return {};
     }
 
-    if (el->name != u"manifest" && !el->namespaceUri.empty()) {
+    if (el->name != "manifest" && !el->namespaceUri.empty()) {
         diag->error(DiagMessage(res->file.source) << "no <manifest> root tag defined");
         return {};
     }
@@ -102,9 +102,9 @@
     std::vector<xml::Element*> children = el->getChildElements();
     for (xml::Element* childEl : children) {
         if (childEl->namespaceUri.empty()) {
-            if (childEl->name == u"permission") {
+            if (childEl->name == "permission") {
                 error |= !writeSymbol(res->file.source, diag, childEl, permissionClass.get());
-            } else if (childEl->name == u"permission-group") {
+            } else if (childEl->name == "permission-group") {
                 error |= !writeSymbol(res->file.source, diag, childEl, permissionGroupClass.get());
             }
         }
diff --git a/tools/aapt2/java/ManifestClassGenerator_test.cpp b/tools/aapt2/java/ManifestClassGenerator_test.cpp
index d3bca70..eecb544 100644
--- a/tools/aapt2/java/ManifestClassGenerator_test.cpp
+++ b/tools/aapt2/java/ManifestClassGenerator_test.cpp
@@ -15,10 +15,7 @@
  */
 
 #include "java/ManifestClassGenerator.h"
-#include "test/Builders.h"
-#include "test/Context.h"
-
-#include <gtest/gtest.h>
+#include "test/Test.h"
 
 namespace aapt {
 
diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp
index 53ff961..902ec4c 100644
--- a/tools/aapt2/java/ProguardRules.cpp
+++ b/tools/aapt2/java/ProguardRules.cpp
@@ -43,7 +43,7 @@
                     node->namespaceUri);
             if (maybePackage) {
                 // This is a custom view, let's figure out the class name from this.
-                std::u16string package = maybePackage.value().package + u"." + node->name;
+                std::string package = maybePackage.value().package + "." + node->name;
                 if (util::isJavaClassName(package)) {
                     addClass(node->lineNumber, package);
                 }
@@ -58,11 +58,11 @@
     }
 
 protected:
-    void addClass(size_t lineNumber, const std::u16string& className) {
+    void addClass(size_t lineNumber, const std::string& className) {
         mKeepSet->addClass(Source(mSource.path, lineNumber), className);
     }
 
-    void addMethod(size_t lineNumber, const std::u16string& methodName) {
+    void addMethod(size_t lineNumber, const std::string& methodName) {
         mKeepSet->addMethod(Source(mSource.path, lineNumber), methodName);
     }
 
@@ -79,19 +79,19 @@
         bool checkClass = false;
         bool checkName = false;
         if (node->namespaceUri.empty()) {
-            checkClass = node->name == u"view" || node->name == u"fragment";
+            checkClass = node->name == "view" || node->name == "fragment";
         } else if (node->namespaceUri == xml::kSchemaAndroid) {
-            checkName = node->name == u"fragment";
+            checkName = node->name == "fragment";
         }
 
         for (const auto& attr : node->attributes) {
-            if (checkClass && attr.namespaceUri.empty() && attr.name == u"class" &&
+            if (checkClass && attr.namespaceUri.empty() && attr.name == "class" &&
                     util::isJavaClassName(attr.value)) {
                 addClass(node->lineNumber, attr.value);
             } else if (checkName && attr.namespaceUri == xml::kSchemaAndroid &&
-                    attr.name == u"name" && util::isJavaClassName(attr.value)) {
+                    attr.name == "name" && util::isJavaClassName(attr.value)) {
                 addClass(node->lineNumber, attr.value);
-            } else if (attr.namespaceUri == xml::kSchemaAndroid && attr.name == u"onClick") {
+            } else if (attr.namespaceUri == xml::kSchemaAndroid && attr.name == "onClick") {
                 addMethod(node->lineNumber, attr.value);
             }
         }
@@ -107,11 +107,11 @@
     virtual void visit(xml::Element* node) override {
         bool checkFragment = false;
         if (node->namespaceUri.empty()) {
-            checkFragment = node->name == u"PreferenceScreen" || node->name == u"header";
+            checkFragment = node->name == "PreferenceScreen" || node->name == "header";
         }
 
         if (checkFragment) {
-            xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, u"fragment");
+            xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, "fragment");
             if (attr && util::isJavaClassName(attr->value)) {
                 addClass(node->lineNumber, attr->value);
             }
@@ -127,9 +127,9 @@
 
     virtual void visit(xml::Element* node) override {
         bool checkClass = node->namespaceUri.empty() &&
-                (node->name == u"transition" || node->name == u"pathMotion");
+                (node->name == "transition" || node->name == "pathMotion");
         if (checkClass) {
-            xml::Attribute* attr = node->findAttribute({}, u"class");
+            xml::Attribute* attr = node->findAttribute({}, "class");
             if (attr && util::isJavaClassName(attr->value)) {
                 addClass(node->lineNumber, attr->value);
             }
@@ -147,50 +147,51 @@
     virtual void visit(xml::Element* node) override {
         if (node->namespaceUri.empty()) {
             bool getName = false;
-            if (node->name == u"manifest") {
-                xml::Attribute* attr = node->findAttribute({}, u"package");
+            if (node->name == "manifest") {
+                xml::Attribute* attr = node->findAttribute({}, "package");
                 if (attr) {
                     mPackage = attr->value;
                 }
-            } else if (node->name == u"application") {
+            } else if (node->name == "application") {
                 getName = true;
-                xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, u"backupAgent");
+                xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, "backupAgent");
                 if (attr) {
-                    Maybe<std::u16string> result = util::getFullyQualifiedClassName(mPackage,
-                                                                                    attr->value);
+                    Maybe<std::string> result = util::getFullyQualifiedClassName(mPackage,
+                                                                                 attr->value);
                     if (result) {
                         addClass(node->lineNumber, result.value());
                     }
                 }
                 if (mMainDexOnly) {
                     xml::Attribute* defaultProcess = node->findAttribute(xml::kSchemaAndroid,
-                                                                         u"process");
+                                                                         "process");
                     if (defaultProcess) {
                         mDefaultProcess = defaultProcess->value;
                     }
                 }
-            } else if (node->name == u"activity" || node->name == u"service" ||
-                    node->name == u"receiver" || node->name == u"provider" ||
-                    node->name == u"instrumentation") {
+            } else if (node->name == "activity" || node->name == "service" ||
+                    node->name == "receiver" || node->name == "provider") {
+                getName = true;
+
+                if (mMainDexOnly) {
+                    xml::Attribute* componentProcess = node->findAttribute(xml::kSchemaAndroid,
+                                                                           "process");
+
+                    const std::string& process = componentProcess ? componentProcess->value
+                            : mDefaultProcess;
+                    getName = !process.empty() && process[0] != ':';
+                }
+            } else if (node-> name == "instrumentation") {
                 getName = true;
             }
 
             if (getName) {
-                xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, u"name");
+                xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, "name");
                 getName = attr != nullptr;
 
-                if (getName && mMainDexOnly) {
-                    xml::Attribute* componentProcess = node->findAttribute(xml::kSchemaAndroid,
-                                                                           u"process");
-
-                    const std::u16string& process = componentProcess ? componentProcess->value
-                                                                     : mDefaultProcess;
-                    getName = !process.empty() && process[0] != u':';
-                }
-
                 if (getName) {
-                    Maybe<std::u16string> result = util::getFullyQualifiedClassName(mPackage,
-                                                                                    attr->value);
+                    Maybe<std::string> result = util::getFullyQualifiedClassName(mPackage,
+                                                                                 attr->value);
                     if (result) {
                         addClass(node->lineNumber, result.value());
                     }
@@ -201,9 +202,9 @@
     }
 
 private:
-    std::u16string mPackage;
+    std::string mPackage;
     const bool mMainDexOnly;
-    std::u16string mDefaultProcess;
+    std::string mDefaultProcess;
 };
 
 bool collectProguardRulesForManifest(const Source& source, xml::XmlResource* res,
diff --git a/tools/aapt2/java/ProguardRules.h b/tools/aapt2/java/ProguardRules.h
index 744ae5b..c2d2bd9 100644
--- a/tools/aapt2/java/ProguardRules.h
+++ b/tools/aapt2/java/ProguardRules.h
@@ -31,19 +31,19 @@
 
 class KeepSet {
 public:
-    inline void addClass(const Source& source, const std::u16string& className) {
+    inline void addClass(const Source& source, const std::string& className) {
         mKeepSet[className].insert(source);
     }
 
-    inline void addMethod(const Source& source, const std::u16string& methodName) {
+    inline void addMethod(const Source& source, const std::string& methodName) {
         mKeepMethodSet[methodName].insert(source);
     }
 
 private:
     friend bool writeKeepSet(std::ostream* out, const KeepSet& keepSet);
 
-    std::map<std::u16string, std::set<Source>> mKeepSet;
-    std::map<std::u16string, std::set<Source>> mKeepMethodSet;
+    std::map<std::string, std::set<Source>> mKeepSet;
+    std::map<std::string, std::set<Source>> mKeepMethodSet;
 };
 
 bool collectProguardRulesForManifest(const Source& source, xml::XmlResource* res, KeepSet* keepSet,
diff --git a/tools/aapt2/link/AutoVersioner_test.cpp b/tools/aapt2/link/AutoVersioner_test.cpp
index 99a7c02..7764176 100644
--- a/tools/aapt2/link/AutoVersioner_test.cpp
+++ b/tools/aapt2/link/AutoVersioner_test.cpp
@@ -25,7 +25,7 @@
     const ConfigDescription landConfig = test::parseConfigOrDie("land");
     const ConfigDescription sw600dpLandConfig = test::parseConfigOrDie("sw600dp-land");
 
-    ResourceEntry entry(u"foo");
+    ResourceEntry entry("foo");
     entry.values.push_back(util::make_unique<ResourceConfigValue>(defaultConfig, ""));
     entry.values.push_back(util::make_unique<ResourceConfigValue>(landConfig, ""));
     entry.values.push_back(util::make_unique<ResourceConfigValue>(sw600dpLandConfig, ""));
@@ -39,7 +39,7 @@
     const ConfigDescription sw600dpV13Config = test::parseConfigOrDie("sw600dp-v13");
     const ConfigDescription v21Config = test::parseConfigOrDie("v21");
 
-    ResourceEntry entry(u"foo");
+    ResourceEntry entry("foo");
     entry.values.push_back(util::make_unique<ResourceConfigValue>(defaultConfig, ""));
     entry.values.push_back(util::make_unique<ResourceConfigValue>(sw600dpV13Config, ""));
     entry.values.push_back(util::make_unique<ResourceConfigValue>(v21Config, ""));
@@ -50,73 +50,73 @@
 
 TEST(AutoVersionerTest, VersionStylesForTable) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"app", 0x7f)
-            .addValue(u"@app:style/Foo", test::parseConfigOrDie("v4"), ResourceId(0x7f020000),
+            .setPackageId("app", 0x7f)
+            .addValue("@app:style/Foo", test::parseConfigOrDie("v4"), ResourceId(0x7f020000),
                       test::StyleBuilder()
-                            .addItem(u"@android:attr/onClick", ResourceId(0x0101026f),
+                            .addItem("@android:attr/onClick", ResourceId(0x0101026f),
                                      util::make_unique<Id>())
-                            .addItem(u"@android:attr/paddingStart", ResourceId(0x010103b3),
+                            .addItem("@android:attr/paddingStart", ResourceId(0x010103b3),
                                      util::make_unique<Id>())
-                            .addItem(u"@android:attr/requiresSmallestWidthDp",
+                            .addItem("@android:attr/requiresSmallestWidthDp",
                                      ResourceId(0x01010364), util::make_unique<Id>())
-                            .addItem(u"@android:attr/colorAccent", ResourceId(0x01010435),
+                            .addItem("@android:attr/colorAccent", ResourceId(0x01010435),
                                      util::make_unique<Id>())
                             .build())
-            .addValue(u"@app:style/Foo", test::parseConfigOrDie("v21"), ResourceId(0x7f020000),
+            .addValue("@app:style/Foo", test::parseConfigOrDie("v21"), ResourceId(0x7f020000),
                       test::StyleBuilder()
-                            .addItem(u"@android:attr/paddingEnd", ResourceId(0x010103b4),
+                            .addItem("@android:attr/paddingEnd", ResourceId(0x010103b4),
                                      util::make_unique<Id>())
                             .build())
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"app")
+            .setCompilationPackage("app")
             .setPackageId(0x7f)
             .build();
 
     AutoVersioner versioner;
     ASSERT_TRUE(versioner.consume(context.get(), table.get()));
 
-    Style* style = test::getValueForConfig<Style>(table.get(), u"@app:style/Foo",
+    Style* style = test::getValueForConfig<Style>(table.get(), "@app:style/Foo",
                                                   test::parseConfigOrDie("v4"));
     ASSERT_NE(style, nullptr);
     ASSERT_EQ(style->entries.size(), 1u);
     AAPT_ASSERT_TRUE(style->entries.front().key.name);
     EXPECT_EQ(style->entries.front().key.name.value(),
-              test::parseNameOrDie(u"@android:attr/onClick"));
+              test::parseNameOrDie("@android:attr/onClick"));
 
-    style = test::getValueForConfig<Style>(table.get(), u"@app:style/Foo",
+    style = test::getValueForConfig<Style>(table.get(), "@app:style/Foo",
                                            test::parseConfigOrDie("v13"));
     ASSERT_NE(style, nullptr);
     ASSERT_EQ(style->entries.size(), 2u);
     AAPT_ASSERT_TRUE(style->entries[0].key.name);
     EXPECT_EQ(style->entries[0].key.name.value(),
-              test::parseNameOrDie(u"@android:attr/onClick"));
+              test::parseNameOrDie("@android:attr/onClick"));
     AAPT_ASSERT_TRUE(style->entries[1].key.name);
     EXPECT_EQ(style->entries[1].key.name.value(),
-                  test::parseNameOrDie(u"@android:attr/requiresSmallestWidthDp"));
+                  test::parseNameOrDie("@android:attr/requiresSmallestWidthDp"));
 
-    style = test::getValueForConfig<Style>(table.get(), u"@app:style/Foo",
+    style = test::getValueForConfig<Style>(table.get(), "@app:style/Foo",
                                            test::parseConfigOrDie("v17"));
     ASSERT_NE(style, nullptr);
     ASSERT_EQ(style->entries.size(), 3u);
     AAPT_ASSERT_TRUE(style->entries[0].key.name);
     EXPECT_EQ(style->entries[0].key.name.value(),
-                  test::parseNameOrDie(u"@android:attr/onClick"));
+                  test::parseNameOrDie("@android:attr/onClick"));
     AAPT_ASSERT_TRUE(style->entries[1].key.name);
     EXPECT_EQ(style->entries[1].key.name.value(),
-                  test::parseNameOrDie(u"@android:attr/requiresSmallestWidthDp"));
+                  test::parseNameOrDie("@android:attr/requiresSmallestWidthDp"));
     AAPT_ASSERT_TRUE(style->entries[2].key.name);
     EXPECT_EQ(style->entries[2].key.name.value(),
-                  test::parseNameOrDie(u"@android:attr/paddingStart"));
+                  test::parseNameOrDie("@android:attr/paddingStart"));
 
-    style = test::getValueForConfig<Style>(table.get(), u"@app:style/Foo",
+    style = test::getValueForConfig<Style>(table.get(), "@app:style/Foo",
                                            test::parseConfigOrDie("v21"));
     ASSERT_NE(style, nullptr);
     ASSERT_EQ(style->entries.size(), 1u);
     AAPT_ASSERT_TRUE(style->entries.front().key.name);
     EXPECT_EQ(style->entries.front().key.name.value(),
-              test::parseNameOrDie(u"@android:attr/paddingEnd"));
+              test::parseNameOrDie("@android:attr/paddingEnd"));
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp
index 9411053..8093e6a 100644
--- a/tools/aapt2/link/Link.cpp
+++ b/tools/aapt2/link/Link.cpp
@@ -58,8 +58,8 @@
     std::vector<std::string> includePaths;
     std::vector<std::string> overlayFiles;
     Maybe<std::string> generateJavaClassPath;
-    Maybe<std::u16string> customJavaPackage;
-    std::set<std::u16string> extraJavaPackages;
+    Maybe<std::string> customJavaPackage;
+    std::set<std::string> extraJavaPackages;
     Maybe<std::string> generateProguardRulesPath;
     Maybe<std::string> generateMainDexProguardRulesPath;
     bool noAutoVersion = false;
@@ -72,7 +72,7 @@
     bool autoAddOverlay = false;
     bool doNotCompressAnything = false;
     std::vector<std::string> extensionsToNotCompress;
-    Maybe<std::u16string> privateSymbols;
+    Maybe<std::string> privateSymbols;
     ManifestFixerOptions manifestFixerOptions;
     std::unordered_set<std::string> products;
     TableSplitterOptions tableSplitterOptions;
@@ -95,11 +95,11 @@
         mNameMangler = NameMangler(policy);
     }
 
-    const std::u16string& getCompilationPackage() override {
+    const std::string& getCompilationPackage() override {
         return mCompilationPackage;
     }
 
-    void setCompilationPackage(const StringPiece16& packageName) {
+    void setCompilationPackage(const StringPiece& packageName) {
         mCompilationPackage = packageName.toString();
     }
 
@@ -134,7 +134,7 @@
 private:
     StdErrDiagnostics mDiagnostics;
     NameMangler mNameMangler;
-    std::u16string mCompilationPackage;
+    std::string mCompilationPackage;
     uint8_t mPackageId = 0x0;
     SymbolTable mSymbols;
     bool mVerbose = false;
@@ -155,7 +155,7 @@
     size_t bufferSize = data->size();
 
     // If the file ends with .flat, we must strip off the CompiledFileHeader from it.
-    if (util::stringEndsWith<char>(file->getSource().path, ".flat")) {
+    if (util::stringEndsWith(file->getSource().path, ".flat")) {
         CompiledFileInputStream inputStream(data->data(), data->size());
         if (!inputStream.CompiledFile()) {
             context->getDiagnostics()->error(DiagMessage(file->getSource())
@@ -213,16 +213,6 @@
     return false;
 }
 
-/*static std::unique_ptr<ResourceTable> loadTable(const Source& source, const void* data, size_t len,
-                                                IDiagnostics* diag) {
-    std::unique_ptr<ResourceTable> table = util::make_unique<ResourceTable>();
-    BinaryResourceParser parser(diag, table.get(), source, data, len);
-    if (!parser.parse()) {
-        return {};
-    }
-    return table;
-}*/
-
 static std::unique_ptr<ResourceTable> loadTableFromPb(const Source& source,
                                                       const void* data, size_t len,
                                                       IDiagnostics* diag) {
@@ -329,7 +319,7 @@
     }
 
     for (const std::string& extension : mOptions.extensionsToNotCompress) {
-        if (util::stringEndsWith<char>(str, extension)) {
+        if (util::stringEndsWith(str, extension)) {
             return 0;
         }
     }
@@ -352,7 +342,7 @@
         return false;
     }
 
-    if (util::stringEndsWith<char>(srcPath, ".flat")) {
+    if (util::stringEndsWith(srcPath, ".flat")) {
         outFileOp->xmlToFlatten = loadBinaryXmlSkipFileExport(file->getSource(),
                                                               data->data(), data->size(),
                                                               mContext->getDiagnostics());
@@ -384,7 +374,7 @@
             // Skip this if it is a vector or animated-vector.
             xml::Element* el = xml::findRootElement(outFileOp->xmlToFlatten.get());
             if (el && el->namespaceUri.empty()) {
-                if (el->name == u"vector" || el->name == u"animated-vector") {
+                if (el->name == "vector" || el->name == "animated-vector") {
                     // We are NOT going to version this file.
                     outFileOp->skipVersion = true;
                     return true;
@@ -413,8 +403,8 @@
                                                      << versionedFileDesc.config << "'");
                 }
 
-                std::u16string genPath = util::utf8ToUtf16(ResourceUtils::buildResourceFileName(
-                        versionedFileDesc, mContext->getNameMangler()));
+                std::string genPath = ResourceUtils::buildResourceFileName(
+                        versionedFileDesc, mContext->getNameMangler());
 
                 bool added = table->addFileReferenceAllowMangled(versionedFileDesc.name,
                                                                  versionedFileDesc.config,
@@ -438,7 +428,7 @@
  */
 bool ResourceFileFlattener::flatten(ResourceTable* table, IArchiveWriter* archiveWriter) {
     bool error = false;
-    std::map<std::pair<ConfigDescription, StringPiece16>, FileOperation> configSortedFiles;
+    std::map<std::pair<ConfigDescription, StringPiece>, FileOperation> configSortedFiles;
 
     for (auto& pkg : table->packages) {
         for (auto& type : pkg->types) {
@@ -463,12 +453,12 @@
                     }
 
                     FileOperation fileOp;
-                    fileOp.dstPath = util::utf16ToUtf8(*fileRef->path);
+                    fileOp.dstPath = *fileRef->path;
 
                     const StringPiece srcPath = file->getSource().path;
                     if (type->type != ResourceType::kRaw &&
-                            (util::stringEndsWith<char>(srcPath, ".xml.flat") ||
-                            util::stringEndsWith<char>(srcPath, ".xml"))) {
+                            (util::stringEndsWith(srcPath, ".xml.flat") ||
+                            util::stringEndsWith(srcPath, ".xml"))) {
                         ResourceFile fileDesc;
                         fileDesc.config = configValue->config;
                         fileDesc.name = ResourceName(pkg->name, type->type, entry->name);
@@ -486,7 +476,7 @@
                     // we end up copying the string in the std::make_pair() method, then creating
                     // a StringPiece16 from the copy, which would cause us to end up referencing
                     // garbage in the map.
-                    const StringPiece16 entryName(entry->name);
+                    const StringPiece entryName(entry->name);
                     configSortedFiles[std::make_pair(configValue->config, entryName)] =
                                       std::move(fileOp);
                 }
@@ -592,12 +582,12 @@
         if (xml::Element* manifestEl = xml::findRootElement(xmlRes->root.get())) {
             AppInfo appInfo;
 
-            if (!manifestEl->namespaceUri.empty() || manifestEl->name != u"manifest") {
+            if (!manifestEl->namespaceUri.empty() || manifestEl->name != "manifest") {
                 diag->error(DiagMessage(xmlRes->file.source) << "root tag must be <manifest>");
                 return {};
             }
 
-            xml::Attribute* packageAttr = manifestEl->findAttribute({}, u"package");
+            xml::Attribute* packageAttr = manifestEl->findAttribute({}, "package");
             if (!packageAttr) {
                 diag->error(DiagMessage(xmlRes->file.source)
                             << "<manifest> must have a 'package' attribute");
@@ -606,9 +596,9 @@
 
             appInfo.package = packageAttr->value;
 
-            if (xml::Element* usesSdkEl = manifestEl->findChild({}, u"uses-sdk")) {
+            if (xml::Element* usesSdkEl = manifestEl->findChild({}, "uses-sdk")) {
                 if (xml::Attribute* minSdk =
-                        usesSdkEl->findAttribute(xml::kSchemaAndroid, u"minSdkVersion")) {
+                        usesSdkEl->findAttribute(xml::kSchemaAndroid, "minSdkVersion")) {
                     appInfo.minSdkVersion = minSdk->value;
                 }
             }
@@ -642,7 +632,7 @@
                             // Special case the occurrence of an ID that is being generated for the
                             // 'android' package. This is due to legacy reasons.
                             if (valueCast<Id>(configValue->value.get()) &&
-                                    package->name == u"android") {
+                                    package->name == "android") {
                                 mContext->getDiagnostics()->warn(
                                         DiagMessage(configValue->value->getSource())
                                         << "generated id '" << resName
@@ -752,14 +742,14 @@
         return true;
     }
 
-    bool writeJavaFile(ResourceTable* table, const StringPiece16& packageNameToGenerate,
-                       const StringPiece16& outPackage, JavaClassGeneratorOptions javaOptions) {
+    bool writeJavaFile(ResourceTable* table, const StringPiece& packageNameToGenerate,
+                       const StringPiece& outPackage, JavaClassGeneratorOptions javaOptions) {
         if (!mOptions.generateJavaClassPath) {
             return true;
         }
 
         std::string outPath = mOptions.generateJavaClassPath.value();
-        file::appendPath(&outPath, file::packageToPath(util::utf16ToUtf8(outPackage)));
+        file::appendPath(&outPath, file::packageToPath(outPackage));
         if (!file::mkdirs(outPath)) {
             mContext->getDiagnostics()->error(
                     DiagMessage() << "failed to create directory '" << outPath << "'");
@@ -813,7 +803,7 @@
             manifestClass->getCommentBuilder()->appendComment(properAnnotation);
         }
 
-        const std::string packageUtf8 = util::utf16ToUtf8(mContext->getCompilationPackage());
+        const std::string& packageUtf8 = mContext->getCompilationPackage();
 
         std::string outPath = mOptions.generateJavaClassPath.value();
         file::appendPath(&outPath, file::packageToPath(packageUtf8));
@@ -921,7 +911,7 @@
                 mOptions.extraJavaPackages.insert(pkg->name);
             }
 
-            pkg->name = u"";
+            pkg->name = "";
             if (override) {
                 result = mTableMerger->mergeOverlay(Source(input), table.get(), collection.get());
             } else {
@@ -1059,12 +1049,12 @@
      * Otherwise the files is processed on its own.
      */
     bool mergePath(const std::string& path, bool override) {
-        if (util::stringEndsWith<char>(path, ".flata") ||
-                util::stringEndsWith<char>(path, ".jar") ||
-                util::stringEndsWith<char>(path, ".jack") ||
-                util::stringEndsWith<char>(path, ".zip")) {
+        if (util::stringEndsWith(path, ".flata") ||
+                util::stringEndsWith(path, ".jar") ||
+                util::stringEndsWith(path, ".jack") ||
+                util::stringEndsWith(path, ".zip")) {
             return mergeArchive(path, override);
-        } else if (util::stringEndsWith<char>(path, ".apk")) {
+        } else if (util::stringEndsWith(path, ".apk")) {
             return mergeStaticLibrary(path, override);
         }
 
@@ -1085,10 +1075,10 @@
      */
     bool mergeFile(io::IFile* file, bool override) {
         const Source& src = file->getSource();
-        if (util::stringEndsWith<char>(src.path, ".arsc.flat")) {
+        if (util::stringEndsWith(src.path, ".arsc.flat")) {
             return mergeResourceTable(file, override);
 
-        } else if (util::stringEndsWith<char>(src.path, ".flat")){
+        } else if (util::stringEndsWith(src.path, ".flat")){
             // Try opening the file and looking for an Export header.
             std::unique_ptr<io::IData> data = file->openAsData();
             if (!data) {
@@ -1135,7 +1125,7 @@
 
         mContext->setNameManglerPolicy(NameManglerPolicy{ mContext->getCompilationPackage() });
 
-        if (mContext->getCompilationPackage() == u"android") {
+        if (mContext->getCompilationPackage() == "android") {
             mContext->setPackageId(0x01);
         } else {
             mContext->setPackageId(0x7f);
@@ -1370,8 +1360,8 @@
                 options.useFinal = false;
             }
 
-            const StringPiece16 actualPackage = mContext->getCompilationPackage();
-            StringPiece16 outputPackage = mContext->getCompilationPackage();
+            const StringPiece actualPackage = mContext->getCompilationPackage();
+            StringPiece outputPackage = mContext->getCompilationPackage();
             if (mOptions.customJavaPackage) {
                 // Override the output java package to the custom one.
                 outputPackage = mOptions.customJavaPackage.value();
@@ -1395,7 +1385,7 @@
                 return 1;
             }
 
-            for (const std::u16string& extraPackage : mOptions.extraJavaPackages) {
+            for (const std::string& extraPackage : mOptions.extraJavaPackages) {
                 if (!writeJavaFile(&mFinalTable, actualPackage, extraPackage, options)) {
                     return 1;
                 }
@@ -1440,11 +1430,6 @@
     LinkContext context;
     LinkOptions options;
     std::vector<std::string> overlayArgList;
-    Maybe<std::string> privateSymbolsPackage;
-    Maybe<std::string> minSdkVersion, targetSdkVersion;
-    Maybe<std::string> renameManifestPackage, renameInstrumentationTargetPackage;
-    Maybe<std::string> versionCode, versionName;
-    Maybe<std::string> customJavaPackage;
     std::vector<std::string> extraJavaPackages;
     Maybe<std::string> configs;
     Maybe<std::string> preferredDensity;
@@ -1489,14 +1474,19 @@
                             "by -o",
                             &options.outputToDirectory)
             .optionalFlag("--min-sdk-version", "Default minimum SDK version to use for "
-                          "AndroidManifest.xml", &minSdkVersion)
+                          "AndroidManifest.xml",
+                          &options.manifestFixerOptions.minSdkVersionDefault)
             .optionalFlag("--target-sdk-version", "Default target SDK version to use for "
-                          "AndroidManifest.xml", &targetSdkVersion)
+                          "AndroidManifest.xml",
+                          &options.manifestFixerOptions.targetSdkVersionDefault)
             .optionalFlag("--version-code", "Version code (integer) to inject into the "
-                          "AndroidManifest.xml if none is present", &versionCode)
+                          "AndroidManifest.xml if none is present",
+                          &options.manifestFixerOptions.versionCodeDefault)
             .optionalFlag("--version-name", "Version name to inject into the AndroidManifest.xml "
-                          "if none is present", &versionName)
-            .optionalSwitch("--static-lib", "Generate a static Android library", &options.staticLib)
+                          "if none is present",
+                          &options.manifestFixerOptions.versionNameDefault)
+            .optionalSwitch("--static-lib", "Generate a static Android library",
+                            &options.staticLib)
             .optionalSwitch("--no-static-lib-packages",
                             "Merge all library resources under the app's package",
                             &options.noStaticLibPackages)
@@ -1506,24 +1496,29 @@
             .optionalFlag("--private-symbols", "Package name to use when generating R.java for "
                           "private symbols.\n"
                           "If not specified, public and private symbols will use the application's "
-                          "package name", &privateSymbolsPackage)
+                          "package name",
+                          &options.privateSymbols)
             .optionalFlag("--custom-package", "Custom Java package under which to generate R.java",
-                          &customJavaPackage)
+                          &options.customJavaPackage)
             .optionalFlagList("--extra-packages", "Generate the same R.java but with different "
-                              "package names", &extraJavaPackages)
+                              "package names",
+                              &extraJavaPackages)
             .optionalFlagList("--add-javadoc-annotation", "Adds a JavaDoc annotation to all "
-                            "generated Java classes", &options.javadocAnnotations)
+                            "generated Java classes",
+                            &options.javadocAnnotations)
             .optionalSwitch("--auto-add-overlay", "Allows the addition of new resources in "
-                            "overlays without <add-resource> tags", &options.autoAddOverlay)
+                            "overlays without <add-resource> tags",
+                            &options.autoAddOverlay)
             .optionalFlag("--rename-manifest-package", "Renames the package in AndroidManifest.xml",
-                          &renameManifestPackage)
+                          &options.manifestFixerOptions.renameManifestPackage)
             .optionalFlag("--rename-instrumentation-target-package",
                           "Changes the name of the target package for instrumentation. Most useful "
                           "when used\nin conjunction with --rename-manifest-package",
-                          &renameInstrumentationTargetPackage)
+                          &options.manifestFixerOptions.renameInstrumentationTargetPackage)
             .optionalFlagList("-0", "File extensions not to compress",
                               &options.extensionsToNotCompress)
-            .optionalSwitch("-v", "Enables verbose logging", &verbose);
+            .optionalSwitch("-v", "Enables verbose logging",
+                            &verbose);
 
     if (!flags.parse("aapt2 link", args, &std::cerr)) {
         return 1;
@@ -1532,7 +1527,7 @@
     // Expand all argument-files passed into the command line. These start with '@'.
     std::vector<std::string> argList;
     for (const std::string& arg : flags.getArgs()) {
-        if (util::stringStartsWith<char>(arg, "@")) {
+        if (util::stringStartsWith(arg, "@")) {
             const std::string path = arg.substr(1, arg.size() - 1);
             std::string error;
             if (!file::appendArgsFromFile(path, &argList, &error)) {
@@ -1546,7 +1541,7 @@
 
     // Expand all argument-files passed to -R.
     for (const std::string& arg : overlayArgList) {
-        if (util::stringStartsWith<char>(arg, "@")) {
+        if (util::stringStartsWith(arg, "@")) {
             const std::string path = arg.substr(1, arg.size() - 1);
             std::string error;
             if (!file::appendArgsFromFile(path, &options.overlayFiles, &error)) {
@@ -1562,52 +1557,16 @@
         context.setVerbose(verbose);
     }
 
-    if (privateSymbolsPackage) {
-        options.privateSymbols = util::utf8ToUtf16(privateSymbolsPackage.value());
-    }
-
-    if (minSdkVersion) {
-        options.manifestFixerOptions.minSdkVersionDefault =
-                util::utf8ToUtf16(minSdkVersion.value());
-    }
-
-    if (targetSdkVersion) {
-        options.manifestFixerOptions.targetSdkVersionDefault =
-                util::utf8ToUtf16(targetSdkVersion.value());
-    }
-
-    if (renameManifestPackage) {
-        options.manifestFixerOptions.renameManifestPackage =
-                util::utf8ToUtf16(renameManifestPackage.value());
-    }
-
-    if (renameInstrumentationTargetPackage) {
-        options.manifestFixerOptions.renameInstrumentationTargetPackage =
-                util::utf8ToUtf16(renameInstrumentationTargetPackage.value());
-    }
-
-    if (versionCode) {
-        options.manifestFixerOptions.versionCodeDefault = util::utf8ToUtf16(versionCode.value());
-    }
-
-    if (versionName) {
-        options.manifestFixerOptions.versionNameDefault = util::utf8ToUtf16(versionName.value());
-    }
-
-    if (customJavaPackage) {
-        options.customJavaPackage = util::utf8ToUtf16(customJavaPackage.value());
-    }
-
     // Populate the set of extra packages for which to generate R.java.
     for (std::string& extraPackage : extraJavaPackages) {
         // A given package can actually be a colon separated list of packages.
         for (StringPiece package : util::split(extraPackage, ':')) {
-            options.extraJavaPackages.insert(util::utf8ToUtf16(package));
+            options.extraJavaPackages.insert(package.toString());
         }
     }
 
     if (productList) {
-        for (StringPiece product : util::tokenize<char>(productList.value(), ',')) {
+        for (StringPiece product : util::tokenize(productList.value(), ',')) {
             if (product != "" && product != "default") {
                 options.products.insert(product.toString());
             }
@@ -1616,7 +1575,7 @@
 
     AxisConfigFilter filter;
     if (configs) {
-        for (const StringPiece& configStr : util::tokenize<char>(configs.value(), ',')) {
+        for (const StringPiece& configStr : util::tokenize(configs.value(), ',')) {
             ConfigDescription config;
             LocaleValue lv;
             if (lv.initFromFilterString(configStr)) {
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index db6e06d..ef09535 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -32,11 +32,12 @@
     // We allow unqualified class names (ie: .HelloActivity)
     // Since we don't know the package name, we can just make a fake one here and
     // the test will be identical as long as the real package name is valid too.
-    Maybe<std::u16string> fullyQualifiedClassName =
-            util::getFullyQualifiedClassName(u"a", attr->value);
+    Maybe<std::string> fullyQualifiedClassName =
+            util::getFullyQualifiedClassName("a", attr->value);
 
-    StringPiece16 qualifiedClassName = fullyQualifiedClassName
+    StringPiece qualifiedClassName = fullyQualifiedClassName
             ? fullyQualifiedClassName.value() : attr->value;
+
     if (!util::isJavaClassName(qualifiedClassName)) {
         diag->error(DiagMessage(el->lineNumber)
                     << "attribute 'android:name' in <"
@@ -47,14 +48,14 @@
 }
 
 static bool optionalNameIsJavaClassName(xml::Element* el, SourcePathDiagnostics* diag) {
-    if (xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, u"name")) {
+    if (xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, "name")) {
         return nameIsJavaClassName(el, attr, diag);
     }
     return true;
 }
 
 static bool requiredNameIsJavaClassName(xml::Element* el, SourcePathDiagnostics* diag) {
-    if (xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, u"name")) {
+    if (xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, "name")) {
         return nameIsJavaClassName(el, attr, diag);
     }
     diag->error(DiagMessage(el->lineNumber)
@@ -63,7 +64,7 @@
 }
 
 static bool verifyManifest(xml::Element* el, SourcePathDiagnostics* diag) {
-    xml::Attribute* attr = el->findAttribute({}, u"package");
+    xml::Attribute* attr = el->findAttribute({}, "package");
     if (!attr) {
         diag->error(DiagMessage(el->lineNumber) << "<manifest> tag is missing 'package' attribute");
         return false;
@@ -100,31 +101,31 @@
 
     // Common intent-filter actions.
     xml::XmlNodeAction intentFilterAction;
-    intentFilterAction[u"action"];
-    intentFilterAction[u"category"];
-    intentFilterAction[u"data"];
+    intentFilterAction["action"];
+    intentFilterAction["category"];
+    intentFilterAction["data"];
 
     // Common meta-data actions.
     xml::XmlNodeAction metaDataAction;
 
     // Manifest actions.
-    xml::XmlNodeAction& manifestAction = (*executor)[u"manifest"];
+    xml::XmlNodeAction& manifestAction = (*executor)["manifest"];
     manifestAction.action(verifyManifest);
     manifestAction.action([&](xml::Element* el) -> bool {
         if (mOptions.versionNameDefault) {
-            if (el->findAttribute(xml::kSchemaAndroid, u"versionName") == nullptr) {
+            if (el->findAttribute(xml::kSchemaAndroid, "versionName") == nullptr) {
                 el->attributes.push_back(xml::Attribute{
                         xml::kSchemaAndroid,
-                        u"versionName",
+                        "versionName",
                         mOptions.versionNameDefault.value() });
             }
         }
 
         if (mOptions.versionCodeDefault) {
-            if (el->findAttribute(xml::kSchemaAndroid, u"versionCode") == nullptr) {
+            if (el->findAttribute(xml::kSchemaAndroid, "versionCode") == nullptr) {
                 el->attributes.push_back(xml::Attribute{
                         xml::kSchemaAndroid,
-                        u"versionCode",
+                        "versionCode",
                         mOptions.versionCodeDefault.value() });
             }
         }
@@ -132,87 +133,87 @@
     });
 
     // Meta tags.
-    manifestAction[u"eat-comment"];
+    manifestAction["eat-comment"];
 
     // Uses-sdk actions.
-    manifestAction[u"uses-sdk"].action([&](xml::Element* el) -> bool {
+    manifestAction["uses-sdk"].action([&](xml::Element* el) -> bool {
         if (mOptions.minSdkVersionDefault &&
-                el->findAttribute(xml::kSchemaAndroid, u"minSdkVersion") == nullptr) {
+                el->findAttribute(xml::kSchemaAndroid, "minSdkVersion") == nullptr) {
             // There was no minSdkVersion defined and we have a default to assign.
             el->attributes.push_back(xml::Attribute{
-                    xml::kSchemaAndroid, u"minSdkVersion",
+                    xml::kSchemaAndroid, "minSdkVersion",
                     mOptions.minSdkVersionDefault.value() });
         }
 
         if (mOptions.targetSdkVersionDefault &&
-                el->findAttribute(xml::kSchemaAndroid, u"targetSdkVersion") == nullptr) {
+                el->findAttribute(xml::kSchemaAndroid, "targetSdkVersion") == nullptr) {
             // There was no targetSdkVersion defined and we have a default to assign.
             el->attributes.push_back(xml::Attribute{
-                    xml::kSchemaAndroid, u"targetSdkVersion",
+                    xml::kSchemaAndroid, "targetSdkVersion",
                     mOptions.targetSdkVersionDefault.value() });
         }
         return true;
     });
 
     // Instrumentation actions.
-    manifestAction[u"instrumentation"].action([&](xml::Element* el) -> bool {
+    manifestAction["instrumentation"].action([&](xml::Element* el) -> bool {
         if (!mOptions.renameInstrumentationTargetPackage) {
             return true;
         }
 
-        if (xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, u"targetPackage")) {
+        if (xml::Attribute* attr = el->findAttribute(xml::kSchemaAndroid, "targetPackage")) {
             attr->value = mOptions.renameInstrumentationTargetPackage.value();
         }
         return true;
     });
 
-    manifestAction[u"original-package"];
-    manifestAction[u"protected-broadcast"];
-    manifestAction[u"uses-permission"];
-    manifestAction[u"permission"];
-    manifestAction[u"permission-tree"];
-    manifestAction[u"permission-group"];
+    manifestAction["original-package"];
+    manifestAction["protected-broadcast"];
+    manifestAction["uses-permission"];
+    manifestAction["permission"];
+    manifestAction["permission-tree"];
+    manifestAction["permission-group"];
 
-    manifestAction[u"uses-configuration"];
-    manifestAction[u"uses-feature"];
-    manifestAction[u"supports-screens"];
-    manifestAction[u"compatible-screens"];
-    manifestAction[u"supports-gl-texture"];
+    manifestAction["uses-configuration"];
+    manifestAction["uses-feature"];
+    manifestAction["supports-screens"];
+    manifestAction["compatible-screens"];
+    manifestAction["supports-gl-texture"];
 
     // Application actions.
-    xml::XmlNodeAction& applicationAction = (*executor)[u"manifest"][u"application"];
+    xml::XmlNodeAction& applicationAction = manifestAction["application"];
     applicationAction.action(optionalNameIsJavaClassName);
 
     // Uses library actions.
-    applicationAction[u"uses-library"];
+    applicationAction["uses-library"];
 
     // Meta-data.
-    applicationAction[u"meta-data"] = metaDataAction;
+    applicationAction["meta-data"] = metaDataAction;
 
     // Activity actions.
-    applicationAction[u"activity"].action(requiredNameIsJavaClassName);
-    applicationAction[u"activity"][u"intent-filter"] = intentFilterAction;
-    applicationAction[u"activity"][u"meta-data"] = metaDataAction;
+    applicationAction["activity"].action(requiredNameIsJavaClassName);
+    applicationAction["activity"]["intent-filter"] = intentFilterAction;
+    applicationAction["activity"]["meta-data"] = metaDataAction;
 
     // Activity alias actions.
-    applicationAction[u"activity-alias"][u"intent-filter"] = intentFilterAction;
-    applicationAction[u"activity-alias"][u"meta-data"] = metaDataAction;
+    applicationAction["activity-alias"]["intent-filter"] = intentFilterAction;
+    applicationAction["activity-alias"]["meta-data"] = metaDataAction;
 
     // Service actions.
-    applicationAction[u"service"].action(requiredNameIsJavaClassName);
-    applicationAction[u"service"][u"intent-filter"] = intentFilterAction;
-    applicationAction[u"service"][u"meta-data"] = metaDataAction;
+    applicationAction["service"].action(requiredNameIsJavaClassName);
+    applicationAction["service"]["intent-filter"] = intentFilterAction;
+    applicationAction["service"]["meta-data"] = metaDataAction;
 
     // Receiver actions.
-    applicationAction[u"receiver"].action(requiredNameIsJavaClassName);
-    applicationAction[u"receiver"][u"intent-filter"] = intentFilterAction;
-    applicationAction[u"receiver"][u"meta-data"] = metaDataAction;
+    applicationAction["receiver"].action(requiredNameIsJavaClassName);
+    applicationAction["receiver"]["intent-filter"] = intentFilterAction;
+    applicationAction["receiver"]["meta-data"] = metaDataAction;
 
     // Provider actions.
-    applicationAction[u"provider"].action(requiredNameIsJavaClassName);
-    applicationAction[u"provider"][u"grant-uri-permissions"];
-    applicationAction[u"provider"][u"meta-data"] = metaDataAction;
-    applicationAction[u"provider"][u"path-permissions"];
+    applicationAction["provider"].action(requiredNameIsJavaClassName);
+    applicationAction["provider"]["grant-uri-permissions"];
+    applicationAction["provider"]["meta-data"] = metaDataAction;
+    applicationAction["provider"]["path-permissions"];
     return true;
 }
 
@@ -220,14 +221,14 @@
 public:
     using xml::Visitor::visit;
 
-    explicit FullyQualifiedClassNameVisitor(const StringPiece16& package) : mPackage(package) {
+    explicit FullyQualifiedClassNameVisitor(const StringPiece& package) : mPackage(package) {
     }
 
     void visit(xml::Element* el) override {
         for (xml::Attribute& attr : el->attributes) {
             if (attr.namespaceUri == xml::kSchemaAndroid
                     && mClassAttributes.find(attr.name) != mClassAttributes.end()) {
-                if (Maybe<std::u16string> newValue =
+                if (Maybe<std::string> newValue =
                         util::getFullyQualifiedClassName(mPackage, attr.value)) {
                     attr.value = std::move(newValue.value());
                 }
@@ -239,17 +240,17 @@
     }
 
 private:
-    StringPiece16 mPackage;
-    std::unordered_set<StringPiece16> mClassAttributes = { u"name" };
+    StringPiece mPackage;
+    std::unordered_set<StringPiece> mClassAttributes = { "name" };
 };
 
-static bool renameManifestPackage(const StringPiece16& packageOverride, xml::Element* manifestEl) {
-    xml::Attribute* attr = manifestEl->findAttribute({}, u"package");
+static bool renameManifestPackage(const StringPiece& packageOverride, xml::Element* manifestEl) {
+    xml::Attribute* attr = manifestEl->findAttribute({}, "package");
 
     // We've already verified that the manifest element is present, with a package name specified.
     assert(attr);
 
-    std::u16string originalPackage = std::move(attr->value);
+    std::string originalPackage = std::move(attr->value);
     attr->value = packageOverride.toString();
 
     FullyQualifiedClassNameVisitor visitor(originalPackage);
@@ -259,17 +260,17 @@
 
 bool ManifestFixer::consume(IAaptContext* context, xml::XmlResource* doc) {
     xml::Element* root = xml::findRootElement(doc->root.get());
-    if (!root || !root->namespaceUri.empty() || root->name != u"manifest") {
+    if (!root || !root->namespaceUri.empty() || root->name != "manifest") {
         context->getDiagnostics()->error(DiagMessage(doc->file.source)
                                          << "root tag must be <manifest>");
         return false;
     }
 
     if ((mOptions.minSdkVersionDefault || mOptions.targetSdkVersionDefault)
-            && root->findChild({}, u"uses-sdk") == nullptr) {
+            && root->findChild({}, "uses-sdk") == nullptr) {
         // Auto insert a <uses-sdk> element.
         std::unique_ptr<xml::Element> usesSdk = util::make_unique<xml::Element>();
-        usesSdk->name = u"uses-sdk";
+        usesSdk->name = "uses-sdk";
         root->addChild(std::move(usesSdk));
     }
 
diff --git a/tools/aapt2/link/ManifestFixer.h b/tools/aapt2/link/ManifestFixer.h
index 4d9356a..55b587e 100644
--- a/tools/aapt2/link/ManifestFixer.h
+++ b/tools/aapt2/link/ManifestFixer.h
@@ -27,12 +27,12 @@
 namespace aapt {
 
 struct ManifestFixerOptions {
-    Maybe<std::u16string> minSdkVersionDefault;
-    Maybe<std::u16string> targetSdkVersionDefault;
-    Maybe<std::u16string> renameManifestPackage;
-    Maybe<std::u16string> renameInstrumentationTargetPackage;
-    Maybe<std::u16string> versionNameDefault;
-    Maybe<std::u16string> versionCodeDefault;
+    Maybe<std::string> minSdkVersionDefault;
+    Maybe<std::string> targetSdkVersionDefault;
+    Maybe<std::string> renameManifestPackage;
+    Maybe<std::string> renameInstrumentationTargetPackage;
+    Maybe<std::string> versionNameDefault;
+    Maybe<std::string> versionCodeDefault;
 };
 
 /**
diff --git a/tools/aapt2/link/ManifestFixer_test.cpp b/tools/aapt2/link/ManifestFixer_test.cpp
index f993720..6d52c4c 100644
--- a/tools/aapt2/link/ManifestFixer_test.cpp
+++ b/tools/aapt2/link/ManifestFixer_test.cpp
@@ -27,25 +27,25 @@
 
     void SetUp() override {
         mContext = test::ContextBuilder()
-                .setCompilationPackage(u"android")
+                .setCompilationPackage("android")
                 .setPackageId(0x01)
-                .setNameManglerPolicy(NameManglerPolicy{ u"android" })
+                .setNameManglerPolicy(NameManglerPolicy{ "android" })
                 .addSymbolSource(test::StaticSymbolSourceBuilder()
-                        .addSymbol(u"@android:attr/package", ResourceId(0x01010000),
+                        .addSymbol("@android:attr/package", ResourceId(0x01010000),
                                    test::AttributeBuilder()
                                         .setTypeMask(android::ResTable_map::TYPE_STRING)
                                         .build())
-                        .addSymbol(u"@android:attr/minSdkVersion", ResourceId(0x01010001),
+                        .addSymbol("@android:attr/minSdkVersion", ResourceId(0x01010001),
                                    test::AttributeBuilder()
                                         .setTypeMask(android::ResTable_map::TYPE_STRING |
                                                      android::ResTable_map::TYPE_INTEGER)
                                         .build())
-                        .addSymbol(u"@android:attr/targetSdkVersion", ResourceId(0x01010002),
+                        .addSymbol("@android:attr/targetSdkVersion", ResourceId(0x01010002),
                                    test::AttributeBuilder()
                                         .setTypeMask(android::ResTable_map::TYPE_STRING |
                                                      android::ResTable_map::TYPE_INTEGER)
                                         .build())
-                        .addSymbol(u"@android:string/str", ResourceId(0x01060000))
+                        .addSymbol("@android:string/str", ResourceId(0x01060000))
                         .build())
                 .build();
     }
@@ -83,7 +83,7 @@
 }
 
 TEST_F(ManifestFixerTest, UseDefaultSdkVersionsIfNonePresent) {
-    ManifestFixerOptions options = { std::u16string(u"8"), std::u16string(u"22") };
+    ManifestFixerOptions options = { std::string("8"), std::string("22") };
 
     std::unique_ptr<xml::XmlResource> doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -97,14 +97,14 @@
 
     el = xml::findRootElement(doc.get());
     ASSERT_NE(nullptr, el);
-    el = el->findChild({}, u"uses-sdk");
+    el = el->findChild({}, "uses-sdk");
     ASSERT_NE(nullptr, el);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"minSdkVersion");
+    attr = el->findAttribute(xml::kSchemaAndroid, "minSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"7", attr->value);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"targetSdkVersion");
+    EXPECT_EQ("7", attr->value);
+    attr = el->findAttribute(xml::kSchemaAndroid, "targetSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"21", attr->value);
+    EXPECT_EQ("21", attr->value);
 
     doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -115,14 +115,14 @@
 
     el = xml::findRootElement(doc.get());
     ASSERT_NE(nullptr, el);
-    el = el->findChild({}, u"uses-sdk");
+    el = el->findChild({}, "uses-sdk");
     ASSERT_NE(nullptr, el);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"minSdkVersion");
+    attr = el->findAttribute(xml::kSchemaAndroid, "minSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"8", attr->value);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"targetSdkVersion");
+    EXPECT_EQ("8", attr->value);
+    attr = el->findAttribute(xml::kSchemaAndroid, "targetSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"21", attr->value);
+    EXPECT_EQ("21", attr->value);
 
     doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -133,14 +133,14 @@
 
     el = xml::findRootElement(doc.get());
     ASSERT_NE(nullptr, el);
-    el = el->findChild({}, u"uses-sdk");
+    el = el->findChild({}, "uses-sdk");
     ASSERT_NE(nullptr, el);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"minSdkVersion");
+    attr = el->findAttribute(xml::kSchemaAndroid, "minSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"8", attr->value);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"targetSdkVersion");
+    EXPECT_EQ("8", attr->value);
+    attr = el->findAttribute(xml::kSchemaAndroid, "targetSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"22", attr->value);
+    EXPECT_EQ("22", attr->value);
 
     doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -149,19 +149,19 @@
 
     el = xml::findRootElement(doc.get());
     ASSERT_NE(nullptr, el);
-    el = el->findChild({}, u"uses-sdk");
+    el = el->findChild({}, "uses-sdk");
     ASSERT_NE(nullptr, el);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"minSdkVersion");
+    attr = el->findAttribute(xml::kSchemaAndroid, "minSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"8", attr->value);
-    attr = el->findAttribute(xml::kSchemaAndroid, u"targetSdkVersion");
+    EXPECT_EQ("8", attr->value);
+    attr = el->findAttribute(xml::kSchemaAndroid, "targetSdkVersion");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(u"22", attr->value);
+    EXPECT_EQ("22", attr->value);
 }
 
 TEST_F(ManifestFixerTest, RenameManifestPackageAndFullyQualifyClasses) {
     ManifestFixerOptions options;
-    options.renameManifestPackage = std::u16string(u"com.android");
+    options.renameManifestPackage = std::string("com.android");
 
     std::unique_ptr<xml::XmlResource> doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -178,40 +178,40 @@
 
     xml::Attribute* attr = nullptr;
 
-    attr = manifestEl->findAttribute({}, u"package");
+    attr = manifestEl->findAttribute({},"package");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(std::u16string(u"com.android"), attr->value);
+    EXPECT_EQ(std::string("com.android"), attr->value);
 
-    xml::Element* applicationEl = manifestEl->findChild({}, u"application");
+    xml::Element* applicationEl = manifestEl->findChild({}, "application");
     ASSERT_NE(nullptr, applicationEl);
 
-    attr = applicationEl->findAttribute(xml::kSchemaAndroid, u"name");
+    attr = applicationEl->findAttribute(xml::kSchemaAndroid, "name");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(std::u16string(u"android.MainApplication"), attr->value);
+    EXPECT_EQ(std::string("android.MainApplication"), attr->value);
 
-    attr = applicationEl->findAttribute({}, u"text");
+    attr = applicationEl->findAttribute({}, "text");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(std::u16string(u"hello"), attr->value);
+    EXPECT_EQ(std::string("hello"), attr->value);
 
     xml::Element* el;
-    el = applicationEl->findChild({}, u"activity");
+    el = applicationEl->findChild({}, "activity");
     ASSERT_NE(nullptr, el);
 
-    attr = el->findAttribute(xml::kSchemaAndroid, u"name");
+    attr = el->findAttribute(xml::kSchemaAndroid, "name");
     ASSERT_NE(nullptr, el);
-    EXPECT_EQ(std::u16string(u"android.activity.Start"), attr->value);
+    EXPECT_EQ(std::string("android.activity.Start"), attr->value);
 
-    el = applicationEl->findChild({}, u"receiver");
+    el = applicationEl->findChild({}, "receiver");
     ASSERT_NE(nullptr, el);
 
-    attr = el->findAttribute(xml::kSchemaAndroid, u"name");
+    attr = el->findAttribute(xml::kSchemaAndroid, "name");
     ASSERT_NE(nullptr, el);
-    EXPECT_EQ(std::u16string(u"com.google.android.Receiver"), attr->value);
+    EXPECT_EQ(std::string("com.google.android.Receiver"), attr->value);
 }
 
 TEST_F(ManifestFixerTest, RenameManifestInstrumentationPackageAndFullyQualifyTarget) {
     ManifestFixerOptions options;
-    options.renameInstrumentationTargetPackage = std::u16string(u"com.android");
+    options.renameInstrumentationTargetPackage = std::string("com.android");
 
     std::unique_ptr<xml::XmlResource> doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -223,18 +223,18 @@
     xml::Element* manifestEl = xml::findRootElement(doc.get());
     ASSERT_NE(nullptr, manifestEl);
 
-    xml::Element* instrumentationEl = manifestEl->findChild({}, u"instrumentation");
+    xml::Element* instrumentationEl = manifestEl->findChild({}, "instrumentation");
     ASSERT_NE(nullptr, instrumentationEl);
 
-    xml::Attribute* attr = instrumentationEl->findAttribute(xml::kSchemaAndroid, u"targetPackage");
+    xml::Attribute* attr = instrumentationEl->findAttribute(xml::kSchemaAndroid, "targetPackage");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(std::u16string(u"com.android"), attr->value);
+    EXPECT_EQ(std::string("com.android"), attr->value);
 }
 
 TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) {
     ManifestFixerOptions options;
-    options.versionNameDefault = std::u16string(u"Beta");
-    options.versionCodeDefault = std::u16string(u"0x10000000");
+    options.versionNameDefault = std::string("Beta");
+    options.versionCodeDefault = std::string("0x10000000");
 
     std::unique_ptr<xml::XmlResource> doc = verifyWithOptions(R"EOF(
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
@@ -244,13 +244,13 @@
     xml::Element* manifestEl = xml::findRootElement(doc.get());
     ASSERT_NE(nullptr, manifestEl);
 
-    xml::Attribute* attr = manifestEl->findAttribute(xml::kSchemaAndroid, u"versionName");
+    xml::Attribute* attr = manifestEl->findAttribute(xml::kSchemaAndroid, "versionName");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(std::u16string(u"Beta"), attr->value);
+    EXPECT_EQ(std::string("Beta"), attr->value);
 
-    attr = manifestEl->findAttribute(xml::kSchemaAndroid, u"versionCode");
+    attr = manifestEl->findAttribute(xml::kSchemaAndroid, "versionCode");
     ASSERT_NE(nullptr, attr);
-    EXPECT_EQ(std::u16string(u"0x10000000"), attr->value);
+    EXPECT_EQ(std::string("0x10000000"), attr->value);
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/link/PrivateAttributeMover_test.cpp b/tools/aapt2/link/PrivateAttributeMover_test.cpp
index dbe0c92..136e10b 100644
--- a/tools/aapt2/link/PrivateAttributeMover_test.cpp
+++ b/tools/aapt2/link/PrivateAttributeMover_test.cpp
@@ -15,10 +15,7 @@
  */
 
 #include "link/Linkers.h"
-#include "test/Builders.h"
-#include "test/Context.h"
-
-#include <gtest/gtest.h>
+#include "test/Test.h"
 
 namespace aapt {
 
@@ -26,45 +23,45 @@
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
 
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addSimple(u"@android:attr/publicA")
-            .addSimple(u"@android:attr/privateA")
-            .addSimple(u"@android:attr/publicB")
-            .addSimple(u"@android:attr/privateB")
-            .setSymbolState(u"@android:attr/publicA", ResourceId(0x01010000), SymbolState::kPublic)
-            .setSymbolState(u"@android:attr/publicB", ResourceId(0x01010000), SymbolState::kPublic)
+            .addSimple("@android:attr/publicA")
+            .addSimple("@android:attr/privateA")
+            .addSimple("@android:attr/publicB")
+            .addSimple("@android:attr/privateB")
+            .setSymbolState("@android:attr/publicA", ResourceId(0x01010000), SymbolState::kPublic)
+            .setSymbolState("@android:attr/publicB", ResourceId(0x01010000), SymbolState::kPublic)
             .build();
 
     PrivateAttributeMover mover;
     ASSERT_TRUE(mover.consume(context.get(), table.get()));
 
-    ResourceTablePackage* package = table->findPackage(u"android");
+    ResourceTablePackage* package = table->findPackage("android");
     ASSERT_NE(package, nullptr);
 
     ResourceTableType* type = package->findType(ResourceType::kAttr);
     ASSERT_NE(type, nullptr);
     ASSERT_EQ(type->entries.size(), 2u);
-    EXPECT_NE(type->findEntry(u"publicA"), nullptr);
-    EXPECT_NE(type->findEntry(u"publicB"), nullptr);
+    EXPECT_NE(type->findEntry("publicA"), nullptr);
+    EXPECT_NE(type->findEntry("publicB"), nullptr);
 
     type = package->findType(ResourceType::kAttrPrivate);
     ASSERT_NE(type, nullptr);
     ASSERT_EQ(type->entries.size(), 2u);
-    EXPECT_NE(type->findEntry(u"privateA"), nullptr);
-    EXPECT_NE(type->findEntry(u"privateB"), nullptr);
+    EXPECT_NE(type->findEntry("privateA"), nullptr);
+    EXPECT_NE(type->findEntry("privateB"), nullptr);
 }
 
 TEST(PrivateAttributeMoverTest, LeavePrivateAttributesWhenNoPublicAttributesDefined) {
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
 
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addSimple(u"@android:attr/privateA")
-            .addSimple(u"@android:attr/privateB")
+            .addSimple("@android:attr/privateA")
+            .addSimple("@android:attr/privateB")
             .build();
 
     PrivateAttributeMover mover;
     ASSERT_TRUE(mover.consume(context.get(), table.get()));
 
-    ResourceTablePackage* package = table->findPackage(u"android");
+    ResourceTablePackage* package = table->findPackage("android");
     ASSERT_NE(package, nullptr);
 
     ResourceTableType* type = package->findType(ResourceType::kAttr);
diff --git a/tools/aapt2/link/ProductFilter_test.cpp b/tools/aapt2/link/ProductFilter_test.cpp
index f4f756a..811323b 100644
--- a/tools/aapt2/link/ProductFilter_test.cpp
+++ b/tools/aapt2/link/ProductFilter_test.cpp
@@ -15,10 +15,7 @@
  */
 
 #include "link/ProductFilter.h"
-#include "test/Builders.h"
-#include "test/Context.h"
-
-#include <gtest/gtest.h>
+#include "test/Test.h"
 
 namespace aapt {
 
@@ -29,23 +26,23 @@
     const ConfigDescription port = test::parseConfigOrDie("port");
 
     ResourceTable table;
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   land, "",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("land/default.xml")).build(),
                                   context->getDiagnostics()));
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   land, "tablet",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("land/tablet.xml")).build(),
                                   context->getDiagnostics()));
 
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   port, "",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("port/default.xml")).build(),
                                   context->getDiagnostics()));
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   port, "tablet",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("port/tablet.xml")).build(),
@@ -54,13 +51,13 @@
     ProductFilter filter({ "tablet" });
     ASSERT_TRUE(filter.consume(context.get(), &table));
 
-    EXPECT_EQ(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/one",
+    EXPECT_EQ(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/one",
                                                              land, ""));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/one",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/one",
                                                              land, "tablet"));
-    EXPECT_EQ(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/one",
+    EXPECT_EQ(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/one",
                                                              port, ""));
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/one",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/one",
                                                              port, "tablet"));
 }
 
@@ -68,12 +65,12 @@
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
 
     ResourceTable table;
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("default.xml")).build(),
                                   context->getDiagnostics()));
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "tablet",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("tablet.xml")).build(),
@@ -82,10 +79,10 @@
     ProductFilter filter({});
     ASSERT_TRUE(filter.consume(context.get(), &table));
 
-    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/one",
+    EXPECT_NE(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/one",
                                                              ConfigDescription::defaultConfig(),
                                                              ""));
-    EXPECT_EQ(nullptr, test::getValueForConfigAndProduct<Id>(&table, u"@android:string/one",
+    EXPECT_EQ(nullptr, test::getValueForConfigAndProduct<Id>(&table, "@android:string/one",
                                                              ConfigDescription::defaultConfig(),
                                                              "tablet"));
 }
@@ -94,17 +91,17 @@
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
 
     ResourceTable table;
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("default.xml")).build(),
                                   context->getDiagnostics()));
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "tablet",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("tablet.xml")).build(),
                                   context->getDiagnostics()));
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "no-sdcard",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("no-sdcard.xml")).build(),
@@ -118,12 +115,12 @@
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
 
     ResourceTable table;
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source(".xml")).build(),
                                   context->getDiagnostics()));
-    ASSERT_TRUE(table.addResource(test::parseNameOrDie(u"@android:string/one"),
+    ASSERT_TRUE(table.addResource(test::parseNameOrDie("@android:string/one"),
                                   ConfigDescription::defaultConfig(), "default",
                                   test::ValueBuilder<Id>()
                                           .setSource(Source("default.xml")).build(),
diff --git a/tools/aapt2/link/ReferenceLinker.cpp b/tools/aapt2/link/ReferenceLinker.cpp
index 66eb0df..fe886de 100644
--- a/tools/aapt2/link/ReferenceLinker.cpp
+++ b/tools/aapt2/link/ReferenceLinker.cpp
@@ -288,7 +288,7 @@
 
 struct EmptyDeclStack : public xml::IPackageDeclStack {
     Maybe<xml::ExtractedPackage> transformPackageAlias(
-            const StringPiece16& alias, const StringPiece16& localPackage) const override {
+            const StringPiece& alias, const StringPiece& localPackage) const override {
         if (alias.empty()) {
             return xml::ExtractedPackage{ localPackage.toString(), true /* private */ };
         }
diff --git a/tools/aapt2/link/ReferenceLinker_test.cpp b/tools/aapt2/link/ReferenceLinker_test.cpp
index 76b2309..17c2636 100644
--- a/tools/aapt2/link/ReferenceLinker_test.cpp
+++ b/tools/aapt2/link/ReferenceLinker_test.cpp
@@ -23,41 +23,41 @@
 
 TEST(ReferenceLinkerTest, LinkSimpleReferences) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addReference(u"@com.app.test:string/foo", ResourceId(0x7f020000),
-                          u"@com.app.test:string/bar")
+            .setPackageId("com.app.test", 0x7f)
+            .addReference("@com.app.test:string/foo", ResourceId(0x7f020000),
+                          "@com.app.test:string/bar")
 
             // Test use of local reference (w/o package name).
-            .addReference(u"@com.app.test:string/bar", ResourceId(0x7f020001), u"@string/baz")
+            .addReference("@com.app.test:string/bar", ResourceId(0x7f020001), "@string/baz")
 
-            .addReference(u"@com.app.test:string/baz", ResourceId(0x7f020002),
-                          u"@android:string/ok")
+            .addReference("@com.app.test:string/baz", ResourceId(0x7f020002),
+                          "@android:string/ok")
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"com.app.test")
+            .setCompilationPackage("com.app.test")
             .setPackageId(0x7f)
-            .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test" })
+            .setNameManglerPolicy(NameManglerPolicy{ "com.app.test" })
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
             .addSymbolSource(test::StaticSymbolSourceBuilder()
-                                     .addPublicSymbol(u"@android:string/ok", ResourceId(0x01040034))
+                                     .addPublicSymbol("@android:string/ok", ResourceId(0x01040034))
                                      .build())
             .build();
 
     ReferenceLinker linker;
     ASSERT_TRUE(linker.consume(context.get(), table.get()));
 
-    Reference* ref = test::getValue<Reference>(table.get(), u"@com.app.test:string/foo");
+    Reference* ref = test::getValue<Reference>(table.get(), "@com.app.test:string/foo");
     ASSERT_NE(ref, nullptr);
     AAPT_ASSERT_TRUE(ref->id);
     EXPECT_EQ(ref->id.value(), ResourceId(0x7f020001));
 
-    ref = test::getValue<Reference>(table.get(), u"@com.app.test:string/bar");
+    ref = test::getValue<Reference>(table.get(), "@com.app.test:string/bar");
     ASSERT_NE(ref, nullptr);
     AAPT_ASSERT_TRUE(ref->id);
     EXPECT_EQ(ref->id.value(), ResourceId(0x7f020002));
 
-    ref = test::getValue<Reference>(table.get(), u"@com.app.test:string/baz");
+    ref = test::getValue<Reference>(table.get(), "@com.app.test:string/baz");
     ASSERT_NE(ref, nullptr);
     AAPT_ASSERT_TRUE(ref->id);
     EXPECT_EQ(ref->id.value(), ResourceId(0x01040034));
@@ -65,39 +65,39 @@
 
 TEST(ReferenceLinkerTest, LinkStyleAttributes) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addValue(u"@com.app.test:style/Theme", test::StyleBuilder()
-                    .setParent(u"@android:style/Theme.Material")
-                    .addItem(u"@android:attr/foo", ResourceUtils::tryParseColor(u"#ff00ff"))
-                    .addItem(u"@android:attr/bar", {} /* placeholder */)
+            .setPackageId("com.app.test", 0x7f)
+            .addValue("@com.app.test:style/Theme", test::StyleBuilder()
+                    .setParent("@android:style/Theme.Material")
+                    .addItem("@android:attr/foo", ResourceUtils::tryParseColor("#ff00ff"))
+                    .addItem("@android:attr/bar", {} /* placeholder */)
                     .build())
             .build();
 
     {
         // We need to fill in the value for the attribute android:attr/bar after we build the
         // table, because we need access to the string pool.
-        Style* style = test::getValue<Style>(table.get(), u"@com.app.test:style/Theme");
+        Style* style = test::getValue<Style>(table.get(), "@com.app.test:style/Theme");
         ASSERT_NE(style, nullptr);
         style->entries.back().value = util::make_unique<RawString>(
-                table->stringPool.makeRef(u"one|two"));
+                table->stringPool.makeRef("one|two"));
     }
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"com.app.test")
+            .setCompilationPackage("com.app.test")
             .setPackageId(0x7f)
-            .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test" })
+            .setNameManglerPolicy(NameManglerPolicy{ "com.app.test" })
             .addSymbolSource(test::StaticSymbolSourceBuilder()
-                                     .addPublicSymbol(u"@android:style/Theme.Material",
+                                     .addPublicSymbol("@android:style/Theme.Material",
                                                       ResourceId(0x01060000))
-                                     .addPublicSymbol(u"@android:attr/foo", ResourceId(0x01010001),
+                                     .addPublicSymbol("@android:attr/foo", ResourceId(0x01010001),
                                                       test::AttributeBuilder()
                                                               .setTypeMask(ResTable_map::TYPE_COLOR)
                                                               .build())
-                                     .addPublicSymbol(u"@android:attr/bar", ResourceId(0x01010002),
+                                     .addPublicSymbol("@android:attr/bar", ResourceId(0x01010002),
                                                       test::AttributeBuilder()
                                                               .setTypeMask(ResTable_map::TYPE_FLAGS)
-                                                              .addItem(u"one", 0x01)
-                                                              .addItem(u"two", 0x02)
+                                                              .addItem("one", 0x01)
+                                                              .addItem("two", 0x02)
                                                               .build())
                                      .build())
             .build();
@@ -105,7 +105,7 @@
     ReferenceLinker linker;
     ASSERT_TRUE(linker.consume(context.get(), table.get()));
 
-    Style* style = test::getValue<Style>(table.get(), u"@com.app.test:style/Theme");
+    Style* style = test::getValue<Style>(table.get(), "@com.app.test:style/Theme");
     ASSERT_NE(style, nullptr);
     AAPT_ASSERT_TRUE(style->parent);
     AAPT_ASSERT_TRUE(style->parent.value().id);
@@ -124,11 +124,11 @@
 
 TEST(ReferenceLinkerTest, LinkMangledReferencesAndAttributes) {
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"com.app.test")
+            .setCompilationPackage("com.app.test")
             .setPackageId(0x7f)
-            .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test", { u"com.android.support" } })
+            .setNameManglerPolicy(NameManglerPolicy{ "com.app.test", { "com.android.support" } })
             .addSymbolSource(test::StaticSymbolSourceBuilder()
-                                     .addPublicSymbol(u"@com.app.test:attr/com.android.support$foo",
+                                     .addPublicSymbol("@com.app.test:attr/com.android.support$foo",
                                                       ResourceId(0x7f010000),
                                                       test::AttributeBuilder()
                                                               .setTypeMask(ResTable_map::TYPE_COLOR)
@@ -137,17 +137,17 @@
             .build();
 
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addValue(u"@com.app.test:style/Theme", ResourceId(0x7f020000),
-                      test::StyleBuilder().addItem(u"@com.android.support:attr/foo",
-                                                   ResourceUtils::tryParseColor(u"#ff0000"))
+            .setPackageId("com.app.test", 0x7f)
+            .addValue("@com.app.test:style/Theme", ResourceId(0x7f020000),
+                      test::StyleBuilder().addItem("@com.android.support:attr/foo",
+                                                   ResourceUtils::tryParseColor("#ff0000"))
                                           .build())
             .build();
 
     ReferenceLinker linker;
     ASSERT_TRUE(linker.consume(context.get(), table.get()));
 
-    Style* style = test::getValue<Style>(table.get(), u"@com.app.test:style/Theme");
+    Style* style = test::getValue<Style>(table.get(), "@com.app.test:style/Theme");
     ASSERT_NE(style, nullptr);
     ASSERT_EQ(1u, style->entries.size());
     AAPT_ASSERT_TRUE(style->entries.front().key.id);
@@ -156,18 +156,18 @@
 
 TEST(ReferenceLinkerTest, FailToLinkPrivateSymbols) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addReference(u"@com.app.test:string/foo", ResourceId(0x7f020000),
-                          u"@android:string/hidden")
+            .setPackageId("com.app.test", 0x7f)
+            .addReference("@com.app.test:string/foo", ResourceId(0x7f020000),
+                          "@android:string/hidden")
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"com.app.test")
+            .setCompilationPackage("com.app.test")
             .setPackageId(0x7f)
-            .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test" })
+            .setNameManglerPolicy(NameManglerPolicy{ "com.app.test" })
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
             .addSymbolSource(test::StaticSymbolSourceBuilder()
-                                     .addSymbol(u"@android:string/hidden", ResourceId(0x01040034))
+                                     .addSymbol("@android:string/hidden", ResourceId(0x01040034))
                                      .build())
             .build();
 
@@ -177,18 +177,18 @@
 
 TEST(ReferenceLinkerTest, FailToLinkPrivateMangledSymbols) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addReference(u"@com.app.test:string/foo", ResourceId(0x7f020000),
-                          u"@com.app.lib:string/hidden")
+            .setPackageId("com.app.test", 0x7f)
+            .addReference("@com.app.test:string/foo", ResourceId(0x7f020000),
+                          "@com.app.lib:string/hidden")
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"com.app.test")
+            .setCompilationPackage("com.app.test")
             .setPackageId(0x7f)
-            .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test", { u"com.app.lib" } })
+            .setNameManglerPolicy(NameManglerPolicy{ "com.app.test", { "com.app.lib" } })
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
             .addSymbolSource(test::StaticSymbolSourceBuilder()
-                                     .addSymbol(u"@com.app.test:string/com.app.lib$hidden",
+                                     .addSymbol("@com.app.test:string/com.app.lib$hidden",
                                                 ResourceId(0x7f040034))
                                      .build())
 
@@ -200,19 +200,19 @@
 
 TEST(ReferenceLinkerTest, FailToLinkPrivateStyleAttributes) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.test", 0x7f)
-            .addValue(u"@com.app.test:style/Theme", test::StyleBuilder()
-                    .addItem(u"@android:attr/hidden", ResourceUtils::tryParseColor(u"#ff00ff"))
+            .setPackageId("com.app.test", 0x7f)
+            .addValue("@com.app.test:style/Theme", test::StyleBuilder()
+                    .addItem("@android:attr/hidden", ResourceUtils::tryParseColor("#ff00ff"))
                     .build())
             .build();
 
     std::unique_ptr<IAaptContext> context = test::ContextBuilder()
-            .setCompilationPackage(u"com.app.test")
+            .setCompilationPackage("com.app.test")
             .setPackageId(0x7f)
-            .setNameManglerPolicy(NameManglerPolicy{ u"com.app.test" })
+            .setNameManglerPolicy(NameManglerPolicy{ "com.app.test" })
             .addSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
             .addSymbolSource(test::StaticSymbolSourceBuilder()
-                                     .addSymbol(u"@android:attr/hidden", ResourceId(0x01010001),
+                                     .addSymbol("@android:attr/hidden", ResourceId(0x01010001),
                                                 test::AttributeBuilder()
                                                         .setTypeMask(
                                                                 android::ResTable_map::TYPE_COLOR)
diff --git a/tools/aapt2/link/TableMerger.cpp b/tools/aapt2/link/TableMerger.cpp
index 7471e15..2cd2639 100644
--- a/tools/aapt2/link/TableMerger.cpp
+++ b/tools/aapt2/link/TableMerger.cpp
@@ -67,7 +67,7 @@
                 callback = [&](const ResourceNameRef& name, const ConfigDescription& config,
                                FileReference* newFile, FileReference* oldFile) -> bool {
                     // The old file's path points inside the APK, so we can use it as is.
-                    io::IFile* f = collection->findFile(util::utf16ToUtf8(*oldFile->path));
+                    io::IFile* f = collection->findFile(*oldFile->path);
                     if (!f) {
                         mContext->getDiagnostics()->error(DiagMessage(src) << "file '"
                                                           << *oldFile->path
@@ -95,7 +95,7 @@
 /**
  * This will merge and mangle resources from a static library.
  */
-bool TableMerger::mergeAndMangle(const Source& src, const StringPiece16& packageName,
+bool TableMerger::mergeAndMangle(const Source& src, const StringPiece& packageName,
                                  ResourceTable* table, io::IFileCollection* collection) {
     bool error = false;
     for (auto& package : table->packages) {
@@ -112,7 +112,7 @@
         auto callback = [&](const ResourceNameRef& name, const ConfigDescription& config,
                             FileReference* newFile, FileReference* oldFile) -> bool {
             // The old file's path points inside the APK, so we can use it as is.
-            io::IFile* f = collection->findFile(util::utf16ToUtf8(*oldFile->path));
+            io::IFile* f = collection->findFile(*oldFile->path);
             if (!f) {
                 mContext->getDiagnostics()->error(DiagMessage(src) << "file '" << *oldFile->path
                                                   << "' not found");
@@ -159,8 +159,8 @@
         for (auto& srcEntry : srcType->entries) {
             ResourceEntry* dstEntry;
             if (manglePackage) {
-                std::u16string mangledName = NameMangler::mangleEntry(srcPackage->name,
-                                                                      srcEntry->name);
+                std::string mangledName = NameMangler::mangleEntry(srcPackage->name,
+                                                                   srcEntry->name);
                 if (allowNewResources) {
                     dstEntry = dstType->findOrCreateEntry(mangledName);
                 } else {
@@ -275,13 +275,13 @@
     return !error;
 }
 
-std::unique_ptr<FileReference> TableMerger::cloneAndMangleFile(const std::u16string& package,
+std::unique_ptr<FileReference> TableMerger::cloneAndMangleFile(const std::string& package,
                                                                const FileReference& fileRef) {
 
-    StringPiece16 prefix, entry, suffix;
+    StringPiece prefix, entry, suffix;
     if (util::extractResFilePathParts(*fileRef.path, &prefix, &entry, &suffix)) {
-        std::u16string mangledEntry = NameMangler::mangleEntry(package, entry.toString());
-        std::u16string newPath = prefix.toString() + mangledEntry + suffix.toString();
+        std::string mangledEntry = NameMangler::mangleEntry(package, entry.toString());
+        std::string newPath = prefix.toString() + mangledEntry + suffix.toString();
         std::unique_ptr<FileReference> newFileRef = util::make_unique<FileReference>(
                 mMasterTable->stringPool.makeRef(newPath));
         newFileRef->setComment(fileRef.getComment());
@@ -293,8 +293,7 @@
 
 bool TableMerger::mergeFileImpl(const ResourceFile& fileDesc, io::IFile* file, bool overlay) {
     ResourceTable table;
-    std::u16string path = util::utf8ToUtf16(ResourceUtils::buildResourceFileName(fileDesc,
-                                                                                 nullptr));
+    std::string path = ResourceUtils::buildResourceFileName(fileDesc, nullptr);
     std::unique_ptr<FileReference> fileRef = util::make_unique<FileReference>(
             table.stringPool.makeRef(path));
     fileRef->setSource(fileDesc.source);
diff --git a/tools/aapt2/link/TableMerger.h b/tools/aapt2/link/TableMerger.h
index 80c2a5e..6997f93 100644
--- a/tools/aapt2/link/TableMerger.h
+++ b/tools/aapt2/link/TableMerger.h
@@ -59,7 +59,7 @@
      */
     TableMerger(IAaptContext* context, ResourceTable* outTable, const TableMergerOptions& options);
 
-    const std::set<std::u16string>& getMergedPackages() const {
+    const std::set<std::string>& getMergedPackages() const {
         return mMergedPackages;
     }
 
@@ -81,7 +81,7 @@
      * Merges resources from the given package, mangling the name. This is for static libraries.
      * An io::IFileCollection is needed in order to find the referenced Files and process them.
      */
-    bool mergeAndMangle(const Source& src, const StringPiece16& package, ResourceTable* table,
+    bool mergeAndMangle(const Source& src, const StringPiece& package, ResourceTable* table,
                         io::IFileCollection* collection);
 
     /**
@@ -104,7 +104,7 @@
     TableMergerOptions mOptions;
     ResourceTablePackage* mMasterPackage;
 
-    std::set<std::u16string> mMergedPackages;
+    std::set<std::string> mMergedPackages;
 
     bool mergeFileImpl(const ResourceFile& fileDesc, io::IFile* file, bool overlay);
 
@@ -117,7 +117,7 @@
                  const bool allowNewResources,
                  FileMergeCallback callback);
 
-    std::unique_ptr<FileReference> cloneAndMangleFile(const std::u16string& package,
+    std::unique_ptr<FileReference> cloneAndMangleFile(const std::string& package,
                                                       const FileReference& value);
 };
 
diff --git a/tools/aapt2/link/TableMerger_test.cpp b/tools/aapt2/link/TableMerger_test.cpp
index 4a80d3f..1697217 100644
--- a/tools/aapt2/link/TableMerger_test.cpp
+++ b/tools/aapt2/link/TableMerger_test.cpp
@@ -30,13 +30,13 @@
     void SetUp() override {
         mContext = test::ContextBuilder()
                 // We are compiling this package.
-                .setCompilationPackage(u"com.app.a")
+                .setCompilationPackage("com.app.a")
 
                 // Merge all packages that have this package ID.
                 .setPackageId(0x7f)
 
                 // Mangle all packages that do not have this package name.
-                .setNameManglerPolicy(NameManglerPolicy{ u"com.app.a", { u"com.app.b" } })
+                .setNameManglerPolicy(NameManglerPolicy{ "com.app.a", { "com.app.b" } })
 
                 .build();
     }
@@ -44,17 +44,17 @@
 
 TEST_F(TableMergerTest, SimpleMerge) {
     std::unique_ptr<ResourceTable> tableA = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.a", 0x7f)
-            .addReference(u"@com.app.a:id/foo", u"@com.app.a:id/bar")
-            .addReference(u"@com.app.a:id/bar", u"@com.app.b:id/foo")
-            .addValue(u"@com.app.a:styleable/view", test::StyleableBuilder()
-                    .addItem(u"@com.app.b:id/foo")
+            .setPackageId("com.app.a", 0x7f)
+            .addReference("@com.app.a:id/foo", "@com.app.a:id/bar")
+            .addReference("@com.app.a:id/bar", "@com.app.b:id/foo")
+            .addValue("@com.app.a:styleable/view", test::StyleableBuilder()
+                    .addItem("@com.app.b:id/foo")
                     .build())
             .build();
 
     std::unique_ptr<ResourceTable> tableB = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.b", 0x7f)
-            .addSimple(u"@com.app.b:id/foo")
+            .setPackageId("com.app.b", 0x7f)
+            .addSimple("@com.app.b:id/foo")
             .build();
 
     ResourceTable finalTable;
@@ -62,20 +62,20 @@
     io::FileCollection collection;
 
     ASSERT_TRUE(merger.merge({}, tableA.get()));
-    ASSERT_TRUE(merger.mergeAndMangle({}, u"com.app.b", tableB.get(), &collection));
+    ASSERT_TRUE(merger.mergeAndMangle({}, "com.app.b", tableB.get(), &collection));
 
-    EXPECT_TRUE(merger.getMergedPackages().count(u"com.app.b") != 0);
+    EXPECT_TRUE(merger.getMergedPackages().count("com.app.b") != 0);
 
     // Entries from com.app.a should not be mangled.
-    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie(u"@com.app.a:id/foo")));
-    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie(u"@com.app.a:id/bar")));
-    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie(u"@com.app.a:styleable/view")));
+    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie("@com.app.a:id/foo")));
+    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie("@com.app.a:id/bar")));
+    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie("@com.app.a:styleable/view")));
 
     // The unmangled name should not be present.
-    AAPT_EXPECT_FALSE(finalTable.findResource(test::parseNameOrDie(u"@com.app.b:id/foo")));
+    AAPT_EXPECT_FALSE(finalTable.findResource(test::parseNameOrDie("@com.app.b:id/foo")));
 
     // Look for the mangled name.
-    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie(u"@com.app.a:id/com.app.b$foo")));
+    AAPT_EXPECT_TRUE(finalTable.findResource(test::parseNameOrDie("@com.app.a:id/com.app.b$foo")));
 }
 
 TEST_F(TableMergerTest, MergeFile) {
@@ -86,17 +86,17 @@
 
     ResourceFile fileDesc;
     fileDesc.config = test::parseConfigOrDie("hdpi-v4");
-    fileDesc.name = test::parseNameOrDie(u"@layout/main");
+    fileDesc.name = test::parseNameOrDie("@layout/main");
     fileDesc.source = Source("res/layout-hdpi/main.xml");
     test::TestFile testFile("path/to/res/layout-hdpi/main.xml.flat");
 
     ASSERT_TRUE(merger.mergeFile(fileDesc, &testFile));
 
     FileReference* file = test::getValueForConfig<FileReference>(&finalTable,
-                                                                 u"@com.app.a:layout/main",
+                                                                 "@com.app.a:layout/main",
                                                                  test::parseConfigOrDie("hdpi-v4"));
     ASSERT_NE(nullptr, file);
-    EXPECT_EQ(std::u16string(u"res/layout-hdpi-v4/main.xml"), *file->path);
+    EXPECT_EQ(std::string("res/layout-hdpi-v4/main.xml"), *file->path);
 }
 
 TEST_F(TableMergerTest, MergeFileOverlay) {
@@ -106,7 +106,7 @@
     TableMerger merger(mContext.get(), &finalTable, tableMergerOptions);
 
     ResourceFile fileDesc;
-    fileDesc.name = test::parseNameOrDie(u"@xml/foo");
+    fileDesc.name = test::parseNameOrDie("@xml/foo");
     test::TestFile fileA("path/to/fileA.xml.flat");
     test::TestFile fileB("path/to/fileB.xml.flat");
 
@@ -116,12 +116,12 @@
 
 TEST_F(TableMergerTest, MergeFileReferences) {
     std::unique_ptr<ResourceTable> tableA = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.a", 0x7f)
-            .addFileReference(u"@com.app.a:xml/file", u"res/xml/file.xml")
+            .setPackageId("com.app.a", 0x7f)
+            .addFileReference("@com.app.a:xml/file", "res/xml/file.xml")
             .build();
     std::unique_ptr<ResourceTable> tableB = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.b", 0x7f)
-            .addFileReference(u"@com.app.b:xml/file", u"res/xml/file.xml")
+            .setPackageId("com.app.b", 0x7f)
+            .addFileReference("@com.app.b:xml/file", "res/xml/file.xml")
             .build();
 
     ResourceTable finalTable;
@@ -130,25 +130,25 @@
     collection.insertFile("res/xml/file.xml");
 
     ASSERT_TRUE(merger.merge({}, tableA.get()));
-    ASSERT_TRUE(merger.mergeAndMangle({}, u"com.app.b", tableB.get(), &collection));
+    ASSERT_TRUE(merger.mergeAndMangle({}, "com.app.b", tableB.get(), &collection));
 
-    FileReference* f = test::getValue<FileReference>(&finalTable, u"@com.app.a:xml/file");
+    FileReference* f = test::getValue<FileReference>(&finalTable, "@com.app.a:xml/file");
     ASSERT_NE(f, nullptr);
-    EXPECT_EQ(std::u16string(u"res/xml/file.xml"), *f->path);
+    EXPECT_EQ(std::string("res/xml/file.xml"), *f->path);
 
-    f = test::getValue<FileReference>(&finalTable, u"@com.app.a:xml/com.app.b$file");
+    f = test::getValue<FileReference>(&finalTable, "@com.app.a:xml/com.app.b$file");
     ASSERT_NE(f, nullptr);
-    EXPECT_EQ(std::u16string(u"res/xml/com.app.b$file.xml"), *f->path);
+    EXPECT_EQ(std::string("res/xml/com.app.b$file.xml"), *f->path);
 }
 
 TEST_F(TableMergerTest, OverrideResourceWithOverlay) {
     std::unique_ptr<ResourceTable> base = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x00)
-            .addValue(u"@bool/foo", ResourceUtils::tryParseBool(u"true"))
+            .setPackageId("", 0x00)
+            .addValue("@bool/foo", ResourceUtils::tryParseBool("true"))
             .build();
     std::unique_ptr<ResourceTable> overlay = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x00)
-            .addValue(u"@bool/foo", ResourceUtils::tryParseBool(u"false"))
+            .setPackageId("", 0x00)
+            .addValue("@bool/foo", ResourceUtils::tryParseBool("false"))
             .build();
 
     ResourceTable finalTable;
@@ -159,19 +159,19 @@
     ASSERT_TRUE(merger.merge({}, base.get()));
     ASSERT_TRUE(merger.mergeOverlay({}, overlay.get()));
 
-    BinaryPrimitive* foo = test::getValue<BinaryPrimitive>(&finalTable, u"@com.app.a:bool/foo");
+    BinaryPrimitive* foo = test::getValue<BinaryPrimitive>(&finalTable, "@com.app.a:bool/foo");
     ASSERT_NE(nullptr, foo);
     EXPECT_EQ(0x0u, foo->value.data);
 }
 
 TEST_F(TableMergerTest, MergeAddResourceFromOverlay) {
     std::unique_ptr<ResourceTable> tableA = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x7f)
-            .setSymbolState(u"@bool/foo", {}, SymbolState::kUndefined)
+            .setPackageId("", 0x7f)
+            .setSymbolState("@bool/foo", {}, SymbolState::kUndefined)
             .build();
     std::unique_ptr<ResourceTable> tableB = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x7f)
-            .addValue(u"@bool/foo", ResourceUtils::tryParseBool(u"true"))
+            .setPackageId("", 0x7f)
+            .addValue("@bool/foo", ResourceUtils::tryParseBool("true"))
             .build();
 
     ResourceTable finalTable;
@@ -183,11 +183,11 @@
 
 TEST_F(TableMergerTest, MergeAddResourceFromOverlayWithAutoAddOverlay) {
     std::unique_ptr<ResourceTable> tableA = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x7f)
+            .setPackageId("", 0x7f)
             .build();
     std::unique_ptr<ResourceTable> tableB = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x7f)
-            .addValue(u"@bool/foo", ResourceUtils::tryParseBool(u"true"))
+            .setPackageId("", 0x7f)
+            .addValue("@bool/foo", ResourceUtils::tryParseBool("true"))
             .build();
 
     ResourceTable finalTable;
@@ -201,11 +201,11 @@
 
 TEST_F(TableMergerTest, FailToMergeNewResourceWithoutAutoAddOverlay) {
     std::unique_ptr<ResourceTable> tableA = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x7f)
+            .setPackageId("", 0x7f)
             .build();
     std::unique_ptr<ResourceTable> tableB = test::ResourceTableBuilder()
-            .setPackageId(u"", 0x7f)
-            .addValue(u"@bool/foo", ResourceUtils::tryParseBool(u"true"))
+            .setPackageId("", 0x7f)
+            .addValue("@bool/foo", ResourceUtils::tryParseBool("true"))
             .build();
 
     ResourceTable finalTable;
diff --git a/tools/aapt2/link/VersionCollapser.cpp b/tools/aapt2/link/VersionCollapser.cpp
index c0e96be..949d656 100644
--- a/tools/aapt2/link/VersionCollapser.cpp
+++ b/tools/aapt2/link/VersionCollapser.cpp
@@ -109,6 +109,32 @@
                    [](const std::unique_ptr<ResourceConfigValue>& val) -> bool {
         return val == nullptr;
     }), entry->values.end());
+
+    // Strip the version qualifiers for every resource with version <= minSdk. This will ensure
+    // that the resource entries are all packed together in the same ResTable_type struct
+    // and take up less space in the resources.arsc table.
+    bool modified = false;
+    for (std::unique_ptr<ResourceConfigValue>& configValue : entry->values) {
+        if (configValue->config.sdkVersion != 0 && configValue->config.sdkVersion <= minSdk) {
+            // Override the resource with a Configuration without an SDK.
+            std::unique_ptr<ResourceConfigValue> newValue = util::make_unique<ResourceConfigValue>(
+                    configValue->config.copyWithoutSdkVersion(), configValue->product);
+            newValue->value = std::move(configValue->value);
+            configValue = std::move(newValue);
+
+            modified = true;
+        }
+    }
+
+    if (modified) {
+        // We've modified the keys (ConfigDescription) by changing the sdkVersion to 0.
+        // We MUST re-sort to ensure ordering guarantees hold.
+        std::sort(entry->values.begin(), entry->values.end(),
+                  [](const std::unique_ptr<ResourceConfigValue>& a,
+                     const std::unique_ptr<ResourceConfigValue>& b) -> bool {
+            return a->config.compare(b->config) < 0;
+        });
+    }
 }
 
 bool VersionCollapser::consume(IAaptContext* context, ResourceTable* table) {
diff --git a/tools/aapt2/link/VersionCollapser_test.cpp b/tools/aapt2/link/VersionCollapser_test.cpp
index b5387fe..dd5f1d1 100644
--- a/tools/aapt2/link/VersionCollapser_test.cpp
+++ b/tools/aapt2/link/VersionCollapser_test.cpp
@@ -22,7 +22,7 @@
 template <typename T>
 using uptr = std::unique_ptr<T>;
 
-static uptr<ResourceTable> buildTableWithConfigs(const StringPiece16& name,
+static uptr<ResourceTable> buildTableWithConfigs(const StringPiece& name,
                                                  std::initializer_list<std::string> list) {
     test::ResourceTableBuilder builder;
     for (const std::string& item : list) {
@@ -34,7 +34,7 @@
 TEST(VersionCollapserTest, CollapseVersions) {
     uptr<IAaptContext> context = test::ContextBuilder().setMinSdkVersion(7).build();
 
-    const StringPiece16 resName = u"@android:string/foo";
+    const StringPiece resName = "@android:string/foo";
 
     uptr<ResourceTable> table =
             buildTableWithConfigs(resName,
@@ -49,12 +49,17 @@
               test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v4")));
     EXPECT_EQ(nullptr,
               test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v5")));
+    // This one should be removed because it was renamed to 'land', with the version dropped.
+    EXPECT_EQ(nullptr,
+              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v6")));
 
     // These should remain.
     EXPECT_NE(nullptr,
               test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("sw600dp")));
+
+    // 'land' should be present because it was renamed from 'land-v6'.
     EXPECT_NE(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v6")));
+              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land")));
     EXPECT_NE(nullptr,
               test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v14")));
     EXPECT_NE(nullptr,
@@ -62,32 +67,37 @@
 }
 
 TEST(VersionCollapserTest, CollapseVersionsWhenMinSdkIsHighest) {
-    uptr<IAaptContext> context = test::ContextBuilder().setMinSdkVersion(26).build();
+    uptr<IAaptContext> context = test::ContextBuilder().setMinSdkVersion(21).build();
 
-    const StringPiece16 resName = u"@android:string/foo";
+    const StringPiece resName = "@android:string/foo";
 
     uptr<ResourceTable> table =
                 buildTableWithConfigs(resName,
                                       { "land-v4", "land-v5", "sw600dp", "land-v6",
-                                              "land-v14", "land-v21" });
+                                              "land-v14", "land-v21", "land-v22" });
     VersionCollapser collapser;
     ASSERT_TRUE(collapser.consume(context.get(), table.get()));
 
     // These should all be removed.
-    EXPECT_EQ(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v4")));
-    EXPECT_EQ(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v5")));
-    EXPECT_EQ(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v6")));
-    EXPECT_EQ(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v14")));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(table.get(), resName,
+                                                   test::parseConfigOrDie("land-v4")));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(table.get(), resName,
+                                                   test::parseConfigOrDie("land-v5")));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(table.get(), resName,
+                                                   test::parseConfigOrDie("land-v6")));
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(table.get(), resName,
+                                                   test::parseConfigOrDie("land-v14")));
 
     // These should remain.
-    EXPECT_NE(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("sw600dp")));
-    EXPECT_NE(nullptr,
-              test::getValueForConfig<Id>(table.get(), resName, test::parseConfigOrDie("land-v21")));
+    EXPECT_NE(nullptr, test::getValueForConfig<Id>(
+            table.get(), resName, test::parseConfigOrDie("sw600dp").copyWithoutSdkVersion()));
+
+    // land-v21 should have been converted to land.
+    EXPECT_NE(nullptr, test::getValueForConfig<Id>(table.get(), resName,
+                                                   test::parseConfigOrDie("land")));
+    // land-v22 should remain as-is.
+    EXPECT_NE(nullptr, test::getValueForConfig<Id>(table.get(), resName,
+                                                   test::parseConfigOrDie("land-v22")));
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/link/XmlReferenceLinker.cpp b/tools/aapt2/link/XmlReferenceLinker.cpp
index 568bc74..02af5e3 100644
--- a/tools/aapt2/link/XmlReferenceLinker.cpp
+++ b/tools/aapt2/link/XmlReferenceLinker.cpp
@@ -81,7 +81,7 @@
                     xml::extractPackageFromNamespace(attr.namespaceUri);
             if (maybePackage) {
                 // There is a valid package name for this attribute. We will look this up.
-                StringPiece16 package = maybePackage.value().package;
+                StringPiece package = maybePackage.value().package;
                 if (package.empty()) {
                     // Empty package means the 'current' or 'local' package.
                     package = mContext->getCompilationPackage();
diff --git a/tools/aapt2/link/XmlReferenceLinker_test.cpp b/tools/aapt2/link/XmlReferenceLinker_test.cpp
index af9098b..d48de42 100644
--- a/tools/aapt2/link/XmlReferenceLinker_test.cpp
+++ b/tools/aapt2/link/XmlReferenceLinker_test.cpp
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-#include <test/Context.h>
 #include "link/Linkers.h"
 #include "test/Test.h"
 
@@ -24,44 +23,44 @@
 public:
     void SetUp() override {
         mContext = test::ContextBuilder()
-                .setCompilationPackage(u"com.app.test")
+                .setCompilationPackage("com.app.test")
                 .setNameManglerPolicy(
-                        NameManglerPolicy{ u"com.app.test", { u"com.android.support" } })
+                        NameManglerPolicy{ "com.app.test", { "com.android.support" } })
                 .addSymbolSource(test::StaticSymbolSourceBuilder()
-                        .addPublicSymbol(u"@android:attr/layout_width", ResourceId(0x01010000),
+                        .addPublicSymbol("@android:attr/layout_width", ResourceId(0x01010000),
                                    test::AttributeBuilder()
                                         .setTypeMask(android::ResTable_map::TYPE_ENUM |
                                                      android::ResTable_map::TYPE_DIMENSION)
-                                        .addItem(u"match_parent", 0xffffffff)
+                                        .addItem("match_parent", 0xffffffff)
                                         .build())
-                        .addPublicSymbol(u"@android:attr/background", ResourceId(0x01010001),
+                        .addPublicSymbol("@android:attr/background", ResourceId(0x01010001),
                                    test::AttributeBuilder()
                                         .setTypeMask(android::ResTable_map::TYPE_COLOR).build())
-                        .addPublicSymbol(u"@android:attr/attr", ResourceId(0x01010002),
+                        .addPublicSymbol("@android:attr/attr", ResourceId(0x01010002),
                                    test::AttributeBuilder().build())
-                        .addPublicSymbol(u"@android:attr/text", ResourceId(0x01010003),
+                        .addPublicSymbol("@android:attr/text", ResourceId(0x01010003),
                                    test::AttributeBuilder()
                                         .setTypeMask(android::ResTable_map::TYPE_STRING)
                                         .build())
 
                          // Add one real symbol that was introduces in v21
-                        .addPublicSymbol(u"@android:attr/colorAccent", ResourceId(0x01010435),
+                        .addPublicSymbol("@android:attr/colorAccent", ResourceId(0x01010435),
                                    test::AttributeBuilder().build())
 
                         // Private symbol.
-                        .addSymbol(u"@android:color/hidden", ResourceId(0x01020001))
+                        .addSymbol("@android:color/hidden", ResourceId(0x01020001))
 
-                        .addPublicSymbol(u"@android:id/id", ResourceId(0x01030000))
-                        .addSymbol(u"@com.app.test:id/id", ResourceId(0x7f030000))
-                        .addSymbol(u"@com.app.test:color/green", ResourceId(0x7f020000))
-                        .addSymbol(u"@com.app.test:color/red", ResourceId(0x7f020001))
-                        .addSymbol(u"@com.app.test:attr/colorAccent", ResourceId(0x7f010000),
+                        .addPublicSymbol("@android:id/id", ResourceId(0x01030000))
+                        .addSymbol("@com.app.test:id/id", ResourceId(0x7f030000))
+                        .addSymbol("@com.app.test:color/green", ResourceId(0x7f020000))
+                        .addSymbol("@com.app.test:color/red", ResourceId(0x7f020001))
+                        .addSymbol("@com.app.test:attr/colorAccent", ResourceId(0x7f010000),
                                    test::AttributeBuilder()
                                        .setTypeMask(android::ResTable_map::TYPE_COLOR).build())
-                        .addPublicSymbol(u"@com.app.test:attr/com.android.support$colorAccent",
+                        .addPublicSymbol("@com.app.test:attr/com.android.support$colorAccent",
                                    ResourceId(0x7f010001), test::AttributeBuilder()
                                        .setTypeMask(android::ResTable_map::TYPE_COLOR).build())
-                        .addPublicSymbol(u"@com.app.test:attr/attr", ResourceId(0x7f010002),
+                        .addPublicSymbol("@com.app.test:attr/attr", ResourceId(0x7f010002),
                                    test::AttributeBuilder().build())
                         .build())
                 .build();
@@ -85,8 +84,7 @@
     xml::Element* viewEl = xml::findRootElement(doc.get());
     ASSERT_NE(viewEl, nullptr);
 
-    xml::Attribute* xmlAttr = viewEl->findAttribute(u"http://schemas.android.com/apk/res/android",
-                                                    u"layout_width");
+    xml::Attribute* xmlAttr = viewEl->findAttribute(xml::kSchemaAndroid, "layout_width");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
@@ -94,7 +92,7 @@
     ASSERT_NE(xmlAttr->compiledValue, nullptr);
     ASSERT_NE(valueCast<BinaryPrimitive>(xmlAttr->compiledValue.get()), nullptr);
 
-    xmlAttr = viewEl->findAttribute(u"http://schemas.android.com/apk/res/android", u"background");
+    xmlAttr = viewEl->findAttribute(xml::kSchemaAndroid, "background");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
@@ -103,17 +101,17 @@
     Reference* ref = valueCast<Reference>(xmlAttr->compiledValue.get());
     ASSERT_NE(ref, nullptr);
     AAPT_ASSERT_TRUE(ref->name);
-    EXPECT_EQ(ref->name.value(), test::parseNameOrDie(u"@color/green")); // Make sure the name
-                                                                         // didn't change.
+    EXPECT_EQ(ref->name.value(), test::parseNameOrDie("@color/green")); // Make sure the name
+                                                                        // didn't change.
     AAPT_ASSERT_TRUE(ref->id);
     EXPECT_EQ(ref->id.value(), ResourceId(0x7f020000));
 
-    xmlAttr = viewEl->findAttribute(u"http://schemas.android.com/apk/res/android", u"text");
+    xmlAttr = viewEl->findAttribute(xml::kSchemaAndroid, "text");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     ASSERT_FALSE(xmlAttr->compiledValue);   // Strings don't get compiled for memory sake.
 
-    xmlAttr = viewEl->findAttribute(u"", u"class");
+    xmlAttr = viewEl->findAttribute("", "class");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_FALSE(xmlAttr->compiledAttribute);
     ASSERT_EQ(xmlAttr->compiledValue, nullptr);
@@ -159,7 +157,7 @@
     ASSERT_NE(viewEl, nullptr);
 
     xml::Attribute* xmlAttr = viewEl->findAttribute(
-            u"http://schemas.android.com/apk/res/com.android.support", u"colorAccent");
+            xml::buildPackageNamespace("com.android.support"), "colorAccent");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
@@ -178,8 +176,7 @@
     xml::Element* viewEl = xml::findRootElement(doc.get());
     ASSERT_NE(viewEl, nullptr);
 
-    xml::Attribute* xmlAttr = viewEl->findAttribute(u"http://schemas.android.com/apk/res-auto",
-                                                    u"colorAccent");
+    xml::Attribute* xmlAttr = viewEl->findAttribute(xml::kSchemaAuto, "colorAccent");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
@@ -206,8 +203,7 @@
     ASSERT_NE(viewEl, nullptr);
 
     // All attributes and references in this element should be referring to "android" (0x01).
-    xml::Attribute* xmlAttr = viewEl->findAttribute(u"http://schemas.android.com/apk/res/android",
-                                                    u"attr");
+    xml::Attribute* xmlAttr = viewEl->findAttribute(xml::kSchemaAndroid, "attr");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
@@ -222,7 +218,7 @@
     ASSERT_NE(viewEl, nullptr);
 
     // All attributes and references in this element should be referring to "com.app.test" (0x7f).
-    xmlAttr = viewEl->findAttribute(u"http://schemas.android.com/apk/res/com.app.test", u"attr");
+    xmlAttr = viewEl->findAttribute(xml::buildPackageNamespace("com.app.test"), "attr");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
@@ -245,8 +241,8 @@
     ASSERT_NE(viewEl, nullptr);
 
     // All attributes and references in this element should be referring to "com.app.test" (0x7f).
-    xml::Attribute* xmlAttr = viewEl->findAttribute(
-            u"http://schemas.android.com/apk/res/com.app.test", u"attr");
+    xml::Attribute* xmlAttr = viewEl->findAttribute(xml::buildPackageNamespace("com.app.test"),
+                                                    "attr");
     ASSERT_NE(xmlAttr, nullptr);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute);
     AAPT_ASSERT_TRUE(xmlAttr->compiledAttribute.value().id);
diff --git a/tools/aapt2/process/IResourceTableConsumer.h b/tools/aapt2/process/IResourceTableConsumer.h
index 762725d..69b7d92 100644
--- a/tools/aapt2/process/IResourceTableConsumer.h
+++ b/tools/aapt2/process/IResourceTableConsumer.h
@@ -37,7 +37,7 @@
 
     virtual SymbolTable* getExternalSymbols() = 0;
     virtual IDiagnostics* getDiagnostics() = 0;
-    virtual const std::u16string& getCompilationPackage() = 0;
+    virtual const std::string& getCompilationPackage() = 0;
     virtual uint8_t getPackageId() = 0;
     virtual NameMangler* getNameMangler() = 0;
     virtual bool verbose() = 0;
diff --git a/tools/aapt2/process/SymbolTable.cpp b/tools/aapt2/process/SymbolTable.cpp
index eaaf06f..6c506df 100644
--- a/tools/aapt2/process/SymbolTable.cpp
+++ b/tools/aapt2/process/SymbolTable.cpp
@@ -16,6 +16,7 @@
 
 #include "ConfigDescription.h"
 #include "Resource.h"
+#include "ResourceUtils.h"
 #include "ValueVisitor.h"
 #include "process/SymbolTable.h"
 #include "util/Util.h"
@@ -84,7 +85,7 @@
 const SymbolTable::Symbol* SymbolTable::findByReference(const Reference& ref) {
     // First try the ID. This is because when we lookup by ID, we only fill in the ID cache.
     // Looking up by name fills in the name and ID cache. So a cache miss will cause a failed
-    // ID lookup, then a successfull name lookup. Subsequent look ups will hit immediately
+    // ID lookup, then a successful name lookup. Subsequent look ups will hit immediately
     // because the ID is cached too.
     //
     // If we looked up by name first, a cache miss would mean we failed to lookup by name, then
@@ -184,18 +185,13 @@
                 return nullptr;
             }
 
-            const ResourceType* parsedType = parseResourceType(
-                    StringPiece16(entryName.type, entryName.typeLen));
-            if (!parsedType) {
-                table.unlockBag(entry);
+            Maybe<ResourceName> parsedName = ResourceUtils::toResourceName(entryName);
+            if (!parsedName) {
                 return nullptr;
             }
 
             Attribute::Symbol symbol;
-            symbol.symbol.name = ResourceName(
-                    StringPiece16(entryName.package, entryName.packageLen),
-                    *parsedType,
-                    StringPiece16(entryName.name, entryName.nameLen));
+            symbol.symbol.name = parsedName.value();
             symbol.symbol.id = ResourceId(mapEntry.name.ident);
             symbol.value = mapEntry.value.data;
             s->attribute->symbols.push_back(std::move(symbol));
@@ -208,11 +204,15 @@
 std::unique_ptr<SymbolTable::Symbol> AssetManagerSymbolSource::findByName(
         const ResourceName& name) {
     const android::ResTable& table = mAssets.getResources(false);
-    StringPiece16 typeStr = toString(name.type);
+
+    const std::u16string package16 = util::utf8ToUtf16(name.package);
+    const std::u16string type16 = util::utf8ToUtf16(toString(name.type));
+    const std::u16string entry16 = util::utf8ToUtf16(name.entry);
+
     uint32_t typeSpecFlags = 0;
-    ResourceId resId = table.identifierForName(name.entry.data(), name.entry.size(),
-                                               typeStr.data(), typeStr.size(),
-                                               name.package.data(), name.package.size(),
+    ResourceId resId = table.identifierForName(entry16.data(), entry16.size(),
+                                               type16.data(), type16.size(),
+                                               package16.data(), package16.size(),
                                                &typeSpecFlags);
     if (!resId.isValid()) {
         return {};
@@ -238,37 +238,7 @@
     if (!table.getResourceName(id.id, true, &resName)) {
         return {};
     }
-
-    ResourceName name;
-    if (resName.package) {
-        name.package = StringPiece16(resName.package, resName.packageLen).toString();
-    }
-
-    const ResourceType* type;
-    if (resName.type) {
-        type = parseResourceType(StringPiece16(resName.type, resName.typeLen));
-
-    } else if (resName.type8) {
-        type = parseResourceType(util::utf8ToUtf16(StringPiece(resName.type8, resName.typeLen)));
-    } else {
-        return {};
-    }
-
-    if (!type) {
-        return {};
-    }
-
-    name.type = *type;
-
-    if (resName.name) {
-        name.entry = StringPiece16(resName.name, resName.nameLen).toString();
-    } else if (resName.name8) {
-        name.entry = util::utf8ToUtf16(StringPiece(resName.name8, resName.nameLen));
-    } else {
-        return {};
-    }
-
-    return name;
+    return ResourceUtils::toResourceName(resName);
 }
 
 std::unique_ptr<SymbolTable::Symbol> AssetManagerSymbolSource::findById(ResourceId id) {
diff --git a/tools/aapt2/process/SymbolTable.h b/tools/aapt2/process/SymbolTable.h
index e684bb0..43f4dd7 100644
--- a/tools/aapt2/process/SymbolTable.h
+++ b/tools/aapt2/process/SymbolTable.h
@@ -34,7 +34,7 @@
 namespace aapt {
 
 inline android::hash_t hash_type(const ResourceName& name) {
-    std::hash<std::u16string> strHash;
+    std::hash<std::string> strHash;
     android::hash_t hash = 0;
     hash = android::JenkinsHashMix(hash, (uint32_t) strHash(name.package));
     hash = android::JenkinsHashMix(hash, (uint32_t) name.type);
diff --git a/tools/aapt2/process/SymbolTable_test.cpp b/tools/aapt2/process/SymbolTable_test.cpp
index 34f31be..6866974 100644
--- a/tools/aapt2/process/SymbolTable_test.cpp
+++ b/tools/aapt2/process/SymbolTable_test.cpp
@@ -21,31 +21,31 @@
 
 TEST(ResourceTableSymbolSourceTest, FindSymbols) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addSimple(u"@android:id/foo", ResourceId(0x01020000))
-            .addSimple(u"@android:id/bar")
-            .addValue(u"@android:attr/foo", ResourceId(0x01010000),
+            .addSimple("@android:id/foo", ResourceId(0x01020000))
+            .addSimple("@android:id/bar")
+            .addValue("@android:attr/foo", ResourceId(0x01010000),
                       test::AttributeBuilder().build())
             .build();
 
     ResourceTableSymbolSource symbolSource(table.get());
-    EXPECT_NE(nullptr, symbolSource.findByName(test::parseNameOrDie(u"@android:id/foo")));
-    EXPECT_NE(nullptr, symbolSource.findByName(test::parseNameOrDie(u"@android:id/bar")));
+    EXPECT_NE(nullptr, symbolSource.findByName(test::parseNameOrDie("@android:id/foo")));
+    EXPECT_NE(nullptr, symbolSource.findByName(test::parseNameOrDie("@android:id/bar")));
 
     std::unique_ptr<SymbolTable::Symbol> s = symbolSource.findByName(
-            test::parseNameOrDie(u"@android:attr/foo"));
+            test::parseNameOrDie("@android:attr/foo"));
     ASSERT_NE(nullptr, s);
     EXPECT_NE(nullptr, s->attribute);
 }
 
 TEST(ResourceTableSymbolSourceTest, FindPrivateAttrSymbol) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addValue(u"@android:^attr-private/foo", ResourceId(0x01010000),
+            .addValue("@android:^attr-private/foo", ResourceId(0x01010000),
                       test::AttributeBuilder().build())
             .build();
 
     ResourceTableSymbolSource symbolSource(table.get());
     std::unique_ptr<SymbolTable::Symbol> s = symbolSource.findByName(
-                test::parseNameOrDie(u"@android:attr/foo"));
+                test::parseNameOrDie("@android:attr/foo"));
     ASSERT_NE(nullptr, s);
     EXPECT_NE(nullptr, s->attribute);
 }
diff --git a/tools/aapt2/proto/ProtoHelpers.cpp b/tools/aapt2/proto/ProtoHelpers.cpp
index 99981c5..2aa8aa5 100644
--- a/tools/aapt2/proto/ProtoHelpers.cpp
+++ b/tools/aapt2/proto/ProtoHelpers.cpp
@@ -33,7 +33,7 @@
 }
 
 void serializeSourceToPb(const Source& source, StringPool* srcPool, pb::Source* outPbSource) {
-    StringPool::Ref ref = srcPool->makeRef(util::utf8ToUtf16(source.path));
+    StringPool::Ref ref = srcPool->makeRef(source.path);
     outPbSource->set_path_idx(static_cast<uint32_t>(ref.getIndex()));
     if (source.line) {
         outPbSource->set_line_no(static_cast<uint32_t>(source.line.value()));
@@ -43,7 +43,7 @@
 void deserializeSourceFromPb(const pb::Source& pbSource, const android::ResStringPool& srcPool,
                              Source* outSource) {
     if (pbSource.has_path_idx()) {
-        outSource->path = util::getString8(srcPool, pbSource.path_idx()).toString();
+        outSource->path = util::getString(srcPool, pbSource.path_idx());
     }
 
     if (pbSource.has_line_no()) {
diff --git a/tools/aapt2/proto/TableProtoDeserializer.cpp b/tools/aapt2/proto/TableProtoDeserializer.cpp
index a7798e7..98ff87f 100644
--- a/tools/aapt2/proto/TableProtoDeserializer.cpp
+++ b/tools/aapt2/proto/TableProtoDeserializer.cpp
@@ -70,10 +70,9 @@
 
         std::map<ResourceId, ResourceNameRef> idIndex;
 
-        ResourceTablePackage* pkg = table->createPackage(
-                util::utf8ToUtf16(pbPackage.package_name()), id);
+        ResourceTablePackage* pkg = table->createPackage(pbPackage.package_name(), id);
         for (const pb::Type& pbType : pbPackage.types()) {
-            const ResourceType* resType = parseResourceType(util::utf8ToUtf16(pbType.name()));
+            const ResourceType* resType = parseResourceType(pbType.name());
             if (!resType) {
                 mDiag->error(DiagMessage(mSource) << "unknown type '" << pbType.name() << "'");
                 return {};
@@ -82,7 +81,7 @@
             ResourceTableType* type = pkg->findOrCreateType(*resType);
 
             for (const pb::Entry& pbEntry : pbType.entries()) {
-                ResourceEntry* entry = type->findOrCreateEntry(util::utf8ToUtf16(pbEntry.name()));
+                ResourceEntry* entry = type->findOrCreateEntry(pbEntry.name());
 
                 // Deserialize the symbol status (public/private with source and comments).
                 if (pbEntry.has_symbol_status()) {
@@ -93,7 +92,7 @@
                     }
 
                     if (pbStatus.has_comment()) {
-                        entry->symbolStatus.comment = util::utf8ToUtf16(pbStatus.comment());
+                        entry->symbolStatus.comment = pbStatus.comment();
                     }
 
                     SymbolState visibility = deserializeVisibilityFromPb(pbStatus.visibility());
@@ -179,14 +178,14 @@
 
         } else if (pbItem.has_str()) {
             const uint32_t idx = pbItem.str().idx();
-            StringPiece16 str = util::getString(*mValuePool, idx);
+            const std::string str = util::getString(*mValuePool, idx);
 
             const android::ResStringPool_span* spans = mValuePool->styleAt(idx);
             if (spans && spans->name.index != android::ResStringPool_span::END) {
-                StyleString styleStr = { str.toString() };
+                StyleString styleStr = { str };
                 while (spans->name.index != android::ResStringPool_span::END) {
                     styleStr.spans.push_back(Span{
-                            util::getString(*mValuePool, spans->name.index).toString(),
+                            util::getString(*mValuePool, spans->name.index),
                             spans->firstChar,
                             spans->lastChar
                     });
@@ -200,13 +199,13 @@
 
         } else if (pbItem.has_raw_str()) {
             const uint32_t idx = pbItem.raw_str().idx();
-            StringPiece16 str = util::getString(*mValuePool, idx);
+            const std::string str = util::getString(*mValuePool, idx);
             return util::make_unique<RawString>(
                     pool->makeRef(str, StringPool::Context{ 1, config }));
 
         } else if (pbItem.has_file()) {
             const uint32_t idx = pbItem.file().path_idx();
-            StringPiece16 str = util::getString(*mValuePool, idx);
+            const std::string str = util::getString(*mValuePool, idx);
             return util::make_unique<FileReference>(
                     pool->makeRef(str, StringPool::Context{ 0, config }));
 
@@ -351,7 +350,7 @@
         }
 
         if (pbRef.has_symbol_idx()) {
-            StringPiece16 strSymbol = util::getString(*mSymbolPool, pbRef.symbol_idx());
+            const std::string strSymbol = util::getString(*mSymbolPool, pbRef.symbol_idx());
             ResourceNameRef nameRef;
             if (!ResourceUtils::parseResourceName(strSymbol, &nameRef, nullptr)) {
                 mDiag->error(DiagMessage(mSource) << "invalid reference name '"
@@ -373,7 +372,7 @@
         }
 
         if (pbItem.has_comment()) {
-            outValue->setComment(util::utf8ToUtf16(pbItem.comment()));
+            outValue->setComment(pbItem.comment());
         }
     }
 
@@ -446,8 +445,7 @@
     ResourceNameRef nameRef;
 
     // Need to create an lvalue here so that nameRef can point to something real.
-    std::u16string utf16Name = util::utf8ToUtf16(pbFile.resource_name());
-    if (!ResourceUtils::parseResourceName(utf16Name, &nameRef)) {
+    if (!ResourceUtils::parseResourceName(pbFile.resource_name(), &nameRef)) {
         diag->error(DiagMessage(source) << "invalid resource name in compiled file header: "
                     << pbFile.resource_name());
         return {};
@@ -458,8 +456,7 @@
 
     for (const pb::CompiledFile_Symbol& pbSymbol : pbFile.exported_symbols()) {
         // Need to create an lvalue here so that nameRef can point to something real.
-        utf16Name = util::utf8ToUtf16(pbSymbol.resource_name());
-        if (!ResourceUtils::parseResourceName(utf16Name, &nameRef)) {
+        if (!ResourceUtils::parseResourceName(pbSymbol.resource_name(), &nameRef)) {
             diag->error(DiagMessage(source) << "invalid resource name for exported symbol in "
                                                "compiled file header: "
                                             << pbFile.resource_name());
diff --git a/tools/aapt2/proto/TableProtoSerializer.cpp b/tools/aapt2/proto/TableProtoSerializer.cpp
index 5d1b72b..425fca6 100644
--- a/tools/aapt2/proto/TableProtoSerializer.cpp
+++ b/tools/aapt2/proto/TableProtoSerializer.cpp
@@ -171,7 +171,7 @@
     void serializeItemCommonToPb(const Item& item, T* pbItem) {
         serializeSourceToPb(item.getSource(), mSourcePool, pbItem->mutable_source());
         if (!item.getComment().empty()) {
-            pbItem->set_comment(util::utf16ToUtf8(item.getComment()));
+            pbItem->set_comment(item.getComment());
         }
     }
 
@@ -220,28 +220,28 @@
         if (package->id) {
             pbPackage->set_package_id(package->id.value());
         }
-        pbPackage->set_package_name(util::utf16ToUtf8(package->name));
+        pbPackage->set_package_name(package->name);
 
         for (auto& type : package->types) {
             pb::Type* pbType = pbPackage->add_types();
             if (type->id) {
                 pbType->set_id(type->id.value());
             }
-            pbType->set_name(util::utf16ToUtf8(toString(type->type)));
+            pbType->set_name(toString(type->type).toString());
 
             for (auto& entry : type->entries) {
                 pb::Entry* pbEntry = pbType->add_entries();
                 if (entry->id) {
                     pbEntry->set_id(entry->id.value());
                 }
-                pbEntry->set_name(util::utf16ToUtf8(entry->name));
+                pbEntry->set_name(entry->name);
 
                 // Write the SymbolStatus struct.
                 pb::SymbolStatus* pbStatus = pbEntry->mutable_symbol_status();
                 pbStatus->set_visibility(serializeVisibilityToPb(entry->symbolStatus.state));
                 serializeSourceToPb(entry->symbolStatus.source, &sourcePool,
                                     pbStatus->mutable_source());
-                pbStatus->set_comment(util::utf16ToUtf8(entry->symbolStatus.comment));
+                pbStatus->set_comment(entry->symbolStatus.comment);
 
                 for (auto& configValue : entry->values) {
                     pb::ConfigValue* pbConfigValue = pbEntry->add_config_values();
@@ -254,7 +254,7 @@
                     serializeSourceToPb(configValue->value->getSource(), &sourcePool,
                                         pbValue->mutable_source());
                     if (!configValue->value->getComment().empty()) {
-                        pbValue->set_comment(util::utf16ToUtf8(configValue->value->getComment()));
+                        pbValue->set_comment(configValue->value->getComment());
                     }
 
                     if (configValue->value->isWeak()) {
@@ -275,13 +275,13 @@
 
 std::unique_ptr<pb::CompiledFile> serializeCompiledFileToPb(const ResourceFile& file) {
     std::unique_ptr<pb::CompiledFile> pbFile = util::make_unique<pb::CompiledFile>();
-    pbFile->set_resource_name(util::utf16ToUtf8(file.name.toString()));
+    pbFile->set_resource_name(file.name.toString());
     pbFile->set_source_path(file.source.path);
     serializeConfig(file.config, pbFile->mutable_config());
 
     for (const SourcedResourceName& exported : file.exportedSymbols) {
         pb::CompiledFile_Symbol* pbSymbol = pbFile->add_exported_symbols();
-        pbSymbol->set_resource_name(util::utf16ToUtf8(exported.name.toString()));
+        pbSymbol->set_resource_name(exported.name.toString());
         pbSymbol->set_line_no(exported.line);
     }
     return pbFile;
diff --git a/tools/aapt2/proto/TableProtoSerializer_test.cpp b/tools/aapt2/proto/TableProtoSerializer_test.cpp
index dd995d8..78b32f7 100644
--- a/tools/aapt2/proto/TableProtoSerializer_test.cpp
+++ b/tools/aapt2/proto/TableProtoSerializer_test.cpp
@@ -16,49 +16,45 @@
 
 #include "ResourceTable.h"
 #include "proto/ProtoSerialize.h"
-#include "test/Builders.h"
-#include "test/Common.h"
-#include "test/Context.h"
-
-#include <gtest/gtest.h>
+#include "test/Test.h"
 
 namespace aapt {
 
 TEST(TableProtoSerializer, SerializeSinglePackage) {
     std::unique_ptr<IAaptContext> context = test::ContextBuilder().build();
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .setPackageId(u"com.app.a", 0x7f)
-            .addFileReference(u"@com.app.a:layout/main", ResourceId(0x7f020000),
-                              u"res/layout/main.xml")
-            .addReference(u"@com.app.a:layout/other", ResourceId(0x7f020001),
-                          u"@com.app.a:layout/main")
-            .addString(u"@com.app.a:string/text", {}, u"hi")
-            .addValue(u"@com.app.a:id/foo", {}, util::make_unique<Id>())
+            .setPackageId("com.app.a", 0x7f)
+            .addFileReference("@com.app.a:layout/main", ResourceId(0x7f020000),
+                              "res/layout/main.xml")
+            .addReference("@com.app.a:layout/other", ResourceId(0x7f020001),
+                          "@com.app.a:layout/main")
+            .addString("@com.app.a:string/text", {}, "hi")
+            .addValue("@com.app.a:id/foo", {}, util::make_unique<Id>())
             .build();
 
     Symbol publicSymbol;
     publicSymbol.state = SymbolState::kPublic;
-    ASSERT_TRUE(table->setSymbolState(test::parseNameOrDie(u"@com.app.a:layout/main"),
+    ASSERT_TRUE(table->setSymbolState(test::parseNameOrDie("@com.app.a:layout/main"),
                                       ResourceId(0x7f020000),
                                       publicSymbol, context->getDiagnostics()));
 
-    Id* id = test::getValue<Id>(table.get(), u"@com.app.a:id/foo");
+    Id* id = test::getValue<Id>(table.get(), "@com.app.a:id/foo");
     ASSERT_NE(nullptr, id);
 
     // Make a plural.
     std::unique_ptr<Plural> plural = util::make_unique<Plural>();
-    plural->values[Plural::One] = util::make_unique<String>(table->stringPool.makeRef(u"one"));
-    ASSERT_TRUE(table->addResource(test::parseNameOrDie(u"@com.app.a:plurals/hey"),
-                                   ConfigDescription{}, std::string(), std::move(plural),
+    plural->values[Plural::One] = util::make_unique<String>(table->stringPool.makeRef("one"));
+    ASSERT_TRUE(table->addResource(test::parseNameOrDie("@com.app.a:plurals/hey"),
+                                   ConfigDescription{}, {}, std::move(plural),
                                    context->getDiagnostics()));
 
     // Make a resource with different products.
-    ASSERT_TRUE(table->addResource(test::parseNameOrDie(u"@com.app.a:integer/one"),
-                                   test::parseConfigOrDie("land"), std::string(),
+    ASSERT_TRUE(table->addResource(test::parseNameOrDie("@com.app.a:integer/one"),
+                                   test::parseConfigOrDie("land"), {},
                                    test::buildPrimitive(android::Res_value::TYPE_INT_DEC, 123u),
                                    context->getDiagnostics()));
-    ASSERT_TRUE(table->addResource(test::parseNameOrDie(u"@com.app.a:integer/one"),
-                                       test::parseConfigOrDie("land"), std::string("tablet"),
+    ASSERT_TRUE(table->addResource(test::parseNameOrDie("@com.app.a:integer/one"),
+                                       test::parseConfigOrDie("land"), "tablet",
                                        test::buildPrimitive(android::Res_value::TYPE_INT_DEC, 321u),
                                        context->getDiagnostics()));
 
@@ -66,10 +62,10 @@
     // The reference should point to a resource outside of this table to test that both
     // name and id get serialized.
     Reference expectedRef;
-    expectedRef.name = test::parseNameOrDie(u"@android:layout/main");
+    expectedRef.name = test::parseNameOrDie("@android:layout/main");
     expectedRef.id = ResourceId(0x01020000);
-    ASSERT_TRUE(table->addResource(test::parseNameOrDie(u"@com.app.a:layout/abc"),
-                                   ConfigDescription::defaultConfig(), std::string(),
+    ASSERT_TRUE(table->addResource(test::parseNameOrDie("@com.app.a:layout/abc"),
+                                   ConfigDescription::defaultConfig(), {},
                                    util::make_unique<Reference>(expectedRef),
                                    context->getDiagnostics()));
 
@@ -81,28 +77,28 @@
                                                                      context->getDiagnostics());
     ASSERT_NE(nullptr, newTable);
 
-    Id* newId = test::getValue<Id>(newTable.get(), u"@com.app.a:id/foo");
+    Id* newId = test::getValue<Id>(newTable.get(), "@com.app.a:id/foo");
     ASSERT_NE(nullptr, newId);
     EXPECT_EQ(id->isWeak(), newId->isWeak());
 
     Maybe<ResourceTable::SearchResult> result = newTable->findResource(
-            test::parseNameOrDie(u"@com.app.a:layout/main"));
+            test::parseNameOrDie("@com.app.a:layout/main"));
     AAPT_ASSERT_TRUE(result);
     EXPECT_EQ(SymbolState::kPublic, result.value().type->symbolStatus.state);
     EXPECT_EQ(SymbolState::kPublic, result.value().entry->symbolStatus.state);
 
     // Find the product-dependent values
     BinaryPrimitive* prim = test::getValueForConfigAndProduct<BinaryPrimitive>(
-            newTable.get(), u"@com.app.a:integer/one", test::parseConfigOrDie("land"), "");
+            newTable.get(), "@com.app.a:integer/one", test::parseConfigOrDie("land"), "");
     ASSERT_NE(nullptr, prim);
     EXPECT_EQ(123u, prim->value.data);
 
     prim = test::getValueForConfigAndProduct<BinaryPrimitive>(
-            newTable.get(), u"@com.app.a:integer/one", test::parseConfigOrDie("land"), "tablet");
+            newTable.get(), "@com.app.a:integer/one", test::parseConfigOrDie("land"), "tablet");
     ASSERT_NE(nullptr, prim);
     EXPECT_EQ(321u, prim->value.data);
 
-    Reference* actualRef = test::getValue<Reference>(newTable.get(), u"@com.app.a:layout/abc");
+    Reference* actualRef = test::getValue<Reference>(newTable.get(), "@com.app.a:layout/abc");
     ASSERT_NE(nullptr, actualRef);
     AAPT_ASSERT_TRUE(actualRef->name);
     AAPT_ASSERT_TRUE(actualRef->id);
@@ -115,9 +111,9 @@
 
     ResourceFile f;
     f.config = test::parseConfigOrDie("hdpi-v9");
-    f.name = test::parseNameOrDie(u"@com.app.a:layout/main");
+    f.name = test::parseNameOrDie("@com.app.a:layout/main");
     f.source.path = "res/layout-hdpi-v9/main.xml";
-    f.exportedSymbols.push_back(SourcedResourceName{ test::parseNameOrDie(u"@+id/unchecked"), 23u });
+    f.exportedSymbols.push_back(SourcedResourceName{ test::parseNameOrDie("@+id/unchecked"), 23u });
 
     const std::string expectedData = "1234";
 
@@ -136,7 +132,7 @@
     const pb::CompiledFile* newPbFile = inFileStream.CompiledFile();
     ASSERT_NE(nullptr, newPbFile);
 
-    std::unique_ptr<ResourceFile> file = deserializeCompiledFileFromPb(*newPbFile, Source{ "test" },
+    std::unique_ptr<ResourceFile> file = deserializeCompiledFileFromPb(*newPbFile, Source("test"),
                                                                        context->getDiagnostics());
     ASSERT_NE(nullptr, file);
 
@@ -145,7 +141,7 @@
     EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(inFileStream.data()) & 0x03);
 
     ASSERT_EQ(1u, file->exportedSymbols.size());
-    EXPECT_EQ(test::parseNameOrDie(u"@+id/unchecked"), file->exportedSymbols[0].name);
+    EXPECT_EQ(test::parseNameOrDie("@+id/unchecked"), file->exportedSymbols[0].name);
 }
 
 TEST(TableProtoSerializer, DeserializeCorruptHeaderSafely) {
diff --git a/tools/aapt2/split/TableSplitter_test.cpp b/tools/aapt2/split/TableSplitter_test.cpp
index 2d013e4..a6dfd62 100644
--- a/tools/aapt2/split/TableSplitter_test.cpp
+++ b/tools/aapt2/split/TableSplitter_test.cpp
@@ -21,15 +21,15 @@
 
 TEST(TableSplitterTest, NoSplitPreferredDensity) {
     std::unique_ptr<ResourceTable> table = test::ResourceTableBuilder()
-            .addFileReference(u"@android:drawable/icon", u"res/drawable-mdpi/icon.png",
+            .addFileReference("@android:drawable/icon", "res/drawable-mdpi/icon.png",
                               test::parseConfigOrDie("mdpi"))
-            .addFileReference(u"@android:drawable/icon", u"res/drawable-hdpi/icon.png",
+            .addFileReference("@android:drawable/icon", "res/drawable-hdpi/icon.png",
                               test::parseConfigOrDie("hdpi"))
-            .addFileReference(u"@android:drawable/icon", u"res/drawable-xhdpi/icon.png",
+            .addFileReference("@android:drawable/icon", "res/drawable-xhdpi/icon.png",
                               test::parseConfigOrDie("xhdpi"))
-            .addFileReference(u"@android:drawable/icon", u"res/drawable-xxhdpi/icon.png",
+            .addFileReference("@android:drawable/icon", "res/drawable-xxhdpi/icon.png",
                               test::parseConfigOrDie("xxhdpi"))
-            .addSimple(u"@android:string/one")
+            .addSimple("@android:string/one")
             .build();
 
     TableSplitterOptions options;
@@ -38,24 +38,24 @@
     splitter.splitTable(table.get());
 
     EXPECT_EQ(nullptr, test::getValueForConfig<FileReference>(table.get(),
-                                                              u"@android:drawable/icon",
+                                                              "@android:drawable/icon",
                                                               test::parseConfigOrDie("mdpi")));
     EXPECT_EQ(nullptr, test::getValueForConfig<FileReference>(table.get(),
-                                                              u"@android:drawable/icon",
+                                                              "@android:drawable/icon",
                                                               test::parseConfigOrDie("hdpi")));
     EXPECT_NE(nullptr, test::getValueForConfig<FileReference>(table.get(),
-                                                              u"@android:drawable/icon",
+                                                              "@android:drawable/icon",
                                                               test::parseConfigOrDie("xhdpi")));
     EXPECT_EQ(nullptr, test::getValueForConfig<FileReference>(table.get(),
-                                                              u"@android:drawable/icon",
+                                                              "@android:drawable/icon",
                                                               test::parseConfigOrDie("xxhdpi")));
-    EXPECT_NE(nullptr, test::getValue<Id>(table.get(), u"@android:string/one"));
+    EXPECT_NE(nullptr, test::getValue<Id>(table.get(), "@android:string/one"));
 }
 
 TEST(TableSplitterTest, SplitTableByConfigAndDensity) {
     ResourceTable table;
 
-    const ResourceName foo = test::parseNameOrDie(u"@android:string/foo");
+    const ResourceName foo = test::parseNameOrDie("@android:string/foo");
     ASSERT_TRUE(table.addResource(foo, test::parseConfigOrDie("land-hdpi"), {},
                                   util::make_unique<Id>(),
                                   test::getDiagnostics()));
@@ -79,25 +79,25 @@
     ResourceTable* splitTwo = splitter.getSplits()[1].get();
 
     // Since a split was defined, all densities should be gone from base.
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(&table, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(&table, "@android:string/foo",
                                                    test::parseConfigOrDie("land-hdpi")));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(&table, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(&table, "@android:string/foo",
                                                    test::parseConfigOrDie("land-xhdpi")));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(&table, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(&table, "@android:string/foo",
                                                    test::parseConfigOrDie("land-xxhdpi")));
 
-    EXPECT_NE(nullptr, test::getValueForConfig<Id>(splitOne, u"@android:string/foo",
+    EXPECT_NE(nullptr, test::getValueForConfig<Id>(splitOne, "@android:string/foo",
                                                    test::parseConfigOrDie("land-hdpi")));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitOne, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitOne, "@android:string/foo",
                                                    test::parseConfigOrDie("land-xhdpi")));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitOne, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitOne, "@android:string/foo",
                                                    test::parseConfigOrDie("land-xxhdpi")));
 
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitTwo, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitTwo, "@android:string/foo",
                                                    test::parseConfigOrDie("land-hdpi")));
-    EXPECT_NE(nullptr, test::getValueForConfig<Id>(splitTwo, u"@android:string/foo",
+    EXPECT_NE(nullptr, test::getValueForConfig<Id>(splitTwo, "@android:string/foo",
                                                    test::parseConfigOrDie("land-xhdpi")));
-    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitTwo, u"@android:string/foo",
+    EXPECT_EQ(nullptr, test::getValueForConfig<Id>(splitTwo, "@android:string/foo",
                                                    test::parseConfigOrDie("land-xxhdpi")));
 }
 
diff --git a/tools/aapt2/test/Builders.h b/tools/aapt2/test/Builders.h
index fb1d8f8..c0c0160 100644
--- a/tools/aapt2/test/Builders.h
+++ b/tools/aapt2/test/Builders.h
@@ -40,81 +40,81 @@
         return &mTable->stringPool;
     }
 
-    ResourceTableBuilder& setPackageId(const StringPiece16& packageName, uint8_t id) {
+    ResourceTableBuilder& setPackageId(const StringPiece& packageName, uint8_t id) {
         ResourceTablePackage* package = mTable->createPackage(packageName, id);
         assert(package);
         return *this;
     }
 
-    ResourceTableBuilder& addSimple(const StringPiece16& name, const ResourceId id = {}) {
+    ResourceTableBuilder& addSimple(const StringPiece& name, const ResourceId id = {}) {
         return addValue(name, id, util::make_unique<Id>());
     }
 
-    ResourceTableBuilder& addSimple(const StringPiece16& name, const ConfigDescription& config,
+    ResourceTableBuilder& addSimple(const StringPiece& name, const ConfigDescription& config,
                                     const ResourceId id = {}) {
         return addValue(name, config, id, util::make_unique<Id>());
     }
 
-    ResourceTableBuilder& addReference(const StringPiece16& name, const StringPiece16& ref) {
+    ResourceTableBuilder& addReference(const StringPiece& name, const StringPiece& ref) {
         return addReference(name, {}, ref);
     }
 
-    ResourceTableBuilder& addReference(const StringPiece16& name, const ResourceId id,
-                                       const StringPiece16& ref) {
+    ResourceTableBuilder& addReference(const StringPiece& name, const ResourceId id,
+                                       const StringPiece& ref) {
         return addValue(name, id, util::make_unique<Reference>(parseNameOrDie(ref)));
     }
 
-    ResourceTableBuilder& addString(const StringPiece16& name, const StringPiece16& str) {
+    ResourceTableBuilder& addString(const StringPiece& name, const StringPiece& str) {
         return addString(name, {}, str);
     }
 
-    ResourceTableBuilder& addString(const StringPiece16& name, const ResourceId id,
-                                    const StringPiece16& str) {
+    ResourceTableBuilder& addString(const StringPiece& name, const ResourceId id,
+                                    const StringPiece& str) {
         return addValue(name, id, util::make_unique<String>(mTable->stringPool.makeRef(str)));
     }
 
-    ResourceTableBuilder& addString(const StringPiece16& name, const ResourceId id,
-                                    const ConfigDescription& config, const StringPiece16& str) {
+    ResourceTableBuilder& addString(const StringPiece& name, const ResourceId id,
+                                    const ConfigDescription& config, const StringPiece& str) {
         return addValue(name, config, id,
                         util::make_unique<String>(mTable->stringPool.makeRef(str)));
     }
 
-    ResourceTableBuilder& addFileReference(const StringPiece16& name, const StringPiece16& path) {
+    ResourceTableBuilder& addFileReference(const StringPiece& name, const StringPiece& path) {
         return addFileReference(name, {}, path);
     }
 
-    ResourceTableBuilder& addFileReference(const StringPiece16& name, const ResourceId id,
-                                           const StringPiece16& path) {
+    ResourceTableBuilder& addFileReference(const StringPiece& name, const ResourceId id,
+                                           const StringPiece& path) {
         return addValue(name, id,
                         util::make_unique<FileReference>(mTable->stringPool.makeRef(path)));
     }
 
-    ResourceTableBuilder& addFileReference(const StringPiece16& name, const StringPiece16& path,
+    ResourceTableBuilder& addFileReference(const StringPiece& name, const StringPiece& path,
                                            const ConfigDescription& config) {
         return addValue(name, config, {},
                         util::make_unique<FileReference>(mTable->stringPool.makeRef(path)));
     }
 
-    ResourceTableBuilder& addValue(const StringPiece16& name,
+    ResourceTableBuilder& addValue(const StringPiece& name,
                                    std::unique_ptr<Value> value) {
         return addValue(name, {}, std::move(value));
     }
 
-    ResourceTableBuilder& addValue(const StringPiece16& name, const ResourceId id,
+    ResourceTableBuilder& addValue(const StringPiece& name, const ResourceId id,
                                    std::unique_ptr<Value> value) {
         return addValue(name, {}, id, std::move(value));
     }
 
-    ResourceTableBuilder& addValue(const StringPiece16& name, const ConfigDescription& config,
+    ResourceTableBuilder& addValue(const StringPiece& name, const ConfigDescription& config,
                                    const ResourceId id, std::unique_ptr<Value> value) {
         ResourceName resName = parseNameOrDie(name);
-        bool result = mTable->addResourceAllowMangled(resName, id, config, std::string(),
+        bool result = mTable->addResourceAllowMangled(resName, id, config, {},
                                                       std::move(value), &mDiagnostics);
         assert(result);
         return *this;
     }
 
-    ResourceTableBuilder& setSymbolState(const StringPiece16& name, ResourceId id,
+    ResourceTableBuilder& setSymbolState(const StringPiece& name, ResourceId id,
                                          SymbolState state) {
         ResourceName resName = parseNameOrDie(name);
         Symbol symbol;
@@ -129,7 +129,7 @@
     }
 };
 
-inline std::unique_ptr<Reference> buildReference(const StringPiece16& ref,
+inline std::unique_ptr<Reference> buildReference(const StringPiece& ref,
                                                  Maybe<ResourceId> id = {}) {
     std::unique_ptr<Reference> reference = util::make_unique<Reference>(parseNameOrDie(ref));
     reference->id = id;
@@ -160,7 +160,7 @@
         return *this;
     }
 
-    ValueBuilder& setComment(const StringPiece16& str) {
+    ValueBuilder& setComment(const StringPiece& str) {
         mValue->setComment(str);
         return *this;
     }
@@ -184,9 +184,9 @@
         return *this;
     }
 
-    AttributeBuilder& addItem(const StringPiece16& name, uint32_t value) {
+    AttributeBuilder& addItem(const StringPiece& name, uint32_t value) {
         mAttr->symbols.push_back(Attribute::Symbol{
-                Reference(ResourceName{ {}, ResourceType::kId, name.toString()}),
+                Reference(ResourceName({}, ResourceType::kId, name)),
                 value});
         return *this;
     }
@@ -201,17 +201,17 @@
     std::unique_ptr<Style> mStyle = util::make_unique<Style>();
 
 public:
-    StyleBuilder& setParent(const StringPiece16& str) {
+    StyleBuilder& setParent(const StringPiece& str) {
         mStyle->parent = Reference(parseNameOrDie(str));
         return *this;
     }
 
-    StyleBuilder& addItem(const StringPiece16& str, std::unique_ptr<Item> value) {
+    StyleBuilder& addItem(const StringPiece& str, std::unique_ptr<Item> value) {
         mStyle->entries.push_back(Style::Entry{ Reference(parseNameOrDie(str)), std::move(value) });
         return *this;
     }
 
-    StyleBuilder& addItem(const StringPiece16& str, ResourceId id, std::unique_ptr<Item> value) {
+    StyleBuilder& addItem(const StringPiece& str, ResourceId id, std::unique_ptr<Item> value) {
         addItem(str, std::move(value));
         mStyle->entries.back().key.id = id;
         return *this;
@@ -227,7 +227,7 @@
     std::unique_ptr<Styleable> mStyleable = util::make_unique<Styleable>();
 
 public:
-    StyleableBuilder& addItem(const StringPiece16& str, Maybe<ResourceId> id = {}) {
+    StyleableBuilder& addItem(const StringPiece& str, Maybe<ResourceId> id = {}) {
         mStyleable->entries.push_back(Reference(parseNameOrDie(str)));
         mStyleable->entries.back().id = id;
         return *this;
diff --git a/tools/aapt2/test/Common.h b/tools/aapt2/test/Common.h
index faccd477..b2eaba6 100644
--- a/tools/aapt2/test/Common.h
+++ b/tools/aapt2/test/Common.h
@@ -62,7 +62,7 @@
     return &diag;
 }
 
-inline ResourceName parseNameOrDie(const StringPiece16& str) {
+inline ResourceName parseNameOrDie(const StringPiece& str) {
     ResourceNameRef ref;
     bool result = ResourceUtils::tryParseReference(str, &ref);
     assert(result && "invalid resource name");
@@ -77,7 +77,7 @@
 }
 
 template <typename T> T* getValueForConfigAndProduct(ResourceTable* table,
-                                                     const StringPiece16& resName,
+                                                     const StringPiece& resName,
                                                      const ConfigDescription& config,
                                                      const StringPiece& product) {
     Maybe<ResourceTable::SearchResult> result = table->findResource(parseNameOrDie(resName));
@@ -90,12 +90,12 @@
     return nullptr;
 }
 
-template <typename T> T* getValueForConfig(ResourceTable* table, const StringPiece16& resName,
+template <typename T> T* getValueForConfig(ResourceTable* table, const StringPiece& resName,
                                            const ConfigDescription& config) {
     return getValueForConfigAndProduct<T>(table, resName, config, {});
 }
 
-template <typename T> T* getValue(ResourceTable* table, const StringPiece16& resName) {
+template <typename T> T* getValue(ResourceTable* table, const StringPiece& resName) {
     return getValueForConfig<T>(table, resName, {});
 }
 
diff --git a/tools/aapt2/test/Context.h b/tools/aapt2/test/Context.h
index 36f568b..b053e07 100644
--- a/tools/aapt2/test/Context.h
+++ b/tools/aapt2/test/Context.h
@@ -19,7 +19,6 @@
 
 #include "NameMangler.h"
 #include "util/Util.h"
-
 #include "process/IResourceTableConsumer.h"
 #include "process/SymbolTable.h"
 #include "test/Common.h"
@@ -40,7 +39,7 @@
         return &mDiagnostics;
     }
 
-    const std::u16string& getCompilationPackage() override {
+    const std::string& getCompilationPackage() override {
         assert(mCompilationPackage && "package name not set");
         return mCompilationPackage.value();
     }
@@ -65,7 +64,7 @@
 private:
     friend class ContextBuilder;
 
-    Maybe<std::u16string> mCompilationPackage;
+    Maybe<std::string> mCompilationPackage;
     Maybe<uint8_t> mPackageId;
     StdErrDiagnostics mDiagnostics;
     SymbolTable mSymbols;
@@ -78,7 +77,7 @@
     std::unique_ptr<Context> mContext = std::unique_ptr<Context>(new Context());
 
 public:
-    ContextBuilder& setCompilationPackage(const StringPiece16& package) {
+    ContextBuilder& setCompilationPackage(const StringPiece& package) {
         mContext->mCompilationPackage = package.toString();
         return *this;
     }
@@ -110,7 +109,7 @@
 
 class StaticSymbolSourceBuilder {
 public:
-    StaticSymbolSourceBuilder& addPublicSymbol(const StringPiece16& name, ResourceId id,
+    StaticSymbolSourceBuilder& addPublicSymbol(const StringPiece& name, ResourceId id,
                                                std::unique_ptr<Attribute> attr = {}) {
         std::unique_ptr<SymbolTable::Symbol> symbol = util::make_unique<SymbolTable::Symbol>(
                 id, std::move(attr), true);
@@ -120,7 +119,7 @@
         return *this;
     }
 
-    StaticSymbolSourceBuilder& addSymbol(const StringPiece16& name, ResourceId id,
+    StaticSymbolSourceBuilder& addSymbol(const StringPiece& name, ResourceId id,
                                          std::unique_ptr<Attribute> attr = {}) {
         std::unique_ptr<SymbolTable::Symbol> symbol = util::make_unique<SymbolTable::Symbol>(
                 id, std::move(attr), false);
diff --git a/tools/aapt2/unflatten/BinaryResourceParser.cpp b/tools/aapt2/unflatten/BinaryResourceParser.cpp
index d2eccbc..4fd77c8 100644
--- a/tools/aapt2/unflatten/BinaryResourceParser.cpp
+++ b/tools/aapt2/unflatten/BinaryResourceParser.cpp
@@ -178,7 +178,8 @@
         packageName[i] = util::deviceToHost16(packageHeader->name[i]);
     }
 
-    ResourceTablePackage* package = mTable->createPackage(packageName, (uint8_t) packageId);
+    ResourceTablePackage* package = mTable->createPackage(util::utf16ToUtf8(packageName),
+                                                          static_cast<uint8_t>(packageId));
     if (!package) {
         mContext->getDiagnostics()->error(DiagMessage(mSource)
                                           << "incompatible package '" << packageName
@@ -308,12 +309,12 @@
     ConfigDescription config;
     config.copyFromDtoH(type->config);
 
-    StringPiece16 typeStr16 = util::getString(mTypePool, type->id - 1);
+    const std::string typeStr = util::getString(mTypePool, type->id - 1);
 
-    const ResourceType* parsedType = parseResourceType(typeStr16);
+    const ResourceType* parsedType = parseResourceType(typeStr);
     if (!parsedType) {
         mContext->getDiagnostics()->error(DiagMessage(mSource)
-                                          << "invalid type name '" << typeStr16
+                                          << "invalid type name '" << typeStr
                                           << "' for type with ID " << (int) type->id);
         return false;
     }
@@ -327,7 +328,7 @@
 
         const ResourceName name(package->name, *parsedType,
                                 util::getString(mKeyPool,
-                                                util::deviceToHost32(entry->key.index)).toString());
+                                                util::deviceToHost32(entry->key.index)));
 
         const ResourceId resId(package->id.value(), type->id, static_cast<uint16_t>(it.index()));
 
@@ -387,16 +388,16 @@
     const uint32_t data = util::deviceToHost32(value->data);
 
     if (value->dataType == Res_value::TYPE_STRING) {
-        StringPiece16 str = util::getString(mValuePool, data);
+        const std::string str = util::getString(mValuePool, data);
 
         const ResStringPool_span* spans = mValuePool.styleAt(data);
 
         // Check if the string has a valid style associated with it.
         if (spans != nullptr && spans->name.index != ResStringPool_span::END) {
-            StyleString styleStr = { str.toString() };
+            StyleString styleStr = { str };
             while (spans->name.index != ResStringPool_span::END) {
                 styleStr.spans.push_back(Span{
-                        util::getString(mValuePool, spans->name.index).toString(),
+                        util::getString(mValuePool, spans->name.index),
                         spans->firstChar,
                         spans->lastChar
                 });
@@ -406,7 +407,7 @@
                     styleStr, StringPool::Context{1, config}));
         } else {
             if (name.type != ResourceType::kString &&
-                    util::stringStartsWith<char16_t>(str, u"res/")) {
+                    util::stringStartsWith(str, "res/")) {
                 // This must be a FileReference.
                 return util::make_unique<FileReference>(mTable->stringPool.makeRef(
                             str, StringPool::Context{ 0, config }));
diff --git a/tools/aapt2/util/Files.cpp b/tools/aapt2/util/Files.cpp
index f5e49f1..c9b3811 100644
--- a/tools/aapt2/util/Files.cpp
+++ b/tools/aapt2/util/Files.cpp
@@ -157,7 +157,7 @@
 
 std::string packageToPath(const StringPiece& package) {
     std::string outPath;
-    for (StringPiece part : util::tokenize<char>(package, '.')) {
+    for (StringPiece part : util::tokenize(package, '.')) {
         appendPath(&outPath, part);
     }
     return outPath;
@@ -199,7 +199,7 @@
         return false;
     }
 
-    for (StringPiece line : util::tokenize<char>(contents, ' ')) {
+    for (StringPiece line : util::tokenize(contents, ' ')) {
         line = util::trimWhitespace(line);
         if (!line.empty()) {
             outArgList->push_back(line.toString());
diff --git a/tools/aapt2/util/StringPiece_test.cpp b/tools/aapt2/util/StringPiece_test.cpp
index 853a9a4..a87065a 100644
--- a/tools/aapt2/util/StringPiece_test.cpp
+++ b/tools/aapt2/util/StringPiece_test.cpp
@@ -34,16 +34,16 @@
 }
 
 TEST(StringPieceTest, PiecesHaveCorrectSortOrder) {
-    std::u16string testing(u"testing");
-    std::u16string banana(u"banana");
-    std::u16string car(u"car");
+    std::string testing("testing");
+    std::string banana("banana");
+    std::string car("car");
 
-    EXPECT_TRUE(StringPiece16(testing) > banana);
-    EXPECT_TRUE(StringPiece16(testing) > car);
-    EXPECT_TRUE(StringPiece16(banana) < testing);
-    EXPECT_TRUE(StringPiece16(banana) < car);
-    EXPECT_TRUE(StringPiece16(car) < testing);
-    EXPECT_TRUE(StringPiece16(car) > banana);
+    EXPECT_TRUE(StringPiece(testing) > banana);
+    EXPECT_TRUE(StringPiece(testing) > car);
+    EXPECT_TRUE(StringPiece(banana) < testing);
+    EXPECT_TRUE(StringPiece(banana) < car);
+    EXPECT_TRUE(StringPiece(car) < testing);
+    EXPECT_TRUE(StringPiece(car) > banana);
 }
 
 TEST(StringPieceTest, PiecesHaveCorrectSortOrderUtf8) {
diff --git a/tools/aapt2/util/Util.cpp b/tools/aapt2/util/Util.cpp
index 5748a12..3c0e9bde 100644
--- a/tools/aapt2/util/Util.cpp
+++ b/tools/aapt2/util/Util.cpp
@@ -54,23 +54,18 @@
     return splitAndTransform(str, sep, ::tolower);
 }
 
-StringPiece16 trimWhitespace(const StringPiece16& str) {
-    if (str.size() == 0 || str.data() == nullptr) {
-        return str;
+bool stringStartsWith(const StringPiece& str, const StringPiece& prefix) {
+    if (str.size() < prefix.size()) {
+        return false;
     }
+    return str.substr(0, prefix.size()) == prefix;
+}
 
-    const char16_t* start = str.data();
-    const char16_t* end = str.data() + str.length();
-
-    while (start != end && util::isspace16(*start)) {
-        start++;
+bool stringEndsWith(const StringPiece& str, const StringPiece& suffix) {
+    if (str.size() < suffix.size()) {
+        return false;
     }
-
-    while (end != start && util::isspace16(*(end - 1))) {
-        end--;
-    }
-
-    return StringPiece16(start, end - start);
+    return str.substr(str.size() - suffix.size(), suffix.size()) == suffix;
 }
 
 StringPiece trimWhitespace(const StringPiece& str) {
@@ -92,11 +87,11 @@
     return StringPiece(start, end - start);
 }
 
-StringPiece16::const_iterator findNonAlphaNumericAndNotInSet(const StringPiece16& str,
-        const StringPiece16& allowedChars) {
+StringPiece::const_iterator findNonAlphaNumericAndNotInSet(const StringPiece& str,
+                                                           const StringPiece& allowedChars) {
     const auto endIter = str.end();
     for (auto iter = str.begin(); iter != endIter; ++iter) {
-        char16_t c = *iter;
+        char c = *iter;
         if ((c >= u'a' && c <= u'z') ||
                 (c >= u'A' && c <= u'Z') ||
                 (c >= u'0' && c <= u'9')) {
@@ -104,7 +99,7 @@
         }
 
         bool match = false;
-        for (char16_t i : allowedChars) {
+        for (char i : allowedChars) {
             if (c == i) {
                 match = true;
                 break;
@@ -118,51 +113,51 @@
     return endIter;
 }
 
-bool isJavaClassName(const StringPiece16& str) {
+bool isJavaClassName(const StringPiece& str) {
     size_t pieces = 0;
-    for (const StringPiece16& piece : tokenize(str, u'.')) {
+    for (const StringPiece& piece : tokenize(str, '.')) {
         pieces++;
         if (piece.empty()) {
             return false;
         }
 
         // Can't have starting or trailing $ character.
-        if (piece.data()[0] == u'$' || piece.data()[piece.size() - 1] == u'$') {
+        if (piece.data()[0] == '$' || piece.data()[piece.size() - 1] == '$') {
             return false;
         }
 
-        if (findNonAlphaNumericAndNotInSet(piece, u"$_") != piece.end()) {
+        if (findNonAlphaNumericAndNotInSet(piece, "$_") != piece.end()) {
             return false;
         }
     }
     return pieces >= 2;
 }
 
-bool isJavaPackageName(const StringPiece16& str) {
+bool isJavaPackageName(const StringPiece& str) {
     if (str.empty()) {
         return false;
     }
 
     size_t pieces = 0;
-    for (const StringPiece16& piece : tokenize(str, u'.')) {
+    for (const StringPiece& piece : tokenize(str, '.')) {
         pieces++;
         if (piece.empty()) {
             return false;
         }
 
-        if (piece.data()[0] == u'_' || piece.data()[piece.size() - 1] == u'_') {
+        if (piece.data()[0] == '_' || piece.data()[piece.size() - 1] == '_') {
             return false;
         }
 
-        if (findNonAlphaNumericAndNotInSet(piece, u"_") != piece.end()) {
+        if (findNonAlphaNumericAndNotInSet(piece, "_") != piece.end()) {
             return false;
         }
     }
     return pieces >= 1;
 }
 
-Maybe<std::u16string> getFullyQualifiedClassName(const StringPiece16& package,
-                                                 const StringPiece16& className) {
+Maybe<std::string> getFullyQualifiedClassName(const StringPiece& package,
+                                              const StringPiece& className) {
     if (className.empty()) {
         return {};
     }
@@ -175,9 +170,9 @@
         return {};
     }
 
-    std::u16string result(package.data(), package.size());
-    if (className.data()[0] != u'.') {
-        result += u'.';
+    std::string result(package.data(), package.size());
+    if (className.data()[0] != '.') {
+        result += '.';
     }
 
     result.append(className.data(), className.size());
@@ -187,23 +182,23 @@
     return result;
 }
 
-static size_t consumeDigits(const char16_t* start, const char16_t* end) {
-    const char16_t* c = start;
-    for (; c != end && *c >= u'0' && *c <= u'9'; c++) {}
+static size_t consumeDigits(const char* start, const char* end) {
+    const char* c = start;
+    for (; c != end && *c >= '0' && *c <= '9'; c++) {}
     return static_cast<size_t>(c - start);
 }
 
-bool verifyJavaStringFormat(const StringPiece16& str) {
-    const char16_t* c = str.begin();
-    const char16_t* const end = str.end();
+bool verifyJavaStringFormat(const StringPiece& str) {
+    const char* c = str.begin();
+    const char* const end = str.end();
 
     size_t argCount = 0;
     bool nonpositional = false;
     while (c != end) {
-        if (*c == u'%' && c + 1 < end) {
+        if (*c == '%' && c + 1 < end) {
             c++;
 
-            if (*c == u'%') {
+            if (*c == '%') {
                 c++;
                 continue;
             }
@@ -213,11 +208,11 @@
             size_t numDigits = consumeDigits(c, end);
             if (numDigits > 0) {
                 c += numDigits;
-                if (c != end && *c != u'$') {
+                if (c != end && *c != '$') {
                     // The digits were a size, but not a positional argument.
                     nonpositional = true;
                 }
-            } else if (*c == u'<') {
+            } else if (*c == '<') {
                 // Reusing last argument, bad idea since positions can be moved around
                 // during translation.
                 nonpositional = true;
@@ -225,7 +220,7 @@
                 c++;
 
                 // Optionally we can have a $ after
-                if (c != end && *c == u'$') {
+                if (c != end && *c == '$') {
                     c++;
                 }
             } else {
@@ -233,13 +228,13 @@
             }
 
             // Ignore size, width, flags, etc.
-            while (c != end && (*c == u'-' ||
-                    *c == u'#' ||
-                    *c == u'+' ||
-                    *c == u' ' ||
-                    *c == u',' ||
-                    *c == u'(' ||
-                    (*c >= u'0' && *c <= '9'))) {
+            while (c != end && (*c == '-' ||
+                    *c == '#' ||
+                    *c == '+' ||
+                    *c == ' ' ||
+                    *c == ',' ||
+                    *c == '(' ||
+                    (*c >= '0' && *c <= '9'))) {
                 c++;
             }
 
@@ -286,11 +281,11 @@
     return true;
 }
 
-static Maybe<char16_t> parseUnicodeCodepoint(const char16_t** start, const char16_t* end) {
-    char16_t code = 0;
+static Maybe<std::string> parseUnicodeCodepoint(const char** start, const char* end) {
+    char32_t code = 0;
     for (size_t i = 0; i < 4 && *start != end; i++, (*start)++) {
-        char16_t c = **start;
-        int a;
+        char c = **start;
+        char32_t a;
         if (c >= '0' && c <= '9') {
             a = c - '0';
         } else if (c >= 'a' && c <= 'f') {
@@ -298,51 +293,60 @@
         } else if (c >= 'A' && c <= 'F') {
             a = c - 'A' + 10;
         } else {
-            return make_nothing<char16_t>();
+            return {};
         }
         code = (code << 4) | a;
     }
-    return make_value(code);
+
+    ssize_t len = utf32_to_utf8_length(&code, 1);
+    if (len < 0) {
+        return {};
+    }
+
+    std::string resultUtf8;
+    resultUtf8.resize(len);
+    utf32_to_utf8(&code, 1, &*resultUtf8.begin(), len + 1);
+    return resultUtf8;
 }
 
-StringBuilder& StringBuilder::append(const StringPiece16& str) {
+StringBuilder& StringBuilder::append(const StringPiece& str) {
     if (!mError.empty()) {
         return *this;
     }
 
-    const char16_t* const end = str.end();
-    const char16_t* start = str.begin();
-    const char16_t* current = start;
+    const char* const end = str.end();
+    const char* start = str.begin();
+    const char* current = start;
     while (current != end) {
         if (mLastCharWasEscape) {
             switch (*current) {
-                case u't':
-                    mStr += u'\t';
+                case 't':
+                    mStr += '\t';
                     break;
-                case u'n':
-                    mStr += u'\n';
+                case 'n':
+                    mStr += '\n';
                     break;
-                case u'#':
-                    mStr += u'#';
+                case '#':
+                    mStr += '#';
                     break;
-                case u'@':
-                    mStr += u'@';
+                case '@':
+                    mStr += '@';
                     break;
-                case u'?':
-                    mStr += u'?';
+                case '?':
+                    mStr += '?';
                     break;
-                case u'"':
-                    mStr += u'"';
+                case '"':
+                    mStr += '"';
                     break;
-                case u'\'':
-                    mStr += u'\'';
+                case '\'':
+                    mStr += '\'';
                     break;
-                case u'\\':
-                    mStr += u'\\';
+                case '\\':
+                    mStr += '\\';
                     break;
-                case u'u': {
+                case 'u': {
                     current++;
-                    Maybe<char16_t> c = parseUnicodeCodepoint(&current, end);
+                    Maybe<std::string> c = parseUnicodeCodepoint(&current, end);
                     if (!c) {
                         mError = "invalid unicode escape sequence";
                         return *this;
@@ -358,7 +362,7 @@
             }
             mLastCharWasEscape = false;
             start = current + 1;
-        } else if (*current == u'"') {
+        } else if (*current == '"') {
             if (!mQuote && mTrailingSpace) {
                 // We found an opening quote, and we have
                 // trailing space, so we should append that
@@ -367,7 +371,7 @@
                     // We had trailing whitespace, so
                     // replace with a single space.
                     if (!mStr.empty()) {
-                        mStr += u' ';
+                        mStr += ' ';
                     }
                     mTrailingSpace = false;
                 }
@@ -375,17 +379,17 @@
             mQuote = !mQuote;
             mStr.append(start, current - start);
             start = current + 1;
-        } else if (*current == u'\'' && !mQuote) {
+        } else if (*current == '\'' && !mQuote) {
             // This should be escaped.
             mError = "unescaped apostrophe";
             return *this;
-        } else if (*current == u'\\') {
+        } else if (*current == '\\') {
             // This is an escape sequence, convert to the real value.
             if (!mQuote && mTrailingSpace) {
                 // We had trailing whitespace, so
                 // replace with a single space.
                 if (!mStr.empty()) {
-                    mStr += u' ';
+                    mStr += ' ';
                 }
                 mTrailingSpace = false;
             }
@@ -394,7 +398,7 @@
             mLastCharWasEscape = true;
         } else if (!mQuote) {
             // This is not quoted text, so look for whitespace.
-            if (isspace16(*current)) {
+            if (isspace(*current)) {
                 // We found whitespace, see if we have seen some
                 // before.
                 if (!mTrailingSpace) {
@@ -410,7 +414,7 @@
                 // We saw trailing space before, so replace all
                 // that trailing space with one space.
                 if (!mStr.empty()) {
-                    mStr += u' ';
+                    mStr += ' ';
                 }
                 mTrailingSpace = false;
             }
@@ -442,7 +446,7 @@
 
     std::string utf8;
     utf8.resize(utf8Length);
-    utf16_to_utf8(utf16.data(), utf16.length(), &*utf8.begin());
+    utf16_to_utf8(utf16.data(), utf16.length(), &*utf8.begin(), utf8Length + 1);
     return utf8;
 }
 
@@ -465,15 +469,58 @@
     return data;
 }
 
-bool extractResFilePathParts(const StringPiece16& path, StringPiece16* outPrefix,
-                             StringPiece16* outEntry, StringPiece16* outSuffix) {
-    if (!stringStartsWith<char16_t>(path, u"res/")) {
+typename Tokenizer::iterator& Tokenizer::iterator::operator++() {
+    const char* start = mToken.end();
+    const char* end = mStr.end();
+    if (start == end) {
+        mEnd = true;
+        mToken.assign(mToken.end(), 0);
+        return *this;
+    }
+
+    start += 1;
+    const char* current = start;
+    while (current != end) {
+        if (*current == mSeparator) {
+            mToken.assign(start, current - start);
+            return *this;
+        }
+        ++current;
+    }
+    mToken.assign(start, end - start);
+    return *this;
+}
+
+bool Tokenizer::iterator::operator==(const iterator& rhs) const {
+    // We check equality here a bit differently.
+    // We need to know that the addresses are the same.
+    return mToken.begin() == rhs.mToken.begin() && mToken.end() == rhs.mToken.end() &&
+            mEnd == rhs.mEnd;
+}
+
+bool Tokenizer::iterator::operator!=(const iterator& rhs) const {
+    return !(*this == rhs);
+}
+
+Tokenizer::iterator::iterator(StringPiece s, char sep, StringPiece tok, bool end) :
+        mStr(s), mSeparator(sep), mToken(tok), mEnd(end) {
+}
+
+Tokenizer::Tokenizer(StringPiece str, char sep) :
+        mBegin(++iterator(str, sep, StringPiece(str.begin() - 1, 0), false)),
+        mEnd(str, sep, StringPiece(str.end(), 0), true) {
+}
+
+bool extractResFilePathParts(const StringPiece& path, StringPiece* outPrefix,
+                             StringPiece* outEntry, StringPiece* outSuffix) {
+    const StringPiece resPrefix("res/");
+    if (!stringStartsWith(path, resPrefix)) {
         return false;
     }
 
-    StringPiece16::const_iterator lastOccurence = path.end();
-    for (auto iter = path.begin() + StringPiece16(u"res/").size(); iter != path.end(); ++iter) {
-        if (*iter == u'/') {
+    StringPiece::const_iterator lastOccurence = path.end();
+    for (auto iter = path.begin() + resPrefix.size(); iter != path.end(); ++iter) {
+        if (*iter == '/') {
             lastOccurence = iter;
         }
     }
@@ -482,12 +529,30 @@
         return false;
     }
 
-    auto iter = std::find(lastOccurence, path.end(), u'.');
-    *outSuffix = StringPiece16(iter, path.end() - iter);
-    *outEntry = StringPiece16(lastOccurence + 1, iter - lastOccurence - 1);
-    *outPrefix = StringPiece16(path.begin(), lastOccurence - path.begin() + 1);
+    auto iter = std::find(lastOccurence, path.end(), '.');
+    *outSuffix = StringPiece(iter, path.end() - iter);
+    *outEntry = StringPiece(lastOccurence + 1, iter - lastOccurence - 1);
+    *outPrefix = StringPiece(path.begin(), lastOccurence - path.begin() + 1);
     return true;
 }
 
+StringPiece16 getString16(const android::ResStringPool& pool, size_t idx) {
+    size_t len;
+    const char16_t* str = pool.stringAt(idx, &len);
+    if (str != nullptr) {
+        return StringPiece16(str, len);
+    }
+    return StringPiece16();
+}
+
+std::string getString(const android::ResStringPool& pool, size_t idx) {
+    size_t len;
+    const char* str = pool.string8At(idx, &len);
+    if (str != nullptr) {
+        return std::string(str, len);
+    }
+    return utf16ToUtf8(getString16(pool, idx));
+}
+
 } // namespace util
 } // namespace aapt
diff --git a/tools/aapt2/util/Util.h b/tools/aapt2/util/Util.h
index 0dacbd7..4a10987 100644
--- a/tools/aapt2/util/Util.h
+++ b/tools/aapt2/util/Util.h
@@ -37,30 +37,18 @@
 /**
  * Returns true if the string starts with prefix.
  */
-template <typename T>
-bool stringStartsWith(const BasicStringPiece<T>& str, const BasicStringPiece<T>& prefix) {
-    if (str.size() < prefix.size()) {
-        return false;
-    }
-    return str.substr(0, prefix.size()) == prefix;
-}
+bool stringStartsWith(const StringPiece& str, const StringPiece& prefix);
 
 /**
  * Returns true if the string ends with suffix.
  */
-template <typename T>
-bool stringEndsWith(const BasicStringPiece<T>& str, const BasicStringPiece<T>& suffix) {
-    if (str.size() < suffix.size()) {
-        return false;
-    }
-    return str.substr(str.size() - suffix.size(), suffix.size()) == suffix;
-}
+bool stringEndsWith(const StringPiece& str, const StringPiece& suffix);
 
 /**
  * Creates a new StringPiece16 that points to a substring
  * of the original string without leading or trailing whitespace.
  */
-StringPiece16 trimWhitespace(const StringPiece16& str);
+StringPiece trimWhitespace(const StringPiece& str);
 
 StringPiece trimWhitespace(const StringPiece& str);
 
@@ -76,18 +64,18 @@
  * Returns an iterator to the first character that is not alpha-numeric and that
  * is not in the allowedChars set.
  */
-StringPiece16::const_iterator findNonAlphaNumericAndNotInSet(const StringPiece16& str,
-        const StringPiece16& allowedChars);
+StringPiece::const_iterator findNonAlphaNumericAndNotInSet(const StringPiece& str,
+                                                           const StringPiece& allowedChars);
 
 /**
  * Tests that the string is a valid Java class name.
  */
-bool isJavaClassName(const StringPiece16& str);
+bool isJavaClassName(const StringPiece& str);
 
 /**
  * Tests that the string is a valid Java package name.
  */
-bool isJavaPackageName(const StringPiece16& str);
+bool isJavaPackageName(const StringPiece& str);
 
 /**
  * Converts the class name to a fully qualified class name from the given `package`. Ex:
@@ -97,9 +85,8 @@
  * .a.b         --> package.a.b
  * asdf.adsf    --> asdf.adsf
  */
-Maybe<std::u16string> getFullyQualifiedClassName(const StringPiece16& package,
-                                                 const StringPiece16& className);
-
+Maybe<std::string> getFullyQualifiedClassName(const StringPiece& package,
+                                              const StringPiece& className);
 
 /**
  * Makes a std::unique_ptr<> with the template parameter inferred by the compiler.
@@ -147,25 +134,17 @@
 }
 
 /**
- * Helper method to extract a string from a StringPool.
+ * Helper method to extract a UTF-16 string from a StringPool. If the string is stored as UTF-8,
+ * the conversion to UTF-16 happens within ResStringPool.
  */
-inline StringPiece16 getString(const android::ResStringPool& pool, size_t idx) {
-    size_t len;
-    const char16_t* str = pool.stringAt(idx, &len);
-    if (str != nullptr) {
-        return StringPiece16(str, len);
-    }
-    return StringPiece16();
-}
+StringPiece16 getString16(const android::ResStringPool& pool, size_t idx);
 
-inline StringPiece getString8(const android::ResStringPool& pool, size_t idx) {
-    size_t len;
-    const char* str = pool.string8At(idx, &len);
-    if (str != nullptr) {
-        return StringPiece(str, len);
-    }
-    return StringPiece();
-}
+/**
+ * Helper method to extract a UTF-8 string from a StringPool. If the string is stored as UTF-16,
+ * the conversion from UTF-16 to UTF-8 does not happen in ResStringPool and is done by this method,
+ * which maintains no state or cache. This means we must return an std::string copy.
+ */
+std::string getString(const android::ResStringPool& pool, size_t idx);
 
 /**
  * Checks that the Java string format contains no non-positional arguments (arguments without
@@ -173,24 +152,24 @@
  * because translations may rearrange the order of the arguments in the string, which will
  * break the string interpolation.
  */
-bool verifyJavaStringFormat(const StringPiece16& str);
+bool verifyJavaStringFormat(const StringPiece& str);
 
 class StringBuilder {
 public:
-    StringBuilder& append(const StringPiece16& str);
-    const std::u16string& str() const;
+    StringBuilder& append(const StringPiece& str);
+    const std::string& str() const;
     const std::string& error() const;
     operator bool() const;
 
 private:
-    std::u16string mStr;
+    std::string mStr;
     bool mQuote = false;
     bool mTrailingSpace = false;
     bool mLastCharWasEscape = false;
     std::string mError;
 };
 
-inline const std::u16string& StringBuilder::str() const {
+inline const std::string& StringBuilder::str() const {
     return mStr;
 }
 
@@ -206,7 +185,7 @@
  * Converts a UTF8 string to a UTF16 string.
  */
 std::u16string utf8ToUtf16(const StringPiece& utf8);
-std::string utf16ToUtf8(const StringPiece16& utf8);
+std::string utf16ToUtf8(const StringPiece16& utf16);
 
 /**
  * Writes the entire BigBuffer to the output stream.
@@ -222,7 +201,6 @@
  * A Tokenizer implemented as an iterable collection. It does not allocate
  * any memory on the heap nor use standard containers.
  */
-template <typename Char>
 class Tokenizer {
 public:
     class iterator {
@@ -231,96 +209,41 @@
         iterator& operator=(const iterator&) = default;
 
         iterator& operator++();
-        BasicStringPiece<Char> operator*();
+
+        StringPiece operator*() {
+            return mToken;
+        }
         bool operator==(const iterator& rhs) const;
         bool operator!=(const iterator& rhs) const;
 
     private:
-        friend class Tokenizer<Char>;
+        friend class Tokenizer;
 
-        iterator(BasicStringPiece<Char> s, Char sep, BasicStringPiece<Char> tok, bool end);
+        iterator(StringPiece s, char sep, StringPiece tok, bool end);
 
-        BasicStringPiece<Char> mStr;
-        Char mSeparator;
-        BasicStringPiece<Char> mToken;
+        StringPiece mStr;
+        char mSeparator;
+        StringPiece mToken;
         bool mEnd;
     };
 
-    Tokenizer(BasicStringPiece<Char> str, Char sep);
-    iterator begin();
-    iterator end();
+    Tokenizer(StringPiece str, char sep);
+
+    iterator begin() {
+        return mBegin;
+    }
+
+    iterator end() {
+        return mEnd;
+    }
 
 private:
     const iterator mBegin;
     const iterator mEnd;
 };
 
-template <typename Char>
-inline Tokenizer<Char> tokenize(BasicStringPiece<Char> str, Char sep) {
-    return Tokenizer<Char>(str, sep);
-}
-
-template <typename Char>
-typename Tokenizer<Char>::iterator& Tokenizer<Char>::iterator::operator++() {
-    const Char* start = mToken.end();
-    const Char* end = mStr.end();
-    if (start == end) {
-        mEnd = true;
-        mToken.assign(mToken.end(), 0);
-        return *this;
-    }
-
-    start += 1;
-    const Char* current = start;
-    while (current != end) {
-        if (*current == mSeparator) {
-            mToken.assign(start, current - start);
-            return *this;
-        }
-        ++current;
-    }
-    mToken.assign(start, end - start);
-    return *this;
-}
-
-template <typename Char>
-inline BasicStringPiece<Char> Tokenizer<Char>::iterator::operator*() {
-    return mToken;
-}
-
-template <typename Char>
-inline bool Tokenizer<Char>::iterator::operator==(const iterator& rhs) const {
-    // We check equality here a bit differently.
-    // We need to know that the addresses are the same.
-    return mToken.begin() == rhs.mToken.begin() && mToken.end() == rhs.mToken.end() &&
-            mEnd == rhs.mEnd;
-}
-
-template <typename Char>
-inline bool Tokenizer<Char>::iterator::operator!=(const iterator& rhs) const {
-    return !(*this == rhs);
-}
-
-template <typename Char>
-inline Tokenizer<Char>::iterator::iterator(BasicStringPiece<Char> s, Char sep,
-                                           BasicStringPiece<Char> tok, bool end) :
-        mStr(s), mSeparator(sep), mToken(tok), mEnd(end) {
-}
-
-template <typename Char>
-inline typename Tokenizer<Char>::iterator Tokenizer<Char>::begin() {
-    return mBegin;
-}
-
-template <typename Char>
-inline typename Tokenizer<Char>::iterator Tokenizer<Char>::end() {
-    return mEnd;
-}
-
-template <typename Char>
-inline Tokenizer<Char>::Tokenizer(BasicStringPiece<Char> str, Char sep) :
-        mBegin(++iterator(str, sep, BasicStringPiece<Char>(str.begin() - 1, 0), false)),
-        mEnd(str, sep, BasicStringPiece<Char>(str.end(), 0), true) {
+inline Tokenizer tokenize(StringPiece str, char sep) {
+    return Tokenizer(str, sep);
 }
 
 inline uint16_t hostToDevice16(uint16_t value) {
@@ -348,8 +271,8 @@
  *
  * Returns true if successful.
  */
-bool extractResFilePathParts(const StringPiece16& path, StringPiece16* outPrefix,
-                             StringPiece16* outEntry, StringPiece16* outSuffix);
+bool extractResFilePathParts(const StringPiece& path, StringPiece* outPrefix,
+                             StringPiece* outEntry, StringPiece* outSuffix);
 
 } // namespace util
 
diff --git a/tools/aapt2/util/Util_test.cpp b/tools/aapt2/util/Util_test.cpp
index fad1afb..0e27213 100644
--- a/tools/aapt2/util/Util_test.cpp
+++ b/tools/aapt2/util/Util_test.cpp
@@ -14,192 +14,191 @@
  * limitations under the License.
  */
 
-#include "test/Common.h"
+#include "test/Test.h"
 #include "util/StringPiece.h"
 #include "util/Util.h"
 
-#include <gtest/gtest.h>
 #include <string>
 
 namespace aapt {
 
 TEST(UtilTest, TrimOnlyWhitespace) {
-    const std::u16string full = u"\n        ";
+    const std::string full = "\n        ";
 
-    StringPiece16 trimmed = util::trimWhitespace(full);
+    StringPiece trimmed = util::trimWhitespace(full);
     EXPECT_TRUE(trimmed.empty());
     EXPECT_EQ(0u, trimmed.size());
 }
 
 TEST(UtilTest, StringEndsWith) {
-    EXPECT_TRUE(util::stringEndsWith<char>("hello.xml", ".xml"));
+    EXPECT_TRUE(util::stringEndsWith("hello.xml", ".xml"));
 }
 
 TEST(UtilTest, StringStartsWith) {
-    EXPECT_TRUE(util::stringStartsWith<char>("hello.xml", "he"));
+    EXPECT_TRUE(util::stringStartsWith("hello.xml", "he"));
 }
 
 TEST(UtilTest, StringBuilderSplitEscapeSequence) {
-    EXPECT_EQ(StringPiece16(u"this is a new\nline."),
-              util::StringBuilder().append(u"this is a new\\")
-                                   .append(u"nline.")
+    EXPECT_EQ(StringPiece("this is a new\nline."),
+              util::StringBuilder().append("this is a new\\")
+                                   .append("nline.")
                                    .str());
 }
 
 TEST(UtilTest, StringBuilderWhitespaceRemoval) {
-    EXPECT_EQ(StringPiece16(u"hey guys this is so cool"),
-              util::StringBuilder().append(u"    hey guys ")
-                                   .append(u" this is so cool ")
+    EXPECT_EQ(StringPiece("hey guys this is so cool"),
+              util::StringBuilder().append("    hey guys ")
+                                   .append(" this is so cool ")
                                    .str());
 
-    EXPECT_EQ(StringPiece16(u" wow,  so many \t spaces. what?"),
-              util::StringBuilder().append(u" \" wow,  so many \t ")
-                                   .append(u"spaces. \"what? ")
+    EXPECT_EQ(StringPiece(" wow,  so many \t spaces. what?"),
+              util::StringBuilder().append(" \" wow,  so many \t ")
+                                   .append("spaces. \"what? ")
                                    .str());
 
-    EXPECT_EQ(StringPiece16(u"where is the pie?"),
-              util::StringBuilder().append(u"  where \t ")
-                                   .append(u" \nis the "" pie?")
+    EXPECT_EQ(StringPiece("where is the pie?"),
+              util::StringBuilder().append("  where \t ")
+                                   .append(" \nis the "" pie?")
                                    .str());
 }
 
 TEST(UtilTest, StringBuilderEscaping) {
-    EXPECT_EQ(StringPiece16(u"hey guys\n this \t is so\\ cool"),
-              util::StringBuilder().append(u"    hey guys\\n ")
-                                   .append(u" this \\t is so\\\\ cool ")
+    EXPECT_EQ(StringPiece("hey guys\n this \t is so\\ cool"),
+              util::StringBuilder().append("    hey guys\\n ")
+                                   .append(" this \\t is so\\\\ cool ")
                                    .str());
 
-    EXPECT_EQ(StringPiece16(u"@?#\\\'"),
-              util::StringBuilder().append(u"\\@\\?\\#\\\\\\'")
+    EXPECT_EQ(StringPiece("@?#\\\'"),
+              util::StringBuilder().append("\\@\\?\\#\\\\\\'")
                                    .str());
 }
 
 TEST(UtilTest, StringBuilderMisplacedQuote) {
     util::StringBuilder builder{};
-    EXPECT_FALSE(builder.append(u"they're coming!"));
+    EXPECT_FALSE(builder.append("they're coming!"));
 }
 
 TEST(UtilTest, StringBuilderUnicodeCodes) {
-    EXPECT_EQ(StringPiece16(u"\u00AF\u0AF0 woah"),
-              util::StringBuilder().append(u"\\u00AF\\u0AF0 woah")
+    EXPECT_EQ(std::string("\u00AF\u0AF0 woah"),
+              util::StringBuilder().append("\\u00AF\\u0AF0 woah")
                                    .str());
 
-    EXPECT_FALSE(util::StringBuilder().append(u"\\u00 yo"));
+    EXPECT_FALSE(util::StringBuilder().append("\\u00 yo"));
 }
 
 TEST(UtilTest, TokenizeInput) {
-    auto tokenizer = util::tokenize(StringPiece16(u"this| is|the|end"), u'|');
+    auto tokenizer = util::tokenize(StringPiece("this| is|the|end"), '|');
     auto iter = tokenizer.begin();
-    ASSERT_EQ(*iter, StringPiece16(u"this"));
+    ASSERT_EQ(*iter, StringPiece("this"));
     ++iter;
-    ASSERT_EQ(*iter, StringPiece16(u" is"));
+    ASSERT_EQ(*iter, StringPiece(" is"));
     ++iter;
-    ASSERT_EQ(*iter, StringPiece16(u"the"));
+    ASSERT_EQ(*iter, StringPiece("the"));
     ++iter;
-    ASSERT_EQ(*iter, StringPiece16(u"end"));
+    ASSERT_EQ(*iter, StringPiece("end"));
     ++iter;
     ASSERT_EQ(tokenizer.end(), iter);
 }
 
 TEST(UtilTest, TokenizeEmptyString) {
-    auto tokenizer = util::tokenize(StringPiece16(u""), u'|');
+    auto tokenizer = util::tokenize(StringPiece(""), '|');
     auto iter = tokenizer.begin();
     ASSERT_NE(tokenizer.end(), iter);
-    ASSERT_EQ(StringPiece16(), *iter);
+    ASSERT_EQ(StringPiece(), *iter);
     ++iter;
     ASSERT_EQ(tokenizer.end(), iter);
 }
 
 TEST(UtilTest, TokenizeAtEnd) {
-    auto tokenizer = util::tokenize(StringPiece16(u"one."), u'.');
+    auto tokenizer = util::tokenize(StringPiece("one."), '.');
     auto iter = tokenizer.begin();
-    ASSERT_EQ(*iter, StringPiece16(u"one"));
+    ASSERT_EQ(*iter, StringPiece("one"));
     ++iter;
     ASSERT_NE(iter, tokenizer.end());
-    ASSERT_EQ(*iter, StringPiece16());
+    ASSERT_EQ(*iter, StringPiece());
 }
 
 TEST(UtilTest, IsJavaClassName) {
-    EXPECT_TRUE(util::isJavaClassName(u"android.test.Class"));
-    EXPECT_TRUE(util::isJavaClassName(u"android.test.Class$Inner"));
-    EXPECT_TRUE(util::isJavaClassName(u"android_test.test.Class"));
-    EXPECT_TRUE(util::isJavaClassName(u"_android_.test._Class_"));
-    EXPECT_FALSE(util::isJavaClassName(u"android.test.$Inner"));
-    EXPECT_FALSE(util::isJavaClassName(u"android.test.Inner$"));
-    EXPECT_FALSE(util::isJavaClassName(u".test.Class"));
-    EXPECT_FALSE(util::isJavaClassName(u"android"));
+    EXPECT_TRUE(util::isJavaClassName("android.test.Class"));
+    EXPECT_TRUE(util::isJavaClassName("android.test.Class$Inner"));
+    EXPECT_TRUE(util::isJavaClassName("android_test.test.Class"));
+    EXPECT_TRUE(util::isJavaClassName("_android_.test._Class_"));
+    EXPECT_FALSE(util::isJavaClassName("android.test.$Inner"));
+    EXPECT_FALSE(util::isJavaClassName("android.test.Inner$"));
+    EXPECT_FALSE(util::isJavaClassName(".test.Class"));
+    EXPECT_FALSE(util::isJavaClassName("android"));
 }
 
 TEST(UtilTest, IsJavaPackageName) {
-    EXPECT_TRUE(util::isJavaPackageName(u"android"));
-    EXPECT_TRUE(util::isJavaPackageName(u"android.test"));
-    EXPECT_TRUE(util::isJavaPackageName(u"android.test_thing"));
-    EXPECT_FALSE(util::isJavaPackageName(u"_android"));
-    EXPECT_FALSE(util::isJavaPackageName(u"android_"));
-    EXPECT_FALSE(util::isJavaPackageName(u"android."));
-    EXPECT_FALSE(util::isJavaPackageName(u".android"));
-    EXPECT_FALSE(util::isJavaPackageName(u"android._test"));
-    EXPECT_FALSE(util::isJavaPackageName(u".."));
+    EXPECT_TRUE(util::isJavaPackageName("android"));
+    EXPECT_TRUE(util::isJavaPackageName("android.test"));
+    EXPECT_TRUE(util::isJavaPackageName("android.test_thing"));
+    EXPECT_FALSE(util::isJavaPackageName("_android"));
+    EXPECT_FALSE(util::isJavaPackageName("android_"));
+    EXPECT_FALSE(util::isJavaPackageName("android."));
+    EXPECT_FALSE(util::isJavaPackageName(".android"));
+    EXPECT_FALSE(util::isJavaPackageName("android._test"));
+    EXPECT_FALSE(util::isJavaPackageName(".."));
 }
 
 TEST(UtilTest, FullyQualifiedClassName) {
-    Maybe<std::u16string> res = util::getFullyQualifiedClassName(u"android", u".asdf");
+    Maybe<std::string> res = util::getFullyQualifiedClassName("android", ".asdf");
     AAPT_ASSERT_TRUE(res);
-    EXPECT_EQ(res.value(), u"android.asdf");
+    EXPECT_EQ(res.value(), "android.asdf");
 
-    res = util::getFullyQualifiedClassName(u"android", u".a.b");
+    res = util::getFullyQualifiedClassName("android", ".a.b");
     AAPT_ASSERT_TRUE(res);
-    EXPECT_EQ(res.value(), u"android.a.b");
+    EXPECT_EQ(res.value(), "android.a.b");
 
-    res = util::getFullyQualifiedClassName(u"android", u"a.b");
+    res = util::getFullyQualifiedClassName("android", "a.b");
     AAPT_ASSERT_TRUE(res);
-    EXPECT_EQ(res.value(), u"a.b");
+    EXPECT_EQ(res.value(), "a.b");
 
-    res = util::getFullyQualifiedClassName(u"", u"a.b");
+    res = util::getFullyQualifiedClassName("", "a.b");
     AAPT_ASSERT_TRUE(res);
-    EXPECT_EQ(res.value(), u"a.b");
+    EXPECT_EQ(res.value(), "a.b");
 
-    res = util::getFullyQualifiedClassName(u"android", u"Class");
+    res = util::getFullyQualifiedClassName("android", "Class");
     AAPT_ASSERT_TRUE(res);
-    EXPECT_EQ(res.value(), u"android.Class");
+    EXPECT_EQ(res.value(), "android.Class");
 
-    res = util::getFullyQualifiedClassName(u"", u"");
+    res = util::getFullyQualifiedClassName("", "");
     AAPT_ASSERT_FALSE(res);
 
-    res = util::getFullyQualifiedClassName(u"android", u"./Apple");
+    res = util::getFullyQualifiedClassName("android", "./Apple");
     AAPT_ASSERT_FALSE(res);
 }
 
 TEST(UtilTest, ExtractResourcePathComponents) {
-    StringPiece16 prefix, entry, suffix;
-    ASSERT_TRUE(util::extractResFilePathParts(u"res/xml-sw600dp/entry.xml", &prefix, &entry,
+    StringPiece prefix, entry, suffix;
+    ASSERT_TRUE(util::extractResFilePathParts("res/xml-sw600dp/entry.xml", &prefix, &entry,
                                               &suffix));
-    EXPECT_EQ(prefix, u"res/xml-sw600dp/");
-    EXPECT_EQ(entry, u"entry");
-    EXPECT_EQ(suffix, u".xml");
+    EXPECT_EQ(prefix, "res/xml-sw600dp/");
+    EXPECT_EQ(entry, "entry");
+    EXPECT_EQ(suffix, ".xml");
 
-    ASSERT_TRUE(util::extractResFilePathParts(u"res/xml-sw600dp/entry.9.png", &prefix, &entry,
+    ASSERT_TRUE(util::extractResFilePathParts("res/xml-sw600dp/entry.9.png", &prefix, &entry,
                                               &suffix));
 
-    EXPECT_EQ(prefix, u"res/xml-sw600dp/");
-    EXPECT_EQ(entry, u"entry");
-    EXPECT_EQ(suffix, u".9.png");
+    EXPECT_EQ(prefix, "res/xml-sw600dp/");
+    EXPECT_EQ(entry, "entry");
+    EXPECT_EQ(suffix, ".9.png");
 
-    EXPECT_FALSE(util::extractResFilePathParts(u"AndroidManifest.xml", &prefix, &entry, &suffix));
-    EXPECT_FALSE(util::extractResFilePathParts(u"res/.xml", &prefix, &entry, &suffix));
+    EXPECT_FALSE(util::extractResFilePathParts("AndroidManifest.xml", &prefix, &entry, &suffix));
+    EXPECT_FALSE(util::extractResFilePathParts("res/.xml", &prefix, &entry, &suffix));
 
-    ASSERT_TRUE(util::extractResFilePathParts(u"res//.", &prefix, &entry, &suffix));
-    EXPECT_EQ(prefix, u"res//");
-    EXPECT_EQ(entry, u"");
-    EXPECT_EQ(suffix, u".");
+    ASSERT_TRUE(util::extractResFilePathParts("res//.", &prefix, &entry, &suffix));
+    EXPECT_EQ(prefix, "res//");
+    EXPECT_EQ(entry, "");
+    EXPECT_EQ(suffix, ".");
 }
 
 TEST(UtilTest, VerifyJavaStringFormat) {
-    ASSERT_TRUE(util::verifyJavaStringFormat(u"%09.34f"));
-    ASSERT_TRUE(util::verifyJavaStringFormat(u"%9$.34f %8$"));
-    ASSERT_TRUE(util::verifyJavaStringFormat(u"%% %%"));
-    ASSERT_FALSE(util::verifyJavaStringFormat(u"%09$f %f"));
-    ASSERT_FALSE(util::verifyJavaStringFormat(u"%09f %08s"));
+    ASSERT_TRUE(util::verifyJavaStringFormat("%09.34f"));
+    ASSERT_TRUE(util::verifyJavaStringFormat("%9$.34f %8$"));
+    ASSERT_TRUE(util::verifyJavaStringFormat("%% %%"));
+    ASSERT_FALSE(util::verifyJavaStringFormat("%09$f %f"));
+    ASSERT_FALSE(util::verifyJavaStringFormat("%09f %08s"));
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/xml/XmlActionExecutor.cpp b/tools/aapt2/xml/XmlActionExecutor.cpp
index 0ef67ea..745079c 100644
--- a/tools/aapt2/xml/XmlActionExecutor.cpp
+++ b/tools/aapt2/xml/XmlActionExecutor.cpp
@@ -57,8 +57,7 @@
 
     for (Element* childEl : el->getChildElements()) {
         if (childEl->namespaceUri.empty()) {
-            std::map<std::u16string, XmlNodeAction>::const_iterator iter =
-                    mMap.find(childEl->name);
+            std::map<std::string, XmlNodeAction>::const_iterator iter = mMap.find(childEl->name);
             if (iter != mMap.end()) {
                 error |= !iter->second.execute(policy, diag, childEl);
                 continue;
@@ -91,7 +90,7 @@
     }
 
     if (el->namespaceUri.empty()) {
-        std::map<std::u16string, XmlNodeAction>::const_iterator iter = mMap.find(el->name);
+        std::map<std::string, XmlNodeAction>::const_iterator iter = mMap.find(el->name);
         if (iter != mMap.end()) {
             return iter->second.execute(policy, &sourceDiag, el);
         }
diff --git a/tools/aapt2/xml/XmlActionExecutor.h b/tools/aapt2/xml/XmlActionExecutor.h
index 36b94db..cad508c 100644
--- a/tools/aapt2/xml/XmlActionExecutor.h
+++ b/tools/aapt2/xml/XmlActionExecutor.h
@@ -55,7 +55,7 @@
      * Find or create a child XmlNodeAction that will be performed for the child element
      * with the name `name`.
      */
-    XmlNodeAction& operator[](const std::u16string& name) {
+    XmlNodeAction& operator[](const std::string& name) {
         return mMap[name];
     }
 
@@ -70,7 +70,7 @@
 
     bool execute(XmlActionExecutorPolicy policy, SourcePathDiagnostics* diag, Element* el) const;
 
-    std::map<std::u16string, XmlNodeAction> mMap;
+    std::map<std::string, XmlNodeAction> mMap;
     std::vector<ActionFuncWithDiag> mActions;
 };
 
@@ -86,7 +86,7 @@
      * Find or create a root XmlNodeAction that will be performed for the root XML element
      * with the name `name`.
      */
-    XmlNodeAction& operator[](const std::u16string& name) {
+    XmlNodeAction& operator[](const std::string& name) {
         return mMap[name];
     }
 
@@ -97,7 +97,7 @@
     bool execute(XmlActionExecutorPolicy policy, IDiagnostics* diag, XmlResource* doc) const;
 
 private:
-    std::map<std::u16string, XmlNodeAction> mMap;
+    std::map<std::string, XmlNodeAction> mMap;
 
     DISALLOW_COPY_AND_ASSIGN(XmlActionExecutor);
 };
diff --git a/tools/aapt2/xml/XmlActionExecutor_test.cpp b/tools/aapt2/xml/XmlActionExecutor_test.cpp
index ebf287a..106e856 100644
--- a/tools/aapt2/xml/XmlActionExecutor_test.cpp
+++ b/tools/aapt2/xml/XmlActionExecutor_test.cpp
@@ -22,8 +22,8 @@
 
 TEST(XmlActionExecutorTest, BuildsAccessibleNestedPattern) {
     XmlActionExecutor executor;
-    XmlNodeAction& manifestAction = executor[u"manifest"];
-    XmlNodeAction& applicationAction = manifestAction[u"application"];
+    XmlNodeAction& manifestAction = executor["manifest"];
+    XmlNodeAction& applicationAction = manifestAction["application"];
 
     Element* manifestEl = nullptr;
     manifestAction.action([&](Element* manifest) -> bool {
@@ -42,15 +42,15 @@
     StdErrDiagnostics diag;
     ASSERT_TRUE(executor.execute(XmlActionExecutorPolicy::None, &diag, doc.get()));
     ASSERT_NE(nullptr, manifestEl);
-    EXPECT_EQ(std::u16string(u"manifest"), manifestEl->name);
+    EXPECT_EQ(std::string("manifest"), manifestEl->name);
 
     ASSERT_NE(nullptr, applicationEl);
-    EXPECT_EQ(std::u16string(u"application"), applicationEl->name);
+    EXPECT_EQ(std::string("application"), applicationEl->name);
 }
 
 TEST(XmlActionExecutorTest, FailsWhenUndefinedHierarchyExists) {
     XmlActionExecutor executor;
-    executor[u"manifest"][u"application"];
+    executor["manifest"]["application"];
 
     std::unique_ptr<XmlResource> doc = test::buildXmlDom(
             "<manifest><application /><activity /></manifest>");
diff --git a/tools/aapt2/xml/XmlDom.cpp b/tools/aapt2/xml/XmlDom.cpp
index 0ce333a..39bd5bf 100644
--- a/tools/aapt2/xml/XmlDom.cpp
+++ b/tools/aapt2/xml/XmlDom.cpp
@@ -33,13 +33,13 @@
 struct Stack {
     std::unique_ptr<xml::Node> root;
     std::stack<xml::Node*> nodeStack;
-    std::u16string pendingComment;
+    std::string pendingComment;
 };
 
 /**
  * Extracts the namespace and name of an expanded element or attribute name.
  */
-static void splitName(const char* name, std::u16string* outNs, std::u16string* outName) {
+static void splitName(const char* name, std::string* outNs, std::string* outName) {
     const char* p = name;
     while (*p != 0 && *p != kXmlNamespaceSep) {
         p++;
@@ -47,10 +47,10 @@
 
     if (*p == 0) {
         outNs->clear();
-        *outName = util::utf8ToUtf16(name);
+        *outName = StringPiece(name).toString();
     } else {
-        *outNs = util::utf8ToUtf16(StringPiece(name, (p - name)));
-        *outName = util::utf8ToUtf16(p + 1);
+        *outNs = StringPiece(name, (p - name)).toString();
+        *outName = StringPiece(p + 1).toString();
     }
 }
 
@@ -76,11 +76,11 @@
 
     std::unique_ptr<Namespace> ns = util::make_unique<Namespace>();
     if (prefix) {
-        ns->namespacePrefix = util::utf8ToUtf16(prefix);
+        ns->namespacePrefix = StringPiece(prefix).toString();
     }
 
     if (uri) {
-        ns->namespaceUri = util::utf8ToUtf16(uri);
+        ns->namespaceUri = StringPiece(uri).toString();
     }
 
     addToStack(stack, parser, std::move(ns));
@@ -109,7 +109,7 @@
     while (*attrs) {
         Attribute attribute;
         splitName(*attrs++, &attribute.namespaceUri, &attribute.name);
-        attribute.value = util::utf8ToUtf16(*attrs++);
+        attribute.value = StringPiece(*attrs++).toString();
 
         // Insert in sorted order.
         auto iter = std::lower_bound(el->attributes.begin(), el->attributes.end(), attribute,
@@ -144,14 +144,14 @@
         if (!currentParent->children.empty()) {
             Node* lastChild = currentParent->children.back().get();
             if (Text* text = nodeCast<Text>(lastChild)) {
-                text->text += util::utf8ToUtf16(StringPiece(s, len));
+                text->text += StringPiece(s, len).toString();
                 return;
             }
         }
     }
 
     std::unique_ptr<Text> text = util::make_unique<Text>();
-    text->text = util::utf8ToUtf16(StringPiece(s, len));
+    text->text = StringPiece(s, len).toString();
     addToStack(stack, parser, std::move(text));
 }
 
@@ -162,7 +162,7 @@
     if (!stack->pendingComment.empty()) {
         stack->pendingComment += '\n';
     }
-    stack->pendingComment += util::utf8ToUtf16(comment);
+    stack->pendingComment += comment;
 }
 
 std::unique_ptr<XmlResource> inflate(std::istream* in, IDiagnostics* diag, const Source& source) {
@@ -209,17 +209,17 @@
             size_t len;
             const char16_t* str16 = parser->getAttributeNamespace(i, &len);
             if (str16) {
-                attr.namespaceUri.assign(str16, len);
+                attr.namespaceUri = util::utf16ToUtf8(StringPiece16(str16, len));
             }
 
             str16 = parser->getAttributeName(i, &len);
             if (str16) {
-                attr.name.assign(str16, len);
+                attr.name = util::utf16ToUtf8(StringPiece16(str16, len));
             }
 
             str16 = parser->getAttributeStringValue(i, &len);
             if (str16) {
-                attr.value.assign(str16, len);
+                attr.value = util::utf16ToUtf8(StringPiece16(str16, len));
             }
             el->attributes.push_back(std::move(attr));
         }
@@ -250,12 +250,12 @@
                 size_t len;
                 const char16_t* str16 = tree.getNamespacePrefix(&len);
                 if (str16) {
-                    node->namespacePrefix.assign(str16, len);
+                    node->namespacePrefix = util::utf16ToUtf8(StringPiece16(str16, len));
                 }
 
                 str16 = tree.getNamespaceUri(&len);
                 if (str16) {
-                    node->namespaceUri.assign(str16, len);
+                    node->namespaceUri = util::utf16ToUtf8(StringPiece16(str16, len));
                 }
                 newNode = std::move(node);
                 break;
@@ -266,12 +266,12 @@
                 size_t len;
                 const char16_t* str16 = tree.getElementNamespace(&len);
                 if (str16) {
-                    node->namespaceUri.assign(str16, len);
+                    node->namespaceUri = util::utf16ToUtf8(StringPiece16(str16, len));
                 }
 
                 str16 = tree.getElementName(&len);
                 if (str16) {
-                    node->name.assign(str16, len);
+                    node->name = util::utf16ToUtf8(StringPiece16(str16, len));
                 }
 
                 copyAttributes(node.get(), &tree);
@@ -285,7 +285,7 @@
                 size_t len;
                 const char16_t* str16 = tree.getText(&len);
                 if (str16) {
-                    node->text.assign(str16, len);
+                    node->text = util::utf16ToUtf8(StringPiece16(str16, len));
                 }
                 newNode = std::move(node);
                 break;
@@ -347,7 +347,7 @@
     children.push_back(std::move(child));
 }
 
-Attribute* Element::findAttribute(const StringPiece16& ns, const StringPiece16& name) {
+Attribute* Element::findAttribute(const StringPiece& ns, const StringPiece& name) {
     for (auto& attr : attributes) {
         if (ns == attr.namespaceUri && name == attr.name) {
             return &attr;
@@ -356,13 +356,13 @@
     return nullptr;
 }
 
-Element* Element::findChild(const StringPiece16& ns, const StringPiece16& name) {
+Element* Element::findChild(const StringPiece& ns, const StringPiece& name) {
     return findChildWithAttribute(ns, name, {}, {}, {});
 }
 
-Element* Element::findChildWithAttribute(const StringPiece16& ns, const StringPiece16& name,
-                                         const StringPiece16& attrNs, const StringPiece16& attrName,
-                                         const StringPiece16& attrValue) {
+Element* Element::findChildWithAttribute(const StringPiece& ns, const StringPiece& name,
+                                         const StringPiece& attrNs, const StringPiece& attrName,
+                                         const StringPiece& attrValue) {
     for (auto& childNode : children) {
         Node* child = childNode.get();
         while (nodeCast<Namespace>(child)) {
@@ -422,7 +422,7 @@
 }
 
 Maybe<ExtractedPackage> PackageAwareVisitor::transformPackageAlias(
-       const StringPiece16& alias, const StringPiece16& localPackage) const {
+       const StringPiece& alias, const StringPiece& localPackage) const {
    if (alias.empty()) {
        return ExtractedPackage{ localPackage.toString(), false /* private */ };
    }
diff --git a/tools/aapt2/xml/XmlDom.h b/tools/aapt2/xml/XmlDom.h
index b374d20..d083d82 100644
--- a/tools/aapt2/xml/XmlDom.h
+++ b/tools/aapt2/xml/XmlDom.h
@@ -41,7 +41,7 @@
     Node* parent = nullptr;
     size_t lineNumber = 0;
     size_t columnNumber = 0;
-    std::u16string comment;
+    std::string comment;
     std::vector<std::unique_ptr<Node>> children;
 
     virtual ~Node() = default;
@@ -63,8 +63,8 @@
  * A Namespace XML node. Can only have one child.
  */
 struct Namespace : public BaseNode<Namespace> {
-    std::u16string namespacePrefix;
-    std::u16string namespaceUri;
+    std::string namespacePrefix;
+    std::string namespaceUri;
 };
 
 struct AaptAttribute {
@@ -76,9 +76,9 @@
  * An XML attribute.
  */
 struct Attribute {
-    std::u16string namespaceUri;
-    std::u16string name;
-    std::u16string value;
+    std::string namespaceUri;
+    std::string name;
+    std::string value;
 
     Maybe<AaptAttribute> compiledAttribute;
     std::unique_ptr<Item> compiledValue;
@@ -88,16 +88,16 @@
  * An Element XML node.
  */
 struct Element : public BaseNode<Element> {
-    std::u16string namespaceUri;
-    std::u16string name;
+    std::string namespaceUri;
+    std::string name;
     std::vector<Attribute> attributes;
 
-    Attribute* findAttribute(const StringPiece16& ns, const StringPiece16& name);
-    xml::Element* findChild(const StringPiece16& ns, const StringPiece16& name);
-    xml::Element* findChildWithAttribute(const StringPiece16& ns, const StringPiece16& name,
-                                         const StringPiece16& attrNs,
-                                         const StringPiece16& attrName,
-                                         const StringPiece16& attrValue);
+    Attribute* findAttribute(const StringPiece& ns, const StringPiece& name);
+    xml::Element* findChild(const StringPiece& ns, const StringPiece& name);
+    xml::Element* findChildWithAttribute(const StringPiece& ns, const StringPiece& name,
+                                         const StringPiece& attrNs,
+                                         const StringPiece& attrName,
+                                         const StringPiece& attrValue);
     std::vector<xml::Element*> getChildElements();
 };
 
@@ -105,7 +105,7 @@
  * A Text (CDATA) XML node. Can not have any children.
  */
 struct Text : public BaseNode<Text> {
-    std::u16string text;
+    std::string text;
 };
 
 /**
@@ -175,7 +175,7 @@
 class PackageAwareVisitor : public Visitor, public IPackageDeclStack {
 private:
     struct PackageDecl {
-        std::u16string prefix;
+        std::string prefix;
         ExtractedPackage package;
     };
 
@@ -186,7 +186,7 @@
 
     void visit(Namespace* ns) override;
     Maybe<ExtractedPackage> transformPackageAlias(
-            const StringPiece16& alias, const StringPiece16& localPackage) const override;
+            const StringPiece& alias, const StringPiece& localPackage) const override;
 };
 
 // Implementations
diff --git a/tools/aapt2/xml/XmlDom_test.cpp b/tools/aapt2/xml/XmlDom_test.cpp
index 431ee2c..1909f75 100644
--- a/tools/aapt2/xml/XmlDom_test.cpp
+++ b/tools/aapt2/xml/XmlDom_test.cpp
@@ -43,8 +43,8 @@
 
     xml::Namespace* ns = xml::nodeCast<xml::Namespace>(doc->root.get());
     ASSERT_NE(ns, nullptr);
-    EXPECT_EQ(ns->namespaceUri, u"http://schemas.android.com/apk/res/android");
-    EXPECT_EQ(ns->namespacePrefix, u"android");
+    EXPECT_EQ(ns->namespaceUri, xml::kSchemaAndroid);
+    EXPECT_EQ(ns->namespacePrefix, "android");
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/xml/XmlPullParser.cpp b/tools/aapt2/xml/XmlPullParser.cpp
index 323ec05..4a944f1 100644
--- a/tools/aapt2/xml/XmlPullParser.cpp
+++ b/tools/aapt2/xml/XmlPullParser.cpp
@@ -98,7 +98,7 @@
     return mLastError;
 }
 
-const std::u16string& XmlPullParser::getComment() const {
+const std::string& XmlPullParser::getComment() const {
     return mEventQueue.front().data1;
 }
 
@@ -110,14 +110,14 @@
     return mEventQueue.front().depth;
 }
 
-const std::u16string& XmlPullParser::getText() const {
+const std::string& XmlPullParser::getText() const {
     if (getEvent() != Event::kText) {
         return mEmpty;
     }
     return mEventQueue.front().data1;
 }
 
-const std::u16string& XmlPullParser::getNamespacePrefix() const {
+const std::string& XmlPullParser::getNamespacePrefix() const {
     const Event currentEvent = getEvent();
     if (currentEvent != Event::kStartNamespace && currentEvent != Event::kEndNamespace) {
         return mEmpty;
@@ -125,7 +125,7 @@
     return mEventQueue.front().data1;
 }
 
-const std::u16string& XmlPullParser::getNamespaceUri() const {
+const std::string& XmlPullParser::getNamespaceUri() const {
     const Event currentEvent = getEvent();
     if (currentEvent != Event::kStartNamespace && currentEvent != Event::kEndNamespace) {
         return mEmpty;
@@ -134,7 +134,7 @@
 }
 
 Maybe<ExtractedPackage> XmlPullParser::transformPackageAlias(
-        const StringPiece16& alias, const StringPiece16& localPackage) const {
+        const StringPiece& alias, const StringPiece& localPackage) const {
     if (alias.empty()) {
         return ExtractedPackage{ localPackage.toString(), false /* private */ };
     }
@@ -152,7 +152,7 @@
     return {};
 }
 
-const std::u16string& XmlPullParser::getElementNamespace() const {
+const std::string& XmlPullParser::getElementNamespace() const {
     const Event currentEvent = getEvent();
     if (currentEvent != Event::kStartElement && currentEvent != Event::kEndElement) {
         return mEmpty;
@@ -160,7 +160,7 @@
     return mEventQueue.front().data1;
 }
 
-const std::u16string& XmlPullParser::getElementName() const {
+const std::string& XmlPullParser::getElementName() const {
     const Event currentEvent = getEvent();
     if (currentEvent != Event::kStartElement && currentEvent != Event::kEndElement) {
         return mEmpty;
@@ -186,31 +186,31 @@
 /**
  * Extracts the namespace and name of an expanded element or attribute name.
  */
-static void splitName(const char* name, std::u16string& outNs, std::u16string& outName) {
+static void splitName(const char* name, std::string& outNs, std::string& outName) {
     const char* p = name;
     while (*p != 0 && *p != kXmlNamespaceSep) {
         p++;
     }
 
     if (*p == 0) {
-        outNs = std::u16string();
-        outName = util::utf8ToUtf16(name);
+        outNs = std::string();
+        outName = name;
     } else {
-        outNs = util::utf8ToUtf16(StringPiece(name, (p - name)));
-        outName = util::utf8ToUtf16(p + 1);
+        outNs = StringPiece(name, (p - name)).toString();
+        outName = p + 1;
     }
 }
 
 void XMLCALL XmlPullParser::startNamespaceHandler(void* userData, const char* prefix,
         const char* uri) {
     XmlPullParser* parser = reinterpret_cast<XmlPullParser*>(userData);
-    std::u16string namespaceUri = uri != nullptr ? util::utf8ToUtf16(uri) : std::u16string();
+    std::string namespaceUri = uri != nullptr ? uri : std::string();
     parser->mNamespaceUris.push(namespaceUri);
     parser->mEventQueue.push(EventData{
             Event::kStartNamespace,
             XML_GetCurrentLineNumber(parser->mParser),
             parser->mDepth++,
-            prefix != nullptr ? util::utf8ToUtf16(prefix) : std::u16string(),
+            prefix != nullptr ? prefix : std::string(),
             namespaceUri
     });
 }
@@ -227,7 +227,7 @@
     while (*attrs) {
         Attribute attribute;
         splitName(*attrs++, attribute.namespaceUri, attribute.name);
-        attribute.value = util::utf8ToUtf16(*attrs++);
+        attribute.value = *attrs++;
 
         // Insert in sorted order.
         auto iter = std::lower_bound(data.attributes.begin(), data.attributes.end(), attribute);
@@ -245,7 +245,7 @@
             Event::kText,
             XML_GetCurrentLineNumber(parser->mParser),
             parser->mDepth,
-            util::utf8ToUtf16(StringPiece(s, len))
+            StringPiece(s, len).toString()
     });
 }
 
@@ -268,7 +268,7 @@
             Event::kEndNamespace,
             XML_GetCurrentLineNumber(parser->mParser),
             --(parser->mDepth),
-            prefix != nullptr ? util::utf8ToUtf16(prefix) : std::u16string(),
+            prefix != nullptr ? prefix : std::string(),
             parser->mNamespaceUris.top()
     });
     parser->mNamespaceUris.pop();
@@ -281,22 +281,22 @@
             Event::kComment,
             XML_GetCurrentLineNumber(parser->mParser),
             parser->mDepth,
-            util::utf8ToUtf16(comment)
+            comment
     });
 }
 
-Maybe<StringPiece16> findAttribute(const XmlPullParser* parser, const StringPiece16& name) {
-    auto iter = parser->findAttribute(u"", name);
+Maybe<StringPiece> findAttribute(const XmlPullParser* parser, const StringPiece& name) {
+    auto iter = parser->findAttribute("", name);
     if (iter != parser->endAttributes()) {
-        return StringPiece16(util::trimWhitespace(iter->value));
+        return StringPiece(util::trimWhitespace(iter->value));
     }
     return {};
 }
 
-Maybe<StringPiece16> findNonEmptyAttribute(const XmlPullParser* parser, const StringPiece16& name) {
-    auto iter = parser->findAttribute(u"", name);
+Maybe<StringPiece> findNonEmptyAttribute(const XmlPullParser* parser, const StringPiece& name) {
+    auto iter = parser->findAttribute("", name);
     if (iter != parser->endAttributes()) {
-        StringPiece16 trimmed = util::trimWhitespace(iter->value);
+        StringPiece trimmed = util::trimWhitespace(iter->value);
         if (!trimmed.empty()) {
             return trimmed;
         }
diff --git a/tools/aapt2/xml/XmlPullParser.h b/tools/aapt2/xml/XmlPullParser.h
index 7e7070e..ee51b36 100644
--- a/tools/aapt2/xml/XmlPullParser.h
+++ b/tools/aapt2/xml/XmlPullParser.h
@@ -80,28 +80,28 @@
     // These are available for all nodes.
     //
 
-    const std::u16string& getComment() const;
+    const std::string& getComment() const;
     size_t getLineNumber() const;
     size_t getDepth() const;
 
     /**
      * Returns the character data for a Text event.
      */
-    const std::u16string& getText() const;
+    const std::string& getText() const;
 
     //
     // Namespace prefix and URI are available for StartNamespace and EndNamespace.
     //
 
-    const std::u16string& getNamespacePrefix() const;
-    const std::u16string& getNamespaceUri() const;
+    const std::string& getNamespacePrefix() const;
+    const std::string& getNamespaceUri() const;
 
     //
     // These are available for StartElement and EndElement.
     //
 
-    const std::u16string& getElementNamespace() const;
-    const std::u16string& getElementName() const;
+    const std::string& getElementNamespace() const;
+    const std::string& getElementName() const;
 
     /*
      * Uses the current stack of namespaces to resolve the package. Eg:
@@ -115,7 +115,7 @@
      * 'package' will be set to 'defaultPackage'.
      */
     Maybe<ExtractedPackage> transformPackageAlias(
-            const StringPiece16& alias, const StringPiece16& localPackage) const override;
+            const StringPiece& alias, const StringPiece& localPackage) const override;
 
     //
     // Remaining methods are for retrieving information about attributes
@@ -126,9 +126,9 @@
     //
 
     struct Attribute {
-        std::u16string namespaceUri;
-        std::u16string name;
-        std::u16string value;
+        std::string namespaceUri;
+        std::string name;
+        std::string value;
 
         int compare(const Attribute& rhs) const;
         bool operator<(const Attribute& rhs) const;
@@ -141,7 +141,7 @@
     const_iterator beginAttributes() const;
     const_iterator endAttributes() const;
     size_t getAttributeCount() const;
-    const_iterator findAttribute(StringPiece16 namespaceUri, StringPiece16 name) const;
+    const_iterator findAttribute(StringPiece namespaceUri, StringPiece name) const;
 
 private:
     static void XMLCALL startNamespaceHandler(void* userData, const char* prefix, const char* uri);
@@ -155,8 +155,8 @@
         Event event;
         size_t lineNumber;
         size_t depth;
-        std::u16string data1;
-        std::u16string data2;
+        std::string data1;
+        std::string data2;
         std::vector<Attribute> attributes;
     };
 
@@ -165,12 +165,12 @@
     char mBuffer[16384];
     std::queue<EventData> mEventQueue;
     std::string mLastError;
-    const std::u16string mEmpty;
+    const std::string mEmpty;
     size_t mDepth;
-    std::stack<std::u16string> mNamespaceUris;
+    std::stack<std::string> mNamespaceUris;
 
     struct PackageDecl {
-        std::u16string prefix;
+        std::string prefix;
         ExtractedPackage package;
     };
     std::vector<PackageDecl> mPackageAliases;
@@ -179,13 +179,13 @@
 /**
  * Finds the attribute in the current element within the global namespace.
  */
-Maybe<StringPiece16> findAttribute(const XmlPullParser* parser, const StringPiece16& name);
+Maybe<StringPiece> findAttribute(const XmlPullParser* parser, const StringPiece& name);
 
 /**
  * Finds the attribute in the current element within the global namespace. The attribute's value
  * must not be the empty string.
  */
-Maybe<StringPiece16> findNonEmptyAttribute(const XmlPullParser* parser, const StringPiece16& name);
+Maybe<StringPiece> findNonEmptyAttribute(const XmlPullParser* parser, const StringPiece& name);
 
 //
 // Implementation
@@ -270,12 +270,12 @@
     return compare(rhs) != 0;
 }
 
-inline XmlPullParser::const_iterator XmlPullParser::findAttribute(StringPiece16 namespaceUri,
-                                                                  StringPiece16 name) const {
+inline XmlPullParser::const_iterator XmlPullParser::findAttribute(StringPiece namespaceUri,
+                                                                  StringPiece name) const {
     const auto endIter = endAttributes();
     const auto iter = std::lower_bound(beginAttributes(), endIter,
-            std::pair<StringPiece16, StringPiece16>(namespaceUri, name),
-            [](const Attribute& attr, const std::pair<StringPiece16, StringPiece16>& rhs) -> bool {
+            std::pair<StringPiece, StringPiece>(namespaceUri, name),
+            [](const Attribute& attr, const std::pair<StringPiece, StringPiece>& rhs) -> bool {
                 int cmp = attr.namespaceUri.compare(0, attr.namespaceUri.size(),
                         rhs.first.data(), rhs.first.size());
                 if (cmp < 0) return true;
diff --git a/tools/aapt2/xml/XmlPullParser_test.cpp b/tools/aapt2/xml/XmlPullParser_test.cpp
index 8fa2c6d..2c1fdc7 100644
--- a/tools/aapt2/xml/XmlPullParser_test.cpp
+++ b/tools/aapt2/xml/XmlPullParser_test.cpp
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
+#include "test/Test.h"
 #include "util/StringPiece.h"
 #include "xml/XmlPullParser.h"
 
-#include <gtest/gtest.h>
 #include <sstream>
 
 namespace aapt {
@@ -32,21 +32,21 @@
     ASSERT_TRUE(xml::XmlPullParser::nextChildNode(&parser, depthOuter));
 
     EXPECT_EQ(xml::XmlPullParser::Event::kStartElement, parser.getEvent());
-    EXPECT_EQ(StringPiece16(u"a"), StringPiece16(parser.getElementName()));
+    EXPECT_EQ(StringPiece("a"), StringPiece(parser.getElementName()));
 
     const size_t depthA = parser.getDepth();
     ASSERT_TRUE(xml::XmlPullParser::nextChildNode(&parser, depthA));
     EXPECT_EQ(xml::XmlPullParser::Event::kStartElement, parser.getEvent());
-    EXPECT_EQ(StringPiece16(u"b"), StringPiece16(parser.getElementName()));
+    EXPECT_EQ(StringPiece("b"), StringPiece(parser.getElementName()));
 
     const size_t depthB = parser.getDepth();
     ASSERT_TRUE(xml::XmlPullParser::nextChildNode(&parser, depthB));
     EXPECT_EQ(xml::XmlPullParser::Event::kStartElement, parser.getEvent());
-    EXPECT_EQ(StringPiece16(u"c"), StringPiece16(parser.getElementName()));
+    EXPECT_EQ(StringPiece("c"), StringPiece(parser.getElementName()));
 
     ASSERT_TRUE(xml::XmlPullParser::nextChildNode(&parser, depthB));
     EXPECT_EQ(xml::XmlPullParser::Event::kStartElement, parser.getEvent());
-    EXPECT_EQ(StringPiece16(u"e"), StringPiece16(parser.getElementName()));
+    EXPECT_EQ(StringPiece("e"), StringPiece(parser.getElementName()));
 
     ASSERT_FALSE(xml::XmlPullParser::nextChildNode(&parser, depthOuter));
     EXPECT_EQ(xml::XmlPullParser::Event::kEndDocument, parser.getEvent());
diff --git a/tools/aapt2/xml/XmlUtil.cpp b/tools/aapt2/xml/XmlUtil.cpp
index ab9f544..0e9d005 100644
--- a/tools/aapt2/xml/XmlUtil.cpp
+++ b/tools/aapt2/xml/XmlUtil.cpp
@@ -23,19 +23,25 @@
 namespace aapt {
 namespace xml {
 
-Maybe<ExtractedPackage> extractPackageFromNamespace(const std::u16string& namespaceUri) {
-    if (util::stringStartsWith<char16_t>(namespaceUri, kSchemaPublicPrefix)) {
-        StringPiece16 schemaPrefix = kSchemaPublicPrefix;
-        StringPiece16 package = namespaceUri;
+std::string buildPackageNamespace(const StringPiece& package) {
+    std::string result = kSchemaPublicPrefix;
+    result.append(package.data(), package.size());
+    return result;
+}
+
+Maybe<ExtractedPackage> extractPackageFromNamespace(const std::string& namespaceUri) {
+    if (util::stringStartsWith(namespaceUri, kSchemaPublicPrefix)) {
+        StringPiece schemaPrefix = kSchemaPublicPrefix;
+        StringPiece package = namespaceUri;
         package = package.substr(schemaPrefix.size(), package.size() - schemaPrefix.size());
         if (package.empty()) {
             return {};
         }
         return ExtractedPackage{ package.toString(), false /* isPrivate */ };
 
-    } else if (util::stringStartsWith<char16_t>(namespaceUri, kSchemaPrivatePrefix)) {
-        StringPiece16 schemaPrefix = kSchemaPrivatePrefix;
-        StringPiece16 package = namespaceUri;
+    } else if (util::stringStartsWith(namespaceUri, kSchemaPrivatePrefix)) {
+        StringPiece schemaPrefix = kSchemaPrivatePrefix;
+        StringPiece package = namespaceUri;
         package = package.substr(schemaPrefix.size(), package.size() - schemaPrefix.size());
         if (package.empty()) {
             return {};
@@ -43,13 +49,13 @@
         return ExtractedPackage{ package.toString(), true /* isPrivate */ };
 
     } else if (namespaceUri == kSchemaAuto) {
-        return ExtractedPackage{ std::u16string(), true /* isPrivate */ };
+        return ExtractedPackage{ std::string(), true /* isPrivate */ };
     }
     return {};
 }
 
 void transformReferenceFromNamespace(IPackageDeclStack* declStack,
-                                     const StringPiece16& localPackage, Reference* inRef) {
+                                     const StringPiece& localPackage, Reference* inRef) {
     if (inRef->name) {
         if (Maybe<ExtractedPackage> transformedPackage =
                    declStack->transformPackageAlias(inRef->name.value().package, localPackage)) {
diff --git a/tools/aapt2/xml/XmlUtil.h b/tools/aapt2/xml/XmlUtil.h
index 98e5520..f0d59b7 100644
--- a/tools/aapt2/xml/XmlUtil.h
+++ b/tools/aapt2/xml/XmlUtil.h
@@ -25,10 +25,10 @@
 namespace aapt {
 namespace xml {
 
-constexpr const char16_t* kSchemaAuto = u"http://schemas.android.com/apk/res-auto";
-constexpr const char16_t* kSchemaPublicPrefix = u"http://schemas.android.com/apk/res/";
-constexpr const char16_t* kSchemaPrivatePrefix = u"http://schemas.android.com/apk/prv/res/";
-constexpr const char16_t* kSchemaAndroid = u"http://schemas.android.com/apk/res/android";
+constexpr const char* kSchemaAuto = "http://schemas.android.com/apk/res-auto";
+constexpr const char* kSchemaPublicPrefix = "http://schemas.android.com/apk/res/";
+constexpr const char* kSchemaPrivatePrefix = "http://schemas.android.com/apk/prv/res/";
+constexpr const char* kSchemaAndroid = "http://schemas.android.com/apk/res/android";
 
 /**
  * Result of extracting a package name from a namespace URI declaration.
@@ -38,7 +38,7 @@
      * The name of the package. This can be the empty string, which means that the package
      * should be assumed to be the package being compiled.
      */
-    std::u16string package;
+    std::string package;
 
     /**
      * True if the package's private namespace was declared. This means that private resources
@@ -55,7 +55,14 @@
  * Special case: if namespaceUri is http://schemas.android.com/apk/res-auto,
  * returns an empty package name.
  */
-Maybe<ExtractedPackage> extractPackageFromNamespace(const std::u16string& namespaceUri);
+Maybe<ExtractedPackage> extractPackageFromNamespace(const std::string& namespaceUri);
+
+/**
+ * Returns an XML Android namespace for the given package of the form:
+ *
+ * http://schemas.android.com/apk/res/<package>
+ */
+std::string buildPackageNamespace(const StringPiece& package);
 
 /**
  * Interface representing a stack of XML namespace declarations. When looking up the package
@@ -68,7 +75,7 @@
      * Returns an ExtractedPackage struct if the alias given corresponds with a package declaration.
      */
     virtual Maybe<ExtractedPackage> transformPackageAlias(
-            const StringPiece16& alias, const StringPiece16& localPackage) const = 0;
+            const StringPiece& alias, const StringPiece& localPackage) const = 0;
 };
 
 /**
@@ -77,7 +84,7 @@
  * the package declaration was private.
  */
 void transformReferenceFromNamespace(IPackageDeclStack* declStack,
-                                     const StringPiece16& localPackage, Reference* inRef);
+                                     const StringPiece& localPackage, Reference* inRef);
 
 } // namespace xml
 } // namespace aapt
diff --git a/tools/aapt2/xml/XmlUtil_test.cpp b/tools/aapt2/xml/XmlUtil_test.cpp
index 319e770..cbeb8bc 100644
--- a/tools/aapt2/xml/XmlUtil_test.cpp
+++ b/tools/aapt2/xml/XmlUtil_test.cpp
@@ -14,40 +14,37 @@
  * limitations under the License.
  */
 
-#include "test/Common.h"
+#include "test/Test.h"
 #include "xml/XmlUtil.h"
 
-#include <gtest/gtest.h>
-
 namespace aapt {
 
 TEST(XmlUtilTest, ExtractPackageFromNamespace) {
-    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace(u"com.android"));
-    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace(u"http://schemas.android.com/apk"));
-    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace(u"http://schemas.android.com/apk/res"));
-    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace(u"http://schemas.android.com/apk/res/"));
-    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace(
-            u"http://schemas.android.com/apk/prv/res/"));
+    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace("com.android"));
+    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace("http://schemas.android.com/apk"));
+    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace("http://schemas.android.com/apk/res"));
+    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace("http://schemas.android.com/apk/res/"));
+    AAPT_ASSERT_FALSE(xml::extractPackageFromNamespace("http://schemas.android.com/apk/prv/res/"));
 
     Maybe<xml::ExtractedPackage> p =
-            xml::extractPackageFromNamespace(u"http://schemas.android.com/apk/res/a");
+            xml::extractPackageFromNamespace("http://schemas.android.com/apk/res/a");
     AAPT_ASSERT_TRUE(p);
-    EXPECT_EQ(std::u16string(u"a"), p.value().package);
+    EXPECT_EQ(std::string("a"), p.value().package);
     EXPECT_FALSE(p.value().privateNamespace);
 
-    p = xml::extractPackageFromNamespace(u"http://schemas.android.com/apk/prv/res/android");
+    p = xml::extractPackageFromNamespace("http://schemas.android.com/apk/prv/res/android");
     AAPT_ASSERT_TRUE(p);
-    EXPECT_EQ(std::u16string(u"android"), p.value().package);
+    EXPECT_EQ(std::string("android"), p.value().package);
     EXPECT_TRUE(p.value().privateNamespace);
 
-    p = xml::extractPackageFromNamespace(u"http://schemas.android.com/apk/prv/res/com.test");
+    p = xml::extractPackageFromNamespace("http://schemas.android.com/apk/prv/res/com.test");
     AAPT_ASSERT_TRUE(p);
-    EXPECT_EQ(std::u16string(u"com.test"), p.value().package);
+    EXPECT_EQ(std::string("com.test"), p.value().package);
     EXPECT_TRUE(p.value().privateNamespace);
 
-    p = xml::extractPackageFromNamespace(u"http://schemas.android.com/apk/res-auto");
+    p = xml::extractPackageFromNamespace("http://schemas.android.com/apk/res-auto");
     AAPT_ASSERT_TRUE(p);
-    EXPECT_EQ(std::u16string(), p.value().package);
+    EXPECT_EQ(std::string(), p.value().package);
     EXPECT_TRUE(p.value().privateNamespace);
 }
 
diff --git a/tools/fonts/fontchain_lint.py b/tools/fonts/fontchain_lint.py
index 2e717a6..1dd53a9 100755
--- a/tools/fonts/fontchain_lint.py
+++ b/tools/fonts/fontchain_lint.py
@@ -256,23 +256,33 @@
 
 
 def check_emoji_coverage(all_emoji, equivalent_emoji):
+  emoji_font = get_emoji_font()
+  check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji)
+
+
+def get_emoji_font():
     emoji_fonts = [
         record.font for record in _fallback_chain
         if 'Zsye' in record.scripts]
     assert len(emoji_fonts) == 1, 'There are %d emoji fonts.' % len(emoji_fonts)
-    emoji_font = emoji_fonts[0]
-    coverage = get_emoji_map(emoji_font)
+    return emoji_fonts[0]
 
+
+def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji):
+    coverage = get_emoji_map(emoji_font)
     for sequence in all_emoji:
         assert sequence in coverage, (
             '%s is not supported in the emoji font.' % printable(sequence))
 
+    # disable temporarily - we cover more than this
+    """
     for sequence in coverage:
         if sequence in {0x0000, 0x000D, 0x0020}:
             # The font needs to support a few extra characters, which is OK
             continue
         assert sequence in all_emoji, (
             'Emoji font should not support %s.' % printable(sequence))
+    """
 
     for first, second in sorted(equivalent_emoji.items()):
         assert coverage[first] == coverage[second], (
@@ -280,6 +290,8 @@
                 printable(first),
                 printable(second)))
 
+    # disable temporarily - some equivalent sequences we don't even know about
+    """
     for glyph in set(coverage.values()):
         maps_to_glyph = [seq for seq in coverage if coverage[seq] == glyph]
         if len(maps_to_glyph) > 1:
@@ -295,7 +307,7 @@
                 'The sequences %s should not result in the same glyph %s' % (
                     printable(equivalent_seqs),
                     glyph))
-
+    """
 
 def check_emoji_defaults(default_emoji):
     missing_text_chars = _emoji_properties['Emoji'] - default_emoji
@@ -412,6 +424,16 @@
         path.join(ucd_path, 'emoji-zwj-sequences.txt'))
 
 
+    # add in UN flag
+    UN_seq = flag_sequence('UN')
+    _emoji_sequences[UN_seq] = 'Emoji_Flag_Sequence'
+
+
+    # add in UN flag
+    UN_seq = flag_sequence('UN')
+    _emoji_sequences[UN_seq] = 'Emoji_Flag_Sequence'
+
+
 def flag_sequence(territory_code):
     return tuple(0x1F1E6 + ord(ch) - ord('A') for ch in territory_code)
 
@@ -468,6 +490,11 @@
     (0x1F468, 0x200D, 0x1F469, 0x200D, 0x1F466): 0x1F46A,
 }
 
+
+def is_fitzpatrick_modifier(cp):
+  return 0x1f3fb <= cp <= 0x1f3ff
+
+
 def compute_expected_emoji():
     equivalent_emoji = {}
     sequence_pieces = set()
@@ -485,7 +512,15 @@
         sequence_pieces.update(sequence)
         # Add reverse of all emoji ZWJ sequences, which are added to the fonts
         # as a workaround to get the sequences work in RTL text.
-        reversed_seq = tuple(reversed(sequence))
+        reversed_seq = list(reversed(sequence))
+        # if there are fitzpatrick modifiers in the sequence, keep them after
+        # the emoji they modify
+        for i in xrange(1, len(reversed_seq)):
+          if is_fitzpatrick_modifier(reversed_seq[i - 1]):
+            tmp = reversed_seq[i]
+            reversed_seq[i] = reversed_seq[i-1]
+            reversed_seq[i-1] = tmp
+        reversed_seq = tuple(reversed_seq)
         all_sequences.add(reversed_seq)
         equivalent_emoji[reversed_seq] = sequence
 
@@ -521,8 +556,8 @@
 
 
 def main():
-    target_out = sys.argv[1]
     global _fonts_dir
+    target_out = sys.argv[1]
     _fonts_dir = path.join(target_out, 'fonts')
 
     fonts_xml_path = path.join(target_out, 'etc', 'fonts.xml')
diff --git a/tools/layoutlib/bridge/src/android/content/res/Resources_Delegate.java b/tools/layoutlib/bridge/src/android/content/res/Resources_Delegate.java
index ea320c7..c3d4cef6 100644
--- a/tools/layoutlib/bridge/src/android/content/res/Resources_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/content/res/Resources_Delegate.java
@@ -45,6 +45,7 @@
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
+import android.util.LruCache;
 import android.util.TypedValue;
 import android.view.ViewGroup.LayoutParams;
 
@@ -58,6 +59,9 @@
 public class Resources_Delegate {
 
     private static boolean[] mPlatformResourceFlag = new boolean[1];
+    // TODO: This cache is cleared every time a render session is disposed. Look into making this
+    // more long lived.
+    private static LruCache<String, Drawable.ConstantState> sDrawableCache = new LruCache<>(50);
 
     public static Resources initSystem(BridgeContext context,
             AssetManager assets,
@@ -75,6 +79,7 @@
      * would prevent us from unloading the library.
      */
     public static void disposeSystem() {
+        sDrawableCache.evictAll();
         Resources.mSystem.mContext = null;
         Resources.mSystem.mLayoutlibCallback = null;
         Resources.mSystem = null;
@@ -137,9 +142,23 @@
     @LayoutlibDelegate
     static Drawable getDrawable(Resources resources, int id, Theme theme) {
         Pair<String, ResourceValue> value = getResourceValue(resources, id, mPlatformResourceFlag);
-
         if (value != null) {
-            return ResourceHelper.getDrawable(value.getSecond(), resources.mContext, theme);
+            String key = value.getSecond().getValue();
+
+            Drawable.ConstantState constantState = key != null ? sDrawableCache.get(key) : null;
+            Drawable drawable;
+            if (constantState != null) {
+                drawable = constantState.newDrawable(resources, theme);
+            } else {
+                drawable =
+                        ResourceHelper.getDrawable(value.getSecond(), resources.mContext, theme);
+
+                if (key != null) {
+                    sDrawableCache.put(key, drawable.getConstantState());
+                }
+            }
+
+            return drawable;
         }
 
         // id was not found or not resolved. Throw a NotFoundException.
diff --git a/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
index 1dfd305..3e81e83 100644
--- a/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
@@ -70,6 +70,13 @@
     private static final DelegateManager<VNativeObject> sPathManager =
             new DelegateManager<>(VNativeObject.class);
 
+    private static long addNativeObject(VNativeObject object) {
+        long ptr = sPathManager.addNewDelegate(object);
+        object.setNativePtr(ptr);
+
+        return ptr;
+    }
+
     /**
      * Obtains styled attributes from the theme, if available, or unstyled resources if the theme is
      * null.
@@ -91,16 +98,14 @@
 
     @LayoutlibDelegate
     static long nCreateTree(long rootGroupPtr) {
-        VGroup_Delegate rootGroup = VNativeObject.getDelegate(rootGroupPtr);
-        return sPathManager.addNewDelegate(new VPathRenderer_Delegate(rootGroup));
+        return addNativeObject(new VPathRenderer_Delegate(rootGroupPtr));
     }
 
     @LayoutlibDelegate
     static long nCreateTreeFromCopy(long rendererToCopyPtr, long rootGroupPtr) {
-        VGroup_Delegate rootGroup = VNativeObject.getDelegate(rootGroupPtr);
         VPathRenderer_Delegate rendererToCopy = VNativeObject.getDelegate(rendererToCopyPtr);
-        return sPathManager.addNewDelegate(new VPathRenderer_Delegate(rendererToCopy,
-                rootGroup));
+        return addNativeObject(new VPathRenderer_Delegate(rendererToCopy,
+                rootGroupPtr));
     }
 
     @LayoutlibDelegate
@@ -157,14 +162,13 @@
 
     @LayoutlibDelegate
     static long nCreateFullPath() {
-        return sPathManager.addNewDelegate(new VFullPath_Delegate());
+        return addNativeObject(new VFullPath_Delegate());
     }
 
     @LayoutlibDelegate
     static long nCreateFullPath(long nativeFullPathPtr) {
         VFullPath_Delegate original = VNativeObject.getDelegate(nativeFullPathPtr);
-
-        return sPathManager.addNewDelegate(new VFullPath_Delegate(original));
+        return addNativeObject(new VFullPath_Delegate(original));
     }
 
     @LayoutlibDelegate
@@ -230,25 +234,24 @@
 
     @LayoutlibDelegate
     static long nCreateClipPath() {
-        return sPathManager.addNewDelegate(new VClipPath_Delegate());
+        return addNativeObject(new VClipPath_Delegate());
     }
 
     @LayoutlibDelegate
     static long nCreateClipPath(long clipPathPtr) {
         VClipPath_Delegate original = VNativeObject.getDelegate(clipPathPtr);
-        return sPathManager.addNewDelegate(new VClipPath_Delegate(original));
+        return addNativeObject(new VClipPath_Delegate(original));
     }
 
     @LayoutlibDelegate
     static long nCreateGroup() {
-        return sPathManager.addNewDelegate(new VGroup_Delegate());
+        return addNativeObject(new VGroup_Delegate());
     }
 
     @LayoutlibDelegate
     static long nCreateGroup(long groupPtr) {
         VGroup_Delegate original = VNativeObject.getDelegate(groupPtr);
-        return sPathManager.addNewDelegate(
-                new VGroup_Delegate(original, new ArrayMap<String, Object>()));
+        return addNativeObject(new VGroup_Delegate(original, new ArrayMap<>()));
     }
 
     @LayoutlibDelegate
@@ -501,7 +504,9 @@
      *     not need it
      * </ol>
      */
-    interface VNativeObject {
+    abstract static class VNativeObject {
+        long mNativePtr = 0;
+
         @NonNull
         static <T> T getDelegate(long nativePtr) {
             //noinspection unchecked
@@ -511,7 +516,17 @@
             return vNativeObject;
         }
 
-        void setName(String name);
+        abstract void setName(String name);
+
+        void setNativePtr(long nativePtr) {
+            mNativePtr = nativePtr;
+        }
+
+        /**
+         * Method to explicitly dispose native objects
+         */
+        void dispose() {
+        }
     }
 
     private static class VClipPath_Delegate extends VPath_Delegate {
@@ -781,7 +796,7 @@
         }
     }
 
-    static class VGroup_Delegate implements VNativeObject {
+    static class VGroup_Delegate extends VNativeObject {
         // This constants need to be kept in sync with their definitions in VectorDrawable.Group
         private static final int ROTATE_INDEX = 0;
         private static final int PIVOT_X_INDEX = 1;
@@ -967,9 +982,28 @@
         public void setName(String name) {
             mGroupName = name;
         }
+
+        @Override
+        protected void dispose() {
+            mChildren.stream().filter(child -> child instanceof VNativeObject).forEach(child
+                    -> {
+                VNativeObject nativeObject = (VNativeObject) child;
+                if (nativeObject.mNativePtr != 0) {
+                    sPathManager.removeJavaReferenceFor(nativeObject.mNativePtr);
+                    nativeObject.mNativePtr = 0;
+                }
+                nativeObject.dispose();
+            });
+            mChildren.clear();
+        }
+
+        @Override
+        protected void finalize() throws Throwable {
+            super.finalize();
+        }
     }
 
-    public static class VPath_Delegate implements VNativeObject {
+    public static class VPath_Delegate extends VNativeObject {
         protected PathParser_Delegate.PathDataNode[] mNodes = null;
         String mPathName;
         int mChangingConfigurations;
@@ -1009,9 +1043,14 @@
                 PathParser_Delegate.updateNodes(mNodes, nodes);
             }
         }
+
+        @Override
+        void dispose() {
+            mNodes = null;
+        }
     }
 
-    static class VPathRenderer_Delegate implements VNativeObject {
+    static class VPathRenderer_Delegate extends VNativeObject {
         /* Right now the internal data structure is organized as a tree.
          * Each node can be a group node, or a path.
          * A group node can have groups or paths as children, but a path node has
@@ -1029,7 +1068,7 @@
         private final Path mPath;
         private final Path mRenderPath;
         private final Matrix mFinalPathMatrix = new Matrix();
-        private final VGroup_Delegate mRootGroup;
+        private final long mRootGroupPtr;
         private float mViewportWidth = 0;
         private float mViewportHeight = 0;
         private float mRootAlpha = 1.0f;
@@ -1037,15 +1076,15 @@
         private Paint mFillPaint;
         private PathMeasure mPathMeasure;
 
-        private VPathRenderer_Delegate(VGroup_Delegate rootGroup) {
-            mRootGroup = rootGroup;
+        private VPathRenderer_Delegate(long rootGroupPtr) {
+            mRootGroupPtr = rootGroupPtr;
             mPath = new Path();
             mRenderPath = new Path();
         }
 
         private VPathRenderer_Delegate(VPathRenderer_Delegate rendererToCopy,
-                VGroup_Delegate rootGroup) {
-            this(rootGroup);
+                long rootGroupPtr) {
+            this(rootGroupPtr);
             mViewportWidth = rendererToCopy.mViewportWidth;
             mViewportHeight = rendererToCopy.mViewportHeight;
             mRootAlpha = rendererToCopy.mRootAlpha;
@@ -1087,7 +1126,7 @@
 
         public void draw(long canvasPtr, long filterPtr, int w, int h) {
             // Traverse the tree in pre-order to draw.
-            drawGroupTree(mRootGroup, Matrix.IDENTITY_MATRIX, canvasPtr, w, h, filterPtr);
+            drawGroupTree(VNativeObject.getDelegate(mRootGroupPtr), Matrix.IDENTITY_MATRIX, canvasPtr, w, h, filterPtr);
         }
 
         private void drawPath(VGroup_Delegate VGroup, VPath_Delegate VPath, long canvasPtr,
@@ -1227,5 +1266,17 @@
         @Override
         public void setName(String name) {
         }
+
+        @Override
+        protected void finalize() throws Throwable {
+            // The mRootGroupPtr is not explicitly freed by anything in the VectorDrawable so we
+            // need to free it here.
+            VNativeObject nativeObject = sPathManager.getDelegate(mRootGroupPtr);
+            sPathManager.removeJavaReferenceFor(mRootGroupPtr);
+            assert nativeObject != null;
+            nativeObject.dispose();
+
+            super.finalize();
+        }
     }
 }
diff --git a/tools/layoutlib/bridge/src/android/preference/BridgePreferenceInflater.java b/tools/layoutlib/bridge/src/android/preference/BridgePreferenceInflater.java
index 4f00b5d..aa393a9 100644
--- a/tools/layoutlib/bridge/src/android/preference/BridgePreferenceInflater.java
+++ b/tools/layoutlib/bridge/src/android/preference/BridgePreferenceInflater.java
@@ -21,6 +21,7 @@
 
 import android.content.Context;
 import android.util.AttributeSet;
+import android.view.InflateException;
 
 public class BridgePreferenceInflater extends PreferenceInflater {
 
@@ -42,7 +43,15 @@
             viewKey = ((BridgeXmlBlockParser) attrs).getViewCookie();
         }
 
-        Preference preference = super.onCreateItem(name, attrs);
+        Preference preference = null;
+        try {
+            preference = super.onCreateItem(name, attrs);
+        } catch (ClassNotFoundException | InflateException exception) {
+            // name is probably not a valid preference type
+            if ("SwitchPreferenceCompat".equals(name)) {
+                preference = super.onCreateItem("SwitchPreference", attrs);
+            }
+        }
 
         if (viewKey != null && bc != null) {
             bc.addCookie(preference, viewKey);
diff --git a/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java b/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java
index 4e4da8b..49ab9f9 100644
--- a/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java
+++ b/tools/layoutlib/bridge/src/android/view/IWindowManagerImpl.java
@@ -590,4 +590,9 @@
 
     @Override
     public void removeWallpaperInputConsumer() throws RemoteException {}
+
+    @Override
+    public Bitmap screenshotWallpaper() throws RemoteException {
+        return null;
+    }
 }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java
index b3ed9e1..cef622b 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java
@@ -712,6 +712,11 @@
     }
 
     @Override
+    public void setComponentEnabledSettingAsUser(ComponentName componentName, int newState,
+            int flags, int userId) {
+    }
+
+    @Override
     public int getComponentEnabledSetting(ComponentName componentName) {
         return 0;
     }
@@ -721,6 +726,11 @@
     }
 
     @Override
+    public void setApplicationEnabledSettingAsUser(String packageName, int newState, int flags,
+            int userId) {
+    }
+
+    @Override
     public int getApplicationEnabledSetting(String packageName) {
         return 0;
     }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java
index d432120..ab27819 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java
@@ -21,6 +21,7 @@
 import com.android.layoutlib.bridge.Bridge;
 import com.android.layoutlib.bridge.android.BridgeContext;
 import com.android.layoutlib.bridge.android.RenderParamsFlags;
+import com.android.layoutlib.bridge.util.ReflectionUtils;
 import com.android.layoutlib.bridge.util.ReflectionUtils.ReflectionException;
 
 import android.annotation.NonNull;
@@ -116,7 +117,7 @@
     private static void setProperty(@NonNull Object object, @NonNull String propertyClassName,
       @NonNull Object propertyValue, @NonNull String propertySetter)
             throws ReflectionException {
-        Class<?> propertyClass = getClassInstance(propertyValue, propertyClassName);
+        Class<?> propertyClass = ReflectionUtils.getClassInstance(propertyValue, propertyClassName);
         setProperty(object, propertyClass, propertyValue, propertySetter);
     }
 
@@ -126,22 +127,4 @@
         invoke(getMethod(object.getClass(), propertySetter, propertyClass), object, propertyValue);
     }
 
-    /**
-     * Looks through the class hierarchy of {@code object} at runtime and returns the class matching
-     * the name {@code className}.
-     * <p/>
-     * This is used when we cannot use Class.forName() since the class we want was loaded from a
-     * different ClassLoader.
-     */
-    @NonNull
-    private static Class<?> getClassInstance(@NonNull Object object, @NonNull String className) {
-        Class<?> superClass = object.getClass();
-        while (superClass != null) {
-            if (className.equals(superClass.getName())) {
-                return superClass;
-            }
-            superClass = superClass.getSuperclass();
-        }
-        throw new RuntimeException("invalid object/classname combination.");
-    }
 }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/SupportPreferencesUtil.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/SupportPreferencesUtil.java
new file mode 100644
index 0000000..6ad9efc
--- /dev/null
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/SupportPreferencesUtil.java
@@ -0,0 +1,282 @@
+/*
+ * 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.layoutlib.bridge.android.support;
+
+import com.android.ide.common.rendering.api.LayoutlibCallback;
+import com.android.ide.common.rendering.api.RenderResources;
+import com.android.ide.common.rendering.api.ResourceValue;
+import com.android.ide.common.rendering.api.StyleResourceValue;
+import com.android.layoutlib.bridge.android.BridgeContext;
+import com.android.layoutlib.bridge.android.BridgeXmlBlockParser;
+import com.android.layoutlib.bridge.util.ReflectionUtils.ReflectionException;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.LinearLayout.LayoutParams;
+import android.widget.ScrollView;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+
+import static com.android.layoutlib.bridge.util.ReflectionUtils.getAccessibleMethod;
+import static com.android.layoutlib.bridge.util.ReflectionUtils.getClassInstance;
+import static com.android.layoutlib.bridge.util.ReflectionUtils.getMethod;
+import static com.android.layoutlib.bridge.util.ReflectionUtils.invoke;
+
+/**
+ * Class with utility methods to instantiate Preferences provided by the support library.
+ * This class uses reflection to access the support preference objects so it heavily depends on
+ * the API being stable.
+ */
+public class SupportPreferencesUtil {
+    private static final String PREFERENCE_PKG = "android.support.v7.preference";
+    private static final String PREFERENCE_MANAGER = PREFERENCE_PKG + ".PreferenceManager";
+    private static final String PREFERENCE_GROUP = PREFERENCE_PKG + ".PreferenceGroup";
+    private static final String PREFERENCE_GROUP_ADAPTER =
+      PREFERENCE_PKG + ".PreferenceGroupAdapter";
+    private static final String PREFERENCE_INFLATER = PREFERENCE_PKG + ".PreferenceInflater";
+
+    private SupportPreferencesUtil() {
+    }
+
+    @NonNull
+    private static Object instantiateClass(@NonNull LayoutlibCallback callback,
+            @NonNull String className, @Nullable Class[] constructorSignature,
+            @Nullable Object[] constructorArgs) throws ReflectionException {
+        try {
+            Object instance = callback.loadClass(className, constructorSignature, constructorArgs);
+            if (instance == null) {
+                throw new ClassNotFoundException(className + " class not found");
+            }
+            return instance;
+        } catch (ClassNotFoundException e) {
+            throw new ReflectionException(e);
+        }
+    }
+
+    @NonNull
+    private static Object createPreferenceGroupAdapter(@NonNull LayoutlibCallback callback,
+            @NonNull Object preferenceScreen) throws ReflectionException {
+        Class<?> preferenceGroupClass = getClassInstance(preferenceScreen, PREFERENCE_GROUP);
+
+        return instantiateClass(callback, PREFERENCE_GROUP_ADAPTER,
+                new Class[]{preferenceGroupClass}, new Object[]{preferenceScreen});
+    }
+
+    @NonNull
+    private static Object createInflatedPreference(@NonNull LayoutlibCallback callback,
+      @NonNull Context context, @NonNull XmlPullParser parser, @NonNull Object preferenceScreen,
+      @NonNull Object preferenceManager) throws ReflectionException {
+        Class<?> preferenceGroupClass = getClassInstance(preferenceScreen, PREFERENCE_GROUP);
+        Object preferenceInflater = instantiateClass(callback, PREFERENCE_INFLATER,
+          new Class[]{Context.class, preferenceManager.getClass()},
+          new Object[]{context, preferenceManager});
+        Object inflatedPreference =
+                invoke(getAccessibleMethod(preferenceInflater.getClass(), "inflate",
+                        XmlPullParser.class, preferenceGroupClass), preferenceInflater, parser,
+                        null);
+
+        if (inflatedPreference == null) {
+            throw new ReflectionException("inflate method returned null");
+        }
+
+        return inflatedPreference;
+    }
+
+    /**
+     * Returns a themed wrapper context of {@link BridgeContext} with the theme specified in
+     * ?attr/preferenceTheme applied to it.
+     */
+    @Nullable
+    private static Context getThemedContext(@NonNull BridgeContext bridgeContext) {
+        RenderResources resources = bridgeContext.getRenderResources();
+        ResourceValue preferenceTheme = resources.findItemInTheme("preferenceTheme", false);
+
+        if (preferenceTheme != null) {
+            // resolve it, if needed.
+            preferenceTheme = resources.resolveResValue(preferenceTheme);
+        }
+        if (preferenceTheme instanceof StyleResourceValue) {
+            int styleId = bridgeContext.getDynamicIdByStyle(((StyleResourceValue) preferenceTheme));
+            if (styleId != 0) {
+                return new ContextThemeWrapper(bridgeContext, styleId);
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Returns a {@link LinearLayout} containing all the UI widgets representing the preferences
+     * passed in the group adapter.
+     */
+    @Nullable
+    private static LinearLayout setUpPreferencesListView(@NonNull BridgeContext bridgeContext,
+            @NonNull Context themedContext, @NonNull ArrayList<Object> viewCookie,
+            @NonNull Object preferenceGroupAdapter) throws ReflectionException {
+        // Setup the LinearLayout that will contain the preferences
+        LinearLayout listView = new LinearLayout(themedContext);
+        listView.setOrientation(LinearLayout.VERTICAL);
+        listView.setLayoutParams(
+                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+
+        if (!viewCookie.isEmpty()) {
+            bridgeContext.addViewKey(listView, viewCookie.get(0));
+        }
+
+        // Get all the preferences and add them to the LinearLayout
+        Integer preferencesCount =
+                (Integer) invoke(getMethod(preferenceGroupAdapter.getClass(), "getItemCount"),
+                        preferenceGroupAdapter);
+        if (preferencesCount == null) {
+            return listView;
+        }
+
+        Method getItemId = getMethod(preferenceGroupAdapter.getClass(), "getItemId", int.class);
+        Method getItemViewType =
+                getMethod(preferenceGroupAdapter.getClass(), "getItemViewType", int.class);
+        Method onCreateViewHolder =
+                getMethod(preferenceGroupAdapter.getClass(), "onCreateViewHolder", ViewGroup.class,
+                        int.class);
+        for (int i = 0; i < preferencesCount; i++) {
+            Long id = (Long) invoke(getItemId, preferenceGroupAdapter, i);
+            if (id == null) {
+                continue;
+            }
+
+            // Get the type of the preference layout and bind it to a newly created view holder
+            Integer type = (Integer) invoke(getItemViewType, preferenceGroupAdapter, i);
+            Object viewHolder =
+                    invoke(onCreateViewHolder, preferenceGroupAdapter, listView, type);
+            if (viewHolder == null) {
+                continue;
+            }
+            invoke(getMethod(preferenceGroupAdapter.getClass(), "onBindViewHolder",
+                    viewHolder.getClass(), int.class), preferenceGroupAdapter, viewHolder, i);
+
+            try {
+                // Get the view from the view holder and add it to our layout
+                View itemView =
+                        (View) viewHolder.getClass().getField("itemView").get(viewHolder);
+
+                int arrayPosition = id.intValue() - 1; // IDs are 1 based
+                if (arrayPosition >= 0 && arrayPosition < viewCookie.size()) {
+                    bridgeContext.addViewKey(itemView, viewCookie.get(arrayPosition));
+                }
+                listView.addView(itemView);
+            } catch (IllegalAccessException | NoSuchFieldException ignored) {
+            }
+        }
+
+        return listView;
+    }
+
+    /**
+     * Inflates a preferences layout using the support library. If the support library is not
+     * available, this method will return null without advancing the parsers.
+     */
+    @Nullable
+    public static View inflatePreference(@NonNull BridgeContext bridgeContext,
+            @NonNull XmlPullParser parser, @Nullable ViewGroup root) {
+        try {
+            LayoutlibCallback callback = bridgeContext.getLayoutlibCallback();
+
+            Context context = getThemedContext(bridgeContext);
+            if (context == null) {
+                // Probably we couldn't find the "preferenceTheme" in the theme
+                return null;
+            }
+
+            // Create PreferenceManager
+            Object preferenceManager =
+                    instantiateClass(callback, PREFERENCE_MANAGER, new Class[]{Context.class},
+                            new Object[]{context});
+
+            // From this moment on, we can assume that we found the support library and that
+            // nothing should fail
+
+            // Create PreferenceScreen
+            Object preferenceScreen =
+                    invoke(getMethod(preferenceManager.getClass(), "createPreferenceScreen",
+                            Context.class), preferenceManager, context);
+            if (preferenceScreen == null) {
+                return null;
+            }
+
+            // Setup a parser that stores the list of cookies in the same order as the preferences
+            // are inflated. That way we can later reconstruct the list using the preference id
+            // since they are sequential and start in 1.
+            ArrayList<Object> viewCookie = new ArrayList<>();
+            if (parser instanceof BridgeXmlBlockParser) {
+                // Setup a parser that stores the XmlTag
+                parser = new BridgeXmlBlockParser(parser, null, false) {
+                    @Override
+                    public Object getViewCookie() {
+                        return ((BridgeXmlBlockParser) getParser()).getViewCookie();
+                    }
+
+                    @Override
+                    public int next() throws XmlPullParserException, IOException {
+                        int ev = super.next();
+                        if (ev == XmlPullParser.START_TAG) {
+                            viewCookie.add(this.getViewCookie());
+                        }
+
+                        return ev;
+                    }
+                };
+            }
+
+            // Create the PreferenceInflater
+            Object inflatedPreference =
+              createInflatedPreference(callback, context, parser, preferenceScreen,
+                preferenceManager);
+
+            // Setup the RecyclerView (set adapter and layout manager)
+            Object preferenceGroupAdapter =
+                    createPreferenceGroupAdapter(callback, inflatedPreference);
+
+            // Instead of just setting the group adapter as adapter for a RecyclerView, we manually
+            // get all the items and add them to a LinearLayout. This allows us to set the view
+            // cookies so the preferences are correctly linked to their XML.
+            LinearLayout listView = setUpPreferencesListView(bridgeContext, context, viewCookie,
+                    preferenceGroupAdapter);
+
+            ScrollView scrollView = new ScrollView(context);
+            scrollView.setLayoutParams(
+              new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
+            scrollView.addView(listView);
+
+            if (root != null) {
+                root.addView(scrollView);
+            }
+
+            return scrollView;
+        } catch (ReflectionException e) {
+            return null;
+        }
+    }
+}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java
index 0c39026..11da445 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/DelegateManager.java
@@ -129,7 +129,7 @@
         long native_object = sDelegateCounter.getAndIncrement();
         synchronized (DelegateManager.class) {
             sDelegates.put(native_object, newDelegate);
-            assert !sJavaReferences.contains(newDelegate);
+            // Only for development: assert !sJavaReferences.contains(newDelegate);
             sJavaReferences.add(newDelegate);
         }
 
@@ -165,5 +165,6 @@
             int idx = sDelegates.indexOfValue(reference);
             out.printf("[%d] %s\n", sDelegates.keyAt(idx), reference.getClass().getSimpleName());
         }
+        out.printf("\nTotal number of objects: %d\n", sJavaReferences.size());
     }
 }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java
index 537fa77..97698df 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java
@@ -360,8 +360,10 @@
                 return;
             }
             // Check if an actionbar is needed
-            boolean windowActionBar = getBooleanThemeValue(mResources, ATTR_WINDOW_ACTION_BAR,
-                    !mContext.isAppCompatTheme(), true);
+            boolean isMenu = "menu".equals(mParams.getFlag(RenderParamsFlags.FLAG_KEY_ROOT_TAG));
+            boolean windowActionBar = isMenu ||
+                    getBooleanThemeValue(mResources, ATTR_WINDOW_ACTION_BAR,
+                            !mContext.isAppCompatTheme(), true);
             if (windowActionBar) {
                 mActionBarSize = getDimension(ATTR_ACTION_BAR_SIZE, true, DEFAULT_TITLE_BAR_HEIGHT);
             } else {
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
index c890793..feed045 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
@@ -45,6 +45,7 @@
 import com.android.layoutlib.bridge.android.RenderParamsFlags;
 import com.android.layoutlib.bridge.android.graphics.NopCanvas;
 import com.android.layoutlib.bridge.android.support.DesignLibUtil;
+import com.android.layoutlib.bridge.android.support.SupportPreferencesUtil;
 import com.android.layoutlib.bridge.impl.binding.FakeAdapter;
 import com.android.layoutlib.bridge.impl.binding.FakeExpandableAdapter;
 import com.android.resources.ResourceType;
@@ -326,8 +327,14 @@
             boolean isPreference = "PreferenceScreen".equals(rootTag);
             View view;
             if (isPreference) {
-                view = Preference_Delegate.inflatePreference(getContext(), mBlockParser,
+                // First try to use the support library inflater. If something fails, fallback
+                // to the system preference inflater.
+                view = SupportPreferencesUtil.inflatePreference(getContext(), mBlockParser,
                         mContentRoot);
+                if (view == null) {
+                    view = Preference_Delegate.inflatePreference(getContext(), mBlockParser,
+                            mContentRoot);
+                }
             } else {
                 view = mInflater.inflate(mBlockParser, mContentRoot);
             }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/ReflectionUtils.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/ReflectionUtils.java
index 7ce27b6..040191e 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/ReflectionUtils.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/ReflectionUtils.java
@@ -37,6 +37,15 @@
         }
     }
 
+    @NonNull
+    public static Method getAccessibleMethod(@NonNull Class<?> clazz, @NonNull String name,
+      @Nullable Class<?>... params) throws ReflectionException {
+        Method method = getMethod(clazz, name, params);
+        method.setAccessible(true);
+
+        return method;
+    }
+
     @Nullable
     public static Object invoke(@NonNull Method method, @Nullable Object object,
             @Nullable Object... args) throws ReflectionException {
@@ -74,6 +83,25 @@
     }
 
     /**
+     * Looks through the class hierarchy of {@code object} at runtime and returns the class matching
+     * the name {@code className}.
+     * <p>
+     * This is used when we cannot use Class.forName() since the class we want was loaded from a
+     * different ClassLoader.
+     */
+    @NonNull
+    public static Class<?> getClassInstance(@NonNull Object object, @NonNull String className) {
+        Class<?> superClass = object.getClass();
+        while (superClass != null) {
+            if (className.equals(superClass.getName())) {
+                return superClass;
+            }
+            superClass = superClass.getSuperclass();
+        }
+        throw new RuntimeException("invalid object/classname combination.");
+    }
+
+    /**
      * Wraps all reflection related exceptions. Created since ReflectiveOperationException was
      * introduced in 1.7 and we are still on 1.6
      */
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/simple_activity.png b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/simple_activity.png
new file mode 100644
index 0000000..4e448c8
--- /dev/null
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/simple_activity.png
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/simple_activity_noactionbar.png b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/simple_activity_noactionbar.png
new file mode 100644
index 0000000..290018b
--- /dev/null
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/simple_activity_noactionbar.png
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/layout/simple_activity.xml b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/layout/simple_activity.xml
new file mode 100644
index 0000000..14b93f3
--- /dev/null
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/layout/simple_activity.xml
@@ -0,0 +1,32 @@
+<!--
+  ~ 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.
+  -->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingLeft="@dimen/activity_horizontal_margin"
+                android:paddingRight="@dimen/activity_horizontal_margin"
+                android:paddingTop="@dimen/activity_vertical_margin"
+                android:paddingBottom="@dimen/activity_vertical_margin">
+
+    <TextView
+        android:text="@string/hello_world"
+        android:layout_width="wrap_content"
+        android:layout_height="200dp"
+        android:background="#FF0000"
+        android:id="@+id/text1"/>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
index ba687fe..e7c6cc9 100644
--- a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
+++ b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
@@ -320,6 +320,35 @@
         }
     }
 
+    @Test
+    public void testActivityActionBar() throws ClassNotFoundException {
+        LayoutPullParser parser = createLayoutPullParser("simple_activity.xml");
+        LayoutLibTestCallback layoutLibCallback = new LayoutLibTestCallback(getLogger());
+        layoutLibCallback.initResources();
+
+        SessionParams params = getSessionParams(parser, ConfigGenerator.NEXUS_5,
+                layoutLibCallback, "Theme.Material.Light.NoActionBar", false,
+                RenderingMode.V_SCROLL, 22);
+
+        renderAndVerify(params, "simple_activity_noactionbar.png");
+
+        parser = createLayoutPullParser("simple_activity.xml");
+        params = getSessionParams(parser, ConfigGenerator.NEXUS_5,
+                layoutLibCallback, "Theme.Material.Light", false,
+                RenderingMode.V_SCROLL, 22);
+
+        renderAndVerify(params, "simple_activity.png");
+
+        // This also tests that a theme with "NoActionBar" DOES HAVE an action bar when we are
+        // displaying menus.
+        parser = createLayoutPullParser("simple_activity.xml");
+        params = getSessionParams(parser, ConfigGenerator.NEXUS_5,
+                layoutLibCallback, "Theme.Material.Light.NoActionBar", false,
+                RenderingMode.V_SCROLL, 22);
+        params.setFlag(RenderParamsFlags.FLAG_KEY_ROOT_TAG, "menu");
+        renderAndVerify(params, "simple_activity.png");
+    }
+
     /** Test allwidgets.xml */
     @Test
     public void testAllWidgets() throws ClassNotFoundException {
@@ -349,7 +378,11 @@
         obj = null;
         while(ref.get() != null) {
             System.gc();
+            System.runFinalization();
         }
+
+        System.gc();
+        System.runFinalization();
     }
 
     @AfterClass
diff --git a/tools/split-select/Android.mk b/tools/split-select/Android.mk
index 239bed5..863abae 100644
--- a/tools/split-select/Android.mk
+++ b/tools/split-select/Android.mk
@@ -47,8 +47,8 @@
     libaapt \
     libandroidfw \
     libpng \
-    liblog \
     libutils \
+    liblog \
     libcutils \
     libexpat \
     libziparchive-host \
diff --git a/wifi/java/android/net/wifi/nan/ConfigRequest.java b/wifi/java/android/net/wifi/nan/ConfigRequest.java
index 759098e..cd47359 100644
--- a/wifi/java/android/net/wifi/nan/ConfigRequest.java
+++ b/wifi/java/android/net/wifi/nan/ConfigRequest.java
@@ -16,6 +16,7 @@
 
 package android.net.wifi.nan;
 
+import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
diff --git a/wifi/java/android/net/wifi/nan/IWifiNanEventCallback.aidl b/wifi/java/android/net/wifi/nan/IWifiNanEventCallback.aidl
index b95140e..a4e590b 100644
--- a/wifi/java/android/net/wifi/nan/IWifiNanEventCallback.aidl
+++ b/wifi/java/android/net/wifi/nan/IWifiNanEventCallback.aidl
@@ -28,7 +28,7 @@
 {
     void onConnectSuccess();
     void onConnectFail(int reason);
-    void onIdentityChanged();
+    void onIdentityChanged(in byte[] mac);
 
     void onRangingSuccess(int rangingId, in RttManager.ParcelableRttResults results);
     void onRangingFailure(int rangingId, int reason, in String description);
diff --git a/wifi/java/android/net/wifi/nan/PublishConfig.java b/wifi/java/android/net/wifi/nan/PublishConfig.java
index d7cba8f..a4969bd 100644
--- a/wifi/java/android/net/wifi/nan/PublishConfig.java
+++ b/wifi/java/android/net/wifi/nan/PublishConfig.java
@@ -23,6 +23,7 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 /**
@@ -58,7 +59,7 @@
     /**
      * @hide
      */
-    public final String mServiceName;
+    public final byte[] mServiceName;
 
     /**
      * @hide
@@ -110,7 +111,7 @@
      */
     public final boolean mEnableTerminateNotification;
 
-    private PublishConfig(String serviceName, byte[] serviceSpecificInfo,
+    private PublishConfig(byte[] serviceName, byte[] serviceSpecificInfo,
             int serviceSpecificInfoLength, byte[] txFilter, int txFilterLength, byte[] rxFilter,
             int rxFilterLength, int publishType, int publichCount, int ttlSec,
             boolean enableTerminateNotification) {
@@ -147,7 +148,10 @@
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(mServiceName);
+        dest.writeInt(mServiceName.length);
+        if (mServiceName.length != 0) {
+            dest.writeByteArray(mServiceName);
+        }
         dest.writeInt(mServiceSpecificInfoLength);
         if (mServiceSpecificInfoLength != 0) {
             dest.writeByteArray(mServiceSpecificInfo, 0, mServiceSpecificInfoLength);
@@ -174,7 +178,11 @@
 
         @Override
         public PublishConfig createFromParcel(Parcel in) {
-            String serviceName = in.readString();
+            int serviceNameLength = in.readInt();
+            byte[] serviceName = new byte[serviceNameLength];
+            if (serviceNameLength != 0) {
+                in.readByteArray(serviceName);
+            }
             int ssiLength = in.readInt();
             byte[] ssi = new byte[ssiLength];
             if (ssiLength != 0) {
@@ -213,7 +221,7 @@
 
         PublishConfig lhs = (PublishConfig) o;
 
-        if (!mServiceName.equals(lhs.mServiceName)
+        if (!Arrays.equals(mServiceName, lhs.mServiceName)
                 || mServiceSpecificInfoLength != lhs.mServiceSpecificInfoLength
                 || mTxFilterLength != lhs.mTxFilterLength
                 || mRxFilterLength != lhs.mRxFilterLength) {
@@ -259,7 +267,7 @@
     public int hashCode() {
         int result = 17;
 
-        result = 31 * result + mServiceName.hashCode();
+        result = 31 * result + Arrays.hashCode(mServiceName);
         result = 31 * result + mServiceSpecificInfoLength;
         result = 31 * result + Arrays.hashCode(mServiceSpecificInfo);
         result = 31 * result + mTxFilterLength;
@@ -281,6 +289,8 @@
      * @hide
      */
     public void validate() throws IllegalArgumentException {
+        WifiNanUtils.validateServiceName(mServiceName);
+
         if (mServiceSpecificInfoLength != 0 && (mServiceSpecificInfo == null
                 || mServiceSpecificInfo.length < mServiceSpecificInfoLength)) {
             throw new IllegalArgumentException("Non-matching combination of "
@@ -290,10 +300,18 @@
             throw new IllegalArgumentException(
                     "Non-matching combination of txFilter and txFilterLength");
         }
+        if (!TlvBufferUtils.isValid(mTxFilter, mTxFilterLength, 0, 1)) {
+            throw new IllegalArgumentException(
+                    "Invalid txFilter configuration - LV fields do not match up to length");
+        }
         if (mRxFilterLength != 0 && (mRxFilter == null || mRxFilter.length < mRxFilterLength)) {
             throw new IllegalArgumentException(
                     "Non-matching combination of rxFilter and rxFilterLength");
         }
+        if (!TlvBufferUtils.isValid(mRxFilter, mRxFilterLength, 0, 1)) {
+            throw new IllegalArgumentException(
+                    "Invalid rxFilter configuration - LV fields do not match up to length");
+        }
         if (mPublishType < PUBLISH_TYPE_UNSOLICITED || mPublishType > PUBLISH_TYPE_SOLICITED) {
             throw new IllegalArgumentException("Invalid publishType - " + mPublishType);
         }
@@ -317,7 +335,7 @@
      * Builder used to build {@link PublishConfig} objects.
      */
     public static final class Builder {
-        private String mServiceName;
+        private byte[] mServiceName;
         private int mServiceSpecificInfoLength;
         private byte[] mServiceSpecificInfo = new byte[0];
         private int mTxFilterLength;
@@ -333,12 +351,20 @@
          * Specify the service name of the publish session. The actual on-air
          * value is a 6 byte hashed representation of this string.
          *
+         * Per spec: The Service Name is a UTF-8 encoded string from 1 to 255 bytes in length.
+         * The only acceptable single-byte UTF-8 symbols for a Service Name are alphanumeric
+         * values (A-Z, a-z, 0-9), the hyphen ('-'), and the period ('.'). All valid multi-byte
+         * UTF-8 characters are acceptable in a Service Name.
+         *
          * @param serviceName The service name for the publish session.
          * @return The builder to facilitate chaining
          *         {@code builder.setXXX(..).setXXX(..)}.
          */
         public Builder setServiceName(@NonNull String serviceName) {
-            mServiceName = serviceName;
+            if (serviceName == null) {
+                throw new IllegalArgumentException("Invalid service name - must be non-null");
+            }
+            mServiceName = serviceName.getBytes(StandardCharsets.UTF_8);
             return this;
         }
 
@@ -380,8 +406,8 @@
          *         {@code builder.setXXX(..).setXXX(..)}.
          */
         public Builder setServiceSpecificInfo(@NonNull String serviceSpecificInfoStr) {
-            mServiceSpecificInfoLength = serviceSpecificInfoStr.length();
             mServiceSpecificInfo = serviceSpecificInfoStr.getBytes();
+            mServiceSpecificInfoLength = mServiceSpecificInfo.length;
             return this;
         }
 
diff --git a/wifi/java/android/net/wifi/nan/SubscribeConfig.java b/wifi/java/android/net/wifi/nan/SubscribeConfig.java
index 847c8d0..0d3ea01 100644
--- a/wifi/java/android/net/wifi/nan/SubscribeConfig.java
+++ b/wifi/java/android/net/wifi/nan/SubscribeConfig.java
@@ -23,6 +23,7 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 /**
@@ -76,7 +77,7 @@
     /**
      * @hide
      */
-    public final String mServiceName;
+    public final byte[] mServiceName;
 
     /**
      * @hide
@@ -133,7 +134,7 @@
      */
     public final boolean mEnableTerminateNotification;
 
-    private SubscribeConfig(String serviceName, byte[] serviceSpecificInfo,
+    private SubscribeConfig(byte[] serviceName, byte[] serviceSpecificInfo,
             int serviceSpecificInfoLength, byte[] txFilter, int txFilterLength, byte[] rxFilter,
             int rxFilterLength, int subscribeType, int publichCount, int ttlSec, int matchStyle,
             boolean enableTerminateNotification) {
@@ -171,7 +172,10 @@
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(mServiceName);
+        dest.writeInt(mServiceName.length);
+        if (mServiceName.length != 0) {
+            dest.writeByteArray(mServiceName);
+        }
         dest.writeInt(mServiceSpecificInfoLength);
         if (mServiceSpecificInfoLength != 0) {
             dest.writeByteArray(mServiceSpecificInfo, 0, mServiceSpecificInfoLength);
@@ -199,7 +203,11 @@
 
         @Override
         public SubscribeConfig createFromParcel(Parcel in) {
-            String serviceName = in.readString();
+            int serviceNameLength = in.readInt();
+            byte[] serviceName = new byte[serviceNameLength];
+            if (serviceNameLength != 0) {
+                in.readByteArray(serviceName);
+            }
             int ssiLength = in.readInt();
             byte[] ssi = new byte[ssiLength];
             if (ssiLength != 0) {
@@ -239,7 +247,7 @@
 
         SubscribeConfig lhs = (SubscribeConfig) o;
 
-        if (!mServiceName.equals(lhs.mServiceName)
+        if (!Arrays.equals(mServiceName, lhs.mServiceName)
                 || mServiceSpecificInfoLength != lhs.mServiceSpecificInfoLength
                 || mTxFilterLength != lhs.mTxFilterLength
                 || mRxFilterLength != lhs.mRxFilterLength) {
@@ -285,7 +293,7 @@
     public int hashCode() {
         int result = 17;
 
-        result = 31 * result + mServiceName.hashCode();
+        result = 31 * result + Arrays.hashCode(mServiceName);
         result = 31 * result + mServiceSpecificInfoLength;
         result = 31 * result + Arrays.hashCode(mServiceSpecificInfo);
         result = 31 * result + mTxFilterLength;
@@ -308,6 +316,8 @@
      * @hide
      */
     public void validate() throws IllegalArgumentException {
+        WifiNanUtils.validateServiceName(mServiceName);
+
         if (mServiceSpecificInfoLength != 0 && (mServiceSpecificInfo == null
                 || mServiceSpecificInfo.length < mServiceSpecificInfoLength)) {
             throw new IllegalArgumentException("Non-matching combination of "
@@ -317,10 +327,18 @@
             throw new IllegalArgumentException(
                     "Non-matching combination of txFilter and txFilterLength");
         }
+        if (!TlvBufferUtils.isValid(mTxFilter, mTxFilterLength, 0, 1)) {
+            throw new IllegalArgumentException(
+                    "Invalid txFilter configuration - LV fields do not match up to length");
+        }
         if (mRxFilterLength != 0 && (mRxFilter == null || mRxFilter.length < mRxFilterLength)) {
             throw new IllegalArgumentException(
                     "Non-matching combination of rxFilter and rxFilterLength");
         }
+        if (!TlvBufferUtils.isValid(mRxFilter, mRxFilterLength, 0, 1)) {
+            throw new IllegalArgumentException(
+                    "Invalid rxFilter configuration - LV fields do not match up to length");
+        }
         if (mSubscribeType < SUBSCRIBE_TYPE_PASSIVE || mSubscribeType > SUBSCRIBE_TYPE_ACTIVE) {
             throw new IllegalArgumentException("Invalid subscribeType - " + mSubscribeType);
         }
@@ -348,7 +366,7 @@
      * Builder used to build {@link SubscribeConfig} objects.
      */
     public static final class Builder {
-        private String mServiceName;
+        private byte[] mServiceName;
         private int mServiceSpecificInfoLength;
         private byte[] mServiceSpecificInfo = new byte[0];
         private int mTxFilterLength;
@@ -365,12 +383,20 @@
          * Specify the service name of the subscribe session. The actual on-air
          * value is a 6 byte hashed representation of this string.
          *
+         * Per spec: The Service Name is a UTF-8 encoded string from 1 to 255 bytes in length.
+         * The only acceptable single-byte UTF-8 symbols for a Service Name are alphanumeric
+         * values (A-Z, a-z, 0-9), the hyphen ('-'), and the period ('.'). All valid multi-byte
+         * UTF-8 characters are acceptable in a Service Name.
+         *
          * @param serviceName The service name for the subscribe session.
          * @return The builder to facilitate chaining
          *         {@code builder.setXXX(..).setXXX(..)}.
          */
         public Builder setServiceName(@NonNull String serviceName) {
-            mServiceName = serviceName;
+            if (serviceName == null) {
+                throw new IllegalArgumentException("Invalid service name - must be non-null");
+            }
+            mServiceName = serviceName.getBytes(StandardCharsets.UTF_8);
             return this;
         }
 
@@ -413,8 +439,8 @@
          *         {@code builder.setXXX(..).setXXX(..)}.
          */
         public Builder setServiceSpecificInfo(@NonNull String serviceSpecificInfoStr) {
-            mServiceSpecificInfoLength = serviceSpecificInfoStr.length();
             mServiceSpecificInfo = serviceSpecificInfoStr.getBytes();
+            mServiceSpecificInfoLength = mServiceSpecificInfo.length;
             return this;
         }
 
diff --git a/wifi/java/android/net/wifi/nan/TlvBufferUtils.java b/wifi/java/android/net/wifi/nan/TlvBufferUtils.java
index ea8785a..da7ecd8 100644
--- a/wifi/java/android/net/wifi/nan/TlvBufferUtils.java
+++ b/wifi/java/android/net/wifi/nan/TlvBufferUtils.java
@@ -224,7 +224,8 @@
          *         {@code ctr.putXXX(..).putXXX(..)}.
          */
         public TlvConstructor putString(int type, String data) {
-            return putByteArray(type, data.getBytes(), 0, data.length());
+            byte[] bytes = data.getBytes();
+            return putByteArray(type, bytes, 0, bytes.length);
         }
 
         /**
@@ -487,4 +488,43 @@
             };
         }
     }
+
+    /**
+     * Validates that a (T)LV array is constructed correctly. I.e. that its specified Length
+     * fields correctly fill the specified length (and do not overshoot).
+     *
+     * @param array The (T)LV array to verify.
+     * @param length The number of bytes in the array to consider (starting at offset 0).
+     * @param typeSize The size (in bytes) of the type field. Valid values are 0, 1, or 2.
+     * @param lengthSize The size (in bytes) of the length field. Valid values are 1 or 2.
+     * @return A boolean indicating whether the array is valid (true) or invalid (false).
+     */
+    public static boolean isValid(byte[] array, int length, int typeSize, int lengthSize) {
+        if (typeSize < 0 || typeSize > 2) {
+            throw new IllegalArgumentException(
+                    "Invalid arguments - typeSize must be 0, 1, or 2: typeSize=" + typeSize);
+        }
+        if (lengthSize <= 0 || lengthSize > 2) {
+            throw new IllegalArgumentException(
+                    "Invalid arguments - lengthSize must be 1 or 2: lengthSize=" + lengthSize);
+        }
+        if (length < 0 || length > array.length) {
+            throw new IllegalArgumentException(
+                    "Invalid arguments - length must be non-negative and <= array.length: length="
+                            + length + ", array.length=" + array.length);
+        }
+
+        int nextTlvIndex = 0;
+        while (nextTlvIndex + typeSize + lengthSize <= length) {
+            nextTlvIndex += typeSize;
+            if (lengthSize == 1) {
+                nextTlvIndex += lengthSize + array[nextTlvIndex];
+            } else {
+                nextTlvIndex += lengthSize + Memory.peekShort(array, nextTlvIndex,
+                        ByteOrder.BIG_ENDIAN);
+            }
+        }
+
+        return nextTlvIndex == length;
+    }
 }
diff --git a/wifi/java/android/net/wifi/nan/WifiNanEventCallback.java b/wifi/java/android/net/wifi/nan/WifiNanEventCallback.java
index 2b9a5fa..148307d 100644
--- a/wifi/java/android/net/wifi/nan/WifiNanEventCallback.java
+++ b/wifi/java/android/net/wifi/nan/WifiNanEventCallback.java
@@ -62,7 +62,7 @@
      * Called when NAN connect operation
      * {@link WifiNanManager#connect(android.os.Looper, WifiNanEventCallback)}
      * is completed. Doesn't necessarily mean that have joined or started a NAN
-     * cluster. An indication is provided by {@link #onIdentityChanged()}.
+     * cluster. An indication is provided by {@link #onIdentityChanged(byte[])}.
      */
     public void onConnectSuccess() {
         /* empty */
@@ -81,12 +81,14 @@
     }
 
     /**
-     * Called when NAN identity has changed. This may be due to joining a
-     * cluster, starting a cluster, or discovery interface change. The
-     * implication is that peers you've been communicating with may no longer
-     * recognize you and you need to re-establish your identity.
+     * Called when NAN identity has changed and after {@link #onConnectSuccess()}. Call may be
+     * due to joining a cluster, starting a cluster, or discovery interface change. The
+     * implication is that peers you've been communicating with may no longer recognize you and
+     * you need to re-establish your identity.
+     * @param mac The MAC address of the NAN discovery interface. Depending on the permission
+     *            model may be all 0's.
      */
-    public void onIdentityChanged() {
+    public void onIdentityChanged(byte[] mac) {
         /* empty */
     }
 }
diff --git a/wifi/java/android/net/wifi/nan/WifiNanManager.java b/wifi/java/android/net/wifi/nan/WifiNanManager.java
index 9055622..a58cdb7 100644
--- a/wifi/java/android/net/wifi/nan/WifiNanManager.java
+++ b/wifi/java/android/net/wifi/nan/WifiNanManager.java
@@ -16,10 +16,12 @@
 
 package android.net.wifi.nan;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SystemApi;
 import android.net.wifi.RttManager;
 import android.os.Binder;
 import android.os.Bundle;
@@ -28,11 +30,19 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.RemoteException;
+import android.util.Base64;
 import android.util.Log;
 import android.util.SparseArray;
 
 import com.android.internal.annotations.GuardedBy;
 
+import libcore.util.HexEncoding;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.lang.ref.WeakReference;
 import java.util.Arrays;
 
@@ -59,6 +69,101 @@
     private static final int INVALID_CLIENT_ID = 0;
 
     /**
+     * Keys used to generate a Network Specifier for the NAN network request. The network specifier
+     * is formatted as a JSON string.
+     */
+
+    /**
+     * TYPE_1A: role, client_id, session_id, peer_id, token
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_1A = 0;
+
+    /**
+     * TYPE_1B: role, client_id, session_id, peer_id [only permitted for RESPONDER]
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_1B = 1;
+
+    /**
+     * TYPE_1C: role, client_id, session_id, token [only permitted for RESPONDER]
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_1C = 2;
+
+    /**
+     * TYPE_1C: role, client_id, session_id [only permitted for RESPONDER]
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_1D = 3;
+
+    /**
+     * TYPE_2A: role, client_id, peer_mac, token
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_2A = 4;
+
+    /**
+     * TYPE_2B: role, client_id, peer_mac [only permitted for RESPONDER]
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_2B = 5;
+
+    /**
+     * TYPE_2C: role, client_id, token [only permitted for RESPONDER]
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_2C = 6;
+
+    /**
+     * TYPE_2D: role, client_id [only permitted for RESPONDER]
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_2D = 7;
+
+    /**
+     * @hide
+     */
+    public static final int NETWORK_SPECIFIER_TYPE_MAX_VALID = NETWORK_SPECIFIER_TYPE_2D;
+
+    /**
+     * @hide
+     */
+
+    public static final String NETWORK_SPECIFIER_KEY_TYPE = "type";
+
+    /**
+     * @hide
+     */
+
+    public static final String NETWORK_SPECIFIER_KEY_ROLE = "role";
+
+    /**
+     * @hide
+     */
+
+    public static final String NETWORK_SPECIFIER_KEY_CLIENT_ID = "client_id";
+    /**
+     * @hide
+     */
+    public static final String NETWORK_SPECIFIER_KEY_SESSION_ID = "session_id";
+
+    /**
+     * @hide
+     */
+    public static final String NETWORK_SPECIFIER_KEY_PEER_ID = "peer_id";
+
+    /**
+     * @hide
+     */
+    public static final String NETWORK_SPECIFIER_KEY_PEER_MAC = "peer_mac";
+
+    /**
+     * @hide
+     */
+    public static final String NETWORK_SPECIFIER_KEY_TOKEN = "token";
+
+    /**
      * Broadcast intent action to indicate whether Wi-Fi NAN is enabled or
      * disabled. An extra {@link #EXTRA_WIFI_STATE} provides the state
      * information as int.
@@ -92,6 +197,27 @@
      */
     public static final int WIFI_NAN_STATE_ENABLED = 2;
 
+    @IntDef({
+            WIFI_NAN_DATA_PATH_ROLE_INITIATOR, WIFI_NAN_DATA_PATH_ROLE_RESPONDER})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface DataPathRole {
+    }
+
+    /**
+     * Data-path creation role is that of INITIATOR. Used in
+     * {@link #createNetworkSpecifier(int, byte[], byte[], int)} and
+     * {@link WifiNanSession#createNetworkSpecifier(int, int, byte[], int)}.
+     */
+    public static final int WIFI_NAN_DATA_PATH_ROLE_INITIATOR = 0;
+
+    /**
+     * Data-path creation role is that of RESPONDER. Used in
+     * {@link #createNetworkSpecifier(int, byte[], byte[], int)} and
+     * {@link WifiNanSession#createNetworkSpecifier(int, int, byte[], int)}.
+     */
+
+    public static final int WIFI_NAN_DATA_PATH_ROLE_RESPONDER = 1;
+
     private final IWifiNanManager mService;
 
     private final Object mLock = new Object(); // lock access to the following vars
@@ -457,6 +583,181 @@
         }
     }
 
+    /**
+     * {@hide}
+     */
+    public String createNetworkSpecifier(@DataPathRole int role, int sessionId, int peerId,
+            byte[] token, int tokenLength) {
+        if (VDBG) {
+            Log.v(TAG, "createNetworkSpecifier: role=" + role + ", sessionId=" + sessionId
+                    + ", peerId=" + peerId + ", token=" + token + ", tokenLength=" + tokenLength);
+        }
+
+        int type;
+        if (token != null && peerId != 0) {
+            type = NETWORK_SPECIFIER_TYPE_1A;
+        } else if (token == null && peerId != 0) {
+            type = NETWORK_SPECIFIER_TYPE_1B;
+        } else if (token != null && peerId == 0) {
+            type = NETWORK_SPECIFIER_TYPE_1C;
+        } else {
+            type = NETWORK_SPECIFIER_TYPE_1D;
+        }
+
+        if (role != WIFI_NAN_DATA_PATH_ROLE_INITIATOR
+                && role != WIFI_NAN_DATA_PATH_ROLE_RESPONDER) {
+            throw new IllegalArgumentException(
+                    "createNetworkSpecifier: Invalid 'role' argument when creating a network "
+                            + "specifier");
+        }
+        if (role == WIFI_NAN_DATA_PATH_ROLE_INITIATOR) {
+            if (token == null) {
+                throw new IllegalArgumentException(
+                        "createNetworkSpecifier: Invalid null token - not permitted on INITIATOR");
+            }
+            if (peerId == 0) {
+                throw new IllegalArgumentException(
+                        "createNetworkSpecifier: Invalid peer ID (value of 0) - not permitted on "
+                                + "INITIATOR");
+            }
+        }
+        if (tokenLength != 0 && (token == null || token.length < tokenLength)) {
+            throw new IllegalArgumentException(
+                    "Non-matching combination of token and tokenLength");
+        }
+
+        int clientId;
+        synchronized (mLock) {
+            if (mClientId == INVALID_CLIENT_ID) {
+                Log.e(TAG,
+                        "createNetworkSpecifier: called with invalid client ID - not connected "
+                                + "first?");
+                return null;
+            }
+
+            clientId = mClientId;
+        }
+
+        JSONObject json;
+        try {
+            json = new JSONObject();
+            json.put(NETWORK_SPECIFIER_KEY_TYPE, type);
+            json.put(NETWORK_SPECIFIER_KEY_ROLE, role);
+            json.put(NETWORK_SPECIFIER_KEY_CLIENT_ID, clientId);
+            json.put(NETWORK_SPECIFIER_KEY_SESSION_ID, sessionId);
+            if (peerId != 0) {
+                json.put(NETWORK_SPECIFIER_KEY_PEER_ID, peerId);
+            }
+            if (token != null) {
+                json.put(NETWORK_SPECIFIER_KEY_TOKEN,
+                        Base64.encodeToString(token, 0, tokenLength, Base64.DEFAULT));
+            }
+        } catch (JSONException e) {
+            return "";
+        }
+
+        return json.toString();
+    }
+
+    /**
+     * Create a {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(String)}  for a
+     * WiFi NAN data-path connection to the specified peer. The peer MAC cannot be obtained
+     * through {@link WifiNanManager} services - but could be obtained out-of-bound - it refers
+     * to the MAC address of the NAN discovery interface of the peer NAN device.
+     *
+     * @param role  The role of this device:
+     *              {@link WifiNanManager#WIFI_NAN_DATA_PATH_ROLE_INITIATOR} or
+     *              {@link WifiNanManager#WIFI_NAN_DATA_PATH_ROLE_RESPONDER}
+     * @param peer  The MAC address of the peer's NAN discovery interface. A null is permitted
+     *              for a RESPONDER - which implies that any peer can connect.
+     * @param token An arbitrary token (message) to be passed to the peer as part of the
+     *              data-path setup process. On the RESPONDER a null token is permitted and
+     *              matches any peer token - an empty token requires the peer token to be empty
+     *              as well.
+     * @param tokenLength The number of significant (usable) bytes from the {@code token} parameter.
+     * @return A string to be used to construct
+     * {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(String)} to pass to {@link
+     * android.net.ConnectivityManager#requestNetwork(NetworkRequest,
+     * ConnectivityManager.NetworkCallback)}
+     * [or other varierties of that API].
+     */
+    public String createNetworkSpecifier(@DataPathRole int role, @Nullable byte[] peer,
+            @Nullable byte[] token, int tokenLength) {
+        if (VDBG) {
+            Log.v(TAG,
+                    "createNetworkSpecifier: role=" + role + ", token=" + token + ", tokenLength="
+                            + tokenLength);
+        }
+
+        int type;
+        if (token != null && peer != null) {
+            type = NETWORK_SPECIFIER_TYPE_2A;
+        } else if (token == null && peer != null) {
+            type = NETWORK_SPECIFIER_TYPE_2B;
+        } else if (token != null && peer == null) {
+            type = NETWORK_SPECIFIER_TYPE_2C;
+        } else { // both are null
+            type = NETWORK_SPECIFIER_TYPE_2D;
+        }
+
+        if (role != WIFI_NAN_DATA_PATH_ROLE_INITIATOR
+                && role != WIFI_NAN_DATA_PATH_ROLE_RESPONDER) {
+            throw new IllegalArgumentException(
+                    "createNetworkSpecifier: Invalid 'role' argument when creating a network "
+                            + "specifier");
+        }
+        if (role == WIFI_NAN_DATA_PATH_ROLE_INITIATOR) {
+            if (peer == null || peer.length != 6) {
+                throw new IllegalArgumentException(
+                        "createNetworkSpecifier: Invalid peer MAC address");
+            }
+            if (token == null) {
+                throw new IllegalArgumentException(
+                        "createNetworkSpecifier: Invalid null token - not permitted on INITIATOR");
+            }
+        } else {
+            if (peer != null && peer.length != 6) {
+                throw new IllegalArgumentException(
+                        "createNetworkSpecifier: Invalid peer MAC address");
+            }
+        }
+        if (tokenLength != 0 && (token == null || token.length < tokenLength)) {
+            throw new IllegalArgumentException(
+                    "Non-matching combination of token and tokenLength");
+        }
+
+        int clientId;
+        synchronized (mLock) {
+            if (mClientId == INVALID_CLIENT_ID) {
+                Log.e(TAG,
+                        "createNetworkSpecifier: called with invalid client ID - not connected "
+                                + "first?");
+                return null;
+            }
+
+            clientId = mClientId;
+        }
+
+        JSONObject json;
+        try {
+            json = new JSONObject();
+            json.put(NETWORK_SPECIFIER_KEY_TYPE, type);
+            json.put(NETWORK_SPECIFIER_KEY_ROLE, role);
+            json.put(NETWORK_SPECIFIER_KEY_CLIENT_ID, clientId);
+            if (peer != null) {
+                json.put(NETWORK_SPECIFIER_KEY_PEER_MAC, new String(HexEncoding.encode(peer)));
+            }
+            if (token != null) {
+                json.put(NETWORK_SPECIFIER_KEY_TOKEN,
+                        Base64.encodeToString(token, 0, tokenLength, Base64.DEFAULT));
+            }
+        } catch (JSONException e) {
+            return "";
+        }
+
+        return json.toString();
+    }
+
     private static class WifiNanEventCallbackProxy extends IWifiNanEventCallback.Stub {
         private static final int CALLBACK_CONNECT_SUCCESS = 0;
         private static final int CALLBACK_CONNECT_FAIL = 1;
@@ -519,7 +820,7 @@
                             originalCallback.onConnectFail(msg.arg1);
                             break;
                         case CALLBACK_IDENTITY_CHANGED:
-                            originalCallback.onIdentityChanged();
+                            originalCallback.onIdentityChanged((byte[]) msg.obj);
                             break;
                         case CALLBACK_RANGING_SUCCESS: {
                             RttManager.RttListener listener = getAndRemoveRangingListener(msg.arg1);
@@ -575,10 +876,11 @@
         }
 
         @Override
-        public void onIdentityChanged() {
-            if (VDBG) Log.v(TAG, "onIdentityChanged");
+        public void onIdentityChanged(byte[] mac) {
+            if (VDBG) Log.v(TAG, "onIdentityChanged: mac=" + new String(HexEncoding.encode(mac)));
 
             Message msg = mHandler.obtainMessage(CALLBACK_IDENTITY_CHANGED);
+            msg.obj = mac;
             mHandler.sendMessage(msg);
         }
 
diff --git a/wifi/java/android/net/wifi/nan/WifiNanSession.java b/wifi/java/android/net/wifi/nan/WifiNanSession.java
index 3533c02..8eb2f89 100644
--- a/wifi/java/android/net/wifi/nan/WifiNanSession.java
+++ b/wifi/java/android/net/wifi/nan/WifiNanSession.java
@@ -16,6 +16,8 @@
 
 package android.net.wifi.nan;
 
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
 import android.net.wifi.RttManager;
 import android.util.Log;
 
@@ -166,6 +168,7 @@
      *                 {@link android.net.wifi.RttManager.RttParams#bssid} member must be set to
      *                 a peer ID - not to a MAC address.
      * @param listener The listener to receive the results of the ranging session.
+     * @hide PROPOSED_NAN_SYSTEM_API [TODO: b/28847998 - track RTT API & visilibity]
      */
     public void startRanging(RttManager.RttParams[] params, RttManager.RttListener listener) {
         if (mTerminated) {
@@ -181,4 +184,43 @@
             mgr.startRanging(mSessionId, params, listener);
         }
     }
+
+    /**
+     * Create a {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(String)}  for a
+     * WiFi NAN data-path connection to the specified peer. The peer ID is in the context of a
+     * previous match or received message in this session.
+     *
+     * @param role The role of this device:
+     * {@link WifiNanManager#WIFI_NAN_DATA_PATH_ROLE_INITIATOR} or
+     * {@link WifiNanManager#WIFI_NAN_DATA_PATH_ROLE_RESPONDER}
+     * @param peerId The peer ID obtained through
+     * {@link WifiNanSessionCallback#onMatch(int, byte[], int, byte[], int)} or
+     * {@link WifiNanSessionCallback#onMessageReceived(int, byte[], int)}. On the RESPONDER a
+     *               value of 0 is permitted which matches any peer.
+     * @param token An arbitrary token (message) to be passed to the peer as part of the
+     *              data-path setup process. On the RESPONDER a null token is permitted and
+     *              matches any peer token - an empty token requires the peer token to be empty
+     *              as well.
+     * @param tokenLength The number of significant (usable) bytes from the {@code token} parameter.
+     * @return A string to be used to construct
+     * {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(String)} to pass to {@link
+     * android.net.ConnectivityManager#requestNetwork(NetworkRequest,
+     * ConnectivityManager.NetworkCallback)}
+     * [or other varierties of that API].
+     */
+    public String createNetworkSpecifier(@WifiNanManager.DataPathRole int role, int peerId,
+            @Nullable byte[] token, int tokenLength) {
+        if (mTerminated) {
+            Log.w(TAG, "createNetworkSpecifier: called on terminated session");
+            return null;
+        } else {
+            WifiNanManager mgr = mMgr.get();
+            if (mgr == null) {
+                Log.w(TAG, "createNetworkSpecifier: called post GC on WifiNanManager");
+                return null;
+            }
+
+            return mgr.createNetworkSpecifier(role, mSessionId, peerId, token, tokenLength);
+        }
+    }
 }
diff --git a/wifi/java/android/net/wifi/nan/WifiNanUtils.java b/wifi/java/android/net/wifi/nan/WifiNanUtils.java
new file mode 100644
index 0000000..c0f36b4
--- /dev/null
+++ b/wifi/java/android/net/wifi/nan/WifiNanUtils.java
@@ -0,0 +1,54 @@
+/*
+ * 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.wifi.nan;
+
+/**
+ * Provides utilities for the Wifi NAN manager/service.
+ *
+ * @hide
+ */
+public class WifiNanUtils {
+    /**
+     * Per spec: The Service Name is a UTF-8 encoded string from 1 to 255 bytes in length. The
+     * only acceptable single-byte UTF-8 symbols for a Service Name are alphanumeric values (A-Z,
+     * a-z, 0-9), the hyphen ('-'), and the period ('.'). All valid multi-byte UTF-8 characters
+     * are acceptable in a Service Name.
+     */
+    public static void validateServiceName(byte[] serviceNameData) throws IllegalArgumentException {
+        if (serviceNameData == null) {
+            throw new IllegalArgumentException("Invalid service name - null");
+        }
+
+        if (serviceNameData.length < 1 || serviceNameData.length > 255) {
+            throw new IllegalArgumentException("Invalid service name length - must be between "
+                    + "1 and 255 bytes (UTF-8 encoding)");
+        }
+
+        int index = 0;
+        while (index < serviceNameData.length) {
+            byte b = serviceNameData[index];
+            if ((b & 0x80) == 0x00) {
+                if (!((b >= '0' && b <= '9') || (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z')
+                        || b == '-' || b == '.')) {
+                    throw new IllegalArgumentException("Invalid service name - illegal characters,"
+                            + " allowed = (0-9, a-z,A-Z, -, .)");
+                }
+            }
+            ++index;
+        }
+    }
+}
