Merge "Fixed exception caused crash in GL bindings"
diff --git a/api/current.txt b/api/current.txt
index 0bbe603..17ab2e5 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -8121,6 +8121,7 @@
method public final int getWidth();
method public final boolean hasAlpha();
method public final boolean isMutable();
+ method public final boolean isPremultiplied();
method public final boolean isRecycled();
method public void prepareToDraw();
method public void recycle();
@@ -27378,7 +27379,7 @@
field public static final int LETTERS_ONLY = 5; // 0x5
}
- public class DigitalClock extends android.widget.TextView {
+ public deprecated class DigitalClock extends android.widget.TextView {
ctor public DigitalClock(android.content.Context);
ctor public DigitalClock(android.content.Context, android.util.AttributeSet);
}
@@ -28520,7 +28521,7 @@
method public android.view.View newGroupView(boolean, android.view.ViewGroup);
}
- public class SlidingDrawer extends android.view.ViewGroup {
+ public deprecated class SlidingDrawer extends android.view.ViewGroup {
ctor public SlidingDrawer(android.content.Context, android.util.AttributeSet);
ctor public SlidingDrawer(android.content.Context, android.util.AttributeSet, int);
method public void animateClose();
@@ -28986,7 +28987,7 @@
method public void setTextOn(java.lang.CharSequence);
}
- public class TwoLineListItem extends android.widget.RelativeLayout {
+ public deprecated class TwoLineListItem extends android.widget.RelativeLayout {
ctor public TwoLineListItem(android.content.Context);
ctor public TwoLineListItem(android.content.Context, android.util.AttributeSet);
ctor public TwoLineListItem(android.content.Context, android.util.AttributeSet, int);
diff --git a/cmds/sensorservice/Android.mk b/cmds/sensorservice/Android.mk
deleted file mode 100644
index 0811be5..0000000
--- a/cmds/sensorservice/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- main_sensorservice.cpp
-
-LOCAL_SHARED_LIBRARIES := \
- libsensorservice \
- libbinder \
- libutils
-
-LOCAL_C_INCLUDES := \
- $(LOCAL_PATH)/../../services/sensorservice
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE:= sensorservice
-
-include $(BUILD_EXECUTABLE)
diff --git a/cmds/sensorservice/main_sensorservice.cpp b/cmds/sensorservice/main_sensorservice.cpp
deleted file mode 100644
index 8610627..0000000
--- a/cmds/sensorservice/main_sensorservice.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <binder/BinderService.h>
-#include <SensorService.h>
-
-using namespace android;
-
-int main(int argc, char** argv) {
- SensorService::publishAndJoinThreadPool();
- return 0;
-}
diff --git a/cmds/system_server/library/Android.mk b/cmds/system_server/library/Android.mk
index 9f92330..c42424c 100644
--- a/cmds/system_server/library/Android.mk
+++ b/cmds/system_server/library/Android.mk
@@ -8,7 +8,7 @@
native = $(LOCAL_PATH)/../../../../native
LOCAL_C_INCLUDES := \
- $(base)/services/sensorservice \
+ $(native)/services/sensorservice \
$(native)/services/surfaceflinger \
$(JNI_H_INCLUDE)
diff --git a/core/java/android/app/DialogFragment.java b/core/java/android/app/DialogFragment.java
index 8921578..bde5a61 100644
--- a/core/java/android/app/DialogFragment.java
+++ b/core/java/android/app/DialogFragment.java
@@ -60,7 +60,7 @@
*
* <p>DialogFragment needs to ensure that what is happening with the Fragment
* and Dialog states remains consistent. To do this, it watches for dismiss
- * events from the dialog and takes are of removing its own state when they
+ * events from the dialog and takes care of removing its own state when they
* happen. This means you should use {@link #show(FragmentManager, String)}
* or {@link #show(FragmentTransaction, String)} to add an instance of
* DialogFragment to your UI, as these keep track of how DialogFragment should
diff --git a/core/java/android/app/MediaRouteButton.java b/core/java/android/app/MediaRouteButton.java
index c34c163..b0bfe74 100644
--- a/core/java/android/app/MediaRouteButton.java
+++ b/core/java/android/app/MediaRouteButton.java
@@ -60,7 +60,7 @@
}
public MediaRouteButton(Context context, AttributeSet attrs) {
- this(context, null, com.android.internal.R.attr.mediaRouteButtonStyle);
+ this(context, attrs, com.android.internal.R.attr.mediaRouteButtonStyle);
}
public MediaRouteButton(Context context, AttributeSet attrs, int defStyleAttr) {
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 8220fd9..ceb8cde 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -1367,7 +1367,9 @@
public Builder setStyle(Style style) {
if (mStyle != style) {
mStyle = style;
- mStyle.setBuilder(this);
+ if (mStyle != null) {
+ mStyle.setBuilder(this);
+ }
}
return this;
}
@@ -1637,7 +1639,9 @@
public void setBuilder(Builder builder) {
if (mBuilder != builder) {
mBuilder = builder;
- mBuilder.setStyle(this);
+ if (mBuilder != null) {
+ mBuilder.setStyle(this);
+ }
}
}
diff --git a/core/java/android/net/ParseException.java b/core/java/android/net/ParseException.java
index 000fa68..68b209b 100644
--- a/core/java/android/net/ParseException.java
+++ b/core/java/android/net/ParseException.java
@@ -17,10 +17,9 @@
package android.net;
/**
- *
- *
- * When WebAddress Parser Fails, this exception is thrown
+ * Thrown when parsing a URL fails.
*/
+// See non-public class {@link WebAddress}.
public class ParseException extends RuntimeException {
public String response;
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index d9f6bf1..840f27d 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2041,9 +2041,6 @@
AUTO_TIME_ZONE,
TIME_12_24,
DATE_FORMAT,
- ACCELEROMETER_ROTATION,
- USER_ROTATION,
- HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY,
DTMF_TONE_WHEN_DIALING,
DTMF_TONE_TYPE_WHEN_DIALING,
EMERGENCY_TONE,
diff --git a/core/java/android/server/BluetoothAdapterStateMachine.java b/core/java/android/server/BluetoothAdapterStateMachine.java
index 2a994b2..1de1839 100644
--- a/core/java/android/server/BluetoothAdapterStateMachine.java
+++ b/core/java/android/server/BluetoothAdapterStateMachine.java
@@ -467,7 +467,8 @@
mBluetoothService.cleanupAfterFinishDisable();
deferMessage(obtainMessage(TURN_COLD));
if (mContext.getResources().getBoolean
- (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
+ (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch) &&
+ !mBluetoothService.isAirplaneModeOn()) {
deferMessage(obtainMessage(TURN_HOT));
mDelayBroadcastStateOff = true;
}
@@ -564,11 +565,9 @@
sendMessageDelayed(TURN_OFF_TIMEOUT, TURN_OFF_TIMEOUT_TIME);
}
- // we turn all the way to PowerOff with AIRPLANE_MODE_ON
if (message.what == AIRPLANE_MODE_ON || mBluetoothService.isAirplaneModeOn()) {
// We inform all the per process callbacks
allProcessesCallback(false);
- deferMessage(obtainMessage(AIRPLANE_MODE_ON));
}
break;
case AIRPLANE_MODE_OFF:
@@ -707,8 +706,6 @@
mBluetoothService.switchConnectable(false);
sendMessageDelayed(TURN_OFF_TIMEOUT, TURN_OFF_TIMEOUT_TIME);
allProcessesCallback(false);
- // we turn all the way to PowerOff with AIRPLANE_MODE_ON
- deferMessage(obtainMessage(AIRPLANE_MODE_ON));
break;
case USER_TURN_OFF:
Log.w(TAG, "PerProcessState received: " + message.what);
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 3e0942c..3b26af7 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -98,6 +98,7 @@
private static final int MSG_WALLPAPER_OFFSETS = 10020;
private static final int MSG_WALLPAPER_COMMAND = 10025;
private static final int MSG_WINDOW_RESIZED = 10030;
+ private static final int MSG_WINDOW_MOVED = 10035;
private static final int MSG_TOUCH_EVENT = 10040;
private Looper mCallbackLooper;
@@ -259,7 +260,13 @@
reportDraw ? 1 : 0);
mCaller.sendMessage(msg);
}
-
+
+ @Override
+ public void moved(int newX, int newY) {
+ Message msg = mCaller.obtainMessageII(MSG_WINDOW_MOVED, newX, newY);
+ mCaller.sendMessage(msg);
+ }
+
@Override
public void dispatchAppVisibility(boolean visible) {
// We don't do this in preview mode; we'll let the preview
@@ -290,7 +297,8 @@
}
}
}
-
+
+ @Override
public void dispatchWallpaperCommand(String action, int x, int y,
int z, Bundle extras, boolean sync) {
synchronized (mLock) {
@@ -1044,6 +1052,9 @@
mEngine.updateSurface(true, false, reportDraw);
mEngine.doOffsetsChanged(true);
} break;
+ case MSG_WINDOW_MOVED: {
+ // Do nothing. What does it mean for a Wallpaper to move?
+ } break;
case MSG_TOUCH_EVENT: {
boolean skip = false;
MotionEvent ev = (MotionEvent)message.obj;
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java
index 445aac63..bd9310c1 100644
--- a/core/java/android/text/MeasuredText.java
+++ b/core/java/android/text/MeasuredText.java
@@ -83,7 +83,7 @@
}
void setPos(int pos) {
- mPos = pos;
+ mPos = pos - mTextStart;
}
/**
diff --git a/core/java/android/text/Spanned.java b/core/java/android/text/Spanned.java
index 2b73763..b4622e0 100644
--- a/core/java/android/text/Spanned.java
+++ b/core/java/android/text/Spanned.java
@@ -30,8 +30,19 @@
* of spans.
*
* MARK and POINT are conceptually located <i>between</i> two adjacent characters.
- * A MARK is "attached" to the character on the left hand side, while a POINT
- * tends to stick to the character on the right hand side.
+ * A MARK is "attached" to the character before, while a POINT will stick to the character
+ * after. The insertion cursor is conceptually located between the MARK and the POINT.
+ *
+ * As a result, inserting a new character between a MARK and a POINT will leave the MARK
+ * unchanged, while the POINT will be shifted, now located after the inserted character and
+ * still glued to the same character after it.
+ *
+ * Depending on whether the insertion happens at the beginning or the end of a span, the span
+ * will hence be expanded to <i>include</i> the new character (when the span is using a MARK at
+ * its beginning or a POINT at its end) or it will be <i>excluded</i>.
+ *
+ * Note that <i>before</i> and <i>after</i> here refer to offsets in the String, which are
+ * independent from the visual representation of the text (left-to-right or right-to-left).
*/
public static final int SPAN_POINT_MARK_MASK = 0x33;
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index 6a619af..ac3dee4 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -150,8 +150,8 @@
mColumns = COLUMNS_ELLIPSIZE;
mLines = new int[ArrayUtils.idealIntArraySize(2 * mColumns)];
- mLineDirections = new Directions[
- ArrayUtils.idealIntArraySize(2 * mColumns)];
+ mLineDirections = new Directions[ArrayUtils.idealIntArraySize(2 * mColumns)];
+ // FIXME This is never recycled
mMeasured = MeasuredText.obtain();
}
@@ -340,7 +340,9 @@
w += widths[j - paraStart];
}
- if (w <= width) {
+ boolean isSpaceOrTab = c == CHAR_SPACE || c == CHAR_TAB;
+
+ if (w <= width || isSpaceOrTab) {
fitWidth = w;
fit = j + 1;
@@ -353,30 +355,22 @@
if (fmBottom > fitBottom)
fitBottom = fmBottom;
- /*
- * From the Unicode Line Breaking Algorithm:
- * (at least approximately)
- *
- * .,:; are class IS: breakpoints
- * except when adjacent to digits
- * / is class SY: a breakpoint
- * except when followed by a digit.
- * - is class HY: a breakpoint
- * except when followed by a digit.
- *
- * Ideographs are class ID: breakpoints when adjacent,
- * except for NS (non-starters), which can be broken
- * after but not before.
- */
- if (c == CHAR_SPACE || c == CHAR_TAB ||
- ((c == CHAR_DOT || c == CHAR_COMMA ||
- c == CHAR_COLON || c == CHAR_SEMICOLON) &&
- (j - 1 < here || !Character.isDigit(chs[j - 1 - paraStart])) &&
- (j + 1 >= spanEnd || !Character.isDigit(chs[j + 1 - paraStart]))) ||
- ((c == CHAR_SLASH || c == CHAR_HYPHEN) &&
- (j + 1 >= spanEnd || !Character.isDigit(chs[j + 1 - paraStart]))) ||
- (c >= CHAR_FIRST_CJK && isIdeographic(c, true) &&
- j + 1 < spanEnd && isIdeographic(chs[j + 1 - paraStart], false))) {
+ // From the Unicode Line Breaking Algorithm (at least approximately)
+ boolean isLineBreak = isSpaceOrTab ||
+ // .,:; are class IS breakpoints, except when adjacent to digits
+ ((c == CHAR_DOT || c == CHAR_COMMA ||
+ c == CHAR_COLON || c == CHAR_SEMICOLON) &&
+ (j - 1 < here || !Character.isDigit(chs[j - 1 - paraStart])) &&
+ (j + 1 >= spanEnd || !Character.isDigit(chs[j + 1 - paraStart]))) ||
+ // / is class SY and - is class HY, except when followed by a digit
+ ((c == CHAR_SLASH || c == CHAR_HYPHEN) &&
+ (j + 1 >= spanEnd || !Character.isDigit(chs[j + 1 - paraStart]))) ||
+ // Ideographs are class ID: breakpoints when adjacent, except for NS
+ // (non-starters), which can be broken after but not before
+ (c >= CHAR_FIRST_CJK && isIdeographic(c, true) &&
+ j + 1 < spanEnd && isIdeographic(chs[j + 1 - paraStart], false));
+
+ if (isLineBreak) {
okWidth = w;
ok = j + 1;
@@ -396,13 +390,6 @@
float currentTextWidth;
if (ok != here) {
- // If it is a space that makes the length exceed width, cut here
- if (c == CHAR_SPACE) ok = j + 1;
-
- while (ok < spanEnd && chs[ok - paraStart] == CHAR_SPACE) {
- ok++;
- }
-
endPos = ok;
above = okAscent;
below = okDescent;
@@ -450,10 +437,10 @@
spanEnd = here;
break;
}
- }
- // FIXME This should be moved in the above else block which changes mLineCount
- if (mLineCount >= mMaximumVisibleLineCount) {
- break;
+
+ if (mLineCount >= mMaximumVisibleLineCount) {
+ break;
+ }
}
}
}
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index 0aabc44..d0c393c 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -18,6 +18,7 @@
import static android.view.accessibility.AccessibilityNodeInfo.INCLUDE_NOT_IMPORTANT_VIEWS;
+import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -64,6 +65,8 @@
private final ArrayList<View> mTempArrayList = new ArrayList<View>();
+ private final Rect mTempRect = new Rect();
+
public AccessibilityInteractionController(ViewRootImpl viewRootImpl) {
Looper looper = viewRootImpl.mHandler.getLooper();
mMyLooperThreadId = looper.getThread().getId();
@@ -207,6 +210,7 @@
} finally {
try {
mViewRootImpl.mAttachInfo.mIncludeNotImportantViews = false;
+ applyApplicationScaleIfNeeded(infos);
callback.setFindAccessibilityNodeInfosResult(infos, interactionId);
infos.clear();
} catch (RemoteException re) {
@@ -287,6 +291,7 @@
} finally {
try {
mViewRootImpl.mAttachInfo.mIncludeNotImportantViews = false;
+ applyApplicationScaleIfNeeded(info);
callback.setFindAccessibilityNodeInfoResult(info, interactionId);
} catch (RemoteException re) {
/* ignore - the other side will time out */
@@ -396,6 +401,7 @@
} finally {
try {
mViewRootImpl.mAttachInfo.mIncludeNotImportantViews = false;
+ applyApplicationScaleIfNeeded(infos);
callback.setFindAccessibilityNodeInfosResult(infos, interactionId);
} catch (RemoteException re) {
/* ignore - the other side will time out */
@@ -502,6 +508,7 @@
} finally {
try {
mViewRootImpl.mAttachInfo.mIncludeNotImportantViews = false;
+ applyApplicationScaleIfNeeded(focused);
callback.setFindAccessibilityNodeInfoResult(focused, interactionId);
} catch (RemoteException re) {
/* ignore - the other side will time out */
@@ -574,43 +581,15 @@
root = mViewRootImpl.mView;
}
if (root != null && isShown(root)) {
- if ((direction & View.FOCUS_ACCESSIBILITY) == View.FOCUS_ACCESSIBILITY) {
- AccessibilityNodeProvider provider = root.getAccessibilityNodeProvider();
- if (provider != null) {
- next = provider.accessibilityFocusSearch(direction, virtualDescendantId);
- if (next != null) {
- return;
- }
- }
- View nextView = root.focusSearch(direction);
- while (nextView != null) {
- // If the focus search reached a node with a provider
- // we delegate to the provider to find the next one.
- // If the provider does not return a virtual view to
- // take accessibility focus we try the next view found
- // by the focus search algorithm.
- provider = nextView.getAccessibilityNodeProvider();
- if (provider != null) {
- next = provider.accessibilityFocusSearch(direction, View.NO_ID);
- if (next != null) {
- break;
- }
- nextView = nextView.focusSearch(direction);
- } else {
- next = nextView.createAccessibilityNodeInfo();
- break;
- }
- }
- } else {
- View nextView = root.focusSearch(direction);
- if (nextView != null) {
- next = nextView.createAccessibilityNodeInfo();
- }
+ View nextView = root.focusSearch(direction);
+ if (nextView != null) {
+ next = nextView.createAccessibilityNodeInfo();
}
}
} finally {
try {
mViewRootImpl.mAttachInfo.mIncludeNotImportantViews = false;
+ applyApplicationScaleIfNeeded(next);
callback.setFindAccessibilityNodeInfoResult(next, interactionId);
} catch (RemoteException re) {
/* ignore - the other side will time out */
@@ -706,6 +685,39 @@
return foundView;
}
+ private void applyApplicationScaleIfNeeded(List<AccessibilityNodeInfo> infos) {
+ if (infos == null) {
+ return;
+ }
+ final float applicationScale = mViewRootImpl.mAttachInfo.mApplicationScale;
+ if (applicationScale != 1.0f) {
+ final int infoCount = infos.size();
+ for (int i = 0; i < infoCount; i++) {
+ AccessibilityNodeInfo info = infos.get(i);
+ applyApplicationScaleIfNeeded(info);
+ }
+ }
+ }
+
+ private void applyApplicationScaleIfNeeded(AccessibilityNodeInfo info) {
+ if (info == null) {
+ return;
+ }
+ final float applicationScale = mViewRootImpl.mAttachInfo.mApplicationScale;
+ if (applicationScale != 1.0f) {
+ Rect bounds = mTempRect;
+
+ info.getBoundsInParent(bounds);
+ bounds.scale(applicationScale);
+ info.setBoundsInParent(bounds);
+
+ info.getBoundsInScreen(bounds);
+ bounds.scale(applicationScale);
+ info.setBoundsInScreen(bounds);
+ }
+ }
+
+
/**
* This class encapsulates a prefetching strategy for the accessibility APIs for
* querying window content. It is responsible to prefetch a batch of
diff --git a/core/java/android/view/FocusFinder.java b/core/java/android/view/FocusFinder.java
index 31a9f05..351c5c3 100644
--- a/core/java/android/view/FocusFinder.java
+++ b/core/java/android/view/FocusFinder.java
@@ -79,17 +79,9 @@
}
private View findNextFocus(ViewGroup root, View focused, Rect focusedRect, int direction) {
- if ((direction & View.FOCUS_ACCESSIBILITY) != View.FOCUS_ACCESSIBILITY) {
- return findNextInputFocus(root, focused, focusedRect, direction);
- } else {
- return findNextAccessibilityFocus(root, focused, focusedRect, direction);
- }
- }
-
- private View findNextInputFocus(ViewGroup root, View focused, Rect focusedRect, int direction) {
View next = null;
if (focused != null) {
- next = findNextUserSpecifiedInputFocus(root, focused, direction);
+ next = findNextUserSpecifiedFocus(root, focused, direction);
}
if (next != null) {
return next;
@@ -107,7 +99,7 @@
return next;
}
- private View findNextUserSpecifiedInputFocus(ViewGroup root, View focused, int direction) {
+ private View findNextUserSpecifiedFocus(ViewGroup root, View focused, int direction) {
// check for user specified next focus
View userSetNextFocus = focused.findUserSetNextFocus(root, direction);
if (userSetNextFocus != null && userSetNextFocus.isFocusable()
@@ -120,7 +112,6 @@
private View findNextFocus(ViewGroup root, View focused, Rect focusedRect,
int direction, ArrayList<View> focusables) {
- final int directionMasked = (direction & ~View.FOCUS_ACCESSIBILITY);
if (focused != null) {
if (focusedRect == null) {
focusedRect = mFocusedRect;
@@ -132,7 +123,7 @@
if (focusedRect == null) {
focusedRect = mFocusedRect;
// make up a rect at top left or bottom right of root
- switch (directionMasked) {
+ switch (direction) {
case View.FOCUS_RIGHT:
case View.FOCUS_DOWN:
setFocusTopLeft(root, focusedRect);
@@ -160,37 +151,23 @@
}
}
- switch (directionMasked) {
+ switch (direction) {
case View.FOCUS_FORWARD:
case View.FOCUS_BACKWARD:
- return findNextInputFocusInRelativeDirection(focusables, root, focused, focusedRect,
- directionMasked);
+ return findNextFocusInRelativeDirection(focusables, root, focused, focusedRect,
+ direction);
case View.FOCUS_UP:
case View.FOCUS_DOWN:
case View.FOCUS_LEFT:
case View.FOCUS_RIGHT:
- return findNextInputFocusInAbsoluteDirection(focusables, root, focused,
- focusedRect, directionMasked);
+ return findNextFocusInAbsoluteDirection(focusables, root, focused,
+ focusedRect, direction);
default:
- throw new IllegalArgumentException("Unknown direction: " + directionMasked);
+ throw new IllegalArgumentException("Unknown direction: " + direction);
}
}
- private View findNextAccessibilityFocus(ViewGroup root, View focused,
- Rect focusedRect, int direction) {
- ArrayList<View> focusables = mTempList;
- try {
- focusables.clear();
- root.addFocusables(focusables, direction, View.FOCUSABLES_ACCESSIBILITY);
- View next = findNextFocus(root, focused, focusedRect, direction,
- focusables);
- return next;
- } finally {
- focusables.clear();
- }
- }
-
- private View findNextInputFocusInRelativeDirection(ArrayList<View> focusables, ViewGroup root,
+ private View findNextFocusInRelativeDirection(ArrayList<View> focusables, ViewGroup root,
View focused, Rect focusedRect, int direction) {
try {
// Note: This sort is stable.
@@ -222,7 +199,7 @@
focusedRect.set(rootLeft, rootTop, rootLeft, rootTop);
}
- View findNextInputFocusInAbsoluteDirection(ArrayList<View> focusables, ViewGroup root, View focused,
+ View findNextFocusInAbsoluteDirection(ArrayList<View> focusables, ViewGroup root, View focused,
Rect focusedRect, int direction) {
// initialize the best candidate to something impossible
// (so the first plausible view will become the best choice)
diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl
index b4caad3..9f22870 100644
--- a/core/java/android/view/IWindow.aidl
+++ b/core/java/android/view/IWindow.aidl
@@ -47,6 +47,7 @@
void resized(int w, int h, in Rect contentInsets,
in Rect visibleInsets, boolean reportDraw, in Configuration newConfig);
+ void moved(int newX, int newY);
void dispatchAppVisibility(boolean visible);
void dispatchGetNewSurface();
void dispatchScreenState(boolean on);
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index a6a5427..149470a 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1007,14 +1007,6 @@
public static final int FOCUSABLES_TOUCH_MODE = 0x00000001;
/**
- * View flag indicating whether {@link #addFocusables(ArrayList, int, int)}
- * should add only accessibility focusable Views.
- *
- * @hide
- */
- public static final int FOCUSABLES_ACCESSIBILITY = 0x00000002;
-
- /**
* Use with {@link #focusSearch(int)}. Move focus to the previous selectable
* item.
*/
@@ -1046,58 +1038,6 @@
*/
public static final int FOCUS_DOWN = 0x00000082;
- // Accessibility focus directions.
-
- /**
- * The accessibility focus which is the current user position when
- * interacting with the accessibility framework.
- *
- * @hide
- */
- public static final int FOCUS_ACCESSIBILITY = 0x00001000;
-
- /**
- * Use with {@link #focusSearch(int)}. Move acessibility focus left.
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUS_LEFT = FOCUS_LEFT | FOCUS_ACCESSIBILITY;
-
- /**
- * Use with {@link #focusSearch(int)}. Move acessibility focus up.
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUS_UP = FOCUS_UP | FOCUS_ACCESSIBILITY;
-
- /**
- * Use with {@link #focusSearch(int)}. Move acessibility focus right.
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUS_RIGHT = FOCUS_RIGHT | FOCUS_ACCESSIBILITY;
-
- /**
- * Use with {@link #focusSearch(int)}. Move acessibility focus down.
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUS_DOWN = FOCUS_DOWN | FOCUS_ACCESSIBILITY;
-
- /**
- * Use with {@link #focusSearch(int)}. Move acessibility focus forward.
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUS_FORWARD = FOCUS_FORWARD | FOCUS_ACCESSIBILITY;
-
- /**
- * Use with {@link #focusSearch(int)}. Move acessibility focus backward.
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUS_BACKWARD = FOCUS_BACKWARD | FOCUS_ACCESSIBILITY;
-
/**
* Bits of {@link #getMeasuredWidthAndState()} and
* {@link #getMeasuredWidthAndState()} that provide the actual measured size.
@@ -2135,71 +2075,7 @@
*/
static final int VIEW_QUICK_REJECTED = 0x10000000;
- // Accessiblity constants for mPrivateFlags2
-
- /**
- * Shift for the bits in {@link #mPrivateFlags2} related to the
- * "accessibilityFocusable" attribute.
- */
- static final int ACCESSIBILITY_FOCUSABLE_SHIFT = 29;
-
- /**
- * The system determines whether the view can take accessibility focus - default (recommended).
- * <p>
- * Such a view is consideted by the focus search if it is:
- * <ul>
- * <li>
- * Important for accessibility and actionable (clickable, long clickable, focusable)
- * </li>
- * <li>
- * Important for accessibility, not actionable (clickable, long clickable, focusable),
- * and does not have an actionable predecessor.
- * </li>
- * </ul>
- * An accessibility srvice can request putting accessibility focus on such a view.
- * </p>
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUSABLE_AUTO = 0x00000000;
-
- /**
- * The view can take accessibility focus.
- * <p>
- * A view that can take accessibility focus is always considered during focus
- * search and an accessibility service can request putting accessibility focus
- * on it.
- * </p>
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUSABLE_YES = 0x00000001;
-
- /**
- * The view can not take accessibility focus.
- * <p>
- * A view that can not take accessibility focus is never considered during focus
- * search and an accessibility service can not request putting accessibility focus
- * on it.
- * </p>
- *
- * @hide
- */
- public static final int ACCESSIBILITY_FOCUSABLE_NO = 0x00000002;
-
- /**
- * The default whether the view is accessiblity focusable.
- */
- static final int ACCESSIBILITY_FOCUSABLE_DEFAULT = ACCESSIBILITY_FOCUSABLE_AUTO;
-
- /**
- * Mask for obtainig the bits which specifies how to determine
- * whether a view is accessibility focusable.
- */
- static final int ACCESSIBILITY_FOCUSABLE_MASK = (ACCESSIBILITY_FOCUSABLE_AUTO
- | ACCESSIBILITY_FOCUSABLE_YES | ACCESSIBILITY_FOCUSABLE_NO)
- << ACCESSIBILITY_FOCUSABLE_SHIFT;
-
+ // There are a couple of flags left in mPrivateFlags2
/* End of masks for mPrivateFlags2 */
@@ -3216,8 +3092,7 @@
mPrivateFlags2 = (LAYOUT_DIRECTION_DEFAULT << LAYOUT_DIRECTION_MASK_SHIFT) |
(TEXT_DIRECTION_DEFAULT << TEXT_DIRECTION_MASK_SHIFT) |
(TEXT_ALIGNMENT_DEFAULT << TEXT_ALIGNMENT_MASK_SHIFT) |
- (IMPORTANT_FOR_ACCESSIBILITY_DEFAULT << IMPORTANT_FOR_ACCESSIBILITY_SHIFT) |
- (ACCESSIBILITY_FOCUSABLE_DEFAULT << ACCESSIBILITY_FOCUSABLE_SHIFT);
+ (IMPORTANT_FOR_ACCESSIBILITY_DEFAULT << IMPORTANT_FOR_ACCESSIBILITY_SHIFT);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
setOverScrollMode(OVER_SCROLL_IF_CONTENT_SCROLLS);
mUserPaddingStart = -1;
@@ -4496,11 +4371,13 @@
* @param text The announcement text.
*/
public void announceForAccessibility(CharSequence text) {
- if (AccessibilityManager.getInstance(mContext).isEnabled()) {
+ if (AccessibilityManager.getInstance(mContext).isEnabled() && mParent != null) {
AccessibilityEvent event = AccessibilityEvent.obtain(
AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ onInitializeAccessibilityEvent(event);
event.getText().add(text);
- sendAccessibilityEventUnchecked(event);
+ event.setContentDescription(null);
+ mParent.requestSendAccessibilityEvent(this, event);
}
}
@@ -4820,6 +4697,7 @@
*/
void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
Rect bounds = mAttachInfo.mTmpInvalRect;
+
getDrawingRect(bounds);
info.setBoundsInParent(bounds);
@@ -4860,10 +4738,7 @@
}
if (!isAccessibilityFocused()) {
- final int mode = getAccessibilityFocusable();
- if (mode == ACCESSIBILITY_FOCUSABLE_YES || mode == ACCESSIBILITY_FOCUSABLE_AUTO) {
- info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
- }
+ info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
} else {
info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
}
@@ -4891,9 +4766,9 @@
* @hide
*/
public int getActualAndReportedWindowLeftDelta() {
- if (mAttachInfo != null) {
- return mAttachInfo.mActualWindowLeft - mAttachInfo.mWindowLeft;
- }
+// if (mAttachInfo != null) {
+// return mAttachInfo.mActualWindowLeft - mAttachInfo.mWindowLeft;
+// }
return 0;
}
@@ -4903,9 +4778,9 @@
* @hide
*/
public int getActualAndReportedWindowTopDelta() {
- if (mAttachInfo != null) {
- return mAttachInfo.mActualWindowTop - mAttachInfo.mWindowTop;
- }
+// if (mAttachInfo != null) {
+// return mAttachInfo.mActualWindowTop - mAttachInfo.mWindowTop;
+// }
return 0;
}
@@ -5693,7 +5568,7 @@
@ViewDebug.IntToString(from = LAYOUT_DIRECTION_RTL, to = "RESOLVED_DIRECTION_RTL")
})
public int getResolvedLayoutDirection() {
- // The layout diretion will be resolved only if needed
+ // The layout direction will be resolved only if needed
if ((mPrivateFlags2 & LAYOUT_DIRECTION_RESOLVED) != LAYOUT_DIRECTION_RESOLVED) {
resolveLayoutDirection();
}
@@ -6166,12 +6041,6 @@
if (views == null) {
return;
}
- if ((focusableMode & FOCUSABLES_ACCESSIBILITY) == FOCUSABLES_ACCESSIBILITY) {
- if (isAccessibilityFocusable()) {
- views.add(this);
- return;
- }
- }
if (!isFocusable()) {
return;
}
@@ -6336,29 +6205,6 @@
}
}
- private void requestAccessibilityFocusFromHover() {
- if (includeForAccessibility() && isActionableForAccessibility()) {
- requestAccessibilityFocus();
- } else {
- if (mParent != null) {
- View nextFocus = mParent.findViewToTakeAccessibilityFocusFromHover(this, this);
- if (nextFocus != null) {
- nextFocus.requestAccessibilityFocus();
- }
- }
- }
- }
-
- private boolean canTakeAccessibilityFocusFromHover() {
- if (includeForAccessibility() && isActionableForAccessibility()) {
- return true;
- }
- if (mParent != null) {
- return (mParent.findViewToTakeAccessibilityFocusFromHover(this, this) == this);
- }
- return false;
- }
-
/**
* Clears accessibility focus without calling any callback methods
* normally invoked in {@link #clearAccessibilityFocus()}. This method
@@ -6574,73 +6420,6 @@
}
/**
- * Gets the mode for determining whether this View can take accessibility focus.
- *
- * @return The mode for determining whether a View can take accessibility focus.
- *
- * @attr ref android.R.styleable#View_accessibilityFocusable
- *
- * @see #ACCESSIBILITY_FOCUSABLE_YES
- * @see #ACCESSIBILITY_FOCUSABLE_NO
- * @see #ACCESSIBILITY_FOCUSABLE_AUTO
- *
- * @hide
- */
- @ViewDebug.ExportedProperty(category = "accessibility", mapping = {
- @ViewDebug.IntToString(from = ACCESSIBILITY_FOCUSABLE_AUTO, to = "auto"),
- @ViewDebug.IntToString(from = ACCESSIBILITY_FOCUSABLE_YES, to = "yes"),
- @ViewDebug.IntToString(from = ACCESSIBILITY_FOCUSABLE_NO, to = "no")
- })
- public int getAccessibilityFocusable() {
- return (mPrivateFlags2 & ACCESSIBILITY_FOCUSABLE_MASK) >>> ACCESSIBILITY_FOCUSABLE_SHIFT;
- }
-
- /**
- * Sets how to determine whether this view can take accessibility focus.
- *
- * @param mode How to determine whether this view can take accessibility focus.
- *
- * @attr ref android.R.styleable#View_accessibilityFocusable
- *
- * @see #ACCESSIBILITY_FOCUSABLE_YES
- * @see #ACCESSIBILITY_FOCUSABLE_NO
- * @see #ACCESSIBILITY_FOCUSABLE_AUTO
- *
- * @hide
- */
- public void setAccessibilityFocusable(int mode) {
- if (mode != getAccessibilityFocusable()) {
- mPrivateFlags2 &= ~ACCESSIBILITY_FOCUSABLE_MASK;
- mPrivateFlags2 |= (mode << ACCESSIBILITY_FOCUSABLE_SHIFT)
- & ACCESSIBILITY_FOCUSABLE_MASK;
- notifyAccessibilityStateChanged();
- }
- }
-
- /**
- * Gets whether this view can take accessibility focus.
- *
- * @return Whether the view can take accessibility focus.
- *
- * @hide
- */
- public boolean isAccessibilityFocusable() {
- final int mode = (mPrivateFlags2 & ACCESSIBILITY_FOCUSABLE_MASK)
- >>> ACCESSIBILITY_FOCUSABLE_SHIFT;
- switch (mode) {
- case ACCESSIBILITY_FOCUSABLE_YES:
- return true;
- case ACCESSIBILITY_FOCUSABLE_NO:
- return false;
- case ACCESSIBILITY_FOCUSABLE_AUTO:
- return canTakeAccessibilityFocusFromHover()
- || getAccessibilityNodeProvider() != null;
- default:
- throw new IllegalArgumentException("Unknow accessibility focusable mode: " + mode);
- }
- }
-
- /**
* Gets the parent for accessibility purposes. Note that the parent for
* accessibility is not necessary the immediate parent. It is the first
* predecessor that is important for accessibility.
@@ -6821,10 +6600,7 @@
}
} break;
case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: {
- final int mode = getAccessibilityFocusable();
- if (!isAccessibilityFocused()
- && (mode == ACCESSIBILITY_FOCUSABLE_YES
- || mode == ACCESSIBILITY_FOCUSABLE_AUTO)) {
+ if (!isAccessibilityFocused()) {
return requestAccessibilityFocus();
}
} break;
@@ -11320,9 +11096,13 @@
scrollBar.setParameters(computeVerticalScrollRange(),
computeVerticalScrollOffset(),
computeVerticalScrollExtent(), true);
- switch (mVerticalScrollbarPosition) {
+ int verticalScrollbarPosition = mVerticalScrollbarPosition;
+ if (verticalScrollbarPosition == SCROLLBAR_POSITION_DEFAULT) {
+ verticalScrollbarPosition = isLayoutRtl() ?
+ SCROLLBAR_POSITION_LEFT : SCROLLBAR_POSITION_RIGHT;
+ }
+ switch (verticalScrollbarPosition) {
default:
- case SCROLLBAR_POSITION_DEFAULT:
case SCROLLBAR_POSITION_RIGHT:
left = scrollX + width - size - (mUserPaddingRight & inside);
break;
@@ -11493,15 +11273,18 @@
// Set resolved depending on layout direction
switch (getLayoutDirection()) {
case LAYOUT_DIRECTION_INHERIT:
- // If this is root view, no need to look at parent's layout dir.
- if (canResolveLayoutDirection()) {
- ViewGroup viewGroup = ((ViewGroup) mParent);
+ // We cannot resolve yet. LTR is by default and let the resolution happen again
+ // later to get the correct resolved value
+ if (!canResolveLayoutDirection()) return;
- if (viewGroup.getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) {
- mPrivateFlags2 |= LAYOUT_DIRECTION_RESOLVED_RTL;
- }
- } else {
- // Nothing to do, LTR by default
+ ViewGroup viewGroup = ((ViewGroup) mParent);
+
+ // We cannot resolve yet on the parent too. LTR is by default and let the
+ // resolution happen again later
+ if (!viewGroup.canResolveLayoutDirection()) return;
+
+ if (viewGroup.getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) {
+ mPrivateFlags2 |= LAYOUT_DIRECTION_RESOLVED_RTL;
}
break;
case LAYOUT_DIRECTION_RTL:
@@ -12363,9 +12146,7 @@
canvas.setViewport(width, height);
// The dirty rect should always be null for a display list
canvas.onPreDraw(null);
- int layerType = (
- !(mParent instanceof ViewGroup) || ((ViewGroup)mParent).mDrawLayers) ?
- getLayerType() : LAYER_TYPE_NONE;
+ int layerType = getLayerType();
if (!isLayer && layerType != LAYER_TYPE_NONE) {
if (layerType == LAYER_TYPE_HARDWARE) {
final HardwareLayer layer = getHardwareLayer();
@@ -13072,7 +12853,7 @@
boolean scalingRequired = false;
boolean caching;
- int layerType = parent.mDrawLayers ? getLayerType() : LAYER_TYPE_NONE;
+ int layerType = getLayerType();
final boolean hardwareAccelerated = canvas.isHardwareAccelerated();
if ((flags & ViewGroup.FLAG_CHILDREN_DRAWN_WITH_CACHE) != 0 ||
@@ -14355,7 +14136,7 @@
? 0 : getVerticalScrollbarWidth();
switch (mVerticalScrollbarPosition) {
case SCROLLBAR_POSITION_DEFAULT:
- if (getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) {
+ if (isLayoutRtl()) {
left += offset;
} else {
right += offset;
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 257b861..4e6e2ce 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -404,10 +404,6 @@
// views during a transition when they otherwise would have become gone/invisible
private ArrayList<View> mVisibilityChangingChildren;
- // Indicates whether this container will use its children layers to draw
- @ViewDebug.ExportedProperty(category = "drawing")
- boolean mDrawLayers = true;
-
// Indicates how many of this container's child subtrees contain transient state
@ViewDebug.ExportedProperty(category = "layout")
private int mChildCountWithTransientState = 0;
@@ -628,11 +624,7 @@
* FOCUS_RIGHT, or 0 for not applicable.
*/
public View focusSearch(View focused, int direction) {
- // If we are moving accessibility focus we want to consider all
- // views no matter if they are on the screen. It is responsibility
- // of the accessibility service to check whether the result is in
- // the screen.
- if (isRootNamespace() && (direction & FOCUS_ACCESSIBILITY) == 0) {
+ if (isRootNamespace()) {
// root namespace means we should consider ourselves the top of the
// tree for focus searching; otherwise we could be focus searching
// into other tabs. see LocalActivityManager and TabHost for more info
@@ -867,8 +859,7 @@
final int descendantFocusability = getDescendantFocusability();
- if (descendantFocusability != FOCUS_BLOCK_DESCENDANTS
- || (focusableMode & FOCUSABLES_ACCESSIBILITY) == FOCUSABLES_ACCESSIBILITY) {
+ if (descendantFocusability != FOCUS_BLOCK_DESCENDANTS) {
final int count = mChildrenCount;
final View[] children = mChildren;
@@ -886,9 +877,7 @@
// among the focusable children would be more interesting.
if (descendantFocusability != FOCUS_AFTER_DESCENDANTS
// No focusable descendants
- || (focusableCount == views.size())
- // We are collecting accessibility focusables.
- || (focusableMode & FOCUSABLES_ACCESSIBILITY) == FOCUSABLES_ACCESSIBILITY) {
+ || (focusableCount == views.size())) {
super.addFocusables(views, direction, focusableMode);
}
}
@@ -1658,20 +1647,6 @@
}
/**
- * @hide
- */
- @Override
- public View findViewToTakeAccessibilityFocusFromHover(View child, View descendant) {
- if (includeForAccessibility() && isActionableForAccessibility()) {
- return this;
- }
- if (mParent != null) {
- return mParent.findViewToTakeAccessibilityFocusFromHover(this, descendant);
- }
- return null;
- }
-
- /**
* Implement this method to intercept hover events before they are handled
* by child views.
* <p>
@@ -2930,45 +2905,6 @@
}
/**
- *
- * @param enabled True if children should be drawn with layers, false otherwise.
- *
- * @hide
- */
- public void setChildrenLayersEnabled(boolean enabled) {
- if (enabled != mDrawLayers) {
- mDrawLayers = enabled;
- invalidate(true);
-
- boolean flushLayers = !enabled;
- AttachInfo info = mAttachInfo;
- if (info != null && info.mHardwareRenderer != null &&
- info.mHardwareRenderer.isEnabled()) {
- if (!info.mHardwareRenderer.validate()) {
- flushLayers = false;
- }
- } else {
- flushLayers = false;
- }
-
- // We need to invalidate any child with a layer. For instance,
- // if a child is backed by a hardware layer and we disable layers
- // the child is marked as not dirty (flags cleared the last time
- // the child was drawn inside its layer.) However, that child might
- // never have created its own display list or have an obsolete
- // display list. By invalidating the child we ensure the display
- // list is in sync with the content of the hardware layer.
- for (int i = 0; i < mChildrenCount; i++) {
- View child = mChildren[i];
- if (child.mLayerType != LAYER_TYPE_NONE) {
- if (flushLayers) child.flushLayer();
- child.invalidate(true);
- }
- }
- }
- }
-
- /**
* By default, children are clipped to their bounds before drawing. This
* allows view groups to override this behavior for animations, etc.
*
@@ -4100,21 +4036,23 @@
final int left = mLeft;
final int top = mTop;
- if ((mGroupFlags & FLAG_CLIP_CHILDREN) != FLAG_CLIP_CHILDREN ||
- dirty.intersect(0, 0, mRight - left, mBottom - top) ||
- (mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION) {
- mPrivateFlags &= ~DRAWING_CACHE_VALID;
-
- location[CHILD_LEFT_INDEX] = left;
- location[CHILD_TOP_INDEX] = top;
-
- if (mLayerType != LAYER_TYPE_NONE) {
- mPrivateFlags |= INVALIDATED;
- mLocalDirtyRect.union(dirty);
+ if ((mGroupFlags & FLAG_CLIP_CHILDREN) == FLAG_CLIP_CHILDREN) {
+ if (!dirty.intersect(0, 0, mRight - left, mBottom - top)) {
+ dirty.setEmpty();
}
-
- return mParent;
}
+ mPrivateFlags &= ~DRAWING_CACHE_VALID;
+
+ location[CHILD_LEFT_INDEX] = left;
+ location[CHILD_TOP_INDEX] = top;
+
+ if (mLayerType != LAYER_TYPE_NONE) {
+ mPrivateFlags |= INVALIDATED;
+ mLocalDirtyRect.union(dirty);
+ }
+
+ return mParent;
+
} else {
mPrivateFlags &= ~DRAWN & ~DRAWING_CACHE_VALID;
@@ -5569,6 +5507,11 @@
*/
static private final int DEFAULT_RELATIVE = Integer.MIN_VALUE;
+ private int initialLeftMargin;
+ private int initialRightMargin;
+
+ private int layoutDirection;
+
/**
* Creates a new set of layout parameters. The values are extracted from
* the supplied attributes set and context.
@@ -5607,6 +5550,12 @@
R.styleable.ViewGroup_MarginLayout_layout_marginEnd, DEFAULT_RELATIVE);
}
+ initialLeftMargin = leftMargin;
+ initialRightMargin = rightMargin;
+
+ // LTR by default
+ layoutDirection = View.LAYOUT_DIRECTION_LTR;
+
a.recycle();
}
@@ -5632,6 +5581,11 @@
this.bottomMargin = source.bottomMargin;
this.startMargin = source.startMargin;
this.endMargin = source.endMargin;
+
+ this.initialLeftMargin = source.leftMargin;
+ this.initialRightMargin = source.rightMargin;
+
+ this.layoutDirection = source.layoutDirection;
}
/**
@@ -5661,6 +5615,8 @@
topMargin = top;
rightMargin = right;
bottomMargin = bottom;
+ initialLeftMargin = left;
+ initialRightMargin = right;
}
/**
@@ -5686,6 +5642,8 @@
topMargin = top;
endMargin = end;
bottomMargin = bottom;
+ initialLeftMargin = 0;
+ initialRightMargin = 0;
}
/**
@@ -5696,7 +5654,14 @@
* @return the start margin in pixels.
*/
public int getMarginStart() {
- return startMargin;
+ if (startMargin != DEFAULT_RELATIVE) return startMargin;
+ switch(layoutDirection) {
+ case View.LAYOUT_DIRECTION_RTL:
+ return rightMargin;
+ case View.LAYOUT_DIRECTION_LTR:
+ default:
+ return leftMargin;
+ }
}
/**
@@ -5707,7 +5672,14 @@
* @return the end margin in pixels.
*/
public int getMarginEnd() {
- return endMargin;
+ if (endMargin != DEFAULT_RELATIVE) return endMargin;
+ switch(layoutDirection) {
+ case View.LAYOUT_DIRECTION_RTL:
+ return leftMargin;
+ case View.LAYOUT_DIRECTION_LTR:
+ default:
+ return rightMargin;
+ }
}
/**
@@ -5728,15 +5700,19 @@
*/
@Override
public void onResolveLayoutDirection(int layoutDirection) {
+ this.layoutDirection = layoutDirection;
+
+ if (!isMarginRelative()) return;
+
switch(layoutDirection) {
case View.LAYOUT_DIRECTION_RTL:
- leftMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : leftMargin;
- rightMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : rightMargin;
+ leftMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : initialLeftMargin;
+ rightMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : initialRightMargin;
break;
case View.LAYOUT_DIRECTION_LTR:
default:
- leftMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : leftMargin;
- rightMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : rightMargin;
+ leftMargin = (startMargin > DEFAULT_RELATIVE) ? startMargin : initialLeftMargin;
+ rightMargin = (endMargin > DEFAULT_RELATIVE) ? endMargin : initialRightMargin;
break;
}
}
diff --git a/core/java/android/view/ViewParent.java b/core/java/android/view/ViewParent.java
index d93b996..ddff91d 100644
--- a/core/java/android/view/ViewParent.java
+++ b/core/java/android/view/ViewParent.java
@@ -295,16 +295,4 @@
* @hide
*/
public void childAccessibilityStateChanged(View child);
-
- /**
- * A descendant requests this view to find a candidate to take accessibility
- * focus from hover.
- *
- * @param child The child making the call.
- * @param descendant The descendant that made the initial request.
- * @return A view to take accessibility focus.
- *
- * @hide
- */
- public View findViewToTakeAccessibilityFocusFromHover(View child, View descendant);
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 17783a4..85b6d3d 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -76,7 +76,6 @@
import com.android.internal.R;
import com.android.internal.policy.PolicyManager;
import com.android.internal.view.BaseSurfaceHolder;
-import com.android.internal.view.IInputMethodSession;
import com.android.internal.view.RootViewSurfaceTaker;
import java.io.IOException;
@@ -869,6 +868,8 @@
if (dirty == null) {
invalidate();
return null;
+ } else if (dirty.isEmpty()) {
+ return null;
}
if (mCurScrollY != 0 || mTranslator != null) {
@@ -2278,14 +2279,6 @@
return true;
}
- @Override
- public View findViewToTakeAccessibilityFocusFromHover(View child, View descendant) {
- if (descendant.includeForAccessibility()) {
- return descendant;
- }
- return null;
- }
-
/**
* We want to draw a highlight around the current accessibility focused.
* Since adding a style for all possible view is not a viable option we
@@ -2724,6 +2717,7 @@
private final static int MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST = 22;
private final static int MSG_DISPATCH_DONE_ANIMATING = 23;
private final static int MSG_INVALIDATE_WORLD = 24;
+ private final static int MSG_WINDOW_MOVED = 25;
final class ViewRootHandler extends Handler {
@Override
@@ -2775,6 +2769,8 @@
return "MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST";
case MSG_DISPATCH_DONE_ANIMATING:
return "MSG_DISPATCH_DONE_ANIMATING";
+ case MSG_WINDOW_MOVED:
+ return "MSG_WINDOW_MOVED";
}
return super.getMessageName(message);
}
@@ -2819,6 +2815,7 @@
if (config != null) {
updateConfiguration(config, false);
}
+ // TODO: Should left/top stay unchanged and only change the right/bottom?
mWinFrame.left = 0;
mWinFrame.right = msg.arg1;
mWinFrame.top = 0;
@@ -2835,6 +2832,23 @@
requestLayout();
}
break;
+ case MSG_WINDOW_MOVED:
+ if (mAdded) {
+ final int w = mWinFrame.width();
+ final int h = mWinFrame.height();
+ final int l = msg.arg1;
+ final int t = msg.arg2;
+ mWinFrame.left = l;
+ mWinFrame.right = l + w;
+ mWinFrame.top = t;
+ mWinFrame.bottom = t + h;
+
+ if (mView != null) {
+ forceLayout(mView);
+ }
+ requestLayout();
+ }
+ break;
case MSG_WINDOW_FOCUS_CHANGED: {
if (mAdded) {
boolean hasWindowFocus = msg.arg1 != 0;
@@ -4054,6 +4068,18 @@
mHandler.sendMessage(msg);
}
+ public void dispatchMoved(int newX, int newY) {
+ if (DEBUG_LAYOUT) Log.v(TAG, "Window moved " + this + ": newX=" + newX + " newY=" + newY);
+ if (mTranslator != null) {
+ PointF point = new PointF(newX, newY);
+ mTranslator.translatePointInScreenToAppWindow(point);
+ newX = (int) (point.x + 0.5);
+ newY = (int) (point.y + 0.5);
+ }
+ Message msg = mHandler.obtainMessage(MSG_WINDOW_MOVED, newX, newY);
+ mHandler.sendMessage(msg);
+ }
+
/**
* Represents a pending input event that is waiting in a queue.
*
@@ -4693,6 +4719,14 @@
}
}
+ @Override
+ public void moved(int newX, int newY) {
+ final ViewRootImpl viewAncestor = mViewAncestor.get();
+ if (viewAncestor != null) {
+ viewAncestor.dispatchMoved(newX, newY);
+ }
+ }
+
public void dispatchAppVisibility(boolean visible) {
final ViewRootImpl viewAncestor = mViewAncestor.get();
if (viewAncestor != null) {
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 3ad3a55..68983e2 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -1343,12 +1343,6 @@
case View.FOCUS_RIGHT:
case View.FOCUS_FORWARD:
case View.FOCUS_BACKWARD:
- case View.ACCESSIBILITY_FOCUS_DOWN:
- case View.ACCESSIBILITY_FOCUS_UP:
- case View.ACCESSIBILITY_FOCUS_LEFT:
- case View.ACCESSIBILITY_FOCUS_RIGHT:
- case View.ACCESSIBILITY_FOCUS_FORWARD:
- case View.ACCESSIBILITY_FOCUS_BACKWARD:
return;
default:
throw new IllegalArgumentException("Unknown direction: " + direction);
diff --git a/core/java/android/view/accessibility/AccessibilityNodeProvider.java b/core/java/android/view/accessibility/AccessibilityNodeProvider.java
index b3f3cee..688cbdf 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeProvider.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeProvider.java
@@ -132,60 +132,4 @@
int virtualViewId) {
return null;
}
-
- /**
- * Finds the accessibility focused {@link AccessibilityNodeInfo}. The search is
- * relative to the virtual view, i.e. a descendant of the host View, with the
- * given <code>virtualViewId</code> or the host View itself
- * <code>virtualViewId</code> equals to {@link View#NO_ID}.
- *
- * <strong>Note:</strong> Normally the system is responsible to transparently find
- * accessibility focused view starting from a given root but for virtual view
- * hierarchies it is a responsibility of this provider's implementor to find
- * the accessibility focused virtual view.
- *
- * @param virtualViewId A client defined virtual view id which defined
- * the root of the tree in which to perform the search.
- * @return A list of node info.
- *
- * @see #createAccessibilityNodeInfo(int)
- * @see AccessibilityNodeInfo
- *
- * @hide
- */
- public AccessibilityNodeInfo findAccessibilityFocus(int virtualViewId) {
- return null;
- }
-
- /**
- * Finds {@link AccessibilityNodeInfo} to take accessibility focus in the given
- * <code>direction</code>. The search is relative to the virtual view, i.e. a
- * descendant of the host View, with the given <code>virtualViewId</code> or
- * the host View itself <code>virtualViewId</code> equals to {@link View#NO_ID}.
- *
- * <strong>Note:</strong> Normally the system is responsible to transparently find
- * the next view to take accessibility focus but for virtual view hierarchies
- * it is a responsibility of this provider's implementor to compute the next
- * focusable.
- *
- * @param direction The direction in which to search for a focus candidate.
- * Values are
- * {@link View#ACCESSIBILITY_FOCUS_FORWARD},
- * {@link View#ACCESSIBILITY_FOCUS_BACKWARD},
- * {@link View#ACCESSIBILITY_FOCUS_UP},
- * {@link View#ACCESSIBILITY_FOCUS_DOWN},
- * {@link View#ACCESSIBILITY_FOCUS_LEFT},
- * {@link View#ACCESSIBILITY_FOCUS_RIGHT}.
- * @param virtualViewId A client defined virtual view id which defined
- * the root of the tree in which to perform the search.
- * @return A list of node info.
- *
- * @see #createAccessibilityNodeInfo(int)
- * @see AccessibilityNodeInfo
- *
- * @hide
- */
- public AccessibilityNodeInfo accessibilityFocusSearch(int direction, int virtualViewId) {
- return null;
- }
}
diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java
index 33eaad6..b16748b 100644
--- a/core/java/android/webkit/HTML5VideoFullScreen.java
+++ b/core/java/android/webkit/HTML5VideoFullScreen.java
@@ -75,7 +75,7 @@
// ratio is correct.
private int mVideoWidth;
private int mVideoHeight;
-
+ private boolean mPlayingWhenDestroyed = false;
SurfaceHolder.Callback mSHCallback = new SurfaceHolder.Callback()
{
public void surfaceChanged(SurfaceHolder holder, int format,
@@ -101,12 +101,11 @@
public void surfaceDestroyed(SurfaceHolder holder)
{
- // After we return from this we can't use the surface any more.
- // The current Video View will be destroy when we play a new video.
+ mPlayingWhenDestroyed = mPlayer.isPlaying();
pauseAndDispatch(mProxy);
- // TODO: handle full screen->inline mode transition without a reload.
- mPlayer.release();
- mPlayer = null;
+ // We need to set the display to null before switching into inline
+ // mode to avoid error.
+ mPlayer.setDisplay(null);
mSurfaceHolder = null;
if (mMediaController != null) {
mMediaController.hide();
@@ -194,18 +193,6 @@
mCanPause = mCanSeekBack = mCanSeekForward = true;
}
- if (mProgressView != null) {
- mProgressView.setVisibility(View.GONE);
- }
-
- mVideoWidth = mp.getVideoWidth();
- mVideoHeight = mp.getVideoHeight();
- // This will trigger the onMeasure to get the display size right.
- mVideoSurfaceView.getHolder().setFixedSize(mVideoWidth, mVideoHeight);
- // Call into the native to ask for the state, if still in play mode,
- // this will trigger the video to play.
- mProxy.dispatchOnRestoreState();
-
if (getStartWhenPrepared()) {
mPlayer.start();
// Clear the flag.
@@ -219,6 +206,16 @@
mMediaController.setEnabled(true);
mMediaController.show();
}
+
+ if (mProgressView != null) {
+ mProgressView.setVisibility(View.GONE);
+ }
+
+ mVideoWidth = mp.getVideoWidth();
+ mVideoHeight = mp.getVideoHeight();
+ // This will trigger the onMeasure to get the display size right.
+ mVideoSurfaceView.getHolder().setFixedSize(mVideoWidth, mVideoHeight);
+
}
public boolean fullScreenExited() {
@@ -232,7 +229,6 @@
// which happens when the video view is detached from its parent
// view. This happens in the WebChromeClient before this method
// is invoked.
- mProxy.dispatchOnStopFullScreen();
mLayout.removeView(getSurfaceView());
if (mProgressView != null) {
@@ -242,12 +238,11 @@
mLayout = null;
// Re enable plugin views.
mProxy.getWebView().getViewManager().showAll();
-
- mProxy = null;
-
// Don't show the controller after exiting the full screen.
mMediaController = null;
- mCurrentState = STATE_RESETTED;
+ // Continue the inline mode playing if necessary.
+ mProxy.dispatchOnStopFullScreen(mPlayingWhenDestroyed);
+ mProxy = null;
}
};
diff --git a/core/java/android/webkit/HTML5VideoInline.java b/core/java/android/webkit/HTML5VideoInline.java
index 2c7ea5d..fee82c9 100644
--- a/core/java/android/webkit/HTML5VideoInline.java
+++ b/core/java/android/webkit/HTML5VideoInline.java
@@ -34,8 +34,8 @@
}
}
- HTML5VideoInline(int videoLayerId, int position) {
- init(videoLayerId, position, false);
+ HTML5VideoInline(int videoLayerId, int position, boolean skipPrepare) {
+ init(videoLayerId, position, skipPrepare);
}
@Override
@@ -84,7 +84,7 @@
return mSurfaceTexture;
}
- public boolean surfaceTextureDeleted() {
+ public static boolean surfaceTextureDeleted() {
return (mSurfaceTexture == null);
}
@@ -110,7 +110,9 @@
}
private void setFrameAvailableListener(SurfaceTexture.OnFrameAvailableListener l) {
- mSurfaceTexture.setOnFrameAvailableListener(l);
+ if (mSurfaceTexture != null) {
+ mSurfaceTexture.setOnFrameAvailableListener(l);
+ }
}
}
diff --git a/core/java/android/webkit/HTML5VideoView.java b/core/java/android/webkit/HTML5VideoView.java
index 371feea..96d8248 100644
--- a/core/java/android/webkit/HTML5VideoView.java
+++ b/core/java/android/webkit/HTML5VideoView.java
@@ -35,6 +35,7 @@
static final int STATE_PREPARED = 2;
static final int STATE_PLAYING = 3;
static final int STATE_RESETTED = 4;
+ static final int STATE_RELEASED = 5;
protected HTML5VideoViewProxy mProxy;
@@ -126,7 +127,7 @@
}
public void reset() {
- if (mCurrentState != STATE_RESETTED) {
+ if (mCurrentState < STATE_RESETTED) {
mPlayer.reset();
}
mCurrentState = STATE_RESETTED;
@@ -138,6 +139,18 @@
}
}
+ public static void release() {
+ if (mPlayer != null && mCurrentState != STATE_RELEASED) {
+ mPlayer.release();
+ mPlayer = null;
+ }
+ mCurrentState = STATE_RELEASED;
+ }
+
+ public boolean isReleased() {
+ return mCurrentState == STATE_RELEASED;
+ }
+
public boolean getPauseDuringPreparing() {
return mPauseDuringPreparing;
}
@@ -337,11 +350,6 @@
// Only used in HTML5VideoFullScreen
}
- public boolean surfaceTextureDeleted() {
- // Only meaningful for HTML5VideoInline
- return false;
- }
-
public boolean fullScreenExited() {
// Only meaningful for HTML5VideoFullScreen
return false;
diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java
index ab884df..701ef35 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -59,6 +59,7 @@
private static final int LOAD_DEFAULT_POSTER = 104;
private static final int BUFFERING_START = 105;
private static final int BUFFERING_END = 106;
+ private static final int ENTER_FULLSCREEN = 107;
// Message Ids to be handled on the WebCore thread
private static final int PREPARED = 200;
@@ -105,12 +106,11 @@
// When we found the Video layer, then we set the Surface Texture to it.
// Otherwise, we may want to delete the Surface Texture to save memory.
public static void setBaseLayer(int layer) {
+ mBaseLayer = layer;
// Don't do this for full screen mode.
if (mHTML5VideoView != null
&& !mHTML5VideoView.isFullScreenMode()
- && !mHTML5VideoView.surfaceTextureDeleted()) {
- mBaseLayer = layer;
-
+ && !mHTML5VideoView.isReleased()) {
int currentVideoLayerId = mHTML5VideoView.getVideoLayerId();
SurfaceTexture surfTexture =
HTML5VideoInline.getSurfaceTexture(currentVideoLayerId);
@@ -126,7 +126,6 @@
if (playerState >= HTML5VideoView.STATE_PREPARED
&& !foundInTree) {
mHTML5VideoView.pauseAndDispatch(mCurrentProxy);
- mHTML5VideoView.deleteSurfaceTexture();
}
}
}
@@ -136,9 +135,6 @@
public static void pauseAndDispatch() {
if (mHTML5VideoView != null) {
mHTML5VideoView.pauseAndDispatch(mCurrentProxy);
- // When switching out, clean the video content on the old page
- // by telling the layer not readyToUseSurfTex.
- setBaseLayer(mBaseLayer);
}
}
@@ -217,9 +213,16 @@
}
}
+ boolean skipPrepare = false;
+ boolean createInlineView = false;
if (backFromFullScreenMode
+ && currentVideoLayerId == videoLayerId
+ && !mHTML5VideoView.isReleased()) {
+ skipPrepare = true;
+ createInlineView = true;
+ } else if(backFromFullScreenMode
|| currentVideoLayerId != videoLayerId
- || mHTML5VideoView.surfaceTextureDeleted()) {
+ || HTML5VideoInline.surfaceTextureDeleted()) {
// Here, we handle the case when switching to a new video,
// either inside a WebView or across WebViews
// For switching videos within a WebView or across the WebView,
@@ -231,12 +234,18 @@
}
mHTML5VideoView.reset();
}
+ createInlineView = true;
+ }
+ if (createInlineView) {
mCurrentProxy = proxy;
- mHTML5VideoView = new HTML5VideoInline(videoLayerId, time);
+ mHTML5VideoView = new HTML5VideoInline(videoLayerId, time, skipPrepare);
mHTML5VideoView.setVideoURI(url, mCurrentProxy);
mHTML5VideoView.prepareDataAndDisplayMode(proxy);
- } else if (mCurrentProxy == proxy) {
+ return;
+ }
+
+ if (mCurrentProxy == proxy) {
// Here, we handle the case when we keep playing with one video
if (!mHTML5VideoView.isPlaying()) {
mHTML5VideoView.seekTo(time);
@@ -278,9 +287,6 @@
if (!mHTML5VideoView.isFullScreenMode()) {
mHTML5VideoView.start();
}
- if (mBaseLayer != 0) {
- setBaseLayer(mBaseLayer);
- }
}
public static void end() {
@@ -333,8 +339,9 @@
mWebCoreHandler.sendMessage(msg);
}
- public void dispatchOnStopFullScreen() {
+ public void dispatchOnStopFullScreen(boolean stillPlaying) {
Message msg = Message.obtain(mWebCoreHandler, STOPFULLSCREEN);
+ msg.arg1 = stillPlaying ? 1 : 0;
mWebCoreHandler.sendMessage(msg);
}
@@ -369,6 +376,15 @@
}
break;
}
+ case ENTER_FULLSCREEN:{
+ String url = (String) msg.obj;
+ WebChromeClient client = mWebView.getWebChromeClient();
+ int videoLayerID = msg.arg1;
+ if (client != null) {
+ VideoPlayer.enterFullScreenVideo(videoLayerID, url, this, mWebView);
+ }
+ break;
+ }
case SEEK: {
Integer time = (Integer) msg.obj;
mSeekPosition = time;
@@ -613,7 +629,7 @@
nativeOnTimeupdate(msg.arg1, mNativePointer);
break;
case STOPFULLSCREEN:
- nativeOnStopFullscreen(mNativePointer);
+ nativeOnStopFullscreen(msg.arg1, mNativePointer);
break;
case RESTORESTATE:
nativeOnRestoreState(mNativePointer);
@@ -664,6 +680,21 @@
}
/**
+ * Play a video stream in full screen mode.
+ * @param url is the URL of the video stream.
+ */
+ public void enterFullscreenForVideoLayer(String url, int videoLayerID) {
+ if (url == null) {
+ return;
+ }
+
+ Message message = obtainMessage(ENTER_FULLSCREEN);
+ message.arg1 = videoLayerID;
+ message.obj = url;
+ sendMessage(message);
+ }
+
+ /**
* Seek into the video stream.
* @param time is the position in the video stream.
*/
@@ -748,7 +779,7 @@
private native void nativeOnPaused(int nativePointer);
private native void nativeOnPosterFetched(Bitmap poster, int nativePointer);
private native void nativeOnTimeupdate(int position, int nativePointer);
- private native void nativeOnStopFullscreen(int nativePointer);
+ private native void nativeOnStopFullscreen(int stillPlaying, int nativePointer);
private native void nativeOnRestoreState(int nativePointer);
private native static boolean nativeSendSurfaceTexture(SurfaceTexture texture,
int baseLayer, int videoLayerId, int textureName,
diff --git a/core/java/android/webkit/WebChromeClient.java b/core/java/android/webkit/WebChromeClient.java
index 01c047b..e93db09 100644
--- a/core/java/android/webkit/WebChromeClient.java
+++ b/core/java/android/webkit/WebChromeClient.java
@@ -245,8 +245,8 @@
}
/**
- * Tell the client that the quota has been reached for the Application Cache
- * API and request a new quota. The client must respond by invoking the
+ * Notify the host application that the Application Cache has reached the
+ * maximum size. The client must respond by invoking the
* {@link WebStorage.QuotaUpdater#updateQuota(long) updateQuota(long)}
* method of the supplied {@link WebStorage.QuotaUpdater} instance. The
* minimum value that can be set for the new quota is the current quota. The
@@ -255,7 +255,7 @@
* @param requiredStorage The amount of storage required by the Application
* Cache operation that triggered this notification,
* in bytes.
- * @param quota The quota, in bytes
+ * @param quota the current maximum Application Cache size, in bytes
* @param quotaUpdater An instance of {@link WebStorage.QuotaUpdater} which
* must be used to inform the WebView of the new quota.
*/
diff --git a/core/java/android/webkit/WebHistoryItem.java b/core/java/android/webkit/WebHistoryItem.java
index 3e0b177..cc9afe0 100644
--- a/core/java/android/webkit/WebHistoryItem.java
+++ b/core/java/android/webkit/WebHistoryItem.java
@@ -26,7 +26,10 @@
*/
public class WebHistoryItem implements Cloneable {
- /* package */ WebHistoryItem() {
+ /**
+ * @hide
+ */
+ public WebHistoryItem() {
}
/**
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index f2a041a..1a868d5 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -1005,8 +1005,11 @@
}
/**
- * Sets the maximum size for the Application Caches content. The default is
- * {@link Long#MAX_VALUE}.
+ * Sets the maximum size for the Application Cache content. The passed size
+ * will be rounded to the nearest value that the database can support, so
+ * this should be viewed as a guide, not a hard limit. Setting the
+ * size to a value less than current database size does not cause the
+ * database to be trimmed. The default size is {@link Long#MAX_VALUE}.
*
* @param appCacheMaxSize the maximum size in bytes
*/
diff --git a/core/java/android/webkit/WebStorage.java b/core/java/android/webkit/WebStorage.java
index 76674f4..1e955bd 100644
--- a/core/java/android/webkit/WebStorage.java
+++ b/core/java/android/webkit/WebStorage.java
@@ -23,17 +23,22 @@
* {@link WebView}. It manages the Application Cache API, the Web SQL Database
* API and the HTML5 Web Storage API.
*
- * The Web SQL Database API provides storage which is private to a given
- * origin, where an origin comprises the host, scheme and port of a URI.
- * Similarly, use of the Application Cache API can be attributed to an origin.
- * This class provides access to the storage use and quotas for these APIs for
- * a given origin. Origins are represented using {@link WebStorage.Origin}.
+ * The Application Cache API provides a mechanism to create and maintain an
+ * application cache to power offline Web applications. Use of the Application
+ * Cache API can be attributed to an origin {@link WebStorage.Origin}, however
+ * it is not possible to set per-origin quotas. Note that there can be only
+ * one application cache per application.
+ *
+ * The Web SQL Database API provides storage which is private to a given origin.
+ * Similar to the Application Cache, use of the Web SQL Database can be attributed
+ * to an origin. It is also possible to set per-origin quotas.
*/
public class WebStorage {
/**
* Encapsulates a callback function which is used to provide a new quota
- * for a JavaScript storage API. See
+ * for a JavaScript storage API.
+ * See
* {@link WebChromeClient#onExceededDatabaseQuota} and
* {@link WebChromeClient#onReachedMaxAppCacheSize}.
*/
@@ -54,6 +59,7 @@
/**
* This class encapsulates information about the amount of storage
* currently used by an origin for the JavaScript storage APIs.
+ * An origin comprises the host, scheme and port of a URI.
* See {@link WebStorage} for details.
*/
public static class Origin {
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 5eefbe1..038dde5 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -743,12 +743,12 @@
// the existing GL resources for the html5 video will be destroyed
// at native side.
// Here we just need to clean up the Surface Texture which is static.
- if (level >= TRIM_MEMORY_UI_HIDDEN) {
+ if (level > TRIM_MEMORY_UI_HIDDEN) {
HTML5VideoInline.cleanupSurfaceTexture();
+ HTML5VideoView.release();
}
WebViewClassic.nativeOnTrimMemory(level);
}
-
}
// A final CallbackProxy shared by WebViewCore and BrowserFrame.
@@ -1037,7 +1037,6 @@
static final int AUTOFILL_COMPLETE = 134;
static final int SCREEN_ON = 136;
- static final int ENTER_FULLSCREEN_VIDEO = 137;
static final int UPDATE_ZOOM_DENSITY = 139;
static final int EXIT_FULLSCREEN_VIDEO = 140;
@@ -7365,15 +7364,6 @@
mWebView.setKeepScreenOn(msg.arg1 == 1);
break;
- case ENTER_FULLSCREEN_VIDEO:
- int layerId = msg.arg1;
-
- String url = (String) msg.obj;
- if (mHTML5VideoViewProxy != null) {
- mHTML5VideoViewProxy.enterFullScreenVideo(layerId, url);
- }
- break;
-
case EXIT_FULLSCREEN_VIDEO:
if (mHTML5VideoViewProxy != null) {
mHTML5VideoViewProxy.exitFullScreenVideo();
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 905647d..40229af 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -443,7 +443,7 @@
}
/**
- * Notify the browser that the origin has exceeded it's database quota.
+ * Notify the embedding application that the origin has exceeded it's database quota.
* @param url The URL that caused the overflow.
* @param databaseIdentifier The identifier of the database.
* @param quota The current quota for the origin.
@@ -468,12 +468,15 @@
}
/**
- * Notify the browser that the appcache has exceeded its max size.
+ * Notify the embedding application that the appcache has reached or exceeded its maximum
+ * allowed storage size.
+ *
* @param requiredStorage is the amount of storage, in bytes, that would be
* needed in order for the last appcache operation to succeed.
+ * @param maxSize maximum allowed Application Cache database size, in bytes.
*/
- protected void reachedMaxAppCacheSize(long requiredStorage) {
- mCallbackProxy.onReachedMaxAppCacheSize(requiredStorage, getUsedQuota(),
+ protected void reachedMaxAppCacheSize(long requiredStorage, long maxSize) {
+ mCallbackProxy.onReachedMaxAppCacheSize(requiredStorage, maxSize,
new WebStorage.QuotaUpdater() {
@Override
public void updateQuota(long newQuota) {
@@ -562,17 +565,6 @@
}
/**
- * Notify the webview that we want to display the video layer fullscreen.
- */
- protected void enterFullscreenForVideoLayer(int layerId, String url) {
- if (mWebViewClassic == null) return;
- Message message = Message.obtain(mWebViewClassic.mPrivateHandler,
- WebViewClassic.ENTER_FULLSCREEN_VIDEO, layerId, 0);
- message.obj = url;
- message.sendToTarget();
- }
-
- /**
* Notify the webview that we want to exit the video fullscreen.
* This is called through JNI by webcore.
*/
@@ -2128,8 +2120,8 @@
return width;
}
- // Utility method for exceededDatabaseQuota and reachedMaxAppCacheSize
- // callbacks. Computes the sum of database quota for all origins.
+ // Utility method for exceededDatabaseQuota callback. Computes the sum
+ // of WebSQL database quota for all origins.
private long getUsedQuota() {
WebStorageClassic webStorage = WebStorageClassic.getInstance();
Collection<WebStorage.Origin> origins = webStorage.getOriginsSync();
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 19aef8e..130f0ee 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -42,7 +42,6 @@
import android.util.StateSet;
import android.view.ActionMode;
import android.view.ContextMenu.ContextMenuInfo;
-import android.view.FocusFinder;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
import android.view.InputDevice;
@@ -1329,150 +1328,6 @@
}
@Override
- public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
- if ((focusableMode & FOCUSABLES_ACCESSIBILITY) == FOCUSABLES_ACCESSIBILITY) {
- switch(direction) {
- case ACCESSIBILITY_FOCUS_BACKWARD: {
- View focusable = (getChildCount() > 0) ? getChildAt(getChildCount() - 1) : this;
- if (focusable.isAccessibilityFocusable()) {
- views.add(focusable);
- }
- } return;
- case ACCESSIBILITY_FOCUS_FORWARD: {
- if (isAccessibilityFocusable()) {
- views.add(this);
- }
- } return;
- }
- }
- super.addFocusables(views, direction, focusableMode);
- }
-
- @Override
- public View focusSearch(int direction) {
- return focusSearch(this, direction);
- }
-
- @Override
- public View focusSearch(View focused, int direction) {
- switch (direction) {
- case ACCESSIBILITY_FOCUS_FORWARD: {
- // If we are the focused view try giving it to the first child.
- if (focused == this) {
- final int childCount = getChildCount();
- for (int i = 0; i < childCount; i++) {
- View child = getChildAt(i);
- if (child.getVisibility() == View.VISIBLE) {
- return child;
- }
- }
- return super.focusSearch(this, direction);
- }
- // Find the item that has the focused view.
- final int currentPosition = getPositionForView(focused);
- if (currentPosition < 0 || currentPosition >= getCount()) {
- return super.focusSearch(this, direction);
- }
- // Try to advance focus in the current item.
- View currentItem = getChildAt(currentPosition - getFirstVisiblePosition());
- if (currentItem.getVisibility() == View.VISIBLE) {
- if (currentItem instanceof ViewGroup) {
- ViewGroup currentItemGroup = (ViewGroup) currentItem;
- View nextFocus = FocusFinder.getInstance().findNextFocus(currentItemGroup,
- focused, direction);
- if (nextFocus != null && nextFocus != currentItemGroup
- && nextFocus != focused) {
- return nextFocus;
- }
- }
- }
- // Try to move focus to the next item.
- final int nextPosition = currentPosition - getFirstVisiblePosition() + 1;
- for (int i = nextPosition; i < getChildCount(); i++) {
- View child = getChildAt(i);
- if (child.getVisibility() == View.VISIBLE) {
- return child;
- }
- }
- // No next item start searching from the list.
- return super.focusSearch(this, direction);
- }
- case ACCESSIBILITY_FOCUS_BACKWARD: {
- // If we are the focused search from the view that is
- // as closer to the bottom as possible.
- if (focused == this) {
- final int childCount = getChildCount();
- for (int i = childCount - 1; i >= 0; i--) {
- View child = getChildAt(i);
- if (child.getVisibility() == View.VISIBLE) {
- return super.focusSearch(child, direction);
- }
- }
- return super.focusSearch(this, direction);
- }
- // Find the item that has the focused view.
- final int currentPosition = getPositionForView(focused);
- if (currentPosition < 0 || currentPosition >= getCount()) {
- return super.focusSearch(this, direction);
- }
-
- View currentItem = getChildAt(currentPosition - getFirstVisiblePosition());
-
- // If a list item is the focused view we try to find a view
- // in the previous item since in reverse the item contents
- // get accessibility focus before the item itself.
- if (currentItem == focused) {
- currentItem = null;
- focused = null;
- // This list gets accessibility focus after the last item.
- final int previousPosition = currentPosition - getFirstVisiblePosition() - 1;
- for (int i = previousPosition; i >= 0; i--) {
- View child = getChildAt(i);
- if (child.getVisibility() == View.VISIBLE) {
- currentItem = child;
- break;
- }
- }
- if (currentItem == null) {
- return this;
- }
- }
-
- if (currentItem.getVisibility() == View.VISIBLE) {
- // Search into the item.
- if (currentItem instanceof ViewGroup) {
- ViewGroup currentItemGroup = (ViewGroup) currentItem;
- View nextFocus = FocusFinder.getInstance().findNextFocus(currentItemGroup,
- focused, direction);
- if (nextFocus != null && nextFocus != currentItemGroup
- && nextFocus != focused) {
- return nextFocus;
- }
- }
-
- // If not item content wants focus we give it to the item.
- return currentItem;
- }
-
- return super.focusSearch(this, direction);
- }
- }
- return super.focusSearch(focused, direction);
- }
-
- /**
- * @hide
- */
- @Override
- public View findViewToTakeAccessibilityFocusFromHover(View child, View descendant) {
- final int position = getPositionForView(child);
- if (position != INVALID_POSITION) {
- return getChildAt(position - mFirstPosition);
- }
- return super.findViewToTakeAccessibilityFocusFromHover(child, descendant);
- }
-
- @Override
public void sendAccessibilityEvent(int eventType) {
// Since this class calls onScrollChanged even if the mFirstPosition and the
// child count have not changed we will avoid sending duplicate accessibility
diff --git a/core/java/android/widget/DigitalClock.java b/core/java/android/widget/DigitalClock.java
index add9d9b..3e9107f 100644
--- a/core/java/android/widget/DigitalClock.java
+++ b/core/java/android/widget/DigitalClock.java
@@ -34,13 +34,17 @@
*
* FIXME: implement separate views for hours/minutes/seconds, so
* proportional fonts don't shake rendering
+ *
+ * @deprecated It is recommended you use a {@link TextView} and {@link DateFormat}
+ * to implement the same behavior.
*/
-
+@Deprecated
public class DigitalClock extends TextView {
Calendar mCalendar;
private final static String m12 = "h:mm:ss aa";
private final static String m24 = "k:mm:ss";
+ @SuppressWarnings("FieldCanBeLocal") // We must keep a reference to this observer
private FormatChangeObserver mFormatChangeObserver;
private Runnable mTicker;
@@ -52,17 +56,15 @@
public DigitalClock(Context context) {
super(context);
- initClock(context);
+ initClock();
}
public DigitalClock(Context context, AttributeSet attrs) {
super(context, attrs);
- initClock(context);
+ initClock();
}
- private void initClock(Context context) {
- Resources r = mContext.getResources();
-
+ private void initClock() {
if (mCalendar == null) {
mCalendar = Calendar.getInstance();
}
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index c29dd58..7f9dab9 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -978,8 +978,8 @@
mSuggestionsPopupWindow.onParentLostFocus();
}
- // Don't leave us in the middle of a batch edit.
- mTextView.onEndBatchEdit();
+ // Don't leave us in the middle of a batch edit. Same as in onFocusChanged
+ ensureEndedBatchEdit();
}
}
@@ -2282,14 +2282,11 @@
final SuggestionInfo suggestionInfo = mSuggestionInfos[position];
textView.setText(suggestionInfo.text);
- if (suggestionInfo.suggestionIndex == ADD_TO_DICTIONARY) {
- textView.setCompoundDrawablesWithIntrinsicBounds(
- com.android.internal.R.drawable.ic_suggestions_add, 0, 0, 0);
- } else if (suggestionInfo.suggestionIndex == DELETE_TEXT) {
- textView.setCompoundDrawablesWithIntrinsicBounds(
- com.android.internal.R.drawable.ic_suggestions_delete, 0, 0, 0);
+ if (suggestionInfo.suggestionIndex == ADD_TO_DICTIONARY ||
+ suggestionInfo.suggestionIndex == DELETE_TEXT) {
+ textView.setBackgroundColor(Color.TRANSPARENT);
} else {
- textView.setCompoundDrawables(null, null, null, null);
+ textView.setBackgroundColor(Color.WHITE);
}
return textView;
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java
index 083a952..d2139af 100644
--- a/core/java/android/widget/FastScroller.java
+++ b/core/java/android/widget/FastScroller.java
@@ -181,10 +181,13 @@
}
public void setScrollbarPosition(int position) {
+ if (position == View.SCROLLBAR_POSITION_DEFAULT) {
+ position = mList.isLayoutRtl() ?
+ View.SCROLLBAR_POSITION_LEFT : View.SCROLLBAR_POSITION_RIGHT;
+ }
mPosition = position;
switch (position) {
default:
- case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
mOverlayDrawable = mOverlayDrawableRight;
break;
@@ -229,7 +232,6 @@
final int viewWidth = mList.getWidth();
// Bounds are always top right. Y coordinate get's translated during draw
switch (mPosition) {
- case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
mThumbDrawable.setBounds(viewWidth - mThumbW, 0, viewWidth, mThumbH);
break;
@@ -327,7 +329,6 @@
}
int left = 0;
switch (mPosition) {
- case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
left = viewWidth - (mThumbW * alpha) / ScrollFade.ALPHA_MAX;
break;
@@ -360,7 +361,6 @@
int left = 0;
switch (mPosition) {
default:
- case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
left = Math.max(0,
mThumbDrawable.getBounds().left - mThumbW - mOverlaySize);
@@ -410,7 +410,6 @@
if (mThumbDrawable != null) {
switch (mPosition) {
default:
- case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
mThumbDrawable.setBounds(w - mThumbW, 0, w, mThumbH);
break;
@@ -820,7 +819,6 @@
boolean inTrack = false;
switch (mPosition) {
default:
- case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
inTrack = x > mList.getWidth() - mThumbW;
break;
diff --git a/core/java/android/widget/Gallery.java b/core/java/android/widget/Gallery.java
index 72e429c..b72b8cb 100644
--- a/core/java/android/widget/Gallery.java
+++ b/core/java/android/widget/Gallery.java
@@ -49,9 +49,6 @@
* <p>
* Views given to the Gallery should use {@link Gallery.LayoutParams} as their
* layout parameters type.
- *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-gallery.html">Gallery
- * tutorial</a>.</p>
*
* @attr ref android.R.styleable#Gallery_animationDuration
* @attr ref android.R.styleable#Gallery_spacing
diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java
index 8c6ce19..18c4fe6 100644
--- a/core/java/android/widget/HorizontalScrollView.java
+++ b/core/java/android/widget/HorizontalScrollView.java
@@ -47,18 +47,13 @@
* is a {@link LinearLayout} in a horizontal orientation, presenting a horizontal
* array of top-level items that the user can scroll through.
*
- * <p>You should never use a HorizontalScrollView with a {@link ListView}, since
- * ListView takes care of its own scrolling. Most importantly, doing this
- * defeats all of the important optimizations in ListView for dealing with
- * large lists, since it effectively forces the ListView to display its entire
- * list of items to fill up the infinite container supplied by HorizontalScrollView.
- *
* <p>The {@link TextView} class also
- * takes care of its own scrolling, so does not require a ScrollView, but
+ * takes care of its own scrolling, so does not require a HorizontalScrollView, but
* using the two together is possible to achieve the effect of a text view
* within a larger container.
*
- * <p>HorizontalScrollView only supports horizontal scrolling.
+ * <p>HorizontalScrollView only supports horizontal scrolling. For vertical scrolling,
+ * use either {@link ScrollView} or {@link ListView}.
*
* @attr ref android.R.styleable#HorizontalScrollView_fillViewport
*/
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index 2391898d..4e114d8 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -345,28 +345,42 @@
void drawDividersHorizontal(Canvas canvas) {
final int count = getVirtualChildCount();
+ final boolean isLayoutRtl = isLayoutRtl();
for (int i = 0; i < count; i++) {
final View child = getVirtualChildAt(i);
if (child != null && child.getVisibility() != GONE) {
if (hasDividerBeforeChildAt(i)) {
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
- final int left = child.getLeft() - lp.leftMargin - mDividerWidth;
- drawVerticalDivider(canvas, left);
+ final int position;
+ if (isLayoutRtl) {
+ position = child.getRight() + lp.rightMargin;
+ } else {
+ position = child.getLeft() - lp.leftMargin - mDividerWidth;
+ }
+ drawVerticalDivider(canvas, position);
}
}
}
if (hasDividerBeforeChildAt(count)) {
final View child = getVirtualChildAt(count - 1);
- int right = 0;
+ int position;
if (child == null) {
- right = getWidth() - getPaddingRight() - mDividerWidth;
+ if (isLayoutRtl) {
+ position = getPaddingLeft();
+ } else {
+ position = getWidth() - getPaddingRight() - mDividerWidth;
+ }
} else {
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
- right = child.getRight() + lp.rightMargin;
+ if (isLayoutRtl) {
+ position = child.getLeft() - lp.leftMargin - mDividerWidth;
+ } else {
+ position = child.getRight() + lp.rightMargin;
+ }
}
- drawVerticalDivider(canvas, right);
+ drawVerticalDivider(canvas, position);
}
}
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index a458f57..eabcb80 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -1417,19 +1417,6 @@
}
@Override
- public void addFocusables(ArrayList<View> views, int direction, int focusableMode) {
- // We do not want the real descendant to be considered focus search
- // since it is managed by the accessibility node provider.
- if ((focusableMode & FOCUSABLES_ACCESSIBILITY) == FOCUSABLES_ACCESSIBILITY) {
- if (isAccessibilityFocusable()) {
- views.add(this);
- return;
- }
- }
- super.addFocusables(views, direction, focusableMode);
- }
-
- @Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setClassName(NumberPicker.class.getName());
@@ -2297,78 +2284,6 @@
return super.performAction(virtualViewId, action, arguments);
}
- @Override
- public AccessibilityNodeInfo findAccessibilityFocus(int virtualViewId) {
- return createAccessibilityNodeInfo(mAccessibilityFocusedView);
- }
-
- @Override
- public AccessibilityNodeInfo accessibilityFocusSearch(int direction, int virtualViewId) {
- switch (direction) {
- case View.ACCESSIBILITY_FOCUS_DOWN:
- case View.ACCESSIBILITY_FOCUS_FORWARD: {
- switch (mAccessibilityFocusedView) {
- case UNDEFINED: {
- return createAccessibilityNodeInfo(View.NO_ID);
- }
- case View.NO_ID: {
- if (hasVirtualDecrementButton()) {
- return createAccessibilityNodeInfo(VIRTUAL_VIEW_ID_DECREMENT);
- }
- }
- //$FALL-THROUGH$
- case VIRTUAL_VIEW_ID_DECREMENT: {
- return createAccessibilityNodeInfo(VIRTUAL_VIEW_ID_INPUT);
- }
- case VIRTUAL_VIEW_ID_INPUT: {
- if (hasVirtualIncrementButton()) {
- return createAccessibilityNodeInfo(VIRTUAL_VIEW_ID_INCREMENT);
- }
- }
- //$FALL-THROUGH$
- case VIRTUAL_VIEW_ID_INCREMENT: {
- View nextFocus = NumberPicker.this.focusSearch(direction);
- if (nextFocus != null) {
- return nextFocus.createAccessibilityNodeInfo();
- }
- return null;
- }
- }
- } break;
- case View.ACCESSIBILITY_FOCUS_UP:
- case View.ACCESSIBILITY_FOCUS_BACKWARD: {
- switch (mAccessibilityFocusedView) {
- case UNDEFINED: {
- return createAccessibilityNodeInfo(View.NO_ID);
- }
- case View.NO_ID: {
- if (hasVirtualIncrementButton()) {
- return createAccessibilityNodeInfo(VIRTUAL_VIEW_ID_INCREMENT);
- }
- }
- //$FALL-THROUGH$
- case VIRTUAL_VIEW_ID_INCREMENT: {
- return createAccessibilityNodeInfo(VIRTUAL_VIEW_ID_INPUT);
- }
- case VIRTUAL_VIEW_ID_INPUT: {
- if (hasVirtualDecrementButton()) {
- return createAccessibilityNodeInfo(VIRTUAL_VIEW_ID_DECREMENT);
- }
- }
- //$FALL-THROUGH$
- case VIRTUAL_VIEW_ID_DECREMENT: {
- View nextFocus = NumberPicker.this.focusSearch(direction);
- if (nextFocus != null) {
- return nextFocus.createAccessibilityNodeInfo();
- }
- return null;
- }
- }
- } break;
- }
- return null;
- }
-
public void sendAccessibilityEventForVirtualView(int virtualViewId, int eventType) {
switch (virtualViewId) {
case VIRTUAL_VIEW_ID_DECREMENT: {
@@ -2506,14 +2421,22 @@
info.setParent((View) getParentForAccessibility());
info.setEnabled(NumberPicker.this.isEnabled());
info.setScrollable(true);
+
+ final float applicationScale =
+ getContext().getResources().getCompatibilityInfo().applicationScale;
+
Rect boundsInParent = mTempRect;
boundsInParent.set(left, top, right, bottom);
+ boundsInParent.scale(applicationScale);
info.setBoundsInParent(boundsInParent);
+
info.setVisibleToUser(isVisibleToUser());
+
Rect boundsInScreen = boundsInParent;
int[] locationOnScreen = mTempArray;
getLocationOnScreen(locationOnScreen);
boundsInScreen.offset(locationOnScreen[0], locationOnScreen[1]);
+ boundsInScreen.scale(applicationScale);
info.setBoundsInScreen(boundsInScreen);
if (mAccessibilityFocusedView != View.NO_ID) {
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 443e7cc..dd05a03 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -128,7 +128,6 @@
private boolean mIsWidgetCollectionChild = false;
private static final OnClickHandler DEFAULT_ON_CLICK_HANDLER = new OnClickHandler();
- private OnClickHandler mOnClickHandler = DEFAULT_ON_CLICK_HANDLER;
/**
* This annotation indicates that a subclass of View is alllowed to be used
@@ -185,8 +184,8 @@
* SUBCLASSES MUST BE IMMUTABLE SO CLONE WORKS!!!!!
*/
private abstract static class Action implements Parcelable {
- public abstract void apply(RemoteViews owner, View root,
- ViewGroup rootParent) throws ActionException;
+ public abstract void apply(View root, ViewGroup rootParent,
+ OnClickHandler handler) throws ActionException;
public int describeContents() {
return 0;
@@ -229,7 +228,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View view = root.findViewById(viewId);
if (!(view instanceof AdapterView<?>)) return;
@@ -260,7 +259,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, final OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -272,7 +271,6 @@
if (target == root) {
target.setTagInternal(com.android.internal.R.id.fillInIntent, fillInIntent);
} else if (target != null && fillInIntent != null) {
- final OnClickHandler clicker = owner.mOnClickHandler;
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
// Insure that this view is a child of an AdapterView
@@ -310,7 +308,7 @@
rect.bottom = (int) ((pos[1] + v.getHeight()) * appScale + 0.5f);
fillInIntent.setSourceBounds(rect);
- clicker.onClickHandler(v, pendingIntent, fillInIntent);
+ handler.onClickHandler(v, pendingIntent, fillInIntent);
}
};
@@ -342,14 +340,13 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, final OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
// If the view isn't an AdapterView, setting a PendingIntent template doesn't make sense
if (target instanceof AdapterView<?>) {
AdapterView<?> av = (AdapterView<?>) target;
- final OnClickHandler clicker = owner.mOnClickHandler;
// The PendingIntent template is stored in the view's tag.
OnItemClickListener listener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
@@ -389,7 +386,7 @@
final Intent intent = new Intent();
intent.setSourceBounds(rect);
- clicker.onClickHandler(view, pendingIntentTemplate, fillInIntent);
+ handler.onClickHandler(view, pendingIntentTemplate, fillInIntent);
}
}
};
@@ -426,7 +423,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -494,7 +491,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, final OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -515,7 +512,6 @@
if (target != null) {
// If the pendingIntent is null, we clear the onClickListener
- final OnClickHandler clicker = owner.mOnClickHandler;
OnClickListener listener = null;
if (pendingIntent != null) {
listener = new OnClickListener() {
@@ -535,7 +531,7 @@
final Intent intent = new Intent();
intent.setSourceBounds(rect);
- clicker.onClickHandler(v, pendingIntent, intent);
+ handler.onClickHandler(v, pendingIntent, intent);
}
};
}
@@ -602,7 +598,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -662,7 +658,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View view = root.findViewById(viewId);
if (view == null) return;
@@ -786,11 +782,11 @@
}
@Override
- public void apply(RemoteViews owner, View root,
- ViewGroup rootParent) throws ActionException {
+ public void apply(View root, ViewGroup rootParent,
+ OnClickHandler handler) throws ActionException {
ReflectionAction ra = new ReflectionAction(viewId, methodName, ReflectionAction.BITMAP,
bitmap);
- ra.apply(owner, root, rootParent);
+ ra.apply(root, rootParent, handler);
}
@Override
@@ -1006,7 +1002,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View view = root.findViewById(viewId);
if (view == null) return;
@@ -1108,13 +1104,13 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final ViewGroup target = (ViewGroup) root.findViewById(viewId);
if (target == null) return;
if (nestedViews != null) {
// Inflate nested views and add as children
- target.addView(nestedViews.apply(owner, context, target));
+ target.addView(nestedViews.apply(context, target, handler));
} else {
// Clear all children when nested views omitted
target.removeAllViews();
@@ -1175,7 +1171,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final TextView target = (TextView) root.findViewById(viewId);
if (target == null) return;
@@ -1217,7 +1213,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final TextView target = (TextView) root.findViewById(viewId);
if (target == null) return;
@@ -1261,7 +1257,7 @@
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -2106,11 +2102,6 @@
return this;
}
- /** @hide */
- public void setOnClickHandler(OnClickHandler handler) {
- mOnClickHandler = handler;
- }
-
/**
* Inflates the view hierarchy represented by this object and applies
* all of the actions.
@@ -2123,10 +2114,11 @@
* @return The inflated view hierarchy
*/
public View apply(Context context, ViewGroup parent) {
- return apply(this, context, parent);
+ return apply(context, parent, DEFAULT_ON_CLICK_HANDLER);
}
- View apply(RemoteViews owner, Context context, ViewGroup parent) {
+ /** @hide */
+ public View apply(Context context, ViewGroup parent, OnClickHandler handler) {
RemoteViews rvToApply = getRemoteViewsToApply(context);
View result;
@@ -2141,7 +2133,7 @@
result = inflater.inflate(rvToApply.getLayoutId(), parent, false);
- rvToApply.performApply(owner, result, parent);
+ rvToApply.performApply(result, parent, handler);
return result;
}
@@ -2155,6 +2147,11 @@
* the {@link #apply(Context,ViewGroup)} call.
*/
public void reapply(Context context, View v) {
+ reapply(context, v, DEFAULT_ON_CLICK_HANDLER);
+ }
+
+ /** @hide */
+ public void reapply(Context context, View v, OnClickHandler handler) {
RemoteViews rvToApply = getRemoteViewsToApply(context);
// In the case that a view has this RemoteViews applied in one orientation, is persisted
@@ -2168,15 +2165,15 @@
}
prepareContext(context);
- rvToApply.performApply(this, v, (ViewGroup) v.getParent());
+ rvToApply.performApply(v, (ViewGroup) v.getParent(), handler);
}
- private void performApply(RemoteViews owner, View v, ViewGroup parent) {
+ private void performApply(View v, ViewGroup parent, OnClickHandler handler) {
if (mActions != null) {
final int count = mActions.size();
for (int i = 0; i < count; i++) {
Action a = mActions.get(i);
- a.apply(owner, v, parent);
+ a.apply(v, parent, handler);
}
}
}
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index 2a20c56..ebc54f4 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -49,13 +49,18 @@
* manager with a complex hierarchy of objects. A child that is often used
* is a {@link LinearLayout} in a vertical orientation, presenting a vertical
* array of top-level items that the user can scroll through.
- *
+ * <p>You should never use a ScrollView with a {@link ListView}, because
+ * ListView takes care of its own vertical scrolling. Most importantly, doing this
+ * defeats all of the important optimizations in ListView for dealing with
+ * large lists, since it effectively forces the ListView to display its entire
+ * list of items to fill up the infinite container supplied by ScrollView.
* <p>The {@link TextView} class also
* takes care of its own scrolling, so does not require a ScrollView, but
* using the two together is possible to achieve the effect of a text view
* within a larger container.
*
- * <p>ScrollView only supports vertical scrolling.
+ * <p>ScrollView only supports vertical scrolling. For horizontal scrolling,
+ * use {@link HorizontalScrollView}.
*
* @attr ref android.R.styleable#ScrollView_fillViewport
*/
diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java
index a0e961f..c44ce8a 100644
--- a/core/java/android/widget/SearchView.java
+++ b/core/java/android/widget/SearchView.java
@@ -1595,8 +1595,8 @@
} catch (RuntimeException e2 ) {
rowNum = -1;
}
- Log.w(LOG_TAG, "Search Suggestions cursor at row " + rowNum +
- " returned exception" + e.toString());
+ Log.w(LOG_TAG, "Search suggestions cursor at row " + rowNum +
+ " returned exception.", e);
return null;
}
}
diff --git a/core/java/android/widget/SlidingDrawer.java b/core/java/android/widget/SlidingDrawer.java
index 14edd10..517246b 100644
--- a/core/java/android/widget/SlidingDrawer.java
+++ b/core/java/android/widget/SlidingDrawer.java
@@ -78,7 +78,12 @@
* @attr ref android.R.styleable#SlidingDrawer_orientation
* @attr ref android.R.styleable#SlidingDrawer_allowSingleTap
* @attr ref android.R.styleable#SlidingDrawer_animateOnClick
+ *
+ * @deprecated This class is not supported anymore. It is recommended you
+ * base your own implementation on the source code for the Android Open
+ * Source Project if you must use it in your application.
*/
+@Deprecated
public class SlidingDrawer extends ViewGroup {
public static final int ORIENTATION_HORIZONTAL = 0;
public static final int ORIENTATION_VERTICAL = 1;
diff --git a/core/java/android/widget/TabHost.java b/core/java/android/widget/TabHost.java
index 9b292be..8bb9348 100644
--- a/core/java/android/widget/TabHost.java
+++ b/core/java/android/widget/TabHost.java
@@ -45,8 +45,6 @@
* page. The individual elements are typically controlled using this container object, rather than
* setting values on the child elements themselves.
*
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-tabwidget.html">Tab Layout
- * tutorial</a>.</p>
*/
public class TabHost extends FrameLayout implements ViewTreeObserver.OnTouchModeChangeListener {
diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java
index 8901037..6bced1c 100644
--- a/core/java/android/widget/TabWidget.java
+++ b/core/java/android/widget/TabWidget.java
@@ -42,9 +42,6 @@
* handler, and manage callbacks. You might call this object to iterate the list
* of tabs, or to tweak the layout of the tab list, but most methods should be
* called on the containing TabHost object.
- *
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-tabwidget.html">Tab Layout
- * tutorial</a>.</p>
*
* @attr ref android.R.styleable#TabWidget_divider
* @attr ref android.R.styleable#TabWidget_tabStripEnabled
diff --git a/core/java/android/widget/TableLayout.java b/core/java/android/widget/TableLayout.java
index 513f180..b8ffe8d 100644
--- a/core/java/android/widget/TableLayout.java
+++ b/core/java/android/widget/TableLayout.java
@@ -70,8 +70,6 @@
* actually use any View subclass as a direct child of TableLayout. The View
* will be displayed as a single row that spans all the table columns.</p>
*
- * <p>See the <a href="{@docRoot}resources/tutorials/views/hello-tablelayout.html">Table
- * Layout tutorial</a>.</p>
*/
public class TableLayout extends LinearLayout {
private int[] mMaxWidths;
diff --git a/core/java/android/widget/TwoLineListItem.java b/core/java/android/widget/TwoLineListItem.java
index e707ea3..f7e5266 100644
--- a/core/java/android/widget/TwoLineListItem.java
+++ b/core/java/android/widget/TwoLineListItem.java
@@ -37,7 +37,11 @@
* layout for this object.
*
* @attr ref android.R.styleable#TwoLineListItem_mode
+ *
+ * @deprecated This class can be implemented easily by apps using a {@link RelativeLayout}
+ * or a {@link LinearLayout}.
*/
+@Deprecated
@Widget
public class TwoLineListItem extends RelativeLayout {
diff --git a/core/java/com/android/internal/app/IMediaContainerService.aidl b/core/java/com/android/internal/app/IMediaContainerService.aidl
index c9f7a58..c82834f7 100755
--- a/core/java/com/android/internal/app/IMediaContainerService.aidl
+++ b/core/java/com/android/internal/app/IMediaContainerService.aidl
@@ -35,4 +35,5 @@
long calculateDirectorySize(in String directory);
/** Return file system stats: [0] is total bytes, [1] is available bytes */
long[] getFileSystemStats(in String path);
+ void clearDirectory(in String directory);
}
diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java
index 4c34d73..ac1d594 100644
--- a/core/java/com/android/internal/view/BaseIWindow.java
+++ b/core/java/com/android/internal/view/BaseIWindow.java
@@ -28,11 +28,12 @@
public class BaseIWindow extends IWindow.Stub {
private IWindowSession mSession;
public int mSeq;
-
+
public void setSession(IWindowSession session) {
mSession = session;
}
-
+
+ @Override
public void resized(int w, int h, Rect contentInsets,
Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
if (reportDraw) {
@@ -43,24 +44,35 @@
}
}
+ @Override
+ public void moved(int newX, int newY) {
+ }
+
+ @Override
public void dispatchAppVisibility(boolean visible) {
}
+ @Override
public void dispatchGetNewSurface() {
}
+ @Override
public void dispatchScreenState(boolean on) {
}
+ @Override
public void windowFocusChanged(boolean hasFocus, boolean touchEnabled) {
}
+ @Override
public void executeCommand(String command, String parameters, ParcelFileDescriptor out) {
}
-
+
+ @Override
public void closeSystemDialogs(String reason) {
}
-
+
+ @Override
public void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, boolean sync) {
if (sync) {
try {
@@ -70,14 +82,17 @@
}
}
+ @Override
public void dispatchDragEvent(DragEvent event) {
}
+ @Override
public void dispatchSystemUiVisibilityChanged(int seq, int globalUi,
int localValue, int localChanges) {
mSeq = seq;
}
+ @Override
public void dispatchWallpaperCommand(String action, int x, int y,
int z, Bundle extras, boolean sync) {
if (sync) {
@@ -88,6 +103,7 @@
}
}
+ @Override
public void doneAnimating() {
}
}
diff --git a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java
index 4e60b75..421e247 100644
--- a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java
+++ b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java
@@ -214,8 +214,8 @@
mVibrationDuration);
mFeedbackCount = a.getInt(R.styleable.GlowPadView_feedbackCount,
mFeedbackCount);
- mHandleDrawable = new TargetDrawable(res,
- a.peekValue(R.styleable.GlowPadView_handleDrawable).resourceId);
+ TypedValue handle = a.peekValue(R.styleable.GlowPadView_handleDrawable);
+ mHandleDrawable = new TargetDrawable(res, handle != null ? handle.resourceId : 0);
mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE);
mOuterRing = new TargetDrawable(res,
getResourceId(a, R.styleable.GlowPadView_outerRingDrawable));
@@ -717,7 +717,7 @@
startBackgroundAnimation(0, 0.0f);
stopAndHideWaveAnimation();
hideTargets(animate, false);
- hideGlow(0, 0, 1.0f, null);
+ hideGlow(0, 0, 0.0f, null);
Tweener.reset();
}
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 1f2b4ba..eb39b12 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -32,6 +32,7 @@
com_google_android_gles_jni_EGLImpl.cpp \
com_google_android_gles_jni_GLImpl.cpp.arm \
android_app_NativeActivity.cpp \
+ android_opengl_EGL14.cpp \
android_opengl_GLES10.cpp \
android_opengl_GLES10Ext.cpp \
android_opengl_GLES11.cpp \
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 7a23747..532a6e5 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -68,6 +68,7 @@
extern int register_com_google_android_gles_jni_EGLImpl(JNIEnv* env);
extern int register_com_google_android_gles_jni_GLImpl(JNIEnv* env);
+extern int register_android_opengl_jni_EGL14(JNIEnv* env);
extern int register_android_opengl_jni_GLES10(JNIEnv* env);
extern int register_android_opengl_jni_GLES10Ext(JNIEnv* env);
extern int register_android_opengl_jni_GLES11(JNIEnv* env);
@@ -1105,6 +1106,7 @@
REG_JNI(register_android_view_TextureView),
REG_JNI(register_com_google_android_gles_jni_EGLImpl),
REG_JNI(register_com_google_android_gles_jni_GLImpl),
+ REG_JNI(register_android_opengl_jni_EGL14),
REG_JNI(register_android_opengl_jni_GLES10),
REG_JNI(register_android_opengl_jni_GLES10Ext),
REG_JNI(register_android_opengl_jni_GLES11),
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 416370e..69ef080 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -327,7 +327,18 @@
const float sx = scaledWidth / float(decoded->width());
const float sy = scaledHeight / float(decoded->height());
- bitmap->setConfig(decoded->getConfig(), scaledWidth, scaledHeight);
+ SkBitmap::Config config = decoded->config();
+ switch (config) {
+ case SkBitmap::kNo_Config:
+ case SkBitmap::kIndex8_Config:
+ case SkBitmap::kRLE_Index8_Config:
+ config = SkBitmap::kARGB_8888_Config;
+ break;
+ default:
+ break;
+ }
+
+ bitmap->setConfig(config, scaledWidth, scaledHeight);
bitmap->setIsOpaque(decoded->isOpaque());
bitmap->allocPixels(&javaAllocator, NULL);
bitmap->eraseColor(0);
diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp
index 5466be4..2bdba87 100644
--- a/core/jni/android/graphics/TextLayoutCache.cpp
+++ b/core/jni/android/graphics/TextLayoutCache.cpp
@@ -345,26 +345,10 @@
void TextLayoutShaper::init() {
mDefaultTypeface = SkFontHost::CreateTypeface(NULL, NULL, NULL, 0, SkTypeface::kNormal);
- mArabicTypeface = NULL;
- mHebrewRegularTypeface = NULL;
- mHebrewBoldTypeface = NULL;
- mBengaliTypeface = NULL;
- mThaiTypeface = NULL;
- mDevanagariRegularTypeface = NULL;
- mTamilRegularTypeface = NULL;
- mTamilBoldTypeface = NULL;
}
void TextLayoutShaper::unrefTypefaces() {
SkSafeUnref(mDefaultTypeface);
- SkSafeUnref(mArabicTypeface);
- SkSafeUnref(mHebrewRegularTypeface);
- SkSafeUnref(mHebrewBoldTypeface);
- SkSafeUnref(mBengaliTypeface);
- SkSafeUnref(mThaiTypeface);
- SkSafeUnref(mDevanagariRegularTypeface);
- SkSafeUnref(mTamilRegularTypeface);
- SkSafeUnref(mTamilBoldTypeface);
}
TextLayoutShaper::~TextLayoutShaper() {
@@ -750,115 +734,32 @@
* assumption is that its lifetime is managed elsewhere - in particular, the fallback typefaces
* for the default font live in a global cache.
*/
-SkTypeface* TextLayoutShaper::typefaceForUnichar(const SkPaint* paint, SkTypeface* typeface,
- SkUnichar unichar, HB_Script script) {
- // Set the correct Typeface depending on the script
- switch (script) {
- case HB_Script_Arabic:
- typeface = getCachedTypeface(&mArabicTypeface, HB_Script_Arabic,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Arabic Typeface");
-#endif
- break;
-
- case HB_Script_Hebrew:
- if (typeface) {
- switch (typeface->style()) {
- case SkTypeface::kBold:
- case SkTypeface::kBoldItalic:
- typeface = getCachedTypeface(&mHebrewBoldTypeface, HB_Script_Hebrew,
- SkTypeface::kBold);
-#if DEBUG_GLYPHS
- ALOGD("Using Hebrew Bold/BoldItalic Typeface");
-#endif
- break;
-
- case SkTypeface::kNormal:
- case SkTypeface::kItalic:
- default:
- typeface = getCachedTypeface(&mHebrewRegularTypeface, HB_Script_Hebrew,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Hebrew Regular/Italic Typeface");
-#endif
- break;
- }
- } else {
- typeface = getCachedTypeface(&mHebrewRegularTypeface, HB_Script_Hebrew,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Hebrew Regular Typeface");
-#endif
- }
- break;
-
- case HB_Script_Bengali:
- typeface = getCachedTypeface(&mBengaliTypeface, HB_Script_Bengali,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Bengali Typeface");
-#endif
- break;
-
- case HB_Script_Thai:
- typeface = getCachedTypeface(&mThaiTypeface, HB_Script_Thai,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Thai Typeface");
-#endif
- break;
-
- case HB_Script_Devanagari:
- typeface = getCachedTypeface(&mDevanagariRegularTypeface, HB_Script_Devanagari,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Devanagari Regular Typeface");
-#endif
- break;
-
- case HB_Script_Tamil:
- if (typeface) {
- switch (typeface->style()) {
- case SkTypeface::kBold:
- case SkTypeface::kBoldItalic:
- typeface = getCachedTypeface(&mTamilBoldTypeface, HB_Script_Tamil,
- SkTypeface::kBold);
-#if DEBUG_GLYPHS
- ALOGD("Using Tamil Bold Typeface");
-#endif
- break;
-
- case SkTypeface::kNormal:
- case SkTypeface::kItalic:
- default:
- typeface = getCachedTypeface(&mTamilRegularTypeface, HB_Script_Tamil,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Tamil Regular Typeface");
-#endif
- break;
- }
- } else {
- typeface = getCachedTypeface(&mTamilRegularTypeface, HB_Script_Tamil,
- SkTypeface::kNormal);
-#if DEBUG_GLYPHS
- ALOGD("Using Tamil Regular Typeface");
-#endif
- }
- break;
-
- default:
-#if DEBUG_GLYPHS
- if (typeface) {
- ALOGD("Using Paint Typeface");
- }
-#endif
- break;
+SkTypeface* TextLayoutShaper::typefaceForScript(const SkPaint* paint, SkTypeface* typeface,
+ HB_Script script) {
+ SkTypeface::Style currentStyle = SkTypeface::kNormal;
+ if (typeface) {
+ currentStyle = typeface->style();
}
+ typeface = SkCreateTypefaceForScript(script, currentStyle);
+#if DEBUG_GLYPHS
+ ALOGD("Using Harfbuzz Script %d, Style %d", script, currentStyle);
+#endif
return typeface;
}
+bool TextLayoutShaper::isComplexScript(HB_Script script) {
+ switch (script) {
+ case HB_Script_Common:
+ case HB_Script_Greek:
+ case HB_Script_Cyrillic:
+ case HB_Script_Hangul:
+ case HB_Script_Inherited:
+ return false;
+ default:
+ return true;
+ }
+}
+
size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) {
// Reset kerning
mShaperItem.kerning_applied = false;
@@ -874,37 +775,35 @@
// If we are a "common" script we dont need to shift
size_t baseGlyphCount = 0;
SkUnichar firstUnichar = 0;
- switch (mShaperItem.item.script) {
- case HB_Script_Arabic:
- case HB_Script_Hebrew:
- case HB_Script_Bengali:
- case HB_Script_Devanagari:
- case HB_Script_Tamil:
- case HB_Script_Thai:{
- const uint16_t* text16 = (const uint16_t*)(mShaperItem.string + mShaperItem.item.pos);
+ if (isComplexScript(mShaperItem.item.script)) {
+ const uint16_t* text16 = (const uint16_t*) (mShaperItem.string + mShaperItem.item.pos);
const uint16_t* text16End = text16 + mShaperItem.item.length;
firstUnichar = SkUTF16_NextUnichar(&text16);
while (firstUnichar == ' ' && text16 < text16End) {
firstUnichar = SkUTF16_NextUnichar(&text16);
}
baseGlyphCount = paint->getBaseGlyphCount(firstUnichar);
- break;
- }
- default:
- break;
}
- // We test the baseGlyphCount to see if the typeface supports the requested script
if (baseGlyphCount != 0) {
- typeface = typefaceForUnichar(paint, typeface, firstUnichar, mShaperItem.item.script);
+ typeface = typefaceForScript(paint, typeface, mShaperItem.item.script);
+ if (!typeface) {
+ typeface = mDefaultTypeface;
+ SkSafeRef(typeface);
+#if DEBUG_GLYPHS
+ ALOGD("Using Default Typeface");
+#endif
+ }
+ } else {
+ if (!typeface) {
+ typeface = mDefaultTypeface;
+#if DEBUG_GLYPHS
+ ALOGD("Using Default Typeface");
+#endif
+ }
+ SkSafeRef(typeface);
}
- if (!typeface) {
- typeface = mDefaultTypeface;
-#if DEBUG_GLYPHS
- ALOGD("Using Default Typeface");
-#endif
- }
mShapingPaint.setTypeface(typeface);
mShaperItem.face = getCachedHBFace(typeface);
@@ -912,6 +811,7 @@
ALOGD("Run typeface = %p, uniqueID = %d, hb_face = %p",
typeface, typeface->uniqueID(), mShaperItem.face);
#endif
+ SkSafeUnref(typeface);
// Shape
assert(mShaperItem.item.length > 0); // Harfbuzz will overwrite other memory if length is 0.
@@ -960,25 +860,6 @@
delete[] mShaperItem.log_clusters;
}
-SkTypeface* TextLayoutShaper::getCachedTypeface(SkTypeface** typeface, HB_Script script,
- SkTypeface::Style style) {
- if (!*typeface) {
- *typeface = SkCreateTypefaceForScript(script, style);
- // CreateFromFile(path) can return NULL if the path is non existing
- if (!*typeface) {
-#if DEBUG_GLYPHS
- ALOGD("No font for Harfbuzz script %d, will use default font", script);
-#endif
- return mDefaultTypeface;
- }
- (*typeface)->ref();
-#if DEBUG_GLYPHS
- ALOGD("Created SkTypeface for Harfbuzz script %d with uniqueID = %d", script, (*typeface)->uniqueID());
-#endif
- }
- return *typeface;
-}
-
HB_Face TextLayoutShaper::getCachedHBFace(SkTypeface* typeface) {
SkFontID fontId = typeface->uniqueID();
ssize_t index = mCachedHBFaces.indexOfKey(fontId);
diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h
index 62d1796..0b25e93 100644
--- a/core/jni/android/graphics/TextLayoutCache.h
+++ b/core/jni/android/graphics/TextLayoutCache.h
@@ -189,17 +189,9 @@
SkPaint mShapingPaint;
/**
- * Skia typefaces cached for shaping
+ * Skia default typeface to be returned if we cannot resolve script
*/
SkTypeface* mDefaultTypeface;
- SkTypeface* mArabicTypeface;
- SkTypeface* mHebrewRegularTypeface;
- SkTypeface* mHebrewBoldTypeface;
- SkTypeface* mBengaliTypeface;
- SkTypeface* mThaiTypeface;
- SkTypeface* mDevanagariRegularTypeface;
- SkTypeface* mTamilRegularTypeface;
- SkTypeface* mTamilBoldTypeface;
/**
* Cache of Harfbuzz faces
@@ -224,8 +216,8 @@
void init();
void unrefTypefaces();
- SkTypeface* typefaceForUnichar(const SkPaint* paint, SkTypeface* typeface,
- SkUnichar unichar, HB_Script script);
+ SkTypeface* typefaceForScript(const SkPaint* paint, SkTypeface* typeface,
+ HB_Script script);
size_t shapeFontRun(const SkPaint* paint, bool isRTL);
@@ -245,6 +237,7 @@
bool doShaping(size_t size);
void createShaperItemGlyphArrays(size_t size);
void deleteShaperItemGlyphArrays();
+ bool isComplexScript(HB_Script script);
}; // TextLayoutShaper
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index a5a2add..c76cb64 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -516,7 +516,7 @@
sampleRateInHertz,
(audioFormat == javaAudioRecordFields.PCM16 ?
AUDIO_FORMAT_PCM_16_BIT : AUDIO_FORMAT_PCM_8_BIT),
- nbChannels);
+ audio_channel_in_mask_from_count(nbChannels));
if (result == BAD_VALUE) {
return 0;
diff --git a/core/jni/android_opengl_EGL14.cpp b/core/jni/android_opengl_EGL14.cpp
new file mode 100644
index 0000000..c271aeb
--- /dev/null
+++ b/core/jni/android_opengl_EGL14.cpp
@@ -0,0 +1,1247 @@
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+// This source file is automatically generated
+
+#include "jni.h"
+#include "JNIHelp.h"
+#include <android_runtime/AndroidRuntime.h>
+#include <android_runtime/android_view_Surface.h>
+#include <android_runtime/android_graphics_SurfaceTexture.h>
+#include <utils/misc.h>
+
+#include <assert.h>
+#include <EGL/egl.h>
+
+#include <gui/Surface.h>
+#include <gui/SurfaceTexture.h>
+#include <gui/SurfaceTextureClient.h>
+
+#include <ui/ANativeObjectBase.h>
+
+static int initialized = 0;
+
+static jclass egldisplayClass;
+static jclass eglcontextClass;
+static jclass eglsurfaceClass;
+static jclass eglconfigClass;
+
+static jmethodID egldisplayGetHandleID;
+static jmethodID eglcontextGetHandleID;
+static jmethodID eglsurfaceGetHandleID;
+static jmethodID eglconfigGetHandleID;
+
+static jmethodID egldisplayConstructor;
+static jmethodID eglcontextConstructor;
+static jmethodID eglsurfaceConstructor;
+static jmethodID eglconfigConstructor;
+
+static jobject eglNoContextObject;
+static jobject eglNoDisplayObject;
+static jobject eglNoSurfaceObject;
+
+
+
+/* Cache method IDs each time the class is loaded. */
+
+static void
+nativeClassInit(JNIEnv *_env, jclass glImplClass)
+{
+ jclass egldisplayClassLocal = _env->FindClass("android/opengl/EGLDisplay");
+ egldisplayClass = (jclass) _env->NewGlobalRef(egldisplayClassLocal);
+ jclass eglcontextClassLocal = _env->FindClass("android/opengl/EGLContext");
+ eglcontextClass = (jclass) _env->NewGlobalRef(eglcontextClassLocal);
+ jclass eglsurfaceClassLocal = _env->FindClass("android/opengl/EGLSurface");
+ eglsurfaceClass = (jclass) _env->NewGlobalRef(eglsurfaceClassLocal);
+ jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");
+ eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal);
+
+ egldisplayGetHandleID = _env->GetMethodID(egldisplayClass, "getHandle", "()I");
+ eglcontextGetHandleID = _env->GetMethodID(eglcontextClass, "getHandle", "()I");
+ eglsurfaceGetHandleID = _env->GetMethodID(eglsurfaceClass, "getHandle", "()I");
+ eglconfigGetHandleID = _env->GetMethodID(eglconfigClass, "getHandle", "()I");
+
+
+ egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(I)V");
+ eglcontextConstructor = _env->GetMethodID(eglcontextClass, "<init>", "(I)V");
+ eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(I)V");
+ eglconfigConstructor = _env->GetMethodID(eglconfigClass, "<init>", "(I)V");
+
+ jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, (jint)EGL_NO_CONTEXT);
+ eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject);
+ jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, (jint)EGL_NO_DISPLAY);
+ eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject);
+ jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, (jint)EGL_NO_SURFACE);
+ eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject);
+
+
+ jclass eglClass = _env->FindClass("android/opengl/EGL14");
+ jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;");
+ _env->SetStaticObjectField(eglClass, noContextFieldID, eglNoContextObject);
+
+ jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;");
+ _env->SetStaticObjectField(eglClass, noDisplayFieldID, eglNoDisplayObject);
+
+ jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;");
+ _env->SetStaticObjectField(eglClass, noSurfaceFieldID, eglNoSurfaceObject);
+}
+
+static void *
+fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
+ if (obj == NULL){
+ jniThrowException(_env, "java/lang/IllegalArgumentException",
+ "Object is set to null.");
+ }
+
+ return (void*) (_env->CallIntMethod(obj, mid));
+}
+
+static jobject
+toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void * handle) {
+ if (cls == eglcontextClass &&
+ (EGLContext)handle == EGL_NO_CONTEXT) {
+ return eglNoContextObject;
+ }
+
+ if (cls == egldisplayClass &&
+ (EGLDisplay)handle == EGL_NO_DISPLAY) {
+ return eglNoDisplayObject;
+ }
+
+ if (cls == eglsurfaceClass &&
+ (EGLSurface)handle == EGL_NO_SURFACE) {
+ return eglNoSurfaceObject;
+ }
+
+ return _env->NewObject(cls, con, (jint)handle);
+}
+
+// --------------------------------------------------------------------------
+/* EGLint eglGetError ( void ) */
+static jint
+android_eglGetError
+ (JNIEnv *_env, jobject _this) {
+ EGLint _returnValue = (EGLint) 0;
+ _returnValue = eglGetError();
+ return _returnValue;
+}
+
+/* EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */
+static jobject
+android_eglGetDisplay
+ (JNIEnv *_env, jobject _this, jint display_id) {
+ EGLDisplay _returnValue = (EGLDisplay) 0;
+ _returnValue = eglGetDisplay(
+ (EGLNativeDisplayType)display_id
+ );
+ return toEGLHandle(_env, egldisplayClass, egldisplayConstructor, _returnValue);
+}
+
+/* EGLBoolean eglInitialize ( EGLDisplay dpy, EGLint *major, EGLint *minor ) */
+static jboolean
+android_eglInitialize
+ (JNIEnv *_env, jobject _this, jobject dpy, jintArray major_ref, jint majorOffset, jintArray minor_ref, jint minorOffset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLint *major_base = (EGLint *) 0;
+ jint _majorRemaining;
+ EGLint *major = (EGLint *) 0;
+ EGLint *minor_base = (EGLint *) 0;
+ jint _minorRemaining;
+ EGLint *minor = (EGLint *) 0;
+
+ if (!major_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "major == null";
+ goto exit;
+ }
+ if (majorOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "majorOffset < 0";
+ goto exit;
+ }
+ _majorRemaining = _env->GetArrayLength(major_ref) - majorOffset;
+ if (_majorRemaining < 1) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - majorOffset < 1 < needed";
+ goto exit;
+ }
+ major_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(major_ref, (jboolean *)0);
+ major = major_base + majorOffset;
+
+ if (!minor_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "minor == null";
+ goto exit;
+ }
+ if (minorOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "minorOffset < 0";
+ goto exit;
+ }
+ _minorRemaining = _env->GetArrayLength(minor_ref) - minorOffset;
+ if (_minorRemaining < 1) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - minorOffset < 1 < needed";
+ goto exit;
+ }
+ minor_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(minor_ref, (jboolean *)0);
+ minor = minor_base + minorOffset;
+
+ _returnValue = eglInitialize(
+ (EGLDisplay)dpy_native,
+ (EGLint *)major,
+ (EGLint *)minor
+ );
+
+exit:
+ if (minor_base) {
+ _env->ReleasePrimitiveArrayCritical(minor_ref, minor_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (major_base) {
+ _env->ReleasePrimitiveArrayCritical(major_ref, major_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return _returnValue;
+}
+
+/* EGLBoolean eglTerminate ( EGLDisplay dpy ) */
+static jboolean
+android_eglTerminate
+ (JNIEnv *_env, jobject _this, jobject dpy) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+
+ _returnValue = eglTerminate(
+ (EGLDisplay)dpy_native
+ );
+ return _returnValue;
+}
+
+/* const char * eglQueryString ( EGLDisplay dpy, EGLint name ) */
+static jstring
+android_eglQueryString__Landroind_opengl_EGLDisplay_2I
+ (JNIEnv *_env, jobject _this, jobject dpy, jint name) {
+ const char* chars = (const char*) eglQueryString(
+ (EGLDisplay)fromEGLHandle(_env, egldisplayGetHandleID, dpy),
+ (EGLint)name
+ );
+ return _env->NewStringUTF(chars);
+}
+/* EGLBoolean eglGetConfigs ( EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config ) */
+static jboolean
+android_eglGetConfigs
+ (JNIEnv *_env, jobject _this, jobject dpy, jobjectArray configs_ref, jint configsOffset, jint config_size, jintArray num_config_ref, jint num_configOffset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ jint _configsRemaining;
+ EGLConfig *configs = (EGLConfig *) 0;
+ EGLint *num_config_base = (EGLint *) 0;
+ jint _num_configRemaining;
+ EGLint *num_config = (EGLint *) 0;
+
+ if (!configs_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "configs == null";
+ goto exit;
+ }
+ if (configsOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "configsOffset < 0";
+ goto exit;
+ }
+ _configsRemaining = _env->GetArrayLength(configs_ref) - configsOffset;
+ if (_configsRemaining < config_size) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - configsOffset < config_size < needed";
+ goto exit;
+ }
+ configs = new EGLConfig[_configsRemaining];
+
+ if (!num_config_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "num_config == null";
+ goto exit;
+ }
+ if (num_configOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "num_configOffset < 0";
+ goto exit;
+ }
+ _num_configRemaining = _env->GetArrayLength(num_config_ref) - num_configOffset;
+ num_config_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(num_config_ref, (jboolean *)0);
+ num_config = num_config_base + num_configOffset;
+
+ _returnValue = eglGetConfigs(
+ (EGLDisplay)dpy_native,
+ (EGLConfig *)configs,
+ (EGLint)config_size,
+ (EGLint *)num_config
+ );
+
+exit:
+ if (num_config_base) {
+ _env->ReleasePrimitiveArrayCritical(num_config_ref, num_config_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (configs) {
+ for (int i = 0; i < _configsRemaining; i++) {
+ jobject configs_new = toEGLHandle(_env, eglconfigClass, eglconfigConstructor, configs[i]);
+ _env->SetObjectArrayElement(configs_ref, i + configsOffset, configs_new);
+ }
+ delete[] configs;
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return _returnValue;
+}
+
+/* EGLBoolean eglChooseConfig ( EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config ) */
+static jboolean
+android_eglChooseConfig
+ (JNIEnv *_env, jobject _this, jobject dpy, jintArray attrib_list_ref, jint attrib_listOffset, jobjectArray configs_ref, jint configsOffset, jint config_size, jintArray num_config_ref, jint num_configOffset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ bool attrib_list_sentinel = false;
+ EGLint *attrib_list_base = (EGLint *) 0;
+ jint _attrib_listRemaining;
+ EGLint *attrib_list = (EGLint *) 0;
+ jint _configsRemaining;
+ EGLConfig *configs = (EGLConfig *) 0;
+ EGLint *num_config_base = (EGLint *) 0;
+ jint _num_configRemaining;
+ EGLint *num_config = (EGLint *) 0;
+
+ if (!attrib_list_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list == null";
+ goto exit;
+ }
+ if (attrib_listOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_listOffset < 0";
+ goto exit;
+ }
+ _attrib_listRemaining = _env->GetArrayLength(attrib_list_ref) - attrib_listOffset;
+ attrib_list_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
+ attrib_list = attrib_list_base + attrib_listOffset;
+ attrib_list_sentinel = false;
+ for (int i = _attrib_listRemaining - 1; i >= 0; i--) {
+ if (attrib_list[i] == EGL_NONE){
+ attrib_list_sentinel = true;
+ break;
+ }
+ }
+ if (attrib_list_sentinel == false) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list must contain EGL_NONE!";
+ goto exit;
+ }
+
+ if (!configs_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "configs == null";
+ goto exit;
+ }
+ if (configsOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "configsOffset < 0";
+ goto exit;
+ }
+ _configsRemaining = _env->GetArrayLength(configs_ref) - configsOffset;
+ if (_configsRemaining < config_size) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - configsOffset < config_size < needed";
+ goto exit;
+ }
+ configs = new EGLConfig[_configsRemaining];
+
+ if (!num_config_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "num_config == null";
+ goto exit;
+ }
+ if (num_configOffset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "num_configOffset < 0";
+ goto exit;
+ }
+ _num_configRemaining = _env->GetArrayLength(num_config_ref) - num_configOffset;
+ if (_num_configRemaining < 1) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - num_configOffset < 1 < needed";
+ goto exit;
+ }
+ num_config_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(num_config_ref, (jboolean *)0);
+ num_config = num_config_base + num_configOffset;
+
+ _returnValue = eglChooseConfig(
+ (EGLDisplay)dpy_native,
+ (EGLint *)attrib_list,
+ (EGLConfig *)configs,
+ (EGLint)config_size,
+ (EGLint *)num_config
+ );
+
+exit:
+ if (num_config_base) {
+ _env->ReleasePrimitiveArrayCritical(num_config_ref, num_config_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (attrib_list_base) {
+ _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
+ JNI_ABORT);
+ }
+ if (configs) {
+ for (int i = 0; i < _configsRemaining; i++) {
+ jobject configs_new = toEGLHandle(_env, eglconfigClass, eglconfigConstructor, configs[i]);
+ _env->SetObjectArrayElement(configs_ref, i + configsOffset, configs_new);
+ }
+ delete[] configs;
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return _returnValue;
+}
+
+/* EGLBoolean eglGetConfigAttrib ( EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value ) */
+static jboolean
+android_eglGetConfigAttrib
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject config, jint attribute, jintArray value_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config);
+ EGLint *value_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *value = (EGLint *) 0;
+
+ if (!value_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "value == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(value_ref) - offset;
+ if (_remaining < 1) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - offset < 1 < needed";
+ goto exit;
+ }
+ value_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
+ value = value_base + offset;
+
+ _returnValue = eglGetConfigAttrib(
+ (EGLDisplay)dpy_native,
+ (EGLConfig)config_native,
+ (EGLint)attribute,
+ (EGLint *)value
+ );
+
+exit:
+ if (value_base) {
+ _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return _returnValue;
+}
+
+/* EGLSurface eglCreateWindowSurface ( EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list ) */
+static jobject
+android_eglCreateWindowSurface
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject config, jobject win, jintArray attrib_list_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType = "";
+ const char * _exceptionMessage = "";
+ EGLSurface _returnValue = (EGLSurface) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config);
+ int attrib_list_sentinel = 0;
+ EGLint *attrib_list_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *attrib_list = (EGLint *) 0;
+ android::sp<ANativeWindow> window;
+
+ if (!attrib_list_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ if (win == NULL) {
+not_valid_surface:
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface";
+ goto exit;
+ }
+
+ window = android::android_Surface_getNativeWindow(_env, win);
+
+ if (window == NULL)
+ goto not_valid_surface;
+
+ _remaining = _env->GetArrayLength(attrib_list_ref) - offset;
+ attrib_list_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
+ attrib_list = attrib_list_base + offset;
+ attrib_list_sentinel = 0;
+ for (int i = _remaining - 1; i >= 0; i--) {
+ if (*((EGLint*)(attrib_list + i)) == EGL_NONE){
+ attrib_list_sentinel = 1;
+ break;
+ }
+ }
+ if (attrib_list_sentinel == 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list must contain EGL_NONE!";
+ goto exit;
+ }
+
+ _returnValue = eglCreateWindowSurface(
+ (EGLDisplay)dpy_native,
+ (EGLConfig)config_native,
+ (EGLNativeWindowType)window.get(),
+ (EGLint *)attrib_list
+ );
+
+exit:
+ if (attrib_list_base) {
+ _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
+ JNI_ABORT);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
+}
+
+/* EGLSurface eglCreateWindowSurface ( EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list ) */
+static jobject
+android_eglCreateWindowSurfaceTexture
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject config, jobject win, jintArray attrib_list_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType = "";
+ const char * _exceptionMessage = "";
+ EGLSurface _returnValue = (EGLSurface) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config);
+ int attrib_list_sentinel = 0;
+ EGLint *attrib_list_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *attrib_list = (EGLint *) 0;
+ android::sp<ANativeWindow> window;
+ android::sp<android::SurfaceTexture> surfaceTexture;
+
+ if (!attrib_list_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ if (win == NULL) {
+not_valid_surface:
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface";
+ goto exit;
+ }
+ surfaceTexture = android::SurfaceTexture_getSurfaceTexture(_env, win);
+ window = new android::SurfaceTextureClient(surfaceTexture);
+
+ if (window == NULL)
+ goto not_valid_surface;
+
+ _remaining = _env->GetArrayLength(attrib_list_ref) - offset;
+ attrib_list_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
+ attrib_list = attrib_list_base + offset;
+ attrib_list_sentinel = 0;
+ for (int i = _remaining - 1; i >= 0; i--) {
+ if (*((EGLint*)(attrib_list + i)) == EGL_NONE){
+ attrib_list_sentinel = 1;
+ break;
+ }
+ }
+ if (attrib_list_sentinel == 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list must contain EGL_NONE!";
+ goto exit;
+ }
+
+ _returnValue = eglCreateWindowSurface(
+ (EGLDisplay)dpy_native,
+ (EGLConfig)config_native,
+ (EGLNativeWindowType)window.get(),
+ (EGLint *)attrib_list
+ );
+
+exit:
+ if (attrib_list_base) {
+ _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
+ JNI_ABORT);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
+}
+/* EGLSurface eglCreatePbufferSurface ( EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list ) */
+static jobject
+android_eglCreatePbufferSurface
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject config, jintArray attrib_list_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLSurface _returnValue = (EGLSurface) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config);
+ bool attrib_list_sentinel = false;
+ EGLint *attrib_list_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *attrib_list = (EGLint *) 0;
+
+ if (!attrib_list_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(attrib_list_ref) - offset;
+ attrib_list_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
+ attrib_list = attrib_list_base + offset;
+ attrib_list_sentinel = false;
+ for (int i = _remaining - 1; i >= 0; i--) {
+ if (attrib_list[i] == EGL_NONE){
+ attrib_list_sentinel = true;
+ break;
+ }
+ }
+ if (attrib_list_sentinel == false) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list must contain EGL_NONE!";
+ goto exit;
+ }
+
+ _returnValue = eglCreatePbufferSurface(
+ (EGLDisplay)dpy_native,
+ (EGLConfig)config_native,
+ (EGLint *)attrib_list
+ );
+
+exit:
+ if (attrib_list_base) {
+ _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
+ JNI_ABORT);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
+}
+
+/* EGLSurface eglCreatePixmapSurface ( EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list ) */
+static jobject
+android_eglCreatePixmapSurface
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject config, jint pixmap, jintArray attrib_list_ref, jint offset) {
+ jniThrowException(_env, "java/lang/UnsupportedOperationException",
+ "eglCreatePixmapSurface");
+ return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, (EGLSurface) 0);
+}
+
+/* EGLBoolean eglDestroySurface ( EGLDisplay dpy, EGLSurface surface ) */
+static jboolean
+android_eglDestroySurface
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface surface_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, surface);
+
+ _returnValue = eglDestroySurface(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)surface_native
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglQuerySurface ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value ) */
+static jboolean
+android_eglQuerySurface
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface, jint attribute, jintArray value_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface surface_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, surface);
+ EGLint *value_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *value = (EGLint *) 0;
+
+ if (!value_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "value == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(value_ref) - offset;
+ if (_remaining < 1) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - offset < 1 < needed";
+ goto exit;
+ }
+ value_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
+ value = value_base + offset;
+
+ _returnValue = eglQuerySurface(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)surface_native,
+ (EGLint)attribute,
+ (EGLint *)value
+ );
+
+exit:
+ if (value_base) {
+ _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return _returnValue;
+}
+
+/* EGLBoolean eglBindAPI ( EGLenum api ) */
+static jboolean
+android_eglBindAPI
+ (JNIEnv *_env, jobject _this, jint api) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ _returnValue = eglBindAPI(
+ (EGLenum)api
+ );
+ return _returnValue;
+}
+
+/* EGLenum eglQueryAPI ( void ) */
+static jint
+android_eglQueryAPI
+ (JNIEnv *_env, jobject _this) {
+ EGLenum _returnValue = (EGLenum) 0;
+ _returnValue = eglQueryAPI();
+ return _returnValue;
+}
+
+/* EGLBoolean eglWaitClient ( void ) */
+static jboolean
+android_eglWaitClient
+ (JNIEnv *_env, jobject _this) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ _returnValue = eglWaitClient();
+ return _returnValue;
+}
+
+/* EGLBoolean eglReleaseThread ( void ) */
+static jboolean
+android_eglReleaseThread
+ (JNIEnv *_env, jobject _this) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ _returnValue = eglReleaseThread();
+ return _returnValue;
+}
+
+/* EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) */
+static jobject
+android_eglCreatePbufferFromClientBuffer
+ (JNIEnv *_env, jobject _this, jobject dpy, jint buftype, jint buffer, jobject config, jintArray attrib_list_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLSurface _returnValue = (EGLSurface) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config);
+ bool attrib_list_sentinel = false;
+ EGLint *attrib_list_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *attrib_list = (EGLint *) 0;
+
+ if (!attrib_list_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(attrib_list_ref) - offset;
+ attrib_list_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
+ attrib_list = attrib_list_base + offset;
+ attrib_list_sentinel = false;
+ for (int i = _remaining - 1; i >= 0; i--) {
+ if (attrib_list[i] == EGL_NONE){
+ attrib_list_sentinel = true;
+ break;
+ }
+ }
+ if (attrib_list_sentinel == false) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list must contain EGL_NONE!";
+ goto exit;
+ }
+
+ _returnValue = eglCreatePbufferFromClientBuffer(
+ (EGLDisplay)dpy_native,
+ (EGLenum)buftype,
+ (EGLClientBuffer)buffer,
+ (EGLConfig)config_native,
+ (EGLint *)attrib_list
+ );
+
+exit:
+ if (attrib_list_base) {
+ _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
+ JNI_ABORT);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
+}
+
+/* EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value ) */
+static jboolean
+android_eglSurfaceAttrib
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface, jint attribute, jint value) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface surface_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, surface);
+
+ _returnValue = eglSurfaceAttrib(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)surface_native,
+ (EGLint)attribute,
+ (EGLint)value
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglBindTexImage ( EGLDisplay dpy, EGLSurface surface, EGLint buffer ) */
+static jboolean
+android_eglBindTexImage
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface, jint buffer) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface surface_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, surface);
+
+ _returnValue = eglBindTexImage(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)surface_native,
+ (EGLint)buffer
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglReleaseTexImage ( EGLDisplay dpy, EGLSurface surface, EGLint buffer ) */
+static jboolean
+android_eglReleaseTexImage
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface, jint buffer) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface surface_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, surface);
+
+ _returnValue = eglReleaseTexImage(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)surface_native,
+ (EGLint)buffer
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglSwapInterval ( EGLDisplay dpy, EGLint interval ) */
+static jboolean
+android_eglSwapInterval
+ (JNIEnv *_env, jobject _this, jobject dpy, jint interval) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+
+ _returnValue = eglSwapInterval(
+ (EGLDisplay)dpy_native,
+ (EGLint)interval
+ );
+ return _returnValue;
+}
+
+/* EGLContext eglCreateContext ( EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list ) */
+static jobject
+android_eglCreateContext
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject config, jobject share_context, jintArray attrib_list_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLContext _returnValue = (EGLContext) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLConfig config_native = (EGLConfig) fromEGLHandle(_env, eglconfigGetHandleID, config);
+ EGLContext share_context_native = (EGLContext) fromEGLHandle(_env, eglcontextGetHandleID, share_context);
+ bool attrib_list_sentinel = false;
+ EGLint *attrib_list_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *attrib_list = (EGLint *) 0;
+
+ if (!attrib_list_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(attrib_list_ref) - offset;
+ attrib_list_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(attrib_list_ref, (jboolean *)0);
+ attrib_list = attrib_list_base + offset;
+ attrib_list_sentinel = false;
+ for (int i = _remaining - 1; i >= 0; i--) {
+ if (attrib_list[i] == EGL_NONE){
+ attrib_list_sentinel = true;
+ break;
+ }
+ }
+ if (attrib_list_sentinel == false) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "attrib_list must contain EGL_NONE!";
+ goto exit;
+ }
+
+ _returnValue = eglCreateContext(
+ (EGLDisplay)dpy_native,
+ (EGLConfig)config_native,
+ (EGLContext)share_context_native,
+ (EGLint *)attrib_list
+ );
+
+exit:
+ if (attrib_list_base) {
+ _env->ReleasePrimitiveArrayCritical(attrib_list_ref, attrib_list_base,
+ JNI_ABORT);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return toEGLHandle(_env, eglcontextClass, eglcontextConstructor, _returnValue);
+}
+
+/* EGLBoolean eglDestroyContext ( EGLDisplay dpy, EGLContext ctx ) */
+static jboolean
+android_eglDestroyContext
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject ctx) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLContext ctx_native = (EGLContext) fromEGLHandle(_env, eglcontextGetHandleID, ctx);
+
+ _returnValue = eglDestroyContext(
+ (EGLDisplay)dpy_native,
+ (EGLContext)ctx_native
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglMakeCurrent ( EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx ) */
+static jboolean
+android_eglMakeCurrent
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject draw, jobject read, jobject ctx) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface draw_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, draw);
+ EGLSurface read_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, read);
+ EGLContext ctx_native = (EGLContext) fromEGLHandle(_env, eglcontextGetHandleID, ctx);
+
+ _returnValue = eglMakeCurrent(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)draw_native,
+ (EGLSurface)read_native,
+ (EGLContext)ctx_native
+ );
+ return _returnValue;
+}
+
+/* EGLContext eglGetCurrentContext ( void ) */
+static jobject
+android_eglGetCurrentContext
+ (JNIEnv *_env, jobject _this) {
+ EGLContext _returnValue = (EGLContext) 0;
+ _returnValue = eglGetCurrentContext();
+ return toEGLHandle(_env, eglcontextClass, eglcontextConstructor, _returnValue);
+}
+
+/* EGLSurface eglGetCurrentSurface ( EGLint readdraw ) */
+static jobject
+android_eglGetCurrentSurface
+ (JNIEnv *_env, jobject _this, jint readdraw) {
+ EGLSurface _returnValue = (EGLSurface) 0;
+ _returnValue = eglGetCurrentSurface(
+ (EGLint)readdraw
+ );
+ return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
+}
+
+/* EGLDisplay eglGetCurrentDisplay ( void ) */
+static jobject
+android_eglGetCurrentDisplay
+ (JNIEnv *_env, jobject _this) {
+ EGLDisplay _returnValue = (EGLDisplay) 0;
+ _returnValue = eglGetCurrentDisplay();
+ return toEGLHandle(_env, egldisplayClass, egldisplayConstructor, _returnValue);
+}
+
+/* EGLBoolean eglQueryContext ( EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value ) */
+static jboolean
+android_eglQueryContext
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject ctx, jint attribute, jintArray value_ref, jint offset) {
+ jint _exception = 0;
+ const char * _exceptionType;
+ const char * _exceptionMessage;
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLContext ctx_native = (EGLContext) fromEGLHandle(_env, eglcontextGetHandleID, ctx);
+ EGLint *value_base = (EGLint *) 0;
+ jint _remaining;
+ EGLint *value = (EGLint *) 0;
+
+ if (!value_ref) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "value == null";
+ goto exit;
+ }
+ if (offset < 0) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "offset < 0";
+ goto exit;
+ }
+ _remaining = _env->GetArrayLength(value_ref) - offset;
+ if (_remaining < 1) {
+ _exception = 1;
+ _exceptionType = "java/lang/IllegalArgumentException";
+ _exceptionMessage = "length - offset < 1 < needed";
+ goto exit;
+ }
+ value_base = (EGLint *)
+ _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
+ value = value_base + offset;
+
+ _returnValue = eglQueryContext(
+ (EGLDisplay)dpy_native,
+ (EGLContext)ctx_native,
+ (EGLint)attribute,
+ (EGLint *)value
+ );
+
+exit:
+ if (value_base) {
+ _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
+ _exception ? JNI_ABORT: 0);
+ }
+ if (_exception) {
+ jniThrowException(_env, _exceptionType, _exceptionMessage);
+ }
+ return _returnValue;
+}
+
+/* EGLBoolean eglWaitGL ( void ) */
+static jboolean
+android_eglWaitGL
+ (JNIEnv *_env, jobject _this) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ _returnValue = eglWaitGL();
+ return _returnValue;
+}
+
+/* EGLBoolean eglWaitNative ( EGLint engine ) */
+static jboolean
+android_eglWaitNative
+ (JNIEnv *_env, jobject _this, jint engine) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ _returnValue = eglWaitNative(
+ (EGLint)engine
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglSwapBuffers ( EGLDisplay dpy, EGLSurface surface ) */
+static jboolean
+android_eglSwapBuffers
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface) {
+ EGLBoolean _returnValue = (EGLBoolean) 0;
+ EGLDisplay dpy_native = (EGLDisplay) fromEGLHandle(_env, egldisplayGetHandleID, dpy);
+ EGLSurface surface_native = (EGLSurface) fromEGLHandle(_env, eglsurfaceGetHandleID, surface);
+
+ _returnValue = eglSwapBuffers(
+ (EGLDisplay)dpy_native,
+ (EGLSurface)surface_native
+ );
+ return _returnValue;
+}
+
+/* EGLBoolean eglCopyBuffers ( EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target ) */
+static jboolean
+android_eglCopyBuffers
+ (JNIEnv *_env, jobject _this, jobject dpy, jobject surface, jint target) {
+ jniThrowException(_env, "java/lang/UnsupportedOperationException",
+ "eglCopyBuffers");
+ return (EGLBoolean) 0;
+}
+
+static const char *classPathName = "android/opengl/EGL14";
+
+static JNINativeMethod methods[] = {
+{"_nativeClassInit", "()V", (void*)nativeClassInit },
+{"eglGetError", "()I", (void *) android_eglGetError },
+{"eglGetDisplay", "(I)Landroid/opengl/EGLDisplay;", (void *) android_eglGetDisplay },
+{"eglInitialize", "(Landroid/opengl/EGLDisplay;[II[II)Z", (void *) android_eglInitialize },
+{"eglTerminate", "(Landroid/opengl/EGLDisplay;)Z", (void *) android_eglTerminate },
+{"eglQueryString", "(Landroid/opengl/EGLDisplay;I)Ljava/lang/String;", (void *) android_eglQueryString__Landroind_opengl_EGLDisplay_2I },
+{"eglGetConfigs", "(Landroid/opengl/EGLDisplay;[Landroid/opengl/EGLConfig;II[II)Z", (void *) android_eglGetConfigs },
+{"eglChooseConfig", "(Landroid/opengl/EGLDisplay;[II[Landroid/opengl/EGLConfig;II[II)Z", (void *) android_eglChooseConfig },
+{"eglGetConfigAttrib", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;I[II)Z", (void *) android_eglGetConfigAttrib },
+{"_eglCreateWindowSurface", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreateWindowSurface },
+{"_eglCreateWindowSurfaceTexture", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreateWindowSurfaceTexture },
+{"eglCreatePbufferSurface", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferSurface },
+{"eglCreatePixmapSurface", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;I[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePixmapSurface },
+{"eglDestroySurface", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z", (void *) android_eglDestroySurface },
+{"eglQuerySurface", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I[II)Z", (void *) android_eglQuerySurface },
+{"eglBindAPI", "(I)Z", (void *) android_eglBindAPI },
+{"eglQueryAPI", "()I", (void *) android_eglQueryAPI },
+{"eglWaitClient", "()Z", (void *) android_eglWaitClient },
+{"eglReleaseThread", "()Z", (void *) android_eglReleaseThread },
+{"eglCreatePbufferFromClientBuffer", "(Landroid/opengl/EGLDisplay;IILandroid/opengl/EGLConfig;[II)Landroid/opengl/EGLSurface;", (void *) android_eglCreatePbufferFromClientBuffer },
+{"eglSurfaceAttrib", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;II)Z", (void *) android_eglSurfaceAttrib },
+{"eglBindTexImage", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglBindTexImage },
+{"eglReleaseTexImage", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglReleaseTexImage },
+{"eglSwapInterval", "(Landroid/opengl/EGLDisplay;I)Z", (void *) android_eglSwapInterval },
+{"eglCreateContext", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Landroid/opengl/EGLContext;[II)Landroid/opengl/EGLContext;", (void *) android_eglCreateContext },
+{"eglDestroyContext", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;)Z", (void *) android_eglDestroyContext },
+{"eglMakeCurrent", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z", (void *) android_eglMakeCurrent },
+{"eglGetCurrentContext", "()Landroid/opengl/EGLContext;", (void *) android_eglGetCurrentContext },
+{"eglGetCurrentSurface", "(I)Landroid/opengl/EGLSurface;", (void *) android_eglGetCurrentSurface },
+{"eglGetCurrentDisplay", "()Landroid/opengl/EGLDisplay;", (void *) android_eglGetCurrentDisplay },
+{"eglQueryContext", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;I[II)Z", (void *) android_eglQueryContext },
+{"eglWaitGL", "()Z", (void *) android_eglWaitGL },
+{"eglWaitNative", "(I)Z", (void *) android_eglWaitNative },
+{"eglSwapBuffers", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z", (void *) android_eglSwapBuffers },
+{"eglCopyBuffers", "(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;I)Z", (void *) android_eglCopyBuffers },
+};
+
+int register_android_opengl_jni_EGL14(JNIEnv *_env)
+{
+ int err;
+ err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
+ return err;
+}
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_down.png b/core/res/res/drawable-hdpi/ic_lockscreen_chevron_down.png
deleted file mode 100644
index bc718b5..0000000
--- a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_down.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_left.png b/core/res/res/drawable-hdpi/ic_lockscreen_chevron_left.png
deleted file mode 100644
index 0892c31..0000000
--- a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_left.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_right.png b/core/res/res/drawable-hdpi/ic_lockscreen_chevron_right.png
deleted file mode 100644
index 04cc0a2..0000000
--- a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_right.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_up.png b/core/res/res/drawable-hdpi/ic_lockscreen_chevron_up.png
deleted file mode 100644
index bb553b1..0000000
--- a/core/res/res/drawable-hdpi/ic_lockscreen_chevron_up.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_suggestions_add.png b/core/res/res/drawable-hdpi/ic_suggestions_add.png
deleted file mode 100644
index 919872c..0000000
--- a/core/res/res/drawable-hdpi/ic_suggestions_add.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_suggestions_delete.png b/core/res/res/drawable-hdpi/ic_suggestions_delete.png
deleted file mode 100644
index fa42db0..0000000
--- a/core/res/res/drawable-hdpi/ic_suggestions_delete.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_down.png b/core/res/res/drawable-mdpi/ic_lockscreen_chevron_down.png
deleted file mode 100644
index 308fe8a..0000000
--- a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_down.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_left.png b/core/res/res/drawable-mdpi/ic_lockscreen_chevron_left.png
deleted file mode 100644
index 9a25634..0000000
--- a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_left.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_right.png b/core/res/res/drawable-mdpi/ic_lockscreen_chevron_right.png
deleted file mode 100644
index 77240d0..0000000
--- a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_right.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_up.png b/core/res/res/drawable-mdpi/ic_lockscreen_chevron_up.png
deleted file mode 100644
index e0b0134..0000000
--- a/core/res/res/drawable-mdpi/ic_lockscreen_chevron_up.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_suggestions_add.png b/core/res/res/drawable-mdpi/ic_suggestions_add.png
deleted file mode 100644
index e98bdf8..0000000
--- a/core/res/res/drawable-mdpi/ic_suggestions_add.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/ic_suggestions_delete.png b/core/res/res/drawable-mdpi/ic_suggestions_delete.png
deleted file mode 100644
index 78e6ec1..0000000
--- a/core/res/res/drawable-mdpi/ic_suggestions_delete.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_down.png b/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_down.png
deleted file mode 100644
index b8e5733..0000000
--- a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_down.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_left.png b/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_left.png
deleted file mode 100644
index ce5da43..0000000
--- a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_left.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_right.png b/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_right.png
deleted file mode 100644
index c16f143..0000000
--- a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_right.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_up.png b/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_up.png
deleted file mode 100644
index 9bed39a..0000000
--- a/core/res/res/drawable-xhdpi/ic_lockscreen_chevron_up.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_suggestions_add.png b/core/res/res/drawable-xhdpi/ic_suggestions_add.png
deleted file mode 100644
index b1edef7..0000000
--- a/core/res/res/drawable-xhdpi/ic_suggestions_add.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/ic_suggestions_delete.png b/core/res/res/drawable-xhdpi/ic_suggestions_delete.png
deleted file mode 100644
index 6b1f447..0000000
--- a/core/res/res/drawable-xhdpi/ic_suggestions_delete.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index d7bc5c8..15733be 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -196,9 +196,9 @@
<string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"herlei uitgaande oproepe"</string>
<string name="permdesc_processOutgoingCalls" msgid="5331318931937402040">"Laat die program toe om uitgaande oproepe te verwerk en die nommer wat geskakel moet word te verander. Hierdie toestemming laat die program toe om uitgaande oproepe te monitor, herlei, of te voorkom."</string>
<string name="permlab_receiveSms" msgid="8673471768947895082">"ontvang teksboodskappe (SMS)"</string>
- <string name="permdesc_receiveSms" msgid="6424387754228766939">"Laat die program toe om SMS-boodskappe te ontvang en te verwerk. Dit beteken dat die program boodskappe wat na jou toestel gestuur is, kan monitor of skrap, sonder dat jy dit gesien het."</string>
+ <string name="permdesc_receiveSms" msgid="6424387754228766939">"Laat die program toe om SMS-boodskappe te ontvang en te verwerk. Dit beteken dat die program boodskappe wat na jou toestel gestuur is, kan monitor of uitvee, sonder dat jy dit gesien het."</string>
<string name="permlab_receiveMms" msgid="1821317344668257098">"ontvang teksboodskappe (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="533019437263212260">"Laat die program toe om MMS-boodskappe te ontvang en te verwerk. Dit beteken dat die program boodskappe wat na jou toestel gestuur is, kan monitor of skrap, sonder dat jy dit gesien het."</string>
+ <string name="permdesc_receiveMms" msgid="533019437263212260">"Laat die program toe om MMS-boodskappe te ontvang en te verwerk. Dit beteken dat die program boodskappe wat na jou toestel gestuur is kan monitor of uitvee, sonder dat jy dit gesien het."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ontvang nooduitsendings"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Laat die program toe om nooduitsending-boodskappe te ontvang en te verwerk. Hierdie toestemming is net beskikbaar vir stelselprogramme."</string>
<string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"lees seluitsending-boodskappe"</string>
@@ -208,15 +208,15 @@
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"stuur sms-boodskappe met geen bestiging"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="402569800862935907">"Laat die program toe om SMS-boodskappe te stuur. Dit kan tot onverwagse heffings lei. Kwaadwillige programme kan jou geld kos deur boodskappe sonder jou bevestiging te stuur."</string>
<string name="permlab_readSms" msgid="8745086572213270480">"lees jou teksboodskappe (SMS of MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Laat die program toe om SMS-boodskappe wat op jou tablet of SIM-kaart gestoor is, te lees. Dit laat die program toe om al die SMS-boodskappe, ongeag van die inhoud of vertroulikheid daarvan, te lees."</string>
- <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Laat die program toe om SMS-boodskappe wat op jou foon of SIM-kaart gestoor is, te lees. Dit laat die program toe om al die SMS-boodskappe, ongeag van die inhoud of vertroulikheid daarvan, te lees."</string>
+ <string name="permdesc_readSms" product="tablet" msgid="2467981548684735522">"Laat die program toe om SMS-boodskappe wat op jou tablet of SIM-kaart gestoor is, te lees. Dit laat die program toe om alle SMS-boodskappe te lees, ongeag van die inhoud of vertroulikheid daarvan."</string>
+ <string name="permdesc_readSms" product="default" msgid="3695967533457240550">"Laat die program toe om SMS-boodskappe wat op jou foon of SIM-kaart gestoor is, te lees. Dit laat die program toe om alle SMS-boodskappe te lees, ongeag van die inhoud of vertroulikheid daarvan."</string>
<string name="permlab_writeSms" msgid="3216950472636214774">"redigeer jou teksboodskappe (SMS of MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Laat die program toe om SMS-boodskappe te lees wat op jou tablet of SIM-kaart gestoor is. Kwaadwillige programme kan dalk jou boodskappe uitvee."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Laat die program toe om SMS-boodskappe te skryf wat op jou foon of SIM-kaart gestoor is. Kwaadwillige programme kan dalk jou boodskappe uitvee."</string>
<string name="permlab_receiveWapPush" msgid="5991398711936590410">"ontvang teksboodskappe (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Laat die program toe om WAP-boodskappe te ontvang en te verwerk. Hierdie toestemming sluit die vermoë in om boodskappe wat na jou toestel gestuur is, te monitor of skrap, sonder dat jy dit gesien het."</string>
+ <string name="permdesc_receiveWapPush" msgid="748232190220583385">"Laat die program toe om WAP-boodskappe te ontvang en te verwerk. Hierdie toestemming sluit ook in dat boodskappe wat na jou toestel gestuur is, gemonitor of uitgevee kan word, sonder dat jy dit gesien het."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"haal lopende programme op"</string>
- <string name="permdesc_getTasks" msgid="7454215995847658102">"Laat die program toe om inligting oor die huidige en onlangse lopende take op te haal. Dit kan moontlik die program toelaat om inligting oor ander programme wat op die toestel gebruik word, te ontdek."</string>
+ <string name="permdesc_getTasks" msgid="7454215995847658102">"Laat die program toe om inligting oor die huidig- en onlangslopende take op te haal. Dit kan moontlik die program toelaat om inligting oor watter programme op die toestel gebruik word, te ontdek."</string>
<string name="permlab_getDetailedTasks" msgid="6229468674753529501">"haal besonderhede van lopende programme op"</string>
<string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Laat die program toe om inligting op te haal oor huidige en onlangse lopende take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"herrangskik lopende programme"</string>
@@ -301,8 +301,8 @@
<string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"stuur Linux-seine na programme"</string>
<string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"Laat die program toe om te versoek dat die voorsiende sein na alle aanhoudende prosesse gestuur word."</string>
<string name="permlab_persistentActivity" msgid="8841113627955563938">"laat program altyd loop"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Laat die program toe om aanhoudend dele van ditself in die geheue te maak. Dit kan geheue wat aan ander programme beskikbaar gemaak is beperk en die tablet stadiger maak."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Laat die program toe om aanhoudend dele van ditself in die geheue te maak. Dit kan geheue wat aan ander programme beskikbaar gemaak is beperk en die foon stadiger maak."</string>
+ <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Laat die program toe om dele van ditself deurdringend in die geheue te hou. Dit kan geheue wat aan ander programme beskikbaar is, beperk, en die tablet stadiger maak."</string>
+ <string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Laat die program toe om dele van ditself deurdringend in die geheue te hou. Dit kan geheue wat aan ander programme beskikbaar is, beperk, en die foon stadiger maak."</string>
<string name="permlab_deletePackages" msgid="184385129537705938">"vee programme uit"</string>
<string name="permdesc_deletePackages" msgid="7411480275167205081">"Laat die program toe om Android-pakkette uit te vee. Kwaadwillige programme kan dit dalk gebruik om belangrike programme uit te vee."</string>
<string name="permlab_clearAppUserData" msgid="274109191845842756">"vee ander programme se data uit"</string>
@@ -342,13 +342,13 @@
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Laat die program toe om homself te begin so gou as moontlik nadat die stelsel laai. Dit maak dat dit langer neem vir die tablet om te begin, en dit laat die foon toe om die tablet stadiger te maak omdat dit altyd loop."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Laat die program toe om homself te begin so gou as moontlik nadat die stelsel laai. Dit maak dat dit langer neem vir die foon om te begin, en dit laat die foon toe om die foon stadiger te maak omdat dit altyd loop."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"Stuur klewerige uitsending"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Laat die program toe om taai uitsendings te stuur, wat oorbly nadat die uitsending klaar is. Oormatige gebruik kan die tablet stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Laat die program toe om taai uitsendings te stuur, wat oorbly nadat die uitsending klaar is. Oormatige gebruik kan die foon stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string>
+ <string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Laat die program toe om taai uitsendings te stuur, wat agterbly nadat die uitsending klaar is. Oormatige gebruik kan die tablet stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string>
+ <string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Laat die program toe om taai uitsendings te stuur, wat agterbly nadat die uitsending klaar is. Oormatige gebruik kan die foon stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string>
<string name="permlab_readContacts" msgid="8348481131899886131">"lees jou kontakte"</string>
<string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Laat die program toe om inligting oor jou kontakte wat op jou tablet gestoor is, te lees, insluitend die gereeldheid van oproepe wat jy gemaak het, e-posse wat jy gestuur het, of ander maniere waarop jy met spesifieke individue gekommunikeer het. Hierdie toestemming laat programme toe om jou kontakdata te stoor, en kwaadwillige programme kan moontlik kontakdata sonder jou kennis deel."</string>
<string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Laat die program toe om inligting oor jou kontakte wat op jou foon gestoor is, te lees, insluitend die gereeldheid van oproepe wat jy gemaak het, e-posse wat jy gestuur het, of ander maniere waarop jy met spesifieke individue gekommunikeer het. Hierdie toestemming laat programme toe om jou kontakdata te stoor, en kwaadwillige programme kan moontlik kontakdata sonder jou kennis deel."</string>
<string name="permlab_writeContacts" msgid="5107492086416793544">"verander jou kontakte"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Laat die program toe om data oor jou kontakte wat op jou tablet gestoor is te verander, insluitend die gereeldheid waarop jy oproepe gemaak het, gee-pos het, of op ander maniere met spesifieke kontakte gekommunikeer het. Hierdie toestemming laat programme toe om kontakdata te skrap."</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Laat die program toe om data oor jou kontakte wat op jou tablet gestoor is te verander, insluitend die gereeldheid van oproepe wat jy gemaak het, e-posse wat jy gestuur het, of ander maniere waarop jy met spesifieke individue gekommunikeer het. Hierdie toestemming laat programme toe om kontakdata uit te vee."</string>
<string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Laat die program toe om data oor jou kontakte wat op jou foon gestoor is te verander, insluitend die gereeldheid waarop jy oproepe gemaak het, gee-pos het, of op ander maniere met spesifieke kontakte gekommunikeer het. Hierdie toestemming laat programme toe om kontakdata te skrap."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lees oproeprekord"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3700645184870760285">"Laat die program toe om jou tablet se oproeprekord, insluitend data oor inkomende en uitgaande oproepe, te lees. Hierdie toestemming laat die program toe om jou oproeprekorddata te stoor, en kwaadwillige programme kan moontlik oproeprekorddata sonder jou kennis deel."</string>
@@ -361,9 +361,9 @@
<string name="permlab_writeProfile" msgid="907793628777397643">"verander jou eie kontakkaart"</string>
<string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Laat die program toe om persoonlike profielinligting, soos jou naam en kontakinligting, wat op jou toestel gestoor is, te verander of daarby te voeg. Dit beteken dat die program jou kan identifiseer en moontlik jou profielinligting na ander mense kan stuur."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lees jou sosiale stroom"</string>
- <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Laat die program toe om toegang tot sosiale opdaterings van jou en jou vriende te verkry en dit te sinkroniseer. Wees versigtig wanneer jy inligting deel -- dit laat die program toe om kommunikasie tussen jou en jou vriende op sosiale netwerke, te lees, ongeag vertroulikheid. Let wel: hierdie toestemming mag nie op alle sosiale netwerke afgedwing word nie."</string>
+ <string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Laat die program toe om toegang tot sosiale opdaterings van jou en jou vriende te verkry en dit te sinkroniseer. Wees versigtig wanneer jy inligting deel -- dit laat die program toe om kommunikasie tussen jou en jou vriende op sosiale netwerke te lees, ongeag vertroulikheid. Let wel: hierdie toestemming mag dalk nie op alle sosiale netwerke afgedwing word nie."</string>
<string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"skryf aan jou sosiale stroom"</string>
- <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Laat die program toe om sosiale opdaterings van vriende te vertoon. Wees versigtig wanneer jy inligting deel -- dit laat die program toe om boodskappe te vervaardig wat lyk of dit van \'n vriend af kom. Let wel: hierdie toestemming mag nie op alle sosiale netwerke afgedwing word nie."</string>
+ <string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Laat die program toe om sosiale opdaterings van vriende te vertoon. Wees versigtig wanneer jy inligting deel -- dit laat die program toe om boodskappe te vervaardig wat lyk of dit van \'n vriend af kom. Let wel: hierdie toestemming mag dalk nie op alle sosiale netwerke afgedwing word nie."</string>
<string name="permlab_readCalendar" msgid="5972727560257612398">"lees kalenderafsprake plus vertroulike inligting"</string>
<string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Laat die program toe om alle kalendergebeure wat op jou tablet gestoor is, insluitend dié van vriende en medewerkers, te lees. Dit kan moontlik die program toelaat om jou kalenderdata te deel of te stoor, ongeag van vertroulikheid of sensitiwiteit."</string>
<string name="permdesc_readCalendar" product="default" msgid="7434548682470851583">"Laat die program toe om alle kalendergebeure wat op jou foon gestoor is, insluitend dié van vriende en medewerkers, te lees. Dit kan moontlik die program toelaat om jou kalenderdata te deel of te stoor, ongeag van vertroulikheid of sensitiwiteit."</string>
@@ -371,14 +371,14 @@
<string name="permdesc_writeCalendar" product="tablet" msgid="6679035520113668528">"Laat die program toe om gebeure wat op jou tablet aangepas kan word, by te voeg, te verwyder of te verander, insluitend dié van vriende en medewerkers. Dit kan moontlik die program toelaat om boodskappe wat lyk of dit van kalendereienaars af kom, te stuur, of om gebeure sonder die eienaar se kennis aan te pas."</string>
<string name="permdesc_writeCalendar" product="default" msgid="2324469496327249376">"Laat die program toe om gebeure wat op jou foon aangepas kan word, by te voeg, te verwyder of te verander, insluitend dié van vriende en medewerkers. Dit kan moontlik die program toelaat om boodskappe wat lyk of dit van kalendereienaars af kom, te stuur, of om gebeure sonder die eienaar se kennis aan te pas."</string>
<string name="permlab_accessMockLocation" msgid="8688334974036823330">"kamma liggingbronne vir toetsing"</string>
- <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"Skep skynliggingsbronne vir die toets of installering van \'n nuwe liggingsverskaffer. Die program kan dan die ligging en/of status wat aangegee is met ander liggingsbronne soos GPS of liggingsverskaffers, oorheers."</string>
+ <string name="permdesc_accessMockLocation" msgid="5808711039482051824">"Skep skynliggingsbronne vir toetsing of installeer \'n nuwe liggingsverskaffer. Die program kan dan die ligging en/of status wat deurgegee is deur ander liggingsbronne, soos GPS of liggingsverskaffers, oorheers."</string>
<string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"Kry toegang tot ekstra liggingverskaffer-bevele"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Laat die program toe om ekstra liggingverskaffer-bevele te gebruik. Programme kan dit moontlik gebruik om met die werking van die GPS of ander liggingsbronne in te meng."</string>
+ <string name="permdesc_accessLocationExtraCommands" msgid="5945166642335800763">"Laat die program toe om ekstra liggingverskaffer-bevele te gebruik. Die programme kan dit moontlik gebruik om met die werking van die GPS of ander liggingsbronne in te meng."</string>
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"toestemming om \'n liggingverskaffer te installeer"</string>
- <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Skep skynliggingsbronne vir die toets of installering van \'n nuwe liggingsverskaffer. Die program kan dan die ligging en/of status wat aangegee is met ander liggingsbronne soos GPS of liggingsverskaffers, oorheers."</string>
+ <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"Skep skynliggingsbronne vir toetsing of installeer \'n nuwe liggingsverskaffer. Die program kan dan die ligging en/of status wat deurgegee is deur ander liggingsbronne, soos GPS of liggingsverskaffers, oorheers."</string>
<string name="permlab_accessFineLocation" msgid="5885550969882561436">"presiese (GPS) ligging"</string>
- <string name="permdesc_accessFineLocation" product="tablet" msgid="8960597421469894181">"Vekry toegang tot akkurate liggingsbronne soos die globale posisioneringstelsel, met jou tablet. Wanneer liggingsdienste beskikbaar en aangeskakel is, laat hierdie toestemming die program toe om jou presiese ligging te bepaal."</string>
- <string name="permdesc_accessFineLocation" product="default" msgid="239268765496141815">"Vekry toegang tot akkurate liggingsbronne soos die globale posisioneringstelsel, met jou foon. Wanneer liggingsdienste beskikbaar en aangeskakel is, laat hierdie toestemming die program toe om jou presiese ligging te bepaal."</string>
+ <string name="permdesc_accessFineLocation" product="tablet" msgid="8960597421469894181">"Vekry toegang tot akkurate liggingsbronne soos die globale posisioneringstelsel op jou tablet. Wanneer liggingsdienste beskikbaar en aangeskakel is, laat hierdie toestemming die program toe om jou presiese ligging te bepaal."</string>
+ <string name="permdesc_accessFineLocation" product="default" msgid="239268765496141815">"Vekry toegang tot akkurate liggingsbronne soos die globale posisioneringstelsel op jou foon. Wanneer liggingsdienste beskikbaar en aangeskakel is, laat hierdie toestemming die program toe om jou presiese ligging te bepaal."</string>
<string name="permlab_accessCoarseLocation" msgid="7422827215441638984">"benaderde (netwerkgebaseerde) ligging"</string>
<string name="permdesc_accessCoarseLocation" msgid="5383798877137640762">"Verkry toegang tot \'n benaderde ligging vanaf die liggingsverskaffers wat netwerkbronne soos seltorings en Wi-Fi gebruik. Wanneer hierdie liggingsdienste beskikbaar en aangeskakel is, laat hierdie toestemming die program toe om jou benaderde ligging te bepaal."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"kry toegang tot SurfaceFlinger"</string>
@@ -441,7 +441,7 @@
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"verander foonstatus"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Laat die program toe om die foonkenmerke van die toestel te beheer. \'n Program met hierdie toestemming kan tussen netwerke wissel, die foonradio aan en af skakel, en dies meer, sonder om jou ooit te laat weet."</string>
<string name="permlab_readPhoneState" msgid="9178228524507610486">"lees foonstatus en identiteit"</string>
- <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Laat die program toe om toegang tot die foonfunksies van die toestel te verkry. Hierdie toestemming laat die program toe om die foonnommer en toestel-IDs, of die oproep aan die gang is, en die afgeleë nommer wat deur \'n oproep verbind word, te bepaal."</string>
+ <string name="permdesc_readPhoneState" msgid="1639212771826125528">"Laat die program toe om toegang tot die foonfunksies van die toestel te verkry. Hierdie toestemming laat die program toe om te bepaal wat die foonnommer en toestel-IDs is, of die oproep aan die gang is, en die afgeleë nommer wat deur \'n oproep verbind word."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"verhoed dat tablet slaap"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"verhoed foon om te slaap"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Laat die program toe om die tablet te keer om te slaap."</string>
@@ -468,8 +468,8 @@
<string name="permlab_accountManagerService" msgid="4829262349691386986">"tree op as die AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Laat die program toe om oproepe na AccountAuthenticators te maak."</string>
<string name="permlab_getAccounts" msgid="1086795467760122114">"soek rekeninge op die toestel"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Laat die program toe om die lys van rekeninge wat aan die tablet bekend is, te kry. Dit kan moontlik enige rekeninge wat deur programme wat jy geïnstalleer het, geskep is, insluit."</string>
- <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Laat die program toe om die lys van rekeninge wat aan die foon bekend is, te kry. Dit kan moontlik enige rekeninge wat deur programme wat jy geïnstalleer het, geskep is, insluit."</string>
+ <string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Laat die program toe om die lys van rekeninge wat aan die tablet bekend is, te kry. Dit kan moontlik enige rekeninge wat geskep is deur programme wat jy geïnstalleer het, insluit."</string>
+ <string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Laat die program toe om die lys van rekeninge wat aan die foon bekend is, te kry. Dit kan moontlik enige rekeninge wat geskep is deur programme wat jy geïnstalleer het, insluit."</string>
<string name="permlab_authenticateAccounts" msgid="5265908481172736933">"skep rekeninge en stel wagwoorde"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Laat die program toe om die rekeningmagtiger-vermoëns van die AccountManager te gebruik, insluitend om rekeninge te skep en hulle wagwoorde te kry en in te stel."</string>
<string name="permlab_manageAccounts" msgid="4983126304757177305">"voeg by of verwyder rekeninge"</string>
@@ -479,7 +479,7 @@
<string name="permlab_accessNetworkState" msgid="4951027964348974773">"bekyk netwerkverbindings"</string>
<string name="permdesc_accessNetworkState" msgid="8318964424675960975">"Laat die program toe om inligting oor netwerkverbindings, soos watter netwerke bestaan en gekoppel is, te sien."</string>
<string name="permlab_createNetworkSockets" msgid="8018758136404323658">"volle netwerktoegang"</string>
- <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Laat die program toe om netwerksokke te skep en verpersoonlike netwerkprotokolle te gebruik. Die blaaier en ander programme stuur data na die internet, so hierdie toestemming word nie vereis om data na die internet te stuur nie."</string>
+ <string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Laat die program toe om netwerksokke te skep en gepasmaakte netwerkprotokolle te gebruik. Die blaaier en ander programme verskaf reeds die middele waardeur data na die internet gestuur kan word, so hierdie toestemming word nie vereis om data na die internet te stuur nie."</string>
<string name="permlab_writeApnSettings" msgid="505660159675751896">"verander/onderskep netwerkinstellings en die verkeer"</string>
<string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Laat die program toe om netwerkinstellings te verander en te onderskep en om alle netwerkverkeer te inspekteer, byvoorbeeld om die instaanbediener en poort van enige APN te verander. Kwaadwillige programme kan netwerkpakkies monitor, herlei, of verander sonder jou medewete."</string>
<string name="permlab_changeNetworkState" msgid="958884291454327309">"verander netwerkverbinding"</string>
@@ -493,8 +493,8 @@
<string name="permlab_changeWifiState" msgid="6550641188749128035">"koppel en ontkoppel van Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7137950297386127533">"Laat die program toe om te koppel aan en te ontkoppel van Wi-Fi-toegangspunte en om veranderings aan Wi-Fi-netwerke se toestelopstellings te maak."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"laat Wi-Fi-multisendontvangs toe"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Laat die program toe om pakkies wat na alle toestelle op \'n Wi-Fi netwerk gestuur is, met behulp van multisaai-adresse en nie net jou tablet nie, te ontvang. Dit gebruik meer krag as die nie-multisaaimodus."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Laat die program toe om pakkies wat na alle toestelle op \'n Wi-Fi netwerk gestuur is, met behulp van multisaai-adresse en nie net jou foon nie, te ontvang. Dit gebruik meer krag as die nie-multisaaimodus."</string>
+ <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Laat die program toe om pakkies te ontvang wat met behulp van multisaai-adresse na alle toestelle op \'n Wi-Fi-netwerk gestuur is, nie net jou tablet nie. Dit gebruik meer krag as die nie-multisaaimodus."</string>
+ <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Laat die program toe om pakkies te ontvang wat met behulp van multisaai-adresse na alle toestelle op \'n Wi-Fi-netwerk gestuur is, nie net jou foon nie. Dit gebruik meer krag as die nie-multisaaimodus."</string>
<string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"gaan in by Bluetooth-instellings"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Laat die program toe om die plaaslike Bluetooth-tablet op te stel, en om met afstandbeheer toestelle saam te bind."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Laat die program toe om die plaaslike Bluetooth-foon op te stel en te ontdek en met afgeleë toestelle saam te bind."</string>
@@ -504,7 +504,7 @@
<string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"Laat die program toe om die tablet aan WiMAX-netwerke te koppel en daarvan te ontkoppel."</string>
<string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"Laat die program toe om die foon aan WiMAX-netwerke te koppel en daarvan te ontkoppel."</string>
<string name="permlab_bluetooth" msgid="6127769336339276828">"bind saam met Bluetooth-toestelle"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Laat die program toe om die opstelling van die Bluetooth-tablet te sien, en om verbindings met saamgebinde toestelle te maak en te aanvaar."</string>
+ <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Laat die program toe om die opstelling van Bluetooth op die tablet te sien, en om verbindings met saamgebinde toestelle te maak en te aanvaar."</string>
<string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Laat die program toe om die opstelling van die Bluetooth op die foon te sien, en om verbindings met saamgebinde toestelle te maak en te aanvaar."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"beheer kortveldkommunikasie"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Laat die program toe om met kortveldkommunikasie- (NFC) merkers, kaarte en lesers te kommunikeer."</string>
@@ -513,7 +513,7 @@
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"lees sinkroniseer-instellings"</string>
<string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Laat die program toe om die sinkroniseringinstellings van \'n rekening te lees. Byvoorbeeld, dit kan bepaal of die People-program met \'n rekening gesinkroniseer is."</string>
<string name="permlab_writeSyncSettings" msgid="5408694875793945314">"wissel tussen sinkronisasie aan en af"</string>
- <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Laat \'n program toe om die sinkroniseringinstellings van \'n rekening te verander. Byvoorbeeld, dit kan gebruik word om sinkronisasie van die People-program met \'n ander rekening, te aktiveer."</string>
+ <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Laat \'n program toe om die sinkroniseringinstellings van \'n rekening te verander. Byvoorbeeld, dit kan gebruik word om sinkronisasie van die People-program met \'n ander rekening te aktiveer."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"lees sinkroniseerstatistiek"</string>
<string name="permdesc_readSyncStats" msgid="1510143761757606156">"Laat \'n program toe om die sinkroniseringstatistieke van \'n rekening te lees, insluitend die geskiedenis van sinkroniseringgebeure en hoeveel data gesinkroniseer is."</string>
<string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"lees ingetekende nuus"</string>
@@ -784,10 +784,10 @@
<string name="autofill_area" msgid="3547409050889952423">"Area"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string>
<string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lees jou web-boekmerke en geskiedenis"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Laat die program toe om die geskiedenis van alle URL\'e wat die leser besoek het, en al die blaaier se boekmerke, te lees. Let wel: hierdie toestemming mag nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
+ <string name="permdesc_readHistoryBookmarks" msgid="8462378226600439658">"Laat die program toe om die geskiedenis van alle URL\'e wat die leser besoek het, en al die blaaier se boekmerke, te lees. Let wel: hierdie toestemming mag dalk nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
<string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skryf webboekmerke en -geskiedenis"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou tablet gestoor is, te verander. Dit kan moontlik die program toelaat om blaaierdata uit te vee of te verander. Let wel: hierdie toestemming mag nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou foon gestoor is, te verander. Dit kan moontlik die program toelaat om blaaierdata uit te vee of te verander. Let wel: hierdie toestemming mag nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
+ <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="6825527469145760922">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou tablet gestoor is, te verander. Dit kan moontlik die program toelaat om blaaierdata uit te vee of te verander. Let wel: hierdie toestemming mag dalk nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
+ <string name="permdesc_writeHistoryBookmarks" product="default" msgid="8497389531014185509">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou foon gestoor is, te verander. Dit kan moontlik die program toelaat om blaaierdata uit te vee of te verander. Let wel: hierdie toestemming mag dalk nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
<string name="permlab_setAlarm" msgid="1379294556362091814">"stel \'n wekker"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Laat die program toe om \'n alarm in \'n geïnstalleerde wekkerprogram te stel. Sommige wekkerprogramme werk dalk nie met hierdie funksie nie."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"voeg stemboodskap by"</string>
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopieer URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Kies teks"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Tekskeuse"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"voeg by woordeboek"</string>
- <string name="deleteText" msgid="7070985395199629156">"vee uit"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Voeg by woordeboek"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Vee uit"</string>
<string name="inputMethod" msgid="1653630062304567879">"Invoermetode"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Teksaksies"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Bergingspasie word min"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index c61833c..2212354 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"የURL ቅጂ"</string>
<string name="selectTextMode" msgid="1018691815143165326">"ፅሁፍ ምረጥ"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"የፅሁፍ ምርጫ"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"ወደ መዝገበ ቃላት አክል"</string>
- <string name="deleteText" msgid="7070985395199629156">"ሰርዝ"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"ወደ መዝገበ ቃላት አክል"</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>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 712ddc58..02eb84b 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"نسخ عنوان URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"تحديد نص"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"تحديد النص"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"إضافة إلى القاموس"</string>
- <string name="deleteText" msgid="7070985395199629156">"حذف"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"إضافة إلى القاموس"</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>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index a852e3e..3b547a0 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Скапіяваць URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Выбраць тэкст"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Вылучэнне тэксту"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"дадаць у слоўнік"</string>
- <string name="deleteText" msgid="7070985395199629156">"выдаліць"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Дадаць у слоўнік"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Выдалiць"</string>
<string name="inputMethod" msgid="1653630062304567879">"Метад уводу"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Дзеянні з тэкстам"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Месца для захавання на зыходзе"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 108fda5..1a44113 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Копиране на URL адреса"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Избор на текст"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Избиране на текст"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"добавяне към речника"</string>
- <string name="deleteText" msgid="7070985395199629156">"изтриване"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Добавяне в речника"</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>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Да се приеме ли обаждането?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Винаги"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Само веднъж"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Таблет"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Телефон"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Слушалки"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Докинг станц.: Високогов."</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI аудио"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 0da9b84..a5dc6d1 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copia l\'URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Selecciona el text"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selecció de text"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"afegeix al diccionari"</string>
- <string name="deleteText" msgid="7070985395199629156">"suprimeix"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Afegeix al diccionari"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Suprimeix"</string>
<string name="inputMethod" msgid="1653630062304567879">"Mètode d\'entrada"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Accions de text"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"S\'està acabant l\'espai d\'emmagatzematge"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Vols acceptar la trucada?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Sempre"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Només una"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tauleta"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telèfon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Auriculars"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Altaveus del connector"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Àudio HDMI"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index df08057..7b044b5 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopírovat adresu URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Vybrat text"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Výběr textu"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"přidat do slovníku"</string>
- <string name="deleteText" msgid="7070985395199629156">"smazat"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Přidat do slovníku"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Smazat"</string>
<string name="inputMethod" msgid="1653630062304567879">"Metoda zadávání dat"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Operace s textem"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"V úložišti je málo místa"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 3413c9e..e9b1c2c 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopier webadresse"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Markér tekst"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Tekstmarkering"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"føj til ordbog"</string>
- <string name="deleteText" msgid="7070985395199629156">"slet"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Føj til ordbog"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Slet"</string>
<string name="inputMethod" msgid="1653630062304567879">"Inputmetode"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Teksthandlinger"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Der er snart ikke mere lagerplads"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Vil du besvare opkaldet?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Altid"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Kun én gang"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablet"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Hovedtelefoner"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Dockstationens højttalere"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI-lyd"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 274988b..d871ab1 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URL kopieren"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Text auswählen"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Textauswahl"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"Zum Wörterbuch hinzufügen"</string>
- <string name="deleteText" msgid="7070985395199629156">"Löschen"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Zum Wörterbuch hinzufügen"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Löschen"</string>
<string name="inputMethod" msgid="1653630062304567879">"Eingabemethode"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Textaktionen"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Der Speicherplatz wird knapp"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index fe7558f..3016481 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Αντιγραφή διεύθυνσης URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Επιλογή κειμένου"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Επιλογή κειμένου"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"προσθήκη στο λεξικό"</string>
- <string name="deleteText" msgid="7070985395199629156">"διαγραφή"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Προσθήκη στο λεξικό"</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>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 268267f..cda0daa 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copy URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Select text"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Text selection"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"add to dictionary"</string>
- <string name="deleteText" msgid="7070985395199629156">"delete"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Add to dictionary"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Delete"</string>
<string name="inputMethod" msgid="1653630062304567879">"Input method"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Text actions"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Storage space running out"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 142256a..5b8a03b 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copiar URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Seleccionar texto"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selección de texto"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"Agregar al diccionario"</string>
- <string name="deleteText" msgid="7070985395199629156">"eliminar"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Agregar al diccionario"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Eliminar"</string>
<string name="inputMethod" msgid="1653630062304567879">"Método de entrada"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Acciones de texto"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Queda poco espacio de almacenamiento"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"¿Aceptar la llamada?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Siempre"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Solo una vez"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tableta"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Dispositivo"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Auriculares"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Altavoces del conector"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Audio HDMI"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index fda37cf6..c335fa3 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copiar URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Seleccionar texto"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selección de texto"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"añadir al diccionario"</string>
- <string name="deleteText" msgid="7070985395199629156">"eliminar"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Añadir al diccionario"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Eliminar"</string>
<string name="inputMethod" msgid="1653630062304567879">"Método de entrada de texto"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Acciones de texto"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Queda poco espacio"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 3795268..d49594b 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopeeri URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Valige tekst"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Teksti valimine"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"lisa sõnastikku"</string>
- <string name="deleteText" msgid="7070985395199629156">"kustuta"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Lisa sõnastikku"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Kustuta"</string>
<string name="inputMethod" msgid="1653630062304567879">"Sisestusmeetod"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Tekstitoimingud"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Talletusruum saab täis"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 92a569f..0c7d4ca 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"کپی URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"انتخاب متن"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"انتخاب متن"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"افزودن به فرهنگ لغت"</string>
- <string name="deleteText" msgid="7070985395199629156">"حذف"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"افزودن به فرهنگلغت"</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>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 33652a745..cabed61 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopioi URL-osoite"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Valitse tekstiä"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Tekstin valinta"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"lisää sanakirjaan"</string>
- <string name="deleteText" msgid="7070985395199629156">"poista"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Lisää sanakirjaan"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Poista"</string>
<string name="inputMethod" msgid="1653630062304567879">"Syöttötapa"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Tekstitoiminnot"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Tallennustila loppumassa"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Vastataanko puheluun?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Aina"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Vain kerran"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablet-laite"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Puhelin"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Kuulokkeet"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Telineen kaiuttimet"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI-ääni"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 9e19bf4..27032e8 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copier l\'URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Sélectionner texte"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Sélection de texte"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"ajouter au dictionnaire"</string>
- <string name="deleteText" msgid="7070985395199629156">"supprimer"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Ajouter au dictionnaire"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Supprimer"</string>
<string name="inputMethod" msgid="1653630062304567879">"Mode de saisie"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Actions sur le texte"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Espace de stockage bientôt saturé"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index ce63e79..d145791 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URL की प्रतिलिपि बनाएं"</string>
<string name="selectTextMode" msgid="1018691815143165326">"पाठ का चयन करें"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"पाठ चयन"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"डिक्शनरी में जोड़ें"</string>
- <string name="deleteText" msgid="7070985395199629156">"हटाएं"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"शब्दकोश में जोड़ें"</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>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index d53d5df2..be187ac 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopiraj URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Odabir teksta"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Odabir teksta"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"dodaj u rječnik"</string>
- <string name="deleteText" msgid="7070985395199629156">"izbriši"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Dodaj u rječnik"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Izbriši"</string>
<string name="inputMethod" msgid="1653630062304567879">"Način unosa"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Radnje s tekstom"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Ponestaje prostora za pohranu"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 424d8d9..97ee94a 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URL másolása"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Szöveg kijelölése"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Szöveg kijelölése"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"hozzáadás a szótárhoz"</string>
- <string name="deleteText" msgid="7070985395199629156">"törlés"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Hozzáadás a szótárhoz"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Törlés"</string>
<string name="inputMethod" msgid="1653630062304567879">"Beviteli mód"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Műveletek szöveggel"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Kevés a szabad terület"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 90e76a5..dc01b63 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -324,7 +324,7 @@
<string name="permlab_anyCodecForPlayback" msgid="715805555823881818">"menggunakan media pengawasandi apa pun untuk pemutaran"</string>
<string name="permdesc_anyCodecForPlayback" msgid="8283912488433189010">"Mengizinkan apl menggunakan pengawasandi media apa pun yang terpasang guna mengawasandikan media untuk diputar."</string>
<string name="permlab_diagnostic" msgid="8076743953908000342">"baca/tulis ke sumber daya yang dimiliki oleh diag"</string>
- <string name="permdesc_diagnostic" msgid="6608295692002452283">"Mengizinkan apl membaca dan menulis ke sumber daya apa pun yang dimiliki oleh grup diag; misalnya, file dalam /dev. Izin ini berpotensi memengaruhi kestabilan dan keamanan sistem. Sebaiknya ini HANYA digunakan untuk diagnostik khusus perangkat keras oleh pabrikan atau operator."</string>
+ <string name="permdesc_diagnostic" msgid="6608295692002452283">"Mengizinkan apl membaca dan menulis ke sumber daya apa pun yang dimiliki oleh grup diag; misalnya, file dalam /dev. Izin ini berpotensi memengaruhi kestabilan dan keamanan sistem. Sebaiknya ini HANYA digunakan untuk diagnosis khusus perangkat keras oleh pabrikan atau operator."</string>
<string name="permlab_changeComponentState" msgid="6335576775711095931">"mengaktifkan atau menonaktifkan komponen apl"</string>
<string name="permdesc_changeComponentState" product="tablet" msgid="8887435740982237294">"Mengizinkan apl mengubah apakah komponen apl lain diaktifkan atau tidak. Apl berbahaya dapat menggunakan ini untuk menonaktifkan kemampuan tablet yang penting. Izin ini harus digunakan dengan hati-hati karena dapat menjadikan komponen apl tidak dapat digunakan, tidak konsisten, atau tidak stabil."</string>
<string name="permdesc_changeComponentState" product="default" msgid="1827232484416505615">"Mengizinkan apl mengubah apakah komponen apl lain diaktifkan atau tidak. Apl berbahaya dapat menggunakan izin ini untuk menonaktifkan kemampuan ponsel yang penting. Izin ini harus digunakan dengan hati-hati, karena mungkin saja menjadikan komponen apl tidak dapat digunakan, tidak konsisten, atau tidak stabil."</string>
@@ -434,8 +434,8 @@
<string name="permdesc_performCdmaProvisioning" msgid="1994193538802314186">"Mengizinkan apl memulai penyediaan CDMA. Apl berbahaya dapat memulai penyediaan CDMA yang tidak perlu."</string>
<string name="permlab_locationUpdates" msgid="7785408253364335740">"mengontrol pemberitahuan pembaruan lokasi"</string>
<string name="permdesc_locationUpdates" msgid="1120741557891438876">"Mengizinkan apl mengaktifkan/menonaktifkan pemberitahuan pembaruan lokasi dari radio. Tidak untuk digunakan oleh apl normal."</string>
- <string name="permlab_checkinProperties" msgid="7855259461268734914">"akses properti lapor masuk"</string>
- <string name="permdesc_checkinProperties" msgid="4024526968630194128">"Mengizinkan apl membaca/menulis akses ke properti yang diunggah oleh layanan lapor masuk. Tidak untuk digunakan oleh apl normal."</string>
+ <string name="permlab_checkinProperties" msgid="7855259461268734914">"akses properti check in"</string>
+ <string name="permdesc_checkinProperties" msgid="4024526968630194128">"Mengizinkan apl membaca/menulis akses ke properti yang diunggah oleh layanan check in. Tidak untuk digunakan oleh apl normal."</string>
<string name="permlab_bindGadget" msgid="776905339015863471">"pilih widget"</string>
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Mengizinkan apl memberi tahu sistem tentang widget mana yang dapat digunakan oleh suatu apl. Apl dengan izin ini dapat memberikan akses ke data pribadi untuk apl lain. Tidak untuk digunakan oleh apl normal."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ubah kondisi ponsel"</string>
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Salin URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Pilih teks"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Pemilihan teks"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"tambahkan ke kamus"</string>
- <string name="deleteText" msgid="7070985395199629156">"hapus"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Tambahkan ke kamus"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Hapus"</string>
<string name="inputMethod" msgid="1653630062304567879">"Metode masukan"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Tindakan teks"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Ruang penyimpanan hampir habis"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Terima panggilan?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Selalu"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Hanya sekali"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablet"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Ponsel"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Headphone"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Pengeras suara dok"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Audio HDMI"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 280a298..f84ad68 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copia URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Seleziona testo"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selezione testo"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"aggiungi al dizionario"</string>
- <string name="deleteText" msgid="7070985395199629156">"elimina"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Aggiungi al dizionario"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Elimina"</string>
<string name="inputMethod" msgid="1653630062304567879">"Metodo inserimento"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Azioni testo"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Spazio di archiviazione in esaurimento"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index e76c6b4..81cd1e4 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"העתק כתובת אתר"</string>
<string name="selectTextMode" msgid="1018691815143165326">"בחר טקסט"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"בחירת טקסט"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"הוסף למילון"</string>
- <string name="deleteText" msgid="7070985395199629156">"מחק"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"הוסף למילון"</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>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 8b672395..4f7b5cc 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URLをコピー"</string>
<string name="selectTextMode" msgid="1018691815143165326">"テキストを選択"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"テキスト選択"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"辞書に追加"</string>
- <string name="deleteText" msgid="7070985395199629156">"削除"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"辞書に追加"</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>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"通話を受けますか?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"常時"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"1回のみ"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"タブレット"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"携帯端末"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"ヘッドホン"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"ホルダーのスピーカー"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMIオーディオ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index fe9a76a..bb6cf01 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URL 복사"</string>
<string name="selectTextMode" msgid="1018691815143165326">"텍스트 선택"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"텍스트 선택"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"사전에 추가"</string>
- <string name="deleteText" msgid="7070985395199629156">"삭제"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"사전에 추가"</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>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"통화를 수락하시겠습니까?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"항상"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"한 번만"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"태블릿"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"휴대전화"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"헤드폰"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"도크 스피커"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI 오디오"</string>
diff --git a/core/res/res/values-land/arrays.xml b/core/res/res/values-land/arrays.xml
index 6db3a508..1cd9e74 100644
--- a/core/res/res/values-land/arrays.xml
+++ b/core/res/res/values-land/arrays.xml
@@ -69,11 +69,4 @@
<item>@string/description_target_camera</item>
</array>
- <array name="lockscreen_chevron_drawables">
- <item>@null</item>
- <item>@drawable/ic_lockscreen_chevron_up</item>
- <item>@null</item>
- <item>@null</item>
- </array>
-
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 688fed7..0922667 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopijuoti URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Pasirinkti tekstą"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Teksto pasirinkimas"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"pridėti prie žodyno"</string>
- <string name="deleteText" msgid="7070985395199629156">"ištrinti"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Pridėti prie žodyno"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Ištrinti"</string>
<string name="inputMethod" msgid="1653630062304567879">"Įvesties būdas"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Teksto veiksmai"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Mažėja laisvos saugyklos vietos"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Priimti skambutį?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Visada"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Tik kartą"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Planšetinis kompiuteris"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefonas"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Ausinės"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Doko garsiakalbiai"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI garsas"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 2b33435..75ec5ba 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopēt URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Atlasīt tekstu"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Teksta atlase"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"pievienot vārdnīcai"</string>
- <string name="deleteText" msgid="7070985395199629156">"dzēst"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Pievienot vārdnīcai"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Dzēst"</string>
<string name="inputMethod" msgid="1653630062304567879">"Ievades metode"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Teksta darbības"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Paliek maz brīvas vietas"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Vai atbildēt uz zvanu?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Vienmēr"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Tikai vienreiz"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Planšetdators"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Tālrunis"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Austiņas"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Doka skaļruņi"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI audio"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index abc1a2e..73d6b54 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Salin URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Pilih teks"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Pemilihan teks"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"tambahkan pada kamus"</string>
- <string name="deleteText" msgid="7070985395199629156">"padam"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Tambah ke kamus"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Padam"</string>
<string name="inputMethod" msgid="1653630062304567879">"Kaedah input"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Tindakan teks"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Ruang storan semakin berkurangan"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Terima panggilan?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Sentiasa"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Hanya sekali"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablet"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Fon kepala"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Pembesar suara dok"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Audio HDMI"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 11be5de9..de803b0 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopier URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Marker tekst"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Merket tekst"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"legg til i ordliste"</string>
- <string name="deleteText" msgid="7070985395199629156">"slett"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Legg til i ordlisten"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Slett"</string>
<string name="inputMethod" msgid="1653630062304567879">"Inndatametode"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Teksthandlinger"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Lite ledig lagringsplass"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Vil du besvare anropet?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Alltid"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Bare én gang"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Nettbrett"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Hodetelefoner"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Dokkhøyttalere"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI-lyd"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index ab61708..55b7612 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URL kopiëren"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Tekst selecteren"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Tekstselectie"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"toevoegen aan woordenboek"</string>
- <string name="deleteText" msgid="7070985395199629156">"verwijderen"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Toevoegen aan woordenboek"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Verwijderen"</string>
<string name="inputMethod" msgid="1653630062304567879">"Invoermethode"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Tekstacties"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Opslagruimte is bijna vol"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index a9e0577..392a44c 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopiuj adres URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Zaznacz tekst"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Zaznaczanie tekstu"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"dodaj do słownika"</string>
- <string name="deleteText" msgid="7070985395199629156">"usuń"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Dodaj do słownika"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Usuń"</string>
<string name="inputMethod" msgid="1653630062304567879">"Sposób wprowadzania tekstu"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Działania na tekście"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Kończy się miejsce"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index ecc222e..0135d9f 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copiar URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Selecionar texto"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selecção de texto"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"adicionar ao dicionário"</string>
- <string name="deleteText" msgid="7070985395199629156">"eliminar"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Adicionar ao dicionário"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Eliminar"</string>
<string name="inputMethod" msgid="1653630062304567879">"Método de entrada"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Acções de texto"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Está quase sem espaço de armazenamento"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 84a9a92..93d4f85 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copiar URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Selecionar texto"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Seleção de texto"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"adicionar ao dicionário"</string>
- <string name="deleteText" msgid="7070985395199629156">"excluir"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Adicionar ao dicionário"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Excluir"</string>
<string name="inputMethod" msgid="1653630062304567879">"Método de entrada"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Ações de texto"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Pouco espaço de armazenamento"</string>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index f97e294..1262f13 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -1414,9 +1414,9 @@
<!-- no translation found for selectTextMode (1018691815143165326) -->
<skip />
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selecziun da text"</string>
- <!-- no translation found for addToDictionary (9090375111134433012) -->
+ <!-- no translation found for addToDictionary (4352161534510057874) -->
<skip />
- <!-- no translation found for deleteText (7070985395199629156) -->
+ <!-- no translation found for deleteText (6979668428458199034) -->
<skip />
<string name="inputMethod" msgid="1653630062304567879">"Metoda d\'endataziun"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Acziuns da text"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 8f7d1a2..d69cb2e 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Copiaţi adresa URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Selectaţi text"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selectare text"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"adăugaţi în dicţionar"</string>
- <string name="deleteText" msgid="7070985395199629156">"ştergeţi"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Adăugaţi în dicţionar"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Ştergeţi"</string>
<string name="inputMethod" msgid="1653630062304567879">"Metodă de intrare"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Acţiuni pentru text"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Spaţiul de stocare aproape ocupat"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Acceptaţi apelul?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Întotdeauna"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Numai o dată"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tabletă"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Căşti"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Difuz. dispozit. andocare"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Ieşire audio HDMI"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 2e51dd1..72b11f3 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Копировать URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Выбрать текст"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Выбор текста"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"добавить в словарь"</string>
- <string name="deleteText" msgid="7070985395199629156">"удалить"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Добавить в словарь"</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>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Ответить?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Всегда"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Только сейчас"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Планшетный ПК"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Телефон"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Наушники"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Динамики док-станции"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI-аудио"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index ddd5b12..dccefa2 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Skopírovať adresu URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Vybrať text"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Výber textu"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"pridať do slovníka"</string>
- <string name="deleteText" msgid="7070985395199629156">"odstrániť"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Pridať do slovníka"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Odstrániť"</string>
<string name="inputMethod" msgid="1653630062304567879">"Metóda vstupu"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Operácie s textom"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Nedostatok ukladacieho priestoru"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Prijať hovor?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Vždy"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Len raz"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablet"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefón"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Slúchadlá"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Reproduktory doku"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Zvuk HDMI"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index ff9c022..dce4e52 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopiraj URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Izbira besedila"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Izbrano besedilo"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"dodaj v slovar"</string>
- <string name="deleteText" msgid="7070985395199629156">"izbriši"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Dodaj v slovar"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Izbriši"</string>
<string name="inputMethod" msgid="1653630062304567879">"Način vnosa"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Besedilna dejanja"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Prostor za shranjevanje bo pošel"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Ali želite sprejeti klic?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Vedno"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Samo tokrat"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablični računalnik"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Slušalke"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Zvočniki stojala"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"Zvok HDMI"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index a9567bd..5ef0bcf 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Копирај URL адресу"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Изабери текст"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Избор текста"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"додај у речник"</string>
- <string name="deleteText" msgid="7070985395199629156">"избриши"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Додај у речник"</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>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 1150888..f9ab2ed 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopiera webbadress"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Markera text"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Textmarkering"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"lägg till i ordlista"</string>
- <string name="deleteText" msgid="7070985395199629156">"ta bort"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Lägg till i ordlista"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Ta bort"</string>
<string name="inputMethod" msgid="1653630062304567879">"Indatametod"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Textåtgärder"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Lagringsutrymmet börjar ta slut"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index dac7e25..7b1ee78 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -187,7 +187,7 @@
<string name="permgrouplab_storage" msgid="1971118770546336966">"Hifadhi"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Fikia hifadhi ya USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Fikia kadi ya SD."</string>
- <string name="permlab_statusBar" msgid="7417192629601890791">"lemaza au rekebisha mwambaa hali"</string>
+ <string name="permlab_statusBar" msgid="7417192629601890791">"zima au rekebisha mwambaa hali"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Inaruhusu programu kulemaza upau wa hali au kuongeza na kutoa ikoni za mfumo."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"mwamba hali"</string>
<string name="permdesc_statusBarService" msgid="716113660795976060">"Inaruhusu programu kuwa upau wa hali."</string>
@@ -391,7 +391,7 @@
<string name="permdesc_recordAudio" msgid="4906839301087980680">"Inaruhusu programu kurekodi sauti kwa kinasa sauti. Idhini hii inaruhusu programu kurekodi sauti wakati wowote bila ya uthibitisho wako."</string>
<string name="permlab_camera" msgid="3616391919559751192">"chukua picha na video"</string>
<string name="permdesc_camera" msgid="8497216524735535009">"Inaruhusu programu kupiga picha na video kwa kamera. Kibali hiki kinaruhusu programu kutumia kamera kwa wakati wowote bila uthibitisho wako."</string>
- <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"lemaza kompyuta ndogo kabisa"</string>
+ <string name="permlab_brick" product="tablet" msgid="2961292205764488304">"zima kompyuta ndogo kabisa"</string>
<string name="permlab_brick" product="default" msgid="8337817093326370537">"simu iliyolemazwa kabisa"</string>
<string name="permdesc_brick" product="tablet" msgid="4334818808001699530">"Inaruhusu programu kulemaza kompyuta yote kibao kabisa. Hii ni hatari sana."</string>
<string name="permdesc_brick" product="default" msgid="5788903297627283099">"Inaruhusu programu kulemaza simu yote kabisa. Hii ni hatari sana."</string>
@@ -508,7 +508,7 @@
<string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Inaruhusu programu kuona usanidi wa Bluetooth kwenye simu, na kuunda na kukubali miunganisho kwa vifaa vilivyooanishwa."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"dhibiti Mawasiliano Karibu na Uga"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Inaruhusu programu kuwasiliana na lebo, kadi na wasomaji wa Near Field Communication (NFC)."</string>
- <string name="permlab_disableKeyguard" msgid="3598496301486439258">"lemaza kufuli la skrini yako"</string>
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"zima kufuli la skrini yako"</string>
<string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Inaruhusu programu kulemaza ufunguo wa vitufe na usalama mwingine ambata wa nenosiri. Kwa mfano, simu inalemaza ufunguo wa viitufe inapopokea simu inayoingia, kisha inawezesha upya ufunguo wa vitufe wakati simu inapokamilika."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"soma mipangilio ya usawazishaji"</string>
<string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Inaruhusu programu kusoma mipangilio ya upatanishi wa akaunti. Kwa mfano, huku kunaweza kuamua kama programu ya Watu imepatanishwa na akaunti."</string>
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Nakili URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Chagua maandishi"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Uchaguzi wa maandishi?"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"ongeza kwa kamusi"</string>
- <string name="deleteText" msgid="7070985395199629156">"futa"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Ongeza kwenye kamusi"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Futa"</string>
<string name="inputMethod" msgid="1653630062304567879">"Mbinu ya uingizaji"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Vitendo vya maandishi"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Nafasi ya kuhafadhi inakwisha"</string>
diff --git a/core/res/res/values-sw720dp-port/arrays.xml b/core/res/res/values-sw720dp-port/arrays.xml
deleted file mode 100644
index d845875..0000000
--- a/core/res/res/values-sw720dp-port/arrays.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/common/assets/res/any/colors.xml
-**
-** Copyright 2012, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
- <array name="lockscreen_chevron_drawables">
- <item>@drawable/ic_lockscreen_chevron_right</item>
- <item>@null</item>
- <item>@null</item>
- <item>@null</item>
- </array>
-
-</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 1ac2926..3f6c173 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"คัดลอก URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"เลือกข้อความ"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"การเลือกข้อความ"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"เพิ่มลงในพจนานุกรม"</string>
- <string name="deleteText" msgid="7070985395199629156">"ลบ"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"เพิ่มในพจนานุกรม"</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>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index bfcb4ef..ea21b68 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopyahin ang URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Pumili ng teksto"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Pagpili ng teksto"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"idagdag sa diksyunaryo"</string>
- <string name="deleteText" msgid="7070985395199629156">"tanggalin"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Idagdag sa diksyunaryo"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Tanggalin"</string>
<string name="inputMethod" msgid="1653630062304567879">"Pamamaraan ng pag-input"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Pagkilos ng teksto"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Nauubusan na ang puwang ng storage"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 21f75f8..777dd2a 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"URL\'yi kopyala"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Metin seç"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Metin seçimi"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"sözlüğe ekle"</string>
- <string name="deleteText" msgid="7070985395199629156">"sil"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Sözlüğe ekle"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Sil"</string>
<string name="inputMethod" msgid="1653630062304567879">"Giriş yöntemi"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Metin eylemleri"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Depolama alanı bitiyor"</string>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"Çağrı kabul edilsin mi?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"Her zaman"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"Yalnızca bir defa"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"Tablet"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"Telefon"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"Kulaklıklar"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"Yuva hoparlörleri"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI ses"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 1bbba0c..657ab7a 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Копіюв. URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Вибрати текст"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Вибір тексту"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"додати в словник"</string>
- <string name="deleteText" msgid="7070985395199629156">"видалити"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Додати в словник"</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>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 2530909..8b1caf2 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Sao chép URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Chọn văn bản"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Lựa chọn văn bản"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"thêm vào từ điển"</string>
- <string name="deleteText" msgid="7070985395199629156">"xóa"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Thêm vào từ điển"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Xóa"</string>
<string name="inputMethod" msgid="1653630062304567879">"Phương thức nhập"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Tác vụ văn bản"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Sắp hết dung lượng lưu trữ"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index c8f73df..ed1d8f9 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -183,7 +183,7 @@
<string name="permgrouplab_systemTools" msgid="4652191644082714048">"系统工具"</string>
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"对系统进行低级访问和控制。"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"开发工具"</string>
- <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"只有应用开发人员才需要的功能。"</string>
+ <string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"只有应用开发者才需要的功能。"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"存储"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"访问 USB 存储设备。"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"访问 SD 卡。"</string>
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"复制网址"</string>
<string name="selectTextMode" msgid="1018691815143165326">"选择文字"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"文字选择"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"添加到词典"</string>
- <string name="deleteText" msgid="7070985395199629156">"删除"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"添加到词典"</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>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"要接听电话吗?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"始终"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"仅此一次"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"平板电脑"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"手机"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"耳机"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"基座扬声器"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI 音频"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index dc886fc..eced3ce 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"複製網址"</string>
<string name="selectTextMode" msgid="1018691815143165326">"選取文字"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"選取文字"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"新增至字典"</string>
- <string name="deleteText" msgid="7070985395199629156">"刪除"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"加入字典"</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>
@@ -1289,10 +1289,8 @@
<string name="SetupCallDefault" msgid="5834948469253758575">"接聽電話嗎?"</string>
<string name="activity_resolver_use_always" msgid="8017770747801494933">"一律採用"</string>
<string name="activity_resolver_use_once" msgid="2404644797149173758">"僅限一次"</string>
- <!-- no translation found for default_audio_route_name (4617053898167127471) -->
- <skip />
- <!-- no translation found for default_audio_route_name (4239291273420140123) -->
- <skip />
+ <string name="default_audio_route_name" product="tablet" msgid="4617053898167127471">"平板電腦"</string>
+ <string name="default_audio_route_name" product="default" msgid="4239291273420140123">"手機"</string>
<string name="default_audio_route_name_headphones" msgid="8119971843803439110">"耳機"</string>
<string name="default_audio_route_name_dock_speakers" msgid="6240602982276591864">"座架喇叭"</string>
<string name="default_audio_route_name_hdmi" msgid="7986404173839007682">"HDMI 音訊"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 8fdf2267..5116100 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -930,8 +930,8 @@
<string name="copyUrl" msgid="2538211579596067402">"Kopisha i-URL"</string>
<string name="selectTextMode" msgid="1018691815143165326">"Khetha umbhalo"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Inketho yombhalo"</string>
- <string name="addToDictionary" msgid="9090375111134433012">"Faka esichazinimazwi"</string>
- <string name="deleteText" msgid="7070985395199629156">"susa"</string>
+ <string name="addToDictionary" msgid="4352161534510057874">"Engeza kwisichazamazwi"</string>
+ <string name="deleteText" msgid="6979668428458199034">"Susa"</string>
<string name="inputMethod" msgid="1653630062304567879">"Indlela yokufakwayo"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Izenzo zombhalo"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Isikhala sokulondoloza siyaphela"</string>
diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml
index b425ad7..8615476 100644
--- a/core/res/res/values/arrays.xml
+++ b/core/res/res/values/arrays.xml
@@ -242,8 +242,6 @@
<item>@drawable/list_divider_holo_dark</item>
<item>@drawable/list_divider_holo_light</item>
<item>@drawable/list_divider_holo_light</item>
- <item>@drawable/ic_lockscreen_chevron_left</item>
- <item>@drawable/ic_lockscreen_chevron_right</item>
<item>@drawable/ab_transparent_dark_holo</item>
<item>@drawable/ab_stacked_transparent_dark_holo</item>
<item>@drawable/ab_bottom_transparent_dark_holo</item>
@@ -400,11 +398,4 @@
<item>@null</item>
</array>
- <array name="lockscreen_chevron_drawables">
- <item>@drawable/ic_lockscreen_chevron_right</item>
- <item>@null</item>
- <item>@null</item>
- <item>@null</item>
- </array>
-
</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index aa8b643..0477eca 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2154,40 +2154,6 @@
<enum name="no" value="2" />
</attr>
- <!-- @hide Controls whether this view can take accessibility focus. -->
- <attr name="accessibilityFocusable" format="integer">
- <!-- The system determines whether the view can take accessibility focus - default
- (recommended).
- <p>
- Such a view is consideted by the focus search if it is:
- <ul>
- <li>
- Important for accessibility and actionable (clickable, long clickable, focusable)
- </li>
- <li>
- Important for accessibility, not actionable (clickable, long clickable, focusable),
- and does not have an actionable predecessor.
- </li>
- </ul>
- An accessibility srvice can request putting accessibility focus on such a view.
- </p> -->
- <enum name="auto" value="0" />
- <!-- The view can take accessibility focus.
- <p>
- A view that can take accessibility focus is always considered during focus
- search and an accessibility service can request putting accessibility focus
- on it.
- </p> -->
- <enum name="yes" value="1" />
- <!-- The view can not take accessibility focus.
- <p>
- A view that can not take accessibility focus is never considered during focus
- search and an accessibility service can not request putting accessibility focus
- on it.
- </p> -->
- <enum name="no" value="2" />
- </attr>
-
</declare-styleable>
<!-- Attributes that can be used with a {@link android.view.ViewGroup} or any
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index b0029c28..85c4503 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -924,8 +924,6 @@
<java-symbol type="array" name="config_cdma_dun_supported_types" />
<java-symbol type="drawable" name="default_wallpaper" />
- <java-symbol type="drawable" name="ic_suggestions_add" />
- <java-symbol type="drawable" name="ic_suggestions_delete" />
<java-symbol type="drawable" name="indicator_input_error" />
<java-symbol type="drawable" name="overscroll_edge" />
<java-symbol type="drawable" name="overscroll_glow" />
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 3582768..170c95d 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -2693,10 +2693,10 @@
<string name="textSelectionCABTitle">Text selection</string>
<!-- Option to add the current misspelled word to the user dictionary. [CHAR LIMIT=25] -->
- <string name="addToDictionary">add to dictionary</string>
+ <string name="addToDictionary">Add to dictionary</string>
<!-- Option to delete the highlighted part of the text from the suggestion popup. [CHAR LIMIT=25] -->
- <string name="deleteText">delete</string>
+ <string name="deleteText">Delete</string>
<!-- EditText context menu -->
<string name="inputMethod">Input method</string>
diff --git a/data/fonts/AndroidEmoji.ttf b/data/fonts/AndroidEmoji.ttf
index 4c017d5..92bf047 100644
--- a/data/fonts/AndroidEmoji.ttf
+++ b/data/fonts/AndroidEmoji.ttf
Binary files differ
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index c18d398..d115beb 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -30,20 +30,21 @@
<th>API Level</th>
<th>Distribution</th>
</tr>
-<tr><td><a href="/about/versions/android-1.5.html">1.5</a></td><td>Cupcake</td> <td>3</td><td>0.3%</td></tr>
-<tr><td><a href="/about/versions/android-1.6.html">1.6</a></td><td>Donut</td> <td>4</td><td>0.6%</td></tr>
-<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td> <td>7</td><td>5.2%</td></tr>
-<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td> <td>8</td><td>19.1%</td></tr>
+<tr><td><a href="/about/versions/android-1.5.html">1.5</a></td><td>Cupcake</td> <td>3</td><td>0.2%</td></tr>
+<tr><td><a href="/about/versions/android-1.6.html">1.6</a></td><td>Donut</td> <td>4</td><td>0.5%</td></tr>
+<tr><td><a href="/about/versions/android-2.1.html">2.1</a></td><td>Eclair</td> <td>7</td><td>4.7%</td></tr>
+<tr><td><a href="/about/versions/android-2.2.html">2.2</a></td><td>Froyo</td> <td>8</td><td>17.3%</td></tr>
<tr><td><a href="/about/versions/android-2.3.html">2.3 - 2.3.2</a>
</td><td rowspan="2">Gingerbread</td> <td>9</td><td>0.4%</td></tr>
<tr><td><a href="/about/versions/android-2.3.3.html">2.3.3 - 2.3.7
- </a></td><!-- Gingerbread --> <td>10</td><td>64.6%</td></tr>
+ </a></td><!-- Gingerbread --> <td>10</td><td>63.6%</td></tr>
<tr><td><a href="/about/versions/android-3.1.html">3.1</a></td>
- <td rowspan="2">Honeycomb</td> <td>12</td><td>0.7%</td></tr>
-<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td><!-- Honeycomb --><td>13</td><td>2%</td></tr>
+ <td rowspan="2">Honeycomb</td> <td>12</td><td>0.5%</td></tr>
+<tr><td><a href="/about/versions/android-3.2.html">3.2</a></td> <!-- Honeycomb --><td>13</td><td>1.9%</td></tr>
<tr><td><a href="/about/versions/android-4.0.html">4.0 - 4.0.2</a></td>
- <td rowspan="2">Ice Cream Sandwich</td><td>14</td><td>0.4%</td></tr>
-<tr><td><a href="/about/versions/android-4.0.3.html">4.0.3 - 4.0.4</a> </td><!-- ICS --> <td>15</td><td>6.7%</td></tr>
+ <td rowspan="2">Ice Cream Sandwich</td><td>14</td><td>0.2%</td></tr>
+<tr><td><a href="/about/versions/android-4.0.3.html">4.0.3 - 4.0.4</a></td>
+ <!-- ICS --> <td>15</td><td>10.7%</td></tr>
</table>
@@ -51,11 +52,11 @@
<div class="col-7" style="margin-right:0">
<img alt=""
-src="http://chart.apis.google.com/chart?&cht=p&chs=460x250&chd=t:0.3,0.6,5.2,19.1,0.4,64.6,0.7,2.0,0.4,6.7&chl=Android%201.5|Android%201.6|Android%202.1|Android%202.2|Android%202.3|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0|Android%204.0.3&chco=c4df9b,6fad0c&chf=bg,s,00000000" />
+src="http://chart.apis.google.com/chart?&cht=p&chs=460x310&chd=t:0.2,0.5,4.7,17.3,0.4,63.6,0.5,1.9,0.2,10.7&chl=Android%201.5|Android%201.6|Android%202.1|Android%202.2|Android%202.3|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0|Android%204.0.3&chco=c4df9b,6fad0c&chf=bg,s,00000000" />
</div><!-- end dashboard-panel -->
-<p style="clear:both"><em>Data collected during a 14-day period ending on June 1, 2012</em></p>
+<p style="clear:both"><em>Data collected during a 14-day period ending on July 2, 2012</em></p>
<!--
<p style="font-size:.9em">* <em>Other: 0.1% of devices running obsolete versions</em></p>
-->
@@ -80,9 +81,9 @@
Google Play within a 14-day period ending on the date indicated on the x-axis.</p>
<img alt="" height="250" width="660"
-src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C12/01%7C12/15%7C01/01%7C01/15%7C02/01%7C02/15%7C03/01%7C03/15%7C04/01%7C04/15%7C05/01%7C05/15%7C06/01%7C1%3A%7C2011%7C%7C2012%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2012%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:98.6,98.5,98.3,98.2,98.6,98.4,98.4,98.6,98.5,98.6,98.8,98.7,98.9|97.3,97.3,97.2,97.2,97.6,97.5,97.6,97.8,97.8,97.9,98.1,98.1,98.3|87.7,88.1,88.7,89.2,89.9,90.3,90.8,91.4,91.8,92.1,92.5,92.7,93.1|52.4,55.2,58.2,60.1,62.0,63.7,65.2,66.8,68.6,69.9,71.5,72.6,74.0|2.3,2.6,3.5,3.6,4.0,4.1,4.3,4.6,5.5,6.5,7.6,8.2,9.4|1.2,1.3,2.0,2.2,2.6,3.0,3.2,3.5,4.5,5.5,6.6,7.4,8.7|0.0,0.0,0.3,0.4,0.7,0.8,1.1,1.3,2.3,3.3,4.4,5.3,6.7&chm=b,c3df9b,0,1,0|b,b6dc7d,1,2,0|tAndroid%202.2,5b831d,2,0,15,,t::-5|b,aadb5e,2,3,0|tAndroid%202.3.3,496c13,3,0,15,,t::-5|b,9ddb3d,3,4,0|b,91da1e,4,5,0|b,80c414,5,6,0|B,6fad0c,6,7,0&chg=7,25&chdl=Android%201.6|Android%202.1|Android%202.2|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0.3&chco=add274,a0d155,94d134,84c323,73ad18,62960f,507d08&chf=bg,s,00000000" />
+src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,x,y,r&chxr=0,0,12|1,0,12|2,0,100|3,0,100&chxl=0%3A%7C01/01%7C01/15%7C02/01%7C02/15%7C03/01%7C03/15%7C04/01%7C04/15%7C05/01%7C05/15%7C06/01%7C06/15%7C07/01%7C1%3A%7C2012%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C2012%7C2%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C3%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:98.3,98.2,98.6,98.4,98.4,98.6,98.5,98.6,98.8,98.7,98.9,99.1,99.1|97.2,97.2,97.6,97.5,97.6,97.8,97.8,97.9,98.1,98.1,98.3,98.5,98.6|88.7,89.2,89.9,90.3,90.8,91.4,91.8,92.1,92.5,92.7,93.1,93.5,93.9|58.2,60.1,62.0,63.7,65.2,66.8,68.6,69.9,71.5,72.6,74.0,75.2,76.5|3.5,3.6,4.0,4.1,4.3,4.6,5.5,6.5,7.6,8.2,9.4,11.0,12.8|2.0,2.2,2.6,3.0,3.2,3.5,4.5,5.5,6.6,7.4,8.7,10.4,12.3|0.3,0.4,0.7,0.8,1.1,1.3,2.3,3.3,4.4,5.3,6.7,8.4,10.4&chm=b,c3df9b,0,1,0|b,b6dc7d,1,2,0|tAndroid%202.2,5b831d,2,0,15,,t::-5|b,aadb5e,2,3,0|tAndroid%202.3.3,496c13,3,0,15,,t::-5|b,9ddb3d,3,4,0|b,91da1e,4,5,0|b,80c414,5,6,0|tAndroid%204.0.3,131d02,6,12,15,,t::-5|B,6fad0c,6,7,0&chg=7,25&chdl=Android%201.6|Android%202.1|Android%202.2|Android%202.3.3|Android%203.1|Android%203.2|Android%204.0.3&chco=add274,a0d155,94d134,84c323,73ad18,62960f,507d08&chf=bg,s,00000000" />
-<p><em>Last historical dataset collected during a 14-day period ending on June 1, 2012</em></p>
+<p><em>Last historical dataset collected during a 14-day period ending on July 2, 2012</em></p>
@@ -142,26 +143,26 @@
<th scope="col">xhdpi</th>
</tr>
<tr><th scope="row">small</th>
-<td>2.3%</td> <!-- small/ldpi -->
+<td>1.7%</td> <!-- small/ldpi -->
<td></td> <!-- small/mdpi -->
-<td>2.4%</td> <!-- small/hdpi -->
+<td>1.3%</td> <!-- small/hdpi -->
<td></td> <!-- small/xhdpi -->
</tr>
<tr><th scope="row">normal</th>
-<td>0.7%</td> <!-- normal/ldpi -->
-<td>26.2%</td> <!-- normal/mdpi -->
-<td>57.8%</td> <!-- normal/hdpi -->
-<td>0.9%</td> <!-- normal/xhdpi -->
+<td>0.4%</td> <!-- normal/ldpi -->
+<td>12.9%</td> <!-- normal/mdpi -->
+<td>57.5%</td> <!-- normal/hdpi -->
+<td>18.0%</td> <!-- normal/xhdpi -->
</tr>
<tr><th scope="row">large</th>
-<td>0.3%</td> <!-- large/ldpi -->
-<td>2%</td> <!-- large/mdpi -->
+<td>0.2%</td> <!-- large/ldpi -->
+<td>2.9%</td> <!-- large/mdpi -->
<td></td> <!-- large/hdpi -->
<td></td> <!-- large/xhdpi -->
</tr>
<tr><th scope="row">xlarge</th>
<td></td> <!-- xlarge/ldpi -->
-<td>7.4%</td> <!-- xlarge/mdpi -->
+<td>5.1%</td> <!-- xlarge/mdpi -->
<td></td> <!-- xlarge/hdpi -->
<td></td> <!-- xlarge/xhdpi -->
</tr>
@@ -172,11 +173,11 @@
<div class="col-7" style="margin-right:0">
<img alt=""
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=Xlarge%20/%20mdpi|Large%20/%20ldpi|Large%20/%20mdpi|Normal%20/%20hdpi|Normal%20/%20ldpi|Normal%20/%20mdpi|Normal%20/%20xhdpi|Small%20/%20hdpi|Small%20/%20ldpi&chd=t%3A7.4,0.3,2.0,57.8,0.7,26.2,0.9,2.4,2.3&chf=bg,s,00000000" />
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chf=bg,s,00000000&chco=c4df9b,6fad0c&chl=Xlarge%20/%20mdpi%7CLarge%20/%20ldpi%7CLarge%20/%20mdpi%7CNormal%20/%20hdpi%7CNormal%20/%20ldpi%7CNormal%20/%20mdpi%7CNormal%20/%20xhdpi%7CSmall%20/%20hdpi%7CSmall%20/%20ldpi&chd=t%3A5.1,0.2,2.9,57.5,0.4,12.9,18.0,1.3,1.7" />
</div>
-<p style="clear:both"><em>Data collected during a 7-day period ending on May 1, 2012</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on July 2, 2012</em></p>
@@ -216,20 +217,20 @@
</tr>
<tr>
<td>1.1 only</th>
-<td>9.9%</td>
+<td>9.7%</td>
</tr>
<tr>
<td>2.0 & 1.1</th>
-<td>90.1%</td>
+<td>90.3%</td>
</tr>
</table>
</div>
<div class="col-7" style="margin-right:0">
<img alt=""
-src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL% 202.0%20%26%201.1&chd=t%3A9.9,90.1&chf=bg,s,00000000" />
+src="http://chart.googleapis.com/chart?cht=p&chs=400x250&chco=c4df9b,6fad0c&chl=GL%201.1%20only|GL% 202.0%20%26%201.1&chd=t%3A9.7,90.3&chf=bg,s,00000000" />
</div>
-<p style="clear:both"><em>Data collected during a 7-day period ending on June 4, 2012</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on July 2, 2012</em></p>
diff --git a/docs/html/about/index.jd b/docs/html/about/index.jd
index c2d6426..cf90d04 100644
--- a/docs/html/about/index.jd
+++ b/docs/html/about/index.jd
@@ -7,7 +7,7 @@
<div style="position:absolute;width:440px;">
<p>Android powers hundreds of millions of mobile devices in more than 190
countries around the world. It's the largest installed base of any mobile platform
-and growing fast—every day another 900,000 users power up their
+and growing fast—every day another million users power up their
Android devices for the first time and start looking for apps, games,
and other digital content. </p>
@@ -30,11 +30,11 @@
than 300 hardware, software, and carrier partners, Android has rapidly become
the fastest-growing mobile OS.</p>
-<blockquote>Every day more than 900,000 new Android devices are activated worldwide.</blockquote>
+<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
-1 billion apps and games from Google Play each month. </p>
+1.5 billion apps and games from Google Play each month. </p>
<p>With it's partners, Android is continuously pushing the boundaries of hardware and software
forward to bring new capabilities to users and developers. For developers,
@@ -80,11 +80,11 @@
<p>To help you develop efficiently, the <a href="{@docRoot}tools/index.html">Android
Developer Tools</a>
-offers a full Java IDE with advanced features for developing, debugging, and
+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
device or create virtual devices that emulate any hardware configuration.</p>
-<blockquote>A billion downloads a month and growing. Get your apps in front
+<blockquote>1.5 billion downloads a month and growing. Get your apps in front
of millions of users at Google's scale.</blockquote>
<h3>Open marketplace for distributing your apps</h3>
diff --git a/docs/html/about/versions/android-4.1.jd b/docs/html/about/versions/android-4.1.jd
index 675dc99..3677860 100644
--- a/docs/html/about/versions/android-4.1.jd
+++ b/docs/html/about/versions/android-4.1.jd
@@ -663,7 +663,7 @@
<p>High priority notifications are things that users generally want to respond to quickly,
such as a new instant message, text message, or impending event reminder. Low priority
-notifications are things like </p>
+notifications are things like expired calendar events or app promotions.</p>
<h3 id="SystemUI">Controls for system UI</h3>
diff --git a/docs/html/about/versions/index.jd b/docs/html/about/versions/index.jd
index 30826c0..518711f 100644
--- a/docs/html/about/versions/index.jd
+++ b/docs/html/about/versions/index.jd
@@ -80,7 +80,7 @@
</ul>
<p>For more details and a walkthrough of an application, see the <a
-href="{@docRoot}resources/tutorials/notepad/index.html">Notepad Tutorial</a>.</p>
+href="{@docRoot}training/notepad/index.html">Notepad Tutorial</a>.</p>
<a name="libraries" id="libraries"></a>
<h2>Libraries</h2>
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index 3d87ef7..db56fa4 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -121,34 +121,32 @@
<div style="float:right;margin:22px 0px 0px 24px;width:280px;">
<div>
<!-- <img src="{@docRoot}images/jd-notif-cd.png" style="width:200px"> -->
-<img src="{@docRoot}images/jb-notif-ex.png" width="280" height="548">
+<img src="{@docRoot}images/jb-notif-ex1.png" width="280" height="548">
</div>
-<p class="image-caption" style="padding:.5em"><span
-style="font-weight:500;">Expandable notifications</span> let you dsplay more types of content in your notifications. Users can expand them with a simple gesture.</p>
+<p class="image-caption" style="padding:.5em">Developers can create custom notification styles
+like those shown in the examples above to display rich content and actions.</p>
</div>
<h3>Expandable notifications</h3>
<p>Notifications have long been a unique and popular feature on Android. Developers can use them to place important or time-based information in front of users in the notification bar, outside of the app’s normal UI.</p>
-<p>Android 4.1 brings a major update to the Android notifications framework. Apps can now display <strong>larger, richer notifications</strong> to users that can be expanded and collapsed with a pinch. Notifications support <strong>new types of content</strong>, including photos, have configurable priority, and can even include multiple actions.</p>
+<p>Android 4.1 brings a major update to the Android notifications framework. Apps can now display <strong>larger, richer notifications</strong> to users that can be expanded and collapsed with a pinch or swipe. Notifications support <strong>new types of content</strong>, including photos, have configurable priority, and can even include multiple actions.</p>
<p>Through an improved <strong>notification builder</strong>, apps can create notifications that use a larger area, up to 256 dp in height. Three <strong>templated notification styles</strong> are available:</p>
<ul>
<li>BigTextStyle — a notification that includes a multiline TextView object.</li>
-<li>BigInboxStyle — a notification the shows any kind of list such as messages, headlines, and so on.</li>
+<li>BigInboxStyle — a notification that shows any kind of list such as messages, headlines, and so on.</li>
<li>BigPictureStyle — a notification that showcases visual content such as a bitmap.</li>
</ul>
-<p>In addition to the templated styles, you can create you own notification styles <strong>using any remote View</strong>.</p>
+<p>In addition to the templated styles, you can create your own notification styles <strong>using any remote View</strong>.</p>
<p>Apps can add up to three <strong>actions</strong> to a notification, which are displayed below the notification content. The actions let the users respond directly to the information in the notification in alternative ways. such as by email or by phone call, without visiting the app.</p>
<p>With expandable notifications, apps can give more information to the user, effortlessly and on demand. Users remain in control and can long-press any notification to get information about the sender and optionally disable further notifications from the app.</p>
-</div>
-
<div style="float:left;margin:66px 30px 0px 0px;width:280px;">
<div>
<img src="{@docRoot}images/jb-appwidgets.png" width="280" height="548">
@@ -226,7 +224,7 @@
<p>Apps can take advantage of vsync timing for free, through Android’s <strong>animation framework</strong>. The animation framework now uses vsync timing to automatically handle synchronization across animators.</p>
-<p>For specialized uses, apps can access vsync timing through APIs exposed by a new Choreographer class. Apps can request invalidation on the next vsync frame — a good way to schedule animation when the app is not using the animation framework. For more advanced uses, apps can post a calllback that the Choreographer class will run on the next frame. </p>
+<p>For specialized uses, apps can access vsync timing through APIs exposed by a new Choreographer class. Apps can request invalidation on the next vsync frame — a good way to schedule animation when the app is not using the animation framework. For more advanced uses, apps can post a callback that the Choreographer class will run on the next frame. </p>
<h3>New animation actions and transition types</h3>
@@ -245,17 +243,17 @@
<p>In Android 4.1, Android Beam makes it easier to share images, videos, or other payloads by <strong>leveraging Bluetooth for the data transfer</strong>. When the user triggers a transfer, Android Beam hands over from NFC to Bluetooth, making it really easy to manage the transfer of a file from one device to another.</p>
-<h3>Wi-fi Network Service Discovery</h3>
+<h3>Wi-Fi Network Service Discovery</h3>
<p>Android 4.1 introduces support for multicast <strong>DNS-based service discovery</strong>, which lets applications find and connect to services offered by peer devices over Wi-Fi networks — including mobile devices, printers, cameras, media players, and others. Developers can take advantage of Wi-Fi network service discovery to build cross-platform or multiplayer games and application experiences.</p>
<p>Using the service discovery API, apps can create and register any kind of service, for any other NSD-enabled device to discover. The service is advertised by multicast across the network using a human-readable string identifier, which lets user more easily identify the type of service. </p>
-<p>Consumer devices can use the API to scan and discover services available from devices connected to the local Wi-Fi network. After discovery, apps can use the API to resolve the service to an IP adress and port through which it can establish a socket connection.</p>
+<p>Consumer devices can use the API to scan and discover services available from devices connected to the local Wi-Fi network. After discovery, apps can use the API to resolve the service to an IP address and port through which it can establish a socket connection.</p>
<p>You can take advantage of this API to build new features into your apps. For example, you could let users connect to a webcam, a printer, or an app on another mobile device that supports Wi-Fi peer-to-peer connections. </p>
-<h3>Wifi-Direct Service Discovery</h3>
+<h3>Wi-Fi Direct Service Discovery</h3>
<p>Ice Cream Sandwich introduced support for Wi-Fi Direct, a technology that lets apps <strong>discover and pair directly</strong>, over a high-bandwidth peer-to-peer connection. Wi-Fi Direct is an ideal way to share media, photos, files and other types of data and sessions, even where there is no cell network or Wi-Fi available.</p>
@@ -332,7 +330,7 @@
<p>GCM handles all the details of <strong>queuing messages and delivering them</strong> efficiently to the targeted Android devices. It supports message <strong>multicasting</strong> and can reach up to 1000 connected devices simultaneously with a single request. It also supports message <strong>payloads</strong>, which means that in addition to sending tickle messages to an app on the device, developers can send up to 4K of data. </p>
-<p>Google Cloud Messaging is completely <strong>free for all developers</strong> and sign-up is easy. See the <a href="http://developers.google.com/android/gcm/index.html">Google Cloud Messaging</a> page for registration, downloads, and documentation.</p>
+<p>Google Cloud Messaging is completely <strong>free for all developers</strong> and sign-up is easy. See the <a href="{@docRoot}guide/google/gcm/index.html">Google Cloud Messaging</a> page for registration, downloads, and documentation.</p>
<h3>App Encryption</h3>
@@ -350,4 +348,4 @@
<p>Because your app only contains the small client library, you can take advantage of these services without a big increase in download size and storage footprint. Also, Google Play will <strong>deliver regular updates</strong> to the services, without developers needing to publish app updates to take advantage of them.</p>
-<p>For more information about the APIs included in Google Play Services, see the <a href="http://developers.google.com/android/google-play-services/index.html">Google Play Services</a> developer page.</p>
\ No newline at end of file
+<p>For more information about the APIs included in Google Play Services, see the <a href="http://developers.google.com/android/google-play-services/index.html">Google Play Services</a> developer page.</p>
diff --git a/docs/html/distribute/googleplay/about/distribution.jd b/docs/html/distribute/googleplay/about/distribution.jd
index 291d559..0d055ab 100644
--- a/docs/html/distribute/googleplay/about/distribution.jd
+++ b/docs/html/distribute/googleplay/about/distribution.jd
@@ -10,8 +10,7 @@
<p>On Google Play, you can publish your products to customers instantly. Just
upload and configure your product in the <span style="font-weight:500;">Google Play Android Developer Console</span>
and press the Publish button—your app appears in the store listings within
-hours, not weeks. There are no delays for code or policy reviews, so you keep
-complete control over your release schedule.</p>
+hours, not weeks.</p>
<p>Once your app is published, you can update it as often as you want. You can
change prices, configuration, and distribution options at any time through the
@@ -23,7 +22,7 @@
notifies existing customers that an update is ready for download. To streamline
the rollout across your customer base, Google Play also lets users accept
automatic updates of your app, so that your updates are delivered and installed
-s soon as you publish them.</p>
+as soon as you publish them.</p>
<h2>Reaching the customers you want</h2>
diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd
index 1e3437b..2fa2da8 100644
--- a/docs/html/distribute/googleplay/about/monetizing.jd
+++ b/docs/html/distribute/googleplay/about/monetizing.jd
@@ -42,7 +42,7 @@
<h3 id="payment-methods">Convenient payment options</h3>
<p>Users can purchase your products on Google Play using several convenient
-payment methods—credit card, Direct Carrier Billing, and Google Play balance.</p>
+payment methods—credit cards, Direct Carrier Billing, and Google Play balance..</p>
<p><span style="font-weight:500">Credit card</span> is the most common method of payment. Users can pay using any credit card
that they’ve registered in Google Play. To make it easy for users to get started,
@@ -54,6 +54,7 @@
<ul>
<li>Credit Card</li>
<li>Direct Carrier Billing</li>
+<li>Google Play balance (stored value)</li>
</ul>
</div>
</div>
@@ -66,6 +67,11 @@
your products through Direct Carrier Billing. Many more will get the option in
the months ahead.</p>
+<p><span style="font-weight:500">Google Play balance</span> is a stored account
+balance in Google Play. Users can increase their balance through promotions and
+offers in the store, and they can use their balanace to make purchases of apps,
+games, or other content.
+
<p>The payment methods available to users worldwide may vary, based on
location, carrier network, and other factors.</p>
@@ -107,7 +113,7 @@
<h2 id="buyer-currency" style="margin-top:1.5em;">Flexible pricing in the currencies of your customers</h2>
<div style="float:right;margin-left:18px;border:1px solid #DDD;">
-<img src="{@docRoot}images/gp-buyer-currency.png" style="width:240px;padding:4px;margin-bottom:0;">
+<img src="{@docRoot}images/gp-buyer-currency.png" style="width:240px;padding:4px;margin-bottom:1em;">
</div>
<p>Google Play gives you complete control over how you price your products. You
diff --git a/docs/html/distribute/googleplay/about/visibility.jd b/docs/html/distribute/googleplay/about/visibility.jd
index 2c5dbe5..47fa56e 100644
--- a/docs/html/distribute/googleplay/about/visibility.jd
+++ b/docs/html/distribute/googleplay/about/visibility.jd
@@ -14,10 +14,10 @@
<h2 id="reach">Worldwide reach, rapid growth</h2>
<p>Google Play is the premier store for distributing Android apps. It’s
-preinstalled on more than 300 million devices worldwide, a number growing by
-almost a million every day. Android users have downloaded
+preinstalled on more than 400 million devices worldwide, a number growing by
+more than a million every day. Android users have downloaded
more than <strong style="text-wrap:none;">15 billion apps</strong> from Google
-Play, growing at a rate of more than 1 billion per month.</p>
+Play, growing at a rate of more than 1.5 billion per month.</p>
<p>When you publish on Google Play, you put your apps in front of Android's huge
base of active customers, in more than 130 countries and territories across the
@@ -35,7 +35,7 @@
</div>
<p class="image-caption" style="padding:.5em"><span
style="font-weight:500;">Growth in app consumption</span>: Users download more than
-1 billion apps from Google Play each month.</p>
+1.5 billion apps from Google Play each month.</p>
</div>
<div>
@@ -142,20 +142,18 @@
</div>
<p>The Google Play editorial team is dedicated to bringing the best apps to the
-attention of users. It constantly reviews apps from across Google Play to find
-not only the biggest apps and games, but also the “diamonds in the rough” that
+attention of users and setting the tone for app quality throughout the store.
+It constantly reviews apps from across Google Play to find
+not only the best-known apps and games, but also the “diamonds in the rough” that
they want more people to see. </p>
-<p>When the team finds great apps and games they use the <em>Featured</em>,
-<em>Staff Picks</em>, and other collections to promote them. Any one of those
-can give your apps dramatically higher visibility and market penetration.</p>
+<p>When the team finds great apps and games, it uses the <em>Featured</em>,
+<em>Staff Picks</em>, and other collections to promote them to users.</p>
-<p>You can’t nominate your app for featuring or pay for a promotional slot,
-because the editorial team wants to show the best apps and give the same chances
-to all developers. However, if you build an app that users love and that looks
-great on Android devices, the editorial team will notice. <!--In some cases,
-they will reach out to you before your app is featured to make sure that your
-app will be at its best during featuring.</p> -->
+<p>You can't nominate your app for featuring, but the team is always
+on the lookout for great apps through a number of signals and indicators.
+If you build an app that users love and that looks great on Android devices,
+the editorial team will notice.</p>
</div>
<h4>Featured and Staff Picks</h4>
diff --git a/docs/html/distribute/googleplay/promote/brand.jd b/docs/html/distribute/googleplay/promote/brand.jd
index 8aafc48..8d04903 100644
--- a/docs/html/distribute/googleplay/promote/brand.jd
+++ b/docs/html/distribute/googleplay/promote/brand.jd
@@ -93,19 +93,19 @@
<div style="clear:both">
<div style="float:right;width:50%;padding:1.5em;">
<p>
- <img alt="Google Play logo" src="{@docRoot}images/brand/google_play_logo_450.png">
+ <img alt="Google Play logo" src="http://www.android.com/images/brand/google_play_logo_450.png">
</p>
<p>
<img alt="Get it on Google Play badge, large" src=
- "/images/brand/get_it_on_play_logo_large.png"><br>
- Download: <a href="{@docRoot}images/brand/get_it_on_play_logo_small.png">Small</a> | <a href=
- "/images/brand/get_it_on_play_logo_large.png">Large</a>
+ "http://www.android.com/images/brand/get_it_on_play_logo_large.png"><br>
+ Download: <a href="http://www.android.com/images/brand/get_it_on_play_logo_small.png">Small</a> | <a href=
+ "http://www.android.com/images/brand/get_it_on_play_logo_large.png">Large</a>
</p>
<p>
<img alt="Android App on Google Play badge, large" src=
- "/images/brand/android_app_on_play_logo_large.png"><br>
- Download: <a href="{@docRoot}images/brand/android_app_on_play_logo_small.png">Small</a> |
- <a href="{@docRoot}images/brand/android_app_on_play_large.png">Large</a>
+ "http://www.android.com/images/brand/android_app_on_play_logo_large.png"><br>
+ Download: <a href="http://www.android.com/images/brand/android_app_on_play_logo_small.png">Small</a> |
+ <a href="http://www.android.com/images/brand/android_app_on_play_large.png">Large</a>
</p>
</div>
@@ -140,20 +140,20 @@
<ul>
<li>When used online, the badge logo should be used to direct users to:
<ul>
- <li>The Google Play landing page: <br /><span style="margin-left:1em;"><a href=
- "http://play.google.com/">play.google.com</a></span>
+ <li>The Google Play landing page: <br />
+ <span style="margin-left:1em;">http://play.google.com</span>
</li>
- <li>The Google Play Apps landing page: <br /><a href="http://play.google.com/store/apps">
- <span style="margin-left:1em;"> play.google.com/store/apps</a></span>
+ <li>The Google Play Apps landing page: <br />
+ <span style="margin-left:1em;">http://play.google.com/store/apps</span>
</li>
<li>A list of products that include your company name, for example, <br />
<span style="margin-left:1em;">http://play.google.com/store/search?q=<em>yourCompanyName</em></span>
</li>
<li>A list of products published by you, for example,<br />
- <span style="margin-left:1em;">play.google.com/store/search?q=<em>publisherName</em>M/span>
+ <span style="margin-left:1em;">http://play.google.com/store/search?q=<em>publisherName</em>M/span>
</li>
<li>A specific app product details page within Google Play, for example,<br />
- <span style="margin-left:1em;">play.google.com/store/apps/details?id=<em>packageName</em></span>
+ <span style="margin-left:1em;">http://play.google.com/store/apps/details?id=<em>packageName</em></span>
</li>
</ul>
</li>
diff --git a/docs/html/distribute/googleplay/publish/console.jd b/docs/html/distribute/googleplay/publish/console.jd
index 72b97ab..31bef9c 100644
--- a/docs/html/distribute/googleplay/publish/console.jd
+++ b/docs/html/distribute/googleplay/publish/console.jd
@@ -116,7 +116,8 @@
remain free</span>. Free apps can be downloaded by any users in Google
Play.</li>
<li>If you publish it as priced, you can change it to free, Priced apps can be
-purchased and downloaded only from .</li>
+purchased and downloaded only by users who have registered a forms of payment
+in Google Play.</li>
</ul>
<p>In addition, you can sell in-app products and subscriptions in your app,
diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd
index 8c6990e..ab8fadf 100644
--- a/docs/html/distribute/googleplay/publish/preparing.jd
+++ b/docs/html/distribute/googleplay/publish/preparing.jd
@@ -203,15 +203,15 @@
<p>To get a better understanding of the current device penetration of Android
platform versions and screen sizes across all Android devices, see the <a
-href="{@docRoot}guide/topics/resources/localization.html">Device Dashboard</a>
+href="{@docRoot}about/dashboards/index.html">Device Dashboard</a>
charts.</p>
<table>
<tr>
<td><p>Related resources:</p>
<ul style="margin-top:-.5em;">
-<li><strong><a href="{@docRoot}guide/topics/resources/localization.html">Device Dashboard</a></strong> — A chart showing global percentages of devices by Android version, screen size, and level of OpenGL ES support.</li>
-<li><strong><a href="{@docRoot}guide/topics/resources/localization.html">Android API Levels</a></strong> — A definition of API Levels and a list of which Android platform versions they are associated with. </li>
+<li><strong><a href="{@docRoot}about/dashboards/index.html">Device Dashboard</a></strong> — A chart showing global percentages of devices by Android version, screen size, and level of OpenGL ES support.</li>
+<li><strong><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API Levels</a></strong> — A definition of API Levels and a list of which Android platform versions they are associated with. </li>
</ul>
</td>
</tr>
diff --git a/docs/html/distribute/index.jd b/docs/html/distribute/index.jd
index ffdeb2f..c27bc62 100644
--- a/docs/html/distribute/index.jd
+++ b/docs/html/distribute/index.jd
@@ -13,7 +13,7 @@
<img src="/images/home/google-play.png">
</div>
<div class="copy" style="position:relative;left:480px;width:360;">
- <h1>Introducing Google Play</h1>
+ <h1>Your Apps on Google Play</h1>
<p>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.</p>
<p><a class="landing-page-link" href="http://youtu.be/g5SzWc8-X0M">Watch a video</a></p>
diff --git a/docs/html/guide/components/intents-filters.jd b/docs/html/guide/components/intents-filters.jd
index 3ad3c93..dfe5fac 100644
--- a/docs/html/guide/components/intents-filters.jd
+++ b/docs/html/guide/components/intents-filters.jd
@@ -654,8 +654,8 @@
</p>
<pre><intent-filter . . . >
- <action android:name="code android.intent.action.MAIN" />
- <category android:name="code android.intent.category.LAUNCHER" />
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
</intent-filter></pre>
diff --git a/docs/html/resources/faq/commontasks.jd b/docs/html/guide/faq/commontasks.jd
similarity index 99%
rename from docs/html/resources/faq/commontasks.jd
rename to docs/html/guide/faq/commontasks.jd
index c72343a0..7b90de2 100644
--- a/docs/html/resources/faq/commontasks.jd
+++ b/docs/html/guide/faq/commontasks.jd
@@ -62,7 +62,7 @@
<p>Finally, a great way to started with Android development in Eclipse is to
follow both the <a href="{@docRoot}resources/tutorials/hello-world.html">Hello,
World</a> and <a
-href="{@docRoot}resources/tutorials/notepad/index.html">Notepad</a> code
+href="{@docRoot}training/notepad/index.html">Notepad</a> code
tutorials. In particular, the start of the Hello Android tutorial is an
excellent introduction to creating a new Android application in Eclipse.</p>
diff --git a/docs/html/resources/faq/framework.jd b/docs/html/guide/faq/framework.jd
similarity index 100%
rename from docs/html/resources/faq/framework.jd
rename to docs/html/guide/faq/framework.jd
diff --git a/docs/html/resources/faq/index.jd b/docs/html/guide/faq/index.jd
similarity index 100%
rename from docs/html/resources/faq/index.jd
rename to docs/html/guide/faq/index.jd
diff --git a/docs/html/resources/faq/licensingandoss.jd b/docs/html/guide/faq/licensingandoss.jd
similarity index 100%
rename from docs/html/resources/faq/licensingandoss.jd
rename to docs/html/guide/faq/licensingandoss.jd
diff --git a/docs/html/resources/faq/security.jd b/docs/html/guide/faq/security.jd
similarity index 100%
rename from docs/html/resources/faq/security.jd
rename to docs/html/guide/faq/security.jd
diff --git a/docs/html/resources/faq/troubleshooting.jd b/docs/html/guide/faq/troubleshooting.jd
similarity index 100%
rename from docs/html/resources/faq/troubleshooting.jd
rename to docs/html/guide/faq/troubleshooting.jd
diff --git a/docs/html/guide/google/gcm/c2dm.jd b/docs/html/guide/google/gcm/c2dm.jd
index fd1bb0c..ecc08c1 100644
--- a/docs/html/guide/google/gcm/c2dm.jd
+++ b/docs/html/guide/google/gcm/c2dm.jd
@@ -17,7 +17,11 @@
<ol>
<li><a href="#history">Historical Overview</a></li>
-<li><a href="#diffs">How is GCM Different from C2DM?</a></li>
+<li><a href="#diffs">How is GCM Different from C2DM?</a>
+ <ol>
+ <li><a href="#interop">Relationship between C2DM and GCM</a></li>
+ </ol>
+</li>
<li><a href="#migrating">Migrating Your Apps</a>
<ol>
<li><a href="#client">Client changes</a></li>
@@ -51,7 +55,7 @@
<dd>To use the GCM service, you need to obtain a Simple API Key from Google APIs console page. For more information, see <a href="gs.html">Getting Started</a>. Note that GCM <em>only</em> accepts Simple API Key—using ClientLogin or OAuth2 tokens will not work.
</dd>
<dt><strong>Sender ID</strong></dt>
-<dd>In C2DM, the Sender ID is an email address. In GCM, the Sender ID is a project ID that you acquire from the API console, as described in <a href="https://devsite.googleplex.com/android/gcm/gs.html#create-proj">Getting Started</a>. </dd>
+<dd>In C2DM, the Sender ID is an email address. In GCM, the Sender ID is a project ID that you acquire from the API console, as described in <a href="gs.html#create-proj">Getting Started</a>. </dd>
<dt><strong>JSON format</strong></dt>
<dd>GCM HTTP requests support JSON format in addition to plain text. For more information, see the <a href="gcm.html#send-msg">Architectural Overview</a>.</dd>
@@ -72,6 +76,14 @@
<dd>There may be situations where the server ends up with 2 registration IDs for the same device. If the GCM response contains a registration ID, simply replace the registration ID you have with the one provided. With this feature your application doesn't need to send the device ID to your server anymore. For more information, see <a href="adv.html#canonical">Advanced Topics</a>.</dd>
</dl>
<p>GCM also provides helper libraries (<a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">client</a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">server</a>) to make writing your code easier.</p>
+
+<h3 id="interop">Relationship between C2DM and GCM</h3>
+
+<p>C2DM and GCM are not interoperable. For example, you cannot post notifications from GCM to C2DM registration IDs, nor can you use C2DM registration IDs as GCM registration IDs. From your server-side application, you must keep keep track of whether a registration ID is from C2DM or GCM and use the proper endpoint. </p>
+
+<p>As you transition from C2DM to GCM, your server needs to be aware of whether a given registration ID
+contains an old C2DM sender or a new GCM project ID. This is the approach we recommend: have the new app version (the one that uses GCM) send a bit along with the registration ID. This bit tells your server that this registration ID is for GCM. If you don't get the extra bit, you mark the registration ID as C2DM. Once no more valid registration IDs are marked as C2DM, you can complete the migration.</p>
+
<h2 id="migrating">Migrating Your Apps</h2>
<p>This section describes how to move existing C2DM apps to GCM.</p>
<h3 id="client">Client changes</h3>
diff --git a/docs/html/guide/google/gcm/demo.jd b/docs/html/guide/google/gcm/demo.jd
index 2e1e975..4c56373 100644
--- a/docs/html/guide/google/gcm/demo.jd
+++ b/docs/html/guide/google/gcm/demo.jd
@@ -74,11 +74,11 @@
<li> From the SDK Manager, install <strong>Extras > Google Cloud Messaging for Android Library</strong>.
- <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, and <code>gcm-server</code>.</p>
+ <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
</li>
- <li>In a text editor, edit the <code>gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
- <li>In a shell window, go to the <code>gcm-demo-server</code> directory.</li>
+ <li>In a text editor, edit the <code>samples/gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
+ <li>In a shell window, go to the <code>samples/gcm-demo-server</code> directory.</li>
<li>Generate the server's WAR file by running <code>ant war</code>:</li>
<pre class="prettyprint">$ ant war
@@ -112,13 +112,13 @@
<p>To set up the server using a standard App Engine for Java:</p>
<ol>
<li> From the SDK Manager, install <strong>Extras > Google Cloud Messaging for Android Library</strong>.
- <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, and <code>gcm-server</code>.</p>
+ <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
</li>
- <li>In a text editor, edit the <code>gcm-demo-appengine/src/com/google/android/gcm/demo/server/ApiKeyInitializer.java</code> and replace the existing text with the API key obtained above.
+ <li>In a text editor, edit <code>samples/gcm-demo-appengine/src/com/google/android/gcm/demo/server/ApiKeyInitializer.java</code> and replace the existing text with the API key obtained above.
<p class="note"><strong>Note:</strong> The API key value set in that class will be used just once to create a persistent entity on App Engine. If you deploy the application, you can use App Engine's <code>Datastore Viewer</code> to change it later.</p>
</li>
- <li>In a shell window, go to the <code>gcm-api-server</code> directory.</li>
+ <li>In a shell window, go to the <code>samples/gcm-demo-appengine</code> directory.</li>
<li>Start the development App Engine server by <code>ant runserver</code>, using the <code>-Dsdk.dir</code> to indicate the location of the App Engine SDK and <code>-Dserver.host</code> to set your server's hostname or IP address:</li>
<pre class="prettyprint">
@@ -163,9 +163,9 @@
<p>To set up the device:</p>
<ol>
<li> From the SDK Manager, install <strong>Extras > Google Cloud Messaging for Android Library</strong>.
- <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, <code>gcm-server</code>, and <code>source.properties</code>.</p>
+ <p>This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
</li>
- <li>Using a text editor, open <code>gcm-demo-client/src/com/google/android/gcm/demo/app/CommonUtilities.java</code> and set the proper values for the <code>SENDER_ID</code> and <code>SERVER_URL</code> constants. For example:</li>
+ <li>Using a text editor, open <code>samples/gcm-demo-client/src/com/google/android/gcm/demo/app/CommonUtilities.java</code> and set the proper values for the <code>SENDER_ID</code> and <code>SERVER_URL</code> constants. For example:</li>
<pre class="prettyprint pretty-java">
static final String SERVER_URL = "http://192.168.1.10:8080/gcm-demo";
diff --git a/docs/html/guide/google/gcm/gcm.jd b/docs/html/guide/google/gcm/gcm.jd
index d871fb4..3884244 100644
--- a/docs/html/guide/google/gcm/gcm.jd
+++ b/docs/html/guide/google/gcm/gcm.jd
@@ -620,7 +620,7 @@
Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
{
- "registration_id" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
+ "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
"data" : {
...
},
@@ -874,7 +874,10 @@
<li>Implement exponential back-off in your retry mechanism. This means an exponentially increasing delay after each failed retry (e.g. if you waited one second before the first retry, wait at least two second before the next one, then 4 seconds and so on). If you're sending multiple messages, delay each one independently by an additional random amount to avoid issuing a new request for all messages at the same time.</li>
</ul>
Senders that cause problems risk being blacklisted.
-<br/>Happens when the HTTP status code is 500 or 503; or when the <code>error</code> field of a JSON object in the <code>results</code> array is <code>Unavailable</code>.
+<br/>Happens when the HTTP status code is 500 or 503, or when the <code>error</code> field of a JSON object in the <code>results</code> array is <code>InternalServerError</code> or <code>Unavailable</code>.</dd>
+
+<dt id="ttl_error"><strong>Invalid Time To Live</strong></dt>
+ <dd>The value for the Time to Live field must be an integer representing a duration in seconds between 0 and 2,419,200 (4 weeks). Happens when error code is <code>InvalidTtl</code>.
</dd>
</dl>
<h4>Example responses</h4>
diff --git a/docs/html/guide/google/gcm/gs.jd b/docs/html/guide/google/gcm/gs.jd
index 5e426c2..8f05d30 100644
--- a/docs/html/guide/google/gcm/gs.jd
+++ b/docs/html/guide/google/gcm/gs.jd
@@ -85,7 +85,7 @@
<p class="note"><strong>Note:</strong> If you need to rotate the key, click <strong>Generate new key</strong>. A new key will be created while the old one will still be active for up to 24 hours. If you want to get rid of the old key immediately (for example, if you feel it was compromised), click <strong>Delete key</strong>.</p>
<h2 id="libs">Install the Helper Libraries</h2>
-<p>To perform the steps described in the following sections, you must first install the helper libraries (reference: <a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">client</a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">server</a>). From the SDK Manager, install <strong>Extras > Google Cloud Messaging for Android Library</strong>. This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-demo-appengine</code>, <code>gcm-demo-client</code>, <code>gcm-demo-server</code>, and <code>gcm-server</code>.</p>
+<p>To perform the steps described in the following sections, you must first install the helper libraries (reference: <a href="{@docRoot}guide/google/gcm/client-javadoc/index.html">client</a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html">server</a>). From the SDK Manager, install <strong>Extras > Google Cloud Messaging for Android Library</strong>. This creates a <code>gcm</code> directory under <code><em>YOUR_SDK_ROOT</em>/extras/google/</code> containing these subdirectories: <code>gcm-client</code>, <code>gcm-server</code>, <code>samples/gcm-demo-client</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
<h2 id="android-app">Writing the Android Application</h2>
<p>This section describes the steps involved in writing an Android application that uses GCM.</p>
<h4>Step 1: Copy the gcm.jar file into your application classpath</h4>
@@ -104,9 +104,16 @@
<p> This permission must be called <code>my_app_package.permission.C2D_MESSAGE</code> (where <code>my_app_package</code> is the package name of your app as defined by the manifest tag), otherwise it will not work.</p>
<p class="note"><strong>Note:</strong> This permission is not required if you are targeting your application to 4.1 or above (i.e., minSdkVersion 16)</p>
- <li>Add the permission to receive GCM messages:</li>
+ <li>Add the following permissions:</li>
-<pre class="prettyprint pretty-xml"><uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /></pre>
+<pre class="prettyprint pretty-xml"><!-- App receives GCM messages. -->
+<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
+<!-- GCM connects to Google Services. -->
+<uses-permission android:name="android.permission.INTERNET" />
+<!-- GCM requires a Google account. -->
+<uses-permission android:name="android.permission.GET_ACCOUNTS" />
+<!-- Keeps the processor from sleeping when a message is received. -->
+<uses-permission android:name="android.permission.WAKE_LOCK" /></pre>
<li>Add the following broadcast receiver:</li>
@@ -127,7 +134,7 @@
<pre class="prettyprint pretty-xml"><service android:name=".GCMIntentService" /></pre>
</ol>
-<p> This intent service will be called by the <code>GCMBroadcastReceiver</code> (which is is provided by GCM library), as shown in the next step. It must be named <code>my_app_package.GCMIntentService</code>, unless you use a subclass of <code>GCMBroadcastReceiver</code> that overrides the method used to name the service.</p>
+<p>This intent service will be called by the <code>GCMBroadcastReceiver</code> (which is is provided by GCM library), as shown in the next step. It must be a subclass of <code>com.google.android.gcm.GCMBaseIntentService</code>, must contain a public constructor, and should be named <code>my_app_package.GCMIntentService</code> (unless you use a subclass of <code>GCMBroadcastReceiver</code> that overrides the method used to name the service).</p>
<h4><br>
Step 3: Write the my_app_package.GCMIntentService class</h4>
<p>Next write the <code>my_app_package.GCMIntentService</code> class, overriding the following callback methods (which are called by <code>GCMBroadcastReceiver</code>):<br>
diff --git a/docs/html/guide/google/gcm/index.jd b/docs/html/guide/google/gcm/index.jd
index cba8d0b..140b076 100644
--- a/docs/html/guide/google/gcm/index.jd
+++ b/docs/html/guide/google/gcm/index.jd
@@ -5,7 +5,7 @@
<p><img src="{@docRoot}images/gcm/gcm-logo.png" /></p>
<p>Google Cloud Messaging for Android (GCM) is a service that helps developers send data from servers to their Android applications on Android devices. This could be a lightweight message telling the Android application that there is new data to be fetched from the server (for instance, a movie uploaded by a friend), or it could be a message containing up to 4kb of payload data (so apps like instant messaging can consume the message directly). The GCM service handles all aspects of queueing of messages and delivery to the target Android application running on the target device.</p>
-<p>To learn more about GCM, read the following documents:</p>
+<p>To learn more about GCM, you can join the <a href="https://groups.google.com/forum/?fromgroups#!forum/android-gcm">android-gcm group</a> and read the following documents:</p>
<dl>
<dt><strong><a href="{@docRoot}guide/google/gcm/gs.html">Getting Started</a></strong></dt>
@@ -23,3 +23,4 @@
<p>GCM also provides helper libraries for <a href="{@docRoot}guide/google/gcm/client-javadoc/index.html"><strong>client</strong></a> and <a href="{@docRoot}guide/google/gcm/server-javadoc/index.html"><strong>server</strong></a> development.</p>
+
diff --git a/docs/html/guide/google/index.jd b/docs/html/guide/google/index.jd
index 2eb8344..e1fc581 100644
--- a/docs/html/guide/google/index.jd
+++ b/docs/html/guide/google/index.jd
@@ -68,7 +68,7 @@
<div class="layout-content-col span-4">
<h4>
Google Cloud Messaging
- </h4><img src="{@docRoot}images/gcm-logo.png" width="150px" style="padding:9px;">
+ </h4><img src="{@docRoot}images/gcm/gcm-logo.png" width="150px" style="padding:9px;">
<p>
Notify your apps of important events with messages that are lightweight and battery-saving.
</p><a href="{@docRoot}guide/google/gcm/index.html">Learn more »</a>
diff --git a/docs/html/guide/google/play/services.jd b/docs/html/guide/google/play/services.jd
index e88d31f..519d78b 100644
--- a/docs/html/guide/google/play/services.jd
+++ b/docs/html/guide/google/play/services.jd
@@ -15,9 +15,8 @@
tedious authentication flows. A few clicks from the user and you're set!
<br /> <a href="https://developers.google.com/android/google-play-services">Learn more »</a>
</li>
- <li style="border-top: 1px solid #F80;"><h5>Google+ Integration</h5>Google Play Services lets you
- read from and write to your user's Google+ activity stream, giving your
- app an easy way to integrate with Google+.
+ <li style="border-top: 1px solid #F80;"><h5>Google+ Integration</h5> Google Play services makes it
+ easy for your app to integrate with Sign in with Google+, +1 button, and Google+ history.
<br /> <a href="https://developers.google.com/android/google-play-services">Learn more »</a>
</li>
</ul>
diff --git a/docs/html/guide/topics/manifest/application-element.jd b/docs/html/guide/topics/manifest/application-element.jd
index df6f61a..8a91ec8 100644
--- a/docs/html/guide/topics/manifest/application-element.jd
+++ b/docs/html/guide/topics/manifest/application-element.jd
@@ -14,6 +14,7 @@
android:<a href="#hwaccel">hardwareAccelerated</a>=["true" | "false"]
android:<a href="#icon">icon</a>="<i>drawable resource</i>"
android:<a href="#killrst">killAfterRestore</a>=["true" | "false"]
+ android:<a href="#largeHeap">largeHeap</a>=["true" | "false"]
android:<a href="#label">label</a>="<i>string resource</i>"
android:<a href="#logo">logo</a>="<i>drawable resource</i>"
android:<a href="#space">manageSpaceActivity</a>="<i>string</i>"
@@ -161,6 +162,19 @@
terminated.
</p></dd>
+<dt><a name="largeHeap"></a>{@code android:largeHeap}</dt>
+<dd>Whether your application's processes should be created with a large Dalvik heap. This applies to
+all processes created for the application. It only applies to the first application loaded into a
+process; if you're using a shared user ID to allow multiple applications to use a process, they all
+must use this option consistently or they will have unpredictable results.
+<p>Most apps should not need this and should instead focus on reducing their overall memory usage for
+improved performance. Enabling this also does not guarantee a fixed increase in available memory,
+because some devices are constrained by their total available memory.</p>
+<p>To query the available memory size at runtime, use the methods {@link
+ android.app.ActivityManager#getMemoryClass()} or {@link
+ android.app.ActivityManager#getLargeMemoryClass()}.</p>
+</dd>
+
<dt><a name="label"></a>{@code android:label}</dt>
<dd>A user-readable label for the application as a whole, and a default
label for each of the application's components. See the individual
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index b1d6827..7999033 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -455,7 +455,7 @@
<p>
In the next snippet, if the user doesn't enter a word, the selection clause is set to
<code>null</code>, and the query returns all the words in the provider. If the user enters
- a word, the selection clause is set to <code>UserDictionary.Words.Word + " = ?"</code> and
+ a word, the selection clause is set to <code>UserDictionary.Words.WORD + " = ?"</code> and
the first element of selection arguments array is set to the word the user enters.
</p>
<pre class="prettyprint">
@@ -477,7 +477,7 @@
} else {
// Constructs a selection clause that matches the word that the user entered.
- mSelectionClause = " = ?";
+ mSelectionClause = UserDictionary.Words.WORD + " = ?";
// Moves the user's input string to the selection arguments.
mSelectionArgs[0] = mSearchString;
diff --git a/docs/html/guide/topics/providers/content-provider-creating.jd b/docs/html/guide/topics/providers/content-provider-creating.jd
index bad5390..ebd7c25 100644
--- a/docs/html/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html/guide/topics/providers/content-provider-creating.jd
@@ -401,7 +401,7 @@
</p>
<p>
The method {@link android.content.UriMatcher#addURI(String, String, int) addURI()} maps an
- authority and path to an integer value. The method android.content.UriMatcher#match(Uri)
+ authority and path to an integer value. The method {@link android.content.UriMatcher#match(Uri)
match()} returns the integer value for a URI. A <code>switch</code> statement
chooses between querying the entire table, and querying for a single record:
</p>
diff --git a/docs/html/guide/topics/text/spell-checker-framework.jd b/docs/html/guide/topics/text/spell-checker-framework.jd
index 05b68907..1c2e211 100644
--- a/docs/html/guide/topics/text/spell-checker-framework.jd
+++ b/docs/html/guide/topics/text/spell-checker-framework.jd
@@ -108,20 +108,23 @@
the current locale and so forth.
</dd>
<dt>
- {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestions(TextInfo, int)
- onGetSuggestions()}
+ {@link android.service.textservice.SpellCheckerService.Session#onGetSentenceSuggestionsMultiple(TextInfo[], int)
+ onGetSentenceSuggestionsMultiple()}
</dt>
<dd>
- Does the actual spell checking. This method returns an object containing
- suggestions for the text passed to it.
+ Does the actual spell checking. This method returns an array of
+ {@link android.view.textservice.SentenceSuggestionsInfo} containing
+ suggestions for the sentences passed to it.
</dd>
</dl>
<p>
Optionally, you can implement
{@link android.service.textservice.SpellCheckerService.Session#onCancel()}, which
- handles requests to cancel spell checking, or
-{@link android.service.textservice.SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)
-onGetSuggestionsMultiple()}, which handles batches of suggestion requests, or both.
+ handles requests to cancel spell checking,
+ {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestions(TextInfo, int)
+ onGetSuggestions()}, which handles a word suggestion request, or
+ {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)
+ onGetSuggestionsMultiple()}, which handles batches of word suggestion requests.
</p>
<p>
See the
@@ -208,7 +211,7 @@
<h2 id="SpellCheckClient">Accessing the Spell Checker Service from a Client</h2>
<p>
Applications that use {@link android.widget.TextView} views automatically benefit from spell
- checking, because {@link android.widget.TextView} automatically uses a spelling checker. The
+ checking, because {@link android.widget.TextView} automatically uses a spelling checker. The
following screenshots show this:
</p>
<img src="{@docRoot}resources/articles/images/textview_spellcheck_screenshot_1.png" alt=""
@@ -224,7 +227,7 @@
The following diagram shows the flow of control for interacting with a spelling checker service:
</p>
<img src="{@docRoot}resources/articles/images/spellcheck_client_flow.png" alt=""
- height="394" id="figure3" />
+ height="393" id="figure3" />
<p class="img-caption">
<strong>Figure 3.</strong> Interacting with a spelling checker service.
</p>
@@ -233,4 +236,4 @@
Spell Checker Client</a> sample app shows how to interact with a spelling checker service. The
LatinIME input method editor in the Android Open Source Project also contains an example of
spell checking.
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd
index 8a65d76..d1c24df 100644
--- a/docs/html/guide/topics/ui/dialogs.jd
+++ b/docs/html/guide/topics/ui/dialogs.jd
@@ -47,7 +47,7 @@
<p>A dialog is usually a small window that appears in front of the current Activity.
The underlying Activity loses focus and the dialog accepts all user interaction. Dialogs are
-normally used for notifications that should interupt the user and to perform short tasks that
+normally used for notifications that should interrupt the user and to perform short tasks that
directly relate to the application in progress (such as a progress bar or a login prompt).</p>
<p>The {@link android.app.Dialog} class is the base class for creating dialogs. However, you
diff --git a/docs/html/guide/topics/ui/drag-drop.jd b/docs/html/guide/topics/ui/drag-drop.jd
index 93753cc..cacdf5c 100644
--- a/docs/html/guide/topics/ui/drag-drop.jd
+++ b/docs/html/guide/topics/ui/drag-drop.jd
@@ -608,7 +608,7 @@
ClipData dragData = new ClipData(v.getTag(),ClipData.MIMETYPE_TEXT_PLAIN,item);
// Instantiates the drag shadow builder.
- View.DrawShadowBuilder myShadow = new MyDragShadowBuilder(imageView);
+ View.DragShadowBuilder myShadow = new MyDragShadowBuilder(imageView);
// Starts the drag
diff --git a/docs/html/images/brand/android_app_on_play_logo_large.png b/docs/html/images/brand/android_app_on_play_logo_large.png
deleted file mode 100644
index a46bf35..0000000
--- a/docs/html/images/brand/android_app_on_play_logo_large.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/android_app_on_play_logo_small.png b/docs/html/images/brand/android_app_on_play_logo_small.png
deleted file mode 100644
index 2d8ef52..0000000
--- a/docs/html/images/brand/android_app_on_play_logo_small.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/get_it_on_play_logo_large.png b/docs/html/images/brand/get_it_on_play_logo_large.png
deleted file mode 100644
index 8b48767f..0000000
--- a/docs/html/images/brand/get_it_on_play_logo_large.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/get_it_on_play_logo_small.png b/docs/html/images/brand/get_it_on_play_logo_small.png
deleted file mode 100644
index 1fcbec8..0000000
--- a/docs/html/images/brand/get_it_on_play_logo_small.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-details-ww-purchase.png b/docs/html/images/gp-details-ww-purchase.png
index 46df443..628fa6b 100644
--- a/docs/html/images/gp-details-ww-purchase.png
+++ b/docs/html/images/gp-details-ww-purchase.png
Binary files differ
diff --git a/docs/html/images/jb-notif-ex.png b/docs/html/images/jb-notif-ex.png
index 477cc45..c1470fe 100644
--- a/docs/html/images/jb-notif-ex.png
+++ b/docs/html/images/jb-notif-ex.png
Binary files differ
diff --git a/docs/html/images/jb-notif-ex1.png b/docs/html/images/jb-notif-ex1.png
new file mode 100644
index 0000000..a960ab9
--- /dev/null
+++ b/docs/html/images/jb-notif-ex1.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 65e52ad..8930c7f 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -14,7 +14,7 @@
<ul>
<li class="item carousel-home">
<div class="content-left col-9">
- <a href="/about/versions/jelly-bean.html"><img src="/images/home/android-jellybean.png" ></a>
+ <a href="{@docRoot}about/versions/jelly-bean.html"><img src="{@docRoot}images/home/android-jellybean.png" ></a>
</div>
<div class="content-right col-6">
<h1>Jelly Bean now available!</h1>
@@ -23,7 +23,7 @@
<p>New APIs are also available that allow you to build richer and more
interactive notifications, transfer larger
payloads through NFC, discover services over Wi-Fi, and much more.</p>
- <p><a href="/about/versions/jelly-bean.html" class="button">More
+ <p><a href="{@docRoot}about/versions/jelly-bean.html" class="button">More
about Jelly Bean</a></p>
</div>
</li>
@@ -35,12 +35,12 @@
<h1>Make your Android apps<br>look great</h1>
<p>New templates in the design guide make it easier than ever to design apps
that are beautiful and easy to use.</p>
- <p><a href="/design/index.html" class="button">Learn More</a></p>
+ <p><a href="{@docRoot}design/index.html" class="button">Learn More</a></p>
</div>
</li>
<li class="item carousel-home">
<div class="content-left col-10">
- <img src="/images/home/google-io.png">
+ <img src="{@docRoot}images/home/google-io.png">
</div>
<div class="content-right col-5">
<h1>Watch Android at <br/>Google I/O!</h1>
@@ -52,7 +52,7 @@
</li>
<li class="item carousel-home">
<div class="content-left col-10">
- <img src="/images/home/google-play.png"
+ <img src="{@docRoot}images/home/google-play.png"
style="margin-top:50px">
</div>
<div class="content-right col-5">
diff --git a/docs/html/intl/ja/guide/basics/what-is-android.jd b/docs/html/intl/ja/guide/basics/what-is-android.jd
index fcf670d..f78b077 100644
--- a/docs/html/intl/ja/guide/basics/what-is-android.jd
+++ b/docs/html/intl/ja/guide/basics/what-is-android.jd
@@ -47,7 +47,7 @@
</ul>
<p>アプリケーションの簡単な説明と詳細については、<a
-href="{@docRoot}resources/tutorials/notepad/index.html">Notepad チュートリアル</a>をご覧ください。</p>
+href="{@docRoot}training/notepad/index.html">Notepad チュートリアル</a>をご覧ください。</p>
<a name="libraries" id="libraries"></a>
<h2>ライブラリ</h2>
diff --git a/docs/html/intl/ja/sdk/1.5_r2/installing.jd b/docs/html/intl/ja/sdk/1.5_r2/installing.jd
index bd464c6..99807e1 100644
--- a/docs/html/intl/ja/sdk/1.5_r2/installing.jd
+++ b/docs/html/intl/ja/sdk/1.5_r2/installing.jd
@@ -167,7 +167,7 @@
<p><strong>サンプル コードの参照</strong></p>
<ul>
<li><a href="{@docRoot}training/basics/firstapp/index.html">Hello World アプリケーション</a>を構築します(特に Eclipse ユーザーにおすすめです)。</li>
- <li><a href="{@docRoot}resources/tutorials/notepad/index.html">Notepad チュートリアル</a>に沿って Android アプリケーションを完全に構築します。 </li>
+ <li><a href="{@docRoot}training/notepad/index.html">Notepad チュートリアル</a>に沿って Android アプリケーションを完全に構築します。 </li>
<li><code><em><sdk></em>/platforms/<em><platfrom></em>/samples</code> に収められている他のサンプル アプリケーションのいずれかを新しいプロジェクトとして作成し、自分の開発環境でコンパイルし、実行します。</li>
</ul>
diff --git a/docs/html/intl/ja/sdk/1.5_r3/installing.jd b/docs/html/intl/ja/sdk/1.5_r3/installing.jd
index bd464c6..99807e1 100644
--- a/docs/html/intl/ja/sdk/1.5_r3/installing.jd
+++ b/docs/html/intl/ja/sdk/1.5_r3/installing.jd
@@ -167,7 +167,7 @@
<p><strong>サンプル コードの参照</strong></p>
<ul>
<li><a href="{@docRoot}training/basics/firstapp/index.html">Hello World アプリケーション</a>を構築します(特に Eclipse ユーザーにおすすめです)。</li>
- <li><a href="{@docRoot}resources/tutorials/notepad/index.html">Notepad チュートリアル</a>に沿って Android アプリケーションを完全に構築します。 </li>
+ <li><a href="{@docRoot}training/notepad/index.html">Notepad チュートリアル</a>に沿って Android アプリケーションを完全に構築します。 </li>
<li><code><em><sdk></em>/platforms/<em><platfrom></em>/samples</code> に収められている他のサンプル アプリケーションのいずれかを新しいプロジェクトとして作成し、自分の開発環境でコンパイルし、実行します。</li>
</ul>
diff --git a/docs/html/resources/articles/images/spellcheck_client_flow.png b/docs/html/resources/articles/images/spellcheck_client_flow.png
index 4e097aa..177ea81 100644
--- a/docs/html/resources/articles/images/spellcheck_client_flow.png
+++ b/docs/html/resources/articles/images/spellcheck_client_flow.png
Binary files differ
diff --git a/docs/html/resources/articles/images/spellcheck_lifecycle.png b/docs/html/resources/articles/images/spellcheck_lifecycle.png
index 0b10824..00bd461 100644
--- a/docs/html/resources/articles/images/spellcheck_lifecycle.png
+++ b/docs/html/resources/articles/images/spellcheck_lifecycle.png
Binary files differ
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 02f8d6e..0038fac 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -50,8 +50,8 @@
<!-- this appears when viewing the online docs -->
<div class="online">
-<a class="big button disabled" id="download-button" href="" >Sorry, the SDK does not support
-your OS</a>
+<a class="big button" id="download-button" href="" style="display:none" ></a>
+<p id="not-supported">Choose the SDK package for your OS from the table below.</p>
<p style="margin-top:20px;font-size:12px"><a href='' onclick="
if ($('.pax').is(':visible')) {
diff --git a/docs/html/sitemap-intl.txt b/docs/html/sitemap-intl.txt
index 9041581..8b13789 100644
--- a/docs/html/sitemap-intl.txt
+++ b/docs/html/sitemap-intl.txt
@@ -1,12 +1 @@
-http://developer.android.com/ja/sdk/1.5_r3/installing.html
-http://developer.android.com/ja/community/index.html
-http://developer.android.com/ja/index.html
-http://developer.android.com/ja/tools/publishing/versioning.html
-http://developer.android.com/ja/tools/publishing/app-signing.html
-http://developer.android.com/ja/tools/publishing/preparing.html
-http://developer.android.com/ja/guide/tutorials/hello-world.html
-http://developer.android.com/ja/guide/components/fundamentals.html
-http://developer.android.com/ja/guide/index.html
-http://developer.android.com/ja/guide/basics/what-is-android.html
-http://developer.android.com/ja/guide/developing/other-ide.html
-http://developer.android.com/ja/guide/developing/eclipse-adt.html
+
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index 548ee2b..f904cb4 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -1,74 +1,218 @@
-http://developer.android.com/
http://developer.android.com/index.html
-http://developer.android.com/sdk/index.html
-http://developer.android.com/guide/index.html
+http://developer.android.com/design/index.html
+http://developer.android.com/develop/index.html
+http://developer.android.com/distribute/index.html
+http://developer.android.com/support.html
+http://developer.android.com/design/style/index.html
+http://developer.android.com/design/patterns/index.html
+http://developer.android.com/design/building-blocks/index.html
+http://developer.android.com/design/downloads/index.html
+http://developer.android.com/training/index.html
+http://developer.android.com/guide/components/index.html
http://developer.android.com/reference/packages.html
-http://developer.android.com/resources/index.html
-http://developer.android.com/videos/index.html
-http://developer.android.com/about/dashboards/index.html
+http://developer.android.com/tools/index.html
+http://developer.android.com/sdk/index.html
+http://developer.android.com/distribute/googleplay/publish/index.html
+http://developer.android.com/distribute/googleplay/promote/index.html
+http://developer.android.com/distribute/open.html
+http://developer.android.com/about/versions/jelly-bean.html
+http://developer.android.com/about/index.html
+http://developer.android.com/legal.html
http://developer.android.com/license.html
-http://developer.android.com/sdk/installing/index.html
-http://developer.android.com/about/versions/android-3.0-highlights.html
-http://developer.android.com/sdk/preview/index.html
-http://developer.android.com/sdk/exploring.html
-http://developer.android.com/about/versions/android-2.3.html
-http://developer.android.com/about/versions/android-2.3-highlights.html
-http://developer.android.com/sdk/api_diff/9/changes.html
-http://developer.android.com/about/versions/android-2.2.html
-http://developer.android.com/about/versions/android-2.1.html
-http://developer.android.com/about/versions/android-1.6.html
-http://developer.android.com/about/versions/android-1.5.html
-http://developer.android.com/about/versions/android-2.0.1.html
-http://developer.android.com/about/versions/android-2.0.html
-http://developer.android.com/about/versions/android-1.1.html
-http://developer.android.com/tools/sdk/tools-notes.html
-http://developer.android.com/sdk/win-usb.html
-http://developer.android.com/sdk/eclipse-adt.html
-http://developer.android.com/sdk/ndk/index.html
-http://developer.android.com/sdk/ndk/overview.html
-http://developer.android.com/tools/extras/oem-usb.html
-http://developer.android.com/sdk/requirements.html
-http://developer.android.com/sdk/older_releases.html
-http://developer.android.com/guide/basics/what-is-android.html
+http://developer.android.com/design/get-started/creative-vision.html
+http://developer.android.com/design/get-started/principles.html
+http://developer.android.com/design/get-started/ui-overview.html
+http://developer.android.com/design/style/devices-displays.html
+http://developer.android.com/design/style/themes.html
+http://developer.android.com/design/style/touch-feedback.html
+http://developer.android.com/design/style/metrics-grids.html
+http://developer.android.com/design/style/typography.html
+http://developer.android.com/design/style/color.html
+http://developer.android.com/design/style/iconography.html
+http://developer.android.com/design/style/writing.html
+http://developer.android.com/design/patterns/new-4-0.html
+http://developer.android.com/design/patterns/gestures.html
+http://developer.android.com/design/patterns/app-structure.html
+http://developer.android.com/design/patterns/navigation.html
+http://developer.android.com/design/patterns/actionbar.html
+http://developer.android.com/design/patterns/multi-pane-layouts.html
+http://developer.android.com/design/patterns/swipe-views.html
+http://developer.android.com/design/patterns/selection.html
+http://developer.android.com/design/patterns/notifications.html
+http://developer.android.com/design/patterns/settings.html
+http://developer.android.com/design/patterns/compatibility.html
+http://developer.android.com/design/patterns/pure-android.html
+http://developer.android.com/design/building-blocks/tabs.html
+http://developer.android.com/design/building-blocks/lists.html
+http://developer.android.com/design/building-blocks/grid-lists.html
+http://developer.android.com/design/building-blocks/scrolling.html
+http://developer.android.com/design/building-blocks/spinners.html
+http://developer.android.com/design/building-blocks/buttons.html
+http://developer.android.com/design/building-blocks/text-fields.html
+http://developer.android.com/design/building-blocks/seek-bars.html
+http://developer.android.com/design/building-blocks/progress.html
+http://developer.android.com/design/building-blocks/switches.html
+http://developer.android.com/design/building-blocks/dialogs.html
+http://developer.android.com/design/building-blocks/pickers.html
+http://developer.android.com/distribute/googleplay/about/visibility.html
+http://developer.android.com/distribute/googleplay/about/monetizing.html
+http://developer.android.com/distribute/googleplay/about/distribution.html
+http://developer.android.com/distribute/googleplay/publish/register.html
+http://developer.android.com/distribute/googleplay/publish/console.html
+http://developer.android.com/distribute/googleplay/publish/preparing.html
+http://developer.android.com/distribute/googleplay/strategies/app-quality.html
+http://developer.android.com/distribute/googleplay/promote/linking.html
+http://developer.android.com/distribute/googleplay/promote/badges.html
+http://developer.android.com/distribute/googleplay/promote/brand.html
+http://developer.android.com/reference/android/support/v4/app/DialogFragment.html
+http://developer.android.com/guide/google/play/billing/index.html
+http://developer.android.com/guide/topics/providers/contacts-provider.html
+http://developer.android.com/training/efficient-downloads/index.html
+http://developer.android.com/training/backward-compatible-ui/index.html
+http://developer.android.com/training/basics/firstapp/index.html
+http://developer.android.com/training/basics/firstapp/creating-project.html
+http://developer.android.com/training/basics/firstapp/running-app.html
+http://developer.android.com/training/basics/firstapp/building-ui.html
+http://developer.android.com/training/basics/firstapp/starting-activity.html
+http://developer.android.com/training/basics/activity-lifecycle/index.html
+http://developer.android.com/training/basics/activity-lifecycle/starting.html
+http://developer.android.com/training/basics/activity-lifecycle/pausing.html
+http://developer.android.com/training/basics/activity-lifecycle/stopping.html
+http://developer.android.com/training/basics/activity-lifecycle/recreating.html
+http://developer.android.com/training/basics/supporting-devices/index.html
+http://developer.android.com/training/basics/supporting-devices/languages.html
+http://developer.android.com/training/basics/supporting-devices/screens.html
+http://developer.android.com/training/basics/supporting-devices/platforms.html
+http://developer.android.com/training/basics/fragments/index.html
+http://developer.android.com/training/basics/fragments/support-lib.html
+http://developer.android.com/training/basics/fragments/creating.html
+http://developer.android.com/training/basics/fragments/fragment-ui.html
+http://developer.android.com/training/basics/fragments/communicating.html
+http://developer.android.com/training/basics/intents/index.html
+http://developer.android.com/training/basics/intents/sending.html
+http://developer.android.com/training/basics/intents/result.html
+http://developer.android.com/training/basics/intents/filters.html
+http://developer.android.com/training/advanced.html
+http://developer.android.com/training/basics/location/index.html
+http://developer.android.com/training/basics/location/locationmanager.html
+http://developer.android.com/training/basics/location/currentlocation.html
+http://developer.android.com/training/basics/location/geocoding.html
+http://developer.android.com/training/basics/network-ops/index.html
+http://developer.android.com/training/basics/network-ops/connecting.html
+http://developer.android.com/training/basics/network-ops/managing.html
+http://developer.android.com/training/basics/network-ops/xml.html
+http://developer.android.com/training/efficient-downloads/efficient-network-access.html
+http://developer.android.com/training/efficient-downloads/regular_updates.html
+http://developer.android.com/training/efficient-downloads/redundant_redundant.html
+http://developer.android.com/training/efficient-downloads/connectivity_patterns.html
+http://developer.android.com/training/cloudsync/index.html
+http://developer.android.com/training/cloudsync/aesync.html
+http://developer.android.com/training/cloudsync/backupapi.html
+http://developer.android.com/training/multiscreen/index.html
+http://developer.android.com/training/multiscreen/screensizes.html
+http://developer.android.com/training/multiscreen/screendensities.html
+http://developer.android.com/training/multiscreen/adaptui.html
+http://developer.android.com/training/improving-layouts/index.html
+http://developer.android.com/training/improving-layouts/optimizing-layout.html
+http://developer.android.com/training/improving-layouts/reusing-layouts.html
+http://developer.android.com/training/improving-layouts/loading-ondemand.html
+http://developer.android.com/training/improving-layouts/smooth-scrolling.html
+http://developer.android.com/training/managing-audio/index.html
+http://developer.android.com/training/managing-audio/volume-playback.html
+http://developer.android.com/training/managing-audio/audio-focus.html
+http://developer.android.com/training/managing-audio/audio-output.html
+http://developer.android.com/training/monitoring-device-state/index.html
+http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
+http://developer.android.com/training/monitoring-device-state/docking-monitoring.html
+http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
+http://developer.android.com/training/monitoring-device-state/manifest-receivers.html
+http://developer.android.com/training/custom-views/index.html
+http://developer.android.com/training/custom-views/create-view.html
+http://developer.android.com/training/custom-views/custom-drawing.html
+http://developer.android.com/training/custom-views/making-interactive.html
+http://developer.android.com/training/custom-views/optimizing-view.html
+http://developer.android.com/training/search/index.html
+http://developer.android.com/training/search/setup.html
+http://developer.android.com/training/search/search.html
+http://developer.android.com/training/search/backward-compat.html
+http://developer.android.com/training/id-auth/index.html
+http://developer.android.com/training/id-auth/identify.html
+http://developer.android.com/training/id-auth/authenticate.html
+http://developer.android.com/training/id-auth/custom_auth.html
+http://developer.android.com/training/sharing/index.html
+http://developer.android.com/training/sharing/send.html
+http://developer.android.com/training/sharing/receive.html
+http://developer.android.com/training/sharing/shareaction.html
+http://developer.android.com/training/camera/index.html
+http://developer.android.com/training/camera/photobasics.html
+http://developer.android.com/training/camera/videobasics.html
+http://developer.android.com/training/camera/cameradirect.html
+http://developer.android.com/training/multiple-apks/index.html
+http://developer.android.com/training/multiple-apks/api.html
+http://developer.android.com/training/multiple-apks/screensize.html
+http://developer.android.com/training/multiple-apks/texture.html
+http://developer.android.com/training/multiple-apks/multiple.html
+http://developer.android.com/training/backward-compatible-ui/abstracting.html
+http://developer.android.com/training/backward-compatible-ui/new-implementation.html
+http://developer.android.com/training/backward-compatible-ui/older-implementation.html
+http://developer.android.com/training/backward-compatible-ui/using-component.html
+http://developer.android.com/training/enterprise/index.html
+http://developer.android.com/training/enterprise/device-management-policy.html
+http://developer.android.com/training/monetization/index.html
+http://developer.android.com/training/monetization/ads-and-ux.html
+http://developer.android.com/training/design-navigation/index.html
+http://developer.android.com/training/design-navigation/screen-planning.html
+http://developer.android.com/training/design-navigation/multiple-sizes.html
+http://developer.android.com/training/design-navigation/descendant-lateral.html
+http://developer.android.com/training/design-navigation/ancestral-temporal.html
+http://developer.android.com/training/design-navigation/wireframing.html
+http://developer.android.com/training/implementing-navigation/index.html
+http://developer.android.com/training/implementing-navigation/lateral.html
+http://developer.android.com/training/implementing-navigation/ancestral.html
+http://developer.android.com/training/implementing-navigation/temporal.html
+http://developer.android.com/training/implementing-navigation/descendant.html
+http://developer.android.com/training/tv/index.html
+http://developer.android.com/training/tv/optimizing-layouts-tv.html
+http://developer.android.com/training/tv/optimizing-navigation-tv.html
+http://developer.android.com/training/tv/unsupported-features-tv.html
+http://developer.android.com/training/displaying-bitmaps/index.html
+http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
+http://developer.android.com/training/displaying-bitmaps/process-bitmap.html
+http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
+http://developer.android.com/training/displaying-bitmaps/display-bitmap.html
+http://developer.android.com/training/accessibility/index.html
+http://developer.android.com/training/accessibility/accessible-app.html
+http://developer.android.com/training/accessibility/service.html
+http://developer.android.com/training/graphics/opengl/index.html
+http://developer.android.com/training/graphics/opengl/environment.html
+http://developer.android.com/training/graphics/opengl/shapes.html
+http://developer.android.com/training/graphics/opengl/draw.html
+http://developer.android.com/training/graphics/opengl/projection.html
+http://developer.android.com/training/graphics/opengl/motion.html
+http://developer.android.com/training/graphics/opengl/touch.html
http://developer.android.com/guide/components/fundamentals.html
-http://developer.android.com/guide/topics/ui/index.html
-http://developer.android.com/guide/topics/ui/declaring-layout.html
-http://developer.android.com/guide/topics/ui/menus.html
-http://developer.android.com/guide/topics/ui/dialogs.html
-http://developer.android.com/guide/topics/ui/ui-events.html
-http://developer.android.com/guide/topics/ui/notifiers/index.html
-http://developer.android.com/guide/topics/ui/notifiers/toasts.html
-http://developer.android.com/guide/topics/ui/notifiers/notifications.html
-http://developer.android.com/guide/topics/ui/themes.html
-http://developer.android.com/guide/topics/ui/custom-components.html
-http://developer.android.com/guide/topics/ui/binding.html
-http://developer.android.com/guide/topics/ui/layout-objects.html
-http://developer.android.com/guide/topics/ui/how-android-draws.html
-http://developer.android.com/guide/topics/resources/index.html
-http://developer.android.com/guide/topics/resources/providing-resources.html
-http://developer.android.com/guide/topics/resources/accessing-resources.html
-http://developer.android.com/guide/topics/resources/runtime-changes.html
-http://developer.android.com/guide/topics/resources/localization.html
-http://developer.android.com/guide/topics/resources/available-resources.html
-http://developer.android.com/guide/topics/resources/animation-resource.html
-http://developer.android.com/guide/topics/resources/color-list-resource.html
-http://developer.android.com/guide/topics/resources/drawable-resource.html
-http://developer.android.com/guide/topics/resources/layout-resource.html
-http://developer.android.com/guide/topics/resources/menu-resource.html
-http://developer.android.com/guide/topics/resources/string-resource.html
-http://developer.android.com/guide/topics/resources/style-resource.html
-http://developer.android.com/guide/topics/resources/more-resources.html
-http://developer.android.com/guide/components/intents-filters.html
-http://developer.android.com/guide/topics/data/data-storage.html
-http://developer.android.com/guide/topics/data/backup.html
+http://developer.android.com/guide/components/activities.html
+http://developer.android.com/guide/components/fragments.html
+http://developer.android.com/guide/components/loaders.html
+http://developer.android.com/guide/components/tasks-and-back-stack.html
+http://developer.android.com/guide/components/services.html
+http://developer.android.com/guide/components/bound-services.html
+http://developer.android.com/guide/components/aidl.html
http://developer.android.com/guide/topics/providers/content-providers.html
-http://developer.android.com/guide/topics/security/security.html
+http://developer.android.com/guide/topics/providers/content-provider-basics.html
+http://developer.android.com/guide/topics/providers/content-provider-creating.html
+http://developer.android.com/guide/topics/providers/calendar-provider.html
+http://developer.android.com/guide/components/intents-filters.html
+http://developer.android.com/guide/components/processes-and-threads.html
+http://developer.android.com/guide/topics/security/permissions.html
+http://developer.android.com/guide/topics/appwidgets/index.html
http://developer.android.com/guide/topics/manifest/manifest-intro.html
http://developer.android.com/guide/topics/manifest/action-element.html
http://developer.android.com/guide/topics/manifest/activity-element.html
http://developer.android.com/guide/topics/manifest/activity-alias-element.html
http://developer.android.com/guide/topics/manifest/application-element.html
http://developer.android.com/guide/topics/manifest/category-element.html
+http://developer.android.com/guide/topics/manifest/compatible-screens-element.html
http://developer.android.com/guide/topics/manifest/data-element.html
http://developer.android.com/guide/topics/manifest/grant-uri-permission-element.html
http://developer.android.com/guide/topics/manifest/instrumentation-element.html
@@ -82,175 +226,150 @@
http://developer.android.com/guide/topics/manifest/provider-element.html
http://developer.android.com/guide/topics/manifest/receiver-element.html
http://developer.android.com/guide/topics/manifest/service-element.html
+http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
http://developer.android.com/guide/topics/manifest/uses-configuration-element.html
http://developer.android.com/guide/topics/manifest/uses-feature-element.html
http://developer.android.com/guide/topics/manifest/uses-library-element.html
http://developer.android.com/guide/topics/manifest/uses-permission-element.html
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
-http://developer.android.com/guide/topics/graphics/index.html
-http://developer.android.com/guide/topics/graphics/2d-graphics.html
-http://developer.android.com/guide/topics/graphics/opengl.html
-http://developer.android.com/guide/topics/media/index.html
-http://developer.android.com/guide/topics/location/index.html
-http://developer.android.com/guide/topics/location/strategies.html
-http://developer.android.com/guide/topics/appwidgets/index.html
-http://developer.android.com/guide/topics/connectivity/bluetooth.html
+http://developer.android.com/guide/topics/ui/index.html
+http://developer.android.com/guide/topics/ui/overview.html
+http://developer.android.com/guide/topics/ui/declaring-layout.html
+http://developer.android.com/guide/topics/ui/layout/linear.html
+http://developer.android.com/guide/topics/ui/layout/relative.html
+http://developer.android.com/guide/topics/ui/layout/listview.html
+http://developer.android.com/guide/topics/ui/layout/gridview.html
+http://developer.android.com/guide/topics/ui/controls.html
+http://developer.android.com/guide/topics/ui/controls/button.html
+http://developer.android.com/guide/topics/ui/controls/text.html
+http://developer.android.com/guide/topics/ui/controls/checkbox.html
+http://developer.android.com/guide/topics/ui/controls/radiobutton.html
+http://developer.android.com/guide/topics/ui/controls/togglebutton.html
+http://developer.android.com/guide/topics/ui/controls/spinner.html
+http://developer.android.com/guide/topics/ui/controls/pickers.html
+http://developer.android.com/guide/topics/ui/ui-events.html
+http://developer.android.com/guide/topics/ui/menus.html
+http://developer.android.com/guide/topics/ui/dialogs.html
+http://developer.android.com/guide/topics/ui/actionbar.html
+http://developer.android.com/guide/topics/ui/notifiers/index.html
+http://developer.android.com/guide/topics/ui/notifiers/toasts.html
+http://developer.android.com/guide/topics/ui/notifiers/notifications.html
http://developer.android.com/guide/topics/search/index.html
http://developer.android.com/guide/topics/search/search-dialog.html
http://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html
http://developer.android.com/guide/topics/search/adding-custom-suggestions.html
http://developer.android.com/guide/topics/search/searchable-config.html
+http://developer.android.com/guide/topics/ui/drag-drop.html
+http://developer.android.com/guide/topics/ui/accessibility/index.html
+http://developer.android.com/guide/topics/ui/accessibility/apps.html
+http://developer.android.com/guide/topics/ui/accessibility/services.html
+http://developer.android.com/guide/topics/ui/themes.html
+http://developer.android.com/guide/topics/ui/custom-components.html
+http://developer.android.com/guide/topics/resources/index.html
+http://developer.android.com/guide/topics/resources/overview.html
+http://developer.android.com/guide/topics/resources/providing-resources.html
+http://developer.android.com/guide/topics/resources/accessing-resources.html
+http://developer.android.com/guide/topics/resources/runtime-changes.html
+http://developer.android.com/guide/topics/resources/localization.html
+http://developer.android.com/guide/topics/resources/available-resources.html
+http://developer.android.com/guide/topics/resources/animation-resource.html
+http://developer.android.com/guide/topics/resources/color-list-resource.html
+http://developer.android.com/guide/topics/resources/drawable-resource.html
+http://developer.android.com/guide/topics/resources/layout-resource.html
+http://developer.android.com/guide/topics/resources/menu-resource.html
+http://developer.android.com/guide/topics/resources/string-resource.html
+http://developer.android.com/guide/topics/resources/style-resource.html
+http://developer.android.com/guide/topics/resources/more-resources.html
+http://developer.android.com/guide/topics/graphics/index.html
+http://developer.android.com/guide/topics/graphics/overview.html
+http://developer.android.com/guide/topics/graphics/prop-animation.html
+http://developer.android.com/guide/topics/graphics/view-animation.html
+http://developer.android.com/guide/topics/graphics/drawable-animation.html
+http://developer.android.com/guide/topics/graphics/2d-graphics.html
+http://developer.android.com/guide/topics/graphics/opengl.html
+http://developer.android.com/guide/topics/graphics/hardware-accel.html
+http://developer.android.com/guide/topics/renderscript/index.html
+http://developer.android.com/guide/topics/renderscript/compute.html
+http://developer.android.com/guide/topics/renderscript/advanced.html
+http://developer.android.com/guide/topics/renderscript/reference.html
+http://developer.android.com/guide/topics/media/index.html
+http://developer.android.com/guide/topics/media/mediaplayer.html
+http://developer.android.com/guide/appendix/media-formats.html
+http://developer.android.com/guide/topics/media/audio-capture.html
+http://developer.android.com/guide/topics/media/jetplayer.html
+http://developer.android.com/guide/topics/media/camera.html
+http://developer.android.com/guide/topics/sensors/index.html
+http://developer.android.com/guide/topics/location/index.html
+http://developer.android.com/guide/topics/location/strategies.html
+http://developer.android.com/guide/topics/sensors/sensors_overview.html
+http://developer.android.com/guide/topics/sensors/sensors_motion.html
+http://developer.android.com/guide/topics/sensors/sensors_position.html
+http://developer.android.com/guide/topics/sensors/sensors_environment.html
+http://developer.android.com/guide/topics/connectivity/index.html
+http://developer.android.com/guide/topics/connectivity/bluetooth.html
+http://developer.android.com/guide/topics/connectivity/nfc/index.html
+http://developer.android.com/guide/topics/connectivity/nfc/nfc.html
+http://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html
+http://developer.android.com/guide/topics/connectivity/wifip2p.html
+http://developer.android.com/guide/topics/connectivity/usb/index.html
+http://developer.android.com/guide/topics/connectivity/usb/accessory.html
+http://developer.android.com/guide/topics/connectivity/usb/host.html
+http://developer.android.com/guide/topics/connectivity/sip.html
+http://developer.android.com/guide/topics/text/index.html
+http://developer.android.com/guide/topics/text/copy-paste.html
+http://developer.android.com/guide/topics/text/creating-input-method.html
+http://developer.android.com/guide/topics/text/spell-checker-framework.html
+http://developer.android.com/guide/topics/data/index.html
+http://developer.android.com/guide/topics/data/data-storage.html
+http://developer.android.com/guide/topics/data/backup.html
+http://developer.android.com/guide/topics/data/install-location.html
+http://developer.android.com/guide/topics/admin/index.html
http://developer.android.com/guide/topics/admin/device-admin.html
-http://developer.android.com/tools/testing/index.html
-http://developer.android.com/tools/testing/testing_android.html
-http://developer.android.com/tools/testing/activity_testing.html
-http://developer.android.com/tools/testing/contentprovider_testing.html
-http://developer.android.com/tools/testing/service_testing.html
-http://developer.android.com/tools/testing/what_to_test.html
-http://developer.android.com/guide/google/play/licensing/index.html
-http://developer.android.com/guide/google/play/billing/index.html
-http://developer.android.com/guide/google/play/billing/billing_about.html
-http://developer.android.com/guide/google/play/billing/billing_overview.html
-http://developer.android.com/guide/google/play/billing/billing_integrate.html
-http://developer.android.com/guide/google/play/billing/billing_best_practices.html
-http://developer.android.com/guide/google/play/billing/billing_testing.html
-http://developer.android.com/guide/google/play/billing/billing_admin.html
-http://developer.android.com/guide/google/play/billing/billing_reference.html
-http://developer.android.com/guide/google/play/filters.html
-http://developer.android.com/guide/developing/eclipse-adt.html
-http://developer.android.com/guide/developing/other-ide.html
-http://developer.android.com/tools/device.html
-http://developer.android.com/guide/developing/debug-tasks.html
-http://developer.android.com/tools/testing/index.html
-http://developer.android.com/tools/testing/testing_eclipse.html
-http://developer.android.com/tools/testing/testing_otheride.html
-http://developer.android.com/tools/index.html
-http://developer.android.com/tools/aapt.html
-http://developer.android.com/tools/help/adb.html
-http://developer.android.com/tools/othertools.html
-http://developer.android.com/guide/components/aidl.html
-http://developer.android.com/tools/avd.html
-http://developer.android.com/tools/bmgr.html
-http://developer.android.com/tools/ddms.html
-http://developer.android.com/tools/draw9patch.html
-http://developer.android.com/tools/help/emulator.html
-http://developer.android.com/tools/hierarchy-viewer.html
-http://developer.android.com/tools/help/layoutopt.html
-http://developer.android.com/tools/monkey.html
-http://developer.android.com/tools/monkeyrunner_concepts.html
-http://developer.android.com/tools/MonkeyDevice.html
-http://developer.android.com/tools/MonkeyImage.html
-http://developer.android.com/tools/MonkeyRunner.html
-http://developer.android.com/tools/proguard.html
-http://developer.android.com/tools/traceview.html
-http://developer.android.com/tools/zipalign.html
-http://developer.android.com/tools/publishing/app-signing.html
-http://developer.android.com/tools/publishing/versioning.html
-http://developer.android.com/tools/publishing/preparing.html
-http://developer.android.com/tools/publishing/publishing.html
-http://developer.android.com/guide/practices/compatibility.html
-http://developer.android.com/guide/practices/screens_support.html
-http://developer.android.com/guide/practices/ui_guidelines/index.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_dialog.html
-http://developer.android.com/guide/practices/ui_guidelines/icon_design_list.html
-http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
-http://developer.android.com/guide/practices/performance.html
-http://developer.android.com/guide/practices/responsiveness.html
-http://developer.android.com/guide/practices/seamlessness.html
http://developer.android.com/guide/webapps/index.html
+http://developer.android.com/guide/webapps/overview.html
http://developer.android.com/guide/webapps/targeting.html
http://developer.android.com/guide/webapps/webview.html
http://developer.android.com/guide/webapps/debugging.html
http://developer.android.com/guide/webapps/best-practices.html
-http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels
-http://developer.android.com/guide/appendix/install-location.html
-http://developer.android.com/guide/appendix/media-formats.html
-http://developer.android.com/guide/appendix/g-app-intents.html
-http://developer.android.com/guide/appendix/glossary.html
-http://developer.android.com/resources/community-groups.html
-http://developer.android.com/resources/community-more.html
-http://developer.android.com/resources/dashboard/screens.html
-http://developer.android.com/resources/articles/index.html
-http://developer.android.com/resources/articles/avoiding-memory-leaks.html
-http://developer.android.com/resources/articles/backward-compatibility.html
-http://developer.android.com/resources/articles/can-i-use-this-intent.html
-http://developer.android.com/resources/articles/creating-input-method.html
-http://developer.android.com/resources/articles/drawable-mutations.html
-http://developer.android.com/resources/articles/faster-screen-orientation-change.html
-http://developer.android.com/resources/articles/future-proofing.html
-http://developer.android.com/resources/articles/gestures.html
-http://developer.android.com/resources/articles/glsurfaceview.html
-http://developer.android.com/resources/articles/layout-tricks-reuse.html
-http://developer.android.com/resources/articles/layout-tricks-efficiency.html
-http://developer.android.com/resources/articles/layout-tricks-stubs.html
-http://developer.android.com/resources/articles/layout-tricks-merge.html
-http://developer.android.com/resources/articles/listview-backgrounds.html
-http://developer.android.com/resources/articles/live-folders.html
-http://developer.android.com/resources/articles/live-wallpapers.html
-http://developer.android.com/resources/articles/on-screen-inputs.html
-http://developer.android.com/resources/articles/painless-threading.html
-http://developer.android.com/resources/articles/qsb.html
-http://developer.android.com/resources/articles/speech-input.html
-http://developer.android.com/resources/articles/touch-mode.html
-http://developer.android.com/resources/articles/track-mem.html
-http://developer.android.com/resources/articles/ui-1.5.html
-http://developer.android.com/resources/articles/ui-1.6.html
-http://developer.android.com/resources/articles/timed-ui-updates.html
-http://developer.android.com/resources/articles/tts.html
-http://developer.android.com/resources/articles/contacts.html
-http://developer.android.com/resources/articles/using-webviews.html
-http://developer.android.com/resources/articles/wikinotes-linkify.html
-http://developer.android.com/resources/articles/wikinotes-intents.html
-http://developer.android.com/resources/articles/window-bg-speed.html
-http://developer.android.com/resources/articles/zipalign.html
-http://developer.android.com/training/basics/firstapp/index.html
-http://developer.android.com/resources/tutorials/views/index.html
-http://developer.android.com/resources/tutorials/localization/index.html
-http://developer.android.com/resources/tutorials/testing/helloandroid_test.html
-http://developer.android.com/resources/tutorials/notepad/index.html
-http://developer.android.com/tools/testing/activity_test.html
-http://developer.android.com/resources/samples/get.html
-http://developer.android.com/resources/samples/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/index.html
-http://developer.android.com/resources/samples/AccessibilityService/index.html
-http://developer.android.com/resources/samples/ApiDemos/index.html
-http://developer.android.com/resources/samples/BackupRestore/index.html
-http://developer.android.com/resources/samples/BluetoothChat/index.html
-http://developer.android.com/resources/samples/BusinessCard/index.html
-http://developer.android.com/resources/samples/ContactManager/index.html
-http://developer.android.com/resources/samples/Home/index.html
-http://developer.android.com/resources/samples/JetBoy/index.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/index.html
-http://developer.android.com/resources/samples/LunarLander/index.html
-http://developer.android.com/resources/samples/MultiResolution/index.html
-http://developer.android.com/resources/samples/NotePad/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/index.html
-http://developer.android.com/resources/samples/SipDemo/index.html
-http://developer.android.com/resources/samples/Snake/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/index.html
-http://developer.android.com/resources/samples/Spinner/index.html
-http://developer.android.com/resources/samples/SpinnerTest/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/index.html
-http://developer.android.com/resources/samples/TicTacToeMain/index.html
-http://developer.android.com/resources/samples/Wiktionary/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/index.html
-http://developer.android.com/resources/faq/commontasks.html
-http://developer.android.com/resources/faq/troubleshooting.html
-http://developer.android.com/resources/faq/index.html
-http://developer.android.com/resources/faq/framework.html
-http://developer.android.com/resources/faq/licensingandoss.html
-http://developer.android.com/resources/faq/security.html
-http://developer.android.com/reference/classes.html
+http://developer.android.com/guide/practices/index.html
+http://developer.android.com/guide/practices/compatibility.html
+http://developer.android.com/guide/practices/screens_support.html
+http://developer.android.com/guide/practices/screens-distribution.html
+http://developer.android.com/guide/practices/screen-compat-mode.html
+http://developer.android.com/guide/practices/tablets-and-handsets.html
+http://developer.android.com/guide/practices/performance.html
+http://developer.android.com/guide/practices/jni.html
+http://developer.android.com/guide/practices/responsiveness.html
+http://developer.android.com/guide/practices/seamlessness.html
+http://developer.android.com/guide/practices/security.html
+http://developer.android.com/guide/google/index.html
+http://developer.android.com/guide/google/play/billing/billing_overview.html
+http://developer.android.com/guide/google/play/billing/billing_integrate.html
+http://developer.android.com/guide/google/play/billing/billing_subscriptions.html
+http://developer.android.com/guide/google/play/billing/billing_best_practices.html
+http://developer.android.com/guide/google/play/billing/billing_testing.html
+http://developer.android.com/guide/google/play/billing/billing_admin.html
+http://developer.android.com/guide/google/play/billing/billing_reference.html
+http://developer.android.com/guide/google/play/licensing/index.html
+http://developer.android.com/guide/google/play/licensing/overview.html
+http://developer.android.com/guide/google/play/licensing/setting-up.html
+http://developer.android.com/guide/google/play/licensing/adding-licensing.html
+http://developer.android.com/guide/google/play/licensing/licensing-reference.html
+http://developer.android.com/guide/google/play/services.html
+http://developer.android.com/guide/google/play/filters.html
+http://developer.android.com/guide/google/play/publishing/multiple-apks.html
+http://developer.android.com/guide/google/play/expansion-files.html
+http://developer.android.com/guide/google/gcm/index.html
+http://developer.android.com/guide/google/gcm/gs.html
+http://developer.android.com/guide/google/gcm/gcm.html
+http://developer.android.com/guide/google/gcm/demo.html
+http://developer.android.com/guide/google/gcm/adv.html
+http://developer.android.com/guide/google/gcm/c2dm.html
http://developer.android.com/reference/android/package-summary.html
http://developer.android.com/reference/android/accessibilityservice/package-summary.html
http://developer.android.com/reference/android/accounts/package-summary.html
+http://developer.android.com/reference/android/animation/package-summary.html
http://developer.android.com/reference/android/app/package-summary.html
http://developer.android.com/reference/android/app/admin/package-summary.html
http://developer.android.com/reference/android/app/backup/package-summary.html
@@ -261,29 +380,55 @@
http://developer.android.com/reference/android/content/res/package-summary.html
http://developer.android.com/reference/android/database/package-summary.html
http://developer.android.com/reference/android/database/sqlite/package-summary.html
+http://developer.android.com/reference/android/drm/package-summary.html
http://developer.android.com/reference/android/gesture/package-summary.html
http://developer.android.com/reference/android/graphics/package-summary.html
http://developer.android.com/reference/android/graphics/drawable/package-summary.html
http://developer.android.com/reference/android/graphics/drawable/shapes/package-summary.html
http://developer.android.com/reference/android/hardware/package-summary.html
+http://developer.android.com/reference/android/hardware/input/package-summary.html
+http://developer.android.com/reference/android/hardware/usb/package-summary.html
http://developer.android.com/reference/android/inputmethodservice/package-summary.html
http://developer.android.com/reference/android/location/package-summary.html
http://developer.android.com/reference/android/media/package-summary.html
http://developer.android.com/reference/android/media/audiofx/package-summary.html
+http://developer.android.com/reference/android/media/effect/package-summary.html
+http://developer.android.com/reference/android/mtp/package-summary.html
http://developer.android.com/reference/android/net/package-summary.html
http://developer.android.com/reference/android/net/http/package-summary.html
+http://developer.android.com/reference/android/net/nsd/package-summary.html
+http://developer.android.com/reference/android/net/rtp/package-summary.html
http://developer.android.com/reference/android/net/sip/package-summary.html
http://developer.android.com/reference/android/net/wifi/package-summary.html
+http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/package-summary.html
http://developer.android.com/reference/android/nfc/package-summary.html
+http://developer.android.com/reference/android/nfc/tech/package-summary.html
http://developer.android.com/reference/android/opengl/package-summary.html
http://developer.android.com/reference/android/os/package-summary.html
http://developer.android.com/reference/android/os/storage/package-summary.html
http://developer.android.com/reference/android/preference/package-summary.html
http://developer.android.com/reference/android/provider/package-summary.html
+http://developer.android.com/reference/android/renderscript/package-summary.html
http://developer.android.com/reference/android/sax/package-summary.html
+http://developer.android.com/reference/android/security/package-summary.html
+http://developer.android.com/reference/android/service/textservice/package-summary.html
http://developer.android.com/reference/android/service/wallpaper/package-summary.html
http://developer.android.com/reference/android/speech/package-summary.html
http://developer.android.com/reference/android/speech/tts/package-summary.html
+http://developer.android.com/reference/android/support/v13/app/package-summary.html
+http://developer.android.com/reference/android/support/v13/dreams/package-summary.html
+http://developer.android.com/reference/android/support/v4/accessibilityservice/package-summary.html
+http://developer.android.com/reference/android/support/v4/app/package-summary.html
+http://developer.android.com/reference/android/support/v4/content/package-summary.html
+http://developer.android.com/reference/android/support/v4/content/pm/package-summary.html
+http://developer.android.com/reference/android/support/v4/database/package-summary.html
+http://developer.android.com/reference/android/support/v4/net/package-summary.html
+http://developer.android.com/reference/android/support/v4/os/package-summary.html
+http://developer.android.com/reference/android/support/v4/util/package-summary.html
+http://developer.android.com/reference/android/support/v4/view/package-summary.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/package-summary.html
+http://developer.android.com/reference/android/support/v4/widget/package-summary.html
http://developer.android.com/reference/android/telephony/package-summary.html
http://developer.android.com/reference/android/telephony/cdma/package-summary.html
http://developer.android.com/reference/android/telephony/gsm/package-summary.html
@@ -300,6 +445,7 @@
http://developer.android.com/reference/android/view/accessibility/package-summary.html
http://developer.android.com/reference/android/view/animation/package-summary.html
http://developer.android.com/reference/android/view/inputmethod/package-summary.html
+http://developer.android.com/reference/android/view/textservice/package-summary.html
http://developer.android.com/reference/android/webkit/package-summary.html
http://developer.android.com/reference/android/widget/package-summary.html
http://developer.android.com/reference/dalvik/bytecode/package-summary.html
@@ -398,188 +544,161 @@
http://developer.android.com/reference/org/xml/sax/helpers/package-summary.html
http://developer.android.com/reference/org/xmlpull/v1/package-summary.html
http://developer.android.com/reference/org/xmlpull/v1/sax2/package-summary.html
+http://developer.android.com/reference/classes.html
+http://developer.android.com/reference/android/animation/TypeEvaluator.html
+http://developer.android.com/guide/topics/graphics/renderscript.html
+http://developer.android.com/tools/testing/index.html
http://developer.android.com/reference/java/lang/ref/ReferenceQueue.html
http://developer.android.com/reference/org/apache/http/message/AbstractHttpMessage.html
-http://developer.android.com/reference/android/app/NativeActivity.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.html
-http://developer.android.com/reference/android/graphics/Bitmap.html
-http://developer.android.com/sdk/api_diff/3/changes.html
-http://developer.android.com/about/versions/android-1.5-highlights.html
-http://developer.android.com/reference/android/widget/SlidingDrawer.html
-http://developer.android.com/reference/android/widget/HorizontalScrollView.html
-http://developer.android.com/reference/android/provider/LiveFolders.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
-http://developer.android.com/reference/android/speech/RecognizerIntent.html
-http://developer.android.com/reference/android/hardware/SensorManager.html
-http://developer.android.com/sdk/api_diff/6/changes.html
-http://developer.android.com/about/versions/android-2.0-highlights.html
-http://developer.android.com/reference/android/widget/QuickContactBadge.html
-http://developer.android.com/reference/android/content/Intent.html
-http://developer.android.com/reference/android/content/Context.html
-http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html
-http://developer.android.com/reference/android/app/Activity.html
-http://developer.android.com/reference/android/provider/Contacts.html
-http://developer.android.com/sdk/api_diff/5/changes.html
-http://developer.android.com/reference/android/view/KeyEvent.html
-http://developer.android.com/reference/android/preference/Preference.html
-http://developer.android.com/reference/android/app/backup/BackupAgentHelper.html
-http://developer.android.com/sdk/api_diff/9/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/changes-summary.html
-http://developer.android.com/reference/android/widget/AdapterView.html
-http://developer.android.com/reference/android/widget/EditText.html
-http://developer.android.com/reference/android/widget/LinearLayout.html
-http://developer.android.com/reference/android/widget/ImageButton.html
-http://developer.android.com/reference/android/net/sip/SipManager.html
-http://developer.android.com/reference/android/nfc/NfcAdapter.html
-http://developer.android.com/reference/android/nfc/NdefMessage.html
-http://developer.android.com/reference/android/nfc/NdefRecord.html
-http://developer.android.com/reference/android/hardware/Sensor.html
-http://developer.android.com/reference/android/hardware/Camera.html
-http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
-http://developer.android.com/reference/android/media/CamcorderProfile.html
-http://developer.android.com/reference/android/media/CameraProfile.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
-http://developer.android.com/reference/android/hardware/Camera.Parameters.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.html
-http://developer.android.com/reference/android/media/AudioTrack.html
-http://developer.android.com/reference/android/media/MediaPlayer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html
-http://developer.android.com/reference/android/media/ExifInterface.html
-http://developer.android.com/reference/android/media/MediaRecorder.html
-http://developer.android.com/reference/android/app/DownloadManager.html
-http://developer.android.com/reference/android/app/DownloadManager.Request.html
-http://developer.android.com/reference/android/app/DownloadManager.Query.html
-http://developer.android.com/reference/android/os/StrictMode.html
-http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.html
-http://developer.android.com/reference/android/os/StrictMode.VmPolicy.html
-http://developer.android.com/reference/android/view/View.html
-http://developer.android.com/reference/android/widget/OverScroller.html
-http://developer.android.com/reference/android/view/ViewConfiguration.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SecureView.html
-http://developer.android.com/reference/android/view/InputEvent.html
-http://developer.android.com/reference/android/view/MotionEvent.html
-http://developer.android.com/reference/android/view/InputDevice.html
-http://developer.android.com/reference/android/view/inputmethod/BaseInputConnection.html
-http://developer.android.com/reference/android/view/inputmethod/InputConnection.html
-http://developer.android.com/reference/android/view/inputmethod/InputConnectionWrapper.html
-http://developer.android.com/reference/android/content/pm/ActivityInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/reference/android/R.style.html
-http://developer.android.com/reference/android/webkit/WebSettings.html
-http://developer.android.com/reference/android/webkit/WebView.html
-http://developer.android.com/reference/android/opengl/GLES20.html
-http://developer.android.com/reference/android/graphics/ImageFormat.html
-http://developer.android.com/reference/android/provider/AlarmClock.html
-http://developer.android.com/reference/android/provider/MediaStore.html
-http://developer.android.com/reference/android/provider/Settings.html
-http://developer.android.com/reference/android/provider/ContactsContract.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.SipAddress.html
-http://developer.android.com/reference/android/location/LocationManager.html
-http://developer.android.com/reference/android/os/WorkSource.html
-http://developer.android.com/reference/android/location/Criteria.html
-http://developer.android.com/reference/android/os/storage/StorageManager.html
-http://developer.android.com/reference/android/os/Environment.html
-http://developer.android.com/reference/android/content/pm/PackageInfo.html
-http://developer.android.com/reference/android/content/pm/PackageManager.html
-http://developer.android.com/reference/android/telephony/TelephonyManager.html
-http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html
-http://developer.android.com/reference/android/view/InputQueue.html
-http://developer.android.com/reference/android/view/SurfaceHolder.Callback2.html
-http://developer.android.com/reference/android/view/SurfaceHolder.html
-http://developer.android.com/reference/android/view/Window.html
-http://developer.android.com/reference/java/util/ArrayDeque.html
-http://developer.android.com/reference/java/util/NavigableMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListMap.html
-http://developer.android.com/reference/java/util/concurrent/LinkedBlockingDeque.html
-http://developer.android.com/reference/java/util/Arrays.html
-http://developer.android.com/reference/java/net/CookieManager.html
-http://developer.android.com/reference/java/net/HttpURLConnection.html
-http://developer.android.com/reference/java/net/InterfaceAddress.html
-http://developer.android.com/reference/java/net/NetworkInterface.html
-http://developer.android.com/reference/java/net/IDN.html
-http://developer.android.com/reference/java/io/File.html
-http://developer.android.com/reference/java/lang/String.html
-http://developer.android.com/reference/java/text/Normalizer.html
-http://developer.android.com/reference/java/text/Normalizer.Form.html
-http://developer.android.com/sdk/api_diff/8/changes.html
-http://developer.android.com/about/versions/android-2.2-highlights.html
-http://developer.android.com/reference/android/opengl/ETC1.html
-http://developer.android.com/reference/android/opengl/ETC1Util.html
-http://developer.android.com/reference/android/opengl/ETC1Util.ETC1Texture.html
-http://developer.android.com/reference/android/graphics/YuvImage.html
-http://developer.android.com/reference/android/media/AudioManager.html
-http://developer.android.com/reference/android/media/SoundPool.html
-http://developer.android.com/reference/android/media/MediaScannerConnection.html
-http://developer.android.com/reference/android/media/MediaScannerConnection.OnScanCompletedListener.html
-http://developer.android.com/reference/android/speech/RecognitionService.html
-http://developer.android.com/reference/android/speech/RecognitionListener.html
-http://developer.android.com/reference/android/media/ThumbnailUtils.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html
+http://developer.android.com/sdk/installing/index.html
+http://developer.android.com/sdk/installing/adding-packages.html
+http://developer.android.com/sdk/installing/installing-adt.html
+http://developer.android.com/sdk/installing/next.html
+http://developer.android.com/sdk/exploring.html
+http://developer.android.com/tools/sdk/ndk/index.html
+http://developer.android.com/tools/workflow/index.html
+http://developer.android.com/tools/devices/index.html
+http://developer.android.com/tools/devices/managing-avds.html
+http://developer.android.com/tools/devices/managing-avds-cmdline.html
+http://developer.android.com/tools/devices/emulator.html
+http://developer.android.com/tools/device.html
+http://developer.android.com/tools/projects/index.html
+http://developer.android.com/tools/projects/projects-eclipse.html
+http://developer.android.com/tools/projects/projects-cmdline.html
+http://developer.android.com/tools/building/index.html
+http://developer.android.com/tools/building/building-eclipse.html
+http://developer.android.com/tools/building/building-cmdline.html
+http://developer.android.com/tools/testing/testing_android.html
+http://developer.android.com/tools/testing/testing_eclipse.html
+http://developer.android.com/tools/testing/testing_otheride.html
+http://developer.android.com/tools/testing/activity_testing.html
+http://developer.android.com/tools/testing/service_testing.html
+http://developer.android.com/tools/testing/contentprovider_testing.html
+http://developer.android.com/tools/testing/what_to_test.html
+http://developer.android.com/tools/testing/activity_test.html
+http://developer.android.com/tools/debugging/index.html
+http://developer.android.com/tools/debugging/debugging-projects.html
+http://developer.android.com/tools/debugging/debugging-projects-cmdline.html
+http://developer.android.com/tools/debugging/ddms.html
+http://developer.android.com/tools/debugging/debugging-log.html
+http://developer.android.com/tools/debugging/debugging-ui.html
+http://developer.android.com/tools/debugging/debugging-tracing.html
+http://developer.android.com/tools/debugging/debugging-devtools.html
+http://developer.android.com/tools/publishing/publishing_overview.html
+http://developer.android.com/tools/publishing/preparing.html
+http://developer.android.com/tools/publishing/versioning.html
+http://developer.android.com/tools/publishing/app-signing.html
+http://developer.android.com/tools/help/index.html
+http://developer.android.com/tools/help/adb.html
+http://developer.android.com/tools/help/adt.html
+http://developer.android.com/tools/help/android.html
+http://developer.android.com/tools/help/bmgr.html
+http://developer.android.com/tools/help/monitor.html
+http://developer.android.com/tools/help/dmtracedump.html
+http://developer.android.com/tools/help/draw9patch.html
+http://developer.android.com/tools/help/emulator.html
+http://developer.android.com/tools/help/etc1tool.html
+http://developer.android.com/tools/help/hierarchy-viewer.html
+http://developer.android.com/tools/help/hprof-conv.html
+http://developer.android.com/tools/help/layoutopt.html
+http://developer.android.com/tools/help/logcat.html
+http://developer.android.com/tools/help/mksdcard.html
+http://developer.android.com/tools/help/monkey.html
+http://developer.android.com/tools/help/monkeyrunner_concepts.html
+http://developer.android.com/tools/help/MonkeyDevice.html
+http://developer.android.com/tools/help/MonkeyImage.html
+http://developer.android.com/tools/help/MonkeyRunner.html
+http://developer.android.com/tools/help/proguard.html
+http://developer.android.com/tools/help/gltracer.html
+http://developer.android.com/tools/help/traceview.html
+http://developer.android.com/tools/help/zipalign.html
+http://developer.android.com/tools/revisions/index.html
+http://developer.android.com/tools/sdk/tools-notes.html
+http://developer.android.com/tools/sdk/eclipse-adt.html
+http://developer.android.com/tools/revisions/platforms.html
+http://developer.android.com/tools/extras/index.html
+http://developer.android.com/tools/extras/support-library.html
+http://developer.android.com/tools/extras/oem-usb.html
+http://developer.android.com/tools/samples/index.html
+http://developer.android.com/tools/adk/index.html
+http://developer.android.com/tools/adk/adk2.html
+http://developer.android.com/tools/adk/adk.html
+http://developer.android.com/tools/adk/aoa.html
+http://developer.android.com/tools/adk/aoa2.html
+http://developer.android.com/about/start.html
+http://developer.android.com/about/versions/android-4.1.html
+http://developer.android.com/about/versions/android-4.0-highlights.html
+http://developer.android.com/about/versions/android-4.0.3.html
+http://developer.android.com/about/versions/android-4.0.html
+http://developer.android.com/about/versions/android-3.0-highlights.html
+http://developer.android.com/about/versions/android-3.2.html
+http://developer.android.com/about/versions/android-3.1.html
+http://developer.android.com/about/versions/android-3.0.html
+http://developer.android.com/about/versions/android-2.3-highlights.html
+http://developer.android.com/about/versions/android-2.3.4.html
+http://developer.android.com/about/versions/android-2.3.3.html
+http://developer.android.com/about/dashboards/index.html
+http://developer.android.com/
+http://developer.android.com/reference/java/io/InputStream.html
+http://developer.android.com/reference/android/content/res/Resources.html
+http://developer.android.com/reference/android/content/res/AssetManager.html
+http://developer.android.com/reference/android/content/res/Configuration.html
http://developer.android.com/reference/android/app/UiModeManager.html
-http://developer.android.com/reference/android/view/ScaleGestureDetector.html
-http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
-http://developer.android.com/reference/android/R.attr.html
-http://developer.android.com/reference/android/content/ContentResolver.html
-http://developer.android.com/reference/android/app/ActivityManager.html
-http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html
-http://developer.android.com/sdk/api_diff/7/changes.html
-http://developer.android.com/reference/android/app/WallpaperInfo.html
-http://developer.android.com/reference/android/app/WallpaperManager.html
-http://developer.android.com/reference/android/telephony/SignalStrength.html
-http://developer.android.com/reference/android/telephony/PhoneStateListener.html
-http://developer.android.com/reference/android/widget/RemoteViews.html
-http://developer.android.com/reference/android/view/ViewGroup.html
-http://developer.android.com/reference/android/webkit/WebStorage.html
-http://developer.android.com/reference/android/webkit/GeolocationPermissions.html
-http://developer.android.com/reference/android/webkit/WebChromeClient.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest.html
-http://developer.android.com/reference/android/os/Process.html
-http://developer.android.com/reference/android/widget/TextView.html
-http://developer.android.com/reference/android/Manifest.permission.html
-http://developer.android.com/sdk/api_diff/4/changes.html
-http://developer.android.com/about/versions/android-1.6-highlights.html
-http://developer.android.com/reference/android/view/View.OnClickListener.html
http://developer.android.com/reference/android/app/SearchManager.html
-http://developer.android.com/reference/android/telephony/SmsManager.html
-http://developer.android.com/reference/android/util/DisplayMetrics.html
-http://developer.android.com/sdk/RELEASENOTES.html
-http://developer.android.com/sdk/OLD_RELEASENOTES.html
-http://developer.android.com/sdk/download.html?v=archives/android-sdk-windows-0.9_beta.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk-mac_x86-0.9_beta.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk-linux_x86-0.9_beta.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc15_windows.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc15_mac-x86.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc15_linux-x86.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc14_windows.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc14_mac-x86.zip
-http://developer.android.com/sdk/download.html?v=archives/android-sdk_m5-rc14_linux-x86.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_windows_m3-rc37a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_darwin_m3-rc37a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_linux_m3-rc37a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_windows_m3-rc22a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_darwin_m3-rc22a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_linux_m3-rc22a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_windows_m3-rc20a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_darwin_m3-rc20a.zip
-http://developer.android.com/sdk/download.html?v=archives/android_sdk_linux_m3-rc20a.zip
-http://developer.android.com/reference/javax/xml/parsers/DocumentBuilder.html
-http://developer.android.com/reference/javax/xml/parsers/DocumentBuilderFactory.html
-http://developer.android.com/reference/javax/xml/parsers/SAXParser.html
-http://developer.android.com/reference/javax/xml/parsers/SAXParserFactory.html
-http://developer.android.com/reference/javax/xml/parsers/ParserConfigurationException.html
-http://developer.android.com/reference/javax/xml/parsers/FactoryConfigurationError.html
-http://developer.android.com/reference/javax/xml/parsers/package-descr.html
-http://developer.android.com/reference/org/xml/sax/XMLReader.html
-http://developer.android.com/reference/org/xmlpull/v1/sax2/Driver.html
-http://developer.android.com/reference/android/text/format/DateFormat.html
-http://developer.android.com/reference/android/text/format/DateUtils.html
-http://developer.android.com/reference/android/text/format/Formatter.html
-http://developer.android.com/reference/android/text/format/Time.html
-http://developer.android.com/reference/android/view/MenuInflater.html
-http://developer.android.com/reference/android/view/Menu.html
+http://developer.android.com/reference/android/widget/SearchView.html
+http://developer.android.com/resources/samples/SearchableDictionary/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SearchViewActionBar.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SearchViewFilterMode.html
+http://developer.android.com/shareables/search_icons.zip
+http://developer.android.com/reference/android/widget/EditText.html
+http://developer.android.com/reference/android/content/Intent.html
+http://developer.android.com/reference/android/app/Activity.html
+http://developer.android.com/reference/android/app/SearchableInfo.html
+http://developer.android.com/reference/android/widget/ListView.html
+http://developer.android.com/reference/android/app/ListActivity.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
+http://developer.android.com/reference/android/widget/Adapter.html
+http://developer.android.com/reference/android/view/View.html
+http://developer.android.com/reference/android/widget/CursorAdapter.html
+http://developer.android.com/reference/android/database/Cursor.html
+http://developer.android.com/reference/android/widget/BaseAdapter.html
+http://developer.android.com/reference/android/app/Dialog.html
+http://developer.android.com/reference/android/app/SearchManager.OnDismissListener.html
+http://developer.android.com/reference/android/app/SearchManager.OnCancelListener.html
+http://developer.android.com/reference/android/os/Bundle.html
+http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.html
+http://developer.android.com/reference/android/view/ViewStub.html
+http://developer.android.com/reference/android/renderscript/ScriptC.html
+http://developer.android.com/reference/android/renderscript/Script.FieldBase.html
+http://developer.android.com/reference/renderscript/rs__core_8rsh.html
+http://developer.android.com/reference/android/renderscript/Allocation.html
+http://developer.android.com/reference/android/renderscript/Element.html
+http://developer.android.com/reference/android/renderscript/Type.html
+http://developer.android.com/reference/android/os/PatternMatcher.html
+http://developer.android.com/shareables/training/NewsReader.zip
+http://developer.android.com/reference/android/widget/LinearLayout.html
+http://developer.android.com/reference/android/widget/RelativeLayout.html
+http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
+http://developer.android.com/reference/android/app/Service.html
+http://developer.android.com/reference/android/app/IntentService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html
+http://developer.android.com/reference/android/content/Context.html
+http://developer.android.com/reference/android/os/AsyncTask.html
+http://developer.android.com/reference/android/os/HandlerThread.html
+http://developer.android.com/reference/java/lang/Thread.html
+http://developer.android.com/reference/android/os/IBinder.html
+http://developer.android.com/reference/android/app/PendingIntent.html
+http://developer.android.com/reference/android/app/Notification.html
+http://developer.android.com/reference/java/lang/ref/PhantomReference.html
+http://developer.android.com/reference/java/lang/ref/Reference.html
+http://developer.android.com/reference/java/lang/ref/SoftReference.html
+http://developer.android.com/reference/java/lang/ref/WeakReference.html
+http://developer.android.com/reference/java/lang/Object.html
+http://developer.android.com/reference/java/lang/Class.html
+http://developer.android.com/reference/java/lang/String.html
+http://developer.android.com/reference/java/lang/InterruptedException.html
+http://developer.android.com/reference/java/lang/IllegalArgumentException.html
http://developer.android.com/reference/java/security/interfaces/DSAKey.html
http://developer.android.com/reference/java/security/interfaces/DSAKeyPairGenerator.html
http://developer.android.com/reference/java/security/interfaces/DSAParams.html
@@ -593,449 +712,153 @@
http://developer.android.com/reference/java/security/interfaces/RSAPrivateCrtKey.html
http://developer.android.com/reference/java/security/interfaces/RSAPrivateKey.html
http://developer.android.com/reference/java/security/interfaces/RSAPublicKey.html
-http://developer.android.com/reference/java/security/interfaces/package-descr.html
-http://developer.android.com/reference/org/xml/sax/AttributeList.html
-http://developer.android.com/reference/org/xml/sax/Attributes.html
-http://developer.android.com/reference/org/xml/sax/ContentHandler.html
-http://developer.android.com/reference/org/xml/sax/DocumentHandler.html
-http://developer.android.com/reference/org/xml/sax/DTDHandler.html
-http://developer.android.com/reference/org/xml/sax/EntityResolver.html
-http://developer.android.com/reference/org/xml/sax/ErrorHandler.html
-http://developer.android.com/reference/org/xml/sax/Locator.html
-http://developer.android.com/reference/org/xml/sax/Parser.html
-http://developer.android.com/reference/org/xml/sax/XMLFilter.html
-http://developer.android.com/reference/org/xml/sax/HandlerBase.html
-http://developer.android.com/reference/org/xml/sax/InputSource.html
-http://developer.android.com/reference/org/xml/sax/SAXException.html
-http://developer.android.com/reference/org/xml/sax/SAXNotRecognizedException.html
-http://developer.android.com/reference/org/xml/sax/SAXNotSupportedException.html
-http://developer.android.com/reference/org/xml/sax/SAXParseException.html
-http://developer.android.com/reference/org/xml/sax/package-descr.html
-http://developer.android.com/reference/org/xml/sax/helpers/DefaultHandler.html
-http://developer.android.com/reference/android/widget/ListView.html
-http://developer.android.com/reference/android/app/ListActivity.html
-http://developer.android.com/resources/tutorials/views/hello-listview.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
-http://developer.android.com/reference/android/widget/Adapter.html
-http://developer.android.com/reference/android/widget/CursorAdapter.html
-http://developer.android.com/reference/android/database/Cursor.html
-http://developer.android.com/reference/android/widget/BaseAdapter.html
-http://developer.android.com/reference/android/app/Dialog.html
-http://developer.android.com/reference/android/app/SearchManager.OnDismissListener.html
-http://developer.android.com/reference/android/app/SearchManager.OnCancelListener.html
-http://developer.android.com/reference/android/os/Bundle.html
-http://developer.android.com/guide/topics/resources/resources-i18n.html
-http://developer.android.com/resources/samples/Snake/res/index.html
-http://developer.android.com/resources/samples/Snake/src/index.html
-http://developer.android.com/resources/samples/Snake/tests/index.html
-http://developer.android.com/resources/samples/Snake/AndroidManifest.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10Ext.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11Ext.html
-http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11ExtensionPack.html
-http://developer.android.com/reference/android/hardware/Camera.AutoFocusCallback.html
-http://developer.android.com/reference/android/hardware/Camera.ErrorCallback.html
-http://developer.android.com/reference/android/hardware/Camera.OnZoomChangeListener.html
-http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html
-http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html
-http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
-http://developer.android.com/reference/android/hardware/SensorEventListener.html
-http://developer.android.com/reference/android/hardware/SensorListener.html
-http://developer.android.com/reference/android/hardware/Camera.Size.html
-http://developer.android.com/reference/android/hardware/GeomagneticField.html
-http://developer.android.com/reference/android/hardware/SensorEvent.html
-http://developer.android.com/reference/android/hardware/package-descr.html
-http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html
-http://developer.android.com/reference/java/util/concurrent/locks/Condition.html
-http://developer.android.com/reference/java/util/concurrent/locks/Lock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html
-http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html
-http://developer.android.com/reference/java/util/concurrent/locks/LockSupport.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.ReadLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html
-http://developer.android.com/reference/java/util/concurrent/locks/package-descr.html
-http://developer.android.com/reference/java/lang/Object.html
-http://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html
-http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
-http://developer.android.com/reference/android/app/admin/DeviceAdminInfo.html
-http://developer.android.com/reference/android/widget/Toast.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManager.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManagerFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionOperator.html
+http://developer.android.com/reference/org/apache/http/conn/ClientConnectionRequest.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionKeepAliveStrategy.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionReleaseTrigger.html
+http://developer.android.com/reference/org/apache/http/conn/EofSensorWatcher.html
+http://developer.android.com/reference/org/apache/http/conn/ManagedClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/OperatedClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/BasicEofSensorWatcher.html
+http://developer.android.com/reference/org/apache/http/conn/BasicManagedEntity.html
+http://developer.android.com/reference/org/apache/http/conn/EofSensorInputStream.html
+http://developer.android.com/reference/org/apache/http/conn/MultihomePlainSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectionPoolTimeoutException.html
+http://developer.android.com/reference/org/apache/http/conn/ConnectTimeoutException.html
+http://developer.android.com/reference/org/apache/http/conn/HttpHostConnectException.html
+http://developer.android.com/reference/org/apache/http/HttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/SocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/Scheme.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/SchemeRegistry.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html
+http://developer.android.com/reference/java/net/InetAddress.html
+http://developer.android.com/reference/java/net/ConnectException.html
+http://developer.android.com/reference/org/apache/http/HttpHost.html
+http://developer.android.com/reference/android/support/v4/content/Loader.OnLoadCompleteListener.html
+http://developer.android.com/reference/android/support/v4/content/AsyncTaskLoader.html
+http://developer.android.com/reference/android/support/v4/content/ContextCompat.html
+http://developer.android.com/reference/android/support/v4/content/CursorLoader.html
+http://developer.android.com/reference/android/support/v4/content/IntentCompat.html
+http://developer.android.com/reference/android/support/v4/content/Loader.html
+http://developer.android.com/reference/android/support/v4/content/Loader.ForceLoadContentObserver.html
+http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
+http://developer.android.com/reference/android/content/AsyncTaskLoader.html
+http://developer.android.com/reference/android/content/CursorLoader.html
+http://developer.android.com/reference/android/content/Loader.html
+http://developer.android.com/reference/android/widget/Button.html
+http://developer.android.com/reference/android/app/Fragment.html
+http://developer.android.com/reference/android/app/FragmentManager.html
+http://developer.android.com/reference/android/app/FragmentTransaction.html
+http://developer.android.com/resources/samples/HoneycombGallery/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/index.html
+http://developer.android.com/reference/android/view/ViewGroup.html
+http://developer.android.com/reference/android/app/DialogFragment.html
+http://developer.android.com/reference/android/app/ListFragment.html
+http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html
+http://developer.android.com/reference/android/preference/PreferenceFragment.html
+http://developer.android.com/reference/android/preference/Preference.html
+http://developer.android.com/reference/android/preference/PreferenceActivity.html
+http://developer.android.com/reference/android/view/LayoutInflater.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.html
+http://developer.android.com/reference/java/lang/ClassCastException.html
+http://developer.android.com/reference/android/content/ContentUris.html
+http://developer.android.com/reference/android/content/ContentProvider.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html
+http://developer.android.com/reference/android/widget/FrameLayout.html
+http://developer.android.com/resources/samples/get.html
+http://developer.android.com/reference/android/net/Uri.html
+http://developer.android.com/resources/samples/NotePad/index.html
+http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
+http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
+http://developer.android.com/reference/android/provider/BaseColumns.html
+http://developer.android.com/reference/android/content/ContentResolver.html
+http://developer.android.com/reference/android/provider/ContactsContract.Data.html
+http://developer.android.com/reference/android/content/UriMatcher.html
+http://developer.android.com/reference/android/net/Uri.Builder.html
+http://developer.android.com/reference/java/lang/Exception.html
+http://developer.android.com/reference/android/database/MatrixCursor.html
+http://developer.android.com/reference/java/lang/NullPointerException.html
+http://developer.android.com/reference/android/content/ContentValues.html
+http://developer.android.com/reference/android/provider/ContactsContract.html
+http://developer.android.com/guide/topics/security/security.html
+http://developer.android.com/reference/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.html
+http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
+http://developer.android.com/reference/android/app/NotificationManager.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html
+http://developer.android.com/reference/android/provider/MediaStore.html
+http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
+http://developer.android.com/reference/android/widget/RemoteViews.html
+http://developer.android.com/reference/android/widget/TextView.html
+http://developer.android.com/reference/android/widget/Chronometer.html
+http://developer.android.com/reference/android/widget/ProgressBar.html
http://developer.android.com/reference/android/app/backup/BackupHelper.html
http://developer.android.com/reference/android/app/backup/BackupAgent.html
+http://developer.android.com/reference/android/app/backup/BackupAgentHelper.html
http://developer.android.com/reference/android/app/backup/BackupDataInput.html
http://developer.android.com/reference/android/app/backup/BackupDataInputStream.html
http://developer.android.com/reference/android/app/backup/BackupDataOutput.html
http://developer.android.com/reference/android/app/backup/BackupManager.html
http://developer.android.com/reference/android/app/backup/FileBackupHelper.html
+http://developer.android.com/reference/android/app/backup/FullBackupDataOutput.html
http://developer.android.com/reference/android/app/backup/RestoreObserver.html
http://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper.html
-http://developer.android.com/reference/android/app/backup/package-descr.html
-http://developer.android.com/reference/java/io/InputStream.html
http://developer.android.com/reference/android/content/SharedPreferences.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.Field.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeFactory.html
-http://developer.android.com/reference/javax/xml/datatype/Duration.html
-http://developer.android.com/reference/javax/xml/datatype/XMLGregorianCalendar.html
-http://developer.android.com/reference/javax/xml/datatype/DatatypeConfigurationException.html
-http://developer.android.com/reference/javax/xml/datatype/package-descr.html
-http://developer.android.com/reference/java/util/concurrent/BlockingDeque.html
-http://developer.android.com/reference/java/util/concurrent/BlockingQueue.html
-http://developer.android.com/reference/java/util/concurrent/Callable.html
-http://developer.android.com/reference/java/util/concurrent/CompletionService.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentNavigableMap.html
-http://developer.android.com/reference/java/util/concurrent/Delayed.html
-http://developer.android.com/reference/java/util/concurrent/Executor.html
-http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
-http://developer.android.com/reference/java/util/concurrent/Future.html
-http://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler.html
-http://developer.android.com/reference/java/util/concurrent/RunnableFuture.html
-http://developer.android.com/reference/java/util/concurrent/RunnableScheduledFuture.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledFuture.html
-http://developer.android.com/reference/java/util/concurrent/ThreadFactory.html
-http://developer.android.com/reference/java/util/concurrent/AbstractExecutorService.html
-http://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue.html
-http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListSet.html
-http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html
-http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArraySet.html
-http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
-http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
-http://developer.android.com/reference/java/util/concurrent/DelayQueue.html
-http://developer.android.com/reference/java/util/concurrent/Exchanger.html
-http://developer.android.com/reference/java/util/concurrent/ExecutorCompletionService.html
-http://developer.android.com/reference/java/util/concurrent/Executors.html
-http://developer.android.com/reference/java/util/concurrent/FutureTask.html
-http://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue.html
-http://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue.html
-http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
-http://developer.android.com/reference/java/util/concurrent/Semaphore.html
-http://developer.android.com/reference/java/util/concurrent/SynchronousQueue.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy.html
-http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy.html
-http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
-http://developer.android.com/reference/java/util/concurrent/BrokenBarrierException.html
-http://developer.android.com/reference/java/util/concurrent/CancellationException.html
-http://developer.android.com/reference/java/util/concurrent/ExecutionException.html
-http://developer.android.com/reference/java/util/concurrent/RejectedExecutionException.html
-http://developer.android.com/reference/java/util/concurrent/TimeoutException.html
-http://developer.android.com/reference/java/util/concurrent/package-descr.html
-http://developer.android.com/reference/java/util/Deque.html
-http://developer.android.com/reference/java/util/Queue.html
-http://developer.android.com/reference/java/util/Map.html
-http://developer.android.com/reference/java/lang/Runnable.html
-http://developer.android.com/reference/java/util/NavigableSet.html
-http://developer.android.com/reference/java/util/ArrayList.html
-http://developer.android.com/reference/java/util/Set.html
-http://developer.android.com/reference/java/util/PriorityQueue.html
-http://developer.android.com/reference/android/database/CrossProcessCursor.html
-http://developer.android.com/reference/android/database/AbstractCursor.html
-http://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver.html
-http://developer.android.com/reference/android/database/AbstractWindowedCursor.html
-http://developer.android.com/reference/android/database/CharArrayBuffer.html
-http://developer.android.com/reference/android/database/ContentObservable.html
-http://developer.android.com/reference/android/database/ContentObserver.html
-http://developer.android.com/reference/android/database/CursorJoiner.html
-http://developer.android.com/reference/android/database/CursorWindow.html
-http://developer.android.com/reference/android/database/CursorWrapper.html
-http://developer.android.com/reference/android/database/DatabaseUtils.html
-http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.html
-http://developer.android.com/reference/android/database/DataSetObservable.html
-http://developer.android.com/reference/android/database/DataSetObserver.html
-http://developer.android.com/reference/android/database/MatrixCursor.html
-http://developer.android.com/reference/android/database/MatrixCursor.RowBuilder.html
-http://developer.android.com/reference/android/database/MergeCursor.html
-http://developer.android.com/reference/android/database/Observable.html
-http://developer.android.com/reference/android/database/CursorJoiner.Result.html
-http://developer.android.com/reference/android/database/CursorIndexOutOfBoundsException.html
-http://developer.android.com/reference/android/database/SQLException.html
-http://developer.android.com/reference/android/database/StaleDataException.html
-http://developer.android.com/reference/android/database/package-descr.html
-http://developer.android.com/reference/android/media/JetPlayer.html
-http://developer.android.com/resources/samples/Home/res/index.html
-http://developer.android.com/resources/samples/Home/src/index.html
-http://developer.android.com/resources/samples/Home/AndroidManifest.html
-http://developer.android.com/reference/android/view/View.OnTouchListener.html
-http://developer.android.com/reference/android/view/View.OnKeyListener.html
-http://developer.android.com/reference/javax/xml/namespace/NamespaceContext.html
-http://developer.android.com/reference/javax/xml/namespace/QName.html
-http://developer.android.com/reference/javax/xml/namespace/package-descr.html
-http://developer.android.com/reference/android/provider/SearchRecentSuggestions.html
-http://developer.android.com/reference/android/telephony/CellLocation.html
-http://developer.android.com/reference/android/telephony/NeighboringCellInfo.html
-http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
-http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
-http://developer.android.com/reference/android/telephony/ServiceState.html
-http://developer.android.com/reference/android/telephony/SmsMessage.html
-http://developer.android.com/reference/android/telephony/SmsMessage.SubmitPdu.html
-http://developer.android.com/reference/android/telephony/SmsMessage.MessageClass.html
-http://developer.android.com/reference/android/telephony/package-descr.html
-http://developer.android.com/resources/samples/ContactManager/res/index.html
-http://developer.android.com/resources/samples/ContactManager/src/index.html
-http://developer.android.com/resources/samples/ContactManager/AndroidManifest.html
-http://developer.android.com/reference/android/os/Debug.html
-http://developer.android.com/resources/samples/Spinner/res/index.html
-http://developer.android.com/resources/samples/Spinner/src/index.html
-http://developer.android.com/resources/samples/Spinner/AndroidManifest.html
-http://developer.android.com/reference/android/location/LocationListener.html
-http://developer.android.com/reference/java/util/zip/Checksum.html
-http://developer.android.com/reference/java/util/zip/Adler32.html
-http://developer.android.com/reference/java/util/zip/CheckedInputStream.html
-http://developer.android.com/reference/java/util/zip/CheckedOutputStream.html
-http://developer.android.com/reference/java/util/zip/CRC32.html
-http://developer.android.com/reference/java/util/zip/Deflater.html
-http://developer.android.com/reference/java/util/zip/DeflaterInputStream.html
-http://developer.android.com/reference/java/util/zip/DeflaterOutputStream.html
-http://developer.android.com/reference/java/util/zip/GZIPInputStream.html
-http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html
-http://developer.android.com/reference/java/util/zip/Inflater.html
-http://developer.android.com/reference/java/util/zip/InflaterInputStream.html
-http://developer.android.com/reference/java/util/zip/InflaterOutputStream.html
-http://developer.android.com/reference/java/util/zip/ZipEntry.html
-http://developer.android.com/reference/java/util/zip/ZipFile.html
-http://developer.android.com/reference/java/util/zip/ZipInputStream.html
-http://developer.android.com/reference/java/util/zip/ZipOutputStream.html
-http://developer.android.com/reference/java/util/zip/DataFormatException.html
-http://developer.android.com/reference/java/util/zip/ZipException.html
-http://developer.android.com/reference/java/util/zip/ZipError.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteCursorDriver.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteTransactionListener.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteClosable.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteProgram.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteQuery.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteAbortException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteConstraintException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseCorruptException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDiskIOException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteDoneException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteFullException.html
-http://developer.android.com/reference/android/database/sqlite/SQLiteMisuseException.html
-http://developer.android.com/reference/android/database/sqlite/package-descr.html
-http://developer.android.com/reference/android/os/PatternMatcher.html
-http://developer.android.com/reference/javax/xml/validation/Schema.html
-http://developer.android.com/reference/javax/xml/validation/SchemaFactory.html
-http://developer.android.com/reference/javax/xml/validation/SchemaFactoryLoader.html
-http://developer.android.com/reference/javax/xml/validation/TypeInfoProvider.html
-http://developer.android.com/reference/javax/xml/validation/Validator.html
-http://developer.android.com/reference/javax/xml/validation/ValidatorHandler.html
-http://developer.android.com/reference/javax/xml/validation/package-descr.html
-http://developer.android.com/reference/android/webkit/ConsoleMessage.html
-http://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel.html
-http://developer.android.com/reference/android/util/Log.html
-http://developer.android.com/reference/android/content/BroadcastReceiver.html
+http://developer.android.com/reference/android/support/v4/util/LongSparseArray.html
+http://developer.android.com/reference/android/support/v4/util/LruCache.html
+http://developer.android.com/reference/android/support/v4/util/SparseArrayCompat.html
+http://developer.android.com/reference/android/util/LruCache.html
+http://developer.android.com/reference/android/util/SparseArray.html
+http://developer.android.com/shareables/training/BitmapFun.zip
+http://developer.android.com/reference/android/widget/GridView.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.html
+http://developer.android.com/reference/java/util/LinkedHashMap.html
+http://developer.android.com/reference/android/widget/ImageView.html
+http://developer.android.com/reference/android/content/ServiceConnection.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
+http://developer.android.com/reference/android/os/Binder.html
+http://developer.android.com/reference/android/os/Messenger.html
http://developer.android.com/reference/android/os/Handler.html
-http://developer.android.com/reference/android/app/Service.html
-http://developer.android.com/reference/android/app/NotificationManager.html
-http://developer.android.com/reference/android/widget/ProgressBar.html
-http://developer.android.com/reference/android/app/ProgressDialog.html
-http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
-http://developer.android.com/reference/android/view/animation/Interpolator.html
-http://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator.html
-http://developer.android.com/reference/android/view/animation/AccelerateInterpolator.html
-http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
-http://developer.android.com/reference/android/view/animation/Animation.html
-http://developer.android.com/reference/android/view/animation/Animation.Description.html
-http://developer.android.com/reference/android/view/animation/AnimationSet.html
-http://developer.android.com/reference/android/view/animation/AnimationUtils.html
-http://developer.android.com/reference/android/view/animation/AnticipateInterpolator.html
-http://developer.android.com/reference/android/view/animation/AnticipateOvershootInterpolator.html
-http://developer.android.com/reference/android/view/animation/BounceInterpolator.html
-http://developer.android.com/reference/android/view/animation/CycleInterpolator.html
-http://developer.android.com/reference/android/view/animation/DecelerateInterpolator.html
-http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html
-http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.AnimationParameters.html
-http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html
-http://developer.android.com/reference/android/view/animation/LayoutAnimationController.AnimationParameters.html
-http://developer.android.com/reference/android/view/animation/LinearInterpolator.html
-http://developer.android.com/reference/android/view/animation/OvershootInterpolator.html
-http://developer.android.com/reference/android/view/animation/RotateAnimation.html
-http://developer.android.com/reference/android/view/animation/ScaleAnimation.html
-http://developer.android.com/reference/android/view/animation/Transformation.html
-http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
-http://developer.android.com/reference/android/view/animation/package-descr.html
-http://developer.android.com/reference/android/content/ComponentName.html
-http://developer.android.com/reference/android/test/InstrumentationTestRunner.html
-http://developer.android.com/reference/android/os/Build.html
-http://developer.android.com/reference/android/os/SystemClock.html
-http://developer.android.com/reference/android/content/ContentProvider.html
-http://developer.android.com/reference/android/net/Uri.html
-http://developer.android.com/reference/android/content/ContentUris.html
-http://developer.android.com/reference/android/provider/Contacts.Phones.html
-http://developer.android.com/reference/android/provider/BaseColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PeopleColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
-http://developer.android.com/reference/android/provider/Contacts.People.html
-http://developer.android.com/reference/android/content/ContentValues.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractClientConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPooledConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPoolEntry.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnectionOperator.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultHttpRoutePlanner.html
-http://developer.android.com/reference/org/apache/http/impl/conn/DefaultResponseParser.html
-http://developer.android.com/reference/org/apache/http/impl/conn/IdleConnectionHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionOutputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/conn/ProxySelectorRoutePlanner.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.ConnAdapter.html
-http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.PoolEntry.html
-http://developer.android.com/reference/org/apache/http/impl/conn/Wire.html
-http://developer.android.com/reference/org/apache/http/conn/OperatedClientConnection.html
-http://developer.android.com/reference/org/apache/http/conn/ManagedClientConnection.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionOperator.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoutePlanner.html
-http://developer.android.com/reference/javax/security/auth/x500/X500Principal.html
-http://developer.android.com/reference/javax/security/auth/x500/package-descr.html
-http://developer.android.com/reference/android/media/AudioManager.OnAudioFocusChangeListener.html
-http://developer.android.com/reference/android/media/AudioRecord.OnRecordPositionUpdateListener.html
-http://developer.android.com/reference/android/media/AudioTrack.OnPlaybackPositionUpdateListener.html
-http://developer.android.com/reference/android/media/JetPlayer.OnJetEventListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnInfoListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnPreparedListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnSeekCompleteListener.html
-http://developer.android.com/reference/android/media/MediaPlayer.OnVideoSizeChangedListener.html
-http://developer.android.com/reference/android/media/MediaRecorder.OnErrorListener.html
-http://developer.android.com/reference/android/media/MediaRecorder.OnInfoListener.html
-http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html
-http://developer.android.com/reference/android/media/SoundPool.OnLoadCompleteListener.html
-http://developer.android.com/reference/android/media/AsyncPlayer.html
-http://developer.android.com/reference/android/media/AudioFormat.html
-http://developer.android.com/reference/android/media/AudioRecord.html
-http://developer.android.com/reference/android/media/FaceDetector.html
-http://developer.android.com/reference/android/media/FaceDetector.Face.html
-http://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html
-http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html
-http://developer.android.com/reference/android/media/MediaRecorder.OutputFormat.html
-http://developer.android.com/reference/android/media/MediaRecorder.VideoEncoder.html
-http://developer.android.com/reference/android/media/MediaRecorder.VideoSource.html
-http://developer.android.com/reference/android/media/Ringtone.html
-http://developer.android.com/reference/android/media/RingtoneManager.html
-http://developer.android.com/reference/android/media/ToneGenerator.html
-http://developer.android.com/reference/android/media/package-descr.html
-http://developer.android.com/reference/android/net/http/AndroidHttpClient.html
-http://developer.android.com/reference/android/net/http/SslCertificate.html
-http://developer.android.com/reference/android/net/http/SslCertificate.DName.html
-http://developer.android.com/reference/android/net/http/SslError.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html
-http://developer.android.com/reference/org/apache/http/HttpRequestInterceptor.html
-http://developer.android.com/reference/android/content/pm/PackageItemInfo.html
-http://developer.android.com/tools/adt.html
-http://developer.android.com/reference/android/graphics/NinePatch.html
-http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
-http://developer.android.com/reference/android/preference/Preference.OnPreferenceClickListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityDestroyListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html
-http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityStopListener.html
-http://developer.android.com/reference/android/preference/CheckBoxPreference.html
-http://developer.android.com/reference/android/preference/DialogPreference.html
-http://developer.android.com/reference/android/preference/EditTextPreference.html
-http://developer.android.com/reference/android/preference/ListPreference.html
-http://developer.android.com/reference/android/preference/Preference.BaseSavedState.html
-http://developer.android.com/reference/android/preference/PreferenceActivity.html
-http://developer.android.com/reference/android/preference/PreferenceCategory.html
-http://developer.android.com/reference/android/preference/PreferenceGroup.html
-http://developer.android.com/reference/android/preference/PreferenceManager.html
-http://developer.android.com/reference/android/preference/PreferenceScreen.html
-http://developer.android.com/reference/android/preference/RingtonePreference.html
-http://developer.android.com/reference/android/preference/package-descr.html
+http://developer.android.com/reference/android/os/Message.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html
+http://developer.android.com/resources/samples/ApiDemos/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html
+http://developer.android.com/reference/android/os/DeadObjectException.html
http://developer.android.com/reference/org/apache/http/conn/util/InetAddressUtils.html
-http://developer.android.com/reference/android/app/PendingIntent.html
-http://developer.android.com/resources/samples/SipDemo/src/com/example/android/sip/SipSettings.html
-http://developer.android.com/resources/samples/SipDemo/src/com/example/android/sip/IncomingCallReceiver.html
-http://developer.android.com/resources/samples/SipDemo/src/com/example/android/sip/WalkieTalkieActivity.html
-http://developer.android.com/resources/samples/SipDemo/res/index.html
-http://developer.android.com/resources/samples/SipDemo/src/index.html
-http://developer.android.com/resources/samples/SipDemo/AndroidManifest.html
-http://developer.android.com/reference/android/text/util/Linkify.html
-http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
-http://developer.android.com/reference/junit/framework/Assert.html
-http://developer.android.com/reference/junit/framework/TestCase.html
-http://developer.android.com/resources/tutorials/views/hello-spinner.html
-http://developer.android.com/reference/android/widget/AbsSpinner.html
-http://developer.android.com/reference/android/test/InstrumentationTestCase.html
-http://developer.android.com/reference/android/app/Instrumentation.html
-http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
-http://developer.android.com/reference/android/test/ProviderTestCase2.html
-http://developer.android.com/reference/android/test/ServiceTestCase.html
-http://developer.android.com/reference/android/test/MoreAsserts.html
-http://developer.android.com/reference/android/test/ViewAsserts.html
-http://developer.android.com/reference/android/test/TouchUtils.html
-http://developer.android.com/reference/org/apache/http/impl/client/AbstractAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/AbstractHttpClient.html
-http://developer.android.com/reference/org/apache/http/impl/client/BasicCookieStore.html
-http://developer.android.com/reference/org/apache/http/impl/client/BasicCredentialsProvider.html
-http://developer.android.com/reference/org/apache/http/impl/client/BasicResponseHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/ClientParamsStack.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultRedirectHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultRequestDirector.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/DefaultUserTokenHandler.html
-http://developer.android.com/reference/org/apache/http/impl/client/EntityEnclosingRequestWrapper.html
-http://developer.android.com/reference/org/apache/http/impl/client/RedirectLocations.html
-http://developer.android.com/reference/org/apache/http/impl/client/RequestWrapper.html
-http://developer.android.com/reference/org/apache/http/impl/client/RoutedRequest.html
-http://developer.android.com/reference/org/apache/http/impl/client/TunnelRefusedException.html
-http://developer.android.com/reference/org/apache/http/client/CookieStore.html
-http://developer.android.com/reference/org/apache/http/client/CredentialsProvider.html
-http://developer.android.com/reference/org/apache/http/client/ResponseHandler.html
-http://developer.android.com/reference/org/apache/http/client/HttpRequestRetryHandler.html
-http://developer.android.com/reference/org/apache/http/client/RedirectHandler.html
-http://developer.android.com/reference/org/apache/http/client/RequestDirector.html
-http://developer.android.com/reference/org/apache/http/HttpEntityEnclosingRequest.html
-http://developer.android.com/reference/org/apache/http/HttpRequest.html
-http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
-http://developer.android.com/reference/java/io/FileOutputStream.html
-http://developer.android.com/reference/java/io/FileInputStream.html
-http://developer.android.com/reference/android/content/res/Resources.html
-http://developer.android.com/resources/samples/LunarLander/res/index.html
-http://developer.android.com/resources/samples/LunarLander/src/index.html
-http://developer.android.com/resources/samples/LunarLander/tests/index.html
-http://developer.android.com/resources/samples/LunarLander/AndroidManifest.html
-http://developer.android.com/reference/javax/xml/transform/ErrorListener.html
-http://developer.android.com/reference/javax/xml/transform/Result.html
-http://developer.android.com/reference/javax/xml/transform/Source.html
-http://developer.android.com/reference/javax/xml/transform/SourceLocator.html
-http://developer.android.com/reference/javax/xml/transform/Templates.html
-http://developer.android.com/reference/javax/xml/transform/URIResolver.html
-http://developer.android.com/reference/javax/xml/transform/OutputKeys.html
-http://developer.android.com/reference/javax/xml/transform/Transformer.html
-http://developer.android.com/reference/javax/xml/transform/TransformerFactory.html
-http://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException.html
-http://developer.android.com/reference/javax/xml/transform/TransformerException.html
-http://developer.android.com/reference/javax/xml/transform/TransformerFactoryConfigurationError.html
-http://developer.android.com/reference/javax/xml/transform/package-descr.html
+http://developer.android.com/shareables/training/PhotoIntentActivity.zip
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/PoolEntryRequest.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueHandler.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/AbstractConnPool.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntry.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueWorker.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RouteSpecificPool.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThread.html
+http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.html
+http://developer.android.com/reference/android/content/IntentFilter.html
+http://developer.android.com/reference/android/content/BroadcastReceiver.html
+http://developer.android.com/reference/android/content/pm/PackageManager.html
+http://developer.android.com/reference/android/content/ComponentName.html
+http://developer.android.com/reference/android/view/Menu.html
+http://developer.android.com/reference/android/app/AliasActivity.html
+http://developer.android.com/reference/android/app/Application.html
+http://developer.android.com/reference/android/app/ActionBar.html
+http://developer.android.com/reference/android/widget/AbsListView.MultiChoiceModeListener.html
http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html
http://developer.android.com/reference/android/widget/AbsListView.RecyclerListener.html
+http://developer.android.com/reference/android/widget/AbsListView.SelectionBoundsAdjuster.html
http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
http://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener.html
http://developer.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.html
+http://developer.android.com/reference/android/widget/Advanceable.html
http://developer.android.com/reference/android/widget/AutoCompleteTextView.Validator.html
+http://developer.android.com/reference/android/widget/CalendarView.OnDateChangeListener.html
http://developer.android.com/reference/android/widget/Checkable.html
http://developer.android.com/reference/android/widget/Chronometer.OnChronometerTickListener.html
http://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html
@@ -1052,11 +875,21 @@
http://developer.android.com/reference/android/widget/ListAdapter.html
http://developer.android.com/reference/android/widget/MediaController.MediaPlayerControl.html
http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.Tokenizer.html
+http://developer.android.com/reference/android/widget/NumberPicker.Formatter.html
+http://developer.android.com/reference/android/widget/NumberPicker.OnScrollListener.html
+http://developer.android.com/reference/android/widget/NumberPicker.OnValueChangeListener.html
+http://developer.android.com/reference/android/widget/PopupMenu.OnDismissListener.html
+http://developer.android.com/reference/android/widget/PopupMenu.OnMenuItemClickListener.html
http://developer.android.com/reference/android/widget/PopupWindow.OnDismissListener.html
http://developer.android.com/reference/android/widget/RadioGroup.OnCheckedChangeListener.html
http://developer.android.com/reference/android/widget/RatingBar.OnRatingBarChangeListener.html
+http://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory.html
+http://developer.android.com/reference/android/widget/SearchView.OnCloseListener.html
+http://developer.android.com/reference/android/widget/SearchView.OnQueryTextListener.html
+http://developer.android.com/reference/android/widget/SearchView.OnSuggestionListener.html
http://developer.android.com/reference/android/widget/SectionIndexer.html
http://developer.android.com/reference/android/widget/SeekBar.OnSeekBarChangeListener.html
+http://developer.android.com/reference/android/widget/ShareActionProvider.OnShareTargetSelectedListener.html
http://developer.android.com/reference/android/widget/SimpleAdapter.ViewBinder.html
http://developer.android.com/reference/android/widget/SimpleCursorAdapter.CursorToStringConverter.html
http://developer.android.com/reference/android/widget/SimpleCursorAdapter.ViewBinder.html
@@ -1077,55 +910,70 @@
http://developer.android.com/reference/android/widget/AbsoluteLayout.html
http://developer.android.com/reference/android/widget/AbsoluteLayout.LayoutParams.html
http://developer.android.com/reference/android/widget/AbsSeekBar.html
+http://developer.android.com/reference/android/widget/AbsSpinner.html
+http://developer.android.com/reference/android/widget/AdapterView.html
http://developer.android.com/reference/android/widget/AdapterView.AdapterContextMenuInfo.html
+http://developer.android.com/reference/android/widget/AdapterViewAnimator.html
+http://developer.android.com/reference/android/widget/AdapterViewFlipper.html
http://developer.android.com/reference/android/widget/AlphabetIndexer.html
http://developer.android.com/reference/android/widget/AnalogClock.html
http://developer.android.com/reference/android/widget/ArrayAdapter.html
http://developer.android.com/reference/android/widget/AutoCompleteTextView.html
http://developer.android.com/reference/android/widget/BaseExpandableListAdapter.html
-http://developer.android.com/reference/android/widget/Button.html
+http://developer.android.com/reference/android/widget/CalendarView.html
http://developer.android.com/reference/android/widget/CheckBox.html
http://developer.android.com/reference/android/widget/CheckedTextView.html
-http://developer.android.com/reference/android/widget/Chronometer.html
http://developer.android.com/reference/android/widget/CompoundButton.html
http://developer.android.com/reference/android/widget/CursorTreeAdapter.html
http://developer.android.com/reference/android/widget/DatePicker.html
http://developer.android.com/reference/android/widget/DialerFilter.html
http://developer.android.com/reference/android/widget/DigitalClock.html
+http://developer.android.com/reference/android/widget/EdgeEffect.html
http://developer.android.com/reference/android/widget/ExpandableListView.html
http://developer.android.com/reference/android/widget/ExpandableListView.ExpandableListContextMenuInfo.html
http://developer.android.com/reference/android/widget/Filter.html
http://developer.android.com/reference/android/widget/Filter.FilterResults.html
-http://developer.android.com/reference/android/widget/FrameLayout.html
http://developer.android.com/reference/android/widget/FrameLayout.LayoutParams.html
http://developer.android.com/reference/android/widget/Gallery.html
http://developer.android.com/reference/android/widget/Gallery.LayoutParams.html
-http://developer.android.com/reference/android/widget/GridView.html
+http://developer.android.com/reference/android/widget/GridLayout.html
+http://developer.android.com/reference/android/widget/GridLayout.Alignment.html
+http://developer.android.com/reference/android/widget/GridLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/GridLayout.Spec.html
http://developer.android.com/reference/android/widget/HeaderViewListAdapter.html
+http://developer.android.com/reference/android/widget/HorizontalScrollView.html
+http://developer.android.com/reference/android/widget/ImageButton.html
http://developer.android.com/reference/android/widget/ImageSwitcher.html
-http://developer.android.com/reference/android/widget/ImageView.html
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/ListPopupWindow.html
http://developer.android.com/reference/android/widget/ListView.FixedViewInfo.html
http://developer.android.com/reference/android/widget/MediaController.html
http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.html
http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.CommaTokenizer.html
+http://developer.android.com/reference/android/widget/NumberPicker.html
+http://developer.android.com/reference/android/widget/OverScroller.html
+http://developer.android.com/reference/android/widget/PopupMenu.html
http://developer.android.com/reference/android/widget/PopupWindow.html
+http://developer.android.com/reference/android/widget/QuickContactBadge.html
http://developer.android.com/reference/android/widget/RadioButton.html
http://developer.android.com/reference/android/widget/RadioGroup.html
http://developer.android.com/reference/android/widget/RadioGroup.LayoutParams.html
http://developer.android.com/reference/android/widget/RatingBar.html
-http://developer.android.com/reference/android/widget/RelativeLayout.html
-http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
+http://developer.android.com/reference/android/widget/RemoteViewsService.html
http://developer.android.com/reference/android/widget/ResourceCursorAdapter.html
http://developer.android.com/reference/android/widget/ResourceCursorTreeAdapter.html
http://developer.android.com/reference/android/widget/Scroller.html
http://developer.android.com/reference/android/widget/ScrollView.html
http://developer.android.com/reference/android/widget/SeekBar.html
+http://developer.android.com/reference/android/widget/ShareActionProvider.html
http://developer.android.com/reference/android/widget/SimpleAdapter.html
-http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html
http://developer.android.com/reference/android/widget/SimpleCursorTreeAdapter.html
http://developer.android.com/reference/android/widget/SimpleExpandableListAdapter.html
+http://developer.android.com/reference/android/widget/SlidingDrawer.html
+http://developer.android.com/reference/android/widget/Space.html
http://developer.android.com/reference/android/widget/Spinner.html
+http://developer.android.com/reference/android/widget/StackView.html
+http://developer.android.com/reference/android/widget/Switch.html
http://developer.android.com/reference/android/widget/TabHost.html
http://developer.android.com/reference/android/widget/TabHost.TabSpec.html
http://developer.android.com/reference/android/widget/TableLayout.html
@@ -1136,6 +984,7 @@
http://developer.android.com/reference/android/widget/TextSwitcher.html
http://developer.android.com/reference/android/widget/TextView.SavedState.html
http://developer.android.com/reference/android/widget/TimePicker.html
+http://developer.android.com/reference/android/widget/Toast.html
http://developer.android.com/reference/android/widget/ToggleButton.html
http://developer.android.com/reference/android/widget/TwoLineListItem.html
http://developer.android.com/reference/android/widget/VideoView.html
@@ -1148,632 +997,253 @@
http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
http://developer.android.com/reference/android/widget/TextView.BufferType.html
http://developer.android.com/reference/android/widget/RemoteViews.ActionException.html
-http://developer.android.com/reference/android/view/View.OnCreateContextMenuListener.html
+http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
+http://developer.android.com/resources/tutorials/views/hello-relativelayout.html
http://developer.android.com/reference/java/lang/RuntimeException.html
+http://developer.android.com/reference/android/R.attr.html
+http://developer.android.com/reference/android/util/Property.html
+http://developer.android.com/reference/java/lang/Float.html
http://developer.android.com/reference/android/util/AttributeSet.html
http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
-http://developer.android.com/reference/android/util/SparseArray.html
-http://developer.android.com/reference/android/os/Parcelable.html
-http://developer.android.com/reference/android/content/res/Configuration.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html
+http://developer.android.com/reference/java/util/ArrayList.html
+http://developer.android.com/reference/android/view/DragEvent.html
http://developer.android.com/reference/android/graphics/Canvas.html
+http://developer.android.com/reference/android/os/Parcelable.html
+http://developer.android.com/reference/android/view/MotionEvent.html
+http://developer.android.com/reference/android/view/KeyEvent.html
+http://developer.android.com/reference/java/lang/CharSequence.html
http://developer.android.com/reference/android/graphics/Rect.html
http://developer.android.com/reference/android/graphics/Region.html
+http://developer.android.com/reference/android/view/animation/Transformation.html
http://developer.android.com/reference/android/graphics/Point.html
+http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html
+http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
+http://developer.android.com/reference/android/animation/LayoutTransition.html
http://developer.android.com/reference/android/view/ViewParent.html
http://developer.android.com/reference/android/graphics/drawable/Drawable.html
http://developer.android.com/reference/android/view/ViewGroup.OnHierarchyChangeListener.html
+http://developer.android.com/reference/android/view/ActionMode.html
+http://developer.android.com/reference/android/view/ActionMode.Callback.html
+http://developer.android.com/reference/android/view/View.OnAttachStateChangeListener.html
+http://developer.android.com/reference/android/view/View.OnLayoutChangeListener.html
+http://developer.android.com/reference/android/view/ViewPropertyAnimator.html
http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html
http://developer.android.com/reference/android/view/ContextMenu.html
-http://developer.android.com/reference/android/os/IBinder.html
-http://developer.android.com/reference/java/lang/CharSequence.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeProvider.html
+http://developer.android.com/reference/android/view/animation/Animation.html
http://developer.android.com/reference/android/view/ContextMenu.ContextMenuInfo.html
+http://developer.android.com/reference/android/graphics/Bitmap.html
http://developer.android.com/reference/android/view/KeyEvent.DispatcherState.html
+http://developer.android.com/reference/android/graphics/Matrix.html
http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html
http://developer.android.com/reference/android/view/TouchDelegate.html
http://developer.android.com/reference/android/view/ViewTreeObserver.html
http://developer.android.com/reference/android/content/res/TypedArray.html
+http://developer.android.com/reference/android/view/inputmethod/InputConnection.html
http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html
http://developer.android.com/reference/android/view/KeyEvent.Callback.html
+http://developer.android.com/reference/java/lang/Runnable.html
+http://developer.android.com/reference/android/view/View.AccessibilityDelegate.html
+http://developer.android.com/reference/android/graphics/Paint.html
+http://developer.android.com/reference/android/view/View.OnClickListener.html
+http://developer.android.com/reference/android/view/View.OnCreateContextMenuListener.html
+http://developer.android.com/reference/android/view/View.OnDragListener.html
+http://developer.android.com/reference/android/view/View.OnGenericMotionListener.html
+http://developer.android.com/reference/android/view/View.OnHoverListener.html
+http://developer.android.com/reference/android/view/View.OnKeyListener.html
http://developer.android.com/reference/android/view/View.OnLongClickListener.html
-http://developer.android.com/reference/java/lang/Class.html
+http://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html
+http://developer.android.com/reference/android/view/View.OnTouchListener.html
+http://developer.android.com/reference/android/content/ClipData.html
+http://developer.android.com/reference/android/view/View.DragShadowBuilder.html
http://developer.android.com/reference/android/graphics/drawable/Drawable.Callback.html
http://developer.android.com/reference/android/view/ViewManager.html
http://developer.android.com/reference/android/view/accessibility/AccessibilityEventSource.html
-http://developer.android.com/reference/java/lang/UnsupportedOperationException.html
-http://developer.android.com/reference/android/net/sip/SipRegistrationListener.html
-http://developer.android.com/reference/android/net/sip/SipAudioCall.html
-http://developer.android.com/reference/android/net/sip/SipAudioCall.Listener.html
-http://developer.android.com/reference/android/net/sip/SipErrorCode.html
-http://developer.android.com/reference/android/net/sip/SipProfile.html
-http://developer.android.com/reference/android/net/sip/SipProfile.Builder.html
-http://developer.android.com/reference/android/net/sip/SipSession.html
-http://developer.android.com/reference/android/net/sip/SipSession.Listener.html
-http://developer.android.com/reference/android/net/sip/SipSession.State.html
-http://developer.android.com/reference/android/net/sip/SipException.html
-http://developer.android.com/reference/android/net/sip/package-descr.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLConfigChooser.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLContextFactory.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLWindowSurfaceFactory.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.GLWrapper.html
-http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
-http://developer.android.com/reference/android/opengl/GLDebugHelper.html
-http://developer.android.com/reference/android/opengl/GLES10.html
-http://developer.android.com/reference/android/opengl/GLES10Ext.html
-http://developer.android.com/reference/android/opengl/GLES11.html
-http://developer.android.com/reference/android/opengl/GLES11Ext.html
-http://developer.android.com/reference/android/opengl/GLU.html
-http://developer.android.com/reference/android/opengl/GLUtils.html
-http://developer.android.com/reference/android/opengl/Matrix.html
-http://developer.android.com/reference/android/opengl/Visibility.html
-http://developer.android.com/reference/android/opengl/GLException.html
-http://developer.android.com/reference/java/nio/ByteBuffer.html
-http://developer.android.com/reference/android/view/SurfaceView.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube1/CubeWallpaper1.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube2/CubeWallpaper2.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube2/CubeWallpaper2Settings.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/index.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/index.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/AndroidManifest.html
-http://developer.android.com/reference/android/test/AndroidTestCase.html
-http://developer.android.com/reference/android/test/ApplicationTestCase.html
-http://developer.android.com/reference/android/app/Application.html
-http://developer.android.com/reference/android/test/mock/MockContentResolver.html
-http://developer.android.com/reference/android/test/mock/MockResources.html
-http://developer.android.com/reference/android/test/mock/MockApplication.html
-http://developer.android.com/reference/android/test/mock/MockContext.html
-http://developer.android.com/reference/android/test/mock/MockContentProvider.html
-http://developer.android.com/reference/android/test/mock/MockCursor.html
-http://developer.android.com/reference/android/test/mock/MockDialogInterface.html
-http://developer.android.com/reference/android/test/mock/MockPackageManager.html
-http://developer.android.com/reference/android/test/IsolatedContext.html
-http://developer.android.com/reference/android/test/RenamingDelegatingContext.html
-http://developer.android.com/resources/samples/AlarmServiceTest
-http://developer.android.com/reference/android/os/storage/OnObbStateChangeListener.html
-http://developer.android.com/guide/topics/media/jet/jetcreator_manual.html
-http://developer.android.com/reference/java/util/List.html
-http://developer.android.com/reference/android/os/Parcelable.Creator.html
-http://developer.android.com/reference/android/os/Parcel.html
-http://developer.android.com/reference/android/content/ServiceConnection.html
-http://developer.android.com/reference/android/os/DeadObjectException.html
-http://developer.android.com/resources/samples/BackupRestore/res/index.html
-http://developer.android.com/resources/samples/BackupRestore/src/index.html
-http://developer.android.com/resources/samples/BackupRestore/AndroidManifest.html
-http://developer.android.com/reference/android/webkit/WebViewClient.html
-http://developer.android.com/resources/tutorials/views/hello-webview.html
-http://developer.android.com/reference/android/location/Geocoder.html
-http://developer.android.com/sdk/1.0_r1/upgrading.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderResult.html
-http://developer.android.com/reference/java/security/cert/CertPathParameters.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorResult.html
-http://developer.android.com/reference/java/security/cert/CertSelector.html
-http://developer.android.com/reference/java/security/cert/CertStoreParameters.html
-http://developer.android.com/reference/java/security/cert/CRLSelector.html
-http://developer.android.com/reference/java/security/cert/PolicyNode.html
-http://developer.android.com/reference/java/security/cert/X509Extension.html
-http://developer.android.com/reference/java/security/cert/Certificate.html
-http://developer.android.com/reference/java/security/cert/Certificate.CertificateRep.html
-http://developer.android.com/reference/java/security/cert/CertificateFactory.html
-http://developer.android.com/reference/java/security/cert/CertificateFactorySpi.html
-http://developer.android.com/reference/java/security/cert/CertPath.html
-http://developer.android.com/reference/java/security/cert/CertPath.CertPathRep.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilder.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderSpi.html
-http://developer.android.com/reference/java/security/cert/CertPathValidator.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorSpi.html
-http://developer.android.com/reference/java/security/cert/CertStore.html
-http://developer.android.com/reference/java/security/cert/CertStoreSpi.html
-http://developer.android.com/reference/java/security/cert/CollectionCertStoreParameters.html
-http://developer.android.com/reference/java/security/cert/CRL.html
-http://developer.android.com/reference/java/security/cert/LDAPCertStoreParameters.html
-http://developer.android.com/reference/java/security/cert/PKIXBuilderParameters.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathBuilderResult.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathChecker.html
-http://developer.android.com/reference/java/security/cert/PKIXCertPathValidatorResult.html
-http://developer.android.com/reference/java/security/cert/PKIXParameters.html
-http://developer.android.com/reference/java/security/cert/PolicyQualifierInfo.html
-http://developer.android.com/reference/java/security/cert/TrustAnchor.html
-http://developer.android.com/reference/java/security/cert/X509Certificate.html
-http://developer.android.com/reference/java/security/cert/X509CertSelector.html
-http://developer.android.com/reference/java/security/cert/X509CRL.html
-http://developer.android.com/reference/java/security/cert/X509CRLEntry.html
-http://developer.android.com/reference/java/security/cert/X509CRLSelector.html
-http://developer.android.com/reference/java/security/cert/CertificateEncodingException.html
-http://developer.android.com/reference/java/security/cert/CertificateException.html
-http://developer.android.com/reference/java/security/cert/CertificateExpiredException.html
-http://developer.android.com/reference/java/security/cert/CertificateNotYetValidException.html
-http://developer.android.com/reference/java/security/cert/CertificateParsingException.html
-http://developer.android.com/reference/java/security/cert/CertPathBuilderException.html
-http://developer.android.com/reference/java/security/cert/CertPathValidatorException.html
-http://developer.android.com/reference/java/security/cert/CertStoreException.html
-http://developer.android.com/reference/java/security/cert/CRLException.html
-http://developer.android.com/reference/java/security/cert/package-descr.html
-http://developer.android.com/resources/samples/Wiktionary/res/index.html
-http://developer.android.com/resources/samples/Wiktionary/src/index.html
-http://developer.android.com/resources/samples/Wiktionary/AndroidManifest.html
-http://developer.android.com/reference/java/lang/IllegalArgumentException.html
-http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.html
-http://developer.android.com/reference/android/Manifest.html
-http://developer.android.com/reference/android/Manifest.permission_group.html
-http://developer.android.com/reference/android/R.html
-http://developer.android.com/reference/android/R.anim.html
-http://developer.android.com/reference/android/R.array.html
-http://developer.android.com/reference/android/R.bool.html
-http://developer.android.com/reference/android/R.color.html
-http://developer.android.com/reference/android/R.dimen.html
-http://developer.android.com/reference/android/R.drawable.html
-http://developer.android.com/reference/android/R.id.html
-http://developer.android.com/reference/android/R.integer.html
-http://developer.android.com/reference/android/R.layout.html
-http://developer.android.com/reference/android/R.plurals.html
-http://developer.android.com/reference/android/R.raw.html
-http://developer.android.com/reference/android/R.string.html
-http://developer.android.com/reference/android/R.styleable.html
-http://developer.android.com/reference/android/R.xml.html
-http://developer.android.com/reference/android/package-descr.html
-http://developer.android.com/resources/tutorials/views/hello-linearlayout.html
http://developer.android.com/reference/android/view/Gravity.html
http://developer.android.com/reference/android/view/View.MeasureSpec.html
-http://developer.android.com/reference/java/nio/Buffer.html
-http://developer.android.com/reference/org/xml/sax/helpers/XMLFilterImpl.html
-http://developer.android.com/sdk/api_diff/6/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/changes-summary.html
-http://developer.android.com/reference/java/lang/Enum.html
-http://developer.android.com/reference/java/lang/Thread.html
-http://developer.android.com/reference/java/lang/Comparable.html
-http://developer.android.com/reference/java/lang/InterruptedException.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/HostNameResolver.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/LayeredSocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/SocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/PlainSocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/Scheme.html
-http://developer.android.com/reference/org/apache/http/conn/scheme/SchemeRegistry.html
-http://developer.android.com/reference/android/nfc/FormatException.html
-http://developer.android.com/reference/android/nfc/package-descr.html
-http://developer.android.com/sdk/api_diff/5/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/changes-summary.html
-http://developer.android.com/reference/java/lang/Iterable.html
-http://developer.android.com/reference/java/util/Iterator.html
-http://developer.android.com/reference/android/telephony/gsm/SmsManager.html
-http://developer.android.com/reference/android/telephony/gsm/SmsMessage.html
-http://developer.android.com/reference/android/telephony/gsm/SmsMessage.SubmitPdu.html
-http://developer.android.com/reference/android/telephony/gsm/SmsMessage.MessageClass.html
-http://developer.android.com/reference/android/telephony/gsm/package-descr.html
-http://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener.html
-http://developer.android.com/reference/android/app/KeyguardManager.OnKeyguardExitResult.html
-http://developer.android.com/reference/android/app/PendingIntent.OnFinished.html
-http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html
-http://developer.android.com/reference/android/app/ActivityGroup.html
-http://developer.android.com/reference/android/app/ActivityManager.MemoryInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.ProcessErrorStateInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RecentTaskInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html
-http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html
-http://developer.android.com/reference/android/app/AlarmManager.html
-http://developer.android.com/reference/android/app/AlertDialog.html
-http://developer.android.com/reference/android/app/AlertDialog.Builder.html
-http://developer.android.com/reference/android/app/AliasActivity.html
-http://developer.android.com/reference/android/app/DatePickerDialog.html
-http://developer.android.com/reference/android/app/ExpandableListActivity.html
-http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html
-http://developer.android.com/reference/android/app/Instrumentation.ActivityResult.html
-http://developer.android.com/reference/android/app/IntentService.html
-http://developer.android.com/reference/android/app/KeyguardManager.html
-http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html
-http://developer.android.com/reference/android/app/LauncherActivity.html
-http://developer.android.com/reference/android/app/LauncherActivity.IconResizer.html
-http://developer.android.com/reference/android/app/LauncherActivity.ListItem.html
-http://developer.android.com/reference/android/app/LocalActivityManager.html
-http://developer.android.com/reference/android/app/Notification.html
-http://developer.android.com/reference/android/app/SearchableInfo.html
-http://developer.android.com/reference/android/app/TabActivity.html
-http://developer.android.com/reference/android/app/TimePickerDialog.html
-http://developer.android.com/reference/android/app/PendingIntent.CanceledException.html
-http://developer.android.com/reference/java/io/IOException.html
-http://developer.android.com/reference/org/w3c/dom/Attr.html
-http://developer.android.com/reference/org/w3c/dom/CDATASection.html
-http://developer.android.com/reference/org/w3c/dom/CharacterData.html
-http://developer.android.com/reference/org/w3c/dom/Comment.html
-http://developer.android.com/reference/org/w3c/dom/Document.html
-http://developer.android.com/reference/org/w3c/dom/DocumentFragment.html
-http://developer.android.com/reference/org/w3c/dom/DocumentType.html
-http://developer.android.com/reference/org/w3c/dom/DOMConfiguration.html
-http://developer.android.com/reference/org/w3c/dom/DOMError.html
-http://developer.android.com/reference/org/w3c/dom/DOMErrorHandler.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementation.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementationList.html
-http://developer.android.com/reference/org/w3c/dom/DOMImplementationSource.html
-http://developer.android.com/reference/org/w3c/dom/DOMLocator.html
-http://developer.android.com/reference/org/w3c/dom/DOMStringList.html
-http://developer.android.com/reference/org/w3c/dom/Element.html
-http://developer.android.com/reference/org/w3c/dom/Entity.html
-http://developer.android.com/reference/org/w3c/dom/EntityReference.html
-http://developer.android.com/reference/org/w3c/dom/NamedNodeMap.html
-http://developer.android.com/reference/org/w3c/dom/NameList.html
-http://developer.android.com/reference/org/w3c/dom/Node.html
-http://developer.android.com/reference/org/w3c/dom/NodeList.html
-http://developer.android.com/reference/org/w3c/dom/Notation.html
-http://developer.android.com/reference/org/w3c/dom/ProcessingInstruction.html
-http://developer.android.com/reference/org/w3c/dom/Text.html
-http://developer.android.com/reference/org/w3c/dom/TypeInfo.html
-http://developer.android.com/reference/org/w3c/dom/UserDataHandler.html
-http://developer.android.com/reference/org/w3c/dom/DOMException.html
-http://developer.android.com/reference/org/w3c/dom/package-descr.html
-http://developer.android.com/reference/java/lang/IllegalStateException.html
-http://developer.android.com/reference/android/opengl/package-descr.html
-http://developer.android.com/reference/java/lang/Throwable.html
-http://developer.android.com/reference/java/lang/Exception.html
-http://developer.android.com/reference/java/lang/StackTraceElement.html
-http://developer.android.com/reference/java/io/PrintWriter.html
-http://developer.android.com/reference/java/io/PrintStream.html
-http://developer.android.com/reference/android/provider/Contacts.ContactMethodsColumns.html
-http://developer.android.com/reference/android/provider/Contacts.ExtensionsColumns.html
-http://developer.android.com/reference/android/provider/Contacts.GroupsColumns.html
-http://developer.android.com/reference/android/provider/Contacts.OrganizationColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PhotosColumns.html
-http://developer.android.com/reference/android/provider/Contacts.PresenceColumns.html
-http://developer.android.com/reference/android/provider/Contacts.SettingsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.BaseSyncColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.BaseTypes.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.CommonColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.ContactStatusColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.DataColumnsWithJoins.html
-http://developer.android.com/reference/android/provider/ContactsContract.GroupsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookupColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.PresenceColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.SettingsColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.StatusColumns.html
-http://developer.android.com/reference/android/provider/ContactsContract.SyncColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.AlbumColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.GenresColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.PlaylistsColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html
-http://developer.android.com/reference/android/provider/OpenableColumns.html
-http://developer.android.com/reference/android/provider/SyncStateContract.Columns.html
-http://developer.android.com/reference/android/provider/Browser.html
-http://developer.android.com/reference/android/provider/Browser.BookmarkColumns.html
-http://developer.android.com/reference/android/provider/Browser.SearchColumns.html
-http://developer.android.com/reference/android/provider/CallLog.html
-http://developer.android.com/reference/android/provider/CallLog.Calls.html
-http://developer.android.com/reference/android/provider/Contacts.ContactMethods.html
-http://developer.android.com/reference/android/provider/Contacts.Extensions.html
-http://developer.android.com/reference/android/provider/Contacts.GroupMembership.html
-http://developer.android.com/reference/android/provider/Contacts.Groups.html
-http://developer.android.com/reference/android/provider/Contacts.Intents.html
-http://developer.android.com/reference/android/provider/Contacts.Intents.Insert.html
-http://developer.android.com/reference/android/provider/Contacts.Intents.UI.html
-http://developer.android.com/reference/android/provider/Contacts.Organizations.html
-http://developer.android.com/reference/android/provider/Contacts.People.ContactMethods.html
-http://developer.android.com/reference/android/provider/Contacts.People.Extensions.html
-http://developer.android.com/reference/android/provider/Contacts.People.Phones.html
-http://developer.android.com/reference/android/provider/Contacts.Photos.html
-http://developer.android.com/reference/android/provider/Contacts.Settings.html
-http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Event.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.GroupMembership.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Im.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Nickname.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Note.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Organization.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Photo.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Relation.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredName.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredPostal.html
-http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Website.html
-http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html
-http://developer.android.com/reference/android/provider/ContactsContract.Contacts.AggregationSuggestions.html
-http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Data.html
-http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Photo.html
-http://developer.android.com/reference/android/provider/ContactsContract.Data.html
-http://developer.android.com/reference/android/provider/ContactsContract.Groups.html
-http://developer.android.com/reference/android/provider/ContactsContract.Intents.html
-http://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html
-http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html
-http://developer.android.com/reference/android/provider/ContactsContract.Presence.html
-http://developer.android.com/reference/android/provider/ContactsContract.QuickContact.html
+http://developer.android.com/guide/topics/ui/accessibility/service-declaration
+http://developer.android.com/reference/android/accessibilityservice/AccessibilityServiceInfo.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityRecord.html
+http://developer.android.com/reference/android/R.styleable.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityEventCompat.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/accessibility/ClockBackService.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityRecordCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.html
+http://developer.android.com/reference/android/app/Instrumentation.html
+http://developer.android.com/reference/android/view/ActionProvider.html
+http://developer.android.com/reference/android/view/MenuItem.html
+http://developer.android.com/sdk/api_diff/15/changes.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItems.html
http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html
-http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Data.html
-http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Entity.html
-http://developer.android.com/reference/android/provider/ContactsContract.RawContactsEntity.html
-http://developer.android.com/reference/android/provider/ContactsContract.Settings.html
-http://developer.android.com/reference/android/provider/ContactsContract.StatusUpdates.html
-http://developer.android.com/reference/android/provider/ContactsContract.SyncState.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Albums.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.Albums.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.Members.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.html
-http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.Members.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html
-http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.Media.html
-http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html
-http://developer.android.com/reference/android/provider/Settings.NameValueTable.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItemPhotos.html
+http://developer.android.com/reference/android/provider/CalendarContract.Colors.html
+http://developer.android.com/reference/android/provider/CalendarContract.ColorsColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.AttendeesColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.EventsColumns.html
+http://developer.android.com/reference/android/appwidget/AppWidgetHostView.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerSession.html
+http://developer.android.com/reference/android/view/textservice/SuggestionsInfo.html
+http://developer.android.com/reference/android/text/style/SuggestionSpan.html
+http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
+http://developer.android.com/reference/android/graphics/SurfaceTexture.html
+http://developer.android.com/reference/android/view/Surface.html
+http://developer.android.com/reference/android/opengl/GLES11Ext.html
http://developer.android.com/reference/android/provider/Settings.Secure.html
-http://developer.android.com/reference/android/provider/Settings.System.html
-http://developer.android.com/reference/android/provider/SyncStateContract.html
-http://developer.android.com/reference/android/provider/SyncStateContract.Constants.html
-http://developer.android.com/reference/android/provider/SyncStateContract.Helpers.html
-http://developer.android.com/reference/android/provider/UserDictionary.html
-http://developer.android.com/reference/android/provider/UserDictionary.Words.html
-http://developer.android.com/reference/android/provider/Settings.SettingNotFoundException.html
-http://developer.android.com/reference/android/content/SearchRecentSuggestionsProvider.html
-http://developer.android.com/resources/samples/JetBoy/JETBOY_content/index.html
-http://developer.android.com/resources/samples/JetBoy/res/index.html
-http://developer.android.com/resources/samples/JetBoy/src/index.html
-http://developer.android.com/resources/samples/JetBoy/AndroidManifest.html
-http://developer.android.com/reference/android/speech/RecognitionService.Callback.html
-http://developer.android.com/reference/android/speech/SpeechRecognizer.html
-http://developer.android.com/reference/android/content/ContextWrapper.html
-http://developer.android.com/reference/android/accounts/AccountManager.html
-http://developer.android.com/reference/android/text/ClipboardManager.html
-http://developer.android.com/reference/android/net/ConnectivityManager.html
-http://developer.android.com/reference/android/os/DropBoxManager.html
-http://developer.android.com/reference/android/view/LayoutInflater.html
-http://developer.android.com/reference/android/os/PowerManager.html
-http://developer.android.com/reference/android/os/Vibrator.html
-http://developer.android.com/reference/android/net/wifi/WifiManager.html
-http://developer.android.com/reference/android/view/WindowManager.html
-http://developer.android.com/reference/java/io/FileDescriptor.html
-http://developer.android.com/reference/java/lang/SecurityException.html
-http://developer.android.com/reference/android/content/pm/ApplicationInfo.html
-http://developer.android.com/reference/android/content/res/AssetManager.html
-http://developer.android.com/reference/java/lang/ClassLoader.html
-http://developer.android.com/reference/android/os/Looper.html
-http://developer.android.com/reference/android/content/res/Resources.Theme.html
-http://developer.android.com/reference/android/content/IntentFilter.html
-http://developer.android.com/reference/android/content/IntentSender.html
-http://developer.android.com/reference/java/util/Formatter.html
-http://developer.android.com/reference/android/content/ComponentCallbacks.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/ExampleAgent.html
-http://developer.android.com/resources/samples/Snake/src/com/index.html
-http://developer.android.com/reference/org/apache/http/client/protocol/ClientContext.html
-http://developer.android.com/reference/org/apache/http/client/protocol/ClientContextConfigurer.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestAddCookies.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestDefaultHeaders.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestProxyAuthentication.html
-http://developer.android.com/reference/org/apache/http/client/protocol/RequestTargetAuthentication.html
-http://developer.android.com/reference/org/apache/http/client/protocol/ResponseProcessCookies.html
-http://developer.android.com/reference/org/apache/http/client/protocol/package-descr.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpContext.html
-http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/PictureDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/OvalShape.html
-http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManager.html
-http://developer.android.com/reference/java/net/InetAddress.html
-http://developer.android.com/reference/org/apache/http/HttpConnectionMetrics.html
-http://developer.android.com/reference/javax/net/ssl/SSLSession.html
-http://developer.android.com/reference/org/apache/http/HttpResponse.html
-http://developer.android.com/reference/org/apache/http/HttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/HttpConnection.html
-http://developer.android.com/reference/org/apache/http/HttpInetConnection.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionReleaseTrigger.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html
-http://developer.android.com/reference/org/apache/http/params/HttpParams.html
-http://developer.android.com/reference/org/apache/http/HttpHost.html
-http://developer.android.com/reference/javax/net/ssl/SSLSocket.html
-http://developer.android.com/reference/org/apache/http/HttpException.html
-http://developer.android.com/reference/org/apache/http/ConnectionReuseStrategy.html
-http://developer.android.com/reference/java/io/InterruptedIOException.html
-http://developer.android.com/reference/org/apache/http/FormattedHeader.html
-http://developer.android.com/reference/org/apache/http/Header.html
-http://developer.android.com/reference/org/apache/http/HeaderElement.html
-http://developer.android.com/reference/org/apache/http/HeaderElementIterator.html
-http://developer.android.com/reference/org/apache/http/HeaderIterator.html
-http://developer.android.com/reference/org/apache/http/HttpEntity.html
-http://developer.android.com/reference/org/apache/http/HttpMessage.html
-http://developer.android.com/reference/org/apache/http/HttpRequestFactory.html
-http://developer.android.com/reference/org/apache/http/HttpResponseFactory.html
-http://developer.android.com/reference/org/apache/http/HttpResponseInterceptor.html
-http://developer.android.com/reference/org/apache/http/HttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/HttpStatus.html
-http://developer.android.com/reference/org/apache/http/NameValuePair.html
-http://developer.android.com/reference/org/apache/http/ReasonPhraseCatalog.html
-http://developer.android.com/reference/org/apache/http/RequestLine.html
-http://developer.android.com/reference/org/apache/http/StatusLine.html
-http://developer.android.com/reference/org/apache/http/TokenIterator.html
-http://developer.android.com/reference/org/apache/http/HttpVersion.html
-http://developer.android.com/reference/org/apache/http/ProtocolVersion.html
-http://developer.android.com/reference/org/apache/http/ConnectionClosedException.html
-http://developer.android.com/reference/org/apache/http/MalformedChunkCodingException.html
-http://developer.android.com/reference/org/apache/http/MethodNotSupportedException.html
-http://developer.android.com/reference/org/apache/http/NoHttpResponseException.html
-http://developer.android.com/reference/org/apache/http/ParseException.html
-http://developer.android.com/reference/org/apache/http/ProtocolException.html
-http://developer.android.com/reference/org/apache/http/UnsupportedHttpVersionException.html
-http://developer.android.com/reference/org/apache/http/package-descr.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionManagerFactory.html
-http://developer.android.com/reference/org/apache/http/conn/ClientConnectionRequest.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionKeepAliveStrategy.html
-http://developer.android.com/reference/org/apache/http/conn/EofSensorWatcher.html
-http://developer.android.com/reference/org/apache/http/conn/BasicEofSensorWatcher.html
-http://developer.android.com/reference/org/apache/http/conn/BasicManagedEntity.html
-http://developer.android.com/reference/org/apache/http/conn/EofSensorInputStream.html
-http://developer.android.com/reference/org/apache/http/conn/MultihomePlainSocketFactory.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectionPoolTimeoutException.html
-http://developer.android.com/reference/org/apache/http/conn/ConnectTimeoutException.html
-http://developer.android.com/reference/org/apache/http/conn/HttpHostConnectException.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserFactory.html
-http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserException.html
-http://developer.android.com/reference/java/util/regex/MatchResult.html
-http://developer.android.com/reference/java/util/regex/Matcher.html
-http://developer.android.com/reference/java/util/regex/Pattern.html
-http://developer.android.com/reference/java/util/regex/PatternSyntaxException.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageParser.html
-http://developer.android.com/reference/org/apache/http/message/LineParser.html
-http://developer.android.com/reference/org/apache/http/io/SessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/io/HttpMessageParser.html
-http://developer.android.com/reference/android/content/pm/ApplicationInfo.DisplayNameComparator.html
-http://developer.android.com/reference/android/content/pm/ComponentInfo.html
-http://developer.android.com/reference/android/content/pm/ConfigurationInfo.html
-http://developer.android.com/reference/android/content/pm/FeatureInfo.html
-http://developer.android.com/reference/android/content/pm/InstrumentationInfo.html
-http://developer.android.com/reference/android/content/pm/LabeledIntent.html
-http://developer.android.com/reference/android/content/pm/PackageItemInfo.DisplayNameComparator.html
-http://developer.android.com/reference/android/content/pm/PackageStats.html
-http://developer.android.com/reference/android/content/pm/PathPermission.html
-http://developer.android.com/reference/android/content/pm/PermissionGroupInfo.html
-http://developer.android.com/reference/android/content/pm/PermissionInfo.html
-http://developer.android.com/reference/android/content/pm/ProviderInfo.html
-http://developer.android.com/reference/android/content/pm/ResolveInfo.html
-http://developer.android.com/reference/android/content/pm/ResolveInfo.DisplayNameComparator.html
-http://developer.android.com/reference/android/content/pm/ServiceInfo.html
-http://developer.android.com/reference/android/content/pm/Signature.html
-http://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html
-http://developer.android.com/reference/android/content/res/XmlResourceParser.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.html
+http://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html
+http://developer.android.com/reference/android/database/CrossProcessCursorWrapper.html
+http://developer.android.com/reference/android/database/CrossProcessCursor.html
+http://developer.android.com/reference/android/database/CursorWindow.html
+http://developer.android.com/reference/android/media/MediaMetadataRetriever.html
+http://developer.android.com/reference/android/media/CamcorderProfile.html
+http://developer.android.com/reference/android/hardware/Camera.Parameters.html
+http://developer.android.com/reference/android/hardware/Camera.html
+http://developer.android.com/reference/android/Manifest.permission.html
+http://developer.android.com/reference/android/animation/Animator.AnimatorListener.html
+http://developer.android.com/reference/android/animation/LayoutTransition.TransitionListener.html
+http://developer.android.com/reference/android/animation/TimeAnimator.TimeListener.html
+http://developer.android.com/reference/android/animation/TimeInterpolator.html
+http://developer.android.com/reference/android/animation/ValueAnimator.AnimatorUpdateListener.html
+http://developer.android.com/reference/android/animation/Animator.html
+http://developer.android.com/reference/android/animation/AnimatorInflater.html
+http://developer.android.com/reference/android/animation/AnimatorListenerAdapter.html
+http://developer.android.com/reference/android/animation/AnimatorSet.html
+http://developer.android.com/reference/android/animation/AnimatorSet.Builder.html
+http://developer.android.com/reference/android/animation/ArgbEvaluator.html
+http://developer.android.com/reference/android/animation/FloatEvaluator.html
+http://developer.android.com/reference/android/animation/IntEvaluator.html
+http://developer.android.com/reference/android/animation/Keyframe.html
+http://developer.android.com/reference/android/animation/ObjectAnimator.html
+http://developer.android.com/reference/android/animation/PropertyValuesHolder.html
+http://developer.android.com/reference/android/animation/TimeAnimator.html
+http://developer.android.com/reference/android/animation/ValueAnimator.html
+http://developer.android.com/reference/android/view/ActionProvider.VisibilityListener.html
+http://developer.android.com/reference/android/view/Choreographer.FrameCallback.html
+http://developer.android.com/reference/android/view/CollapsibleActionView.html
+http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html
+http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html
+http://developer.android.com/reference/android/view/InputQueue.Callback.html
+http://developer.android.com/reference/android/view/LayoutInflater.Factory.html
+http://developer.android.com/reference/android/view/LayoutInflater.Factory2.html
http://developer.android.com/reference/android/view/LayoutInflater.Filter.html
-http://developer.android.com/reference/android/widget/RemoteViews.RemoteView.html
-http://developer.android.com/reference/java/io/Serializable.html
-http://developer.android.com/reference/java/util/Date.html
-http://developer.android.com/reference/java/util/Collection.html
-http://developer.android.com/reference/java/lang/IllegalMonitorStateException.html
-http://developer.android.com/reference/java/util/Calendar.html
-http://developer.android.com/reference/java/text/DateFormat.html
-http://developer.android.com/reference/junit/framework/TestSuite.html
-http://developer.android.com/reference/android/test/PerformanceTestCase.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethod.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethod.SessionCallback.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.EventCallback.html
-http://developer.android.com/reference/android/view/inputmethod/CompletionInfo.html
-http://developer.android.com/reference/android/view/inputmethod/ExtractedText.html
-http://developer.android.com/reference/android/view/inputmethod/ExtractedTextRequest.html
-http://developer.android.com/reference/android/view/inputmethod/InputBinding.html
-http://developer.android.com/reference/android/view/inputmethod/InputMethodInfo.html
-http://developer.android.com/reference/android/text/TextUtils.html
+http://developer.android.com/reference/android/view/MenuItem.OnActionExpandListener.html
+http://developer.android.com/reference/android/view/MenuItem.OnMenuItemClickListener.html
+http://developer.android.com/reference/android/view/ScaleGestureDetector.OnScaleGestureListener.html
+http://developer.android.com/reference/android/view/SubMenu.html
+http://developer.android.com/reference/android/view/SurfaceHolder.html
+http://developer.android.com/reference/android/view/SurfaceHolder.Callback.html
+http://developer.android.com/reference/android/view/SurfaceHolder.Callback2.html
+http://developer.android.com/reference/android/view/TextureView.SurfaceTextureListener.html
+http://developer.android.com/reference/android/view/ViewStub.OnInflateListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener.html
+http://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener.html
+http://developer.android.com/reference/android/view/Window.Callback.html
+http://developer.android.com/reference/android/view/WindowManager.html
+http://developer.android.com/reference/android/view/AbsSavedState.html
+http://developer.android.com/reference/android/view/Choreographer.html
+http://developer.android.com/reference/android/view/ContextThemeWrapper.html
+http://developer.android.com/reference/android/view/Display.html
+http://developer.android.com/reference/android/view/FocusFinder.html
+http://developer.android.com/reference/android/view/GestureDetector.html
+http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html
+http://developer.android.com/reference/android/view/HapticFeedbackConstants.html
+http://developer.android.com/reference/android/view/InputDevice.html
+http://developer.android.com/reference/android/view/InputDevice.MotionRange.html
+http://developer.android.com/reference/android/view/InputEvent.html
+http://developer.android.com/reference/android/view/InputQueue.html
http://developer.android.com/reference/android/view/KeyCharacterMap.html
-http://developer.android.com/reference/android/test/PerformanceTestCase.Intermediates.html
-http://developer.android.com/reference/android/test/TestSuiteProvider.html
-http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase.html
-http://developer.android.com/reference/android/test/ActivityTestCase.html
-http://developer.android.com/reference/android/test/AndroidTestRunner.html
-http://developer.android.com/reference/android/test/InstrumentationTestSuite.html
-http://developer.android.com/reference/android/test/ProviderTestCase.html
-http://developer.android.com/reference/android/test/SingleLaunchActivityTestCase.html
-http://developer.android.com/reference/android/test/SyncBaseInstrumentation.html
-http://developer.android.com/reference/android/test/AssertionFailedError.html
-http://developer.android.com/reference/android/test/ComparisonFailure.html
-http://developer.android.com/reference/java/util/Properties.html
-http://developer.android.com/reference/java/math/BigInteger.html
-http://developer.android.com/reference/java/math/BigDecimal.html
-http://developer.android.com/reference/java/util/GregorianCalendar.html
-http://developer.android.com/reference/java/lang/NullPointerException.html
-http://developer.android.com/reference/javax/xml/XMLConstants.html
-http://developer.android.com/resources/samples/AccessibilityService/res/index.html
-http://developer.android.com/resources/samples/AccessibilityService/src/index.html
-http://developer.android.com/resources/samples/AccessibilityService/AndroidManifest.html
-http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html
-http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
-http://developer.android.com/reference/android/appwidget/AppWidgetManager.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntry.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteTracker.html
+http://developer.android.com/reference/android/view/KeyCharacterMap.KeyData.html
+http://developer.android.com/reference/android/view/MenuInflater.html
+http://developer.android.com/reference/android/view/MotionEvent.PointerCoords.html
+http://developer.android.com/reference/android/view/MotionEvent.PointerProperties.html
+http://developer.android.com/reference/android/view/OrientationEventListener.html
+http://developer.android.com/reference/android/view/OrientationListener.html
+http://developer.android.com/reference/android/view/ScaleGestureDetector.html
+http://developer.android.com/reference/android/view/ScaleGestureDetector.SimpleOnScaleGestureListener.html
+http://developer.android.com/reference/android/view/SoundEffectConstants.html
+http://developer.android.com/reference/android/view/SurfaceView.html
+http://developer.android.com/reference/android/view/TextureView.html
+http://developer.android.com/reference/android/view/VelocityTracker.html
+http://developer.android.com/reference/android/view/View.BaseSavedState.html
+http://developer.android.com/reference/android/view/ViewConfiguration.html
+http://developer.android.com/reference/android/view/ViewDebug.html
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
-http://developer.android.com/reference/java/net/ContentHandlerFactory.html
-http://developer.android.com/reference/java/net/CookiePolicy.html
-http://developer.android.com/reference/java/net/CookieStore.html
-http://developer.android.com/reference/java/net/DatagramSocketImplFactory.html
-http://developer.android.com/reference/java/net/FileNameMap.html
-http://developer.android.com/reference/java/net/SocketImplFactory.html
-http://developer.android.com/reference/java/net/SocketOptions.html
-http://developer.android.com/reference/java/net/URLStreamHandlerFactory.html
-http://developer.android.com/reference/java/net/Authenticator.html
-http://developer.android.com/reference/java/net/CacheRequest.html
-http://developer.android.com/reference/java/net/CacheResponse.html
-http://developer.android.com/reference/java/net/ContentHandler.html
-http://developer.android.com/reference/java/net/CookieHandler.html
-http://developer.android.com/reference/java/net/DatagramPacket.html
-http://developer.android.com/reference/java/net/DatagramSocket.html
-http://developer.android.com/reference/java/net/DatagramSocketImpl.html
-http://developer.android.com/reference/java/net/HttpCookie.html
-http://developer.android.com/reference/java/net/Inet4Address.html
-http://developer.android.com/reference/java/net/Inet6Address.html
-http://developer.android.com/reference/java/net/InetSocketAddress.html
-http://developer.android.com/reference/java/net/JarURLConnection.html
-http://developer.android.com/reference/java/net/MulticastSocket.html
-http://developer.android.com/reference/java/net/NetPermission.html
-http://developer.android.com/reference/java/net/PasswordAuthentication.html
-http://developer.android.com/reference/java/net/Proxy.html
-http://developer.android.com/reference/java/net/ProxySelector.html
-http://developer.android.com/reference/java/net/ResponseCache.html
-http://developer.android.com/reference/java/net/SecureCacheResponse.html
-http://developer.android.com/reference/java/net/ServerSocket.html
-http://developer.android.com/reference/java/net/Socket.html
-http://developer.android.com/reference/java/net/SocketAddress.html
-http://developer.android.com/reference/java/net/SocketImpl.html
-http://developer.android.com/reference/java/net/SocketPermission.html
-http://developer.android.com/reference/java/net/URI.html
-http://developer.android.com/reference/java/net/URL.html
-http://developer.android.com/reference/java/net/URLClassLoader.html
-http://developer.android.com/reference/java/net/URLConnection.html
-http://developer.android.com/reference/java/net/URLDecoder.html
-http://developer.android.com/reference/java/net/URLEncoder.html
-http://developer.android.com/reference/java/net/URLStreamHandler.html
-http://developer.android.com/reference/java/net/Authenticator.RequestorType.html
-http://developer.android.com/reference/java/net/Proxy.Type.html
-http://developer.android.com/reference/java/net/BindException.html
-http://developer.android.com/reference/java/net/ConnectException.html
-http://developer.android.com/reference/java/net/HttpRetryException.html
-http://developer.android.com/reference/java/net/MalformedURLException.html
-http://developer.android.com/reference/java/net/NoRouteToHostException.html
-http://developer.android.com/reference/java/net/PortUnreachableException.html
-http://developer.android.com/reference/java/net/ProtocolException.html
-http://developer.android.com/reference/java/net/SocketException.html
-http://developer.android.com/reference/java/net/SocketTimeoutException.html
-http://developer.android.com/reference/java/net/UnknownHostException.html
-http://developer.android.com/reference/java/net/UnknownServiceException.html
-http://developer.android.com/reference/java/net/URISyntaxException.html
-http://developer.android.com/reference/android/graphics/drawable/Animatable.html
-http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
-http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html
-http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.DrawableContainerState.html
-http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/InsetDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/PaintDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ScaleDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.ShaderFactory.html
-http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
-http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html
-http://developer.android.com/reference/android/graphics/drawable/package-descr.html
-http://developer.android.com/reference/java/lang/IndexOutOfBoundsException.html
-http://developer.android.com/reference/java/nio/IntBuffer.html
-http://developer.android.com/reference/java/nio/FloatBuffer.html
-http://developer.android.com/reference/org/json/JSONArray.html
-http://developer.android.com/reference/org/json/JSONObject.html
-http://developer.android.com/reference/org/json/JSONStringer.html
-http://developer.android.com/reference/org/json/JSONTokener.html
-http://developer.android.com/reference/org/json/JSONException.html
+http://developer.android.com/reference/android/view/Window.html
+http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
+http://developer.android.com/reference/android/view/ViewDebug.HierarchyTraceType.html
+http://developer.android.com/reference/android/view/ViewDebug.RecyclerTraceType.html
+http://developer.android.com/reference/android/view/InflateException.html
+http://developer.android.com/reference/android/view/KeyCharacterMap.UnavailableException.html
+http://developer.android.com/reference/android/view/Surface.OutOfResourcesException.html
+http://developer.android.com/reference/android/view/SurfaceHolder.BadSurfaceTypeException.html
+http://developer.android.com/reference/android/view/WindowManager.BadTokenException.html
+http://developer.android.com/reference/android/webkit/WebView.html
+http://developer.android.com/reference/android/webkit/WebSettings.html
+http://developer.android.com/reference/android/webkit/WebViewClient.html
+http://developer.android.com/resources/tutorials/views/hello-webview.html
+http://developer.android.com/reference/org/apache/http/auth/AuthScheme.html
+http://developer.android.com/reference/org/apache/http/auth/AuthSchemeFactory.html
+http://developer.android.com/reference/org/apache/http/auth/Credentials.html
+http://developer.android.com/reference/org/apache/http/auth/AUTH.html
+http://developer.android.com/reference/org/apache/http/auth/AuthSchemeRegistry.html
+http://developer.android.com/reference/org/apache/http/auth/AuthScope.html
+http://developer.android.com/reference/org/apache/http/auth/AuthState.html
+http://developer.android.com/reference/org/apache/http/auth/BasicUserPrincipal.html
+http://developer.android.com/reference/org/apache/http/auth/NTCredentials.html
+http://developer.android.com/reference/org/apache/http/auth/NTUserPrincipal.html
+http://developer.android.com/reference/org/apache/http/auth/UsernamePasswordCredentials.html
+http://developer.android.com/reference/org/apache/http/auth/AuthenticationException.html
+http://developer.android.com/reference/org/apache/http/auth/InvalidCredentialsException.html
+http://developer.android.com/reference/org/apache/http/auth/MalformedChallengeException.html
+http://developer.android.com/reference/android/media/AudioManager.html
+http://developer.android.com/reference/android/view/animation/Interpolator.html
+http://developer.android.com/reference/android/view/animation/AccelerateDecelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AccelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AlphaAnimation.html
+http://developer.android.com/reference/android/view/animation/Animation.Description.html
+http://developer.android.com/reference/android/view/animation/AnimationSet.html
+http://developer.android.com/reference/android/view/animation/AnimationUtils.html
+http://developer.android.com/reference/android/view/animation/AnticipateInterpolator.html
+http://developer.android.com/reference/android/view/animation/AnticipateOvershootInterpolator.html
+http://developer.android.com/reference/android/view/animation/BounceInterpolator.html
+http://developer.android.com/reference/android/view/animation/CycleInterpolator.html
+http://developer.android.com/reference/android/view/animation/DecelerateInterpolator.html
+http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html
+http://developer.android.com/reference/android/view/animation/GridLayoutAnimationController.AnimationParameters.html
+http://developer.android.com/reference/android/view/animation/LayoutAnimationController.AnimationParameters.html
+http://developer.android.com/reference/android/view/animation/LinearInterpolator.html
+http://developer.android.com/reference/android/view/animation/OvershootInterpolator.html
+http://developer.android.com/reference/android/view/animation/RotateAnimation.html
+http://developer.android.com/reference/android/view/animation/ScaleAnimation.html
+http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
+http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
+http://developer.android.com/reference/org/xmlpull/v1/sax2/Driver.html
+http://developer.android.com/reference/android/media/effect/EffectUpdateListener.html
+http://developer.android.com/reference/android/media/effect/Effect.html
+http://developer.android.com/reference/android/media/effect/EffectContext.html
+http://developer.android.com/reference/android/media/effect/EffectFactory.html
+http://developer.android.com/reference/android/opengl/GLES20.html
+http://developer.android.com/reference/android/provider/CalendarContract.Calendars.html
+http://developer.android.com/reference/android/provider/CalendarContract.Events.html
+http://developer.android.com/reference/android/provider/CalendarContract.Attendees.html
+http://developer.android.com/reference/android/provider/CalendarContract.Reminders.html
+http://developer.android.com/reference/android/provider/CalendarContract.html
+http://developer.android.com/reference/android/provider/CalendarContract.Instances.html
+http://developer.android.com/reference/android/content/AsyncQueryHandler.html
+http://developer.android.com/reference/android/provider/CalendarContract.SyncColumns.html
+http://developer.android.com/reference/android/accounts/AccountManager.html
+http://developer.android.com/reference/java/util/TimeZone.html
+http://developer.android.com/reference/android/provider/CalendarContract.RemindersColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarCache.html
+http://developer.android.com/resources/tutorials/views/hello-datepicker.html
+http://developer.android.com/reference/android/app/DatePickerDialog.html
http://developer.android.com/reference/java/security/acl/Acl.html
http://developer.android.com/reference/java/security/acl/AclEntry.html
http://developer.android.com/reference/java/security/acl/Group.html
@@ -1782,460 +1252,178 @@
http://developer.android.com/reference/java/security/acl/AclNotFoundException.html
http://developer.android.com/reference/java/security/acl/LastOwnerException.html
http://developer.android.com/reference/java/security/acl/NotOwnerException.html
-http://developer.android.com/reference/java/security/acl/package-descr.html
-http://developer.android.com/reference/java/security/PublicKey.html
-http://developer.android.com/reference/org/apache/http/impl/entity/EntityDeserializer.html
-http://developer.android.com/reference/org/apache/http/impl/entity/EntitySerializer.html
-http://developer.android.com/reference/org/apache/http/impl/entity/LaxContentLengthStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/entity/StrictContentLengthStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/entity/package-descr.html
-http://developer.android.com/reference/android/content/Intent.ShortcutIconResource.html
-http://developer.android.com/reference/android/widget/package-descr.html
-http://developer.android.com/reference/java/nio/channels/ByteChannel.html
-http://developer.android.com/reference/java/nio/channels/Channel.html
-http://developer.android.com/reference/java/nio/channels/GatheringByteChannel.html
-http://developer.android.com/reference/java/nio/channels/InterruptibleChannel.html
-http://developer.android.com/reference/java/nio/channels/ReadableByteChannel.html
-http://developer.android.com/reference/java/nio/channels/ScatteringByteChannel.html
-http://developer.android.com/reference/java/nio/channels/WritableByteChannel.html
-http://developer.android.com/reference/java/nio/channels/Channels.html
-http://developer.android.com/reference/java/nio/channels/DatagramChannel.html
-http://developer.android.com/reference/java/nio/channels/FileChannel.html
-http://developer.android.com/reference/java/nio/channels/FileChannel.MapMode.html
-http://developer.android.com/reference/java/nio/channels/FileLock.html
-http://developer.android.com/reference/java/nio/channels/Pipe.html
-http://developer.android.com/reference/java/nio/channels/Pipe.SinkChannel.html
-http://developer.android.com/reference/java/nio/channels/Pipe.SourceChannel.html
-http://developer.android.com/reference/java/nio/channels/SelectableChannel.html
-http://developer.android.com/reference/java/nio/channels/SelectionKey.html
-http://developer.android.com/reference/java/nio/channels/Selector.html
-http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html
-http://developer.android.com/reference/java/nio/channels/SocketChannel.html
-http://developer.android.com/reference/java/nio/channels/AlreadyConnectedException.html
-http://developer.android.com/reference/java/nio/channels/AsynchronousCloseException.html
-http://developer.android.com/reference/java/nio/channels/CancelledKeyException.html
-http://developer.android.com/reference/java/nio/channels/ClosedByInterruptException.html
-http://developer.android.com/reference/java/nio/channels/ClosedChannelException.html
-http://developer.android.com/reference/java/nio/channels/ClosedSelectorException.html
-http://developer.android.com/reference/java/nio/channels/ConnectionPendingException.html
-http://developer.android.com/reference/java/nio/channels/FileLockInterruptionException.html
-http://developer.android.com/reference/java/nio/channels/IllegalBlockingModeException.html
-http://developer.android.com/reference/java/nio/channels/IllegalSelectorException.html
-http://developer.android.com/reference/java/nio/channels/NoConnectionPendingException.html
-http://developer.android.com/reference/java/nio/channels/NonReadableChannelException.html
-http://developer.android.com/reference/java/nio/channels/NonWritableChannelException.html
-http://developer.android.com/reference/java/nio/channels/NotYetBoundException.html
-http://developer.android.com/reference/java/nio/channels/NotYetConnectedException.html
-http://developer.android.com/reference/java/nio/channels/OverlappingFileLockException.html
-http://developer.android.com/reference/java/nio/channels/UnresolvedAddressException.html
-http://developer.android.com/reference/java/nio/channels/UnsupportedAddressTypeException.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLSurface.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGL10.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLDisplay.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLConfig.html
-http://developer.android.com/reference/javax/xml/transform/dom/DOMSource.html
-http://developer.android.com/reference/javax/xml/transform/sax/SAXSource.html
-http://developer.android.com/reference/javax/xml/transform/stream/StreamSource.html
-http://developer.android.com/reference/java/lang/Cloneable.html
-http://developer.android.com/reference/java/util/jar/JarEntry.html
-http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html
-http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html
-http://developer.android.com/reference/android/view/InputQueue.Callback.html
-http://developer.android.com/reference/android/view/LayoutInflater.Factory.html
-http://developer.android.com/reference/android/view/MenuItem.html
-http://developer.android.com/reference/android/view/MenuItem.OnMenuItemClickListener.html
-http://developer.android.com/reference/android/view/ScaleGestureDetector.OnScaleGestureListener.html
-http://developer.android.com/reference/android/view/SubMenu.html
-http://developer.android.com/reference/android/view/SurfaceHolder.Callback.html
-http://developer.android.com/reference/android/view/ViewStub.OnInflateListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener.html
-http://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener.html
-http://developer.android.com/reference/android/view/Window.Callback.html
-http://developer.android.com/reference/android/view/AbsSavedState.html
-http://developer.android.com/reference/android/view/ContextThemeWrapper.html
-http://developer.android.com/reference/android/view/Display.html
-http://developer.android.com/reference/android/view/FocusFinder.html
-http://developer.android.com/reference/android/view/GestureDetector.html
-http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html
-http://developer.android.com/reference/android/view/HapticFeedbackConstants.html
-http://developer.android.com/reference/android/view/InputDevice.MotionRange.html
-http://developer.android.com/reference/android/view/KeyCharacterMap.KeyData.html
-http://developer.android.com/reference/android/view/MotionEvent.PointerCoords.html
-http://developer.android.com/reference/android/view/OrientationEventListener.html
-http://developer.android.com/reference/android/view/OrientationListener.html
-http://developer.android.com/reference/android/view/ScaleGestureDetector.SimpleOnScaleGestureListener.html
-http://developer.android.com/reference/android/view/SoundEffectConstants.html
-http://developer.android.com/reference/android/view/Surface.html
-http://developer.android.com/reference/android/view/VelocityTracker.html
-http://developer.android.com/reference/android/view/View.BaseSavedState.html
-http://developer.android.com/reference/android/view/ViewDebug.html
-http://developer.android.com/reference/android/view/ViewStub.html
-http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html
-http://developer.android.com/reference/android/view/ViewDebug.HierarchyTraceType.html
-http://developer.android.com/reference/android/view/ViewDebug.RecyclerTraceType.html
-http://developer.android.com/reference/android/view/InflateException.html
-http://developer.android.com/reference/android/view/Surface.OutOfResourcesException.html
-http://developer.android.com/reference/android/view/SurfaceHolder.BadSurfaceTypeException.html
-http://developer.android.com/reference/android/view/WindowManager.BadTokenException.html
-http://developer.android.com/resources/tutorials/views/hello-datepicker.html
-http://developer.android.com/reference/java/util/TimeZone.html
-http://developer.android.com/reference/android/util/TimeFormatException.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/index.html
-http://developer.android.com/reference/android/util/Printer.html
-http://developer.android.com/reference/android/util/Base64.html
-http://developer.android.com/reference/android/util/Base64InputStream.html
-http://developer.android.com/reference/android/util/Base64OutputStream.html
-http://developer.android.com/reference/android/util/Config.html
-http://developer.android.com/reference/android/util/DebugUtils.html
-http://developer.android.com/reference/android/util/EventLog.html
-http://developer.android.com/reference/android/util/EventLog.Event.html
-http://developer.android.com/reference/android/util/EventLogTags.html
-http://developer.android.com/reference/android/util/EventLogTags.Description.html
-http://developer.android.com/reference/android/util/FloatMath.html
-http://developer.android.com/reference/android/util/LogPrinter.html
-http://developer.android.com/reference/android/util/MonthDisplayHelper.html
-http://developer.android.com/reference/android/util/Pair.html
-http://developer.android.com/reference/android/util/Patterns.html
-http://developer.android.com/reference/android/util/PrintStreamPrinter.html
-http://developer.android.com/reference/android/util/PrintWriterPrinter.html
-http://developer.android.com/reference/android/util/SparseBooleanArray.html
-http://developer.android.com/reference/android/util/SparseIntArray.html
-http://developer.android.com/reference/android/util/StateSet.html
-http://developer.android.com/reference/android/util/StringBuilderPrinter.html
-http://developer.android.com/reference/android/util/TimeUtils.html
-http://developer.android.com/reference/android/util/TimingLogger.html
-http://developer.android.com/reference/android/util/TypedValue.html
-http://developer.android.com/reference/android/util/Xml.html
-http://developer.android.com/reference/android/util/Xml.Encoding.html
-http://developer.android.com/reference/android/util/AndroidException.html
-http://developer.android.com/reference/android/util/AndroidRuntimeException.html
-http://developer.android.com/resources/samples/JetBoy/src/com/index.html
-http://developer.android.com/reference/android/text/method/MetaKeyKeyListener.html
-http://developer.android.com/reference/android/text/Spannable.html
-http://developer.android.com/reference/android/text/Editable.html
-http://developer.android.com/reference/android/os/Handler.Callback.html
-http://developer.android.com/reference/android/os/IBinder.DeathRecipient.html
-http://developer.android.com/reference/android/os/IInterface.html
-http://developer.android.com/reference/android/os/MessageQueue.IdleHandler.html
-http://developer.android.com/reference/android/os/RecoverySystem.ProgressListener.html
-http://developer.android.com/reference/android/os/AsyncTask.html
-http://developer.android.com/reference/android/os/BatteryManager.html
-http://developer.android.com/reference/android/os/Binder.html
-http://developer.android.com/reference/android/os/Build.VERSION.html
-http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
-http://developer.android.com/reference/android/os/ConditionVariable.html
-http://developer.android.com/reference/android/os/CountDownTimer.html
-http://developer.android.com/reference/android/os/Debug.InstructionCount.html
-http://developer.android.com/reference/android/os/Debug.MemoryInfo.html
-http://developer.android.com/reference/android/os/DropBoxManager.Entry.html
-http://developer.android.com/reference/android/os/FileObserver.html
-http://developer.android.com/reference/android/os/HandlerThread.html
-http://developer.android.com/reference/android/os/MemoryFile.html
-http://developer.android.com/reference/android/os/Message.html
-http://developer.android.com/reference/android/os/MessageQueue.html
-http://developer.android.com/reference/android/os/Messenger.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseInputStream.html
-http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseOutputStream.html
-http://developer.android.com/reference/android/os/ParcelUuid.html
-http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
-http://developer.android.com/reference/android/os/RecoverySystem.html
-http://developer.android.com/reference/android/os/RemoteCallbackList.html
-http://developer.android.com/reference/android/os/ResultReceiver.html
-http://developer.android.com/reference/android/os/StatFs.html
-http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.Builder.html
-http://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder.html
-http://developer.android.com/reference/android/os/TokenWatcher.html
-http://developer.android.com/reference/android/os/AsyncTask.Status.html
-http://developer.android.com/reference/android/os/BadParcelableException.html
-http://developer.android.com/reference/android/os/ParcelFormatException.html
-http://developer.android.com/reference/android/os/RemoteException.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngine.html
-http://developer.android.com/reference/org/apache/http/impl/auth/AuthSchemeBase.html
-http://developer.android.com/reference/org/apache/http/impl/auth/BasicScheme.html
-http://developer.android.com/reference/org/apache/http/impl/auth/BasicSchemeFactory.html
-http://developer.android.com/reference/org/apache/http/impl/auth/DigestScheme.html
-http://developer.android.com/reference/org/apache/http/impl/auth/DigestSchemeFactory.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMScheme.html
-http://developer.android.com/reference/org/apache/http/impl/auth/RFC2617Scheme.html
-http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngineException.html
-http://developer.android.com/reference/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.html
-http://developer.android.com/reference/android/text/TextWatcher.html
-http://developer.android.com/reference/android/telephony/cdma/CdmaCellLocation.html
-http://developer.android.com/reference/android/telephony/cdma/package-descr.html
-http://developer.android.com/resources/samples/BackupRestore/res/layout/index.html
-http://developer.android.com/resources/samples/BackupRestore/res/values/index.html
-http://developer.android.com/reference/java/util/AbstractSet.html
+http://developer.android.com/shareables/training/OpenGLES.zip
+http://developer.android.com/reference/android/opengl/GLSurfaceView.html
+http://developer.android.com/reference/org/apache/http/client/methods/AbortableHttpRequest.html
+http://developer.android.com/reference/android/text/style/AbsoluteSizeSpan.html
+http://developer.android.com/reference/android/accounts/AbstractAccountAuthenticator.html
+http://developer.android.com/reference/org/apache/http/impl/client/AbstractAuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractClientConnAdapter.html
http://developer.android.com/reference/java/util/AbstractCollection.html
-http://developer.android.com/reference/java/util/Comparator.html
-http://developer.android.com/reference/java/util/ConcurrentModificationException.html
-http://developer.android.com/reference/java/util/SortedSet.html
-http://developer.android.com/reference/java/lang/ClassCastException.html
-http://developer.android.com/reference/java/util/Collections.html
-http://developer.android.com/reference/java/util/NoSuchElementException.html
-http://developer.android.com/resources/samples/Spinner/res/layout/index.html
-http://developer.android.com/resources/samples/Spinner/res/values/index.html
-http://developer.android.com/reference/java/security/Principal.html
-http://developer.android.com/reference/java/security/Key.html
-http://developer.android.com/reference/java/security/spec/ECPoint.html
-http://developer.android.com/reference/java/security/spec/ECParameterSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieSpec.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieAttributeHandler.html
+http://developer.android.com/reference/android/database/AbstractCursor.html
+http://developer.android.com/reference/android/database/AbstractCursor.SelfContentObserver.html
+http://developer.android.com/reference/java/util/concurrent/AbstractExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
+http://developer.android.com/reference/org/apache/http/impl/client/AbstractHttpClient.html
+http://developer.android.com/reference/org/apache/http/impl/AbstractHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/io/SessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/io/SessionOutputBuffer.html
+http://developer.android.com/reference/org/apache/http/entity/AbstractHttpEntity.html
+http://developer.android.com/reference/org/apache/http/params/AbstractHttpParams.html
+http://developer.android.com/reference/org/apache/http/impl/AbstractHttpServerConnection.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodImpl.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethod.html
+http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodSessionImpl.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractInterruptibleChannel.html
+http://developer.android.com/reference/java/util/AbstractList.html
+http://developer.android.com/reference/java/util/AbstractMap.html
+http://developer.android.com/reference/java/util/AbstractMap.SimpleEntry.html
+http://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageParser.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageWriter.html
+http://developer.android.com/reference/java/lang/AbstractMethodError.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPooledConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/AbstractPoolEntry.html
+http://developer.android.com/reference/java/util/prefs/AbstractPreferences.html
+http://developer.android.com/reference/java/util/AbstractQueue.html
+http://developer.android.com/reference/java/util/Queue.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html
+http://developer.android.com/reference/java/util/concurrent/locks/Lock.html
+http://developer.android.com/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectableChannel.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectionKey.html
+http://developer.android.com/reference/java/nio/channels/spi/AbstractSelector.html
+http://developer.android.com/reference/java/util/AbstractSequentialList.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionOutputBuffer.html
+http://developer.android.com/reference/java/io/OutputStream.html
+http://developer.android.com/reference/java/util/AbstractSet.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier.html
+http://developer.android.com/reference/android/database/AbstractWindowedCursor.html
+http://developer.android.com/reference/java/security/AccessControlContext.html
+http://developer.android.com/reference/java/security/AccessControlException.html
+http://developer.android.com/reference/java/security/AccessController.html
+http://developer.android.com/reference/android/support/v4/view/AccessibilityDelegateCompat.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.html
+http://developer.android.com/reference/android/view/accessibility/AccessibilityManager.AccessibilityStateChangeListener.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html
+http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeProviderCompat.html
+http://developer.android.com/reference/java/lang/reflect/AccessibleObject.html
+http://developer.android.com/reference/android/accounts/Account.html
+http://developer.android.com/reference/android/accounts/AccountAuthenticatorActivity.html
+http://developer.android.com/reference/android/accounts/AccountAuthenticatorResponse.html
+http://developer.android.com/reference/android/accounts/AccountManagerCallback.html
+http://developer.android.com/reference/android/accounts/AccountManagerFuture.html
+http://developer.android.com/reference/android/accounts/AccountsException.html
+http://developer.android.com/reference/android/media/audiofx/AcousticEchoCanceler.html
+http://developer.android.com/reference/android/app/ActionBar.LayoutParams.html
+http://developer.android.com/reference/android/app/ActionBar.OnMenuVisibilityListener.html
+http://developer.android.com/reference/android/app/ActionBar.OnNavigationListener.html
+http://developer.android.com/reference/android/app/ActionBar.Tab.html
+http://developer.android.com/reference/android/app/ActionBar.TabListener.html
+http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html
+http://developer.android.com/reference/android/app/ActivityGroup.html
+http://developer.android.com/reference/android/content/pm/ActivityInfo.html
+http://developer.android.com/reference/android/support/v4/content/pm/ActivityInfoCompat.html
+http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase.html
+http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
+http://developer.android.com/reference/android/app/ActivityManager.html
+http://developer.android.com/reference/android/app/ActivityManager.MemoryInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.ProcessErrorStateInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RecentTaskInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html
+http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html
+http://developer.android.com/reference/android/content/ActivityNotFoundException.html
+http://developer.android.com/reference/android/app/ActivityOptions.html
+http://developer.android.com/reference/android/test/ActivityTestCase.html
+http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
+http://developer.android.com/reference/android/location/Address.html
+http://developer.android.com/reference/java/util/zip/Adler32.html
+http://developer.android.com/reference/android/provider/AlarmClock.html
+http://developer.android.com/reference/android/app/AlarmManager.html
+http://developer.android.com/reference/android/app/AlertDialog.html
+http://developer.android.com/reference/android/app/AlertDialog.Builder.html
+http://developer.android.com/reference/java/security/AlgorithmParameterGenerator.html
+http://developer.android.com/reference/java/security/AlgorithmParameterGeneratorSpi.html
+http://developer.android.com/reference/java/security/AlgorithmParameters.html
+http://developer.android.com/reference/java/security/spec/AlgorithmParameterSpec.html
+http://developer.android.com/reference/java/security/AlgorithmParametersSpi.html
+http://developer.android.com/reference/android/text/style/AlignmentSpan.html
+http://developer.android.com/reference/android/text/style/AlignmentSpan.Standard.html
+http://developer.android.com/reference/org/apache/http/client/params/AllClientPNames.html
+http://developer.android.com/reference/android/renderscript/Allocation.MipmapControl.html
+http://developer.android.com/reference/android/renderscript/AllocationAdapter.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier.html
+http://developer.android.com/reference/java/security/AllPermission.html
+http://developer.android.com/reference/java/nio/channels/AlreadyConnectedException.html
+http://developer.android.com/reference/android/text/AlteredCharSequence.html
+http://developer.android.com/reference/android/text/AndroidCharacter.html
+http://developer.android.com/reference/android/util/AndroidException.html
+http://developer.android.com/reference/android/net/http/AndroidHttpClient.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html
+http://developer.android.com/reference/org/apache/http/HttpRequestInterceptor.html
+http://developer.android.com/reference/android/util/AndroidRuntimeException.html
+http://developer.android.com/reference/android/test/AndroidTestCase.html
+http://developer.android.com/reference/android/test/AndroidTestRunner.html
+http://developer.android.com/reference/android/graphics/drawable/Animatable.html
+http://developer.android.com/reference/java/lang/reflect/AnnotatedElement.html
+http://developer.android.com/reference/android/text/Annotation.html
+http://developer.android.com/reference/java/lang/annotation/Annotation.html
+http://developer.android.com/reference/java/text/Annotation.html
+http://developer.android.com/reference/java/lang/annotation/AnnotationFormatError.html
+http://developer.android.com/reference/java/lang/annotation/AnnotationTypeMismatchException.html
+http://developer.android.com/reference/java/lang/Appendable.html
+http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.AnrInfo.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.BatteryInfo.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.CrashInfo.html
+http://developer.android.com/reference/android/app/ApplicationErrorReport.RunningServiceInfo.html
+http://developer.android.com/reference/android/content/pm/ApplicationInfo.html
+http://developer.android.com/reference/android/content/pm/ApplicationInfo.DisplayNameComparator.html
+http://developer.android.com/reference/android/test/ApplicationTestCase.html
+http://developer.android.com/reference/android/appwidget/AppWidgetHost.html
+http://developer.android.com/reference/android/appwidget/AppWidgetManager.html
+http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html
+http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/ArcShape.html
+http://developer.android.com/reference/java/lang/ArithmeticException.html
+http://developer.android.com/reference/java/lang/reflect/Array.html
+http://developer.android.com/reference/java/sql/Array.html
+http://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue.html
+http://developer.android.com/reference/java/util/concurrent/BlockingQueue.html
+http://developer.android.com/reference/java/util/ArrayDeque.html
+http://developer.android.com/reference/java/util/Deque.html
+http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html
+http://developer.android.com/reference/java/util/List.html
+http://developer.android.com/reference/java/util/Arrays.html
+http://developer.android.com/reference/java/lang/ArrayStoreException.html
+http://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod.html
+http://developer.android.com/reference/junit/framework/Assert.html
+http://developer.android.com/reference/java/lang/AssertionError.html
+http://developer.android.com/reference/android/test/AssertionFailedError.html
+http://developer.android.com/reference/junit/framework/AssertionFailedError.html
http://developer.android.com/reference/android/content/res/AssetFileDescriptor.html
http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseInputStream.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.html
http://developer.android.com/reference/android/content/res/AssetFileDescriptor.AutoCloseOutputStream.html
http://developer.android.com/reference/android/content/res/AssetManager.AssetInputStream.html
-http://developer.android.com/reference/android/content/res/ColorStateList.html
-http://developer.android.com/reference/android/content/res/ObbInfo.html
-http://developer.android.com/reference/android/content/res/ObbScanner.html
-http://developer.android.com/reference/android/content/res/Resources.NotFoundException.html
-http://developer.android.com/reference/java/io/Reader.html
-http://developer.android.com/reference/android/content/DialogInterface.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html
-http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html
-http://developer.android.com/reference/java/lang/InternalError.html
-http://developer.android.com/reference/java/lang/Error.html
-http://developer.android.com/reference/java/lang/VirtualMachineError.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpUriRequest.html
-http://developer.android.com/reference/org/apache/http/message/HeaderGroup.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html
-http://developer.android.com/reference/java/io/Writer.html
-http://developer.android.com/reference/java/io/OutputStream.html
-http://developer.android.com/reference/java/lang/Boolean.html
-http://developer.android.com/resources/tutorials/views/hello-gridview.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGestureListener.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturePerformedListener.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturingListener.html
-http://developer.android.com/reference/android/gesture/Gesture.html
-http://developer.android.com/reference/android/gesture/GestureLibraries.html
-http://developer.android.com/reference/android/gesture/GestureLibrary.html
-http://developer.android.com/reference/android/gesture/GestureOverlayView.html
-http://developer.android.com/reference/android/gesture/GesturePoint.html
-http://developer.android.com/reference/android/gesture/GestureStore.html
-http://developer.android.com/reference/android/gesture/GestureStroke.html
-http://developer.android.com/reference/android/gesture/GestureUtils.html
-http://developer.android.com/reference/android/gesture/OrientedBoundingBox.html
-http://developer.android.com/reference/android/gesture/Prediction.html
-http://developer.android.com/reference/android/gesture/package-descr.html
-http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnClickListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnKeyListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnMultiChoiceClickListener.html
-http://developer.android.com/reference/android/content/DialogInterface.OnShowListener.html
-http://developer.android.com/reference/android/content/EntityIterator.html
-http://developer.android.com/reference/android/content/IntentSender.OnFinished.html
-http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
-http://developer.android.com/reference/android/content/SyncStatusObserver.html
-http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html
-http://developer.android.com/reference/android/content/AsyncQueryHandler.html
+http://developer.android.com/reference/java/nio/channels/AsynchronousCloseException.html
+http://developer.android.com/reference/android/media/AsyncPlayer.html
http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerArgs.html
http://developer.android.com/reference/android/content/AsyncQueryHandler.WorkerHandler.html
-http://developer.android.com/reference/android/content/ContentProviderClient.html
-http://developer.android.com/reference/android/content/ContentProviderOperation.html
-http://developer.android.com/reference/android/content/ContentProviderOperation.Builder.html
-http://developer.android.com/reference/android/content/ContentProviderResult.html
-http://developer.android.com/reference/android/content/ContentQueryMap.html
-http://developer.android.com/reference/android/content/Entity.html
-http://developer.android.com/reference/android/content/Entity.NamedContentValues.html
-http://developer.android.com/reference/android/content/Intent.FilterComparison.html
-http://developer.android.com/reference/android/content/IntentFilter.AuthorityEntry.html
-http://developer.android.com/reference/android/content/MutableContextWrapper.html
-http://developer.android.com/reference/android/content/PeriodicSync.html
-http://developer.android.com/reference/android/content/SyncAdapterType.html
-http://developer.android.com/reference/android/content/SyncContext.html
-http://developer.android.com/reference/android/content/SyncInfo.html
-http://developer.android.com/reference/android/content/SyncResult.html
-http://developer.android.com/reference/android/content/SyncStats.html
-http://developer.android.com/reference/android/content/UriMatcher.html
-http://developer.android.com/reference/android/content/ActivityNotFoundException.html
-http://developer.android.com/reference/android/content/IntentFilter.MalformedMimeTypeException.html
-http://developer.android.com/reference/android/content/IntentSender.SendIntentException.html
-http://developer.android.com/reference/android/content/OperationApplicationException.html
-http://developer.android.com/reference/android/content/ReceiverCallNotAllowedException.html
-http://developer.android.com/reference/java/lang/Byte.html
-http://developer.android.com/reference/java/lang/Double.html
-http://developer.android.com/reference/java/lang/Float.html
-http://developer.android.com/reference/java/lang/Integer.html
-http://developer.android.com/reference/java/lang/Long.html
-http://developer.android.com/reference/java/lang/Short.html
-http://developer.android.com/reference/java/util/Map.Entry.html
-http://developer.android.com/reference/java/lang/Number.html
-http://developer.android.com/reference/org/apache/http/auth/AuthScheme.html
-http://developer.android.com/reference/org/apache/http/client/AuthenticationHandler.html
-http://developer.android.com/reference/org/apache/http/auth/MalformedChallengeException.html
-http://developer.android.com/reference/java/lang/Appendable.html
-http://developer.android.com/reference/java/lang/Readable.html
-http://developer.android.com/reference/java/lang/Thread.UncaughtExceptionHandler.html
-http://developer.android.com/reference/java/lang/Character.html
-http://developer.android.com/reference/java/lang/Character.Subset.html
-http://developer.android.com/reference/java/lang/Character.UnicodeBlock.html
-http://developer.android.com/reference/java/lang/Compiler.html
-http://developer.android.com/reference/java/lang/InheritableThreadLocal.html
-http://developer.android.com/reference/java/lang/Math.html
-http://developer.android.com/reference/java/lang/Package.html
-http://developer.android.com/reference/java/lang/Process.html
-http://developer.android.com/reference/java/lang/ProcessBuilder.html
-http://developer.android.com/reference/java/lang/Runtime.html
-http://developer.android.com/reference/java/lang/RuntimePermission.html
-http://developer.android.com/reference/java/lang/SecurityManager.html
-http://developer.android.com/reference/java/lang/StrictMath.html
-http://developer.android.com/reference/java/lang/StringBuffer.html
-http://developer.android.com/reference/java/lang/StringBuilder.html
-http://developer.android.com/reference/java/lang/System.html
-http://developer.android.com/reference/java/lang/ThreadGroup.html
-http://developer.android.com/reference/java/lang/ThreadLocal.html
-http://developer.android.com/reference/java/lang/Void.html
-http://developer.android.com/reference/java/lang/Thread.State.html
-http://developer.android.com/reference/java/lang/ArithmeticException.html
-http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html
-http://developer.android.com/reference/java/lang/ArrayStoreException.html
-http://developer.android.com/reference/java/lang/ClassNotFoundException.html
-http://developer.android.com/reference/java/lang/CloneNotSupportedException.html
-http://developer.android.com/reference/java/lang/EnumConstantNotPresentException.html
-http://developer.android.com/reference/java/lang/IllegalAccessException.html
-http://developer.android.com/reference/java/lang/IllegalThreadStateException.html
-http://developer.android.com/reference/java/lang/InstantiationException.html
-http://developer.android.com/reference/java/lang/NegativeArraySizeException.html
-http://developer.android.com/reference/java/lang/NoSuchFieldException.html
-http://developer.android.com/reference/java/lang/NoSuchMethodException.html
-http://developer.android.com/reference/java/lang/NumberFormatException.html
-http://developer.android.com/reference/java/lang/StringIndexOutOfBoundsException.html
-http://developer.android.com/reference/java/lang/TypeNotPresentException.html
-http://developer.android.com/reference/java/lang/AbstractMethodError.html
-http://developer.android.com/reference/java/lang/AssertionError.html
-http://developer.android.com/reference/java/lang/ClassCircularityError.html
-http://developer.android.com/reference/java/lang/ClassFormatError.html
-http://developer.android.com/reference/java/lang/ExceptionInInitializerError.html
-http://developer.android.com/reference/java/lang/IllegalAccessError.html
-http://developer.android.com/reference/java/lang/IncompatibleClassChangeError.html
-http://developer.android.com/reference/java/lang/InstantiationError.html
-http://developer.android.com/reference/java/lang/LinkageError.html
-http://developer.android.com/reference/java/lang/NoClassDefFoundError.html
-http://developer.android.com/reference/java/lang/NoSuchFieldError.html
-http://developer.android.com/reference/java/lang/NoSuchMethodError.html
-http://developer.android.com/reference/java/lang/OutOfMemoryError.html
-http://developer.android.com/reference/java/lang/StackOverflowError.html
-http://developer.android.com/reference/java/lang/ThreadDeath.html
-http://developer.android.com/reference/java/lang/UnknownError.html
-http://developer.android.com/reference/java/lang/UnsatisfiedLinkError.html
-http://developer.android.com/reference/java/lang/UnsupportedClassVersionError.html
-http://developer.android.com/reference/java/lang/VerifyError.html
-http://developer.android.com/reference/java/nio/charset/IllegalCharsetNameException.html
-http://developer.android.com/reference/java/util/IllegalFormatException.html
-http://developer.android.com/reference/java/security/InvalidParameterException.html
-http://developer.android.com/reference/java/nio/charset/UnsupportedCharsetException.html
-http://developer.android.com/reference/java/util/DuplicateFormatFlagsException.html
-http://developer.android.com/reference/java/util/FormatFlagsConversionMismatchException.html
-http://developer.android.com/reference/java/util/IllegalFormatCodePointException.html
-http://developer.android.com/reference/java/util/IllegalFormatConversionException.html
-http://developer.android.com/reference/java/util/IllegalFormatFlagsException.html
-http://developer.android.com/reference/java/util/IllegalFormatPrecisionException.html
-http://developer.android.com/reference/java/util/IllegalFormatWidthException.html
-http://developer.android.com/reference/java/util/MissingFormatArgumentException.html
-http://developer.android.com/reference/java/util/MissingFormatWidthException.html
-http://developer.android.com/reference/java/util/UnknownFormatConversionException.html
-http://developer.android.com/reference/java/util/UnknownFormatFlagsException.html
-http://developer.android.com/reference/java/util/Locale.html
-http://developer.android.com/reference/java/security/GeneralSecurityException.html
-http://developer.android.com/reference/java/io/FileNotFoundException.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/PoolEntryRequest.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueHandler.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/AbstractConnPool.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RefQueueWorker.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/RouteSpecificPool.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThread.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/WaitingThreadAborter.html
-http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecPNames.html
-http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecParamBean.html
-http://developer.android.com/reference/org/apache/http/cookie/params/package-descr.html
-http://developer.android.com/reference/org/apache/http/impl/AbstractHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/AbstractHttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/impl/SocketHttpClientConnection.html
-http://developer.android.com/reference/org/apache/http/impl/SocketHttpServerConnection.html
-http://developer.android.com/reference/org/apache/http/io/SessionOutputBuffer.html
-http://developer.android.com/reference/java/security/spec/DSAParameterSpec.html
-http://developer.android.com/reference/java/nio/ByteOrder.html
-http://developer.android.com/reference/java/nio/CharBuffer.html
-http://developer.android.com/reference/java/nio/DoubleBuffer.html
-http://developer.android.com/reference/java/nio/LongBuffer.html
-http://developer.android.com/reference/java/nio/MappedByteBuffer.html
-http://developer.android.com/reference/java/nio/ShortBuffer.html
-http://developer.android.com/reference/java/nio/BufferOverflowException.html
-http://developer.android.com/reference/java/nio/BufferUnderflowException.html
-http://developer.android.com/reference/java/nio/InvalidMarkException.html
-http://developer.android.com/reference/java/nio/ReadOnlyBufferException.html
-http://developer.android.com/reference/android/graphics/AvoidXfermode.html
-http://developer.android.com/reference/android/graphics/BitmapFactory.html
-http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
-http://developer.android.com/reference/android/graphics/BitmapShader.html
-http://developer.android.com/reference/android/graphics/BlurMaskFilter.html
-http://developer.android.com/reference/android/graphics/Camera.html
-http://developer.android.com/reference/android/graphics/Color.html
-http://developer.android.com/reference/android/graphics/ColorFilter.html
-http://developer.android.com/reference/android/graphics/ColorMatrix.html
-http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html
-http://developer.android.com/reference/android/graphics/ComposePathEffect.html
-http://developer.android.com/reference/android/graphics/ComposeShader.html
-http://developer.android.com/reference/android/graphics/CornerPathEffect.html
-http://developer.android.com/reference/android/graphics/DashPathEffect.html
-http://developer.android.com/reference/android/graphics/DiscretePathEffect.html
-http://developer.android.com/reference/android/graphics/DrawFilter.html
-http://developer.android.com/reference/android/graphics/EmbossMaskFilter.html
-http://developer.android.com/reference/android/graphics/Interpolator.html
-http://developer.android.com/reference/android/graphics/LayerRasterizer.html
-http://developer.android.com/reference/android/graphics/LightingColorFilter.html
-http://developer.android.com/reference/android/graphics/LinearGradient.html
-http://developer.android.com/reference/android/graphics/MaskFilter.html
-http://developer.android.com/reference/android/graphics/Matrix.html
-http://developer.android.com/reference/android/graphics/Movie.html
-http://developer.android.com/reference/android/graphics/Paint.html
-http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html
-http://developer.android.com/reference/android/graphics/Paint.FontMetricsInt.html
-http://developer.android.com/reference/android/graphics/PaintFlagsDrawFilter.html
-http://developer.android.com/reference/android/graphics/Path.html
-http://developer.android.com/reference/android/graphics/PathDashPathEffect.html
-http://developer.android.com/reference/android/graphics/PathEffect.html
-http://developer.android.com/reference/android/graphics/PathMeasure.html
-http://developer.android.com/reference/android/graphics/Picture.html
-http://developer.android.com/reference/android/graphics/PixelFormat.html
-http://developer.android.com/reference/android/graphics/PixelXorXfermode.html
-http://developer.android.com/reference/android/graphics/PointF.html
-http://developer.android.com/reference/android/graphics/PorterDuff.html
-http://developer.android.com/reference/android/graphics/PorterDuffColorFilter.html
-http://developer.android.com/reference/android/graphics/PorterDuffXfermode.html
-http://developer.android.com/reference/android/graphics/RadialGradient.html
-http://developer.android.com/reference/android/graphics/Rasterizer.html
-http://developer.android.com/reference/android/graphics/RectF.html
-http://developer.android.com/reference/android/graphics/RegionIterator.html
-http://developer.android.com/reference/android/graphics/Shader.html
-http://developer.android.com/reference/android/graphics/SumPathEffect.html
-http://developer.android.com/reference/android/graphics/SweepGradient.html
-http://developer.android.com/reference/android/graphics/Typeface.html
-http://developer.android.com/reference/android/graphics/Xfermode.html
-http://developer.android.com/reference/android/graphics/AvoidXfermode.Mode.html
-http://developer.android.com/reference/android/graphics/Bitmap.CompressFormat.html
-http://developer.android.com/reference/android/graphics/Bitmap.Config.html
-http://developer.android.com/reference/android/graphics/BlurMaskFilter.Blur.html
-http://developer.android.com/reference/android/graphics/Canvas.EdgeType.html
-http://developer.android.com/reference/android/graphics/Canvas.VertexMode.html
-http://developer.android.com/reference/android/graphics/Interpolator.Result.html
-http://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html
-http://developer.android.com/reference/android/graphics/Paint.Align.html
-http://developer.android.com/reference/android/graphics/Paint.Cap.html
-http://developer.android.com/reference/android/graphics/Paint.Join.html
-http://developer.android.com/reference/android/graphics/Paint.Style.html
-http://developer.android.com/reference/android/graphics/Path.Direction.html
-http://developer.android.com/reference/android/graphics/Path.FillType.html
-http://developer.android.com/reference/android/graphics/PathDashPathEffect.Style.html
-http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
-http://developer.android.com/reference/android/graphics/Region.Op.html
-http://developer.android.com/reference/android/graphics/Shader.TileMode.html
+http://developer.android.com/reference/android/os/AsyncTask.Status.html
http://developer.android.com/reference/java/util/concurrent/atomic/AtomicBoolean.html
http://developer.android.com/reference/java/util/concurrent/atomic/AtomicInteger.html
http://developer.android.com/reference/java/util/concurrent/atomic/AtomicIntegerArray.html
@@ -2248,11 +1436,2443 @@
http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReferenceArray.html
http://developer.android.com/reference/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.html
http://developer.android.com/reference/java/util/concurrent/atomic/AtomicStampedReference.html
-http://developer.android.com/reference/java/util/concurrent/atomic/package-descr.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/src/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/AndroidManifest.html
+http://developer.android.com/reference/org/w3c/dom/Attr.html
+http://developer.android.com/reference/java/text/AttributedCharacterIterator.html
+http://developer.android.com/reference/java/text/CharacterIterator.html
+http://developer.android.com/reference/java/text/AttributedCharacterIterator.Attribute.html
+http://developer.android.com/reference/java/text/AttributedString.html
+http://developer.android.com/reference/org/xml/sax/AttributeList.html
+http://developer.android.com/reference/org/xml/sax/Attributes.html
+http://developer.android.com/reference/org/xml/sax/helpers/AttributeListImpl.html
+http://developer.android.com/reference/org/xml/sax/helpers/AttributesImpl.html
+http://developer.android.com/reference/java/util/jar/Attributes.html
+http://developer.android.com/reference/java/util/jar/Attributes.Name.html
+http://developer.android.com/reference/org/xml/sax/ext/Attributes2.html
+http://developer.android.com/reference/org/xml/sax/ext/Attributes2Impl.html
+http://developer.android.com/reference/android/net/rtp/AudioCodec.html
+http://developer.android.com/reference/android/net/rtp/AudioStream.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.Descriptor.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnControlStatusChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnEnableStatusChangeListener.html
+http://developer.android.com/reference/android/media/AudioFormat.html
+http://developer.android.com/reference/android/net/rtp/AudioGroup.html
+http://developer.android.com/reference/android/media/AudioManager.OnAudioFocusChangeListener.html
+http://developer.android.com/reference/android/media/AudioRecord.html
+http://developer.android.com/reference/android/media/AudioRecord.OnRecordPositionUpdateListener.html
+http://developer.android.com/reference/android/net/rtp/RtpStream.html
+http://developer.android.com/reference/android/media/AudioTrack.html
+http://developer.android.com/reference/android/media/AudioTrack.OnPlaybackPositionUpdateListener.html
+http://developer.android.com/reference/org/apache/http/client/AuthenticationHandler.html
+http://developer.android.com/reference/java/net/Authenticator.html
+http://developer.android.com/reference/java/net/Authenticator.RequestorType.html
+http://developer.android.com/reference/android/accounts/AuthenticatorDescription.html
+http://developer.android.com/reference/android/accounts/AuthenticatorException.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthParamBean.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthParams.html
+http://developer.android.com/reference/org/apache/http/params/HttpParams.html
+http://developer.android.com/reference/javax/security/auth/AuthPermission.html
+http://developer.android.com/reference/org/apache/http/auth/params/AuthPNames.html
+http://developer.android.com/reference/org/apache/http/client/params/AuthPolicy.html
+http://developer.android.com/reference/java/security/AuthProvider.html
+http://developer.android.com/reference/org/apache/http/impl/auth/AuthSchemeBase.html
+http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html
+http://developer.android.com/reference/android/text/AutoText.html
+http://developer.android.com/reference/android/graphics/AvoidXfermode.html
+http://developer.android.com/reference/android/graphics/AvoidXfermode.Mode.html
+http://developer.android.com/reference/android/text/style/BackgroundColorSpan.html
+http://developer.android.com/reference/java/util/prefs/BackingStoreException.html
+http://developer.android.com/reference/javax/crypto/BadPaddingException.html
+http://developer.android.com/reference/android/os/BadParcelableException.html
+http://developer.android.com/reference/android/util/Base64.html
+http://developer.android.com/reference/android/util/Base64DataException.html
+http://developer.android.com/reference/android/util/Base64InputStream.html
+http://developer.android.com/reference/android/util/Base64OutputStream.html
+http://developer.android.com/reference/dalvik/system/BaseDexClassLoader.html
+http://developer.android.com/reference/java/lang/ClassLoader.html
+http://developer.android.com/reference/android/view/inputmethod/BaseInputConnection.html
+http://developer.android.com/reference/android/text/method/BaseKeyListener.html
+http://developer.android.com/reference/android/text/method/BaseMovementMethod.html
+http://developer.android.com/reference/android/renderscript/BaseObj.html
+http://developer.android.com/reference/junit/runner/BaseTestRunner.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie2.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicCommentHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/BasicCookieStore.html
+http://developer.android.com/reference/org/apache/http/client/CookieStore.html
+http://developer.android.com/reference/org/apache/http/impl/client/BasicCredentialsProvider.html
+http://developer.android.com/reference/org/apache/http/client/CredentialsProvider.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicDomainHandler.html
+http://developer.android.com/reference/android/support/v13/dreams/BasicDream.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicExpiresHandler.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeader.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderElement.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderElementIterator.html
+http://developer.android.com/reference/org/apache/http/HeaderElementIterator.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html
+http://developer.android.com/reference/org/apache/http/HeaderIterator.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueFormatter.html
+http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueParser.html
+http://developer.android.com/reference/org/apache/http/protocol/BasicHttpContext.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpContext.html
+http://developer.android.com/reference/org/apache/http/entity/BasicHttpEntity.html
+http://developer.android.com/reference/org/apache/http/message/BasicHttpEntityEnclosingRequest.html
+http://developer.android.com/reference/org/apache/http/params/BasicHttpParams.html
+http://developer.android.com/reference/org/apache/http/protocol/BasicHttpProcessor.html
+http://developer.android.com/reference/org/apache/http/message/BasicHttpRequest.html
+http://developer.android.com/reference/org/apache/http/message/BasicHttpResponse.html
+http://developer.android.com/reference/org/apache/http/message/BasicLineFormatter.html
+http://developer.android.com/reference/org/apache/http/message/BasicLineParser.html
+http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicMaxAgeHandler.html
+http://developer.android.com/reference/org/apache/http/message/BasicNameValuePair.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicPathHandler.html
+http://developer.android.com/reference/java/security/BasicPermission.html
+http://developer.android.com/reference/org/apache/http/message/BasicRequestLine.html
+http://developer.android.com/reference/org/apache/http/HttpRequest.html
+http://developer.android.com/reference/org/apache/http/impl/client/BasicResponseHandler.html
+http://developer.android.com/reference/org/apache/http/client/ResponseHandler.html
+http://developer.android.com/reference/org/apache/http/conn/routing/BasicRouteDirector.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRouteDirector.html
+http://developer.android.com/reference/org/apache/http/impl/auth/BasicScheme.html
+http://developer.android.com/reference/org/apache/http/impl/auth/BasicSchemeFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BasicSecureHandler.html
+http://developer.android.com/reference/org/apache/http/message/BasicStatusLine.html
+http://developer.android.com/reference/org/apache/http/message/BasicTokenIterator.html
+http://developer.android.com/reference/org/apache/http/TokenIterator.html
+http://developer.android.com/reference/android/media/audiofx/BassBoost.html
+http://developer.android.com/reference/android/media/audiofx/BassBoost.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/BassBoost.Settings.html
+http://developer.android.com/reference/java/sql/BatchUpdateException.html
+http://developer.android.com/reference/android/os/BatteryManager.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpecFactory.html
+http://developer.android.com/reference/java/text/Bidi.html
+http://developer.android.com/reference/java/math/BigDecimal.html
+http://developer.android.com/reference/java/math/BigInteger.html
+http://developer.android.com/reference/java/net/BindException.html
+http://developer.android.com/reference/android/graphics/Bitmap.CompressFormat.html
+http://developer.android.com/reference/android/graphics/Bitmap.Config.html
+http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
+http://developer.android.com/reference/android/graphics/BitmapFactory.html
+http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
+http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html
+http://developer.android.com/reference/android/graphics/BitmapShader.html
+http://developer.android.com/reference/java/util/BitSet.html
+http://developer.android.com/reference/java/sql/Blob.html
+http://developer.android.com/reference/java/util/concurrent/BlockingDeque.html
+http://developer.android.com/reference/android/bluetooth/BluetoothA2dp.html
+http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html
+http://developer.android.com/reference/android/bluetooth/BluetoothAssignedNumbers.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.Major.html
+http://developer.android.com/reference/android/bluetooth/BluetoothClass.Service.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHealth.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHealthAppConfiguration.html
+http://developer.android.com/reference/android/bluetooth/BluetoothHealthCallback.html
+http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html
+http://developer.android.com/reference/android/bluetooth/BluetoothProfile.ServiceListener.html
+http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html
+http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
+http://developer.android.com/reference/android/graphics/BlurMaskFilter.html
+http://developer.android.com/reference/android/graphics/BlurMaskFilter.Blur.html
+http://developer.android.com/reference/java/lang/Boolean.html
+http://developer.android.com/reference/android/text/BoringLayout.html
+http://developer.android.com/reference/android/text/BoringLayout.Metrics.html
+http://developer.android.com/reference/java/text/BreakIterator.html
+http://developer.android.com/reference/android/content/BroadcastReceiver.PendingResult.html
+http://developer.android.com/reference/java/util/concurrent/BrokenBarrierException.html
+http://developer.android.com/reference/android/provider/Browser.html
+http://developer.android.com/reference/android/provider/Browser.BookmarkColumns.html
+http://developer.android.com/reference/android/provider/Browser.SearchColumns.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpecFactory.html
+http://developer.android.com/reference/java/nio/Buffer.html
+http://developer.android.com/reference/org/apache/http/message/BufferedHeader.html
+http://developer.android.com/reference/org/apache/http/entity/BufferedHttpEntity.html
+http://developer.android.com/reference/java/io/BufferedInputStream.html
+http://developer.android.com/reference/java/io/BufferedOutputStream.html
+http://developer.android.com/reference/java/io/BufferedReader.html
+http://developer.android.com/reference/java/io/Reader.html
+http://developer.android.com/reference/java/io/BufferedWriter.html
+http://developer.android.com/reference/java/io/Writer.html
+http://developer.android.com/reference/java/nio/BufferOverflowException.html
+http://developer.android.com/reference/java/nio/BufferUnderflowException.html
+http://developer.android.com/reference/android/os/Build.html
+http://developer.android.com/reference/android/os/Build.VERSION.html
+http://developer.android.com/reference/android/os/Build.VERSION_CODES.html
+http://developer.android.com/reference/android/text/style/BulletSpan.html
+http://developer.android.com/reference/java/lang/Byte.html
+http://developer.android.com/reference/android/renderscript/Byte2.html
+http://developer.android.com/reference/android/renderscript/Byte3.html
+http://developer.android.com/reference/android/renderscript/Byte4.html
+http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html
+http://developer.android.com/reference/org/apache/http/entity/ByteArrayEntity.html
+http://developer.android.com/reference/java/io/ByteArrayInputStream.html
+http://developer.android.com/reference/java/io/ByteArrayOutputStream.html
+http://developer.android.com/reference/java/nio/ByteBuffer.html
+http://developer.android.com/reference/java/nio/channels/ByteChannel.html
+http://developer.android.com/reference/java/nio/ByteOrder.html
+http://developer.android.com/reference/android/webkit/CacheManager.html
+http://developer.android.com/reference/android/webkit/CacheManager.CacheResult.html
+http://developer.android.com/reference/java/net/CacheRequest.html
+http://developer.android.com/reference/java/net/CacheResponse.html
+http://developer.android.com/reference/java/util/Calendar.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarAlerts.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarAlertsColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarCacheColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarEntity.html
+http://developer.android.com/reference/android/provider/CalendarContract.CalendarSyncColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.EventDays.html
+http://developer.android.com/reference/android/provider/CalendarContract.EventDaysColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.EventsEntity.html
+http://developer.android.com/reference/android/provider/CalendarContract.ExtendedProperties.html
+http://developer.android.com/reference/android/provider/CalendarContract.ExtendedPropertiesColumns.html
+http://developer.android.com/reference/android/provider/CalendarContract.SyncState.html
+http://developer.android.com/reference/java/util/concurrent/Callable.html
+http://developer.android.com/reference/java/sql/CallableStatement.html
+http://developer.android.com/reference/javax/security/auth/callback/Callback.html
+http://developer.android.com/reference/javax/security/auth/callback/CallbackHandler.html
+http://developer.android.com/reference/android/provider/CallLog.html
+http://developer.android.com/reference/android/provider/CallLog.Calls.html
+http://developer.android.com/reference/android/graphics/Camera.html
+http://developer.android.com/reference/android/hardware/Camera.Area.html
+http://developer.android.com/reference/android/hardware/Camera.AutoFocusCallback.html
+http://developer.android.com/reference/android/hardware/Camera.AutoFocusMoveCallback.html
+http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html
+http://developer.android.com/reference/android/hardware/Camera.ErrorCallback.html
+http://developer.android.com/reference/android/hardware/Camera.Face.html
+http://developer.android.com/reference/android/hardware/Camera.FaceDetectionListener.html
+http://developer.android.com/reference/android/hardware/Camera.OnZoomChangeListener.html
+http://developer.android.com/reference/android/hardware/Camera.PictureCallback.html
+http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html
+http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
+http://developer.android.com/reference/android/hardware/Camera.Size.html
+http://developer.android.com/reference/android/media/CameraProfile.html
+http://developer.android.com/reference/java/util/concurrent/CancellationException.html
+http://developer.android.com/reference/java/util/concurrent/FutureTask.html
+http://developer.android.com/reference/android/os/CancellationSignal.html
+http://developer.android.com/reference/android/os/CancellationSignal.OnCancelListener.html
+http://developer.android.com/reference/java/nio/channels/CancelledKeyException.html
+http://developer.android.com/reference/android/graphics/Canvas.EdgeType.html
+http://developer.android.com/reference/android/graphics/Canvas.VertexMode.html
+http://developer.android.com/reference/org/w3c/dom/CDATASection.html
+http://developer.android.com/reference/android/telephony/cdma/CdmaCellLocation.html
+http://developer.android.com/reference/android/telephony/CellLocation.html
+http://developer.android.com/reference/java/security/Certificate.html
+http://developer.android.com/reference/java/security/cert/Certificate.html
+http://developer.android.com/reference/javax/security/cert/Certificate.html
+http://developer.android.com/reference/java/security/cert/Certificate.CertificateRep.html
+http://developer.android.com/reference/java/security/cert/CertificateEncodingException.html
+http://developer.android.com/reference/javax/security/cert/CertificateEncodingException.html
+http://developer.android.com/reference/java/security/cert/CertificateException.html
+http://developer.android.com/reference/javax/security/cert/CertificateException.html
+http://developer.android.com/reference/java/security/cert/CertificateExpiredException.html
+http://developer.android.com/reference/javax/security/cert/CertificateExpiredException.html
+http://developer.android.com/reference/java/security/cert/CertificateFactory.html
+http://developer.android.com/reference/java/security/cert/CertificateFactorySpi.html
+http://developer.android.com/reference/java/security/cert/CertificateNotYetValidException.html
+http://developer.android.com/reference/javax/security/cert/CertificateNotYetValidException.html
+http://developer.android.com/reference/java/security/cert/CertificateParsingException.html
+http://developer.android.com/reference/javax/security/cert/CertificateParsingException.html
+http://developer.android.com/reference/java/security/cert/CertPath.html
+http://developer.android.com/reference/java/security/cert/CertPath.CertPathRep.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilder.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderException.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderResult.html
+http://developer.android.com/reference/java/security/cert/CertPathBuilderSpi.html
+http://developer.android.com/reference/java/security/cert/CertPathParameters.html
+http://developer.android.com/reference/javax/net/ssl/CertPathTrustManagerParameters.html
+http://developer.android.com/reference/javax/net/ssl/TrustManager.html
+http://developer.android.com/reference/java/security/cert/CertPathValidator.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorException.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorResult.html
+http://developer.android.com/reference/java/security/cert/CertPathValidatorSpi.html
+http://developer.android.com/reference/java/security/cert/CertSelector.html
+http://developer.android.com/reference/java/security/cert/CertStore.html
+http://developer.android.com/reference/java/security/cert/CertStoreException.html
+http://developer.android.com/reference/java/security/cert/CertStoreParameters.html
+http://developer.android.com/reference/java/security/cert/CertStoreSpi.html
+http://developer.android.com/reference/java/nio/channels/Channel.html
+http://developer.android.com/reference/java/nio/channels/Channels.html
+http://developer.android.com/reference/java/lang/Character.html
+http://developer.android.com/reference/java/lang/Character.Subset.html
+http://developer.android.com/reference/java/lang/Character.UnicodeBlock.html
+http://developer.android.com/reference/java/nio/charset/CharacterCodingException.html
+http://developer.android.com/reference/org/w3c/dom/CharacterData.html
+http://developer.android.com/reference/android/text/method/CharacterPickerDialog.html
+http://developer.android.com/reference/android/text/style/CharacterStyle.html
+http://developer.android.com/reference/android/database/CharArrayBuffer.html
+http://developer.android.com/reference/org/apache/http/util/CharArrayBuffer.html
+http://developer.android.com/reference/java/io/CharArrayReader.html
+http://developer.android.com/reference/java/io/CharArrayWriter.html
+http://developer.android.com/reference/java/nio/CharBuffer.html
+http://developer.android.com/reference/java/io/CharConversionException.html
+http://developer.android.com/reference/java/nio/charset/Charset.html
+http://developer.android.com/reference/java/nio/charset/CharsetDecoder.html
+http://developer.android.com/reference/java/nio/charset/CharsetEncoder.html
+http://developer.android.com/reference/java/nio/charset/spi/CharsetProvider.html
+http://developer.android.com/reference/android/preference/CheckBoxPreference.html
+http://developer.android.com/reference/java/util/zip/CheckedInputStream.html
+http://developer.android.com/reference/java/util/zip/CheckedOutputStream.html
+http://developer.android.com/reference/java/util/zip/Checksum.html
+http://developer.android.com/reference/java/util/zip/CRC32.html
+http://developer.android.com/reference/java/text/ChoiceFormat.html
+http://developer.android.com/reference/org/apache/http/impl/io/ChunkedInputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/ChunkedOutputStream.html
+http://developer.android.com/reference/javax/crypto/Cipher.html
+http://developer.android.com/reference/javax/crypto/CipherInputStream.html
+http://developer.android.com/reference/javax/crypto/CipherOutputStream.html
+http://developer.android.com/reference/javax/crypto/CipherSpi.html
+http://developer.android.com/reference/org/apache/http/client/CircularRedirectException.html
+http://developer.android.com/reference/java/lang/ClassCircularityError.html
+http://developer.android.com/reference/java/lang/ClassFormatError.html
+http://developer.android.com/reference/java/lang/ClassNotFoundException.html
+http://developer.android.com/reference/android/text/style/ClickableSpan.html
+http://developer.android.com/reference/org/apache/http/client/protocol/ClientContext.html
+http://developer.android.com/reference/org/apache/http/client/protocol/ClientContextConfigurer.html
+http://developer.android.com/reference/org/apache/http/cookie/ClientCookie.html
+http://developer.android.com/reference/org/apache/http/cookie/Cookie.html
+http://developer.android.com/reference/java/sql/ClientInfoStatus.html
+http://developer.android.com/reference/org/apache/http/client/params/ClientParamBean.html
+http://developer.android.com/reference/org/apache/http/impl/client/ClientParamsStack.html
+http://developer.android.com/reference/org/apache/http/client/params/ClientPNames.html
+http://developer.android.com/reference/org/apache/http/client/ClientProtocolException.html
+http://developer.android.com/reference/android/content/ClipboardManager.html
+http://developer.android.com/reference/android/text/ClipboardManager.html
+http://developer.android.com/reference/android/content/ClipboardManager.OnPrimaryClipChangedListener.html
+http://developer.android.com/reference/android/content/ClipData.Item.html
+http://developer.android.com/reference/android/content/ClipDescription.html
+http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html
+http://developer.android.com/reference/java/sql/Clob.html
+http://developer.android.com/reference/java/lang/Cloneable.html
+http://developer.android.com/reference/java/lang/CloneNotSupportedException.html
+http://developer.android.com/reference/org/apache/http/client/utils/CloneUtils.html
+http://developer.android.com/reference/java/io/Closeable.html
+http://developer.android.com/reference/java/io/IOException.html
+http://developer.android.com/reference/java/nio/channels/ClosedByInterruptException.html
+http://developer.android.com/reference/java/nio/channels/ClosedChannelException.html
+http://developer.android.com/reference/java/nio/channels/ClosedSelectorException.html
+http://developer.android.com/reference/java/nio/channels/Selector.html
+http://developer.android.com/reference/java/nio/charset/CoderMalfunctionError.html
+http://developer.android.com/reference/java/nio/charset/CoderResult.html
+http://developer.android.com/reference/java/security/CodeSigner.html
+http://developer.android.com/reference/java/security/CodeSource.html
+http://developer.android.com/reference/java/nio/charset/CodingErrorAction.html
+http://developer.android.com/reference/java/text/CollationElementIterator.html
+http://developer.android.com/reference/java/text/CollationKey.html
+http://developer.android.com/reference/java/text/Collator.html
+http://developer.android.com/reference/java/util/Collection.html
+http://developer.android.com/reference/java/security/cert/CollectionCertStoreParameters.html
+http://developer.android.com/reference/java/util/Collections.html
+http://developer.android.com/reference/android/graphics/Color.html
+http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html
+http://developer.android.com/reference/android/graphics/ColorFilter.html
+http://developer.android.com/reference/android/graphics/ColorMatrix.html
+http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html
+http://developer.android.com/reference/android/content/res/ColorStateList.html
+http://developer.android.com/reference/org/w3c/dom/Comment.html
+http://developer.android.com/reference/javax/sql/CommonDataSource.html
+http://developer.android.com/reference/java/lang/Comparable.html
+http://developer.android.com/reference/java/util/Comparator.html
+http://developer.android.com/reference/android/test/ComparisonFailure.html
+http://developer.android.com/reference/junit/framework/ComparisonFailure.html
+http://developer.android.com/reference/java/lang/Compiler.html
+http://developer.android.com/reference/android/view/inputmethod/CompletionInfo.html
+http://developer.android.com/reference/java/util/concurrent/CompletionService.html
+http://developer.android.com/reference/android/content/ComponentCallbacks.html
+http://developer.android.com/reference/android/content/ComponentCallbacks2.html
+http://developer.android.com/reference/android/content/pm/ComponentInfo.html
+http://developer.android.com/reference/android/content/pm/ServiceInfo.html
+http://developer.android.com/reference/android/graphics/ComposePathEffect.html
+http://developer.android.com/reference/android/graphics/ComposeShader.html
+http://developer.android.com/reference/android/graphics/Xfermode.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentMap.html
+http://developer.android.com/reference/java/util/Map.html
+http://developer.android.com/reference/java/util/ConcurrentModificationException.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentNavigableMap.html
+http://developer.android.com/reference/java/util/NavigableMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListMap.html
+http://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListSet.html
+http://developer.android.com/reference/java/util/NavigableSet.html
+http://developer.android.com/reference/java/util/concurrent/locks/Condition.html
+http://developer.android.com/reference/android/os/ConditionVariable.html
+http://developer.android.com/reference/android/util/Config.html
+http://developer.android.com/reference/android/content/pm/ConfigurationInfo.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionParamBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionPNames.html
+http://developer.android.com/reference/java/sql/Connection.html
+http://developer.android.com/reference/org/apache/http/ConnectionClosedException.html
+http://developer.android.com/reference/javax/sql/ConnectionEvent.html
+http://developer.android.com/reference/javax/sql/PooledConnection.html
+http://developer.android.com/reference/javax/sql/ConnectionEventListener.html
+http://developer.android.com/reference/java/nio/channels/ConnectionPendingException.html
+http://developer.android.com/reference/java/nio/channels/SocketChannel.html
+http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
+http://developer.android.com/reference/org/apache/http/ConnectionReuseStrategy.html
+http://developer.android.com/reference/android/net/ConnectivityManager.html
+http://developer.android.com/reference/android/support/v4/net/ConnectivityManagerCompat.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParamBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParams.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerPNames.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRoute.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRouteBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParamBean.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParams.html
+http://developer.android.com/reference/org/apache/http/conn/params/ConnRoutePNames.html
+http://developer.android.com/reference/java/io/Console.html
+http://developer.android.com/reference/java/util/logging/ConsoleHandler.html
+http://developer.android.com/reference/android/webkit/ConsoleMessage.html
+http://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel.html
+http://developer.android.com/reference/java/lang/reflect/Constructor.html
+http://developer.android.com/reference/android/provider/Contacts.html
+http://developer.android.com/reference/android/provider/Contacts.ContactMethods.html
+http://developer.android.com/reference/android/provider/Contacts.ContactMethodsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.Extensions.html
+http://developer.android.com/reference/android/provider/Contacts.ExtensionsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.GroupMembership.html
+http://developer.android.com/reference/android/provider/Contacts.Groups.html
+http://developer.android.com/reference/android/provider/Contacts.GroupsColumns.html
+http://developer.android.com/reference/android/provider/Contacts.Intents.html
+http://developer.android.com/reference/android/provider/Contacts.Intents.Insert.html
+http://developer.android.com/reference/android/provider/Contacts.Intents.UI.html
+http://developer.android.com/reference/android/provider/Contacts.OrganizationColumns.html
+http://developer.android.com/reference/android/provider/Contacts.Organizations.html
+http://developer.android.com/reference/android/provider/Contacts.People.html
+http://developer.android.com/reference/android/provider/Contacts.People.ContactMethods.html
+http://developer.android.com/reference/android/provider/Contacts.People.Extensions.html
+http://developer.android.com/reference/android/provider/Contacts.People.Phones.html
+http://developer.android.com/reference/android/provider/Contacts.PeopleColumns.html
+http://developer.android.com/reference/android/provider/Contacts.Phones.html
+http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html
+http://developer.android.com/reference/android/provider/Contacts.Photos.html
+http://developer.android.com/reference/android/provider/Contacts.PhotosColumns.html
+http://developer.android.com/reference/android/provider/Contacts.PresenceColumns.html
+http://developer.android.com/reference/android/provider/Contacts.Settings.html
+http://developer.android.com/reference/android/provider/Contacts.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html
+http://developer.android.com/reference/android/provider/ContactsContract.BaseSyncColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.BaseTypes.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.CommonColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Event.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.GroupMembership.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Identity.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Im.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Nickname.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Note.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Organization.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Photo.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Relation.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.SipAddress.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredName.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredPostal.html
+http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Website.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactNameColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactOptionsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.AggregationSuggestions.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Data.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Entity.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.Photo.html
+http://developer.android.com/reference/android/provider/ContactsContract.Contacts.StreamItems.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.ContactStatusColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataColumnsWithJoins.html
+http://developer.android.com/reference/android/provider/ContactsContract.DataUsageFeedback.html
+http://developer.android.com/reference/android/provider/ContactsContract.Directory.html
+http://developer.android.com/reference/android/provider/ContactsContract.DisplayNameSources.html
+http://developer.android.com/reference/android/provider/ContactsContract.DisplayPhoto.html
+http://developer.android.com/reference/android/provider/ContactsContract.FullNameStyle.html
+http://developer.android.com/reference/android/provider/ContactsContract.Groups.html
+http://developer.android.com/reference/android/provider/ContactsContract.GroupsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.Intents.html
+http://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookupColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.PhoneticNameStyle.html
+http://developer.android.com/reference/android/provider/ContactsContract.Presence.html
+http://developer.android.com/reference/android/provider/ContactsContract.PresenceColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.Profile.html
+http://developer.android.com/reference/android/provider/ContactsContract.ProfileSyncState.html
+http://developer.android.com/reference/android/provider/ContactsContract.QuickContact.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Data.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.DisplayPhoto.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Entity.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.StreamItems.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.RawContactsEntity.html
+http://developer.android.com/reference/android/provider/ContactsContract.Settings.html
+http://developer.android.com/reference/android/provider/ContactsContract.SettingsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StatusColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StatusUpdates.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItemPhotosColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItems.StreamItemPhotos.html
+http://developer.android.com/reference/android/provider/ContactsContract.StreamItemsColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.SyncColumns.html
+http://developer.android.com/reference/android/provider/ContactsContract.SyncState.html
+http://developer.android.com/reference/java/net/ContentHandler.html
+http://developer.android.com/reference/org/xml/sax/ContentHandler.html
+http://developer.android.com/reference/java/net/ContentHandlerFactory.html
+http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthInputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthOutputStream.html
+http://developer.android.com/reference/org/apache/http/entity/ContentLengthStrategy.html
+http://developer.android.com/reference/android/database/ContentObservable.html
+http://developer.android.com/reference/android/database/Observable.html
+http://developer.android.com/reference/android/database/ContentObserver.html
+http://developer.android.com/reference/org/apache/http/entity/ContentProducer.html
+http://developer.android.com/reference/android/content/ContentProvider.PipeDataWriter.html
+http://developer.android.com/reference/android/content/ContentProviderClient.html
+http://developer.android.com/reference/android/content/ContentProviderOperation.html
+http://developer.android.com/reference/android/content/ContentProviderOperation.Builder.html
+http://developer.android.com/reference/android/content/ContentProviderResult.html
+http://developer.android.com/reference/android/content/ContentQueryMap.html
+http://developer.android.com/reference/android/content/ContextWrapper.html
+http://developer.android.com/reference/java/net/CookieHandler.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieIdentityComparator.html
+http://developer.android.com/reference/android/webkit/CookieManager.html
+http://developer.android.com/reference/java/net/CookieManager.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieOrigin.html
+http://developer.android.com/reference/org/apache/http/cookie/CookiePathComparator.html
+http://developer.android.com/reference/java/net/CookiePolicy.html
+http://developer.android.com/reference/org/apache/http/client/params/CookiePolicy.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/CookieSpecBase.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpecFactory.html
+http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecParamBean.html
+http://developer.android.com/reference/org/apache/http/cookie/params/CookieSpecPNames.html
+http://developer.android.com/reference/org/apache/http/cookie/CookieSpecRegistry.html
+http://developer.android.com/reference/java/net/CookieStore.html
+http://developer.android.com/reference/android/webkit/CookieSyncManager.html
+http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html
+http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArraySet.html
+http://developer.android.com/reference/java/util/Set.html
+http://developer.android.com/reference/org/apache/http/params/CoreConnectionPNames.html
+http://developer.android.com/reference/org/apache/http/params/CoreProtocolPNames.html
+http://developer.android.com/reference/android/graphics/CornerPathEffect.html
+http://developer.android.com/reference/android/view/inputmethod/CorrectionInfo.html
+http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
+http://developer.android.com/reference/android/os/CountDownTimer.html
+http://developer.android.com/reference/android/net/Credentials.html
+http://developer.android.com/reference/android/location/Criteria.html
+http://developer.android.com/reference/java/security/cert/CRL.html
+http://developer.android.com/reference/java/security/cert/CRLException.html
+http://developer.android.com/reference/java/security/cert/CRLSelector.html
+http://developer.android.com/reference/java/util/Currency.html
+http://developer.android.com/reference/android/support/v4/widget/CursorAdapter.html
+http://developer.android.com/reference/android/database/CursorIndexOutOfBoundsException.html
+http://developer.android.com/reference/android/database/CursorJoiner.html
+http://developer.android.com/reference/android/database/CursorJoiner.Result.html
+http://developer.android.com/reference/android/database/CursorWrapper.html
+http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
+http://developer.android.com/reference/android/graphics/DashPathEffect.html
+http://developer.android.com/reference/android/database/DatabaseErrorHandler.html
+http://developer.android.com/reference/java/sql/DatabaseMetaData.html
+http://developer.android.com/reference/android/database/DatabaseUtils.html
+http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.html
+http://developer.android.com/reference/android/support/v4/database/DatabaseUtilsCompat.html
+http://developer.android.com/reference/java/util/zip/DataFormatException.html
+http://developer.android.com/reference/java/nio/channels/DatagramChannel.html
+http://developer.android.com/reference/java/net/DatagramPacket.html
+http://developer.android.com/reference/java/net/DatagramSocket.html
+http://developer.android.com/reference/java/net/DatagramSocketImpl.html
+http://developer.android.com/reference/java/net/DatagramSocketImplFactory.html
+http://developer.android.com/reference/java/io/DataInput.html
+http://developer.android.com/reference/java/io/DataInputStream.html
+http://developer.android.com/reference/java/io/DataOutput.html
+http://developer.android.com/reference/java/io/DataOutputStream.html
+http://developer.android.com/reference/android/database/DataSetObservable.html
+http://developer.android.com/reference/android/database/DataSetObserver.html
+http://developer.android.com/reference/javax/sql/DataSource.html
+http://developer.android.com/reference/java/sql/DataTruncation.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeConfigurationException.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeConstants.Field.html
+http://developer.android.com/reference/javax/xml/datatype/Duration.html
+http://developer.android.com/reference/javax/xml/datatype/DatatypeFactory.html
+http://developer.android.com/reference/java/sql/Date.html
+http://developer.android.com/reference/java/util/Date.html
+http://developer.android.com/reference/android/text/format/DateFormat.html
+http://developer.android.com/reference/java/text/DateFormat.html
+http://developer.android.com/reference/java/text/DateFormat.Field.html
+http://developer.android.com/reference/java/text/SimpleDateFormat.html
+http://developer.android.com/reference/java/text/DateFormatSymbols.html
+http://developer.android.com/reference/android/text/method/DateKeyListener.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/DateParseException.html
+http://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener.html
+http://developer.android.com/reference/android/webkit/DateSorter.html
+http://developer.android.com/reference/android/text/method/DateTimeKeyListener.html
+http://developer.android.com/reference/android/text/format/DateUtils.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/DateUtils.html
+http://developer.android.com/reference/android/os/Debug.html
+http://developer.android.com/reference/android/os/Debug.InstructionCount.html
+http://developer.android.com/reference/android/os/Debug.MemoryInfo.html
+http://developer.android.com/reference/android/util/DebugUtils.html
+http://developer.android.com/reference/java/text/DecimalFormat.html
+http://developer.android.com/reference/java/text/NumberFormat.html
+http://developer.android.com/reference/java/text/DecimalFormatSymbols.html
+http://developer.android.com/reference/org/xml/sax/ext/DeclHandler.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultClientConnectionOperator.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultConnectionReuseStrategy.html
+http://developer.android.com/reference/android/database/DefaultDatabaseErrorHandler.html
+http://developer.android.com/reference/org/apache/http/protocol/DefaultedHttpContext.html
+http://developer.android.com/reference/org/apache/http/params/DefaultedHttpParams.html
+http://developer.android.com/reference/org/xml/sax/helpers/DefaultHandler.html
+http://developer.android.com/reference/org/xml/sax/ext/DefaultHandler2.html
+http://developer.android.com/reference/org/xml/sax/ext/LexicalHandler.html
+http://developer.android.com/reference/org/xml/sax/ext/EntityResolver2.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpRequestFactory.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.html
+http://developer.android.com/reference/org/apache/http/client/HttpRequestRetryHandler.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpResponseFactory.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultHttpRoutePlanner.html
+http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoutePlanner.html
+http://developer.android.com/reference/org/apache/http/impl/DefaultHttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultProxyAuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultRedirectHandler.html
+http://developer.android.com/reference/org/apache/http/client/RedirectHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultRequestDirector.html
+http://developer.android.com/reference/org/apache/http/client/RequestDirector.html
+http://developer.android.com/reference/org/apache/http/impl/conn/DefaultResponseParser.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultTargetAuthenticationHandler.html
+http://developer.android.com/reference/org/apache/http/impl/client/DefaultUserTokenHandler.html
+http://developer.android.com/reference/java/util/zip/Deflater.html
+http://developer.android.com/reference/java/util/zip/DeflaterInputStream.html
+http://developer.android.com/reference/java/util/zip/DeflaterOutputStream.html
+http://developer.android.com/reference/java/util/concurrent/Delayed.html
+http://developer.android.com/reference/java/util/concurrent/DelayQueue.html
+http://developer.android.com/reference/java/lang/Deprecated.html
+http://developer.android.com/reference/javax/crypto/spec/DESedeKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/DESKeySpec.html
+http://developer.android.com/reference/javax/security/auth/Destroyable.html
+http://developer.android.com/reference/javax/security/auth/DestroyFailedException.html
+http://developer.android.com/reference/android/app/admin/DeviceAdminInfo.html
+http://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html
+http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
+http://developer.android.com/reference/dalvik/system/DexClassLoader.html
+http://developer.android.com/reference/dalvik/system/DexFile.html
+http://developer.android.com/reference/android/net/DhcpInfo.html
+http://developer.android.com/reference/javax/crypto/spec/DHGenParameterSpec.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHKey.html
+http://developer.android.com/reference/javax/crypto/spec/DHParameterSpec.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHPrivateKey.html
+http://developer.android.com/reference/javax/crypto/spec/DHPrivateKeySpec.html
+http://developer.android.com/reference/javax/crypto/interfaces/DHPublicKey.html
+http://developer.android.com/reference/javax/crypto/spec/DHPublicKeySpec.html
+http://developer.android.com/reference/android/text/method/DialerKeyListener.html
+http://developer.android.com/reference/android/text/method/KeyListener.html
+http://developer.android.com/reference/android/content/DialogInterface.html
+http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnClickListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnKeyListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnMultiChoiceClickListener.html
+http://developer.android.com/reference/android/content/DialogInterface.OnShowListener.html
+http://developer.android.com/reference/android/preference/DialogPreference.html
+http://developer.android.com/reference/java/util/Dictionary.html
+http://developer.android.com/reference/java/security/DigestException.html
+http://developer.android.com/reference/java/security/DigestInputStream.html
+http://developer.android.com/reference/java/security/DigestOutputStream.html
+http://developer.android.com/reference/org/apache/http/impl/auth/DigestScheme.html
+http://developer.android.com/reference/org/apache/http/impl/auth/DigestSchemeFactory.html
+http://developer.android.com/reference/android/text/method/DigitsKeyListener.html
+http://developer.android.com/reference/android/graphics/DiscretePathEffect.html
+http://developer.android.com/reference/android/util/DisplayMetrics.html
+http://developer.android.com/reference/org/w3c/dom/Document.html
+http://developer.android.com/reference/javax/xml/parsers/DocumentBuilder.html
+http://developer.android.com/reference/javax/xml/parsers/DocumentBuilderFactory.html
+http://developer.android.com/reference/java/lang/annotation/Documented.html
+http://developer.android.com/reference/org/w3c/dom/DocumentFragment.html
+http://developer.android.com/reference/org/xml/sax/DocumentHandler.html
+http://developer.android.com/reference/org/w3c/dom/DocumentType.html
+http://developer.android.com/reference/java/security/DomainCombiner.html
+http://developer.android.com/reference/org/w3c/dom/DOMConfiguration.html
+http://developer.android.com/reference/org/w3c/dom/DOMError.html
+http://developer.android.com/reference/org/w3c/dom/DOMErrorHandler.html
+http://developer.android.com/reference/org/w3c/dom/DOMException.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementation.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementationList.html
+http://developer.android.com/reference/org/w3c/dom/ls/DOMImplementationLS.html
+http://developer.android.com/reference/org/w3c/dom/DOMImplementationSource.html
+http://developer.android.com/reference/javax/xml/transform/dom/DOMLocator.html
+http://developer.android.com/reference/org/w3c/dom/DOMLocator.html
+http://developer.android.com/reference/javax/xml/transform/dom/DOMResult.html
+http://developer.android.com/reference/javax/xml/transform/dom/DOMSource.html
+http://developer.android.com/reference/org/w3c/dom/DOMStringList.html
+http://developer.android.com/reference/java/lang/Double.html
+http://developer.android.com/reference/android/renderscript/Double2.html
+http://developer.android.com/reference/android/renderscript/Double3.html
+http://developer.android.com/reference/android/renderscript/Double4.html
+http://developer.android.com/reference/java/nio/DoubleBuffer.html
+http://developer.android.com/reference/android/webkit/DownloadListener.html
+http://developer.android.com/reference/android/app/DownloadManager.html
+http://developer.android.com/reference/android/app/DownloadManager.Query.html
+http://developer.android.com/reference/android/app/DownloadManager.Request.html
+http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
+http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html
+http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.DrawableContainerState.html
+http://developer.android.com/reference/android/text/style/DrawableMarginSpan.html
+http://developer.android.com/reference/android/graphics/DrawFilter.html
+http://developer.android.com/reference/java/sql/Driver.html
+http://developer.android.com/reference/java/sql/DriverManager.html
+http://developer.android.com/reference/java/sql/DriverPropertyInfo.html
+http://developer.android.com/reference/android/drm/DrmConvertedStatus.html
+http://developer.android.com/reference/android/drm/DrmErrorEvent.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.OnErrorListener.html
+http://developer.android.com/reference/android/drm/DrmEvent.html
+http://developer.android.com/reference/android/drm/DrmInfo.html
+http://developer.android.com/reference/android/drm/DrmInfoEvent.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.OnInfoListener.html
+http://developer.android.com/reference/android/drm/DrmInfoRequest.html
+http://developer.android.com/reference/android/drm/DrmInfoStatus.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.html
+http://developer.android.com/reference/android/drm/DrmManagerClient.OnEventListener.html
+http://developer.android.com/reference/android/drm/DrmRights.html
+http://developer.android.com/reference/android/drm/DrmStore.html
+http://developer.android.com/reference/android/drm/DrmStore.Action.html
+http://developer.android.com/reference/android/drm/DrmStore.ConstraintsColumns.html
+http://developer.android.com/reference/android/drm/DrmStore.DrmObjectType.html
+http://developer.android.com/reference/android/drm/DrmStore.Playback.html
+http://developer.android.com/reference/android/drm/DrmStore.RightsStatus.html
+http://developer.android.com/reference/android/drm/DrmSupportInfo.html
+http://developer.android.com/reference/android/drm/DrmUtils.html
+http://developer.android.com/reference/android/drm/DrmUtils.ExtendedMetadataParser.html
+http://developer.android.com/reference/android/os/DropBoxManager.html
+http://developer.android.com/reference/android/os/DropBoxManager.Entry.html
+http://developer.android.com/reference/java/security/spec/DSAParameterSpec.html
+http://developer.android.com/reference/java/security/spec/DSAPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/DSAPublicKeySpec.html
+http://developer.android.com/reference/org/xml/sax/DTDHandler.html
+http://developer.android.com/reference/java/util/DuplicateFormatFlagsException.html
+http://developer.android.com/reference/android/text/style/DynamicDrawableSpan.html
+http://developer.android.com/reference/android/text/DynamicLayout.html
+http://developer.android.com/reference/android/text/style/EasyEditSpan.html
+http://developer.android.com/reference/java/security/spec/ECField.html
+http://developer.android.com/reference/java/security/spec/ECFieldF2m.html
+http://developer.android.com/reference/java/security/spec/ECFieldFp.html
+http://developer.android.com/reference/java/security/spec/ECGenParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECParameterSpec.html
+http://developer.android.com/reference/java/security/spec/ECPoint.html
+http://developer.android.com/reference/java/security/spec/ECPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/ECPublicKeySpec.html
+http://developer.android.com/reference/android/support/v4/widget/EdgeEffectCompat.html
+http://developer.android.com/reference/android/text/Editable.html
+http://developer.android.com/reference/android/text/Editable.Factory.html
+http://developer.android.com/reference/android/preference/EditTextPreference.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGL.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGL10.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGL11.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLConfig.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLContext.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLDisplay.html
+http://developer.android.com/reference/javax/microedition/khronos/egl/EGLSurface.html
+http://developer.android.com/reference/android/sax/Element.html
+http://developer.android.com/reference/org/w3c/dom/Element.html
+http://developer.android.com/reference/android/renderscript/Element.Builder.html
+http://developer.android.com/reference/android/renderscript/Element.DataKind.html
+http://developer.android.com/reference/android/renderscript/Element.DataType.html
+http://developer.android.com/reference/android/sax/ElementListener.html
+http://developer.android.com/reference/java/lang/annotation/ElementType.html
+http://developer.android.com/reference/java/security/spec/EllipticCurve.html
+http://developer.android.com/reference/android/graphics/EmbossMaskFilter.html
+http://developer.android.com/reference/java/util/EmptyStackException.html
+http://developer.android.com/reference/java/security/spec/EncodedKeySpec.html
+http://developer.android.com/reference/org/apache/http/util/EncodingUtils.html
+http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html
+http://developer.android.com/reference/android/sax/EndElementListener.html
+http://developer.android.com/reference/android/sax/EndTextElementListener.html
+http://developer.android.com/reference/org/apache/http/impl/EnglishReasonPhraseCatalog.html
+http://developer.android.com/reference/android/content/Entity.html
+http://developer.android.com/reference/org/w3c/dom/Entity.html
+http://developer.android.com/reference/android/content/Entity.NamedContentValues.html
+http://developer.android.com/reference/org/apache/http/impl/entity/EntityDeserializer.html
+http://developer.android.com/reference/org/apache/http/impl/client/EntityEnclosingRequestWrapper.html
+http://developer.android.com/reference/org/apache/http/HttpEntityEnclosingRequest.html
+http://developer.android.com/reference/android/content/EntityIterator.html
+http://developer.android.com/reference/java/util/Iterator.html
+http://developer.android.com/reference/org/w3c/dom/EntityReference.html
+http://developer.android.com/reference/org/xml/sax/EntityResolver.html
+http://developer.android.com/reference/org/apache/http/impl/entity/EntitySerializer.html
+http://developer.android.com/reference/org/apache/http/entity/EntityTemplate.html
+http://developer.android.com/reference/org/apache/http/util/EntityUtils.html
+http://developer.android.com/reference/org/apache/http/HttpEntity.html
+http://developer.android.com/reference/java/lang/Enum.html
+http://developer.android.com/reference/java/lang/EnumConstantNotPresentException.html
+http://developer.android.com/reference/java/util/Enumeration.html
+http://developer.android.com/reference/java/util/EnumMap.html
+http://developer.android.com/reference/java/util/EnumSet.html
+http://developer.android.com/reference/android/os/Environment.html
+http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.html
+http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.Settings.html
+http://developer.android.com/reference/java/io/EOFException.html
+http://developer.android.com/reference/android/media/audiofx/Equalizer.html
+http://developer.android.com/reference/android/media/audiofx/Equalizer.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/Equalizer.Settings.html
+http://developer.android.com/reference/java/lang/Error.html
+http://developer.android.com/reference/org/xml/sax/ErrorHandler.html
+http://developer.android.com/reference/javax/xml/transform/ErrorListener.html
+http://developer.android.com/reference/javax/xml/transform/Transformer.html
+http://developer.android.com/reference/java/util/logging/ErrorManager.html
+http://developer.android.com/reference/java/util/logging/Handler.html
+http://developer.android.com/reference/android/opengl/ETC1.html
+http://developer.android.com/reference/android/opengl/ETC1Util.html
+http://developer.android.com/reference/android/opengl/ETC1Util.ETC1Texture.html
+http://developer.android.com/reference/java/util/EventListener.html
+http://developer.android.com/reference/java/util/EventListenerProxy.html
+http://developer.android.com/reference/android/util/EventLog.html
+http://developer.android.com/reference/android/util/EventLog.Event.html
+http://developer.android.com/reference/android/util/EventLogTags.html
+http://developer.android.com/reference/android/util/EventLogTags.Description.html
+http://developer.android.com/reference/java/util/EventObject.html
+http://developer.android.com/reference/java/lang/ExceptionInInitializerError.html
+http://developer.android.com/reference/org/apache/http/util/ExceptionUtils.html
+http://developer.android.com/reference/java/util/concurrent/Exchanger.html
+http://developer.android.com/reference/org/apache/http/protocol/ExecutionContext.html
+http://developer.android.com/reference/java/util/concurrent/ExecutionException.html
+http://developer.android.com/reference/java/util/concurrent/Executor.html
+http://developer.android.com/reference/java/util/concurrent/ExecutorCompletionService.html
+http://developer.android.com/reference/java/util/concurrent/Executors.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
+http://developer.android.com/reference/java/util/concurrent/ThreadFactory.html
+http://developer.android.com/reference/java/util/concurrent/Future.html
+http://developer.android.com/reference/javax/crypto/ExemptionMechanism.html
+http://developer.android.com/reference/javax/crypto/ExemptionMechanismException.html
+http://developer.android.com/reference/javax/crypto/ExemptionMechanismSpi.html
+http://developer.android.com/reference/android/media/ExifInterface.html
+http://developer.android.com/reference/android/app/ExpandableListActivity.html
+http://developer.android.com/reference/java/io/Externalizable.html
+http://developer.android.com/reference/android/inputmethodservice/ExtractEditText.html
+http://developer.android.com/reference/android/view/inputmethod/ExtractedText.html
+http://developer.android.com/reference/android/view/inputmethod/ExtractedTextRequest.html
+http://developer.android.com/reference/android/media/FaceDetector.html
+http://developer.android.com/reference/android/media/FaceDetector.Face.html
+http://developer.android.com/reference/javax/xml/parsers/FactoryConfigurationError.html
+http://developer.android.com/reference/android/content/pm/FeatureInfo.html
+http://developer.android.com/reference/java/lang/reflect/Field.html
+http://developer.android.com/reference/android/renderscript/FieldPacker.html
+http://developer.android.com/reference/java/text/FieldPosition.html
+http://developer.android.com/reference/java/io/File.html
+http://developer.android.com/reference/android/renderscript/FileA3D.html
+http://developer.android.com/reference/android/renderscript/FileA3D.EntryType.html
+http://developer.android.com/reference/android/renderscript/FileA3D.IndexEntry.html
+http://developer.android.com/reference/java/nio/channels/FileChannel.html
+http://developer.android.com/reference/java/nio/channels/FileChannel.MapMode.html
+http://developer.android.com/reference/java/io/FileDescriptor.html
+http://developer.android.com/reference/org/apache/http/entity/FileEntity.html
+http://developer.android.com/reference/java/io/FileFilter.html
+http://developer.android.com/reference/java/util/logging/FileHandler.html
+http://developer.android.com/reference/java/io/FileInputStream.html
+http://developer.android.com/reference/java/nio/channels/FileLock.html
+http://developer.android.com/reference/java/nio/channels/FileLockInterruptionException.html
+http://developer.android.com/reference/java/io/FilenameFilter.html
+http://developer.android.com/reference/java/net/FileNameMap.html
+http://developer.android.com/reference/java/io/FileNotFoundException.html
+http://developer.android.com/reference/android/os/FileObserver.html
+http://developer.android.com/reference/java/io/FileOutputStream.html
+http://developer.android.com/reference/java/io/FilePermission.html
+http://developer.android.com/reference/java/io/FileReader.html
+http://developer.android.com/reference/java/io/FileWriter.html
+http://developer.android.com/reference/java/util/logging/Filter.html
+http://developer.android.com/reference/java/io/FilterInputStream.html
+http://developer.android.com/reference/java/io/FilterOutputStream.html
+http://developer.android.com/reference/java/io/FilterReader.html
+http://developer.android.com/reference/java/io/FilterWriter.html
+http://developer.android.com/reference/android/test/FlakyTest.html
+http://developer.android.com/reference/android/test/InstrumentationTestCase.html
+http://developer.android.com/reference/android/renderscript/Float2.html
+http://developer.android.com/reference/android/renderscript/Float3.html
+http://developer.android.com/reference/android/renderscript/Float4.html
+http://developer.android.com/reference/java/nio/FloatBuffer.html
+http://developer.android.com/reference/android/util/FloatMath.html
+http://developer.android.com/reference/java/lang/Math.html
+http://developer.android.com/reference/java/io/Flushable.html
+http://developer.android.com/reference/android/renderscript/Font.html
+http://developer.android.com/reference/android/renderscript/Font.Style.html
+http://developer.android.com/reference/android/text/style/ForegroundColorSpan.html
+http://developer.android.com/reference/java/text/Format.html
+http://developer.android.com/reference/java/text/Format.Field.html
+http://developer.android.com/reference/android/nfc/FormatException.html
+http://developer.android.com/reference/java/util/FormatFlagsConversionMismatchException.html
+http://developer.android.com/reference/java/util/Formattable.html
+http://developer.android.com/reference/java/util/FormattableFlags.html
+http://developer.android.com/reference/org/apache/http/FormattedHeader.html
+http://developer.android.com/reference/android/text/format/Formatter.html
+http://developer.android.com/reference/java/util/Formatter.html
+http://developer.android.com/reference/java/util/logging/Formatter.html
+http://developer.android.com/reference/java/util/logging/LogRecord.html
+http://developer.android.com/reference/java/util/Formatter.BigDecimalLayoutForm.html
+http://developer.android.com/reference/java/util/FormatterClosedException.html
+http://developer.android.com/reference/android/support/v4/app/Fragment.html
+http://developer.android.com/reference/android/app/Fragment.InstantiationException.html
+http://developer.android.com/reference/android/support/v4/app/Fragment.InstantiationException.html
+http://developer.android.com/reference/android/app/Fragment.SavedState.html
+http://developer.android.com/reference/android/support/v4/app/Fragment.SavedState.html
+http://developer.android.com/reference/android/support/v4/app/FragmentManager.html
+http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html
+http://developer.android.com/reference/android/app/FragmentBreadCrumbs.html
+http://developer.android.com/reference/android/app/FragmentBreadCrumbs.OnBreadCrumbClickListener.html
+http://developer.android.com/reference/android/support/v13/app/FragmentCompat.html
+http://developer.android.com/guide/topics/fundamentals/fragments.html
+http://developer.android.com/reference/android/app/FragmentManager.BackStackEntry.html
+http://developer.android.com/reference/android/support/v4/app/FragmentManager.BackStackEntry.html
+http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html
+http://developer.android.com/reference/android/app/FragmentManager.OnBackStackChangedListener.html
+http://developer.android.com/reference/android/support/v4/app/FragmentManager.OnBackStackChangedListener.html
+http://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html
+http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html
+http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html
+http://developer.android.com/reference/android/support/v13/app/FragmentStatePagerAdapter.html
+http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html
+http://developer.android.com/reference/java/nio/channels/GatheringByteChannel.html
+http://developer.android.com/reference/java/security/GeneralSecurityException.html
+http://developer.android.com/reference/java/lang/reflect/GenericArrayType.html
+http://developer.android.com/reference/java/lang/reflect/GenericDeclaration.html
+http://developer.android.com/reference/java/lang/reflect/GenericSignatureFormatError.html
+http://developer.android.com/reference/android/location/Geocoder.html
+http://developer.android.com/reference/android/webkit/GeolocationPermissions.html
+http://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback.html
+http://developer.android.com/reference/android/hardware/GeomagneticField.html
+http://developer.android.com/reference/android/gesture/Gesture.html
+http://developer.android.com/reference/android/gesture/GestureLibraries.html
+http://developer.android.com/reference/android/gesture/GestureLibrary.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGestureListener.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturePerformedListener.html
+http://developer.android.com/reference/android/gesture/GestureOverlayView.OnGesturingListener.html
+http://developer.android.com/reference/android/gesture/GesturePoint.html
+http://developer.android.com/reference/android/gesture/GestureStore.html
+http://developer.android.com/reference/android/gesture/GestureStroke.html
+http://developer.android.com/reference/android/gesture/GestureUtils.html
+http://developer.android.com/reference/android/text/GetChars.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10Ext.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11Ext.html
+http://developer.android.com/reference/javax/microedition/khronos/opengles/GL11ExtensionPack.html
+http://developer.android.com/reference/android/opengl/GLDebugHelper.html
+http://developer.android.com/reference/android/opengl/GLES10.html
+http://developer.android.com/reference/android/opengl/GLES10Ext.html
+http://developer.android.com/reference/android/opengl/GLES11.html
+http://developer.android.com/reference/android/opengl/GLException.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLConfigChooser.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLContextFactory.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.EGLWindowSurfaceFactory.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.GLWrapper.html
+http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
+http://developer.android.com/reference/android/opengl/GLU.html
+http://developer.android.com/reference/android/opengl/GLUtils.html
+http://developer.android.com/reference/android/location/GpsSatellite.html
+http://developer.android.com/reference/android/location/GpsStatus.html
+http://developer.android.com/reference/android/location/GpsStatus.Listener.html
+http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html
+http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.Orientation.html
+http://developer.android.com/reference/java/util/GregorianCalendar.html
+http://developer.android.com/reference/android/telephony/gsm/GsmCellLocation.html
+http://developer.android.com/reference/java/security/Guard.html
+http://developer.android.com/reference/java/security/GuardedObject.html
+http://developer.android.com/reference/java/util/zip/GZIPInputStream.html
+http://developer.android.com/reference/java/util/zip/GZIPOutputStream.html
+http://developer.android.com/reference/android/os/MessageQueue.html
+http://developer.android.com/reference/android/os/Handler.Callback.html
+http://developer.android.com/reference/org/xml/sax/HandlerBase.html
+http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedEvent.html
+http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedListener.html
+http://developer.android.com/reference/java/util/HashMap.html
+http://developer.android.com/reference/java/util/HashSet.html
+http://developer.android.com/reference/java/util/Hashtable.html
+http://developer.android.com/reference/org/apache/http/Header.html
+http://developer.android.com/reference/org/apache/http/HeaderElement.html
+http://developer.android.com/reference/org/apache/http/message/HeaderGroup.html
+http://developer.android.com/reference/org/apache/http/message/HeaderValueFormatter.html
+http://developer.android.com/reference/org/apache/http/message/HeaderValueParser.html
+http://developer.android.com/reference/android/text/method/HideReturnsTransformationMethod.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/HostNameResolver.html
+http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
+http://developer.android.com/reference/android/text/Html.html
+http://developer.android.com/reference/android/text/Html.ImageGetter.html
+http://developer.android.com/reference/android/text/Html.TagHandler.html
+http://developer.android.com/reference/org/apache/http/protocol/HTTP.html
+http://developer.android.com/reference/org/apache/http/params/HttpAbstractParamBean.html
+http://developer.android.com/reference/android/webkit/HttpAuthHandler.html
+http://developer.android.com/reference/org/apache/http/client/HttpClient.html
+http://developer.android.com/reference/org/apache/http/client/params/HttpClientParams.html
+http://developer.android.com/reference/org/apache/http/HttpConnection.html
+http://developer.android.com/reference/org/apache/http/HttpConnectionMetrics.html
+http://developer.android.com/reference/org/apache/http/impl/HttpConnectionMetricsImpl.html
+http://developer.android.com/reference/org/apache/http/params/HttpConnectionParamBean.html
+http://developer.android.com/reference/org/apache/http/params/HttpConnectionParams.html
+http://developer.android.com/reference/java/net/HttpCookie.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpDateGenerator.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpDelete.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html
+http://developer.android.com/reference/org/apache/http/entity/HttpEntityWrapper.html
+http://developer.android.com/reference/org/apache/http/HttpException.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpExpectationVerifier.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpGet.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpHead.html
+http://developer.android.com/reference/org/apache/http/HttpInetConnection.html
+http://developer.android.com/reference/org/apache/http/HttpMessage.html
+http://developer.android.com/reference/org/apache/http/io/HttpMessageParser.html
+http://developer.android.com/reference/org/apache/http/io/HttpMessageWriter.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpOptions.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpProcessor.html
+http://developer.android.com/reference/org/apache/http/params/HttpProtocolParamBean.html
+http://developer.android.com/reference/org/apache/http/params/HttpProtocolParams.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpPut.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpRequestBase.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestExecutor.html
+http://developer.android.com/reference/org/apache/http/HttpRequestFactory.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandler.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerRegistry.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerResolver.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpRequestInterceptorList.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestParser.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestWriter.html
+http://developer.android.com/reference/org/apache/http/HttpResponse.html
+http://developer.android.com/reference/android/net/http/HttpResponseCache.html
+http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html
+http://developer.android.com/reference/org/apache/http/HttpResponseFactory.html
+http://developer.android.com/reference/org/apache/http/HttpResponseInterceptor.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpResponseInterceptorList.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseParser.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseWriter.html
+http://developer.android.com/reference/java/net/HttpRetryException.html
+http://developer.android.com/reference/org/apache/http/HttpServerConnection.html
+http://developer.android.com/reference/org/apache/http/protocol/HttpService.html
+http://developer.android.com/reference/org/apache/http/HttpStatus.html
+http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html
+http://developer.android.com/reference/java/net/HttpURLConnection.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpTrace.html
+http://developer.android.com/reference/org/apache/http/io/HttpTransportMetrics.html
+http://developer.android.com/reference/org/apache/http/impl/io/HttpTransportMetricsImpl.html
+http://developer.android.com/reference/org/apache/http/client/methods/HttpUriRequest.html
+http://developer.android.com/reference/java/net/URLConnection.html
+http://developer.android.com/reference/org/apache/http/HttpVersion.html
+http://developer.android.com/reference/android/os/IBinder.DeathRecipient.html
+http://developer.android.com/reference/android/text/style/IconMarginSpan.html
+http://developer.android.com/reference/java/security/Identity.html
+http://developer.android.com/reference/java/security/Principal.html
+http://developer.android.com/reference/java/security/KeyStore.html
+http://developer.android.com/reference/java/util/IdentityHashMap.html
+http://developer.android.com/reference/org/apache/http/impl/io/IdentityInputStream.html
+http://developer.android.com/reference/org/apache/http/impl/io/IdentityOutputStream.html
+http://developer.android.com/reference/java/security/IdentityScope.html
+http://developer.android.com/reference/org/apache/http/impl/conn/IdleConnectionHandler.html
+http://developer.android.com/reference/java/net/IDN.html
+http://developer.android.com/reference/android/os/IInterface.html
+http://developer.android.com/reference/java/lang/IllegalAccessError.html
+http://developer.android.com/reference/java/lang/IllegalAccessException.html
+http://developer.android.com/reference/java/nio/channels/IllegalBlockingModeException.html
+http://developer.android.com/reference/javax/crypto/IllegalBlockSizeException.html
+http://developer.android.com/reference/java/nio/charset/IllegalCharsetNameException.html
+http://developer.android.com/reference/java/util/IllegalFormatCodePointException.html
+http://developer.android.com/reference/java/util/IllegalFormatConversionException.html
+http://developer.android.com/reference/java/util/IllegalFormatException.html
+http://developer.android.com/reference/java/util/IllegalFormatFlagsException.html
+http://developer.android.com/reference/java/util/IllegalFormatPrecisionException.html
+http://developer.android.com/reference/java/util/IllegalFormatWidthException.html
+http://developer.android.com/reference/java/lang/IllegalMonitorStateException.html
+http://developer.android.com/reference/java/nio/channels/IllegalSelectorException.html
+http://developer.android.com/reference/java/lang/IllegalStateException.html
+http://developer.android.com/reference/java/lang/IllegalThreadStateException.html
+http://developer.android.com/reference/android/graphics/ImageFormat.html
+http://developer.android.com/reference/android/text/style/ImageSpan.html
+http://developer.android.com/reference/java/lang/IncompatibleClassChangeError.html
+http://developer.android.com/reference/java/lang/annotation/IncompleteAnnotationException.html
+http://developer.android.com/reference/java/beans/IndexedPropertyChangeEvent.html
+http://developer.android.com/reference/java/beans/PropertyChangeEvent.html
+http://developer.android.com/reference/java/lang/IndexOutOfBoundsException.html
+http://developer.android.com/reference/java/net/Inet4Address.html
+http://developer.android.com/reference/java/net/Inet6Address.html
+http://developer.android.com/reference/java/net/InetSocketAddress.html
+http://developer.android.com/reference/java/util/zip/Inflater.html
+http://developer.android.com/reference/java/util/zip/InflaterInputStream.html
+http://developer.android.com/reference/java/util/zip/InflaterOutputStream.html
+http://developer.android.com/reference/java/lang/InheritableThreadLocal.html
+http://developer.android.com/reference/java/lang/annotation/Inherited.html
+http://developer.android.com/reference/android/view/inputmethod/InputBinding.html
+http://developer.android.com/reference/android/view/inputmethod/InputConnectionWrapper.html
+http://developer.android.com/reference/android/text/InputFilter.html
+http://developer.android.com/reference/android/text/InputFilter.AllCaps.html
+http://developer.android.com/reference/android/text/InputFilter.LengthFilter.html
+http://developer.android.com/reference/android/hardware/input/InputManager.html
+http://developer.android.com/reference/android/hardware/input/InputManager.InputDeviceListener.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethod.SessionCallback.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodInfo.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodImpl.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodSessionImpl.html
+http://developer.android.com/reference/android/inputmethodservice/InputMethodService.Insets.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSession.EventCallback.html
+http://developer.android.com/reference/android/view/inputmethod/InputMethodSubtype.html
+http://developer.android.com/reference/java/util/InputMismatchException.html
+http://developer.android.com/reference/org/xml/sax/InputSource.html
+http://developer.android.com/reference/org/apache/http/entity/InputStreamEntity.html
+http://developer.android.com/reference/java/io/InputStreamReader.html
+http://developer.android.com/reference/android/text/InputType.html
+http://developer.android.com/reference/android/graphics/drawable/InsetDrawable.html
+http://developer.android.com/reference/java/lang/InstantiationError.html
+http://developer.android.com/reference/java/lang/InstantiationException.html
+http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html
+http://developer.android.com/reference/android/app/Instrumentation.ActivityResult.html
+http://developer.android.com/reference/android/content/pm/InstrumentationInfo.html
+http://developer.android.com/reference/android/test/InstrumentationTestRunner.html
+http://developer.android.com/reference/junit/framework/TestCase.html
+http://developer.android.com/reference/android/test/InstrumentationTestSuite.html
+http://developer.android.com/reference/junit/framework/TestSuite.html
+http://developer.android.com/reference/android/renderscript/Int2.html
+http://developer.android.com/reference/android/renderscript/Int3.html
+http://developer.android.com/reference/android/renderscript/Int4.html
+http://developer.android.com/reference/java/nio/IntBuffer.html
+http://developer.android.com/reference/java/lang/Integer.html
+http://developer.android.com/reference/android/content/Intent.FilterComparison.html
+http://developer.android.com/reference/android/content/Intent.ShortcutIconResource.html
+http://developer.android.com/reference/android/content/IntentFilter.AuthorityEntry.html
+http://developer.android.com/reference/android/content/IntentFilter.MalformedMimeTypeException.html
+http://developer.android.com/reference/android/content/IntentSender.html
+http://developer.android.com/reference/android/content/IntentSender.OnFinished.html
+http://developer.android.com/reference/android/content/IntentSender.SendIntentException.html
+http://developer.android.com/reference/java/net/InterfaceAddress.html
+http://developer.android.com/reference/java/lang/InternalError.html
+http://developer.android.com/reference/android/graphics/Interpolator.html
+http://developer.android.com/reference/android/graphics/Interpolator.Result.html
+http://developer.android.com/reference/java/io/InterruptedIOException.html
+http://developer.android.com/reference/java/nio/channels/InterruptibleChannel.html
+http://developer.android.com/reference/java/security/InvalidAlgorithmParameterException.html
+http://developer.android.com/reference/java/io/InvalidClassException.html
+http://developer.android.com/reference/java/security/InvalidKeyException.html
+http://developer.android.com/reference/java/security/spec/InvalidKeySpecException.html
+http://developer.android.com/reference/java/nio/InvalidMarkException.html
+http://developer.android.com/reference/java/io/InvalidObjectException.html
+http://developer.android.com/reference/java/security/InvalidParameterException.html
+http://developer.android.com/reference/java/security/spec/InvalidParameterSpecException.html
+http://developer.android.com/reference/java/util/prefs/InvalidPreferencesFormatException.html
+http://developer.android.com/reference/java/util/InvalidPropertiesFormatException.html
+http://developer.android.com/reference/java/lang/reflect/InvocationHandler.html
+http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html
+http://developer.android.com/reference/java/io/IOError.html
+http://developer.android.com/reference/android/nfc/tech/IsoDep.html
+http://developer.android.com/reference/android/nfc/Tag.html
+http://developer.android.com/reference/android/test/IsolatedContext.html
+http://developer.android.com/reference/java/lang/Iterable.html
+http://developer.android.com/reference/javax/crypto/spec/IvParameterSpec.html
+http://developer.android.com/reference/java/util/jar/JarEntry.html
+http://developer.android.com/reference/java/util/jar/JarException.html
+http://developer.android.com/reference/java/util/jar/JarFile.html
+http://developer.android.com/reference/java/util/jar/JarInputStream.html
+http://developer.android.com/reference/java/util/jar/JarOutputStream.html
+http://developer.android.com/reference/java/net/JarURLConnection.html
+http://developer.android.com/reference/android/media/JetPlayer.html
+http://developer.android.com/reference/android/media/JetPlayer.OnJetEventListener.html
+http://developer.android.com/reference/org/json/JSONArray.html
+http://developer.android.com/reference/org/json/JSONException.html
+http://developer.android.com/reference/org/json/JSONObject.html
+http://developer.android.com/reference/android/util/JsonReader.html
+http://developer.android.com/reference/org/json/JSONStringer.html
+http://developer.android.com/reference/android/util/JsonToken.html
+http://developer.android.com/reference/org/json/JSONTokener.html
+http://developer.android.com/reference/android/util/JsonWriter.html
+http://developer.android.com/reference/android/webkit/JsPromptResult.html
+http://developer.android.com/reference/android/webkit/JsResult.html
+http://developer.android.com/reference/android/webkit/WebChromeClient.html
+http://developer.android.com/reference/java/security/Key.html
+http://developer.android.com/reference/javax/crypto/KeyAgreement.html
+http://developer.android.com/reference/javax/crypto/KeyAgreementSpi.html
+http://developer.android.com/reference/android/inputmethodservice/Keyboard.html
+http://developer.android.com/reference/android/inputmethodservice/Keyboard.Key.html
+http://developer.android.com/reference/android/inputmethodservice/Keyboard.Row.html
+http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html
+http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html
+http://developer.android.com/reference/android/security/KeyChain.html
+http://developer.android.com/reference/android/security/KeyChainAliasCallback.html
+http://developer.android.com/reference/android/security/KeyChainException.html
+http://developer.android.com/reference/android/support/v4/view/KeyEventCompat.html
+http://developer.android.com/reference/java/security/KeyException.html
+http://developer.android.com/reference/java/security/KeyFactory.html
+http://developer.android.com/reference/java/security/KeyFactorySpi.html
+http://developer.android.com/reference/javax/crypto/KeyGenerator.html
+http://developer.android.com/reference/javax/crypto/KeyGeneratorSpi.html
+http://developer.android.com/reference/android/app/KeyguardManager.html
+http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html
+http://developer.android.com/reference/android/app/KeyguardManager.OnKeyguardExitResult.html
+http://developer.android.com/reference/java/security/KeyManagementException.html
+http://developer.android.com/reference/javax/net/ssl/KeyManager.html
+http://developer.android.com/reference/javax/net/ssl/KeyManagerFactory.html
+http://developer.android.com/reference/javax/net/ssl/KeyManagerFactorySpi.html
+http://developer.android.com/reference/java/security/KeyPair.html
+http://developer.android.com/reference/java/security/KeyPairGenerator.html
+http://developer.android.com/reference/java/security/KeyPairGeneratorSpi.html
+http://developer.android.com/reference/java/security/KeyRep.html
+http://developer.android.com/reference/java/security/KeyRep.Type.html
+http://developer.android.com/reference/java/security/spec/KeySpec.html
+http://developer.android.com/reference/java/security/KeyStore.Builder.html
+http://developer.android.com/reference/java/security/KeyStore.CallbackHandlerProtection.html
+http://developer.android.com/reference/java/security/KeyStore.Entry.html
+http://developer.android.com/reference/java/security/KeyStore.LoadStoreParameter.html
+http://developer.android.com/reference/java/security/KeyStore.PasswordProtection.html
+http://developer.android.com/reference/java/security/KeyStore.PrivateKeyEntry.html
+http://developer.android.com/reference/java/security/KeyStore.ProtectionParameter.html
+http://developer.android.com/reference/java/security/KeyStore.SecretKeyEntry.html
+http://developer.android.com/reference/java/security/KeyStore.TrustedCertificateEntry.html
+http://developer.android.com/reference/javax/net/ssl/KeyStoreBuilderParameters.html
+http://developer.android.com/reference/java/security/KeyStoreException.html
+http://developer.android.com/reference/java/security/KeyStoreSpi.html
+http://developer.android.com/reference/android/content/pm/LabeledIntent.html
+http://developer.android.com/reference/org/apache/http/util/LangUtils.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest.html
+http://developer.android.com/reference/android/app/LauncherActivity.html
+http://developer.android.com/reference/android/app/LauncherActivity.IconResizer.html
+http://developer.android.com/reference/android/app/LauncherActivity.ListItem.html
+http://developer.android.com/reference/org/apache/http/impl/entity/LaxContentLengthStrategy.html
+http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/LayeredSocketFactory.html
+http://developer.android.com/reference/android/graphics/LayerRasterizer.html
+http://developer.android.com/reference/android/text/Layout.html
+http://developer.android.com/reference/android/text/Layout.Alignment.html
+http://developer.android.com/reference/android/text/Layout.Directions.html
+http://developer.android.com/reference/java/security/cert/LDAPCertStoreParameters.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.LeadingMarginSpan2.html
+http://developer.android.com/reference/android/text/style/LeadingMarginSpan.Standard.html
+http://developer.android.com/reference/java/util/logging/Level.html
+http://developer.android.com/reference/android/graphics/LightingColorFilter.html
+http://developer.android.com/reference/android/graphics/LinearGradient.html
+http://developer.android.com/reference/android/text/style/LineBackgroundSpan.html
+http://developer.android.com/reference/org/apache/http/message/LineFormatter.html
+http://developer.android.com/reference/android/text/style/LineHeightSpan.html
+http://developer.android.com/reference/android/text/style/LineHeightSpan.WithDensity.html
+http://developer.android.com/reference/java/io/LineNumberInputStream.html
+http://developer.android.com/reference/java/io/LineNumberReader.html
+http://developer.android.com/reference/org/apache/http/message/LineParser.html
+http://developer.android.com/reference/java/lang/LinkageError.html
+http://developer.android.com/reference/java/util/concurrent/LinkedBlockingDeque.html
+http://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue.html
+http://developer.android.com/reference/java/util/LinkedHashSet.html
+http://developer.android.com/reference/java/util/LinkedList.html
+http://developer.android.com/reference/android/text/util/Linkify.html
+http://developer.android.com/reference/android/text/util/Linkify.MatchFilter.html
+http://developer.android.com/reference/android/text/util/Linkify.TransformFilter.html
+http://developer.android.com/reference/android/text/method/LinkMovementMethod.html
+http://developer.android.com/reference/android/support/v4/app/ListFragment.html
+http://developer.android.com/reference/java/util/ListIterator.html
+http://developer.android.com/reference/android/preference/ListPreference.html
+http://developer.android.com/reference/java/util/ListResourceBundle.html
+http://developer.android.com/reference/android/provider/LiveFolders.html
+http://developer.android.com/reference/android/content/Loader.ForceLoadContentObserver.html
+http://developer.android.com/reference/android/content/Loader.OnLoadCanceledListener.html
+http://developer.android.com/reference/android/content/Loader.OnLoadCompleteListener.html
+http://developer.android.com/reference/android/app/LoaderManager.html
+http://developer.android.com/reference/android/support/v4/app/LoaderManager.html
+http://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html
+http://developer.android.com/reference/android/support/v4/app/LoaderManager.LoaderCallbacks.html
+http://developer.android.com/reference/android/test/LoaderTestCase.html
+http://developer.android.com/reference/android/app/LocalActivityManager.html
+http://developer.android.com/reference/java/util/Locale.html
+http://developer.android.com/reference/android/net/LocalServerSocket.html
+http://developer.android.com/reference/android/net/LocalSocket.html
+http://developer.android.com/reference/android/net/LocalSocketAddress.html
+http://developer.android.com/reference/android/net/LocalSocketAddress.Namespace.html
+http://developer.android.com/reference/android/location/Location.html
+http://developer.android.com/reference/android/location/LocationListener.html
+http://developer.android.com/reference/android/location/LocationManager.html
+http://developer.android.com/reference/android/location/LocationProvider.html
+http://developer.android.com/reference/org/xml/sax/Locator.html
+http://developer.android.com/reference/org/xml/sax/ext/Locator2.html
+http://developer.android.com/reference/org/xml/sax/ext/Locator2Impl.html
+http://developer.android.com/reference/org/xml/sax/helpers/LocatorImpl.html
+http://developer.android.com/reference/java/util/concurrent/locks/LockSupport.html
+http://developer.android.com/reference/android/util/Log.html
+http://developer.android.com/reference/java/util/logging/Logger.html
+http://developer.android.com/reference/java/util/logging/LoggingMXBean.html
+http://developer.android.com/reference/java/util/logging/LoggingPermission.html
+http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionInputBuffer.html
+http://developer.android.com/reference/org/apache/http/impl/conn/LoggingSessionOutputBuffer.html
+http://developer.android.com/reference/javax/security/auth/login/LoginException.html
+http://developer.android.com/reference/android/text/LoginFilter.html
+http://developer.android.com/reference/android/text/LoginFilter.PasswordFilterGMail.html
+http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGeneric.html
+http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGMail.html
+http://developer.android.com/reference/java/util/logging/LogManager.html
+http://developer.android.com/reference/android/util/LogPrinter.html
+http://developer.android.com/reference/android/util/Printer.html
+http://developer.android.com/reference/java/lang/Long.html
+http://developer.android.com/reference/android/renderscript/Long2.html
+http://developer.android.com/reference/android/renderscript/Long3.html
+http://developer.android.com/reference/android/renderscript/Long4.html
+http://developer.android.com/reference/java/nio/LongBuffer.html
+http://developer.android.com/reference/android/util/LongSparseArray.html
+http://developer.android.com/reference/android/os/Looper.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSException.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSInput.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSOutput.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSParser.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSParserFilter.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSResourceResolver.html
+http://developer.android.com/reference/org/w3c/dom/ls/LSSerializer.html
+http://developer.android.com/reference/javax/crypto/Mac.html
+http://developer.android.com/reference/javax/crypto/MacSpi.html
+http://developer.android.com/reference/android/net/MailTo.html
+http://developer.android.com/reference/org/apache/http/MalformedChunkCodingException.html
+http://developer.android.com/reference/org/apache/http/cookie/MalformedCookieException.html
+http://developer.android.com/reference/java/nio/charset/MalformedInputException.html
+http://developer.android.com/reference/android/util/MalformedJsonException.html
+http://developer.android.com/reference/java/lang/reflect/MalformedParameterizedTypeException.html
+http://developer.android.com/reference/java/net/MalformedURLException.html
+http://developer.android.com/reference/javax/net/ssl/ManagerFactoryParameters.html
+http://developer.android.com/reference/android/Manifest.html
+http://developer.android.com/reference/java/util/jar/Manifest.html
+http://developer.android.com/reference/android/Manifest.permission_group.html
+http://developer.android.com/reference/java/util/Map.Entry.html
+http://developer.android.com/reference/java/nio/MappedByteBuffer.html
+http://developer.android.com/reference/android/graphics/MaskFilter.html
+http://developer.android.com/reference/android/text/style/MaskFilterSpan.html
+http://developer.android.com/reference/java/util/regex/Matcher.html
+http://developer.android.com/reference/java/util/regex/MatchResult.html
+http://developer.android.com/reference/java/util/regex/Pattern.html
+http://developer.android.com/reference/java/math/MathContext.html
+http://developer.android.com/reference/android/opengl/Matrix.html
+http://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html
+http://developer.android.com/reference/android/renderscript/Matrix2f.html
+http://developer.android.com/reference/android/renderscript/Matrix3f.html
+http://developer.android.com/reference/android/renderscript/Matrix4f.html
+http://developer.android.com/reference/android/database/MatrixCursor.RowBuilder.html
+http://developer.android.com/reference/android/media/MediaActionSound.html
+http://developer.android.com/reference/android/media/MediaCodec.html
+http://developer.android.com/reference/android/media/MediaCodec.BufferInfo.html
+http://developer.android.com/reference/android/media/MediaCodec.CryptoException.html
+http://developer.android.com/reference/android/media/MediaCodec.CryptoInfo.html
+http://developer.android.com/reference/android/media/MediaCodecInfo.html
+http://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html
+http://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel.html
+http://developer.android.com/reference/android/media/MediaCodecList.html
+http://developer.android.com/reference/android/media/MediaCrypto.html
+http://developer.android.com/reference/android/media/MediaCryptoException.html
+http://developer.android.com/reference/android/media/MediaExtractor.html
+http://developer.android.com/reference/android/media/MediaFormat.html
+http://developer.android.com/reference/android/media/MediaPlayer.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnInfoListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnPreparedListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnSeekCompleteListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnTimedTextListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.OnVideoSizeChangedListener.html
+http://developer.android.com/reference/android/media/MediaPlayer.TrackInfo.html
+http://developer.android.com/reference/android/media/MediaRecorder.html
+http://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html
+http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html
+http://developer.android.com/reference/android/media/MediaRecorder.OnErrorListener.html
+http://developer.android.com/reference/android/media/MediaRecorder.OnInfoListener.html
+http://developer.android.com/reference/android/media/MediaRecorder.OutputFormat.html
+http://developer.android.com/reference/android/media/MediaRecorder.VideoEncoder.html
+http://developer.android.com/reference/android/media/MediaRecorder.VideoSource.html
+http://developer.android.com/reference/android/app/MediaRouteActionProvider.html
+http://developer.android.com/reference/android/app/MediaRouteButton.html
+http://developer.android.com/reference/android/media/MediaRouter.html
+http://developer.android.com/reference/android/media/MediaRouter.Callback.html
+http://developer.android.com/reference/android/media/MediaRouter.RouteCategory.html
+http://developer.android.com/reference/android/media/MediaRouter.RouteGroup.html
+http://developer.android.com/reference/android/media/MediaRouter.RouteInfo.html
+http://developer.android.com/reference/android/media/MediaRouter.SimpleCallback.html
+http://developer.android.com/reference/android/media/MediaRouter.UserRouteInfo.html
+http://developer.android.com/reference/android/media/MediaRouter.VolumeCallback.html
+http://developer.android.com/reference/android/media/MediaScannerConnection.html
+http://developer.android.com/reference/android/media/MediaScannerConnection.MediaScannerConnectionClient.html
+http://developer.android.com/reference/android/media/MediaScannerConnection.OnScanCompletedListener.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.AlbumColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Albums.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Artists.Albums.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Genres.Members.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.GenresColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.Playlists.Members.html
+http://developer.android.com/reference/android/provider/MediaStore.Audio.PlaylistsColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Files.html
+http://developer.android.com/reference/android/provider/MediaStore.Files.FileColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.ImageColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.Media.html
+http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html
+http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.Media.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html
+http://developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html
+http://developer.android.com/reference/android/media/MediaSyncEvent.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest.html
+http://developer.android.com/reference/java/lang/reflect/Member.html
+http://developer.android.com/reference/android/os/MemoryFile.html
+http://developer.android.com/reference/java/util/logging/MemoryHandler.html
+http://developer.android.com/reference/android/support/v4/view/MenuCompat.html
+http://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html
+http://developer.android.com/reference/android/database/MergeCursor.html
+http://developer.android.com/reference/android/renderscript/Mesh.html
+http://developer.android.com/reference/android/renderscript/Mesh.AllocationBuilder.html
+http://developer.android.com/reference/android/renderscript/Mesh.Builder.html
+http://developer.android.com/reference/android/renderscript/Mesh.Primitive.html
+http://developer.android.com/reference/android/renderscript/Mesh.TriangleMeshBuilder.html
+http://developer.android.com/reference/java/security/MessageDigest.html
+http://developer.android.com/reference/java/security/MessageDigestSpi.html
+http://developer.android.com/reference/java/text/MessageFormat.html
+http://developer.android.com/reference/java/text/MessageFormat.Field.html
+http://developer.android.com/reference/android/os/MessageQueue.IdleHandler.html
+http://developer.android.com/reference/android/text/method/MetaKeyKeyListener.html
+http://developer.android.com/reference/java/lang/reflect/Method.html
+http://developer.android.com/reference/org/apache/http/MethodNotSupportedException.html
+http://developer.android.com/reference/android/text/style/MetricAffectingSpan.html
+http://developer.android.com/reference/java/security/spec/MGF1ParameterSpec.html
+http://developer.android.com/reference/android/nfc/tech/MifareClassic.html
+http://developer.android.com/reference/android/nfc/tech/MifareUltralight.html
+http://developer.android.com/reference/android/webkit/MimeTypeMap.html
+http://developer.android.com/reference/java/util/MissingFormatArgumentException.html
+http://developer.android.com/reference/java/util/MissingFormatWidthException.html
+http://developer.android.com/reference/java/util/MissingResourceException.html
+http://developer.android.com/reference/android/test/mock/MockApplication.html
+http://developer.android.com/reference/android/test/mock/MockContentProvider.html
+http://developer.android.com/reference/android/test/mock/MockContentResolver.html
+http://developer.android.com/reference/android/test/mock/MockContext.html
+http://developer.android.com/reference/android/test/mock/MockCursor.html
+http://developer.android.com/reference/android/test/mock/MockDialogInterface.html
+http://developer.android.com/reference/android/test/mock/MockPackageManager.html
+http://developer.android.com/reference/android/test/mock/MockResources.html
+http://developer.android.com/reference/java/lang/reflect/Modifier.html
+http://developer.android.com/reference/android/util/MonthDisplayHelper.html
+http://developer.android.com/reference/android/test/MoreAsserts.html
+http://developer.android.com/reference/android/support/v4/view/MotionEventCompat.html
+http://developer.android.com/reference/android/text/method/MovementMethod.html
+http://developer.android.com/reference/android/graphics/Movie.html
+http://developer.android.com/reference/android/mtp/MtpConstants.html
+http://developer.android.com/reference/android/mtp/MtpDevice.html
+http://developer.android.com/reference/android/mtp/MtpDeviceInfo.html
+http://developer.android.com/reference/android/mtp/MtpObjectInfo.html
+http://developer.android.com/reference/android/mtp/MtpStorageInfo.html
+http://developer.android.com/reference/java/net/MulticastSocket.html
+http://developer.android.com/reference/android/preference/MultiSelectListPreference.html
+http://developer.android.com/reference/android/text/method/MultiTapKeyListener.html
+http://developer.android.com/reference/android/content/MutableContextWrapper.html
+http://developer.android.com/reference/org/w3c/dom/NamedNodeMap.html
+http://developer.android.com/reference/org/w3c/dom/NameList.html
+http://developer.android.com/reference/javax/xml/namespace/NamespaceContext.html
+http://developer.android.com/reference/org/xml/sax/helpers/NamespaceSupport.html
+http://developer.android.com/reference/org/apache/http/NameValuePair.html
+http://developer.android.com/reference/android/app/NativeActivity.html
+http://developer.android.com/reference/java/util/SortedMap.html
+http://developer.android.com/reference/java/util/SortedSet.html
+http://developer.android.com/reference/android/support/v4/app/NavUtils.html
+http://developer.android.com/reference/java/sql/NClob.html
+http://developer.android.com/reference/android/nfc/tech/Ndef.html
+http://developer.android.com/reference/android/nfc/tech/NdefFormatable.html
+http://developer.android.com/reference/android/nfc/NdefMessage.html
+http://developer.android.com/reference/android/nfc/NdefRecord.html
+http://developer.android.com/reference/java/lang/NegativeArraySizeException.html
+http://developer.android.com/reference/android/telephony/NeighboringCellInfo.html
+http://developer.android.com/reference/java/net/NetPermission.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDomainHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.html
+http://developer.android.com/reference/android/accounts/NetworkErrorException.html
+http://developer.android.com/reference/android/net/NetworkInfo.html
+http://developer.android.com/reference/android/net/NetworkInfo.DetailedState.html
+http://developer.android.com/reference/android/net/NetworkInfo.State.html
+http://developer.android.com/reference/java/net/NetworkInterface.html
+http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
+http://developer.android.com/reference/android/nfc/tech/NfcA.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.CreateBeamUrisCallback.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.CreateNdefMessageCallback.html
+http://developer.android.com/reference/android/nfc/NfcAdapter.OnNdefPushCompleteCallback.html
+http://developer.android.com/reference/android/nfc/tech/NfcB.html
+http://developer.android.com/reference/android/nfc/NfcEvent.html
+http://developer.android.com/reference/android/nfc/tech/NfcF.html
+http://developer.android.com/reference/android/nfc/NfcManager.html
+http://developer.android.com/reference/android/nfc/tech/NfcV.html
+http://developer.android.com/reference/android/graphics/NinePatch.html
+http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html
+http://developer.android.com/reference/java/lang/NoClassDefFoundError.html
+http://developer.android.com/reference/java/nio/channels/NoConnectionPendingException.html
+http://developer.android.com/reference/org/apache/http/impl/NoConnectionReuseStrategy.html
+http://developer.android.com/reference/android/text/NoCopySpan.html
+http://developer.android.com/reference/android/text/NoCopySpan.Concrete.html
+http://developer.android.com/reference/org/w3c/dom/Node.html
+http://developer.android.com/reference/java/util/prefs/NodeChangeEvent.html
+http://developer.android.com/reference/java/util/prefs/NodeChangeListener.html
+http://developer.android.com/reference/org/w3c/dom/NodeList.html
+http://developer.android.com/reference/org/apache/http/NoHttpResponseException.html
+http://developer.android.com/reference/android/media/audiofx/NoiseSuppressor.html
+http://developer.android.com/reference/java/nio/channels/NonReadableChannelException.html
+http://developer.android.com/reference/org/apache/http/client/NonRepeatableRequestException.html
+http://developer.android.com/reference/java/nio/channels/NonWritableChannelException.html
+http://developer.android.com/reference/java/text/Normalizer.html
+http://developer.android.com/reference/java/text/Normalizer.Form.html
+http://developer.android.com/reference/java/net/NoRouteToHostException.html
+http://developer.android.com/reference/java/security/NoSuchAlgorithmException.html
+http://developer.android.com/reference/java/util/NoSuchElementException.html
+http://developer.android.com/reference/java/lang/NoSuchFieldError.html
+http://developer.android.com/reference/java/lang/NoSuchFieldException.html
+http://developer.android.com/reference/java/lang/NoSuchMethodError.html
+http://developer.android.com/reference/java/lang/NoSuchMethodException.html
+http://developer.android.com/reference/javax/crypto/NoSuchPaddingException.html
+http://developer.android.com/reference/android/util/NoSuchPropertyException.html
+http://developer.android.com/reference/java/security/NoSuchProviderException.html
+http://developer.android.com/reference/java/io/NotActiveException.html
+http://developer.android.com/reference/org/w3c/dom/Notation.html
+http://developer.android.com/reference/android/app/Notification.BigPictureStyle.html
+http://developer.android.com/reference/android/app/Notification.BigTextStyle.html
+http://developer.android.com/reference/android/app/Notification.Builder.html
+http://developer.android.com/reference/android/app/Notification.InboxStyle.html
+http://developer.android.com/reference/android/app/Notification.Style.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.html
+http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
+http://developer.android.com/reference/java/io/NotSerializableException.html
+http://developer.android.com/reference/java/nio/channels/NotYetBoundException.html
+http://developer.android.com/reference/java/nio/channels/NotYetConnectedException.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.DiscoveryListener.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.RegistrationListener.html
+http://developer.android.com/reference/android/net/nsd/NsdManager.ResolveListener.html
+http://developer.android.com/reference/android/net/nsd/NsdServiceInfo.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngine.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMEngineException.html
+http://developer.android.com/reference/org/apache/http/impl/auth/NTLMScheme.html
+http://developer.android.com/reference/javax/crypto/NullCipher.html
+http://developer.android.com/reference/java/lang/Number.html
+http://developer.android.com/reference/java/lang/Short.html
+http://developer.android.com/reference/java/text/NumberFormat.Field.html
+http://developer.android.com/reference/java/lang/NumberFormatException.html
+http://developer.android.com/reference/android/text/method/NumberKeyListener.html
+http://developer.android.com/reference/java/awt/font/NumericShaper.html
+http://developer.android.com/reference/javax/crypto/spec/OAEPParameterSpec.html
+http://developer.android.com/reference/android/content/res/ObbInfo.html
+http://developer.android.com/reference/android/content/res/ObbScanner.html
+http://developer.android.com/reference/java/io/ObjectInput.html
+http://developer.android.com/reference/java/io/ObjectInputStream.html
+http://developer.android.com/reference/java/io/ObjectInputStream.GetField.html
+http://developer.android.com/reference/java/io/ObjectInputValidation.html
+http://developer.android.com/reference/java/io/ObjectOutput.html
+http://developer.android.com/reference/java/io/ObjectOutputStream.html
+http://developer.android.com/reference/java/io/ObjectOutputStream.PutField.html
+http://developer.android.com/reference/java/io/ObjectStreamClass.html
+http://developer.android.com/reference/java/io/ObjectStreamConstants.html
+http://developer.android.com/reference/java/io/ObjectStreamException.html
+http://developer.android.com/reference/java/io/ObjectStreamField.html
+http://developer.android.com/reference/java/util/Observable.html
+http://developer.android.com/reference/java/util/Observer.html
+http://developer.android.com/reference/android/accounts/OnAccountsUpdateListener.html
+http://developer.android.com/reference/android/os/storage/OnObbStateChangeListener.html
+http://developer.android.com/reference/android/os/storage/StorageManager.html
+http://developer.android.com/reference/dalvik/bytecode/OpcodeInfo.html
+http://developer.android.com/reference/dalvik/bytecode/Opcodes.html
+http://developer.android.com/reference/android/provider/OpenableColumns.html
+http://developer.android.com/reference/android/content/OperationApplicationException.html
+http://developer.android.com/reference/android/accounts/OperationCanceledException.html
+http://developer.android.com/reference/android/os/OperationCanceledException.html
+http://developer.android.com/reference/java/io/OptionalDataException.html
+http://developer.android.com/reference/android/gesture/OrientedBoundingBox.html
+http://developer.android.com/reference/java/lang/OutOfMemoryError.html
+http://developer.android.com/reference/javax/xml/transform/OutputKeys.html
+http://developer.android.com/reference/java/io/OutputStreamWriter.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/OvalShape.html
+http://developer.android.com/reference/java/nio/channels/OverlappingFileLockException.html
+http://developer.android.com/reference/java/lang/Override.html
+http://developer.android.com/reference/java/util/jar/Pack200.html
+http://developer.android.com/reference/java/util/jar/Pack200.Packer.html
+http://developer.android.com/reference/java/util/jar/Pack200.Unpacker.html
+http://developer.android.com/reference/java/lang/Package.html
+http://developer.android.com/reference/android/content/pm/PackageInfo.html
+http://developer.android.com/reference/android/content/pm/PackageItemInfo.html
+http://developer.android.com/reference/android/content/pm/PackageItemInfo.DisplayNameComparator.html
+http://developer.android.com/reference/android/content/pm/PackageManager.NameNotFoundException.html
+http://developer.android.com/reference/android/content/pm/PackageStats.html
+http://developer.android.com/reference/android/support/v4/view/PagerTabStrip.html
+http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html
+http://developer.android.com/reference/android/graphics/Paint.Align.html
+http://developer.android.com/reference/android/graphics/Paint.Cap.html
+http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html
+http://developer.android.com/reference/android/graphics/Paint.FontMetricsInt.html
+http://developer.android.com/reference/android/graphics/Paint.Join.html
+http://developer.android.com/reference/android/graphics/Paint.Style.html
+http://developer.android.com/reference/android/graphics/drawable/PaintDrawable.html
+http://developer.android.com/reference/android/graphics/PaintFlagsDrawFilter.html
+http://developer.android.com/reference/android/util/Pair.html
+http://developer.android.com/reference/android/text/style/ParagraphStyle.html
+http://developer.android.com/reference/java/lang/reflect/ParameterizedType.html
+http://developer.android.com/reference/java/sql/ParameterMetaData.html
+http://developer.android.com/reference/android/os/Parcel.html
+http://developer.android.com/reference/android/os/Parcelable.ClassLoaderCreator.html
+http://developer.android.com/reference/android/os/Parcelable.Creator.html
+http://developer.android.com/reference/android/support/v4/os/ParcelableCompat.html
+http://developer.android.com/reference/android/support/v4/os/ParcelableCompatCreatorCallbacks.html
+http://developer.android.com/reference/android/text/ParcelableSpan.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseInputStream.html
+http://developer.android.com/reference/android/os/ParcelFileDescriptor.AutoCloseOutputStream.html
+http://developer.android.com/reference/android/os/ParcelFormatException.html
+http://developer.android.com/reference/android/os/ParcelUuid.html
+http://developer.android.com/reference/java/util/UUID.html
+http://developer.android.com/reference/android/net/ParseException.html
+http://developer.android.com/reference/java/text/ParseException.html
+http://developer.android.com/reference/org/apache/http/ParseException.html
+http://developer.android.com/reference/java/text/ParsePosition.html
+http://developer.android.com/reference/org/xml/sax/Parser.html
+http://developer.android.com/reference/org/xml/sax/XMLReader.html
+http://developer.android.com/reference/org/xml/sax/helpers/ParserAdapter.html
+http://developer.android.com/reference/javax/xml/parsers/ParserConfigurationException.html
+http://developer.android.com/reference/org/apache/http/message/ParserCursor.html
+http://developer.android.com/reference/org/xml/sax/helpers/ParserFactory.html
+http://developer.android.com/reference/java/net/PasswordAuthentication.html
+http://developer.android.com/reference/javax/security/auth/callback/PasswordCallback.html
+http://developer.android.com/reference/android/text/method/PasswordTransformationMethod.html
+http://developer.android.com/reference/android/graphics/Path.html
+http://developer.android.com/reference/android/graphics/Path.Direction.html
+http://developer.android.com/reference/android/graphics/Path.FillType.html
+http://developer.android.com/reference/dalvik/system/PathClassLoader.html
+http://developer.android.com/reference/android/graphics/PathDashPathEffect.html
+http://developer.android.com/reference/android/graphics/PathDashPathEffect.Style.html
+http://developer.android.com/reference/android/graphics/PathEffect.html
+http://developer.android.com/reference/android/graphics/PathMeasure.html
+http://developer.android.com/reference/android/content/pm/PathPermission.html
+http://developer.android.com/reference/android/content/pm/ProviderInfo.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
+http://developer.android.com/reference/android/util/Patterns.html
+http://developer.android.com/reference/java/util/regex/PatternSyntaxException.html
+http://developer.android.com/reference/javax/crypto/interfaces/PBEKey.html
+http://developer.android.com/reference/javax/crypto/spec/PBEKeySpec.html
+http://developer.android.com/reference/javax/crypto/spec/PBEParameterSpec.html
+http://developer.android.com/reference/android/app/PendingIntent.CanceledException.html
+http://developer.android.com/reference/android/app/PendingIntent.OnFinished.html
+http://developer.android.com/reference/android/test/PerformanceTestCase.html
+http://developer.android.com/reference/android/test/PerformanceTestCase.Intermediates.html
+http://developer.android.com/reference/android/content/PeriodicSync.html
+http://developer.android.com/reference/java/security/Permission.html
+http://developer.android.com/reference/java/security/PermissionCollection.html
+http://developer.android.com/reference/android/content/pm/PermissionGroupInfo.html
+http://developer.android.com/reference/android/content/pm/PermissionInfo.html
+http://developer.android.com/reference/java/security/Permissions.html
+http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
+http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
+http://developer.android.com/reference/android/telephony/PhoneStateListener.html
+http://developer.android.com/reference/android/graphics/Picture.html
+http://developer.android.com/reference/android/graphics/drawable/PictureDrawable.html
+http://developer.android.com/reference/java/nio/channels/Pipe.html
+http://developer.android.com/reference/java/nio/channels/Pipe.SinkChannel.html
+http://developer.android.com/reference/java/nio/channels/Pipe.SourceChannel.html
+http://developer.android.com/reference/java/io/PipedInputStream.html
+http://developer.android.com/reference/java/io/PipedOutputStream.html
+http://developer.android.com/reference/java/io/PipedReader.html
+http://developer.android.com/reference/java/io/PipedWriter.html
+http://developer.android.com/reference/android/graphics/PixelFormat.html
+http://developer.android.com/reference/android/graphics/PixelXorXfermode.html
+http://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec.html
+http://developer.android.com/reference/java/security/cert/PKIXBuilderParameters.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathBuilderResult.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathChecker.html
+http://developer.android.com/reference/java/security/cert/PKIXCertPathValidatorResult.html
+http://developer.android.com/reference/java/security/cert/PKIXParameters.html
+http://developer.android.com/reference/org/apache/http/conn/scheme/PlainSocketFactory.html
+http://developer.android.com/reference/android/webkit/PluginStub.html
+http://developer.android.com/reference/android/graphics/PointF.html
+http://developer.android.com/reference/java/security/Policy.html
+http://developer.android.com/reference/java/security/Policy.Parameters.html
+http://developer.android.com/reference/java/security/cert/PolicyNode.html
+http://developer.android.com/reference/java/security/cert/PolicyQualifierInfo.html
+http://developer.android.com/reference/java/security/PolicySpi.html
+http://developer.android.com/reference/android/graphics/PorterDuff.html
+http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
+http://developer.android.com/reference/android/graphics/PorterDuffColorFilter.html
+http://developer.android.com/reference/android/graphics/PorterDuffXfermode.html
+http://developer.android.com/reference/java/net/PortUnreachableException.html
+http://developer.android.com/reference/android/os/PowerManager.html
+http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
+http://developer.android.com/reference/android/gesture/Prediction.html
+http://developer.android.com/reference/android/preference/Preference.BaseSavedState.html
+http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
+http://developer.android.com/reference/android/preference/Preference.OnPreferenceClickListener.html
+http://developer.android.com/reference/android/preference/PreferenceActivity.Header.html
+http://developer.android.com/reference/android/preference/PreferenceCategory.html
+http://developer.android.com/reference/java/util/prefs/PreferenceChangeEvent.html
+http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html
+http://developer.android.com/reference/android/preference/PreferenceFragment.OnPreferenceStartFragmentCallback.html
+http://developer.android.com/reference/android/preference/PreferenceGroup.html
+http://developer.android.com/reference/android/preference/PreferenceManager.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityDestroyListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html
+http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityStopListener.html
+http://developer.android.com/reference/java/util/prefs/Preferences.html
+http://developer.android.com/reference/android/preference/PreferenceScreen.html
+http://developer.android.com/reference/java/util/prefs/PreferencesFactory.html
+http://developer.android.com/reference/java/sql/PreparedStatement.html
+http://developer.android.com/reference/android/media/audiofx/PresetReverb.html
+http://developer.android.com/reference/android/media/audiofx/PresetReverb.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/PresetReverb.Settings.html
+http://developer.android.com/reference/java/io/PrintStream.html
+http://developer.android.com/reference/android/util/PrintStreamPrinter.html
+http://developer.android.com/reference/java/io/PrintWriter.html
+http://developer.android.com/reference/android/util/PrintWriterPrinter.html
+http://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue.html
+http://developer.android.com/reference/java/util/PriorityQueue.html
+http://developer.android.com/reference/javax/security/auth/PrivateCredentialPermission.html
+http://developer.android.com/reference/java/security/PrivateKey.html
+http://developer.android.com/reference/java/security/PrivilegedAction.html
+http://developer.android.com/reference/java/security/PrivilegedActionException.html
+http://developer.android.com/reference/java/security/PrivilegedExceptionAction.html
+http://developer.android.com/reference/android/os/Process.html
+http://developer.android.com/reference/java/lang/Process.html
+http://developer.android.com/reference/java/lang/ProcessBuilder.html
+http://developer.android.com/reference/android/drm/ProcessedData.html
+http://developer.android.com/reference/org/w3c/dom/ProcessingInstruction.html
+http://developer.android.com/reference/android/renderscript/Program.html
+http://developer.android.com/reference/android/renderscript/Program.BaseProgramBuilder.html
+http://developer.android.com/reference/android/renderscript/Program.TextureType.html
+http://developer.android.com/reference/android/renderscript/ProgramFragment.html
+http://developer.android.com/reference/android/renderscript/ProgramFragment.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.EnvMode.html
+http://developer.android.com/reference/android/renderscript/ProgramFragmentFixedFunction.Builder.Format.html
+http://developer.android.com/reference/android/renderscript/ProgramRaster.html
+http://developer.android.com/reference/android/renderscript/ProgramRaster.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramRaster.CullMode.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.BlendDstFunc.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.BlendSrcFunc.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramStore.DepthFunc.html
+http://developer.android.com/reference/android/renderscript/ProgramVertex.html
+http://developer.android.com/reference/android/renderscript/ProgramVertex.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.html
+http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.Builder.html
+http://developer.android.com/reference/android/renderscript/ProgramVertexFixedFunction.Constants.html
+http://developer.android.com/reference/android/app/ProgressDialog.html
+http://developer.android.com/reference/java/util/Properties.html
+http://developer.android.com/reference/java/beans/PropertyChangeListener.html
+http://developer.android.com/reference/java/beans/PropertyChangeListenerProxy.html
+http://developer.android.com/reference/java/beans/PropertyChangeSupport.html
+http://developer.android.com/reference/java/util/PropertyPermission.html
+http://developer.android.com/reference/java/util/PropertyResourceBundle.html
+http://developer.android.com/reference/junit/framework/Protectable.html
+http://developer.android.com/reference/java/security/ProtectionDomain.html
+http://developer.android.com/reference/java/net/ProtocolException.html
+http://developer.android.com/reference/org/apache/http/ProtocolException.html
+http://developer.android.com/reference/org/apache/http/ProtocolVersion.html
+http://developer.android.com/reference/java/security/Provider.html
+http://developer.android.com/reference/java/security/Provider.Service.html
+http://developer.android.com/reference/java/security/ProviderException.html
+http://developer.android.com/reference/android/test/ProviderTestCase.html
+http://developer.android.com/reference/android/test/ProviderTestCase2.html
+http://developer.android.com/reference/android/net/Proxy.html
+http://developer.android.com/reference/java/lang/reflect/Proxy.html
+http://developer.android.com/reference/java/net/Proxy.html
+http://developer.android.com/reference/java/net/Proxy.Type.html
+http://developer.android.com/reference/java/net/ProxySelector.html
+http://developer.android.com/reference/org/apache/http/impl/conn/ProxySelectorRoutePlanner.html
+http://developer.android.com/reference/javax/crypto/spec/PSource.html
+http://developer.android.com/reference/javax/crypto/spec/PSource.PSpecified.html
+http://developer.android.com/reference/java/security/spec/PSSParameterSpec.html
+http://developer.android.com/reference/java/security/PublicKey.html
+http://developer.android.com/reference/java/io/PushbackInputStream.html
+http://developer.android.com/reference/java/io/PushbackReader.html
+http://developer.android.com/reference/javax/xml/namespace/QName.html
+http://developer.android.com/reference/android/text/style/QuoteSpan.html
+http://developer.android.com/reference/android/text/method/QwertyKeyListener.html
+http://developer.android.com/reference/android/R.html
+http://developer.android.com/reference/android/R.anim.html
+http://developer.android.com/reference/android/R.animator.html
+http://developer.android.com/reference/android/R.array.html
+http://developer.android.com/reference/android/R.bool.html
+http://developer.android.com/reference/android/R.color.html
+http://developer.android.com/reference/android/R.dimen.html
+http://developer.android.com/reference/android/R.drawable.html
+http://developer.android.com/reference/android/R.fraction.html
+http://developer.android.com/reference/android/R.id.html
+http://developer.android.com/reference/android/R.integer.html
+http://developer.android.com/reference/android/R.interpolator.html
+http://developer.android.com/reference/android/R.layout.html
+http://developer.android.com/reference/android/R.menu.html
+http://developer.android.com/reference/android/R.mipmap.html
+http://developer.android.com/reference/android/R.plurals.html
+http://developer.android.com/reference/android/R.raw.html
+http://developer.android.com/reference/android/R.string.html
+http://developer.android.com/reference/android/R.style.html
+http://developer.android.com/reference/android/R.xml.html
+http://developer.android.com/reference/android/graphics/RadialGradient.html
+http://developer.android.com/reference/java/util/Random.html
+http://developer.android.com/reference/java/util/RandomAccess.html
+http://developer.android.com/reference/java/io/RandomAccessFile.html
+http://developer.android.com/reference/android/graphics/Rasterizer.html
+http://developer.android.com/reference/android/text/style/RasterizerSpan.html
+http://developer.android.com/reference/javax/crypto/spec/RC2ParameterSpec.html
+http://developer.android.com/reference/javax/crypto/spec/RC5ParameterSpec.html
+http://developer.android.com/reference/java/lang/Readable.html
+http://developer.android.com/reference/java/nio/channels/ReadableByteChannel.html
+http://developer.android.com/reference/java/nio/ReadOnlyBufferException.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html
+http://developer.android.com/reference/org/apache/http/ReasonPhraseCatalog.html
+http://developer.android.com/reference/android/content/ReceiverCallNotAllowedException.html
+http://developer.android.com/reference/android/speech/RecognitionListener.html
+http://developer.android.com/reference/android/speech/RecognitionService.html
+http://developer.android.com/reference/android/speech/RecognitionService.Callback.html
+http://developer.android.com/reference/android/speech/RecognizerIntent.html
+http://developer.android.com/reference/android/speech/RecognizerResultsIntent.html
+http://developer.android.com/reference/android/os/RecoverySystem.html
+http://developer.android.com/reference/android/os/RecoverySystem.ProgressListener.html
+http://developer.android.com/reference/android/graphics/RectF.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/RectShape.html
+http://developer.android.com/reference/org/apache/http/client/RedirectException.html
+http://developer.android.com/reference/org/apache/http/impl/client/RedirectLocations.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.ReadLock.html
+http://developer.android.com/reference/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html
+http://developer.android.com/reference/java/sql/Ref.html
+http://developer.android.com/reference/java/lang/reflect/ReflectPermission.html
+http://developer.android.com/reference/android/graphics/Region.Op.html
+http://developer.android.com/reference/android/graphics/RegionIterator.html
+http://developer.android.com/reference/java/util/concurrent/RejectedExecutionException.html
+http://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html
+http://developer.android.com/reference/android/text/style/RelativeSizeSpan.html
+http://developer.android.com/reference/android/os/RemoteCallbackList.html
+http://developer.android.com/reference/android/media/RemoteControlClient.html
+http://developer.android.com/reference/android/media/RemoteControlClient.MetadataEditor.html
+http://developer.android.com/reference/android/os/RemoteException.html
+http://developer.android.com/reference/android/widget/RemoteViews.RemoteView.html
+http://developer.android.com/reference/android/test/RenamingDelegatingContext.html
+http://developer.android.com/reference/android/renderscript/RenderScript.html
+http://developer.android.com/reference/android/renderscript/RenderScript.Priority.html
+http://developer.android.com/reference/android/renderscript/RenderScript.RSErrorHandler.html
+http://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler.html
+http://developer.android.com/reference/android/renderscript/RenderScriptGL.html
+http://developer.android.com/reference/android/renderscript/RenderScriptGL.SurfaceConfig.html
+http://developer.android.com/reference/android/text/style/ReplacementSpan.html
+http://developer.android.com/reference/android/text/method/ReplacementTransformationMethod.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestAddCookies.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestConnControl.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestContent.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestDate.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestDefaultHeaders.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestExpectContinue.html
+http://developer.android.com/reference/org/apache/http/RequestLine.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestProxyAuthentication.html
+http://developer.android.com/reference/org/apache/http/client/protocol/RequestTargetAuthentication.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestTargetHost.html
+http://developer.android.com/reference/org/apache/http/protocol/RequestUserAgent.html
+http://developer.android.com/reference/org/apache/http/impl/client/RequestWrapper.html
+http://developer.android.com/reference/android/content/pm/ResolveInfo.html
+http://developer.android.com/reference/android/content/pm/ResolveInfo.DisplayNameComparator.html
+http://developer.android.com/reference/java/util/ResourceBundle.html
+http://developer.android.com/reference/java/util/ResourceBundle.Control.html
+http://developer.android.com/reference/android/support/v4/widget/ResourceCursorAdapter.html
+http://developer.android.com/reference/android/content/res/Resources.NotFoundException.html
+http://developer.android.com/reference/android/content/res/Resources.Theme.html
+http://developer.android.com/reference/java/net/ResponseCache.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseConnControl.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseContent.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseDate.html
+http://developer.android.com/reference/org/apache/http/client/protocol/ResponseProcessCookies.html
+http://developer.android.com/reference/org/apache/http/protocol/ResponseServer.html
+http://developer.android.com/reference/javax/xml/transform/Result.html
+http://developer.android.com/reference/android/os/ResultReceiver.html
+http://developer.android.com/reference/java/sql/ResultSet.html
+http://developer.android.com/reference/java/sql/ResultSetMetaData.html
+http://developer.android.com/reference/java/lang/annotation/Retention.html
+http://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109DomainHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109Spec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109SpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109VersionHandler.html
+http://developer.android.com/reference/org/apache/http/impl/auth/RFC2617Scheme.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965Spec.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965SpecFactory.html
+http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.html
+http://developer.android.com/reference/android/text/util/Rfc822Token.html
+http://developer.android.com/reference/android/text/util/Rfc822Tokenizer.html
+http://developer.android.com/reference/android/media/Ringtone.html
+http://developer.android.com/reference/android/media/RingtoneManager.html
+http://developer.android.com/reference/android/preference/RingtonePreference.html
+http://developer.android.com/reference/android/sax/RootElement.html
+http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html
+http://developer.android.com/reference/java/math/RoundingMode.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
+http://developer.android.com/reference/org/apache/http/impl/client/RoutedRequest.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.LayerType.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.TunnelType.html
+http://developer.android.com/reference/org/apache/http/conn/routing/RouteTracker.html
+http://developer.android.com/reference/java/sql/RowId.html
+http://developer.android.com/reference/java/sql/RowIdLifetime.html
+http://developer.android.com/reference/javax/sql/RowSet.html
+http://developer.android.com/reference/javax/sql/RowSetEvent.html
+http://developer.android.com/reference/javax/sql/RowSetInternal.html
+http://developer.android.com/reference/javax/sql/RowSetListener.html
+http://developer.android.com/reference/javax/sql/RowSetMetaData.html
+http://developer.android.com/reference/javax/sql/RowSetReader.html
+http://developer.android.com/reference/javax/sql/RowSetWriter.html
+http://developer.android.com/reference/java/security/spec/RSAKeyGenParameterSpec.html
+http://developer.android.com/reference/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAOtherPrimeInfo.html
+http://developer.android.com/reference/java/security/spec/RSAPrivateCrtKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAPrivateKeySpec.html
+http://developer.android.com/reference/java/security/spec/RSAPublicKeySpec.html
+http://developer.android.com/reference/android/renderscript/RSDriverException.html
+http://developer.android.com/reference/android/renderscript/RSIllegalArgumentException.html
+http://developer.android.com/reference/android/renderscript/RSInvalidStateException.html
+http://developer.android.com/reference/android/renderscript/RSRuntimeException.html
+http://developer.android.com/reference/android/renderscript/RSSurfaceView.html
+http://developer.android.com/reference/android/renderscript/RSTextureView.html
+http://developer.android.com/reference/java/text/RuleBasedCollator.html
+http://developer.android.com/reference/java/util/concurrent/RunnableFuture.html
+http://developer.android.com/reference/java/util/concurrent/RunnableScheduledFuture.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledFuture.html
+http://developer.android.com/reference/java/lang/Runtime.html
+http://developer.android.com/reference/java/lang/RuntimePermission.html
+http://developer.android.com/reference/android/renderscript/Sampler.html
+http://developer.android.com/reference/android/renderscript/Sampler.Builder.html
+http://developer.android.com/reference/android/renderscript/Sampler.Value.html
+http://developer.android.com/reference/java/sql/Savepoint.html
+http://developer.android.com/reference/org/xml/sax/SAXException.html
+http://developer.android.com/reference/org/xml/sax/SAXNotRecognizedException.html
+http://developer.android.com/reference/org/xml/sax/SAXNotSupportedException.html
+http://developer.android.com/reference/org/xml/sax/SAXParseException.html
+http://developer.android.com/reference/javax/xml/parsers/SAXParser.html
+http://developer.android.com/reference/javax/xml/parsers/SAXParserFactory.html
+http://developer.android.com/reference/javax/xml/transform/sax/SAXResult.html
+http://developer.android.com/reference/javax/xml/transform/sax/SAXSource.html
+http://developer.android.com/reference/javax/xml/transform/sax/SAXTransformerFactory.html
+http://developer.android.com/reference/android/graphics/drawable/ScaleDrawable.html
+http://developer.android.com/reference/android/text/style/ScaleXSpan.html
+http://developer.android.com/reference/java/util/Scanner.html
http://developer.android.com/reference/android/net/wifi/ScanResult.html
+http://developer.android.com/reference/java/nio/channels/ScatteringByteChannel.html
+http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html
+http://developer.android.com/reference/javax/xml/validation/Schema.html
+http://developer.android.com/reference/javax/xml/validation/SchemaFactory.html
+http://developer.android.com/reference/javax/xml/validation/SchemaFactoryLoader.html
+http://developer.android.com/reference/android/renderscript/Script.html
+http://developer.android.com/reference/android/renderscript/Script.Builder.html
+http://developer.android.com/reference/android/text/method/ScrollingMovementMethod.html
+http://developer.android.com/reference/javax/crypto/SealedObject.html
+http://developer.android.com/reference/android/provider/SearchRecentSuggestions.html
+http://developer.android.com/reference/android/content/SearchRecentSuggestionsProvider.html
+http://developer.android.com/reference/android/support/v4/widget/SearchViewCompat.html
+http://developer.android.com/reference/android/support/v4/widget/SearchViewCompat.OnQueryTextListenerCompat.html
+http://developer.android.com/reference/javax/crypto/SecretKey.html
+http://developer.android.com/reference/javax/crypto/SecretKeyFactory.html
+http://developer.android.com/reference/javax/crypto/SecretKeyFactorySpi.html
+http://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html
+http://developer.android.com/reference/java/net/SecureCacheResponse.html
+http://developer.android.com/reference/java/security/SecureClassLoader.html
+http://developer.android.com/reference/java/security/SecureRandom.html
+http://developer.android.com/reference/java/security/SecureRandomSpi.html
+http://developer.android.com/reference/java/security/Security.html
+http://developer.android.com/reference/java/lang/SecurityException.html
+http://developer.android.com/reference/java/lang/SecurityManager.html
+http://developer.android.com/reference/java/security/SecurityPermission.html
+http://developer.android.com/reference/java/nio/channels/SelectableChannel.html
+http://developer.android.com/reference/android/text/Selection.html
+http://developer.android.com/reference/java/nio/channels/SelectionKey.html
+http://developer.android.com/reference/java/nio/channels/spi/SelectorProvider.html
+http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html
+http://developer.android.com/reference/java/util/concurrent/Semaphore.html
+http://developer.android.com/reference/android/hardware/Sensor.html
+http://developer.android.com/reference/android/hardware/SensorEvent.html
+http://developer.android.com/reference/android/hardware/SensorEventListener.html
+http://developer.android.com/reference/android/hardware/SensorListener.html
+http://developer.android.com/reference/android/hardware/SensorManager.html
+http://developer.android.com/reference/android/view/textservice/SentenceSuggestionsInfo.html
+http://developer.android.com/reference/java/io/SequenceInputStream.html
+http://developer.android.com/reference/java/io/Serializable.html
+http://developer.android.com/reference/org/apache/http/entity/SerializableEntity.html
+http://developer.android.com/reference/java/io/SerializablePermission.html
+http://developer.android.com/reference/java/net/ServerSocket.html
+http://developer.android.com/reference/javax/net/ServerSocketFactory.html
+http://developer.android.com/reference/android/support/v4/app/ServiceCompat.html
+http://developer.android.com/reference/java/util/ServiceConfigurationError.html
+http://developer.android.com/reference/java/util/ServiceLoader.html
+http://developer.android.com/reference/android/telephony/ServiceState.html
+http://developer.android.com/reference/android/test/ServiceTestCase.html
+http://developer.android.com/reference/org/apache/http/cookie/SetCookie.html
+http://developer.android.com/reference/org/apache/http/cookie/SetCookie2.html
+http://developer.android.com/reference/android/provider/Settings.html
+http://developer.android.com/reference/android/provider/Settings.NameValueTable.html
+http://developer.android.com/reference/android/provider/Settings.SettingNotFoundException.html
+http://developer.android.com/reference/android/provider/Settings.System.html
+http://developer.android.com/reference/android/graphics/Shader.html
+http://developer.android.com/reference/android/graphics/Shader.TileMode.html
+http://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html
+http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html
+http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.ShaderFactory.html
+http://developer.android.com/reference/android/support/v4/app/ShareCompat.html
+http://developer.android.com/reference/android/support/v4/app/ShareCompat.IntentBuilder.html
+http://developer.android.com/reference/android/support/v4/app/ShareCompat.IntentReader.html
+http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
+http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
+http://developer.android.com/reference/android/renderscript/Short2.html
+http://developer.android.com/reference/android/renderscript/Short3.html
+http://developer.android.com/reference/android/renderscript/Short4.html
+http://developer.android.com/reference/java/nio/ShortBuffer.html
+http://developer.android.com/reference/javax/crypto/ShortBufferException.html
+http://developer.android.com/reference/android/telephony/SignalStrength.html
+http://developer.android.com/reference/android/content/pm/Signature.html
+http://developer.android.com/reference/java/security/Signature.html
+http://developer.android.com/reference/java/security/SignatureException.html
+http://developer.android.com/reference/java/security/SignatureSpi.html
+http://developer.android.com/reference/java/security/SignedObject.html
+http://developer.android.com/reference/java/security/Signer.html
+http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.html
+http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.CursorToStringConverter.html
+http://developer.android.com/reference/android/support/v4/widget/SimpleCursorAdapter.ViewBinder.html
+http://developer.android.com/reference/java/util/logging/SimpleFormatter.html
+http://developer.android.com/reference/java/util/SimpleTimeZone.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.ConnAdapter.html
+http://developer.android.com/reference/org/apache/http/impl/conn/SingleClientConnManager.PoolEntry.html
+http://developer.android.com/reference/android/test/SingleLaunchActivityTestCase.html
+http://developer.android.com/reference/android/text/method/SingleLineTransformationMethod.html
+http://developer.android.com/reference/android/net/sip/SipAudioCall.html
+http://developer.android.com/reference/android/net/sip/SipAudioCall.Listener.html
+http://developer.android.com/reference/android/net/sip/SipErrorCode.html
+http://developer.android.com/reference/android/net/sip/SipException.html
+http://developer.android.com/reference/android/net/sip/SipManager.html
+http://developer.android.com/reference/android/net/sip/SipProfile.html
+http://developer.android.com/reference/android/net/sip/SipProfile.Builder.html
+http://developer.android.com/reference/android/net/sip/SipRegistrationListener.html
+http://developer.android.com/reference/android/net/sip/SipSession.html
+http://developer.android.com/reference/android/net/sip/SipSession.Listener.html
+http://developer.android.com/reference/android/net/sip/SipSession.State.html
+http://developer.android.com/reference/org/apache/http/cookie/SM.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/Smoke.html
+http://developer.android.com/reference/android/telephony/SmsManager.html
+http://developer.android.com/reference/android/telephony/gsm/SmsManager.html
+http://developer.android.com/reference/android/telephony/SmsMessage.html
+http://developer.android.com/reference/android/telephony/gsm/SmsMessage.html
+http://developer.android.com/reference/android/telephony/SmsMessage.MessageClass.html
+http://developer.android.com/reference/android/telephony/gsm/SmsMessage.MessageClass.html
+http://developer.android.com/reference/android/telephony/SmsMessage.SubmitPdu.html
+http://developer.android.com/reference/android/telephony/gsm/SmsMessage.SubmitPdu.html
+http://developer.android.com/reference/java/net/Socket.html
+http://developer.android.com/reference/java/net/SocketAddress.html
+http://developer.android.com/reference/java/net/SocketException.html
+http://developer.android.com/reference/javax/net/SocketFactory.html
+http://developer.android.com/reference/java/util/logging/SocketHandler.html
+http://developer.android.com/reference/org/apache/http/impl/SocketHttpClientConnection.html
+http://developer.android.com/reference/org/apache/http/impl/SocketHttpServerConnection.html
+http://developer.android.com/reference/java/net/SocketImpl.html
+http://developer.android.com/reference/java/net/SocketImplFactory.html
+http://developer.android.com/reference/org/apache/http/impl/io/SocketInputBuffer.html
+http://developer.android.com/reference/java/net/SocketOptions.html
+http://developer.android.com/reference/org/apache/http/impl/io/SocketOutputBuffer.html
+http://developer.android.com/reference/java/net/SocketPermission.html
+http://developer.android.com/reference/java/net/SocketTimeoutException.html
+http://developer.android.com/reference/android/media/SoundPool.html
+http://developer.android.com/reference/android/media/SoundPool.OnLoadCompleteListener.html
+http://developer.android.com/reference/javax/xml/transform/Source.html
+http://developer.android.com/reference/javax/xml/transform/SourceLocator.html
+http://developer.android.com/reference/android/text/Spannable.html
+http://developer.android.com/reference/android/text/Spannable.Factory.html
+http://developer.android.com/reference/android/text/SpannableString.html
+http://developer.android.com/reference/android/text/SpannableStringBuilder.html
+http://developer.android.com/reference/android/text/Spanned.html
+http://developer.android.com/reference/android/text/SpannedString.html
+http://developer.android.com/reference/android/text/SpanWatcher.html
+http://developer.android.com/reference/android/util/SparseBooleanArray.html
+http://developer.android.com/reference/android/util/SparseIntArray.html
+http://developer.android.com/reference/android/speech/SpeechRecognizer.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerInfo.html
+http://developer.android.com/reference/android/service/textservice/SpellCheckerService.html
+http://developer.android.com/reference/android/service/textservice/SpellCheckerService.Session.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerSession.SpellCheckerSessionListener.html
+http://developer.android.com/reference/android/view/textservice/SpellCheckerSubtype.html
+http://developer.android.com/reference/java/sql/SQLClientInfoException.html
+http://developer.android.com/reference/java/sql/SQLData.html
+http://developer.android.com/reference/java/sql/SQLDataException.html
+http://developer.android.com/reference/android/database/SQLException.html
+http://developer.android.com/reference/java/sql/SQLException.html
+http://developer.android.com/reference/java/sql/SQLFeatureNotSupportedException.html
+http://developer.android.com/reference/java/sql/SQLInput.html
+http://developer.android.com/reference/java/sql/SQLIntegrityConstraintViolationException.html
+http://developer.android.com/reference/java/sql/SQLInvalidAuthorizationSpecException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteAbortException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteAccessPermException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteBlobTooBigException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCantOpenDatabaseException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteClosable.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteConstraintException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCursor.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteCursorDriver.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.CursorFactory.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseCorruptException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseLockedException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDatatypeMismatchException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDiskIOException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteDoneException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteFullException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteMisuseException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteOutOfMemoryException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteProgram.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteQuery.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteReadOnlyDatabaseException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteTableLockedException.html
+http://developer.android.com/reference/android/database/sqlite/SQLiteTransactionListener.html
+http://developer.android.com/reference/java/sql/SQLNonTransientConnectionException.html
+http://developer.android.com/reference/java/sql/SQLNonTransientException.html
+http://developer.android.com/reference/java/sql/SQLOutput.html
+http://developer.android.com/reference/java/sql/SQLPermission.html
+http://developer.android.com/reference/java/sql/SQLRecoverableException.html
+http://developer.android.com/reference/java/sql/SQLSyntaxErrorException.html
+http://developer.android.com/reference/java/sql/SQLTimeoutException.html
+http://developer.android.com/reference/java/sql/SQLTransactionRollbackException.html
+http://developer.android.com/reference/java/sql/SQLTransientConnectionException.html
+http://developer.android.com/reference/java/sql/SQLTransientException.html
+http://developer.android.com/reference/java/sql/SQLWarning.html
+http://developer.android.com/reference/java/sql/SQLXML.html
+http://developer.android.com/reference/android/net/http/SslCertificate.html
+http://developer.android.com/reference/android/net/http/SslCertificate.DName.html
+http://developer.android.com/reference/android/net/SSLCertificateSocketFactory.html
+http://developer.android.com/reference/android/net/SSLSessionCache.html
+http://developer.android.com/reference/javax/net/ssl/SSLContext.html
+http://developer.android.com/reference/javax/net/ssl/SSLContextSpi.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngine.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.HandshakeStatus.html
+http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.Status.html
+http://developer.android.com/reference/android/net/http/SslError.html
+http://developer.android.com/reference/android/webkit/SslErrorHandler.html
+http://developer.android.com/reference/javax/net/ssl/SSLException.html
+http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html
+http://developer.android.com/reference/javax/net/ssl/SSLKeyException.html
+http://developer.android.com/reference/javax/net/ssl/SSLParameters.html
+http://developer.android.com/reference/javax/net/ssl/SSLPeerUnverifiedException.html
+http://developer.android.com/reference/javax/net/ssl/SSLPermission.html
+http://developer.android.com/reference/javax/net/ssl/SSLProtocolException.html
+http://developer.android.com/reference/javax/net/ssl/SSLServerSocket.html
+http://developer.android.com/reference/javax/net/ssl/SSLServerSocketFactory.html
+http://developer.android.com/reference/javax/net/ssl/SSLSession.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingEvent.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingListener.html
+http://developer.android.com/reference/javax/net/ssl/SSLSessionContext.html
+http://developer.android.com/reference/javax/net/ssl/SSLSocket.html
+http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/SSLSocketFactory.html
+http://developer.android.com/reference/java/util/Stack.html
+http://developer.android.com/reference/java/lang/StackOverflowError.html
+http://developer.android.com/reference/java/lang/StackTraceElement.html
+http://developer.android.com/reference/android/database/StaleDataException.html
+http://developer.android.com/reference/android/sax/StartElementListener.html
+http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
+http://developer.android.com/reference/java/sql/Statement.html
+http://developer.android.com/reference/javax/sql/StatementEvent.html
+http://developer.android.com/reference/javax/sql/StatementEventListener.html
+http://developer.android.com/reference/android/util/StateSet.html
+http://developer.android.com/reference/android/os/StatFs.html
+http://developer.android.com/reference/android/text/StaticLayout.html
+http://developer.android.com/reference/org/apache/http/StatusLine.html
+http://developer.android.com/reference/java/io/StreamCorruptedException.html
+http://developer.android.com/reference/java/util/logging/StreamHandler.html
+http://developer.android.com/reference/javax/xml/transform/stream/StreamResult.html
+http://developer.android.com/reference/javax/xml/transform/stream/StreamSource.html
+http://developer.android.com/reference/java/io/StreamTokenizer.html
+http://developer.android.com/reference/org/apache/http/impl/entity/StrictContentLengthStrategy.html
+http://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier.html
+http://developer.android.com/reference/java/lang/StrictMath.html
+http://developer.android.com/reference/android/os/StrictMode.html
+http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.html
+http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.Builder.html
+http://developer.android.com/reference/android/os/StrictMode.VmPolicy.html
+http://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder.html
+http://developer.android.com/reference/android/text/style/StrikethroughSpan.html
+http://developer.android.com/reference/java/lang/StringBuffer.html
+http://developer.android.com/reference/java/io/StringBufferInputStream.html
+http://developer.android.com/reference/java/io/StringReader.html
+http://developer.android.com/reference/java/lang/StringBuilder.html
+http://developer.android.com/reference/android/util/StringBuilderPrinter.html
+http://developer.android.com/reference/java/text/StringCharacterIterator.html
+http://developer.android.com/reference/org/apache/http/entity/StringEntity.html
+http://developer.android.com/reference/java/lang/StringIndexOutOfBoundsException.html
+http://developer.android.com/reference/java/util/StringTokenizer.html
+http://developer.android.com/reference/java/io/StringWriter.html
+http://developer.android.com/reference/java/sql/Struct.html
+http://developer.android.com/reference/android/text/style/StyleSpan.html
+http://developer.android.com/reference/javax/security/auth/Subject.html
+http://developer.android.com/reference/javax/security/auth/SubjectDomainCombiner.html
+http://developer.android.com/reference/android/text/style/SubscriptSpan.html
+http://developer.android.com/reference/android/graphics/SumPathEffect.html
+http://developer.android.com/reference/android/text/style/SuperscriptSpan.html
+http://developer.android.com/reference/android/net/wifi/SupplicantState.html
+http://developer.android.com/reference/android/test/suitebuilder/annotation/Suppress.html
+http://developer.android.com/reference/android/annotation/SuppressLint.html
+http://developer.android.com/reference/java/lang/SuppressWarnings.html
+http://developer.android.com/reference/android/graphics/SurfaceTexture.OnFrameAvailableListener.html
+http://developer.android.com/reference/android/graphics/SurfaceTexture.OutOfResourcesException.html
+http://developer.android.com/reference/android/graphics/SweepGradient.html
+http://developer.android.com/reference/android/preference/SwitchPreference.html
+http://developer.android.com/reference/android/content/SyncAdapterType.html
+http://developer.android.com/reference/android/test/SyncBaseInstrumentation.html
+http://developer.android.com/reference/org/apache/http/protocol/SyncBasicHttpContext.html
+http://developer.android.com/reference/android/content/SyncContext.html
+http://developer.android.com/reference/java/io/SyncFailedException.html
+http://developer.android.com/reference/java/util/concurrent/SynchronousQueue.html
+http://developer.android.com/reference/android/content/SyncInfo.html
+http://developer.android.com/reference/android/content/SyncResult.html
+http://developer.android.com/reference/android/provider/SyncStateContract.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Columns.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Constants.html
+http://developer.android.com/reference/android/provider/SyncStateContract.Helpers.html
+http://developer.android.com/reference/android/content/SyncStats.html
+http://developer.android.com/reference/android/content/SyncStatusObserver.html
+http://developer.android.com/reference/android/speech/tts/SynthesisCallback.html
+http://developer.android.com/reference/android/speech/tts/SynthesisRequest.html
+http://developer.android.com/reference/java/lang/System.html
+http://developer.android.com/reference/android/os/SystemClock.html
+http://developer.android.com/reference/android/app/TabActivity.html
+http://developer.android.com/reference/android/text/style/TabStopSpan.html
+http://developer.android.com/reference/android/text/style/TabStopSpan.Standard.html
+http://developer.android.com/reference/android/nfc/TagLostException.html
+http://developer.android.com/reference/android/nfc/tech/TagTechnology.html
+http://developer.android.com/reference/java/lang/annotation/Target.html
+http://developer.android.com/reference/android/annotation/TargetApi.html
+http://developer.android.com/reference/android/app/TaskStackBuilder.html
+http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html
+http://developer.android.com/reference/android/support/v4/app/TaskStackBuilderHoneycomb.html
+http://developer.android.com/reference/android/telephony/TelephonyManager.html
+http://developer.android.com/reference/javax/xml/transform/Templates.html
+http://developer.android.com/reference/javax/xml/transform/sax/TemplatesHandler.html
+http://developer.android.com/reference/junit/framework/Test.html
+http://developer.android.com/reference/junit/framework/TestFailure.html
+http://developer.android.com/reference/junit/framework/TestListener.html
+http://developer.android.com/reference/android/test/suitebuilder/TestMethod.html
+http://developer.android.com/reference/junit/framework/TestResult.html
+http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.html
+http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.FailedToCreateTests.html
+http://developer.android.com/reference/junit/runner/TestSuiteLoader.html
+http://developer.android.com/reference/android/test/TestSuiteProvider.html
+http://developer.android.com/reference/dalvik/annotation/TestTarget.html
+http://developer.android.com/reference/dalvik/annotation/TestTargetClass.html
+http://developer.android.com/reference/org/w3c/dom/Text.html
+http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html
+http://developer.android.com/reference/java/awt/font/TextAttribute.html
+http://developer.android.com/reference/android/sax/TextElementListener.html
+http://developer.android.com/reference/android/view/textservice/TextInfo.html
+http://developer.android.com/reference/android/text/method/TextKeyListener.html
+http://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize.html
+http://developer.android.com/reference/android/text/TextPaint.html
+http://developer.android.com/reference/android/view/textservice/TextServicesManager.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.EngineInfo.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnInitListener.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnUtteranceCompletedListener.html
+http://developer.android.com/reference/android/speech/tts/TextToSpeechService.html
+http://developer.android.com/reference/android/text/TextUtils.html
+http://developer.android.com/reference/android/text/TextUtils.EllipsizeCallback.html
+http://developer.android.com/reference/android/text/TextUtils.SimpleStringSplitter.html
+http://developer.android.com/reference/android/text/TextUtils.StringSplitter.html
+http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
+http://developer.android.com/reference/android/text/TextWatcher.html
+http://developer.android.com/reference/java/lang/Thread.State.html
+http://developer.android.com/reference/java/lang/Thread.UncaughtExceptionHandler.html
+http://developer.android.com/reference/java/lang/ThreadDeath.html
+http://developer.android.com/reference/java/lang/ThreadGroup.html
+http://developer.android.com/reference/java/lang/ThreadLocal.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy.html
+http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy.html
+http://developer.android.com/reference/java/lang/Throwable.html
+http://developer.android.com/reference/android/media/ThumbnailUtils.html
+http://developer.android.com/reference/android/text/format/Time.html
+http://developer.android.com/reference/java/sql/Time.html
+http://developer.android.com/reference/android/media/TimedText.html
+http://developer.android.com/reference/android/util/TimeFormatException.html
+http://developer.android.com/reference/android/text/method/TimeKeyListener.html
+http://developer.android.com/reference/java/util/concurrent/TimeoutException.html
+http://developer.android.com/reference/android/app/TimePickerDialog.html
+http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html
+http://developer.android.com/reference/java/util/Timer.html
+http://developer.android.com/reference/java/util/TimerTask.html
+http://developer.android.com/reference/java/security/Timestamp.html
+http://developer.android.com/reference/java/sql/Timestamp.html
+http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
+http://developer.android.com/reference/android/util/TimeUtils.html
+http://developer.android.com/reference/android/util/TimingLogger.html
+http://developer.android.com/reference/android/os/TokenWatcher.html
+http://developer.android.com/reference/android/media/ToneGenerator.html
+http://developer.android.com/reference/java/util/TooManyListenersException.html
+http://developer.android.com/reference/android/text/method/Touch.html
+http://developer.android.com/reference/android/test/TouchUtils.html
+http://developer.android.com/reference/android/net/TrafficStats.html
+http://developer.android.com/reference/android/support/v4/net/TrafficStatsCompat.html
+http://developer.android.com/reference/android/support/v4/net/TrafficStatsCompatIcs.html
+http://developer.android.com/reference/android/os/TransactionTooLargeException.html
+http://developer.android.com/reference/android/text/method/TransformationMethod.html
+http://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException.html
+http://developer.android.com/reference/javax/xml/transform/TransformerException.html
+http://developer.android.com/reference/javax/xml/transform/TransformerFactory.html
+http://developer.android.com/reference/javax/xml/transform/TransformerFactoryConfigurationError.html
+http://developer.android.com/reference/javax/xml/transform/sax/TransformerHandler.html
+http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
+http://developer.android.com/reference/java/util/TreeMap.html
+http://developer.android.com/reference/java/util/TreeSet.html
+http://developer.android.com/reference/java/security/cert/TrustAnchor.html
+http://developer.android.com/reference/javax/net/ssl/TrustManagerFactory.html
+http://developer.android.com/reference/javax/net/ssl/TrustManagerFactorySpi.html
+http://developer.android.com/reference/org/apache/http/impl/client/TunnelRefusedException.html
+http://developer.android.com/reference/android/preference/TwoStatePreference.html
+http://developer.android.com/reference/java/lang/reflect/Type.html
+http://developer.android.com/reference/android/renderscript/Type.Builder.html
+http://developer.android.com/reference/android/renderscript/Type.CubemapFace.html
+http://developer.android.com/reference/android/util/TypedValue.html
+http://developer.android.com/reference/android/graphics/Typeface.html
+http://developer.android.com/reference/android/text/style/TypefaceSpan.html
+http://developer.android.com/reference/org/w3c/dom/TypeInfo.html
+http://developer.android.com/reference/javax/xml/validation/TypeInfoProvider.html
+http://developer.android.com/reference/javax/xml/validation/ValidatorHandler.html
+http://developer.android.com/reference/java/lang/TypeNotPresentException.html
+http://developer.android.com/reference/java/sql/Types.html
+http://developer.android.com/reference/java/lang/reflect/TypeVariable.html
+http://developer.android.com/reference/android/test/UiThreadTest.html
+http://developer.android.com/reference/java/lang/reflect/UndeclaredThrowableException.html
+http://developer.android.com/reference/android/text/style/UnderlineSpan.html
+http://developer.android.com/reference/java/lang/UnknownError.html
+http://developer.android.com/reference/java/util/UnknownFormatConversionException.html
+http://developer.android.com/reference/java/util/UnknownFormatFlagsException.html
+http://developer.android.com/reference/java/net/UnknownHostException.html
+http://developer.android.com/reference/java/net/UnknownServiceException.html
+http://developer.android.com/reference/java/nio/charset/UnmappableCharacterException.html
+http://developer.android.com/reference/java/security/UnrecoverableEntryException.html
+http://developer.android.com/reference/java/security/UnrecoverableKeyException.html
+http://developer.android.com/reference/java/nio/channels/UnresolvedAddressException.html
+http://developer.android.com/reference/java/security/UnresolvedPermission.html
+http://developer.android.com/reference/java/lang/UnsatisfiedLinkError.html
+http://developer.android.com/reference/java/nio/channels/UnsupportedAddressTypeException.html
+http://developer.android.com/reference/javax/security/auth/callback/UnsupportedCallbackException.html
+http://developer.android.com/reference/java/nio/charset/UnsupportedCharsetException.html
+http://developer.android.com/reference/java/lang/UnsupportedClassVersionError.html
+http://developer.android.com/reference/org/apache/http/impl/auth/UnsupportedDigestAlgorithmException.html
+http://developer.android.com/reference/java/io/UnsupportedEncodingException.html
+http://developer.android.com/reference/org/apache/http/UnsupportedHttpVersionException.html
+http://developer.android.com/reference/java/lang/UnsupportedOperationException.html
+http://developer.android.com/reference/android/text/style/UpdateAppearance.html
+http://developer.android.com/reference/android/text/style/UpdateLayout.html
+http://developer.android.com/reference/java/net/URI.html
+http://developer.android.com/reference/org/apache/http/protocol/UriPatternMatcher.html
+http://developer.android.com/reference/javax/xml/transform/URIResolver.html
+http://developer.android.com/reference/java/net/URISyntaxException.html
+http://developer.android.com/reference/org/apache/http/client/utils/URIUtils.html
+http://developer.android.com/reference/java/net/URL.html
+http://developer.android.com/reference/java/net/URLClassLoader.html
+http://developer.android.com/reference/java/net/URLDecoder.html
+http://developer.android.com/reference/org/apache/http/client/entity/UrlEncodedFormEntity.html
+http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
+http://developer.android.com/reference/java/net/URLEncoder.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.IllegalCharacterValueSanitizer.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.ParameterValuePair.html
+http://developer.android.com/reference/android/net/UrlQuerySanitizer.ValueSanitizer.html
+http://developer.android.com/reference/android/text/style/URLSpan.html
+http://developer.android.com/reference/java/net/URLStreamHandler.html
+http://developer.android.com/reference/java/net/URLStreamHandlerFactory.html
+http://developer.android.com/reference/android/webkit/URLUtil.html
+http://developer.android.com/reference/android/hardware/usb/UsbAccessory.html
+http://developer.android.com/reference/android/hardware/usb/UsbConstants.html
+http://developer.android.com/reference/android/hardware/usb/UsbDevice.html
+http://developer.android.com/reference/android/hardware/usb/UsbDeviceConnection.html
+http://developer.android.com/reference/android/hardware/usb/UsbEndpoint.html
+http://developer.android.com/reference/android/hardware/usb/UsbInterface.html
+http://developer.android.com/reference/android/hardware/usb/UsbManager.html
+http://developer.android.com/reference/android/hardware/usb/UsbRequest.html
+http://developer.android.com/reference/org/w3c/dom/UserDataHandler.html
+http://developer.android.com/reference/android/provider/UserDictionary.html
+http://developer.android.com/reference/android/provider/UserDictionary.Words.html
+http://developer.android.com/reference/org/apache/http/client/UserTokenHandler.html
+http://developer.android.com/reference/java/io/UTFDataFormatException.html
+http://developer.android.com/reference/javax/xml/validation/Validator.html
+http://developer.android.com/reference/android/webkit/ValueCallback.html
+http://developer.android.com/reference/java/util/Vector.html
+http://developer.android.com/reference/android/support/v4/view/VelocityTrackerCompat.html
+http://developer.android.com/reference/java/lang/VerifyError.html
+http://developer.android.com/reference/junit/runner/Version.html
+http://developer.android.com/reference/org/apache/http/util/VersionInfo.html
+http://developer.android.com/reference/android/os/Vibrator.html
+http://developer.android.com/reference/android/test/ViewAsserts.html
+http://developer.android.com/reference/android/support/v4/view/ViewCompat.html
+http://developer.android.com/reference/android/support/v4/view/ViewCompatJB.html
+http://developer.android.com/reference/android/support/v4/view/ViewConfigurationCompat.html
+http://developer.android.com/reference/android/view/ViewDebug.CapturedViewProperty.html
+http://developer.android.com/reference/android/view/ViewDebug.ExportedProperty.html
+http://developer.android.com/reference/android/view/ViewDebug.FlagToString.html
+http://developer.android.com/reference/android/view/ViewDebug.IntToString.html
+http://developer.android.com/reference/android/support/v4/view/ViewGroupCompat.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.LayoutParams.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.SavedState.html
+http://developer.android.com/reference/android/support/v4/view/ViewPager.SimpleOnPageChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/Virtualizer.html
+http://developer.android.com/reference/android/media/audiofx/Virtualizer.OnParameterChangeListener.html
+http://developer.android.com/reference/android/media/audiofx/Virtualizer.Settings.html
+http://developer.android.com/reference/java/lang/VirtualMachineError.html
+http://developer.android.com/reference/android/opengl/Visibility.html
+http://developer.android.com/reference/android/media/audiofx/Visualizer.html
+http://developer.android.com/reference/android/media/audiofx/Visualizer.OnDataCaptureListener.html
+http://developer.android.com/reference/android/provider/VoicemailContract.html
+http://developer.android.com/reference/android/provider/VoicemailContract.Status.html
+http://developer.android.com/reference/android/provider/VoicemailContract.Voicemails.html
+http://developer.android.com/reference/java/lang/Void.html
+http://developer.android.com/reference/android/net/VpnService.html
+http://developer.android.com/reference/android/net/VpnService.Builder.html
+http://developer.android.com/reference/android/app/WallpaperInfo.html
+http://developer.android.com/reference/android/app/WallpaperManager.html
+http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html
+http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html
+http://developer.android.com/reference/java/util/WeakHashMap.html
+http://developer.android.com/reference/android/webkit/WebBackForwardList.html
+http://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback.html
+http://developer.android.com/reference/android/webkit/WebHistoryItem.html
+http://developer.android.com/reference/android/webkit/WebIconDatabase.html
+http://developer.android.com/reference/android/webkit/WebIconDatabase.IconListener.html
+http://developer.android.com/reference/android/webkit/WebResourceResponse.html
+http://developer.android.com/reference/android/webkit/WebSettings.LayoutAlgorithm.html
+http://developer.android.com/reference/android/webkit/WebSettings.PluginState.html
+http://developer.android.com/reference/android/webkit/WebSettings.RenderPriority.html
+http://developer.android.com/reference/android/webkit/WebSettings.TextSize.html
+http://developer.android.com/reference/android/webkit/WebSettings.ZoomDensity.html
+http://developer.android.com/reference/android/webkit/WebStorage.html
+http://developer.android.com/reference/android/webkit/WebStorage.Origin.html
+http://developer.android.com/reference/android/webkit/WebStorage.QuotaUpdater.html
+http://developer.android.com/reference/android/webkit/WebView.FindListener.html
+http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
+http://developer.android.com/reference/android/webkit/WebView.PictureListener.html
+http://developer.android.com/reference/android/webkit/WebView.WebViewTransport.html
+http://developer.android.com/reference/android/webkit/WebViewDatabase.html
+http://developer.android.com/reference/android/webkit/WebViewFragment.html
http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html
http://developer.android.com/reference/android/net/wifi/WifiConfiguration.AuthAlgorithm.html
http://developer.android.com/reference/android/net/wifi/WifiConfiguration.GroupCipher.html
@@ -2261,736 +3881,1352 @@
http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Protocol.html
http://developer.android.com/reference/android/net/wifi/WifiConfiguration.Status.html
http://developer.android.com/reference/android/net/wifi/WifiInfo.html
+http://developer.android.com/reference/android/net/wifi/WifiManager.html
http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html
-http://developer.android.com/reference/android/net/wifi/SupplicantState.html
-http://developer.android.com/reference/android/net/NetworkInfo.html
-http://developer.android.com/reference/android/net/DhcpInfo.html
-http://developer.android.com/reference/java/text/AttributedCharacterIterator.html
-http://developer.android.com/reference/java/text/CharacterIterator.html
-http://developer.android.com/reference/java/text/Annotation.html
-http://developer.android.com/reference/java/text/AttributedCharacterIterator.Attribute.html
-http://developer.android.com/reference/java/text/AttributedString.html
-http://developer.android.com/reference/java/text/Bidi.html
-http://developer.android.com/reference/java/text/BreakIterator.html
-http://developer.android.com/reference/java/text/ChoiceFormat.html
-http://developer.android.com/reference/java/text/CollationElementIterator.html
-http://developer.android.com/reference/java/text/CollationKey.html
-http://developer.android.com/reference/java/text/Collator.html
-http://developer.android.com/reference/java/text/DateFormat.Field.html
-http://developer.android.com/reference/java/text/DateFormatSymbols.html
-http://developer.android.com/reference/java/text/DecimalFormat.html
-http://developer.android.com/reference/java/text/DecimalFormatSymbols.html
-http://developer.android.com/reference/java/text/FieldPosition.html
-http://developer.android.com/reference/java/text/Format.html
-http://developer.android.com/reference/java/text/Format.Field.html
-http://developer.android.com/reference/java/text/MessageFormat.html
-http://developer.android.com/reference/java/text/MessageFormat.Field.html
-http://developer.android.com/reference/java/text/NumberFormat.html
-http://developer.android.com/reference/java/text/NumberFormat.Field.html
-http://developer.android.com/reference/java/text/ParsePosition.html
-http://developer.android.com/reference/java/text/RuleBasedCollator.html
-http://developer.android.com/reference/java/text/SimpleDateFormat.html
-http://developer.android.com/reference/java/text/StringCharacterIterator.html
-http://developer.android.com/reference/java/text/ParseException.html
-http://developer.android.com/reference/android/text/GetChars.html
-http://developer.android.com/reference/android/text/Html.ImageGetter.html
-http://developer.android.com/reference/android/text/Html.TagHandler.html
-http://developer.android.com/reference/android/text/InputFilter.html
-http://developer.android.com/reference/android/text/InputType.html
-http://developer.android.com/reference/android/text/NoCopySpan.html
-http://developer.android.com/reference/android/text/ParcelableSpan.html
-http://developer.android.com/reference/android/text/Spanned.html
-http://developer.android.com/reference/android/text/SpanWatcher.html
-http://developer.android.com/reference/android/text/TextUtils.EllipsizeCallback.html
-http://developer.android.com/reference/android/text/TextUtils.StringSplitter.html
-http://developer.android.com/reference/android/text/AlteredCharSequence.html
-http://developer.android.com/reference/android/text/AndroidCharacter.html
-http://developer.android.com/reference/android/text/Annotation.html
-http://developer.android.com/reference/android/text/AutoText.html
-http://developer.android.com/reference/android/text/BoringLayout.html
-http://developer.android.com/reference/android/text/BoringLayout.Metrics.html
-http://developer.android.com/reference/android/text/DynamicLayout.html
-http://developer.android.com/reference/android/text/Editable.Factory.html
-http://developer.android.com/reference/android/text/Html.html
-http://developer.android.com/reference/android/text/InputFilter.AllCaps.html
-http://developer.android.com/reference/android/text/InputFilter.LengthFilter.html
-http://developer.android.com/reference/android/text/Layout.html
-http://developer.android.com/reference/android/text/Layout.Directions.html
-http://developer.android.com/reference/android/text/LoginFilter.html
-http://developer.android.com/reference/android/text/LoginFilter.PasswordFilterGMail.html
-http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGeneric.html
-http://developer.android.com/reference/android/text/LoginFilter.UsernameFilterGMail.html
-http://developer.android.com/reference/android/text/NoCopySpan.Concrete.html
-http://developer.android.com/reference/android/text/Selection.html
-http://developer.android.com/reference/android/text/Spannable.Factory.html
-http://developer.android.com/reference/android/text/SpannableString.html
-http://developer.android.com/reference/android/text/SpannableStringBuilder.html
-http://developer.android.com/reference/android/text/SpannedString.html
-http://developer.android.com/reference/android/text/StaticLayout.html
-http://developer.android.com/reference/android/text/TextPaint.html
-http://developer.android.com/reference/android/text/TextUtils.SimpleStringSplitter.html
-http://developer.android.com/reference/android/text/Layout.Alignment.html
-http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
-http://developer.android.com/reference/java/io/Closeable.html
-http://developer.android.com/reference/java/io/ByteArrayOutputStream.html
-http://developer.android.com/reference/org/xml/sax/ext/DefaultHandler2.html
-http://developer.android.com/reference/javax/xml/transform/sax/TemplatesHandler.html
-http://developer.android.com/reference/javax/xml/transform/sax/TransformerHandler.html
-http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderAdapter.html
-http://developer.android.com/reference/org/xml/sax/ext/LexicalHandler.html
-http://developer.android.com/reference/org/xml/sax/ext/DeclHandler.html
-http://developer.android.com/reference/org/xml/sax/ext/EntityResolver2.html
-http://developer.android.com/reference/org/xml/sax/helpers/AttributesImpl.html
-http://developer.android.com/reference/java/io/DataInput.html
-http://developer.android.com/reference/java/io/DataOutput.html
-http://developer.android.com/reference/java/io/Externalizable.html
-http://developer.android.com/reference/java/io/FileFilter.html
-http://developer.android.com/reference/java/io/FilenameFilter.html
-http://developer.android.com/reference/java/io/Flushable.html
-http://developer.android.com/reference/java/io/ObjectInput.html
-http://developer.android.com/reference/java/io/ObjectInputValidation.html
-http://developer.android.com/reference/java/io/ObjectOutput.html
-http://developer.android.com/reference/java/io/ObjectStreamConstants.html
-http://developer.android.com/reference/java/io/BufferedInputStream.html
-http://developer.android.com/reference/java/io/BufferedOutputStream.html
-http://developer.android.com/reference/java/io/BufferedReader.html
-http://developer.android.com/reference/java/io/BufferedWriter.html
-http://developer.android.com/reference/java/io/ByteArrayInputStream.html
-http://developer.android.com/reference/java/io/CharArrayReader.html
-http://developer.android.com/reference/java/io/CharArrayWriter.html
-http://developer.android.com/reference/java/io/Console.html
-http://developer.android.com/reference/java/io/DataInputStream.html
-http://developer.android.com/reference/java/io/DataOutputStream.html
-http://developer.android.com/reference/java/io/FilePermission.html
-http://developer.android.com/reference/java/io/FileReader.html
-http://developer.android.com/reference/java/io/FileWriter.html
-http://developer.android.com/reference/java/io/FilterInputStream.html
-http://developer.android.com/reference/java/io/FilterOutputStream.html
-http://developer.android.com/reference/java/io/FilterReader.html
-http://developer.android.com/reference/java/io/FilterWriter.html
-http://developer.android.com/reference/java/io/InputStreamReader.html
-http://developer.android.com/reference/java/io/LineNumberInputStream.html
-http://developer.android.com/reference/java/io/LineNumberReader.html
-http://developer.android.com/reference/java/io/ObjectInputStream.html
-http://developer.android.com/reference/java/io/ObjectInputStream.GetField.html
-http://developer.android.com/reference/java/io/ObjectOutputStream.html
-http://developer.android.com/reference/java/io/ObjectOutputStream.PutField.html
-http://developer.android.com/reference/java/io/ObjectStreamClass.html
-http://developer.android.com/reference/java/io/ObjectStreamField.html
-http://developer.android.com/reference/java/io/OutputStreamWriter.html
-http://developer.android.com/reference/java/io/PipedInputStream.html
-http://developer.android.com/reference/java/io/PipedOutputStream.html
-http://developer.android.com/reference/java/io/PipedReader.html
-http://developer.android.com/reference/java/io/PipedWriter.html
-http://developer.android.com/reference/java/io/PushbackInputStream.html
-http://developer.android.com/reference/java/io/PushbackReader.html
-http://developer.android.com/reference/java/io/RandomAccessFile.html
-http://developer.android.com/reference/java/io/SequenceInputStream.html
-http://developer.android.com/reference/java/io/SerializablePermission.html
-http://developer.android.com/reference/java/io/StreamTokenizer.html
-http://developer.android.com/reference/java/io/StringBufferInputStream.html
-http://developer.android.com/reference/java/io/StringReader.html
-http://developer.android.com/reference/java/io/StringWriter.html
-http://developer.android.com/reference/java/io/CharConversionException.html
-http://developer.android.com/reference/java/io/EOFException.html
-http://developer.android.com/reference/java/io/InvalidClassException.html
-http://developer.android.com/reference/java/io/InvalidObjectException.html
-http://developer.android.com/reference/java/io/NotActiveException.html
-http://developer.android.com/reference/java/io/NotSerializableException.html
-http://developer.android.com/reference/java/io/ObjectStreamException.html
-http://developer.android.com/reference/java/io/OptionalDataException.html
-http://developer.android.com/reference/java/io/StreamCorruptedException.html
-http://developer.android.com/reference/java/io/SyncFailedException.html
-http://developer.android.com/reference/java/io/UnsupportedEncodingException.html
-http://developer.android.com/reference/java/io/UTFDataFormatException.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDeviceList.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pGroup.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.Channel.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ChannelListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ConnectionInfoListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdServiceResponseListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdTxtRecordListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.GroupInfoListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.PeerListListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ServiceResponseListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.UpnpServiceResponseListener.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pServiceInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pServiceRequest.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo.html
+http://developer.android.com/reference/android/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest.html
+http://developer.android.com/reference/java/lang/reflect/WildcardType.html
+http://developer.android.com/reference/org/apache/http/impl/conn/Wire.html
+http://developer.android.com/reference/android/os/WorkSource.html
+http://developer.android.com/reference/android/net/wifi/WpsInfo.html
+http://developer.android.com/reference/java/sql/Wrapper.html
+http://developer.android.com/reference/android/text/style/WrapTogetherSpan.html
+http://developer.android.com/reference/java/nio/channels/WritableByteChannel.html
http://developer.android.com/reference/java/io/WriteAbortedException.html
-http://developer.android.com/reference/java/io/IOError.html
-http://developer.android.com/reference/java/nio/charset/CharacterCodingException.html
-http://developer.android.com/reference/org/apache/http/client/ClientProtocolException.html
-http://developer.android.com/reference/java/util/InvalidPropertiesFormatException.html
-http://developer.android.com/reference/javax/net/ssl/SSLException.html
-http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html
-http://developer.android.com/reference/java/util/jar/JarException.html
-http://developer.android.com/reference/java/nio/charset/MalformedInputException.html
-http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html
-http://developer.android.com/reference/javax/net/ssl/SSLKeyException.html
-http://developer.android.com/reference/javax/net/ssl/SSLPeerUnverifiedException.html
-http://developer.android.com/reference/javax/net/ssl/SSLProtocolException.html
-http://developer.android.com/reference/java/nio/charset/UnmappableCharacterException.html
-http://developer.android.com/reference/javax/security/auth/login/LoginException.html
-http://developer.android.com/reference/javax/security/auth/login/package-descr.html
+http://developer.android.com/reference/javax/security/auth/x500/X500Principal.html
+http://developer.android.com/reference/java/security/cert/X509Certificate.html
+http://developer.android.com/reference/javax/security/cert/X509Certificate.html
+http://developer.android.com/reference/java/security/cert/X509CertSelector.html
+http://developer.android.com/reference/java/security/cert/X509CRL.html
+http://developer.android.com/reference/java/security/cert/X509CRLEntry.html
+http://developer.android.com/reference/java/security/cert/X509CRLSelector.html
+http://developer.android.com/reference/java/security/spec/X509EncodedKeySpec.html
+http://developer.android.com/reference/javax/net/ssl/X509ExtendedKeyManager.html
+http://developer.android.com/reference/java/security/cert/X509Extension.html
+http://developer.android.com/reference/javax/net/ssl/X509KeyManager.html
+http://developer.android.com/reference/javax/net/ssl/X509TrustManager.html
+http://developer.android.com/reference/android/util/Xml.html
+http://developer.android.com/reference/android/util/Xml.Encoding.html
+http://developer.android.com/reference/javax/xml/XMLConstants.html
+http://developer.android.com/reference/org/xml/sax/XMLFilter.html
+http://developer.android.com/reference/org/xml/sax/helpers/XMLFilterImpl.html
+http://developer.android.com/reference/java/util/logging/XMLFormatter.html
+http://developer.android.com/reference/javax/xml/datatype/XMLGregorianCalendar.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserException.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlPullParserFactory.html
+http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderAdapter.html
+http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderFactory.html
+http://developer.android.com/reference/android/content/res/XmlResourceParser.html
+http://developer.android.com/reference/org/xmlpull/v1/XmlSerializer.html
+http://developer.android.com/reference/javax/xml/xpath/XPath.html
+http://developer.android.com/reference/javax/xml/xpath/XPathConstants.html
+http://developer.android.com/reference/javax/xml/xpath/XPathException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathExpression.html
+http://developer.android.com/reference/javax/xml/xpath/XPathExpressionException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFactory.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFactoryConfigurationException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFunction.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFunctionException.html
+http://developer.android.com/reference/javax/xml/xpath/XPathFunctionResolver.html
+http://developer.android.com/reference/javax/xml/xpath/XPathVariableResolver.html
+http://developer.android.com/reference/android/graphics/YuvImage.html
+http://developer.android.com/reference/java/util/zip/ZipEntry.html
+http://developer.android.com/reference/java/util/zip/ZipError.html
+http://developer.android.com/reference/java/util/zip/ZipException.html
+http://developer.android.com/reference/java/util/zip/ZipFile.html
+http://developer.android.com/reference/java/util/zip/ZipInputStream.html
+http://developer.android.com/reference/java/util/zip/ZipOutputStream.html
+http://developer.android.com/sdk/compatibility-library.html
+http://developer.android.com/resources/samples/MultiResolution/index.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
+http://developer.android.com/guide/practices/screens-support-1.5.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.html
+http://developer.android.com/resources/dashboard/screens.html
+http://developer.android.com/shareables/training/CustomView.zip
+http://developer.android.com/resources/faq/troubleshooting.html
+http://developer.android.com/shareables/training/ActivityLifecycle.zip
+http://developer.android.com/resources/tutorials/localization/index.html
+http://developer.android.com/resources/samples/AccelerometerPlay/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
+http://developer.android.com/resources/samples/BluetoothChat/index.html
+http://developer.android.com/resources/samples/BluetoothHDP/index.html
+http://developer.android.com/resources/samples/ContactManager/index.html
+http://developer.android.com/guide/developing/tools/traceview.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html
+http://developer.android.com/resources/samples/AndroidBeamDemo/index.html
+http://developer.android.com/resources/samples/TicTacToeMain/index.html
+http://developer.android.com/resources/tutorials/views/hello-formstuff.html
+http://developer.android.com/shareables/training/FragmentBasics.zip
+http://developer.android.com/guide/samples/index.html
+http://developer.android.com/resources/samples/JetBoy/index.html
+http://developer.android.com/guide/topics/media/jet/jetcreator_manual.html
+http://developer.android.com/shareables/training/EffectiveNavigation.zip
+http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
+http://developer.android.com/design/patterns/swipe-views
+http://developer.android.com/shareables/training/NetworkUsage.zip
+http://developer.android.com/sdk/api_diff/15/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/changes-summary.html
+http://developer.android.com/guide/topics/wireless/bluetooth.html
+http://developer.android.com/reference/renderscript/index.html
+http://developer.android.com/resources/samples/SpellChecker/SampleSpellCheckerService/index.html
+http://developer.android.com/resources/samples/SpellChecker/HelloSpellChecker/index.html
+http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/ExampleAgent.html
+http://developer.android.com/resources/samples/BackupRestore/index.html
+http://developer.android.com/guide/topics/fundamentals.html
+http://developer.android.com/guide/topics/intents/intents-filters.html
+http://developer.android.com/guide/topics/fundamentals/loaders.html
+http://developer.android.com/resources/tutorials/views/hello-timepicker.html
+http://developer.android.com/shareables/training/TabCompat.zip
+http://developer.android.com/distribute/googleplay/promote/product-pages.html
+http://developer.android.com/resources/samples/TicTacToeLib/AndroidManifest.html
+http://developer.android.com/resources/samples/TicTacToeMain/AndroidManifest.html
+http://developer.android.com/sdk/api_diff/10/changes.html
+http://developer.android.com/resources/samples/NFCDemo/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.html
+http://developer.android.com/sdk/api_diff/13/changes.html
+http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
+http://developer.android.com/guide/developing/tools/aidl.html
+http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
+http://developer.android.com/guide/topics/network/sip.html
+http://developer.android.com/resources/tutorials/views/hello-gallery.html
+http://developer.android.com/sdk/api_diff/16/changes.html
+http://developer.android.com/guide/topics/ui/layout-objects.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
+http://developer.android.com/shareables/training/LocationAware.zip
+http://developer.android.com/training/tutorials/views/hello-tabwidget.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html
+http://developer.android.com/guide/topics/clipboard/copy-paste.html
+http://developer.android.com/sdk/api_diff/10/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/changes-summary.html
+http://developer.android.com/tools/help/running
+http://developer.android.com/tools/help/generating
+http://developer.android.com/tools/help/analyzing
+http://developer.android.com/resources/tutorials/views/hello-listview.html
+http://developer.android.com/guide/practices/design/responsiveness.html
+http://developer.android.com/resources/samples/SipDemo/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/BouncingBalls.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/LayoutAnimations.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsByDefault.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animations_by_default.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/MultiPropertyAnimation.html
+http://developer.android.com/resources/samples/ActionBarCompat/index.html
+http://developer.android.com/guide/topics/fundamentals/activities.html
+http://developer.android.com/guide/topics/fundamentals/services.html
+http://developer.android.com/reference/renderscript/globals.html
+http://developer.android.com/reference/renderscript/annotated.html
+http://developer.android.com/sdk/win-usb.html
+http://developer.android.com/training/tutorials/views/hello-gallery.html
+http://developer.android.com/resources/faq/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DragAndDropDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DraggableDot.html
+http://developer.android.com/shareables/training/MobileAds.zip
+http://developer.android.com/reference/renderscript/rs__types_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__allocation_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__atomic_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__cl_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__debug_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__element_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__math_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__matrix_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__object_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__quaternion_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__sampler_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__time_8rsh_source.html
+http://developer.android.com/reference/renderscript/structrs__script__call.html
+http://developer.android.com/reference/renderscript/rs__types_8rsh.html
+http://developer.android.com/reference/renderscript/structrs__script.html
+http://developer.android.com/reference/renderscript/structrs__allocation.html
+http://developer.android.com/reference/renderscript/rs__core_8rsh_source.html
+http://developer.android.com/sdk/api_diff/11/changes.html
+http://developer.android.com/resources/samples/StackWidget/index.html
+http://developer.android.com/resources/samples/WeatherListWidget/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List15.html
+http://developer.android.com/reference/renderscript/structrs__element.html
+http://developer.android.com/reference/renderscript/structrs__type.html
+http://developer.android.com/reference/renderscript/structrs__sampler.html
+http://developer.android.com/reference/renderscript/structrs__mesh.html
+http://developer.android.com/reference/renderscript/structrs__path.html
+http://developer.android.com/reference/renderscript/structrs__program__fragment.html
+http://developer.android.com/reference/renderscript/structrs__program__vertex.html
+http://developer.android.com/reference/renderscript/structrs__program__raster.html
+http://developer.android.com/reference/renderscript/structrs__program__store.html
+http://developer.android.com/reference/renderscript/structrs__font.html
+http://developer.android.com/reference/renderscript/structrs__matrix4x4.html
+http://developer.android.com/reference/renderscript/structrs__matrix3x3.html
+http://developer.android.com/reference/renderscript/structrs__matrix2x2.html
+http://developer.android.com/sdk/api_diff/15/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/15/changes/fields_index_all.html
+http://developer.android.com/guide/topics/nfc/index.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_action_bar.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html
+http://developer.android.com/resources/samples/HoneycombGallery/src/com/example/android/hcgallery/TitlesFragment.html
+http://developer.android.com/guide/topics/testing/index.html
+http://developer.android.com/sdk/tools-notes.html
+http://developer.android.com/sdk/api_diff/13/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/changes-summary.html
+http://developer.android.com/guide/faq/index.html
+http://developer.android.com/sdk/eclipse-adt.html
+http://developer.android.com/guide/google/gcm/client-javadoc/allclasses-frame.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/package-summary.html
+http://developer.android.com/sdk/api_diff/11/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/changes-summary.html
+http://developer.android.com/guide/topics/ui/binding.html
+http://developer.android.com/sdk/api_diff/15/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.service.textservice.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.service.wallpaper.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.speech.tts.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.view.accessibility.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.view.textservice.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/15/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/14/changes.html
+http://developer.android.com/sdk/api_diff/12/changes.html
+http://developer.android.com/about/versions/android-3.1-highlights.html
+http://developer.android.com/about/versions/android-2.3.html
+http://developer.android.com/sdk/api_diff/9/changes.html
+http://developer.android.com/about/versions/android-2.2.html
+http://developer.android.com/sdk/api_diff/8/changes.html
+http://developer.android.com/about/versions/android-2.2-highlights.html
+http://developer.android.com/about/versions/android-2.1.html
+http://developer.android.com/sdk/api_diff/7/changes.html
+http://developer.android.com/about/versions/android-2.0-highlights.html
+http://developer.android.com/about/versions/android-2.0.1.html
+http://developer.android.com/sdk/api_diff/6/changes.html
+http://developer.android.com/about/versions/android-2.0.html
+http://developer.android.com/sdk/api_diff/5/changes.html
+http://developer.android.com/about/versions/android-1.6.html
+http://developer.android.com/sdk/api_diff/4/changes.html
+http://developer.android.com/about/versions/android-1.6-highlights.html
+http://developer.android.com/about/versions/android-1.5.html
+http://developer.android.com/sdk/api_diff/3/changes.html
+http://developer.android.com/about/versions/android-1.5-highlights.html
+http://developer.android.com/about/versions/android-1.1.html
+http://developer.android.com/sdk/api_diff/10/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.nfc.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/10/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/15/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/15/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/15/changes/android.os.RemoteException.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.View.html
+http://developer.android.com/resources/samples/WiFiDirectDemo/index.html
+http://developer.android.com/sdk/api_diff/15/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.accessibility.AccessibilityRecord.html
+http://developer.android.com/sdk/api_diff/15/changes/android.appwidget.AppWidgetHostView.html
+http://developer.android.com/sdk/api_diff/15/changes/android.bluetooth.BluetoothDevice.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.AttendeesColumns.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.CalendarColumns.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.CalendarContract.EventsColumns.html
+http://developer.android.com/sdk/api_diff/15/changes/android.media.CamcorderProfile.html
+http://developer.android.com/sdk/api_diff/15/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/15/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/15/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/15/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/15/changes/android.opengl.GLES11Ext.html
+http://developer.android.com/sdk/api_diff/15/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/15/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/15/changes/android.media.MediaMetadataRetriever.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/15/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/15/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/15/changes/android.service.textservice.SpellCheckerService.Session.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.textservice.SpellCheckerSession.html
+http://developer.android.com/sdk/api_diff/15/changes/android.view.textservice.SuggestionsInfo.html
+http://developer.android.com/sdk/api_diff/15/changes/android.text.style.SuggestionSpan.html
+http://developer.android.com/sdk/api_diff/15/changes/android.graphics.SurfaceTexture.html
+http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.html
+http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/15/changes/android.speech.tts.TextToSpeechService.html
+http://developer.android.com/sdk/api_diff/15/changes/android.service.wallpaper.WallpaperService.Engine.html
+http://developer.android.com/sdk/api_diff/15/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/15/changes/android.webkit.WebSettings.LayoutAlgorithm.html
+http://developer.android.com/resources/tutorials/views/index.html
+http://developer.android.com/guide/topics/ui/layout/grid.html
+http://developer.android.com/resources/community-groups.html
+http://developer.android.com/tools/sdk/ndk/overview.html
+http://developer.android.com/resources/tutorials/views/hello-spinner.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.AbstractCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.AbstractThreadedSyncAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.AbstractWindowedCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.accounts.AccountManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.DropBoxManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DeviceAdminReceiver.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DevicePolicyManager.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.ActivityManager.RecentTaskInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.Deque.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.Queue.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ArrayAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/11/changes/android.preference.PreferenceActivity.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Email.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContacts.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.AlarmClock.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.AlertDialog.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SyncAdapterType.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.DownloadManager.Request.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.app.admin.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.preference.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.speech.tts.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.text.method.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.AndroidException.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.AndroidRuntimeException.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetHost.html
+http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.appwidget.AppWidgetProviderInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.ArrowKeyMovementMethod.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.AsyncTask.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.accounts.AuthenticatorDescription.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.BaseInputConnection.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.BaseKeyListener.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.BatteryManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/11/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteProgram.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Browser.SearchColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteQueryBuilder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Bundle.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.CacheManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.CacheManager.CacheResult.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.CamcorderProfile.html
+http://developer.android.com/sdk/api_diff/11/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/11/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.ScrollingMovementMethod.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.StatusColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.InputMethodImpl.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethod.html
+http://developer.android.com/sdk/api_diff/11/changes/java.lang.Character.UnicodeBlock.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.ResourceBundle.html
+http://developer.android.com/sdk/api_diff/11/changes/android.net.Uri.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.ClipboardManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.ColorDrawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.DownloadManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputConnection.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputConnectionWrapper.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.ComponentInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.DrawableContainerState.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactStatusColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.CommonDataKinds.Relation.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.AggregationSuggestions.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Contacts.Photo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.ContactsColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.DataColumnsWithJoins.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.ContactsContract.RawContactsColumns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentProviderClient.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContentValues.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.CursorAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.CursorWrapper.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_dalvik.bytecode.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.DatePicker.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.DatePickerDialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SyncInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.VmPolicy.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.ThreadPolicy.Builder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.admin.DeviceAdminInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.dimen.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.DrawableContainer.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.EditorInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteStatement.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.ExifInterface.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.PackageStats.html
+http://developer.android.com/sdk/api_diff/11/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.MenuItem.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ImageView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.net.Uri.html
+http://developer.android.com/sdk/api_diff/11/changes/java.lang.Object.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.MediaStore.Audio.Genres.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.ResourceBundle.Control.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.ScaleGestureDetector.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.net.Proxy.html
+http://developer.android.com/sdk/api_diff/11/changes/android.preference.Preference.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.LayoutInflater.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.method.QwertyKeyListener.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.animation.Interpolator.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.Locale.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.format.Time.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/11/changes/android.opengl.GLSurfaceView.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.LinearLayout.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SharedPreferences.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.inputmethod.InputMethodInfo.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.SpannableStringBuilder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.Vibrator.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.NavigableMap.html
+http://developer.android.com/sdk/api_diff/11/changes/java.util.NavigableSet.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.id.html
+http://developer.android.com/sdk/api_diff/11/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.InputMethodService.Insets.html
+http://developer.android.com/sdk/api_diff/11/changes/android.text.InputType.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/11/changes/pkg_java.util.html
+http://developer.android.com/sdk/api_diff/11/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/11/changes/android.inputmethodservice.Keyboard.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.KeyCharacterMap.KeyData.html
+http://developer.android.com/sdk/api_diff/11/changes/android.graphics.drawable.LayerDrawable.html
+http://developer.android.com/sdk/api_diff/11/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.layout.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/11/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.Spinner.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/11/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/11/changes/android.os.StrictMode.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.StateSet.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteOpenHelper.html
+http://developer.android.com/sdk/api_diff/11/changes/dalvik.bytecode.Opcodes.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.OverScroller.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.Patterns.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.ProgressDialog.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/11/changes/android.content.SharedPreferences.Editor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.QuickContactBadge.html
+http://developer.android.com/sdk/api_diff/11/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/11/changes/android.util.SparseArray.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.ResourceCursorAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/11/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.TabWidget.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.SurfaceHolder.html
+http://developer.android.com/sdk/api_diff/11/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/11/changes/android.widget.SimpleCursorAdapter.html
+http://developer.android.com/sdk/api_diff/11/changes/android.database.sqlite.SQLiteCursor.html
+http://developer.android.com/sdk/api_diff/11/changes/android.view.ViewParent.html
+http://developer.android.com/resources/samples/RenderScript/HelloCompute/index.html
+http://developer.android.com/resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html
+http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePad.html
+http://developer.android.com/sdk/api_diff/11/changes/jdiff_statistics.html
+http://developer.android.com/training/tutorials/views/index.html
+http://developer.android.com/reference/renderscript/structrs__tm.html
+http://developer.android.com/reference/renderscript/rs__sampler_8rsh.html
+http://developer.android.com/reference/renderscript/rs__math_8rsh.html
+http://developer.android.com/reference/renderscript/rs__cl_8rsh.html
+http://developer.android.com/resources/tutorials/views/hello-tablelayout.html
+http://developer.android.com/sdk/api_diff/7/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/changes-summary.html
+http://developer.android.com/resources/browser.html?tag=sample
+http://developer.android.com/reference/renderscript/rs__time_8rsh.html
+http://developer.android.com/tools/help/sqlite3.html
+http://developer.android.com/guide/developing/tools/draw9patch.html
+http://developer.android.com/sdk/api_diff/7/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/7/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/10/changes/android.nfc.NfcAdapter.html
+http://developer.android.com/sdk/api_diff/10/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/resources/tutorials/views/hello-gridview.html
+http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.ActivityGroup.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.hardware.usb.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/13/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.FragmentTransaction.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.Binder.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/13/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/13/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.graphics.Point.html
+http://developer.android.com/sdk/api_diff/13/changes/android.graphics.PointF.html
+http://developer.android.com/sdk/api_diff/13/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/13/changes/android.view.Display.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.KeyguardManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.FragmentManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/13/changes/android.hardware.usb.UsbDeviceConnection.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.KeyguardManager.KeyguardLock.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.LocalActivityManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/13/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.os.PowerManager.html
+http://developer.android.com/sdk/api_diff/13/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/13/changes/android.app.TabActivity.html
+http://developer.android.com/reference/renderscript/rs__element_8rsh.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBaseIntentService.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMBroadcastReceiver.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMConstants.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/GCMRegistrar.html
+http://developer.android.com/sdk/api_diff/13/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/7/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/7/changes/android.R.attr.html
+http://developer.android.com/guide/faq/framework.html
+http://developer.android.com/guide/faq/licensingandoss.html
+http://developer.android.com/guide/faq/security.html
+http://developer.android.com/sdk/api_diff/7/changes/android.content.Intent.html
+http://developer.android.com/reference/renderscript/rs__allocation_8rsh.html
+http://developer.android.com/sdk/api_diff/10/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/10/changes/android.bluetooth.BluetoothDevice.html
+http://developer.android.com/sdk/api_diff/12/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/12/changes/changes-summary.html
http://developer.android.com/sdk/api_diff/8/changes/jdiff_topleftframe.html
http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_all.html
http://developer.android.com/sdk/api_diff/8/changes/changes-summary.html
-http://developer.android.com/reference/android/location/LocationProvider.html
-http://developer.android.com/reference/org/xml/sax/helpers/AttributeListImpl.html
-http://developer.android.com/reference/org/xml/sax/helpers/LocatorImpl.html
-http://developer.android.com/reference/org/xml/sax/helpers/NamespaceSupport.html
-http://developer.android.com/reference/org/xml/sax/helpers/ParserAdapter.html
-http://developer.android.com/reference/org/xml/sax/helpers/ParserFactory.html
-http://developer.android.com/reference/org/xml/sax/helpers/XMLReaderFactory.html
-http://developer.android.com/reference/org/xml/sax/helpers/package-descr.html
+http://developer.android.com/guide/topics/usb/index.html
+http://developer.android.com/guide/topics/testing/provider_testing.html
+http://developer.android.com/guide/practices/optimizing-for-3.0.html
+http://developer.android.com/shareables/training/DeviceManagement.zip
+http://developer.android.com/resources/samples/USB/AdbTest/index.html
+http://developer.android.com/resources/samples/USB/MissileLauncher/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/GameView.html
+http://developer.android.com/sdk/api_diff/16/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/changes-summary.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20Activity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.html
+http://developer.android.com/resources/tutorials/opengl/opengl-es10.html
+http://developer.android.com/resources/tutorials/opengl/opengl-es20.html
+http://developer.android.com/resources/dashboard/opengl.html
+http://developer.android.com/reference/renderscript/globals_func.html
+http://developer.android.com/reference/renderscript/globals_type.html
+http://developer.android.com/reference/renderscript/globals_enum.html
+http://developer.android.com/reference/renderscript/rs__object_8rsh.html
+http://developer.android.com/reference/renderscript/rs__debug_8rsh.html
+http://developer.android.com/reference/renderscript/rs__graphics_8rsh.html
+http://developer.android.com/reference/renderscript/rs__matrix_8rsh.html
+http://developer.android.com/reference/renderscript/rs__quaternion_8rsh.html
+http://developer.android.com/sdk/api_diff/10/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/guide/developing/device.html
+http://developer.android.com/sdk/adding-components.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebStorage.html
+http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/ndk/index.html
+http://developer.android.com/sdk/api_diff/10/changes/android.content.Context.html
+http://developer.android.com/guide/google/play/AboutLibraries
+http://developer.android.com/reference/renderscript/rs__atomic_8rsh.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SecureView.html
+http://developer.android.com/sdk/api_diff/8/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/android.media.MediaRecorder.AudioEncoder.html
+http://developer.android.com/sdk/api_diff/10/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/7/changes/android.graphics.Rect.html
+http://developer.android.com/guide/faq/troubleshooting.html
+http://developer.android.com/sdk/api_diff/7/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
+http://developer.android.com/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
+http://developer.android.com/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/7/changes/android.os.PowerManager.html
+http://developer.android.com/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
+http://developer.android.com/sdk/api_diff/7/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/7/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/7/changes/android.view.View.html
+http://developer.android.com/resources/samples/Support4Demos/index.html
+http://developer.android.com/resources/samples/Support13Demos/index.html
+http://developer.android.com/sdk/api_diff/5/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/changes-summary.html
+http://developer.android.com/sdk/api_diff/12/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/12/changes/fields_index_all.html
+http://developer.android.com/guide/developing/other-ide.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarMechanics.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.html
+http://developer.android.com/resources/samples/RenderScript/index.html
+http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml-v14/contacts.html
+http://developer.android.com/resources/samples/VoicemailProviderDemo/index.html
+http://developer.android.com/resources/samples/RandomMusicPlayer/index.html
+http://developer.android.com/resources/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.html
+http://developer.android.com/resources/samples/TtsEngine/index.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/index.html
+http://developer.android.com/resources/samples/ApiDemos/res/layout/switches.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Switches.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Hover.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
+http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/8/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.AbstractThreadedSyncAdapter.html
+http://developer.android.com/sdk/api_diff/8/changes/android.accounts.AccountManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/8/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/8/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/8/changes/android.test.ActivityInstrumentationTestCase2.html
+http://developer.android.com/sdk/api_diff/8/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.app.ActivityManager.ProcessErrorStateInfo.html
+http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Document.html
+http://developer.android.com/sdk/api_diff/8/changes/android.app.AlarmManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.gesture.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.net.http.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.speech.tts.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.text.util.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/8/changes/android.text.AndroidCharacter.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/8/changes/java.util.regex.Matcher.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.html
+http://developer.android.com/sdk/api_diff/8/changes/java.util.ArrayList.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Attr.html
+http://developer.android.com/sdk/api_diff/8/changes/android.media.SoundPool.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.Contacts.PresenceColumns.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.ContactsContract.StatusColumns.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.BaseExpandableListAdapter.html
+http://developer.android.com/sdk/api_diff/8/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.AudioColumns.html
+http://developer.android.com/sdk/api_diff/8/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.Browser.html
+http://developer.android.com/sdk/api_diff/8/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/8/changes/android.os.Bundle.html
+http://developer.android.com/sdk/api_diff/8/changes/android.webkit.CacheManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.CallLog.Calls.html
+http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Images.Thumbnails.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Video.Thumbnails.html
+http://developer.android.com/sdk/api_diff/8/changes/java.nio.charset.Charset.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.ComponentName.html
+http://developer.android.com/sdk/api_diff/8/changes/android.gesture.Gesture.html
+http://developer.android.com/sdk/api_diff/8/changes/android.gesture.GesturePoint.html
+http://developer.android.com/sdk/api_diff/8/changes/android.gesture.GestureStroke.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Node.html
+http://developer.android.com/sdk/api_diff/8/changes/android.database.sqlite.SQLiteProgram.html
+http://developer.android.com/sdk/api_diff/8/changes/java.util.regex.Pattern.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.ComponentInfo.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/8/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/8/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.ContactsContract.Groups.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.ContactsContract.RawContacts.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/8/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/8/changes/android.R.id.html
+http://developer.android.com/sdk/api_diff/8/changes/android.R.anim.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_dalvik.bytecode.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/8/changes/java.net.DatagramSocketImpl.html
+http://developer.android.com/sdk/api_diff/8/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/8/changes/dalvik.system.Zygote.html
+http://developer.android.com/sdk/api_diff/8/changes/dalvik.system.VMDebug.html
+http://developer.android.com/sdk/api_diff/8/changes/android.content.SyncResult.html
+http://developer.android.com/sdk/api_diff/8/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/8/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.Display.html
+http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilder.html
+http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilderFactory.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_org.w3c.dom.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.DOMException.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.DOMImplementation.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Element.html
+http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Entity.html
+http://developer.android.com/sdk/api_diff/8/changes/android.util.EventLogTags.html
+http://developer.android.com/sdk/api_diff/8/changes/android.media.ExifInterface.html
+http://developer.android.com/sdk/api_diff/8/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.ViewGroup.LayoutParams.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.GestureDetector.html
+http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/8/changes/android.net.SSLCertificateSocketFactory.html
+http://developer.android.com/sdk/api_diff/8/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.NamedNodeMap.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.SAXParser.html
+http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.SAXParserFactory.html
+http://developer.android.com/sdk/api_diff/8/changes/android.net.http.SslCertificate.html
+http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Text.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.VelocityTracker.html
+http://developer.android.com/sdk/api_diff/8/changes/android.opengl.GLSurfaceView.html
+http://developer.android.com/sdk/api_diff/8/changes/android.view.HapticFeedbackConstants.html
+http://developer.android.com/sdk/api_diff/8/changes/java.util.HashMap.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.ImageView.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.TabWidget.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_java.net.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_java.nio.charset.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_java.util.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_java.util.regex.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_javax.xml.html
+http://developer.android.com/sdk/api_diff/8/changes/pkg_javax.xml.parsers.html
+http://developer.android.com/sdk/api_diff/8/changes/android.graphics.PixelFormat.html
+http://developer.android.com/sdk/api_diff/8/changes/android.webkit.JsResult.html
+http://developer.android.com/sdk/api_diff/8/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/8/changes/android.util.Log.html
+http://developer.android.com/sdk/api_diff/8/changes/android.opengl.Matrix.html
+http://developer.android.com/sdk/api_diff/8/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/8/changes/android.media.MediaScannerConnection.html
+http://developer.android.com/sdk/api_diff/8/changes/android.media.MediaScannerConnection.MediaScannerConnectionClient.html
+http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.Playlists.Members.html
+http://developer.android.com/sdk/api_diff/8/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/8/changes/dalvik.bytecode.Opcodes.html
+http://developer.android.com/sdk/api_diff/8/changes/android.os.PowerManager.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/8/changes/android.widget.VideoView.html
+http://developer.android.com/sdk/api_diff/8/changes/android.text.util.Rfc822Tokenizer.html
+http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Sensor.html
+http://developer.android.com/sdk/api_diff/8/changes/javax.xml.XMLConstants.html
+http://developer.android.com/sdk/api_diff/8/changes/jdiff_statistics.html
+http://developer.android.com/resources/samples/SoftKeyboard/index.html
+http://developer.android.com/sdk/api_diff/11/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/11/changes/fields_index_all.html
+http://developer.android.com/guide/google/gcm/client-javadoc/com/google/android/gcm/package-tree.html
+http://developer.android.com/guide/google/gcm/client-javadoc/deprecated-list.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index-all.html
+http://developer.android.com/guide/google/gcm/client-javadoc/help-doc.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/package-summary.html
+http://developer.android.com/guide/google/gcm/client-javadoc/allclasses-noframe.html
+http://developer.android.com/sdk/api_diff/12/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.provider.Browser.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/12/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.DownloadManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.InputDevice.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.ActivityManager.RecentTaskInfo.html
+http://developer.android.com/sdk/api_diff/12/changes/android.appwidget.AppWidgetProviderInfo.html
+http://developer.android.com/sdk/api_diff/12/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmErrorEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmInfoEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.DownloadManager.Request.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/12/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/fields_index_changes.html
+http://developer.android.com/resources/samples/SpinnerTest/index.html
+http://developer.android.com/resources/samples/Spinner/index.html
+http://developer.android.com/sdk/api_diff/13/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/13/changes/fields_index_all.html
+http://developer.android.com/guide/appendix/install-location.html
+http://developer.android.com/sdk/api_diff/10/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.drm.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.http.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.sip.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.method.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.animation.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/12/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/12/changes/android.drm.DrmManagerClient.OnEventListener.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebView.PictureListener.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.DebugUtils.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.TrafficStats.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebSettings.LayoutAlgorithm.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.TimeUtils.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.InputEvent.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.MotionEvent.PointerCoords.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.InputDevice.MotionRange.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.format.Formatter.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.inputmethod.InputMethodSubtype.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.CookieManager.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebHistoryItem.html
+http://developer.android.com/sdk/api_diff/12/changes/android.graphics.Camera.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.http.SslCertificate.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.EventLog.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.StateSet.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.method.MovementMethod.html
+http://developer.android.com/sdk/api_diff/12/changes/android.util.Xml.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.FragmentBreadCrumbs.html
+http://developer.android.com/sdk/api_diff/12/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/12/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.sip.SipProfile.Builder.html
+http://developer.android.com/sdk/api_diff/12/changes/android.net.sip.SipProfile.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/12/changes/android.widget.DatePicker.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.DialogFragment.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.method.BaseMovementMethod.html
+http://developer.android.com/sdk/api_diff/12/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/12/changes/android.text.SpannableStringBuilder.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/12/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/12/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/12/changes/android.animation.ValueAnimator.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/12/changes/android.os.Bundle.html
+http://developer.android.com/sdk/api_diff/12/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/12/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/12/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_all.html
+http://developer.android.com/training/tutorials/views/hello-tablelayout.html
+http://developer.android.com/reference/renderscript/rs__mesh_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__program_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__graphics_8rsh_source.html
+http://developer.android.com/reference/renderscript/rs__mesh_8rsh.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/constructors_index_changes.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/package-tree.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
+http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
+http://developer.android.com/sdk/api_diff/5/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginList.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.location.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.telephony.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.format.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.animation.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioFormat.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.BatteryManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
+http://developer.android.com/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
+http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.NotificationManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.VideoView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
+http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.format.DateUtils.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.TextPaint.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Dialog.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.Plugin.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.format.Formatter.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginData.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
+http://developer.android.com/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/5/changes/android.os.HandlerThread.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.text.InputType.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.IntentService.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.Window.Callback.html
+http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
+http://developer.android.com/sdk/api_diff/5/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
+http://developer.android.com/sdk/api_diff/5/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceView.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
+http://developer.android.com/sdk/api_diff/5/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMStack.html
+http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.Zygote.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/7/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_changes.html
+http://developer.android.com/reference/renderscript/rs__program_8rsh.html
+http://developer.android.com/sdk/api_diff/8/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/constructors_index_changes.html
+http://developer.android.com/guide/google/gcm/client-javadoc/overview-tree.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?help-doc.html
+http://developer.android.com/guide/google/gcm/client-javadoc/constant-values.html
+http://developer.android.com/shareables/sample_images.zip
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_dialog.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_list.html
+http://developer.android.com/shareables/icon_templates-v4.0.zip
+http://developer.android.com/shareables/icon_templates-v2.3.zip
+http://developer.android.com/shareables/icon_templates-v2.0.zip
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/jdiff_statistics.html
+http://developer.android.com/guide/appendix/api-levels.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.accessibilityservice.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.animation.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.content.res.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.database.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.drm.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.graphics.drawable.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.media.audiofx.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.net.wifi.p2p.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.nfc.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.nfc.tech.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.renderscript.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.security.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.service.textservice.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.accessibility.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.view.textservice.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_junit.framework.html
+http://developer.android.com/sdk/api_diff/16/changes/pkg_junit.runner.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMBaseIntentService.html
+http://developer.android.com/sdk/api_diff/13/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AbsSeekBar.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AdapterViewAnimator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AdapterViewFlipper.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.CalendarView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.CheckedTextView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.FrameLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.Gallery.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.GridLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.ImageView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.LinearLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.RelativeLayout.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.SearchView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.Spinner.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.Switch.html
+http://developer.android.com/sdk/api_diff/16/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.tech.IsoDep.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.res.Resources.html
+http://developer.android.com/sdk/api_diff/6/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/changes-summary.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design_launcher_archive.html
http://developer.android.com/sdk/api_diff/3/changes/jdiff_topleftframe.html
http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_all.html
http://developer.android.com/sdk/api_diff/3/changes/changes-summary.html
-http://developer.android.com/resources/samples/AccessibilityService/src/com/index.html
-http://developer.android.com/reference/dalvik/system/DexClassLoader.html
-http://developer.android.com/reference/dalvik/system/DexFile.html
-http://developer.android.com/reference/dalvik/system/PathClassLoader.html
-http://developer.android.com/reference/dalvik/system/package-descr.html
-http://developer.android.com/reference/org/apache/http/params/CoreConnectionPNames.html
-http://developer.android.com/reference/org/apache/http/params/CoreProtocolPNames.html
-http://developer.android.com/reference/org/apache/http/params/AbstractHttpParams.html
-http://developer.android.com/reference/org/apache/http/params/BasicHttpParams.html
-http://developer.android.com/reference/org/apache/http/params/DefaultedHttpParams.html
-http://developer.android.com/reference/org/apache/http/params/HttpAbstractParamBean.html
-http://developer.android.com/reference/org/apache/http/params/HttpConnectionParamBean.html
-http://developer.android.com/reference/org/apache/http/params/HttpConnectionParams.html
-http://developer.android.com/reference/org/apache/http/params/HttpProtocolParamBean.html
-http://developer.android.com/reference/org/apache/http/params/HttpProtocolParams.html
-http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html
-http://developer.android.com/reference/java/security/Permission.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionPNames.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerPNames.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRoute.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRoutePNames.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnConnectionParamBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParamBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnManagerParams.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnPerRouteBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParamBean.html
-http://developer.android.com/reference/org/apache/http/conn/params/ConnRouteParams.html
-http://developer.android.com/reference/org/apache/http/conn/params/package-descr.html
-http://developer.android.com/reference/android/text/method/MovementMethod.html
-http://developer.android.com/reference/android/text/method/KeyListener.html
-http://developer.android.com/reference/android/text/method/LinkMovementMethod.html
-http://developer.android.com/reference/android/text/method/TransformationMethod.html
-http://developer.android.com/reference/android/text/style/URLSpan.html
-http://developer.android.com/reference/org/apache/http/auth/Credentials.html
-http://developer.android.com/reference/org/apache/http/util/CharArrayBuffer.html
-http://developer.android.com/reference/org/apache/http/auth/AuthenticationException.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/AbstractCookieSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicClientCookie2.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicCommentHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicDomainHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicExpiresHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicMaxAgeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicPathHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BasicSecureHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BestMatchSpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/BrowserCompatSpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/CookieSpecBase.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/DateUtils.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDomainHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/NetscapeDraftSpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109DomainHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109Spec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109SpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2109VersionHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965Spec.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965SpecFactory.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.html
-http://developer.android.com/reference/org/apache/http/impl/cookie/DateParseException.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieAttributeHandler.html
-http://developer.android.com/reference/android/webkit/DownloadListener.html
-http://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback.html
-http://developer.android.com/reference/android/webkit/Plugin.PreferencesClickHandler.html
-http://developer.android.com/reference/android/webkit/PluginStub.html
-http://developer.android.com/reference/android/webkit/UrlInterceptHandler.html
-http://developer.android.com/reference/android/webkit/ValueCallback.html
-http://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback.html
-http://developer.android.com/reference/android/webkit/WebIconDatabase.IconListener.html
-http://developer.android.com/reference/android/webkit/WebStorage.QuotaUpdater.html
-http://developer.android.com/reference/android/webkit/WebView.PictureListener.html
-http://developer.android.com/reference/android/webkit/CacheManager.html
-http://developer.android.com/reference/android/webkit/CacheManager.CacheResult.html
-http://developer.android.com/reference/android/webkit/CookieManager.html
-http://developer.android.com/reference/android/webkit/CookieSyncManager.html
-http://developer.android.com/reference/android/webkit/DateSorter.html
-http://developer.android.com/reference/android/webkit/HttpAuthHandler.html
-http://developer.android.com/reference/android/webkit/JsPromptResult.html
-http://developer.android.com/reference/android/webkit/JsResult.html
-http://developer.android.com/reference/android/webkit/MimeTypeMap.html
-http://developer.android.com/reference/android/webkit/Plugin.html
-http://developer.android.com/reference/android/webkit/PluginData.html
-http://developer.android.com/reference/android/webkit/PluginList.html
-http://developer.android.com/reference/android/webkit/SslErrorHandler.html
-http://developer.android.com/reference/android/webkit/UrlInterceptRegistry.html
-http://developer.android.com/reference/android/webkit/URLUtil.html
-http://developer.android.com/reference/android/webkit/WebBackForwardList.html
-http://developer.android.com/reference/android/webkit/WebHistoryItem.html
-http://developer.android.com/reference/android/webkit/WebIconDatabase.html
-http://developer.android.com/reference/android/webkit/WebView.HitTestResult.html
-http://developer.android.com/reference/android/webkit/WebView.WebViewTransport.html
-http://developer.android.com/reference/android/webkit/WebViewDatabase.html
-http://developer.android.com/reference/android/webkit/WebSettings.LayoutAlgorithm.html
-http://developer.android.com/reference/android/webkit/WebSettings.PluginState.html
-http://developer.android.com/reference/android/webkit/WebSettings.RenderPriority.html
-http://developer.android.com/reference/android/webkit/WebSettings.TextSize.html
-http://developer.android.com/reference/android/webkit/WebSettings.ZoomDensity.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultConnectionReuseStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpRequestFactory.html
-http://developer.android.com/reference/org/apache/http/impl/DefaultHttpResponseFactory.html
-http://developer.android.com/reference/org/apache/http/impl/EnglishReasonPhraseCatalog.html
-http://developer.android.com/reference/org/apache/http/impl/HttpConnectionMetricsImpl.html
-http://developer.android.com/reference/org/apache/http/impl/NoConnectionReuseStrategy.html
-http://developer.android.com/reference/org/apache/http/impl/package-descr.html
-http://developer.android.com/reference/org/apache/http/message/BasicHttpEntityEnclosingRequest.html
-http://developer.android.com/reference/org/apache/http/message/BasicHttpRequest.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpDelete.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpGet.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpHead.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpOptions.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpPut.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpRequestBase.html
-http://developer.android.com/reference/org/apache/http/client/methods/HttpTrace.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectableChannel.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractInterruptibleChannel.html
-http://developer.android.com/reference/java/nio/channels/spi/SelectorProvider.html
-http://developer.android.com/reference/java/security/InvalidAlgorithmParameterException.html
-http://developer.android.com/reference/org/apache/http/impl/io/ChunkedOutputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthOutputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/IdentityOutputStream.html
-http://developer.android.com/reference/javax/crypto/CipherOutputStream.html
-http://developer.android.com/reference/java/security/DigestOutputStream.html
-http://developer.android.com/reference/java/util/jar/JarOutputStream.html
-http://developer.android.com/reference/javax/xml/package-descr.html
-http://developer.android.com/reference/org/apache/http/conn/routing/HttpRouteDirector.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.html
-http://developer.android.com/reference/org/apache/http/conn/routing/BasicRouteDirector.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.LayerType.html
-http://developer.android.com/reference/org/apache/http/conn/routing/RouteInfo.TunnelType.html
-http://developer.android.com/reference/android/text/style/AbsoluteSizeSpan.html
-http://developer.android.com/reference/android/accessibilityservice/AccessibilityServiceInfo.html
-http://developer.android.com/reference/android/accounts/Account.html
-http://developer.android.com/reference/android/accounts/AccountAuthenticatorResponse.html
-http://developer.android.com/reference/android/location/Address.html
-http://developer.android.com/reference/android/text/style/AlignmentSpan.Standard.html
-http://developer.android.com/reference/android/accounts/AuthenticatorDescription.html
-http://developer.android.com/reference/android/text/style/BackgroundColorSpan.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.html
-http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
-http://developer.android.com/reference/android/text/style/BulletSpan.html
-http://developer.android.com/reference/android/text/style/ForegroundColorSpan.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.Standard.html
-http://developer.android.com/reference/android/location/Location.html
-http://developer.android.com/reference/android/text/style/QuoteSpan.html
-http://developer.android.com/reference/android/text/style/RelativeSizeSpan.html
-http://developer.android.com/reference/android/text/style/ScaleXSpan.html
-http://developer.android.com/reference/android/text/style/StrikethroughSpan.html
-http://developer.android.com/reference/android/text/style/StyleSpan.html
-http://developer.android.com/reference/android/text/style/SubscriptSpan.html
-http://developer.android.com/reference/android/text/style/SuperscriptSpan.html
-http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html
-http://developer.android.com/reference/android/text/style/TypefaceSpan.html
-http://developer.android.com/reference/android/text/style/UnderlineSpan.html
-http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
-http://developer.android.com/reference/java/util/UUID.html
-http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html
-http://developer.android.com/reference/android/inputmethodservice/Keyboard.html
-http://developer.android.com/reference/android/appwidget/AppWidgetHostView.html
-http://developer.android.com/reference/android/inputmethodservice/ExtractEditText.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.html
-http://developer.android.com/reference/android/accounts/AccountAuthenticatorActivity.html
-http://developer.android.com/reference/android/text/method/CharacterPickerDialog.html
-http://developer.android.com/reference/java/util/logging/Filter.html
-http://developer.android.com/reference/java/util/logging/LoggingMXBean.html
-http://developer.android.com/reference/java/util/logging/ConsoleHandler.html
-http://developer.android.com/reference/java/util/logging/ErrorManager.html
-http://developer.android.com/reference/java/util/logging/FileHandler.html
-http://developer.android.com/reference/java/util/logging/Formatter.html
-http://developer.android.com/reference/java/util/logging/Handler.html
-http://developer.android.com/reference/java/util/logging/Level.html
-http://developer.android.com/reference/java/util/logging/Logger.html
-http://developer.android.com/reference/java/util/logging/LoggingPermission.html
-http://developer.android.com/reference/java/util/logging/LogManager.html
-http://developer.android.com/reference/java/util/logging/LogRecord.html
-http://developer.android.com/reference/java/util/logging/MemoryHandler.html
-http://developer.android.com/reference/java/util/logging/SimpleFormatter.html
-http://developer.android.com/reference/java/util/logging/SocketHandler.html
-http://developer.android.com/reference/java/util/logging/StreamHandler.html
-http://developer.android.com/reference/java/util/logging/XMLFormatter.html
-http://developer.android.com/reference/junit/framework/TestResult.html
-http://developer.android.com/reference/junit/framework/Test.html
-http://developer.android.com/reference/java/security/PrivilegedAction.html
-http://developer.android.com/reference/java/util/Enumeration.html
-http://developer.android.com/reference/java/util/EventListener.html
-http://developer.android.com/reference/java/util/Formattable.html
-http://developer.android.com/reference/java/util/ListIterator.html
-http://developer.android.com/reference/java/util/Observer.html
-http://developer.android.com/reference/java/util/RandomAccess.html
-http://developer.android.com/reference/java/util/SortedMap.html
-http://developer.android.com/reference/java/util/AbstractList.html
-http://developer.android.com/reference/java/util/AbstractMap.html
-http://developer.android.com/reference/java/util/AbstractMap.SimpleEntry.html
-http://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry.html
-http://developer.android.com/reference/java/util/AbstractQueue.html
-http://developer.android.com/reference/java/util/AbstractSequentialList.html
-http://developer.android.com/reference/java/util/BitSet.html
-http://developer.android.com/reference/java/util/Currency.html
-http://developer.android.com/reference/java/util/Dictionary.html
-http://developer.android.com/reference/java/util/EnumMap.html
-http://developer.android.com/reference/java/util/EnumSet.html
-http://developer.android.com/reference/java/util/EventListenerProxy.html
-http://developer.android.com/reference/java/util/EventObject.html
-http://developer.android.com/reference/java/util/FormattableFlags.html
-http://developer.android.com/reference/java/util/HashMap.html
-http://developer.android.com/reference/java/util/HashSet.html
-http://developer.android.com/reference/java/util/Hashtable.html
-http://developer.android.com/reference/java/util/IdentityHashMap.html
-http://developer.android.com/reference/java/util/LinkedHashMap.html
-http://developer.android.com/reference/java/util/LinkedHashSet.html
-http://developer.android.com/reference/java/util/LinkedList.html
-http://developer.android.com/reference/java/util/ListResourceBundle.html
-http://developer.android.com/reference/java/util/Observable.html
-http://developer.android.com/reference/java/util/PropertyPermission.html
-http://developer.android.com/reference/java/util/PropertyResourceBundle.html
-http://developer.android.com/reference/java/util/Random.html
-http://developer.android.com/reference/java/util/ResourceBundle.html
-http://developer.android.com/reference/java/util/ResourceBundle.Control.html
-http://developer.android.com/reference/java/util/Scanner.html
-http://developer.android.com/reference/java/util/ServiceLoader.html
-http://developer.android.com/reference/java/util/SimpleTimeZone.html
-http://developer.android.com/reference/java/util/Stack.html
-http://developer.android.com/reference/java/util/StringTokenizer.html
-http://developer.android.com/reference/java/util/Timer.html
-http://developer.android.com/reference/java/util/TimerTask.html
-http://developer.android.com/reference/java/util/TreeMap.html
-http://developer.android.com/reference/java/util/TreeSet.html
-http://developer.android.com/reference/java/util/Vector.html
-http://developer.android.com/reference/java/util/WeakHashMap.html
-http://developer.android.com/reference/java/util/Formatter.BigDecimalLayoutForm.html
-http://developer.android.com/reference/java/util/EmptyStackException.html
-http://developer.android.com/reference/java/util/FormatterClosedException.html
-http://developer.android.com/reference/java/util/InputMismatchException.html
-http://developer.android.com/reference/java/util/MissingResourceException.html
-http://developer.android.com/reference/java/util/TooManyListenersException.html
-http://developer.android.com/reference/java/util/ServiceConfigurationError.html
-http://developer.android.com/reference/java/security/BasicPermission.html
-http://developer.android.com/reference/java/security/PermissionCollection.html
-http://developer.android.com/reference/java/security/Guard.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieIdentityComparator.html
-http://developer.android.com/reference/org/apache/http/cookie/CookiePathComparator.html
-http://developer.android.com/reference/android/webkit/package-descr.html
-http://developer.android.com/reference/android/test/UiThreadTest.html
-http://developer.android.com/reference/org/apache/http/client/HttpClient.html
-http://developer.android.com/reference/org/apache/http/entity/AbstractHttpEntity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html
-http://developer.android.com/reference/java/lang/reflect/AnnotatedElement.html
-http://developer.android.com/reference/java/lang/reflect/GenericDeclaration.html
-http://developer.android.com/reference/java/lang/reflect/Type.html
-http://developer.android.com/reference/java/lang/annotation/Annotation.html
-http://developer.android.com/reference/java/lang/reflect/Constructor.html
-http://developer.android.com/reference/java/lang/reflect/Field.html
-http://developer.android.com/reference/java/lang/reflect/Method.html
-http://developer.android.com/reference/java/security/ProtectionDomain.html
-http://developer.android.com/reference/java/lang/reflect/TypeVariable.html
-http://developer.android.com/reference/java/lang/reflect/Modifier.html
-http://developer.android.com/reference/java/security/Policy.html
-http://developer.android.com/reference/javax/security/auth/Destroyable.html
-http://developer.android.com/reference/javax/security/auth/AuthPermission.html
-http://developer.android.com/reference/javax/security/auth/PrivateCredentialPermission.html
-http://developer.android.com/reference/javax/security/auth/Subject.html
-http://developer.android.com/reference/javax/security/auth/SubjectDomainCombiner.html
-http://developer.android.com/reference/javax/security/auth/DestroyFailedException.html
-http://developer.android.com/reference/javax/security/auth/package-descr.html
-http://developer.android.com/reference/org/apache/http/client/methods/AbortableHttpRequest.html
-http://developer.android.com/reference/android/view/inputmethod/package-descr.html
-http://developer.android.com/reference/org/apache/http/client/methods/package-descr.html
-http://developer.android.com/reference/org/apache/http/cookie/SetCookie2.html
-http://developer.android.com/reference/org/apache/http/cookie/ClientCookie.html
-http://developer.android.com/reference/org/apache/http/cookie/Cookie.html
-http://developer.android.com/reference/org/apache/http/cookie/SetCookie.html
-http://developer.android.com/reference/java/security/Certificate.html
-http://developer.android.com/reference/java/security/DomainCombiner.html
-http://developer.android.com/reference/java/security/KeyStore.Entry.html
-http://developer.android.com/reference/java/security/KeyStore.LoadStoreParameter.html
-http://developer.android.com/reference/java/security/KeyStore.ProtectionParameter.html
-http://developer.android.com/reference/java/security/Policy.Parameters.html
-http://developer.android.com/reference/java/security/PrivateKey.html
-http://developer.android.com/reference/java/security/PrivilegedExceptionAction.html
-http://developer.android.com/reference/java/security/AccessControlContext.html
-http://developer.android.com/reference/java/security/AccessController.html
-http://developer.android.com/reference/java/security/AlgorithmParameterGenerator.html
-http://developer.android.com/reference/java/security/AlgorithmParameterGeneratorSpi.html
-http://developer.android.com/reference/java/security/AlgorithmParameters.html
-http://developer.android.com/reference/java/security/AlgorithmParametersSpi.html
-http://developer.android.com/reference/java/security/AllPermission.html
-http://developer.android.com/reference/java/security/AuthProvider.html
-http://developer.android.com/reference/java/security/CodeSigner.html
-http://developer.android.com/reference/java/security/CodeSource.html
-http://developer.android.com/reference/java/security/DigestInputStream.html
-http://developer.android.com/reference/java/security/GuardedObject.html
-http://developer.android.com/reference/java/security/Identity.html
-http://developer.android.com/reference/java/security/IdentityScope.html
-http://developer.android.com/reference/java/security/KeyFactory.html
-http://developer.android.com/reference/java/security/KeyFactorySpi.html
-http://developer.android.com/reference/java/security/KeyPair.html
-http://developer.android.com/reference/java/security/KeyPairGenerator.html
-http://developer.android.com/reference/java/security/KeyPairGeneratorSpi.html
-http://developer.android.com/reference/java/security/KeyRep.html
-http://developer.android.com/reference/java/security/KeyStore.html
-http://developer.android.com/reference/java/security/KeyStore.Builder.html
-http://developer.android.com/reference/java/security/KeyStore.CallbackHandlerProtection.html
-http://developer.android.com/reference/java/security/KeyStore.PasswordProtection.html
-http://developer.android.com/reference/java/security/KeyStore.PrivateKeyEntry.html
-http://developer.android.com/reference/java/security/KeyStore.SecretKeyEntry.html
-http://developer.android.com/reference/java/security/KeyStore.TrustedCertificateEntry.html
-http://developer.android.com/reference/java/security/KeyStoreSpi.html
-http://developer.android.com/reference/java/security/MessageDigest.html
-http://developer.android.com/reference/java/security/MessageDigestSpi.html
-http://developer.android.com/reference/java/security/Permissions.html
-http://developer.android.com/reference/java/security/PolicySpi.html
-http://developer.android.com/reference/java/security/Provider.html
-http://developer.android.com/reference/java/security/Provider.Service.html
-http://developer.android.com/reference/java/security/SecureClassLoader.html
-http://developer.android.com/reference/java/security/SecureRandom.html
-http://developer.android.com/reference/java/security/SecureRandomSpi.html
-http://developer.android.com/reference/java/security/Security.html
-http://developer.android.com/reference/java/security/SecurityPermission.html
-http://developer.android.com/reference/java/security/Signature.html
-http://developer.android.com/reference/java/security/SignatureSpi.html
-http://developer.android.com/reference/java/security/SignedObject.html
-http://developer.android.com/reference/java/security/Signer.html
-http://developer.android.com/reference/java/security/Timestamp.html
-http://developer.android.com/reference/java/security/UnresolvedPermission.html
-http://developer.android.com/reference/java/security/KeyRep.Type.html
-http://developer.android.com/reference/java/security/AccessControlException.html
-http://developer.android.com/reference/java/security/DigestException.html
-http://developer.android.com/reference/java/security/InvalidKeyException.html
-http://developer.android.com/reference/java/security/KeyException.html
-http://developer.android.com/reference/java/security/KeyManagementException.html
-http://developer.android.com/reference/java/security/KeyStoreException.html
-http://developer.android.com/reference/java/security/NoSuchAlgorithmException.html
-http://developer.android.com/reference/java/security/NoSuchProviderException.html
-http://developer.android.com/reference/java/security/PrivilegedActionException.html
-http://developer.android.com/reference/java/security/ProviderException.html
-http://developer.android.com/reference/java/security/SignatureException.html
-http://developer.android.com/reference/java/security/UnrecoverableEntryException.html
-http://developer.android.com/reference/java/security/UnrecoverableKeyException.html
-http://developer.android.com/reference/java/lang/reflect/ReflectPermission.html
-http://developer.android.com/reference/java/sql/SQLPermission.html
-http://developer.android.com/reference/javax/net/ssl/SSLPermission.html
-http://developer.android.com/reference/android/provider/package-descr.html
-http://developer.android.com/reference/org/apache/http/client/CircularRedirectException.html
-http://developer.android.com/reference/org/apache/http/auth/InvalidCredentialsException.html
-http://developer.android.com/reference/org/apache/http/cookie/MalformedCookieException.html
-http://developer.android.com/reference/org/apache/http/client/NonRepeatableRequestException.html
-http://developer.android.com/reference/org/apache/http/client/RedirectException.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/index.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieOrigin.html
-http://developer.android.com/resources/tutorials/views/hello-formstuff.html
-http://developer.android.com/reference/org/apache/http/message/HeaderValueFormatter.html
-http://developer.android.com/reference/org/apache/http/message/HeaderValueParser.html
-http://developer.android.com/reference/org/apache/http/message/LineFormatter.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeader.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderElement.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderElementIterator.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueFormatter.html
-http://developer.android.com/reference/org/apache/http/message/BasicHeaderValueParser.html
-http://developer.android.com/reference/org/apache/http/message/BasicHttpResponse.html
-http://developer.android.com/reference/org/apache/http/message/BasicLineFormatter.html
-http://developer.android.com/reference/org/apache/http/message/BasicLineParser.html
-http://developer.android.com/reference/org/apache/http/message/BasicNameValuePair.html
-http://developer.android.com/reference/org/apache/http/message/BasicRequestLine.html
-http://developer.android.com/reference/org/apache/http/message/BasicStatusLine.html
-http://developer.android.com/reference/org/apache/http/message/BasicTokenIterator.html
-http://developer.android.com/reference/org/apache/http/message/BufferedHeader.html
-http://developer.android.com/reference/org/apache/http/message/ParserCursor.html
-http://developer.android.com/reference/javax/crypto/SecretKey.html
-http://developer.android.com/reference/javax/crypto/Cipher.html
-http://developer.android.com/reference/javax/crypto/CipherInputStream.html
-http://developer.android.com/reference/javax/crypto/CipherSpi.html
-http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html
-http://developer.android.com/reference/javax/crypto/ExemptionMechanism.html
-http://developer.android.com/reference/javax/crypto/ExemptionMechanismSpi.html
-http://developer.android.com/reference/javax/crypto/KeyAgreement.html
-http://developer.android.com/reference/javax/crypto/KeyAgreementSpi.html
-http://developer.android.com/reference/javax/crypto/KeyGenerator.html
-http://developer.android.com/reference/javax/crypto/KeyGeneratorSpi.html
-http://developer.android.com/reference/javax/crypto/Mac.html
-http://developer.android.com/reference/javax/crypto/MacSpi.html
-http://developer.android.com/reference/javax/crypto/NullCipher.html
-http://developer.android.com/reference/javax/crypto/SealedObject.html
-http://developer.android.com/reference/javax/crypto/SecretKeyFactory.html
-http://developer.android.com/reference/javax/crypto/SecretKeyFactorySpi.html
-http://developer.android.com/reference/javax/crypto/BadPaddingException.html
-http://developer.android.com/reference/javax/crypto/ExemptionMechanismException.html
-http://developer.android.com/reference/javax/crypto/IllegalBlockSizeException.html
-http://developer.android.com/reference/javax/crypto/NoSuchPaddingException.html
-http://developer.android.com/reference/javax/crypto/ShortBufferException.html
-http://developer.android.com/reference/javax/crypto/package-descr.html
-http://developer.android.com/reference/org/apache/http/client/UserTokenHandler.html
-http://developer.android.com/reference/org/apache/http/io/HttpMessageWriter.html
-http://developer.android.com/reference/org/apache/http/io/HttpTransportMetrics.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionOutputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/io/SocketOutputBuffer.html
-http://developer.android.com/reference/org/apache/http/auth/AuthScope.html
-http://developer.android.com/reference/org/apache/http/protocol/BasicHttpProcessor.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpProcessor.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestConnControl.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestContent.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestDate.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestExpectContinue.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestTargetHost.html
-http://developer.android.com/reference/org/apache/http/protocol/RequestUserAgent.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpec.html
-http://developer.android.com/resources/samples/AccessibilityService/res/raw/index.html
-http://developer.android.com/resources/samples/AccessibilityService/res/values/index.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpecFactory.html
-http://developer.android.com/reference/org/apache/http/auth/AuthSchemeFactory.html
-http://developer.android.com/reference/org/apache/http/auth/AUTH.html
-http://developer.android.com/reference/org/apache/http/auth/AuthSchemeRegistry.html
-http://developer.android.com/reference/org/apache/http/auth/AuthState.html
-http://developer.android.com/reference/org/apache/http/auth/BasicUserPrincipal.html
-http://developer.android.com/reference/org/apache/http/auth/NTCredentials.html
-http://developer.android.com/reference/org/apache/http/auth/NTUserPrincipal.html
-http://developer.android.com/reference/org/apache/http/auth/UsernamePasswordCredentials.html
-http://developer.android.com/resources/tutorials/views/hello-tablelayout.html
-http://developer.android.com/resources/tutorials/views/hello-relativelayout.html
-http://developer.android.com/reference/org/apache/http/impl/conn/tsccm/package-descr.html
-http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html
-http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html
-http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html
-http://developer.android.com/resources/tutorials/notepad/notepad-extra-credit.html
-http://developer.android.com/resources/samples/BluetoothChat/res/index.html
-http://developer.android.com/resources/samples/BluetoothChat/src/index.html
-http://developer.android.com/resources/samples/BluetoothChat/AndroidManifest.html
-http://developer.android.com/reference/javax/xml/transform/stream/StreamResult.html
-http://developer.android.com/reference/org/apache/http/cookie/CookieSpecRegistry.html
-http://developer.android.com/reference/android/text/style/AlignmentSpan.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.html
-http://developer.android.com/reference/android/text/style/LeadingMarginSpan.LeadingMarginSpan2.html
-http://developer.android.com/reference/android/text/style/LineBackgroundSpan.html
-http://developer.android.com/reference/android/text/style/LineHeightSpan.html
-http://developer.android.com/reference/android/text/style/LineHeightSpan.WithDensity.html
-http://developer.android.com/reference/android/text/style/ParagraphStyle.html
-http://developer.android.com/reference/android/text/style/TabStopSpan.html
-http://developer.android.com/reference/android/text/style/UpdateAppearance.html
-http://developer.android.com/reference/android/text/style/UpdateLayout.html
-http://developer.android.com/reference/android/text/style/WrapTogetherSpan.html
-http://developer.android.com/reference/android/text/style/CharacterStyle.html
-http://developer.android.com/reference/android/text/style/ClickableSpan.html
-http://developer.android.com/reference/android/text/style/DrawableMarginSpan.html
-http://developer.android.com/reference/android/text/style/DynamicDrawableSpan.html
-http://developer.android.com/reference/android/text/style/IconMarginSpan.html
-http://developer.android.com/reference/android/text/style/ImageSpan.html
-http://developer.android.com/reference/android/text/style/MaskFilterSpan.html
-http://developer.android.com/reference/android/text/style/MetricAffectingSpan.html
-http://developer.android.com/reference/android/text/style/RasterizerSpan.html
-http://developer.android.com/reference/android/text/style/ReplacementSpan.html
-http://developer.android.com/reference/android/text/style/TabStopSpan.Standard.html
-http://developer.android.com/reference/java/security/spec/AlgorithmParameterSpec.html
-http://developer.android.com/reference/java/security/spec/ECField.html
-http://developer.android.com/reference/java/security/spec/KeySpec.html
-http://developer.android.com/reference/java/security/spec/DSAPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/DSAPublicKeySpec.html
-http://developer.android.com/reference/java/security/spec/ECFieldF2m.html
-http://developer.android.com/reference/java/security/spec/ECFieldFp.html
-http://developer.android.com/reference/java/security/spec/ECGenParameterSpec.html
-http://developer.android.com/reference/java/security/spec/ECPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/ECPublicKeySpec.html
-http://developer.android.com/reference/java/security/spec/EllipticCurve.html
-http://developer.android.com/reference/java/security/spec/EncodedKeySpec.html
-http://developer.android.com/reference/java/security/spec/MGF1ParameterSpec.html
-http://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec.html
-http://developer.android.com/reference/java/security/spec/PSSParameterSpec.html
-http://developer.android.com/reference/java/security/spec/RSAKeyGenParameterSpec.html
-http://developer.android.com/reference/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAOtherPrimeInfo.html
-http://developer.android.com/reference/java/security/spec/RSAPrivateCrtKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAPrivateKeySpec.html
-http://developer.android.com/reference/java/security/spec/RSAPublicKeySpec.html
-http://developer.android.com/reference/java/security/spec/X509EncodedKeySpec.html
-http://developer.android.com/reference/java/security/spec/InvalidKeySpecException.html
-http://developer.android.com/reference/java/security/spec/InvalidParameterSpecException.html
-http://developer.android.com/reference/java/security/spec/package-descr.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.ValueSanitizer.html
-http://developer.android.com/reference/android/net/Credentials.html
-http://developer.android.com/reference/android/net/LocalServerSocket.html
-http://developer.android.com/reference/android/net/LocalSocket.html
-http://developer.android.com/reference/android/net/LocalSocketAddress.html
-http://developer.android.com/reference/android/net/MailTo.html
-http://developer.android.com/reference/android/net/Proxy.html
-http://developer.android.com/reference/android/net/SSLCertificateSocketFactory.html
-http://developer.android.com/reference/android/net/SSLSessionCache.html
-http://developer.android.com/reference/android/net/TrafficStats.html
-http://developer.android.com/reference/android/net/Uri.Builder.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.IllegalCharacterValueSanitizer.html
-http://developer.android.com/reference/android/net/UrlQuerySanitizer.ParameterValuePair.html
-http://developer.android.com/reference/android/net/LocalSocketAddress.Namespace.html
-http://developer.android.com/reference/android/net/NetworkInfo.DetailedState.html
-http://developer.android.com/reference/android/net/NetworkInfo.State.html
-http://developer.android.com/reference/android/net/ParseException.html
-http://developer.android.com/reference/org/apache/http/util/ByteArrayBuffer.html
-http://developer.android.com/reference/org/apache/http/util/EncodingUtils.html
-http://developer.android.com/reference/org/apache/http/util/EntityUtils.html
-http://developer.android.com/reference/org/apache/http/util/ExceptionUtils.html
-http://developer.android.com/reference/org/apache/http/util/LangUtils.html
-http://developer.android.com/reference/org/apache/http/util/VersionInfo.html
-http://developer.android.com/reference/org/apache/http/util/package-descr.html
-http://developer.android.com/reference/javax/xml/transform/dom/DOMResult.html
-http://developer.android.com/reference/javax/xml/transform/sax/SAXResult.html
-http://developer.android.com/sdk/api_diff/9/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_all.html
-http://developer.android.com/reference/java/awt/font/NumericShaper.html
-http://developer.android.com/reference/java/awt/font/TextAttribute.html
-http://developer.android.com/reference/java/util/jar/Pack200.Packer.html
-http://developer.android.com/reference/java/util/jar/Pack200.Unpacker.html
-http://developer.android.com/reference/java/util/jar/Attributes.html
-http://developer.android.com/reference/java/util/jar/Attributes.Name.html
-http://developer.android.com/reference/java/util/jar/JarFile.html
-http://developer.android.com/reference/java/util/jar/JarInputStream.html
-http://developer.android.com/reference/java/util/jar/Manifest.html
-http://developer.android.com/reference/java/util/jar/Pack200.html
-http://developer.android.com/reference/org/apache/http/client/params/AllClientPNames.html
-http://developer.android.com/reference/org/apache/http/client/params/ClientPNames.html
-http://developer.android.com/reference/org/apache/http/client/params/AuthPolicy.html
-http://developer.android.com/reference/org/apache/http/client/params/ClientParamBean.html
-http://developer.android.com/reference/org/apache/http/client/params/CookiePolicy.html
-http://developer.android.com/reference/org/apache/http/client/params/HttpClientParams.html
-http://developer.android.com/reference/org/apache/http/client/params/package-descr.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/AndroidManifest.html
-http://developer.android.com/reference/org/apache/http/cookie/SM.html
-http://developer.android.com/reference/org/apache/http/cookie/package-descr.html
-http://developer.android.com/reference/org/xml/sax/ext/Attributes2.html
-http://developer.android.com/reference/org/xml/sax/ext/Locator2.html
-http://developer.android.com/reference/org/xml/sax/ext/Attributes2Impl.html
-http://developer.android.com/reference/org/xml/sax/ext/Locator2Impl.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestParser.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseParser.html
-http://developer.android.com/reference/android/location/GpsStatus.Listener.html
-http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html
-http://developer.android.com/reference/android/location/GpsSatellite.html
-http://developer.android.com/reference/android/location/GpsStatus.html
-http://developer.android.com/reference/java/lang/ref/PhantomReference.html
-http://developer.android.com/reference/java/lang/ref/Reference.html
-http://developer.android.com/reference/java/lang/ref/SoftReference.html
-http://developer.android.com/reference/java/lang/ref/WeakReference.html
-http://developer.android.com/reference/java/lang/ref/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.inputmethod.EditorInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.inputmethod.InputMethodManager.html
+http://developer.android.com/tools/other-ide.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.ActivityManager.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/3/changes/android.location.LocationManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.LogManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.id.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.AlarmManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/3/changes/pkg_android.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.pm.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.content.res.html
@@ -3010,7 +5246,6 @@
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.provider.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.mock.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.text.html
@@ -3020,11 +5255,682 @@
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.view.animation.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/3/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Animation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.Annotation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.AutoText.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Binder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Browser.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.DialogInterface.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.Instrumentation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.TextUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.Chronometer.html
+http://developer.android.com/sdk/api_diff/3/changes/java.lang.Class.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.KeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Menu.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.RectF.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.CursorWrapper.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.Zygote.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.URLSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.DexFile.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/3/changes/android.preference.DialogPreference.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.TouchUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.location.Location.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.IBinder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewDebug.html
+http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Environment.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Resources.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.Touch.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.content.res.TypedArray.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/3/changes/android.net.NetworkInfo.html
+http://developer.android.com/sdk/api_diff/3/changes/android.app.LauncherActivity.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Looper.html
+http://developer.android.com/sdk/api_diff/3/changes/android.util.TimeUtils.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.GridView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Handler.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.RingtoneManager.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.webkit.URLUtil.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaPlayer.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html
+http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.Level.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ListView.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.SoundPool.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ProgressBar.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.OrientationListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.os.Parcel.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Rect.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
+http://developer.android.com/sdk/api_diff/3/changes/android.util.SparseIntArray.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
+http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorListener.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.Spanned.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.SpanWatcher.html
+http://developer.android.com/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.TextWatcher.html
+http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Transformation.html
+http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
+http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
+http://developer.android.com/sdk/api_diff/3/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.AsyncTaskLoader.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipData.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipData.Item.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ClipDescription.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ComponentCallbacks2.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentProviderClient.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContentResolver.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.ContextWrapper.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.Loader.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityEvent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityNodeInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.accessibility.AccessibilityRecord.html
+http://developer.android.com/sdk/api_diff/6/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/6/changes/pkg_android.view.html
+http://developer.android.com/resources/tutorials/views/hello-linearlayout.html
+http://developer.android.com/sdk/api_diff/7/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/8/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/packages_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/allclasses-frame.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-summary.html
+http://developer.android.com/sdk/api_diff/6/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_all.html
+http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.security.KeyChain.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.AttendeesColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.EventsColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.CalendarContract.RemindersColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.CommonDataKinds.Phone.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.Contacts.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.DataUsageFeedback.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.ContactsContract.PhoneLookupColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.MediaStore.MediaColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/16/changes/android.provider.UserDictionary.Words.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PackageInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.PermissionInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/changes-summary.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/package-tree.html
+http://developer.android.com/guide/google/gcm/server-javadoc/deprecated-list.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index-all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/help-doc.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/package-summary.html
+http://developer.android.com/guide/google/gcm/server-javadoc/allclasses-noframe.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Constants.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Message.Builder.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/MulticastResult.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Result.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/Sender.html
+http://developer.android.com/guide/google/gcm/server-javadoc/com/google/android/gcm/server/InvalidRequestException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteClosable.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteDatabase.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteOpenHelper.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteProgram.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQuery.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteQueryBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.sqlite.SQLiteStatement.html
+http://developer.android.com/sdk/api_diff/16/changes/android.service.textservice.SpellCheckerService.Session.html
+http://developer.android.com/sdk/api_diff/8/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/8/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.OutputFormat.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.AudioEncoder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.AbstractCursor.html
+http://developer.android.com/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityService.html
+http://developer.android.com/sdk/api_diff/16/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ActionMode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ActionProvider.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.ActivityManager.RunningAppProcessInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Notification.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.AllocationBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.wifi.p2p.WifiP2pManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewTreeObserver.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.InstrumentationTestSuite.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.TestSuite.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Program.BaseProgramBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.TriangleMeshBuilder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Allocation.html
+http://developer.android.com/sdk/api_diff/16/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetHostView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.appwidget.AppWidgetProvider.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.Assert.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.AssertionFailedError.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.AssertionFailedError.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.SurfaceTexture.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.AudioRecord.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.AvoidXfermode.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.runner.BaseTestRunner.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Notification.html
+http://developer.android.com/sdk/api_diff/16/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.html
+http://developer.android.com/sdk/api_diff/16/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Camera.html
+http://developer.android.com/sdk/api_diff/16/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.Vibrator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/16/changes/android.animation.LayoutTransition.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.CursorWindow.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.ComparisonFailure.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.ComparisonFailure.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSubtype.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.ContentObservable.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.ContentObserver.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.CookieManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Font.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NdefRecord.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RSSurfaceView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RSTextureView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.KeyCharacterMap.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.Cursor.html
+http://developer.android.com/sdk/api_diff/16/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertexFixedFunction.Constants.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.StrictMode.VmPolicy.Builder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.Display.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.DownloadManager.Request.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmManagerClient.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.Action.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.DrmObjectType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.Playback.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmStore.RightsStatus.html
+http://developer.android.com/sdk/api_diff/16/changes/android.drm.DrmSupportInfo.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.TokenWatcher.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Element.html
+http://developer.android.com/sdk/api_diff/16/changes/junit.framework.TestResult.html
+http://developer.android.com/sdk/api_diff/16/changes/android.text.Html.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.EntryType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.FileA3D.IndexEntry.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Font.Style.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.FormatException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.GeolocationPermissions.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.View.AccessibilityDelegate.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Sampler.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.ToneGenerator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramStore.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NdefMessage.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Program.html
+http://developer.android.com/sdk/api_diff/16/changes/android.nfc.NfcAdapter.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.InputDevice.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.InputEvent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramVertex.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewStub.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.SSLCertificateSocketFactory.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.drawable.GradientDrawable.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.audiofx.Visualizer.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.html
+http://developer.android.com/sdk/api_diff/16/changes/android.app.KeyguardManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.Paint.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.JsResult.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.PixelFormat.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.Process.html
+http://developer.android.com/sdk/api_diff/16/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Mesh.Primitive.html
+http://developer.android.com/sdk/api_diff/16/changes/android.test.mock.MockContext.html
+http://developer.android.com/sdk/api_diff/16/changes/android.net.Uri.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener.html
+http://developer.android.com/sdk/api_diff/16/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/16/changes/android.graphics.PixelXorXfermode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragment.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.EnvMode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramFragmentFixedFunction.Builder.Format.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.ProgramRaster.CullMode.html
+http://developer.android.com/sdk/api_diff/16/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.RenderScriptGL.SurfaceConfig.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/16/changes/android.renderscript.Script.html
+http://developer.android.com/sdk/api_diff/16/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.TextureView.html
+http://developer.android.com/sdk/api_diff/16/changes/android.database.SQLException.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.HierarchyTraceType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewDebug.RecyclerTraceType.html
+http://developer.android.com/sdk/api_diff/16/changes/android.view.ViewPropertyAnimator.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebIconDatabase.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebStorage.html
+http://developer.android.com/sdk/api_diff/16/changes/android.webkit.WebView.HitTestResult.html
+http://developer.android.com/sdk/api_diff/8/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/8/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/8/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/11/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/11/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_all.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMConstants.html
+http://developer.android.com/guide/developing/debugging/index.html
+http://developer.android.com/guide/developing/tools/adb.html
+http://developer.android.com/guide/publishing/app-signing.html
+http://developer.android.com/guide/developing/devices/managing-avds.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/constructors_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/overview-tree.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?index-all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/MulticastResult.html
+http://developer.android.com/guide/google/gcm/server-javadoc/serialized-form.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Constants.html
+http://developer.android.com/guide/google/gcm/server-javadoc/constant-values.html
+http://developer.android.com/sdk/api_diff/13/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/constructors_index_changes.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?index-all.html
+http://developer.android.com/sdk/api_diff/15/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
+http://developer.android.com/sdk/api_diff/6/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/6/changes/classes_index_changes.html
+http://developer.android.com/resources/articles/creating-input-method.html
+http://developer.android.com/sdk/api_diff/10/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/10/changes/fields_index_all.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Result.html
+http://developer.android.com/sdk/api_diff/14/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.AbsListView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityEvent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.accessibility.AccessibilityManager.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.accessibility.html
+http://developer.android.com/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityService.html
+http://developer.android.com/sdk/api_diff/14/changes/android.accessibilityservice.AccessibilityServiceInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.AccessibleObject.html
+http://developer.android.com/sdk/api_diff/14/changes/android.accounts.AccountManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.ActionBar.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.ActionBar.Tab.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ActionMode.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Activity.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.AdapterViewAnimator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.AlertDialog.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Allocation.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.AllocationAdapter.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.AllPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.Animator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Application.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.appwidget.AppWidgetProviderInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.AudioManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.backup.BackupAgent.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_dalvik.system.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.BaseObj.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.BasicPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothAdapter.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.bluetooth.html
+http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothProfile.html
+http://developer.android.com/sdk/api_diff/14/changes/android.bluetooth.BluetoothSocket.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Build.VERSION_CODES.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Byte4.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.provider.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.CallLog.Calls.html
+http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Camera.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.hardware.html
+http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Camera.Parameters.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.Canvas.html
+http://developer.android.com/sdk/api_diff/14/changes/android.preference.CheckBoxPreference.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.Class.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.content.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.ConnectivityManager.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Constructor.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.CommonDataKinds.Photo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Contacts.Photo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.ContactsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.GroupsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.Intents.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.RawContactsEntity.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.SettingsColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.ContactsContract.StatusUpdates.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Debug.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Debug.MemoryInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.admin.DeviceAdminInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.admin.DevicePolicyManager.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.system.DexClassLoader.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.renderscript.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.text.style.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Element.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.ExpandableListView.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Field.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.FieldPacker.html
+http://developer.android.com/sdk/api_diff/14/changes/java.io.FilePermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.FloatEvaluator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Fragment.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.FragmentManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.FragmentManager.BackStackEntry.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.FrameLayout.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.backup.html
+http://developer.android.com/sdk/api_diff/14/changes/android.opengl.GLUtils.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.Gravity.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Handler.html
+http://developer.android.com/sdk/api_diff/14/changes/java.util.logging.Handler.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.InputDevice.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.html
+http://developer.android.com/sdk/api_diff/14/changes/android.inputmethodservice.InputMethodService.InputMethodSessionImpl.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSession.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.inputmethod.InputMethodSubtype.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Int4.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.Intent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.IntentSender.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.IntEvaluator.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.IsoDep.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.KeyEvent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.text.Layout.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.LayoutTransition.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.LinearLayout.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.LiveFolders.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Long4.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Looper.html
+http://developer.android.com/sdk/api_diff/14/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.opengl.Matrix.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaMetadataRetriever.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaPlayer.html
+http://developer.android.com/sdk/api_diff/14/changes/android.media.MediaRecorder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.MediaStore.Audio.AudioColumns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.MenuItem.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.reflect.Method.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.MifareClassic.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.MifareUltralight.html
+http://developer.android.com/sdk/api_diff/14/changes/android.test.mock.MockPackageManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.MotionEvent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.NdefRecord.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcA.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.NfcAdapter.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.nfc.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcB.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcF.html
+http://developer.android.com/sdk/api_diff/14/changes/android.nfc.tech.NfcV.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.util.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Notification.Builder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.ObjectAnimator.html
+http://developer.android.com/sdk/api_diff/14/changes/java.io.ObjectInputStream.html
+http://developer.android.com/sdk/api_diff/14/changes/java.io.ObjectOutputStream.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.OverScroller.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.PackageStats.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.Paint.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.ParcelFileDescriptor.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.system.PathClassLoader.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.Patterns.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.Permission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.PopupMenu.html
+http://developer.android.com/sdk/api_diff/14/changes/android.preference.Preference.html
+http://developer.android.com/sdk/api_diff/14/changes/android.preference.PreferenceActivity.html
+http://developer.android.com/sdk/api_diff/14/changes/javax.security.auth.PrivateCredentialPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.Process.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.PropertyValuesHolder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.color.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.integer.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.string.html
+http://developer.android.com/sdk/api_diff/14/changes/android.R.style.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.RecognizerIntent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.os.RecoverySystem.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.RectF.html
+http://developer.android.com/sdk/api_diff/14/changes/java.lang.ref.ReferenceQueue.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.media.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.RemoteViews.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.RenderScriptGL.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Script.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.Scroller.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.SearchView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.hardware.Sensor.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.Service.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.pm.ServiceInfo.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/14/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short2.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short3.html
+http://developer.android.com/sdk/api_diff/14/changes/android.renderscript.Short4.html
+http://developer.android.com/sdk/api_diff/14/changes/java.net.SocketPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseArray.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseBooleanArray.html
+http://developer.android.com/sdk/api_diff/14/changes/android.util.SparseIntArray.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.SpeechRecognizer.html
+http://developer.android.com/sdk/api_diff/14/changes/android.database.sqlite.SQLiteOpenHelper.html
+http://developer.android.com/sdk/api_diff/14/changes/android.database.sqlite.SQLiteQueryBuilder.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.SSLCertificateSocketFactory.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.http.SslError.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.StackView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.Surface.html
+http://developer.android.com/sdk/api_diff/14/changes/android.graphics.SurfaceTexture.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.preference.html
+http://developer.android.com/sdk/api_diff/14/changes/android.content.SyncAdapterType.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.speech.tts.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.annotation.TestTarget.html
+http://developer.android.com/sdk/api_diff/14/changes/dalvik.annotation.TestTargetClass.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.html
+http://developer.android.com/sdk/api_diff/14/changes/android.speech.tts.TextToSpeech.Engine.html
+http://developer.android.com/sdk/api_diff/14/changes/android.widget.TextView.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.TrafficStats.html
+http://developer.android.com/sdk/api_diff/14/changes/android.animation.TypeEvaluator.html
+http://developer.android.com/sdk/api_diff/14/changes/java.security.UnresolvedPermission.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.View.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewGroup.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewParent.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.ViewPropertyAnimator.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.html
+http://developer.android.com/sdk/api_diff/14/changes/android.app.WallpaperManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.service.wallpaper.WallpaperService.Engine.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebChromeClient.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebSettings.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebSettings.TextSize.html
+http://developer.android.com/sdk/api_diff/14/changes/android.webkit.WebView.HitTestResult.html
+http://developer.android.com/sdk/api_diff/14/changes/android.net.wifi.WifiManager.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.Window.html
+http://developer.android.com/sdk/api_diff/14/changes/android.view.WindowManager.LayoutParams.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.wifi.html
+http://developer.android.com/sdk/api_diff/14/changes/jdiff_statistics.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Message.html
+http://developer.android.com/sdk/api_diff/10/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/10/changes/methods_index_additions.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?deprecated-list.html
+http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.html
+http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html
+http://developer.android.com/resources/samples/images/StackWidget.png
+http://developer.android.com/sdk/api_diff/6/changes/methods_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Sender.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/6/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/13/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/13/changes/classes_index_changes.html
+http://developer.android.com/guide/topics/location/obtaining-user-location.html
+http://developer.android.com/resources/tutorials/views/hello-autocomplete.html
+http://developer.android.com/sdk/api_diff/9/changes/jdiff_topleftframe.html
+http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/changes-summary.html
+http://developer.android.com/shareables/app_widget_templates-v4.0.zip
+http://developer.android.com/sdk/api_diff/7/changes/constructors_index_additions.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?overview-tree.html
+http://developer.android.com/sdk/api_diff/12/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/packages_index_changes.html
http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_removals.html
http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_additions.html
http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_changes.html
@@ -3243,488 +6149,105 @@
http://developer.android.com/sdk/api_diff/9/changes/android.view.Window.html
http://developer.android.com/sdk/api_diff/9/changes/java.util.concurrent.TimeUnit.html
http://developer.android.com/sdk/api_diff/9/changes/java.security.UnrecoverableKeyException.html
-http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodImpl.html
-http://developer.android.com/reference/android/inputmethodservice/AbstractInputMethodService.AbstractInputMethodSessionImpl.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodImpl.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.InputMethodSessionImpl.html
-http://developer.android.com/reference/android/inputmethodservice/InputMethodService.Insets.html
-http://developer.android.com/reference/android/inputmethodservice/Keyboard.Key.html
-http://developer.android.com/reference/android/inputmethodservice/Keyboard.Row.html
-http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedListener.html
-http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html
-http://developer.android.com/reference/javax/net/ssl/KeyManager.html
-http://developer.android.com/reference/javax/net/ssl/ManagerFactoryParameters.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingListener.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionContext.html
-http://developer.android.com/reference/javax/net/ssl/TrustManager.html
-http://developer.android.com/reference/javax/net/ssl/X509KeyManager.html
-http://developer.android.com/reference/javax/net/ssl/X509TrustManager.html
-http://developer.android.com/reference/javax/net/ssl/CertPathTrustManagerParameters.html
-http://developer.android.com/reference/javax/net/ssl/HandshakeCompletedEvent.html
-http://developer.android.com/reference/javax/net/ssl/KeyManagerFactory.html
-http://developer.android.com/reference/javax/net/ssl/KeyManagerFactorySpi.html
-http://developer.android.com/reference/javax/net/ssl/KeyStoreBuilderParameters.html
-http://developer.android.com/reference/javax/net/ssl/SSLContext.html
-http://developer.android.com/reference/javax/net/ssl/SSLContextSpi.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngine.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.html
-http://developer.android.com/reference/javax/net/ssl/SSLParameters.html
-http://developer.android.com/reference/javax/net/ssl/SSLServerSocket.html
-http://developer.android.com/reference/javax/net/ssl/SSLServerSocketFactory.html
-http://developer.android.com/reference/javax/net/ssl/SSLSessionBindingEvent.html
-http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html
-http://developer.android.com/reference/javax/net/ssl/TrustManagerFactory.html
-http://developer.android.com/reference/javax/net/ssl/TrustManagerFactorySpi.html
-http://developer.android.com/reference/javax/net/ssl/X509ExtendedKeyManager.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.HandshakeStatus.html
-http://developer.android.com/reference/javax/net/ssl/SSLEngineResult.Status.html
-http://developer.android.com/resources/samples/BackupRestore/res/values/strings.html
-http://developer.android.com/reference/javax/security/cert/Certificate.html
-http://developer.android.com/reference/javax/security/cert/X509Certificate.html
-http://developer.android.com/reference/javax/security/cert/CertificateEncodingException.html
-http://developer.android.com/reference/javax/security/cert/CertificateException.html
-http://developer.android.com/reference/javax/security/cert/CertificateExpiredException.html
-http://developer.android.com/reference/javax/security/cert/CertificateNotYetValidException.html
-http://developer.android.com/reference/javax/security/cert/CertificateParsingException.html
-http://developer.android.com/reference/javax/security/cert/package-descr.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractMessageWriter.html
-http://developer.android.com/reference/org/apache/http/impl/io/AbstractSessionInputBuffer.html
-http://developer.android.com/reference/org/apache/http/impl/io/ChunkedInputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/ContentLengthInputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpRequestWriter.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpResponseWriter.html
-http://developer.android.com/reference/org/apache/http/impl/io/HttpTransportMetricsImpl.html
-http://developer.android.com/reference/org/apache/http/impl/io/IdentityInputStream.html
-http://developer.android.com/reference/org/apache/http/impl/io/SocketInputBuffer.html
-http://developer.android.com/reference/android/text/method/PasswordTransformationMethod.html
-http://developer.android.com/reference/javax/xml/transform/sax/SAXTransformerFactory.html
-http://developer.android.com/reference/javax/xml/transform/sax/package-descr.html
-http://developer.android.com/reference/android/net/package-descr.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.Major.html
-http://developer.android.com/reference/android/bluetooth/BluetoothClass.Service.html
-http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html
-http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
+http://developer.android.com/sdk/api_diff/9/changes/jdiff_statistics.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?help-doc.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/constructors_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?constant-values.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/InvalidRequestException.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.accessibilityservice.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.accounts.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.animation.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.app.admin.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.appwidget.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.content.pm.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.database.sqlite.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.graphics.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.inputmethodservice.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.net.http.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.nfc.tech.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.opengl.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.os.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.service.wallpaper.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.speech.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.test.mock.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.text.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.view.inputmethod.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_android.webkit.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_dalvik.annotation.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.io.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.ref.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.lang.reflect.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.net.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.security.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_java.util.logging.html
+http://developer.android.com/sdk/api_diff/14/changes/pkg_javax.security.auth.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMRegistrar.html
+http://developer.android.com/sdk/api_diff/10/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/methods_index_changes.html
+http://developer.android.com/guide/developing/debug-tasks.html
+http://developer.android.com/sdk/api_diff/11/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/11/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/14/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/packages_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?overview-tree.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/5/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/6/changes/packages_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?deprecated-list.html
+http://developer.android.com/tools/debug-tasks.html
+http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/15/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/15/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/7/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/methods_index_changes.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?com/google/android/gcm/GCMBroadcastReceiver.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/12/changes/alldiffs_index_changes.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?serialized-form.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html
http://developer.android.com/sdk/api_diff/4/changes/jdiff_topleftframe.html
http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_all.html
http://developer.android.com/sdk/api_diff/4/changes/changes-summary.html
-http://developer.android.com/reference/android/appwidget/AppWidgetHost.html
-http://developer.android.com/reference/android/accounts/AbstractAccountAuthenticator.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/samplesyncadapter_server/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/AndroidManifest.html
-http://developer.android.com/reference/android/text/method/MultiTapKeyListener.html
-http://developer.android.com/reference/android/text/method/TextKeyListener.html
-http://developer.android.com/sdk/api_diff/8/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_all.html
-http://developer.android.com/reference/java/sql/Date.html
-http://developer.android.com/reference/java/sql/Time.html
-http://developer.android.com/reference/java/sql/Timestamp.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSResourceResolver.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSInput.html
-http://developer.android.com/sdk/api_diff/9/changes/jdiff_statistics.html
-http://developer.android.com/reference/java/sql/CallableStatement.html
-http://developer.android.com/reference/java/nio/charset/Charset.html
-http://developer.android.com/reference/java/sql/ClientInfoStatus.html
-http://developer.android.com/reference/java/lang/annotation/ElementType.html
-http://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html
-http://developer.android.com/reference/java/math/RoundingMode.html
-http://developer.android.com/reference/java/sql/RowIdLifetime.html
-http://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize.html
-http://developer.android.com/reference/java/nio/charset/CharsetDecoder.html
-http://developer.android.com/reference/java/nio/charset/CharsetEncoder.html
-http://developer.android.com/reference/java/nio/charset/CoderResult.html
-http://developer.android.com/reference/java/nio/charset/CodingErrorAction.html
-http://developer.android.com/reference/java/nio/charset/CoderMalfunctionError.html
-http://developer.android.com/reference/java/sql/SQLOutput.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHPrivateKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/DHPublicKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/PBEKey.html
-http://developer.android.com/reference/javax/crypto/interfaces/package-descr.html
-http://developer.android.com/reference/org/apache/http/entity/ContentLengthStrategy.html
-http://developer.android.com/reference/org/apache/http/entity/ContentProducer.html
-http://developer.android.com/reference/org/apache/http/entity/BasicHttpEntity.html
-http://developer.android.com/reference/org/apache/http/entity/BufferedHttpEntity.html
-http://developer.android.com/reference/org/apache/http/entity/ByteArrayEntity.html
-http://developer.android.com/reference/org/apache/http/entity/EntityTemplate.html
-http://developer.android.com/reference/org/apache/http/entity/FileEntity.html
-http://developer.android.com/reference/org/apache/http/entity/HttpEntityWrapper.html
-http://developer.android.com/reference/org/apache/http/entity/InputStreamEntity.html
-http://developer.android.com/reference/org/apache/http/entity/SerializableEntity.html
-http://developer.android.com/reference/org/apache/http/entity/StringEntity.html
-http://developer.android.com/reference/org/apache/http/entity/package-descr.html
-http://developer.android.com/resources/samples/ContactManager/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/ContactManager/res/drawable-ldpi/index.html
-http://developer.android.com/resources/samples/ContactManager/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/ContactManager/res/layout/index.html
-http://developer.android.com/resources/samples/ContactManager/res/values/index.html
-http://developer.android.com/reference/javax/security/auth/callback/CallbackHandler.html
-http://developer.android.com/reference/org/apache/http/client/utils/CloneUtils.html
-http://developer.android.com/reference/org/apache/http/client/utils/URIUtils.html
-http://developer.android.com/reference/org/apache/http/client/utils/URLEncodedUtils.html
-http://developer.android.com/reference/org/apache/http/client/utils/package-descr.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/AbstractVerifier.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/AllowAllHostnameVerifier.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/BrowserCompatHostnameVerifier.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/StrictHostnameVerifier.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/X509HostnameVerifier.html
-http://developer.android.com/reference/javax/sql/DataSource.html
-http://developer.android.com/reference/junit/framework/Protectable.html
-http://developer.android.com/reference/junit/framework/TestListener.html
-http://developer.android.com/reference/junit/framework/TestFailure.html
-http://developer.android.com/reference/junit/framework/AssertionFailedError.html
-http://developer.android.com/reference/junit/framework/ComparisonFailure.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.AlarmManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.AlertDialog.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.Instrumentation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.app.PendingIntent.html
-http://developer.android.com/reference/javax/crypto/spec/DESedeKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/DESKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/DHGenParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/DHParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/DHPrivateKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/DHPublicKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/IvParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/OAEPParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/PBEKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/PBEParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/PSource.html
-http://developer.android.com/reference/javax/crypto/spec/PSource.PSpecified.html
-http://developer.android.com/reference/javax/crypto/spec/RC2ParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/RC5ParameterSpec.html
-http://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html
-http://developer.android.com/reference/javax/crypto/spec/package-descr.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGL.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGL11.html
-http://developer.android.com/reference/javax/microedition/khronos/egl/EGLContext.html
-http://developer.android.com/reference/org/apache/http/client/package-descr.html
-http://developer.android.com/reference/java/sql/DatabaseMetaData.html
-http://developer.android.com/reference/android/text/util/Rfc822Tokenizer.html
-http://developer.android.com/reference/java/lang/reflect/Member.html
-http://developer.android.com/reference/android/view/ViewDebug.CapturedViewProperty.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Gravity.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Menu.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.OrientationListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewDebug.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewParent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.Window.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.pm.PackageManager.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/index.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/8/changes/android.speech.RecognizerIntent.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/8/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.Settings.Secure.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.Contacts.PresenceColumns.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.ContactsContract.StatusColumns.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/8/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.AudioColumns.html
-http://developer.android.com/sdk/api_diff/8/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/8/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/8/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.R.id.html
-http://developer.android.com/sdk/api_diff/8/changes/android.R.anim.html
-http://developer.android.com/sdk/api_diff/8/changes/dalvik.system.Zygote.html
-http://developer.android.com/sdk/api_diff/8/changes/dalvik.system.VMDebug.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.SyncResult.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.ComponentInfo.html
-http://developer.android.com/sdk/api_diff/8/changes/android.os.Environment.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Node.html
-http://developer.android.com/sdk/api_diff/8/changes/android.text.AndroidCharacter.html
-http://developer.android.com/sdk/api_diff/8/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.Engine.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.Browser.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.ViewGroup.LayoutParams.html
-http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/8/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/8/changes/android.graphics.PixelFormat.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.HapticFeedbackConstants.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/8/changes/android.database.sqlite.SQLiteProgram.html
-http://developer.android.com/sdk/api_diff/8/changes/android.webkit.JsResult.html
-http://developer.android.com/sdk/api_diff/8/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/8/changes/dalvik.bytecode.Opcodes.html
-http://developer.android.com/sdk/api_diff/8/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.app.ActivityManager.ProcessErrorStateInfo.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/8/changes/android.media.ExifInterface.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.DOMException.html
-http://developer.android.com/sdk/api_diff/8/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Sensor.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.res.Configuration.html
-http://developer.android.com/reference/android/accounts/AccountManagerCallback.html
-http://developer.android.com/reference/android/accounts/AccountManagerFuture.html
-http://developer.android.com/reference/android/accounts/OnAccountsUpdateListener.html
-http://developer.android.com/reference/android/accounts/AccountsException.html
-http://developer.android.com/reference/android/accounts/AuthenticatorException.html
-http://developer.android.com/reference/android/accounts/NetworkErrorException.html
-http://developer.android.com/reference/android/accounts/OperationCanceledException.html
-http://developer.android.com/reference/dalvik/bytecode/Opcodes.html
-http://developer.android.com/reference/dalvik/bytecode/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.Cursor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.CursorWrapper.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.DatabaseUtils.html
-http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/SSLSocketFactory.html
-http://developer.android.com/reference/android/location/package-descr.html
-http://developer.android.com/resources/samples/AccessibilityService/res/values/strings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.ConnectivityManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.NetworkInfo.html
-http://developer.android.com/reference/org/apache/http/protocol/ExecutionContext.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpExpectationVerifier.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandler.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerResolver.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestInterceptorList.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpResponseInterceptorList.html
-http://developer.android.com/reference/org/apache/http/protocol/BasicHttpContext.html
-http://developer.android.com/reference/org/apache/http/protocol/DefaultedHttpContext.html
-http://developer.android.com/reference/org/apache/http/protocol/HTTP.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpDateGenerator.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestExecutor.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpRequestHandlerRegistry.html
-http://developer.android.com/reference/org/apache/http/protocol/HttpService.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseConnControl.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseContent.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseDate.html
-http://developer.android.com/reference/org/apache/http/protocol/ResponseServer.html
-http://developer.android.com/reference/org/apache/http/protocol/SyncBasicHttpContext.html
-http://developer.android.com/reference/org/apache/http/protocol/UriPatternMatcher.html
-http://developer.android.com/resources/samples/BluetoothChat/res/drawable/index.html
-http://developer.android.com/resources/samples/BluetoothChat/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/BluetoothChat/res/layout/index.html
-http://developer.android.com/resources/samples/BluetoothChat/res/menu/index.html
-http://developer.android.com/resources/samples/BluetoothChat/res/values/index.html
-http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/6/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/6/changes/android.accounts.AbstractAccountAuthenticator.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.accounts.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/6/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/6/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/6/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/6/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/reference/javax/net/ssl/package-descr.html
-http://developer.android.com/reference/android/test/suitebuilder/TestMethod.html
-http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.html
-http://developer.android.com/reference/android/test/suitebuilder/TestSuiteBuilder.FailedToCreateTests.html
-http://developer.android.com/reference/android/test/suitebuilder/package-descr.html
-http://developer.android.com/sdk/api_diff/8/changes/jdiff_statistics.html
-http://developer.android.com/reference/java/lang/annotation/AnnotationFormatError.html
-http://developer.android.com/reference/java/lang/annotation/AnnotationTypeMismatchException.html
-http://developer.android.com/reference/java/util/prefs/BackingStoreException.html
-http://developer.android.com/reference/java/sql/BatchUpdateException.html
-http://developer.android.com/reference/javax/sql/ConnectionEvent.html
-http://developer.android.com/reference/java/sql/DataTruncation.html
-http://developer.android.com/reference/java/lang/reflect/GenericSignatureFormatError.html
-http://developer.android.com/reference/java/lang/annotation/IncompleteAnnotationException.html
-http://developer.android.com/reference/java/beans/IndexedPropertyChangeEvent.html
-http://developer.android.com/reference/java/util/prefs/InvalidPreferencesFormatException.html
-http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSException.html
-http://developer.android.com/reference/java/lang/reflect/MalformedParameterizedTypeException.html
-http://developer.android.com/reference/java/math/MathContext.html
-http://developer.android.com/reference/java/util/prefs/NodeChangeEvent.html
-http://developer.android.com/reference/javax/security/auth/callback/PasswordCallback.html
-http://developer.android.com/reference/java/util/prefs/PreferenceChangeEvent.html
-http://developer.android.com/reference/java/beans/PropertyChangeEvent.html
-http://developer.android.com/reference/java/beans/PropertyChangeSupport.html
-http://developer.android.com/reference/java/lang/reflect/Proxy.html
-http://developer.android.com/reference/javax/sql/RowSetEvent.html
-http://developer.android.com/reference/java/sql/SQLClientInfoException.html
-http://developer.android.com/reference/java/sql/SQLDataException.html
-http://developer.android.com/reference/java/sql/SQLException.html
-http://developer.android.com/reference/java/sql/SQLFeatureNotSupportedException.html
-http://developer.android.com/reference/java/sql/SQLIntegrityConstraintViolationException.html
-http://developer.android.com/reference/java/sql/SQLInvalidAuthorizationSpecException.html
-http://developer.android.com/reference/java/sql/SQLNonTransientConnectionException.html
-http://developer.android.com/reference/java/sql/SQLNonTransientException.html
-http://developer.android.com/reference/java/sql/SQLRecoverableException.html
-http://developer.android.com/reference/java/sql/SQLSyntaxErrorException.html
-http://developer.android.com/reference/java/sql/SQLTimeoutException.html
-http://developer.android.com/reference/java/sql/SQLTransactionRollbackException.html
-http://developer.android.com/reference/java/sql/SQLTransientConnectionException.html
-http://developer.android.com/reference/java/sql/SQLTransientException.html
-http://developer.android.com/reference/java/sql/SQLWarning.html
-http://developer.android.com/reference/javax/sql/StatementEvent.html
-http://developer.android.com/reference/java/lang/reflect/UndeclaredThrowableException.html
-http://developer.android.com/reference/javax/security/auth/callback/UnsupportedCallbackException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathExpressionException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFactoryConfigurationException.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFunctionException.html
-http://developer.android.com/reference/javax/sql/PooledConnection.html
-http://developer.android.com/reference/javax/sql/RowSet.html
-http://developer.android.com/reference/javax/security/auth/callback/Callback.html
-http://developer.android.com/reference/javax/net/ServerSocketFactory.html
-http://developer.android.com/reference/javax/net/SocketFactory.html
-http://developer.android.com/reference/javax/net/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/reference/android/test/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.KeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.method.Touch.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.view.animation.Transformation.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/drawable/index.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/values/index.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/xml/index.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.Resources.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.res.TypedArray.html
-http://developer.android.com/reference/org/apache/http/conn/package-descr.html
-http://developer.android.com/reference/java/sql/Array.html
-http://developer.android.com/reference/java/sql/Blob.html
-http://developer.android.com/reference/java/sql/Clob.html
-http://developer.android.com/reference/java/sql/Connection.html
-http://developer.android.com/reference/java/sql/Driver.html
-http://developer.android.com/reference/java/sql/NClob.html
-http://developer.android.com/reference/java/sql/ParameterMetaData.html
-http://developer.android.com/reference/java/sql/PreparedStatement.html
-http://developer.android.com/reference/java/sql/Ref.html
-http://developer.android.com/reference/java/sql/ResultSet.html
-http://developer.android.com/reference/java/sql/ResultSetMetaData.html
-http://developer.android.com/reference/java/sql/RowId.html
-http://developer.android.com/reference/java/sql/Savepoint.html
-http://developer.android.com/reference/java/sql/SQLData.html
-http://developer.android.com/reference/java/sql/SQLInput.html
-http://developer.android.com/reference/java/sql/SQLXML.html
-http://developer.android.com/reference/java/sql/Statement.html
-http://developer.android.com/reference/java/sql/Struct.html
-http://developer.android.com/reference/java/sql/Wrapper.html
-http://developer.android.com/reference/java/sql/DriverManager.html
-http://developer.android.com/reference/java/sql/DriverPropertyInfo.html
-http://developer.android.com/reference/java/sql/Types.html
-http://developer.android.com/sdk/api_diff/8/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/8/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/8/changes/android.test.ActivityInstrumentationTestCase2.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.GestureDetector.html
-http://developer.android.com/sdk/api_diff/8/changes/android.net.http.SslCertificate.html
-http://developer.android.com/sdk/api_diff/8/changes/android.net.SSLCertificateSocketFactory.html
-http://developer.android.com/sdk/api_diff/8/changes/javax.xml.XMLConstants.html
-http://developer.android.com/reference/java/security/package-descr.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelectionKey.html
-http://developer.android.com/reference/java/nio/channels/spi/AbstractSelector.html
-http://developer.android.com/resources/samples/JetBoy/JETBOY_content/JETBOY_Music.logic/index.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnControlStatusChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.OnEnableStatusChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/BassBoost.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/Equalizer.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/PresetReverb.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/Virtualizer.OnParameterChangeListener.html
-http://developer.android.com/reference/android/media/audiofx/Visualizer.OnDataCaptureListener.html
-http://developer.android.com/reference/android/media/audiofx/AudioEffect.Descriptor.html
-http://developer.android.com/reference/android/media/audiofx/BassBoost.html
-http://developer.android.com/reference/android/media/audiofx/BassBoost.Settings.html
-http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.html
-http://developer.android.com/reference/android/media/audiofx/EnvironmentalReverb.Settings.html
-http://developer.android.com/reference/android/media/audiofx/Equalizer.html
-http://developer.android.com/reference/android/media/audiofx/Equalizer.Settings.html
-http://developer.android.com/reference/android/media/audiofx/PresetReverb.html
-http://developer.android.com/reference/android/media/audiofx/PresetReverb.Settings.html
-http://developer.android.com/reference/android/media/audiofx/Virtualizer.html
-http://developer.android.com/reference/android/media/audiofx/Virtualizer.Settings.html
-http://developer.android.com/reference/android/media/audiofx/Visualizer.html
-http://developer.android.com/reference/android/graphics/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Browser.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.provider.Settings.System.html
-http://developer.android.com/reference/android/test/mock/package-descr.html
-http://developer.android.com/resources/tutorials/views/hello-timepicker.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/layout/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/values/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/xml/index.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html
-http://developer.android.com/resources/tutorials/views/hello-gallery.html
-http://developer.android.com/resources/samples/BackupRestore/res/layout/backup_restore.html
-http://developer.android.com/sdk/api_diff/3/changes/android.util.SparseIntArray.html
-http://developer.android.com/sdk/api_diff/3/changes/android.util.TimeUtils.html
-http://developer.android.com/sdk/api_diff/6/changes/jdiff_statistics.html
-http://developer.android.com/reference/org/xml/sax/ext/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.DexFile.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.VMDebug.html
-http://developer.android.com/sdk/api_diff/3/changes/dalvik.system.Zygote.html
-http://developer.android.com/reference/junit/runner/BaseTestRunner.html
-http://developer.android.com/reference/junit/runner/TestSuiteLoader.html
-http://developer.android.com/sdk/api_diff/7/changes/jdiff_topleftframe.html
-http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/changes-summary.html
-http://developer.android.com/resources/samples/NotePad/res/index.html
-http://developer.android.com/resources/samples/NotePad/src/index.html
-http://developer.android.com/resources/samples/NotePad/tests/index.html
-http://developer.android.com/resources/samples/NotePad/AndroidManifest.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/4/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/4/changes/android.location.Address.html
-http://developer.android.com/sdk/api_diff/4/changes/android.R.attr.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/14/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/packages_index_changes.html
http://developer.android.com/sdk/api_diff/4/changes/pkg_android.html
http://developer.android.com/sdk/api_diff/4/changes/pkg_android.app.html
http://developer.android.com/sdk/api_diff/4/changes/pkg_android.content.html
@@ -3749,1954 +6272,148 @@
http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.html
http://developer.android.com/sdk/api_diff/4/changes/pkg_android.view.animation.html
http://developer.android.com/sdk/api_diff/4/changes/pkg_android.widget.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
+http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/android.view.View.html
http://developer.android.com/sdk/api_diff/4/changes/android.test.AndroidTestCase.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.R.anim.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Bitmap.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
-http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.VERSION.html
http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html
-http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
http://developer.android.com/sdk/api_diff/4/changes/android.content.ComponentName.html
http://developer.android.com/sdk/api_diff/4/changes/android.view.VelocityTracker.html
-http://developer.android.com/sdk/api_diff/4/changes/android.util.Config.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.ContextWrapper.html
http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Typeface.html
http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html
http://developer.android.com/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
-http://developer.android.com/sdk/api_diff/4/changes/android.util.TypedValue.html
-http://developer.android.com/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.Activity.html
http://developer.android.com/sdk/api_diff/4/changes/android.app.Dialog.html
http://developer.android.com/sdk/api_diff/4/changes/android.view.Window.Callback.html
http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.Context.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ContextWrapper.html
http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockContext.html
http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.html
http://developer.android.com/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html
http://developer.android.com/sdk/api_diff/4/changes/android.widget.ListView.html
http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabWidget.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Bitmap.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.Canvas.html
http://developer.android.com/sdk/api_diff/4/changes/android.graphics.NinePatch.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.Intent.html
http://developer.android.com/sdk/api_diff/4/changes/android.app.PendingIntent.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.PackageManager.html
http://developer.android.com/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html
http://developer.android.com/sdk/api_diff/4/changes/android.view.ViewConfiguration.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.ContentProvider.html
+http://developer.android.com/sdk/api_diff/4/changes/android.location.Address.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.AudioManager.html
http://developer.android.com/sdk/api_diff/4/changes/android.widget.PopupWindow.html
http://developer.android.com/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html
-http://developer.android.com/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
http://developer.android.com/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html
http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.html
-http://developer.android.com/sdk/api_diff/4/changes/pkg_java.util.concurrent.locks.html
-http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
-http://developer.android.com/sdk/api_diff/4/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission_group.html
-http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.SearchManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html
http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html
-http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/Message.Builder.html
+http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/jdiff_statistics.html
+http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission.html
+http://developer.android.com/sdk/api_diff/4/changes/android.Manifest.permission_group.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.anim.html
+http://developer.android.com/sdk/api_diff/4/changes/android.R.attr.html
http://developer.android.com/sdk/api_diff/4/changes/android.R.drawable.html
http://developer.android.com/sdk/api_diff/4/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.System.html
+http://developer.android.com/sdk/api_diff/16/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html
+http://developer.android.com/sdk/api_diff/4/changes/android.widget.CheckedTextView.html
http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html
+http://developer.android.com/guide/google/gcm/client-javadoc/index.html?constant-values.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/fields_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.Config.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.DisplayMetrics.html
+http://developer.android.com/sdk/api_diff/4/changes/android.util.TypedValue.html
+http://developer.android.com/sdk/api_diff/16/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/10/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/10/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html
+http://developer.android.com/sdk/api_diff/7/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_removals.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/alldiffs_index_changes.html
+http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.locks.AbstractQueuedSynchronizer.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.Secure.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.html
+http://developer.android.com/sdk/api_diff/4/changes/android.os.Build.VERSION.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.res.Configuration.html
+http://developer.android.com/sdk/api_diff/4/changes/android.telephony.TelephonyManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html
+http://developer.android.com/sdk/api_diff/4/changes/android.text.style.ImageSpan.html
+http://developer.android.com/sdk/api_diff/4/changes/android.hardware.SensorManager.html
+http://developer.android.com/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html
+http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html
+http://developer.android.com/sdk/api_diff/4/changes/android.provider.Settings.System.html
http://developer.android.com/sdk/api_diff/4/changes/android.view.Surface.html
http://developer.android.com/sdk/api_diff/4/changes/java.util.concurrent.TimeUnit.html
http://developer.android.com/sdk/api_diff/4/changes/android.media.ToneGenerator.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable/index.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable-land/index.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable-port/index.html
-http://developer.android.com/resources/samples/LunarLander/res/layout/index.html
-http://developer.android.com/resources/samples/LunarLander/res/values/index.html
-http://developer.android.com/reference/android/net/wifi/package-descr.html
-http://developer.android.com/resources/samples/TicTacToeLib/AndroidManifest.html
-http://developer.android.com/resources/samples/TicTacToeMain/AndroidManifest.html
-http://developer.android.com/reference/java/lang/reflect/GenericArrayType.html
-http://developer.android.com/reference/java/lang/reflect/InvocationHandler.html
-http://developer.android.com/reference/java/lang/reflect/ParameterizedType.html
-http://developer.android.com/reference/java/lang/reflect/WildcardType.html
-http://developer.android.com/reference/java/lang/reflect/AccessibleObject.html
-http://developer.android.com/reference/java/lang/reflect/Array.html
-http://developer.android.com/resources/samples/Home/src/com/index.html
-http://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod.html
-http://developer.android.com/reference/android/text/method/BaseKeyListener.html
-http://developer.android.com/reference/android/text/method/DateKeyListener.html
-http://developer.android.com/reference/android/text/method/DateTimeKeyListener.html
-http://developer.android.com/reference/android/text/method/DialerKeyListener.html
-http://developer.android.com/reference/android/text/method/DigitsKeyListener.html
-http://developer.android.com/reference/android/text/method/HideReturnsTransformationMethod.html
-http://developer.android.com/reference/android/text/method/NumberKeyListener.html
-http://developer.android.com/reference/android/text/method/QwertyKeyListener.html
-http://developer.android.com/reference/android/text/method/ReplacementTransformationMethod.html
-http://developer.android.com/reference/android/text/method/ScrollingMovementMethod.html
-http://developer.android.com/reference/android/text/method/SingleLineTransformationMethod.html
-http://developer.android.com/reference/android/text/method/TimeKeyListener.html
-http://developer.android.com/reference/android/text/method/Touch.html
-http://developer.android.com/resources/samples/AccessibilityService/src/com/example/index.html
-http://developer.android.com/sdk/api_diff/4/changes/jdiff_statistics.html
-http://developer.android.com/resources/samples/Wiktionary/res/anim/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/layout/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/menu/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/values/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/xml/index.html
-http://developer.android.com/reference/java/util/prefs/NodeChangeListener.html
-http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html
-http://developer.android.com/reference/java/util/prefs/PreferencesFactory.html
-http://developer.android.com/reference/java/util/prefs/AbstractPreferences.html
-http://developer.android.com/reference/java/util/prefs/Preferences.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html
-http://developer.android.com/resources/samples/Spinner/src/com/index.html
-http://developer.android.com/reference/java/beans/PropertyChangeListenerProxy.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthParamBean.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.BulletSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ImageSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.StyleSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.URLSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html
-http://developer.android.com/reference/java/lang/annotation/Target.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/drawable/ic_launcher_wallpaper.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/reference/org/apache/http/client/entity/UrlEncodedFormEntity.html
-http://developer.android.com/resources/samples/NotePad/tests/src/index.html
-http://developer.android.com/resources/samples/NotePad/tests/AndroidManifest.html
-http://developer.android.com/reference/java/beans/PropertyChangeListener.html
-http://developer.android.com/resources/tutorials/views/hello-tabwidget.html
-http://developer.android.com/resources/samples/Home/src/com/example/index.html
-http://developer.android.com/reference/javax/sql/CommonDataSource.html
-http://developer.android.com/reference/javax/sql/ConnectionEventListener.html
-http://developer.android.com/reference/javax/sql/RowSetInternal.html
-http://developer.android.com/reference/javax/sql/RowSetListener.html
-http://developer.android.com/reference/javax/sql/RowSetMetaData.html
-http://developer.android.com/reference/javax/sql/RowSetReader.html
-http://developer.android.com/reference/javax/sql/RowSetWriter.html
-http://developer.android.com/reference/javax/sql/StatementEventListener.html
-http://developer.android.com/resources/samples/BluetoothChat/res/menu/option_menu.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.Level.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.logging.LogManager.html
-http://developer.android.com/resources/samples/BluetoothChat/res/drawable-hdpi/app_icon.html
-http://developer.android.com/reference/android/inputmethodservice/package-descr.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/classes_index_changes.html
-http://developer.android.com/reference/android/content/pm/package-descr.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/layout/widget_message.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/layout/widget_word.html
-http://developer.android.com/reference/org/apache/http/params/package-descr.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/ArcShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/RectShape.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
-http://developer.android.com/resources/samples/ContactManager/res/drawable-mdpi/icon.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/index.html
-http://developer.android.com/reference/org/apache/http/message/package-descr.html
-http://developer.android.com/reference/android/bluetooth/package-descr.html
-http://developer.android.com/resources/samples/SipDemo/res/drawable/index.html
-http://developer.android.com/resources/samples/SipDemo/res/layout/index.html
-http://developer.android.com/resources/samples/SipDemo/res/values/index.html
-http://developer.android.com/resources/samples/SipDemo/res/xml/index.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html
-http://developer.android.com/reference/javax/xml/xpath/XPath.html
-http://developer.android.com/reference/javax/xml/xpath/XPathExpression.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFunction.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFunctionResolver.html
-http://developer.android.com/reference/javax/xml/xpath/XPathVariableResolver.html
-http://developer.android.com/reference/javax/xml/xpath/XPathConstants.html
-http://developer.android.com/reference/javax/xml/xpath/XPathFactory.html
-http://developer.android.com/resources/samples/BusinessCard/res/index.html
-http://developer.android.com/resources/samples/BusinessCard/src/index.html
-http://developer.android.com/resources/samples/BusinessCard/AndroidManifest.html
-http://developer.android.com/sdk/api_diff/6/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/6/changes/fields_index_all.html
-http://developer.android.com/resources/samples/SipDemo/src/com/index.html
-http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.AbsListView.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.AbstractThreadedSyncAdapter.html
-http://developer.android.com/sdk/api_diff/8/changes/android.accounts.AccountManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/8/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/8/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Document.html
-http://developer.android.com/sdk/api_diff/8/changes/android.app.AlarmManager.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.accounts.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.gesture.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.net.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.net.http.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.speech.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.speech.tts.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.text.util.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/8/changes/java.util.regex.Matcher.html
-http://developer.android.com/sdk/api_diff/8/changes/android.speech.tts.TextToSpeech.html
-http://developer.android.com/sdk/api_diff/8/changes/java.util.ArrayList.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Attr.html
-http://developer.android.com/sdk/api_diff/8/changes/android.media.SoundPool.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.BaseExpandableListAdapter.html
-http://developer.android.com/sdk/api_diff/8/changes/android.os.Bundle.html
-http://developer.android.com/sdk/api_diff/8/changes/android.webkit.CacheManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.CallLog.Calls.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Images.Thumbnails.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Video.Thumbnails.html
-http://developer.android.com/sdk/api_diff/8/changes/java.nio.charset.Charset.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.ComponentName.html
-http://developer.android.com/sdk/api_diff/8/changes/android.gesture.Gesture.html
-http://developer.android.com/sdk/api_diff/8/changes/android.gesture.GesturePoint.html
-http://developer.android.com/sdk/api_diff/8/changes/android.gesture.GestureStroke.html
-http://developer.android.com/sdk/api_diff/8/changes/java.util.regex.Pattern.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.ContactsContract.Groups.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.ContactsContract.RawContacts.html
-http://developer.android.com/sdk/api_diff/8/changes/android.content.ContextWrapper.html
-http://developer.android.com/sdk/api_diff/8/changes/android.database.DatabaseUtils.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_dalvik.bytecode.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/8/changes/java.net.DatagramSocketImpl.html
-http://developer.android.com/sdk/api_diff/8/changes/android.os.Debug.html
-http://developer.android.com/sdk/api_diff/8/changes/android.app.Dialog.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.Display.html
-http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilder.html
-http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.DocumentBuilderFactory.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_org.w3c.dom.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.DOMImplementation.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Element.html
-http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Entity.html
-http://developer.android.com/sdk/api_diff/8/changes/android.util.EventLogTags.html
-http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/8/changes/android.test.mock.MockContext.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.NamedNodeMap.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.SAXParser.html
-http://developer.android.com/sdk/api_diff/8/changes/javax.xml.parsers.SAXParserFactory.html
-http://developer.android.com/sdk/api_diff/8/changes/org.w3c.dom.Text.html
-http://developer.android.com/sdk/api_diff/8/changes/android.view.VelocityTracker.html
-http://developer.android.com/sdk/api_diff/8/changes/android.opengl.GLSurfaceView.html
-http://developer.android.com/sdk/api_diff/8/changes/java.util.HashMap.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.ImageView.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.TabWidget.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_java.net.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_java.nio.charset.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_java.util.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_java.util.regex.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_javax.xml.html
-http://developer.android.com/sdk/api_diff/8/changes/pkg_javax.xml.parsers.html
-http://developer.android.com/sdk/api_diff/8/changes/android.util.Log.html
-http://developer.android.com/sdk/api_diff/8/changes/android.opengl.Matrix.html
-http://developer.android.com/sdk/api_diff/8/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/8/changes/android.media.MediaScannerConnection.html
-http://developer.android.com/sdk/api_diff/8/changes/android.media.MediaScannerConnection.MediaScannerConnectionClient.html
-http://developer.android.com/sdk/api_diff/8/changes/android.provider.MediaStore.Audio.Playlists.Members.html
-http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebChromeClient.html
-http://developer.android.com/sdk/api_diff/8/changes/android.webkit.WebViewClient.html
-http://developer.android.com/sdk/api_diff/8/changes/android.os.PowerManager.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/8/changes/android.widget.VideoView.html
-http://developer.android.com/sdk/api_diff/8/changes/android.text.util.Rfc822Tokenizer.html
-http://developer.android.com/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.Annotation.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.AutoText.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.SpanWatcher.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.Spanned.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.TextUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.text.TextWatcher.html
-http://developer.android.com/reference/org/apache/http/protocol/package-descr.html
-http://developer.android.com/resources/samples/BusinessCard/res/layout/index.html
-http://developer.android.com/resources/samples/BusinessCard/res/values/index.html
-http://developer.android.com/sdk/api_diff/8/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/packages_index_changes.html
-http://developer.android.com/resources/samples/SipDemo/res/drawable/btn_record.html
-http://developer.android.com/resources/samples/SipDemo/res/drawable/btn_speak_normal.html
-http://developer.android.com/resources/samples/SipDemo/res/drawable/btn_speak_pressed.html
-http://developer.android.com/resources/samples/SipDemo/res/drawable/btn_speak_selected.html
-http://developer.android.com/resources/samples/SipDemo/res/drawable/icon.html
-http://developer.android.com/reference/org/apache/http/conn/ssl/package-descr.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthPNames.html
-http://developer.android.com/reference/org/apache/http/auth/params/AuthParams.html
-http://developer.android.com/sdk/api_diff/7/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/7/changes/fields_index_all.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnInitListener.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnUtteranceCompletedListener.html
-http://developer.android.com/reference/android/speech/tts/TextToSpeech.html
-http://developer.android.com/reference/java/lang/annotation/Retention.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/methods_index_changes.html
-http://developer.android.com/reference/android/media/audiofx/package-descr.html
-http://developer.android.com/reference/android/sax/ElementListener.html
-http://developer.android.com/reference/android/sax/EndElementListener.html
-http://developer.android.com/reference/android/sax/EndTextElementListener.html
-http://developer.android.com/reference/android/sax/StartElementListener.html
-http://developer.android.com/reference/android/sax/TextElementListener.html
-http://developer.android.com/reference/android/sax/Element.html
-http://developer.android.com/reference/android/sax/RootElement.html
-http://developer.android.com/reference/android/sax/package-descr.html
-http://developer.android.com/reference/javax/xml/transform/dom/DOMLocator.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable/app_lunar_lander.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable/lander_crashed.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable/lander_firing.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable/lander_plain.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/index.html
-http://developer.android.com/resources/samples/JetBoy/res/layout/index.html
-http://developer.android.com/resources/samples/JetBoy/res/raw/index.html
-http://developer.android.com/resources/samples/JetBoy/res/values/index.html
-http://developer.android.com/reference/org/apache/http/conn/routing/package-descr.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable-land/earthrise.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/index.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-ldpi/index.html
-http://developer.android.com/resources/samples/NotePad/res/layout/index.html
-http://developer.android.com/resources/samples/NotePad/res/menu/index.html
-http://developer.android.com/resources/samples/NotePad/res/values/index.html
-http://developer.android.com/resources/samples/BusinessCard/res/values/strings.html
-http://developer.android.com/reference/android/view/package-descr.html
-http://developer.android.com/resources/samples/Spinner/res/layout/main.html
-http://developer.android.com/sdk/api_diff/6/changes/packages_index_changes.html
-http://developer.android.com/reference/javax/xml/transform/dom/package-descr.html
-http://developer.android.com/resources/samples/Home/res/anim/index.html
-http://developer.android.com/resources/samples/Home/res/color/index.html
-http://developer.android.com/resources/samples/Home/res/drawable/index.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/index.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/index.html
-http://developer.android.com/resources/samples/Home/res/layout/index.html
-http://developer.android.com/resources/samples/Home/res/layout-land/index.html
-http://developer.android.com/resources/samples/Home/res/layout-port/index.html
-http://developer.android.com/resources/samples/Home/res/values/index.html
-http://developer.android.com/resources/samples/Home/res/values-cs/index.html
-http://developer.android.com/resources/samples/Home/res/values-de-rDE/index.html
-http://developer.android.com/resources/samples/Home/res/values-es-rUS/index.html
-http://developer.android.com/resources/samples/Home/res/values-land/index.html
-http://developer.android.com/resources/samples/Home/res/values-nl-rNL/index.html
-http://developer.android.com/reference/junit/framework/package-descr.html
-http://developer.android.com/reference/org/apache/http/auth/params/package-descr.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsListView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html
-http://developer.android.com/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.id.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.TextView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Binder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Bitmap.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Build.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.DialogInterface.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Canvas.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Debug.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.Chronometer.html
-http://developer.android.com/sdk/api_diff/3/changes/java.lang.Class.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/3/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.RectF.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.CursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.string.html
-http://developer.android.com/sdk/api_diff/3/changes/android.preference.DialogPreference.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.TouchUtils.html
-http://developer.android.com/sdk/api_diff/3/changes/android.location.Location.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.IBinder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Environment.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.Scroller.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Looper.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.GridView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Handler.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.RingtoneManager.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.webkit.URLUtil.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ListView.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.SoundPool.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.html
-http://developer.android.com/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ProgressBar.html
-http://developer.android.com/sdk/api_diff/3/changes/android.os.Parcel.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.ProviderTestCase.html
-http://developer.android.com/sdk/api_diff/3/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/3/changes/android.graphics.Rect.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html
-http://developer.android.com/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html
-http://developer.android.com/sdk/api_diff/3/changes/android.hardware.SensorListener.html
-http://developer.android.com/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html
-http://developer.android.com/reference/java/lang/Deprecated.html
-http://developer.android.com/reference/java/lang/annotation/Documented.html
-http://developer.android.com/reference/android/test/FlakyTest.html
-http://developer.android.com/reference/java/lang/annotation/Inherited.html
-http://developer.android.com/reference/java/lang/Override.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/Smoke.html
-http://developer.android.com/reference/android/test/suitebuilder/annotation/Suppress.html
-http://developer.android.com/reference/java/lang/SuppressWarnings.html
-http://developer.android.com/reference/dalvik/annotation/TestTarget.html
-http://developer.android.com/reference/dalvik/annotation/TestTargetClass.html
-http://developer.android.com/reference/android/view/ViewDebug.ExportedProperty.html
-http://developer.android.com/reference/android/view/ViewDebug.FlagToString.html
-http://developer.android.com/reference/android/view/ViewDebug.IntToString.html
-http://developer.android.com/reference/android/text/util/Linkify.MatchFilter.html
-http://developer.android.com/reference/android/text/util/Linkify.TransformFilter.html
-http://developer.android.com/reference/android/text/util/Rfc822Token.html
-http://developer.android.com/resources/samples/SipDemo/res/layout/call_address_dialog.html
-http://developer.android.com/resources/samples/SipDemo/res/layout/walkietalkie.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/index.html
-http://developer.android.com/resources/samples/ContactManager/res/layout/account_entry.html
-http://developer.android.com/resources/samples/ContactManager/res/layout/contact_adder.html
-http://developer.android.com/resources/samples/ContactManager/res/layout/contact_entry.html
-http://developer.android.com/resources/samples/ContactManager/res/layout/contact_manager.html
-http://developer.android.com/resources/samples/TicTacToeMain/src/com/example/android/tictactoe/MainActivity.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/example/android/tictactoe/library/GameActivity.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/example/android/tictactoe/library/GameView.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/index.html
-http://developer.android.com/resources/samples/TicTacToeMain/src/index.html
-http://developer.android.com/reference/android/util/package-descr.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/AndroidManifest.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/bg_android.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/bg_android_icon.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunrise.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunrise_icon.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunset.html
-http://developer.android.com/resources/samples/Home/res/drawable-land/bg_sunset_icon.html
-http://developer.android.com/reference/javax/security/auth/callback/package-descr.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/index.html
-http://developer.android.com/resources/samples/NotePad/res/menu/editor_options_menu.html
-http://developer.android.com/resources/samples/NotePad/res/menu/list_context_menu.html
-http://developer.android.com/resources/samples/NotePad/res/menu/list_options_menu.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/xml/widget_word.html
-http://developer.android.com/reference/javax/xml/transform/stream/package-descr.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/bg_android.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/bg_android_icon.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunrise.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunrise_icon.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunset.html
-http://developer.android.com/resources/samples/Home/res/drawable-port/bg_sunset_icon.html
-http://developer.android.com/sdk/api_diff/5/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_all.html
-http://developer.android.com/reference/android/appwidget/package-descr.html
-http://developer.android.com/reference/org/apache/http/auth/package-descr.html
-http://developer.android.com/resources/tutorials/views/hello-autocomplete.html
-http://developer.android.com/resources/tutorials/views/hello-mapview.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-ldpi/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/layout/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/values/index.html
-http://developer.android.com/resources/samples/ContactManager/res/drawable-hdpi/icon.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/constructors_index_changes.html
-http://developer.android.com/resources/samples/SipDemo/src/com/example/index.html
-http://developer.android.com/resources/samples/Home/res/layout-port/home.html
-http://developer.android.com/sdk/api_diff/7/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/android.telephony.NeighboringCellInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/constructors_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.style.AbsoluteSizeSpan.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.BitmapDrawable.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.Insert.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Intents.UI.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.NeighboringCellInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.Plugin.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginData.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.PluginList.html
-http://developer.android.com/resources/samples/JetBoy/res/values/strings.html
-http://developer.android.com/resources/samples/JetBoy/res/values/styles.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/index.html
-http://developer.android.com/sdk/api_diff/6/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/6/changes/fields_index_changes.html
-http://developer.android.com/reference/java/nio/charset/spi/CharsetProvider.html
-http://developer.android.com/sdk/api_diff/5/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.AbstractInputMethodService.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.locks.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.AbstractWindowedCursor.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Activity.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ActivityInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningAppProcessInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.ActivityManager.RunningServiceInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.AllocationLimitError.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.AndroidTestRunner.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.animation.Animation.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioFormat.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.AudioManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.AutoCompleteTextView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.BatteryManager.html
-http://developer.android.com/sdk/api_diff/5/changes/java.util.concurrent.BlockingQueue.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.BroadcastReceiver.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.CallbackProxy.html
-http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.html
-http://developer.android.com/sdk/api_diff/5/changes/android.hardware.Camera.Parameters.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.res.Configuration.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethods.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ContactMethodsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Extensions.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.ExtensionsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupMembership.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Groups.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.GroupsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.OrganizationColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Organizations.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.ContactMethods.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Extensions.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.People.Phones.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PeopleColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Phones.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhonesColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Photos.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PhotosColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.PresenceColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.Settings.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Contacts.SettingsColumns.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.provider.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentProvider.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.ContentResolver.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.Context.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.ContextWrapper.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.CursorWindow.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.DatabaseUtils.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.format.DateUtils.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.Debug.MemoryInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Dialog.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.drawable.Drawable.ConstantState.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.format.Formatter.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/5/changes/android.opengl.GLSurfaceView.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.opengl.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.location.html
-http://developer.android.com/sdk/api_diff/5/changes/android.os.HandlerThread.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.HapticFeedbackConstants.html
-http://developer.android.com/sdk/api_diff/5/changes/android.inputmethodservice.InputMethodService.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.InputType.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.InstrumentationTestCase.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.IntentService.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.KeyEvent.Callback.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.LauncherActivity.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.style.html
-http://developer.android.com/sdk/api_diff/5/changes/android.location.LocationManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.Manifest.permission.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.MediaController.MediaPlayerControl.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.MediaPlayer.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.MediaStore.Images.Thumbnails.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockContext.html
-http://developer.android.com/sdk/api_diff/5/changes/android.test.mock.MockPackageManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.MotionEvent.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Notification.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.NotificationManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.util.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneNumberUtils.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.PhoneStateListener.html
-http://developer.android.com/sdk/api_diff/5/changes/android.graphics.PixelFormat.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.PotentialDeadlockError.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ProviderInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/5/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/5/changes/android.R.drawable.html
-http://developer.android.com/sdk/api_diff/5/changes/android.R.style.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ResolveInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.SearchManager.html
-http://developer.android.com/sdk/api_diff/5/changes/android.app.Service.html
-http://developer.android.com/sdk/api_diff/5/changes/android.content.pm.ServiceInfo.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.html
-http://developer.android.com/sdk/api_diff/5/changes/android.provider.Settings.System.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.SimpleCursorTreeAdapter.html
-http://developer.android.com/sdk/api_diff/5/changes/android.database.sqlite.SQLiteDatabase.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.sqlite.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.StaleDexCacheError.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.Surface.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceHolder.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.SurfaceView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.telephony.TelephonyManager.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TemporaryDirectory.html
-http://developer.android.com/sdk/api_diff/5/changes/android.text.TextPaint.html
-http://developer.android.com/sdk/api_diff/5/changes/android.media.ToneGenerator.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.TouchDex.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptHandler.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.UrlInterceptRegistry.html
-http://developer.android.com/sdk/api_diff/5/changes/android.widget.VideoView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewConfiguration.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMDebug.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMRuntime.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.VMStack.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebChromeClient.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/5/changes/android.webkit.WebViewClient.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.Window.Callback.html
-http://developer.android.com/sdk/api_diff/5/changes/android.view.WindowManager.LayoutParams.html
-http://developer.android.com/sdk/api_diff/5/changes/dalvik.system.Zygote.html
-http://developer.android.com/resources/samples/MultiResolution/res/index.html
-http://developer.android.com/resources/samples/MultiResolution/src/index.html
-http://developer.android.com/resources/samples/MultiResolution/AndroidManifest.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/6/changes/methods_index_changes.html
-http://developer.android.com/resources/samples/NotePad/res/values/strings.html
-http://developer.android.com/sdk/api_diff/4/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/4/changes/fields_index_all.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-mdpi/icon.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/AndroidManifest.html
-http://developer.android.com/resources/samples/TicTacToeMain/src/com/index.html
-http://developer.android.com/resources/samples/BluetoothChat/res/layout/custom_title.html
-http://developer.android.com/resources/samples/BluetoothChat/res/layout/device_list.html
-http://developer.android.com/resources/samples/BluetoothChat/res/layout/device_name.html
-http://developer.android.com/resources/samples/BluetoothChat/res/layout/main.html
-http://developer.android.com/resources/samples/BluetoothChat/res/layout/message.html
-http://developer.android.com/resources/samples/Wiktionary/res/menu/lookup.html
-http://developer.android.com/sdk/api_diff/5/changes/jdiff_statistics.html
-http://developer.android.com/sdk/api_diff/5/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/methods_index_changes.html
-http://developer.android.com/reference/org/w3c/dom/ls/DOMImplementationLS.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSOutput.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSParser.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSParserFilter.html
-http://developer.android.com/reference/org/w3c/dom/ls/LSSerializer.html
-http://developer.android.com/reference/junit/runner/Version.html
-http://developer.android.com/sdk/api_diff/5/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.content.res.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.database.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.graphics.drawable.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.hardware.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.inputmethodservice.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.test.mock.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.text.format.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_android.view.animation.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_dalvik.system.html
-http://developer.android.com/sdk/api_diff/5/changes/pkg_java.util.concurrent.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/index.html
-http://developer.android.com/resources/samples/NotePad/res/layout/note_editor.html
-http://developer.android.com/resources/samples/NotePad/res/layout/noteslist_item.html
-http://developer.android.com/resources/samples/NotePad/res/layout/title_editor.html
-http://developer.android.com/sdk/api_diff/7/changes/jdiff_statistics.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/values/strings.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/app_notes.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/ic_menu_compose.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/ic_menu_delete.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/ic_menu_discard.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/ic_menu_edit.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/ic_menu_revert.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/ic_menu_save.html
-http://developer.android.com/resources/samples/NotePad/res/drawable/live_folder_notes.html
-http://developer.android.com/resources/samples/AccessibilityService/src/com/example/android/index.html
-http://developer.android.com/reference/android/app/Instrumentation
-http://developer.android.com/resources/samples/SpinnerTest/AndroidManifest.html
-http://developer.android.com/resources/samples/SpinnerTest/src/com/android/example/spinner/test/SpinnerActivityTest.html
-http://developer.android.com/resources/samples/SpinnerTest/res/index.html
-http://developer.android.com/resources/samples/SpinnerTest/src/index.html
-http://developer.android.com/resources/samples/BusinessCard/res/layout/business_card.html
-http://developer.android.com/resources/samples/NotePad/src/com/index.html
-http://developer.android.com/resources/samples/Spinner/res/values/strings.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-hdpi/ball.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-hdpi/icon.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-hdpi/wood.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/app_icon.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/ic_menu_shuffle.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/logo_overlay.9.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/lookup_bg.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/progress_spin.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/star_logo.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg_normal.9.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg_pressed.9.html
-http://developer.android.com/resources/samples/Wiktionary/res/drawable/widget_bg_selected.9.html
-http://developer.android.com/resources/samples/Snake/src/com/example/index.html
-http://developer.android.com/reference/android/content/package-descr.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/xml/cube1.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/xml/cube2.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/xml/cube2_settings.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/drawable/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/layout/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/menu/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/raw/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/values/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/xml/index.html
-http://developer.android.com/resources/samples/AccessibilityService/src/com/example/android/clockback/index.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/index.html
-http://developer.android.com/reference/android/text/package-descr.html
-http://developer.android.com/reference/android/content/res/package-descr.html
-http://developer.android.com/resources/samples/Home/res/color/bright_text_dark_focused.html
-http://developer.android.com/sdk/api_diff/3/changes/packages_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/classes_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_all.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_all.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/drawable/index.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/layout/index.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/values/index.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/index.html
-http://developer.android.com/resources/samples/Home/res/values-de-rDE/strings.html
-http://developer.android.com/sdk/api_diff/7/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/fields_index_changes.html
-http://developer.android.com/sdk/api_diff/7/changes/android.app.WallpaperManager.html
-http://developer.android.com/sdk/api_diff/7/changes/android.content.Intent.html
-http://developer.android.com/sdk/api_diff/7/changes/android.R.attr.html
-http://developer.android.com/sdk/api_diff/7/changes/android.media.MediaRecorder.AudioSource.html
-http://developer.android.com/sdk/api_diff/7/changes/android.os.Build.VERSION_CODES.html
-http://developer.android.com/sdk/api_diff/7/changes/android.content.pm.PackageManager.html
-http://developer.android.com/sdk/api_diff/7/changes/android.telephony.PhoneStateListener.html
-http://developer.android.com/sdk/api_diff/7/changes/android.Manifest.permission.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/example/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/samplesyncadapter_server/model/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/samplesyncadapter_server/templates/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/index.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/methods_index_changes.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/values/strings.html
-http://developer.android.com/resources/samples/LunarLander/tests/src/index.html
-http://developer.android.com/resources/samples/LunarLander/tests/AndroidManifest.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/index.html
-http://developer.android.com/reference/android/text/method/package-descr.html
-http://developer.android.com/resources/samples/JetBoy/JETBOY_content/JETBOY_Music.logic/LgDoc/index.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/layout/main.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-mdpi/ic_menu_search.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/values/strings.html
-http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_changes.html
-http://developer.android.com/sdk/api_diff/7/changes/android.widget.RemoteViews.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.GeolocationPermissions.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.app.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.content.pm.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.graphics.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.media.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.os.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.telephony.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.view.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.webkit.html
-http://developer.android.com/sdk/api_diff/7/changes/pkg_android.widget.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.CacheManager.CacheResult.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebStorage.html
-http://developer.android.com/sdk/api_diff/7/changes/android.graphics.Rect.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebView.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebChromeClient.html
-http://developer.android.com/sdk/api_diff/7/changes/android.webkit.WebSettings.html
-http://developer.android.com/sdk/api_diff/7/changes/android.widget.ViewFlipper.html
-http://developer.android.com/sdk/api_diff/7/changes/android.view.ViewGroup.html
-http://developer.android.com/sdk/api_diff/7/changes/android.view.View.html
-http://developer.android.com/sdk/api_diff/7/changes/android.os.PowerManager.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/values/shapes.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/res/values/strings.html
-http://developer.android.com/resources/samples/SpinnerTest/src/com/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/layout/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/values/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/xml/index.html
-http://developer.android.com/reference/junit/runner/package-descr.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-ldpi/icon.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/index.html
-http://developer.android.com/reference/android/text/style/package-descr.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/drawable/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/layout/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/layout-land/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/values/index.html
-http://developer.android.com/resources/samples/LunarLander/res/drawable-port/earthrise.html
-http://developer.android.com/resources/samples/BluetoothChat/res/values/strings.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/values/strings.html
-http://developer.android.com/resources/samples/Wiktionary/res/values/styles.html
-http://developer.android.com/resources/samples/Wiktionary/res/values/themes.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/all_applications_label_background.9.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/application_background.9.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/application_background_static.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/focused_application_background_static.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/hide_all_applications.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/ic_launcher_allhide.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/ic_launcher_allshow.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/ic_launcher_home.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/pressed_application_background_static.html
-http://developer.android.com/resources/samples/Home/res/drawable-mdpi/show_all_applications.html
-http://developer.android.com/guide/samples/index.html
-http://developer.android.com/resources/samples/Home/res/anim/fade_in.html
-http://developer.android.com/resources/samples/Home/res/anim/fade_out.html
-http://developer.android.com/resources/samples/Home/res/anim/grid_entry.html
-http://developer.android.com/resources/samples/Home/res/anim/grid_exit.html
-http://developer.android.com/resources/samples/Home/res/anim/hide_applications.html
-http://developer.android.com/resources/samples/Home/res/anim/show_applications.html
-http://developer.android.com/resources/samples/ApiDemos/assets/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/index.html
-http://developer.android.com/resources/samples/ApiDemos/AndroidManifest.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/drawable/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/layout/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/values/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml/index.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/values/strings.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/values/styles.html
-http://developer.android.com/resources/samples/Home/res/values/attrs.html
-http://developer.android.com/resources/samples/Home/res/values/strings.html
-http://developer.android.com/resources/samples/Home/res/values/styles.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/layout-land/lib_game.html
-http://developer.android.com/resources/samples/AccessibilityService/src/com/example/android/clockback/ClockBackService.html
-http://developer.android.com/reference/org/apache/http/impl/io/package-descr.html
-http://developer.android.com/sdk/api_diff/8/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/classes_index_changes.html
-http://developer.android.com/resources/samples/Wiktionary/res/xml/searchable.html
-http://developer.android.com/resources/samples/Wiktionary/res/xml/widget_word.html
-http://developer.android.com/resources/samples/Home/res/values-land/strings.html
+http://developer.android.com/guide/google/gcm/server-javadoc/index.html?com/google/android/gcm/server/package-tree.html
http://developer.android.com/sdk/api_diff/4/changes/classes_index_removals.html
http://developer.android.com/sdk/api_diff/4/changes/classes_index_additions.html
http://developer.android.com/sdk/api_diff/4/changes/classes_index_changes.html
-http://developer.android.com/resources/samples/Home/res/layout/all_applications_button.html
-http://developer.android.com/resources/samples/Home/res/layout/application.html
-http://developer.android.com/resources/samples/Home/res/layout/favorite.html
-http://developer.android.com/resources/samples/Home/res/layout/wallpaper.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/AndroidManifest.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/values/colors.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/values/dimens.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/values/strings.html
-http://developer.android.com/resources/samples/SipDemo/src/com/example/android/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/layout/login_activity.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/app_notes.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/ic_menu_compose.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/ic_menu_delete.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/ic_menu_discard.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/ic_menu_edit.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/ic_menu_revert.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/ic_menu_save.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-hdpi/live_folder_notes.html
-http://developer.android.com/sdk/api_diff/7/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/classes_index_changes.html
-http://developer.android.com/sdk/api_diff/9/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/9/changes/packages_index_changes.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/dimens.html
-http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/com/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-hdpi/ic_menu_search.html
-http://developer.android.com/resources/samples/SipDemo/res/values/strings.html
-http://developer.android.com/resources/samples/SpinnerTest/src/com/android/index.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/xml/method.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/xml/qwerty.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/xml/symbols.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/xml/symbols_shift.html
-http://developer.android.com/resources/samples/ApiDemos/assets/fonts/index.html
-http://developer.android.com/resources/samples/LunarLander/tests/src/com/index.html
-http://developer.android.com/reference/java/sql/package-descr.html
-http://developer.android.com/resources/samples/Snake/res/drawable/index.html
-http://developer.android.com/resources/samples/Snake/res/layout/index.html
-http://developer.android.com/resources/samples/Snake/res/values/index.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/all_applications_label_background.9.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/application_background.9.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/application_background_static.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/focused_application_background_static.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/hide_all_applications.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/ic_launcher_allhide.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/ic_launcher_allshow.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/ic_launcher_home.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/pressed_application_background_static.html
-http://developer.android.com/resources/samples/Home/res/drawable-hdpi/show_all_applications.html
-http://developer.android.com/resources/samples/ContactManager/src/com/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/drawable/lib_bg.9.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/drawable/lib_circle.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/drawable/lib_cross.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/layout/main.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/layout/result.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/layout/word.html
-http://developer.android.com/resources/samples/TicTacToeMain/res/drawable/icon.html
-http://developer.android.com/sdk/api_diff/7/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/methods_index_changes.html
-http://developer.android.com/resources/samples/ContactManager/res/values/strings.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-large/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-large-long/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-large-notlong/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-long/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-normal/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-normal-long/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-normal-notlong/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-notlong/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-small/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-small-long/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-small-notlong/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/index.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-ldpi/app_notes.html
-http://developer.android.com/resources/samples/NotePad/res/drawable-ldpi/live_folder_notes.html
-http://developer.android.com/sdk/api_diff/4/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/packages_index_changes.html
-http://developer.android.com/resources/samples/AccelerometerPlay/res/layout/main.html
-http://developer.android.com/sdk/api_diff/7/changes/packages_index_additions.html
-http://developer.android.com/sdk/api_diff/7/changes/packages_index_changes.html
-http://developer.android.com/sdk/api_diff/4/changes/constructors_index_additions.html
-http://developer.android.com/sdk/api_diff/4/changes/constructors_index_changes.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/index.html
-http://developer.android.com/resources/samples/MultiResolution/src/com/index.html
-http://developer.android.com/resources/samples/SpinnerTest/src/com/android/example/index.html
-http://developer.android.com/resources/samples/SipDemo/res/xml/preferences.html
-http://developer.android.com/resources/samples/BluetoothChat/res/drawable/app_icon.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/index.html
-http://developer.android.com/resources/samples/Spinner/src/com/android/index.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid01.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid02.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid03.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid04.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid05.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid06.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid07.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid08.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid09.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid10.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid11.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid12.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode1.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode2.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode3.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/asteroid_explode4.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/background_a.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/background_b.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/icon.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/int_timer.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_1.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_2.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_3.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/intbeam_4.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/laser.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_1.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_2.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_3.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_4.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_1.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_2.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_3.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/ship2_hit_4.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/title_bg_hori.html
-http://developer.android.com/resources/samples/JetBoy/res/drawable/title_hori.html
-http://developer.android.com/resources/samples/AccelerometerPlay/src/com/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/xml/searchable.html
-http://developer.android.com/sdk/api_diff/6/changes/classes_index_changes.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/advanced_preferences.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/appwidget_provider.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/default_values.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/device_admin_sample.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/preference_dependencies.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/preferences.html
-http://developer.android.com/resources/samples/ApiDemos/res/xml/searchable.html
-http://developer.android.com/reference/org/apache/http/io/package-descr.html
-http://developer.android.com/reference/android/text/util/package-descr.html
-http://developer.android.com/resources/samples/TicTacToeMain/src/com/example/index.html
-http://developer.android.com/resources/samples/LunarLander/src/com/index.html
-http://developer.android.com/resources/samples/MultiResolution/src/com/example/index.html
-http://developer.android.com/sdk/api_diff/8/changes/methods_index_removals.html
-http://developer.android.com/sdk/api_diff/8/changes/methods_index_additions.html
-http://developer.android.com/sdk/api_diff/8/changes/methods_index_changes.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/arrays.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/attrs.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/colors.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/ids.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/strings.html
-http://developer.android.com/resources/samples/ApiDemos/res/values/styles.html
-http://developer.android.com/resources/samples/Home/res/values-cs/strings.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi-v6/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi-v6/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi-v6/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/layout/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/layout-land/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/values/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/alert_dialog_icon.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/app_sample_code.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/arrow_down_float.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/arrow_up_float.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_check_off.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_check_on.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_circle_normal.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/btn_default_normal.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/button.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/ic_contact_picture.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/ic_popup_reminder.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/icon48x48_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/logo240dpi.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/npatch240dpi.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/progress_circular_background.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/progress_particle.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/reslogo240dpi.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/scrollbar_state2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/smlnpatch240dpi.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/star_big_on.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_happy.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_neutral.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_sad.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stat_sample.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-hdpi/stylogo240dpi.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/index.html
-http://developer.android.com/resources/samples/SpinnerTest/src/com/android/example/spinner/index.html
http://developer.android.com/sdk/api_diff/3/changes/packages_index_additions.html
http://developer.android.com/sdk/api_diff/3/changes/packages_index_changes.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/index.html
-http://developer.android.com/resources/samples/JetBoy/res/layout/main.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RelativeLayout2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout5.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout6.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout7.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout8.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout9.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollView1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollView2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout5.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout6.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout7.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout8.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout9.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout10.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout11.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TableLayout12.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline6.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Baseline7.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/BaselineNested3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RadioGroup1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Visibility1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List5.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List6.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List8.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/CustomView1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ImageButton1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DateWidgets1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/DateWidgets2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Gallery1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Gallery2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Spinner1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Grid1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Grid2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/TextSwitcher1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Animation1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Animation2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Controls1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Controls2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete5.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Focus1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Focus2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Focus3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Animation3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete6.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Buttons1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ChronometerDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ImageView1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionFocus.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionScroll.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/InternalSelectionView.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation4.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation5.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation6.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LayoutAnimation7.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LinearLayout10.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List10.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List11.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List12.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List13.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List9.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RatingBar1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ScrollBar3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SecureViewOverlay.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/SeekBar1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs2.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs3.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/WebView1.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/drawable/icon.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/values/strings.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ContactManager/src/com/example/index.html
-http://developer.android.com/resources/samples/NotePad/tests/src/com/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/alert_dialog_icon.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/app_sample_code.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/arrow_down_float.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/arrow_up_float.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_check_off.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_check_on.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_circle_normal.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/btn_default_normal.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/button.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/ic_contact_picture.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/ic_popup_reminder.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/icon48x48_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/progress_circular_background.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/progress_particle.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/scrollbar_state2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/star_big_on.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_happy.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_neutral.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_sad.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-mdpi/stat_sample.html
-http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/drawable/ic_dictionary.html
-http://developer.android.com/reference/android/os/package-descr.html
-http://developer.android.com/reference/javax/xml/xpath/package-descr.html
-http://developer.android.com/resources/samples/SipDemo/src/com/example/android/sip/index.html
+http://developer.android.com/sdk/api_diff/7/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/7/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/16/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/13/changes/packages_index_changes.html
http://developer.android.com/sdk/api_diff/4/changes/fields_index_removals.html
http://developer.android.com/sdk/api_diff/4/changes/fields_index_additions.html
http://developer.android.com/sdk/api_diff/4/changes/fields_index_changes.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi-v6/ic_launcher.html
-http://developer.android.com/reference/android/app/package-descr.html
-http://developer.android.com/resources/samples/TicTacToeLib/res/layout/lib_game.html
-http://developer.android.com/guide/google/play/billing/billing-intents
-http://developer.android.com/resources/samples/TicTacToeLib/res/values/strings.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-normal-notlong/strings.html
-http://developer.android.com/resources/samples/TicTacToeMain/src/com/example/android/index.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/index.html
-http://developer.android.com/resources/samples/Home/res/layout-land/home.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-large-notlong/strings.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-normal-long/strings.html
-http://developer.android.com/resources/samples/MultiResolution/res/layout-land/main.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-small-long/strings.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/animated_gif.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/balloons.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/beach.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/black_box.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/black_opaque_box.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/box.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/circular_progress.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/filled_box.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/frog.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_background_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/gallery_photo_8.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/icon48x48_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/line.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/logo160dpi.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/npatch160dpi.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo3.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo4.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo5.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/photo6.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/picture_frame.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/reslogo160dpi.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_0.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_0.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/sample_thumb_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/scrollbar_vertical_thumb.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/scrollbar_vertical_track.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/shape_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/smlnpatch160dpi.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable/stylogo160dpi.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/3/changes/fields_index_changes.html
-http://developer.android.com/resources/samples/SearchableDictionary/res/menu/options_menu.html
-http://developer.android.com/resources/samples/Spinner/src/com/android/example/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-normal/strings.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-small-notlong/strings.html
-http://developer.android.com/resources/samples/MultiResolution/src/com/example/android/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/index.html
-http://developer.android.com/resources/samples/LunarLander/res/values/strings.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/layout/input.html
-http://developer.android.com/resources/samples/MultiResolution/res/layout/main.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/logonodpi120.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/logonodpi160.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-nodpi/logonodpi240.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/activity_animation.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/alarm_controller.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/alarm_service.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/alert_dialog.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/alert_dialog_text_entry.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/animation_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/animation_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/animation_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/animations_main_screen.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/appwidget_configure.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/appwidget_provider.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/autocomplete_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_nested_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_nested_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/baseline_nested_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/buttons_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/chronometer.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/contacts_filter.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/controls_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_dialog_activity.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_title.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_title_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/date_widgets_example_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/date_widgets_example_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/density_image_views.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/density_styled_image_views.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/device_admin_sample.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/dialog_activity.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/external_storage.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/external_storage_item.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/focus_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/focus_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/focus_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/foreground_service_controller.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/forward_target.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/forwarding.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/gallery_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/gallery_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/google_login.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/grid_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/grid_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/hello_world.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/image_button_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/image_switcher_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/image_view_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message_info.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message_panel.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/incoming_message_view.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/intents.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/launcher_shortcuts.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/layout_animation_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_10.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_8.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/linear_layout_9.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/link.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_12.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_13.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_8.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_item_checkbox.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_item_icon_text.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/list_position.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/local_sample.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/local_service_binding.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/local_service_controller.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/log_text_box_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/mapview.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/marquee.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/mediaplayer_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/mediaplayer_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/messenger_service_binding.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/morse_code.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/notify_with_text.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/notifying_controller.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/pick_contact.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/preference_widget_mypreference.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/progressbar_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/quick_contacts.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/radio_group_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/ratingbar_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/read_asset.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/receive_result.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/redirect_enter.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/redirect_getter.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/redirect_main.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/relative_layout_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/relative_layout_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/remote_service_binding.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/remote_service_controller.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_four.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_on_launch.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_three.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/reorder_two.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/resources.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/save_restore_state.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/screen_orientation.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/scroll_view_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/scroll_view_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/scrollbar1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/scrollbar2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/scrollbar3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/search_invoke.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/search_query_results.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/secure_view.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/secure_view_overlay.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/seekbar_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/select_dialog.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/send_result.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/service_start_arguments_controller.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/shape_drawable_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/sms_demo.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/spinner_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/status_bar_balloon.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/status_bar_notifications.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/styled_text.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/surface_view_overlay.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_10.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_11.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_12.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_3.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_4.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_5.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_6.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_8.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/table_layout_9.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/tabs1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/text_switcher_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/text_to_speech.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/translucent_background.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/videoview.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/visibility_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/voice_recognition.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/wallpaper_2.html
-http://developer.android.com/resources/samples/ApiDemos/res/layout/webview_1.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-notlong/strings.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml/authenticator.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml/contacts.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/res/xml/syncadapter.html
-http://developer.android.com/reference/android/graphics/drawable/shapes/package-descr.html
-http://developer.android.com/resources/samples/TicTacToeMain/src/com/example/android/tictactoe/index.html
-http://developer.android.com/resources/samples/LunarLander/src/com/example/index.html
-http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/android/index.html
-http://developer.android.com/resources/samples/Snake/src/com/example/android/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/example/index.html
-http://developer.android.com/resources/samples/Home/res/values-nl-rNL/strings.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/android.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/ic_launcher.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi/image_container.9.html
-http://developer.android.com/resources/samples/Snake/res/layout/snake_layout.html
-http://developer.android.com/resources/samples/ContactManager/res/drawable-ldpi/icon.html
-http://developer.android.com/resources/samples/Spinner/src/com/android/example/spinner/index.html
-http://developer.android.com/resources/samples/MultiResolution/src/com/example/android/multires/index.html
-http://developer.android.com/resources/samples/SpinnerTest/src/com/android/example/spinner/test/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/android.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/ic_launcher.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-ldpi/image_container.9.html
-http://developer.android.com/resources/samples/Snake/res/drawable/greenstar.html
-http://developer.android.com/resources/samples/Snake/res/drawable/redstar.html
-http://developer.android.com/resources/samples/Snake/res/drawable/yellowstar.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/logo120dpi.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/npatch120dpi.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/reslogo120dpi.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/smlnpatch120dpi.9.html
-http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/stylogo120dpi.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/index.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/index.html
-http://developer.android.com/resources/samples/ContactManager/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-large-long/strings.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/app_icon.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/star_logo.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg_normal.9.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg_pressed.9.html
-http://developer.android.com/resources/samples/WiktionarySimple/res/drawable/widget_bg_selected.9.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/index.html
-http://developer.android.com/resources/samples/Snake/tests/src/index.html
-http://developer.android.com/resources/samples/Snake/tests/AndroidManifest.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/background.9.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/icon.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_0.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_1.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_2.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_3.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_4.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_5.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_6.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable/sample_7.html
-http://developer.android.com/resources/samples/AccelerometerPlay/src/com/example/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/cycle_7.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/fade.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/hold.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/hyperspace_in.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/hyperspace_out.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_animation_row_left_slide.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_animation_row_right_slide.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_animation_table.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_bottom_to_top_slide.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_grid_fade.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_grid_inverse_fade.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_random_fade.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/layout_wave_scale.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/push_left_in.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/push_left_out.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/push_up_in.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/push_up_out.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/shake.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/slide_left.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/slide_right.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/slide_top_to_bottom.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/wave_scale.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/zoom_enter.html
-http://developer.android.com/resources/samples/ApiDemos/res/anim/zoom_exit.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/android.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/ic_launcher.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi/image_container.9.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-mdpi-v6/ic_launcher.html
-http://developer.android.com/resources/samples/LunarLander/res/layout/lunar_layout.html
-http://developer.android.com/resources/samples/SpinnerTest/res/values/index.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/android/index.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/index.html
-http://developer.android.com/resources/samples/AccelerometerPlay/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/index.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChat.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChatService.html
-http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/DeviceListActivity.html
-http://developer.android.com/resources/samples/Home/res/values-es-rUS/strings.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/index.html
-http://developer.android.com/resources/samples/NotePad/tests/src/com/example/index.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/index.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/BackupRestoreActivity.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/FileHelperExampleAgent.html
-http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/backuprestore/MultiRecordExampleAgent.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/index.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_delete.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_done.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_return.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_search.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_shift.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-mdpi/sym_keyboard_space.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/index.html
-http://developer.android.com/resources/samples/NotePad/tests/src/com/example/android/index.html
-http://developer.android.com/resources/samples/Wiktionary/res/anim/slide_in.html
-http://developer.android.com/resources/samples/Wiktionary/res/anim/slide_out.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/example/android/tictactoe/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/index.html
-http://developer.android.com/resources/samples/SpinnerTest/res/values/strings.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/robot.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/skycubemap0.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/skycubemap1.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/skycubemap2.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/skycubemap3.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/skycubemap4.html
-http://developer.android.com/resources/samples/ApiDemos/res/raw/skycubemap5.html
-http://developer.android.com/resources/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/index.html
-http://developer.android.com/resources/samples/Home/src/com/example/android/index.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/ExtendedWikiHelper.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/LookupActivity.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/SimpleWikiHelper.html
-http://developer.android.com/resources/samples/Wiktionary/src/com/example/android/wiktionary/WordWidget.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/CandidateView.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/LatinKeyboard.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/LatinKeyboardView.html
-http://developer.android.com/resources/samples/SoftKeyboard/src/com/example/android/softkeyboard/SoftKeyboard.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/camera_menu.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/category_order.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/checkable.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/disabled.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/groups.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/order.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/shortcuts.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/submenu.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/title_icon.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/title_only.html
-http://developer.android.com/resources/samples/ApiDemos/res/menu/visible.html
-http://developer.android.com/resources/samples/Home/res/drawable/all_applications.html
-http://developer.android.com/resources/samples/Home/res/drawable/all_applications_background.html
-http://developer.android.com/resources/samples/Home/res/drawable/all_applications_button_background.html
-http://developer.android.com/resources/samples/Home/res/drawable/favorite_background.html
-http://developer.android.com/resources/samples/Home/res/drawable/grid_selector.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/app/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/os/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/view/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/AllTests.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosApplicationTests.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/ApiDemosTest.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/simplewiktionary/index.html
-http://developer.android.com/resources/samples/Snake/res/values/attrs.html
-http://developer.android.com/resources/samples/Snake/res/values/strings.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/index.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/index.html
-http://developer.android.com/resources/samples/Spinner/src/com/android/example/spinner/SpinnerActivity.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_delete.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_done.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_return.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_search.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_shift.html
-http://developer.android.com/resources/samples/SoftKeyboard/res/drawable-hdpi/sym_keyboard_space.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-small/strings.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePad.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotesList.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotesLiveFolder.html
-http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/TitleEditor.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2ActivityTest.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/view/Focus2AndroidTest.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/BusinessCardActivity.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/ContactAccessor.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/ContactAccessorSdk3_4.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/ContactAccessorSdk5.html
-http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/ContactInfo.html
-http://developer.android.com/resources/samples/TicTacToeLib/src/com/example/android/tictactoe/library/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/values/strings.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-long/strings.html
-http://developer.android.com/resources/samples/LunarLander/src/com/example/android/index.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/simplewiktionary/SimpleWikiHelper.html
-http://developer.android.com/resources/samples/WiktionarySimple/src/com/example/android/simplewiktionary/WordWidget.html
-http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/index.html
-http://developer.android.com/resources/samples/Snake/tests/src/com/index.html
-http://developer.android.com/resources/samples/NotePad/tests/src/com/example/android/notepad/index.html
-http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/ContactAdder.html
-http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/ContactManager.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/index.html
-http://developer.android.com/resources/samples/Home/src/com/example/android/home/index.html
-http://developer.android.com/resources/samples/MultiResolution/res/drawable-hdpi-v6/ic_launcher.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_removals.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_additions.html
-http://developer.android.com/sdk/api_diff/5/changes/fields_index_changes.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube1/index.html
-http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube2/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/index.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/Asteroid.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/Explosion.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/JetBoy.html
-http://developer.android.com/resources/samples/JetBoy/src/com/example/android/jetboy/JetBoyView.html
-http://developer.android.com/resources/samples/Snake/tests/src/com/example/index.html
-http://developer.android.com/resources/samples/Home/src/com/example/android/home/ApplicationInfo.html
-http://developer.android.com/resources/samples/Home/src/com/example/android/home/ApplicationsStackLayout.html
-http://developer.android.com/resources/samples/Home/src/com/example/android/home/Home.html
-http://developer.android.com/resources/samples/Home/src/com/example/android/home/Wallpaper.html
-http://developer.android.com/resources/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.html
-http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/Snake.html
-http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/SnakeView.html
-http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/TileView.html
-http://developer.android.com/resources/samples/Wiktionary/res/layout/about.html
-http://developer.android.com/resources/samples/Wiktionary/res/layout/lookup.html
-http://developer.android.com/resources/samples/Wiktionary/res/layout/widget_message.html
-http://developer.android.com/resources/samples/Wiktionary/res/layout/widget_word.html
-http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/android/lunarlander/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/os/MorseCodeConverterTest.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/app/ForwardingTest.html
-http://developer.android.com/resources/samples/ApiDemos/tests/src/com/example/android/apis/app/LocalServiceTest.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/ApiDemos.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/ApiDemosApplication.html
-http://developer.android.com/resources/samples/ApiDemos/res/values-large/strings.html
-http://developer.android.com/resources/samples/Snake/tests/src/com/example/android/index.html
-http://developer.android.com/resources/samples/NotePad/tests/src/com/example/android/notepad/NotePadTest.html
-http://developer.android.com/resources/samples/MultiResolution/src/com/example/android/multires/MultiRes.html
-http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/index.html
-http://developer.android.com/resources/samples/LunarLander/tests/src/com/example/android/lunarlander/LunarLanderTest.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/StyledText.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ResourcesSample.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/PickContact.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/MorseCode.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/MorseCodeConverter.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/SmsMessageReceiver.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/SmsMessagingDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/SmsReceivedDialog.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/HelloWorld.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PersistentState.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReceiveResult.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Forwarding.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RedirectEnter.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TranslucentActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TranslucentBlurActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmController.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/OneShotAlarm.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RepeatingAlarm.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotifyWithText.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SearchInvoke.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SearchQueryResults.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SearchSuggestionSampleProvider.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AdvancedPreferences.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlertDialogSamples.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Animation.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilter.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ContactsFilterInstrumentation.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ContactsSelectInstrumentation.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/CustomDialogActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/CustomTitle.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DefaultValues.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DialogActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ForwardTarget.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Intents.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LaunchingPreferences.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalSample.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalSampleInstrumentation.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MyPreference.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotificationDisplay.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotifyingController.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PreferenceDependencies.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromCode.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/PreferencesFromXml.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/QuickContactsDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RedirectGetter.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/RedirectMain.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderFour.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderOnLaunch.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderThree.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ReorderTwo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/ScreenOrientation.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SendResult.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SetWallpaperActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TextToSpeechActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/WallpaperActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ShapeDrawable1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PolyToPoly.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PathEffects.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/SurfaceViewOverlay.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/AlphaBitmap.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawable.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawables.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Arcs.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/BitmapPixels.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Clipping.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorFilters.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ColorPickerDialog.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Compass.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Cube.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CubeMapActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CubeRenderer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FrameBufferObjectActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20Activity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20TriangleRenderer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GradientDrawable1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GraphicsActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Layers.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/MatrixPaletteActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/MatrixPaletteRenderer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/MeasureText.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PathFillTypes.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Patterns.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PictureLayout.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Pictures.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ProxyDrawable.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmap.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmapView.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Regions.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/RoundRects.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/ScaleToFit.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/SensorTest.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/StaticTriangleRenderer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Sweep.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TextAlign.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TranslucentGLSurfaceViewActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TriangleRenderer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Typefaces.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/UnicodeChart.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Vertices.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Link.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/LogTextBox1.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/text/Marquee.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/Transition3d.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleBroadcastReceiver.html
-http://developer.android.com/resources/samples/Snake/tests/src/com/example/android/snake/index.html
-http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/LunarLander.html
-http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/LunarView.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/index.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Cube.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLColor.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLFace.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLShape.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLVertex.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/GLWorld.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Kube.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/KubeRenderer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/Layer.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/kube/M4.html
-http://developer.android.com/resources/samples/Snake/tests/src/com/example/android/snake/SnakeTest.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/DictionaryDatabase.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/DictionaryProvider.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.html
-http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/WordActivity.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/client/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/index.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/Constants.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Grid.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/LabelMaker.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixGrabber.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixStack.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixTrackingGL.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/NumericSprite.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/Projector.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextActivity.html
-http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextRenderer.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncAdapter.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncService.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/AuthenticationService.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/Authenticator.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/AuthenticatorActivity.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/client/NetworkUtilities.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/client/User.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/BatchOperation.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactOperations.html
-http://developer.android.com/resources/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/SampleSyncAdapterColumns.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/16/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/3/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/10/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/4/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/packages_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_all.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/constructors_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/classes_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/methods_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/packages_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/packages_index_changes.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_removals.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_additions.html
+http://developer.android.com/sdk/api_diff/9/changes/fields_index_changes.html
\ No newline at end of file
diff --git a/docs/html/tools/adk/adk2.jd b/docs/html/tools/adk/adk2.jd
index 6ee4a46..d5be8ab 100644
--- a/docs/html/tools/adk/adk2.jd
+++ b/docs/html/tools/adk/adk2.jd
@@ -26,10 +26,12 @@
<h2>See also</h2>
<ol>
+ <li><a href="https://developers.google.com/events/io/sessions/gooio2012/128/">
+ Google I/O Session Video</a></li>
<li><a href="aoa.html">Android Open Accessory Protocol</a></li>
<li><a href="aoa2.html">Android Open Accessory Protocol 2.0</a></li>
- <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">USB Accessory Dev
- Guide</a></li>
+ <li><a href="{@docRoot}guide/topics/connectivity/usb/accessory.html">
+ USB Accessory Dev Guide</a></li>
</ol>
</div>
</div>
@@ -231,13 +233,18 @@
system.</li>
<li>Download and setup the {@code repo} tool, as described on the <a
href="http://source.android.com/source/downloading.html#installing-repo">Android open source
-project</a> site.</li>
+project</a> site.
+ <p class="note"><strong>Note:</strong> Developers using Windows must use a Linux compatibility
+package, such as <a href="http://www.cygwin.com/">cygwin</a>, to install and run {@code repo}.
+Within your compatibility environment, you must install {@code curl}, {@code git} and {@code
+python} to be able to download and use the {@code repo} tool.</p>
+ </li>
<li>In a terminal window, create a new directory for the downloaded source files, initialize and
synchronize a local repository:
<pre>
$> mkdir android-accessories
$> cd android-accessories
-$> repo -init -u https://android.googlesource.com/platform/manifest -b android-accessories
+$> repo init -u https://android.googlesource.com/accessories/manifest
$> repo sync
</pre>
</li>
@@ -257,28 +264,34 @@
<h3 id="dev-setup">Setting Up the Development Environment</h3>
-<p>The ADK 2012 source code repository includes an integrated development environment (IDE) that you
-can use to develop software for and program the ADK 2012 accessory. The following instructions
-explain how to build and run the ADK 2012 IDE.</p>
+<p>The ADK 2012 comes with an integrated development environment (IDE) that you use to develop
+software and program the ADK 2012 accessory. The following instructions explain how to setup and run
+the ADK 2012 IDE.</p>
-<p>To set up, build and run the ADK 2012 IDE:</p>
+<p>To set up and run the ADK 2012 IDE:</p>
<ol>
- <li><a href="#src-download">Download</a> the ADK 2012 source code files.</li>
<li>Download and install the Java Development Kit 6 or higher from <a
-href="http://java.oracle.com">java.oracle.com</a>.</li>
- <li>Download and install <a href="http://ant.apache.org/">Apache Ant</a>.</li>
- <li>In a terminal window, navigate to {@code <adk-source-download>/external/ide/build}
-and execute the following command to build the ADK 2012 IDE:
-<pre>$> ant</pre>
+ href="http://java.oracle.com">java.oracle.com</a>.</li>
+ <li>Download the ADK 2012 IDE for your development platform:
+ <ul>
+ <li><a href="https://dl-ssl.google.com/android/adk/adk2012_ide-win32-20120629.zip">
+ Windows</a></li>
+ <li><a href="https://dl-ssl.google.com/android/adk/adk2012_ide-macosx-20120626.zip">
+ Mac</a></li>
+ <li>Linux
+ <a href="https://dl-ssl.google.com/android/adk/adk2012_ide-linux32-20120626.tgz">32bit</a>,
+ <a href="https://dl-ssl.google.com/android/adk/adk2012_ide-linux64-20120626.tgz">64bit</a>
+ </li>
+ </ul>
</li>
- <li>After the build successfully completes, execute the following command to run the ADK 2012
-IDE:
-<pre>$> ant run</pre></li>
+ <li>Unpack the downloaded archive.</li>
+ <li>Run the application by navigating to the unpacked {@code ADK2012_IDE/} folder and execute
+ the {@code arduino} file.</li>
</ol>
-<p>After you have successfully built and run the ADK 2012 IDE, you must configure it to use the
-ADK 2012 library.</p>
+<p>After you have successfully installed and run the ADK 2012 IDE, you must configure it to use
+the ADK 2012 library.</p>
<p>To configure the ADK 2012 IDE for use with the ADK libraries:</p>
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
index ddebed60..4e75f2e 100644
--- a/docs/html/tools/help/adb.jd
+++ b/docs/html/tools/help/adb.jd
@@ -23,7 +23,7 @@
<li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
<li><a href="#commandsummary">Listing of adb Commands </a></li>
<li><a href="#shellcommands">Issuing Shell Commands</a></li>
-<li><a href="#logcat">Enabling logcat Logging</a></li>
+<li><a href="#logcat">Enabling Logcat Logging</a></li>
<li><a href="#stopping">Stopping the adb Server</a></li>
</ol>
@@ -464,23 +464,22 @@
</tr>
</table>
-
+<a name="stdout"></a>
+<a name="usinglogcat"></a>
+<a name="outputformat"></a>
+<a name="filteringoutput"></a>
+<a name="stdout"></a>
+<a name="logcatoptions"></a>
<a name="logcat"></a>
<h2>Enabling logcat Logging</h2>
<p>The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the <code>logcat</code> command.</p>
-<a name="usinglogcat"></a>
-
-<h3>Using logcat Commands</h3>
-
<p>You can use the <code>logcat</code> command to view and follow the contents of the system's log buffers. The general usage is:</p>
<pre>[adb] logcat [<option>] ... [<filter-spec>] ...</pre>
-<p>The sections below explain filter specifications and the command options. See <a href="#logcatoptions">Listing of logcat Command Options</a> for a summary of options. </p>
-
<p>You can use the <code>logcat</code> command from your development computer or from a remote adb shell in an emulator/device instance. To view log output in your development computer, you use</p>
<pre>$ adb logcat</pre>
@@ -489,174 +488,8 @@
<pre># logcat</pre>
-<a name="filteringoutput"></a>
+<p>See <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a> for complete information about logcat commend options and filter specifications.</p>
-<h3>Filtering Log Output</h3>
-
-<p>Every Android log message has a <em>tag</em> and a <em>priority</em> associated with it. </p>
-
-<ul>
-<li>The tag of a log message is a short string indicating the system component from which the message originates (for example, "View" for the view system). </li>
-
-<li>The priority is one of the following character values, ordered from lowest to highest priority:</li>
-
-<ul>
- <li><code>V</code> — Verbose (lowest priority)</li>
- <li><code>D</code> — Debug</li>
- <li><code>I</code> — Info (default priority)</li>
- <li><code>W</code> — Warning</li>
- <li><code>E</code> — Error</li>
- <li><code>F</code> — Fatal</li>
- <li><code>S</code> — Silent (highest priority, on which nothing is ever printed)</li>
-</ul>
-</ul>
-
-<p>You can obtain a list of tags used in the system, together with priorities, by running <code>logcat</code> and observing the first two columns
-of each message, given as <code><priority>/<tag></code>. </p>
-
-<p>Here's an example of logcat output that shows that the message relates to priority level "I" and tag "ActivityManager":</p>
-
-<pre>I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}</pre>
-
-<p>To reduce the log output to a manageable level, you can restrict log output using <em>filter expressions</em>. Filter expressions let you indicate to the system the tags-priority combinations that you are interested in — the system suppresses other messages for the specified tags. </p>
-
-<p>A filter expression follows this format <code>tag:priority ...</code>, where <code>tag</code> indicates the tag of interest and <code>priority</code> indicates the <em>minimum</em> level of priority to report for that tag. Messages for that tag at or above the specified priority are written to the log. You can supply any number of <code>tag:priority</code> specifications in a single filter expression. The series of specifications is whitespace-delimited. The default output is to show all log messages with the Info priority (*:I).</p>
-
-<p>Here's an example of a filter expression that suppresses all log messages except those with the tag "ActivityManager", at priority "Info" or above, and all log messages with tag "MyApp", with priority "Debug" or above:</p>
-
-<pre>adb logcat ActivityManager:I MyApp:D *:S</pre>
-
-<p>The final element in the above expression, <code>*:S</code>, sets the priority level for all tags to "silent", thus ensuring only log messages with "View" and "MyApp" are displayed. Using <code>*:S</code> is an excellent way to ensure that log output is restricted to the filters that you have explicitly specified — it lets your filters serve as a "whitelist" for log output.</p>
-
-<p>The following filter expression displays all log messages with priority level "warning" and higher, on all tags:</p>
-
-<pre>adb logcat *:W</pre>
-
-<p>If you're running <code>logcat</code> from your development computer (versus running it on a remote adb shell), you can also set a default filter expression by exporting a value for the environment variable <code>ANDROID_LOG_TAGS</code>:</p>
-
-<pre>export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"</pre>
-
-<p>Note that <code>ANDROID_LOG_TAGS</code> filter is not exported to the emulator/device instance, if you are running <code>logcat</code> from a remote shell or using <code>adb shell logcat</code>.</p>
-
-
-<a name="outputformat"></a>
-
-<h3>Controlling Log Output Format</h3>
-
-<p>Log messages contain a number of metadata fields, in addition to the tag and priority. You can modify the output format for messages so that they display a specific metadata field. To do so, you use the <code>-v</code> option and specify one of the supported output formats listed below. </p>
-
-<ul>
- <li><code>brief</code> — Display priority/tag and the PID of process issuing the message (the default format).</li>
- <li><code>process</code> — Display PID only.</li>
- <li><code>tag</code> — Display the priority/tag only. </li>
- <li><code>raw</code> — Display the raw log message, with no other metadata fields.</li>
- <li><code>time</code> — Display the date, invocation time, priority/tag, and PID of the process issuing the message.</li>
- <li><code>threadtime</code> — Display the date, invocation time, priority, tag, and the PID and TID of the thread issuing the message.</li>
- <li><code>long</code> — Display all metadata fields and separate messages with a blank lines.</li>
-</ul>
-
-<p>When starting <code>logcat</code>, you can specify the output format you want by using the <code>-v</code> option:</p>
-
-<pre>[adb] logcat [-v <format>]</pre>
-
-<p>Here's an example that shows how to generate messages in <code>thread</code> output format: </p>
-
-<pre>adb logcat -v thread</pre>
-
-<p>Note that you can only specify one output format with the <code>-v</code> option. </p>
-
-<a name="alternativebuffers"></a>
-
-<h3>Viewing Alternative Log Buffers </h3>
-
-<p>The Android logging system keeps multiple circular buffers for log messages, and not all of the log messages are sent to the default circular buffer. To see additional log messages, you can start <code>logcat</code> with the <code>-b</code> option, to request viewing of an alternate circular buffer. You can view any of these alternate buffers: </p>
-
-<ul>
-<li><code>radio</code> — View the buffer that contains radio/telephony related messages.</li>
-<li><code>events</code> — View the buffer containing events-related messages.</li>
-<li><code>main</code> — View the main log buffer (default)</li>
-</ul>
-
-<p>The usage of the <code>-b</code> option is:</p>
-
-<pre>[adb] logcat [-b <buffer>]</pre>
-
-<p>Here's an example of how to view a log buffer containing radio and telephony messages: </p>
-
-<pre>adb logcat -b radio</b></pre>
-
-<a name="stdout"></a>
-
-<h3>Viewing stdout and stderr</h3>
-
-<p>By default, the Android system sends <code>stdout</code> and <code>stderr</code> (<code>System.out</code> and <code>System.err</code>) output to <code>/dev/null</code>. In
-processes that run the Dalvik VM, you can have the system write a copy of the output to the log file. In this case, the system writes the messages to the log using the log tags <code>stdout</code> and <code>stderr</code>, both with priority <code>I</code>. </p>
-
-<p>To route the output in this way, you stop a running emulator/device instance and then use the shell command <code>setprop</code> to enable the redirection of output. Here's how you do it: </p>
-
-<pre>$ adb shell stop
-$ adb shell setprop log.redirect-stdio true
-$ adb shell start</pre>
-
-<p>The system retains this setting until you terminate the emulator/device instance. To use the setting as a default on the emulator/device instance, you can add an entry to <code>/data/local.prop</code>
-on the device.</p>
-
-<a name="logcatoptions"></a>
-
-<h3>Listing of logcat Command Options</h3>
-
-<table>
-<tr>
- <th>Option</th>
- <th>Description</th>
-</tr>
-
-<tr>
-<td><code>-b <buffer></code></td>
-<td>Loads an alternate log buffer for viewing, such as <code>event</code> or <code>radio</code>. The <code>main</code> buffer is used by default. See <a href="#alternativebuffers">Viewing Alternative Log Buffers</a>.</td>
-</tr>
-
-<tr>
-<td><code>-c</code></td>
-<td>Clears (flushes) the entire log and exits. </td>
-</tr>
-
-<tr>
-<td><code>-d</code></td>
-<td>Dumps the log to the screen and exits.</td>
-</tr>
-
-<tr>
-<td><code>-f <filename></code></td>
-<td>Writes log message output to <code><filename></code>. The default is <code>stdout</code>.</td>
-</tr>
-
-<tr>
-<td><code>-g</code></td>
-<td>Prints the size of the specified log buffer and exits. </td>
-</tr>
-
-<tr>
-<td><code>-n <count></code></td>
-<td>Sets the maximum number of rotated logs to <code><count></code>. The default value is 4. Requires the <code>-r</code> option. </td>
-</tr>
-
-<tr>
-<td><code>-r <kbytes></code></td>
-<td>Rotates the log file every <code><kbytes></code> of output. The default value is 16. Requires the <code>-f</code> option. </td>
-</tr>
-
-<tr>
-<td><code>-s</code></td>
-<td>Sets the default filter spec to silent. </td>
-</tr>
-
-<tr>
-<td><code>-v <format></code></td>
-<td>Sets the output format for log messages. The default is <code>brief</code> format. For a list of supported formats, see <a href="#outputformat">Controlling Log Output Format</a>.</td>
-</tr>
-
-</table>
<a name="stopping"></a>
diff --git a/docs/html/tools/help/logcat.jd b/docs/html/tools/help/logcat.jd
index d504b22..ede1905 100644
--- a/docs/html/tools/help/logcat.jd
+++ b/docs/html/tools/help/logcat.jd
@@ -8,12 +8,11 @@
circular buffers, which then can be viewed and filtered by the <code>logcat</code> command. You can use
<code>logcat</code> from an ADB shell to view the log messages.</p>
- <p>This document is a reference to the available command line options. For more information on <code>logcat</code>, see
- <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>.
-For more
- information on accessing <code>logcat</code> from DDMS, instead of the command line, see the documentation for the
- <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>.
- </p>
+ <p>For complete information about logcat options and filtering specifications, see
+ <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>.</p>
+
+ <p>For more information on accessing <code>logcat</code> from DDMS, instead of the command line, see
+ <a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>. </p>
<h3>Syntax</h3>
<pre>
@@ -48,7 +47,7 @@
<td>Loads an alternate log buffer for viewing, such as <code>event</code> or
<code>radio</code>. The <code>main</code> buffer is used by default. See <a href=
- "#alternativebuffers">Viewing Alternative Log Buffers</a>.</td>
+ "{@docRoot}tools/debugging/debugging-log.html#alternativeBuffers">Viewing Alternative Log Buffers</a>.</td>
</tr>
<tr>
@@ -100,7 +99,7 @@
<td><code>-v <format></code></td>
<td>Sets the output format for log messages. The default is <code>brief</code> format. For a
- list of supported formats, see <a href="#outputformat">Controlling Log Output
+ list of supported formats, see <a href="{@docRoot}tools/debugging/debugging-log.html#outputFormat">Controlling Log Output
Format</a>.</td>
</tr>
</table>
diff --git a/docs/html/tools/index.jd b/docs/html/tools/index.jd
index ab7d9a6..3fc9bfe 100644
--- a/docs/html/tools/index.jd
+++ b/docs/html/tools/index.jd
@@ -66,7 +66,7 @@
<h3>Powerful Debugging</h3>
<ul>
- <li>Full Java debugger with on-device debugging and Android-specidic tools</li>
+ <li>Full Java debugger with on-device debugging and Android-specific tools</li>
<li>Built-in memory analysis, performance/CPU profiling, OpenGL ES tracing.</li>
<li>Graphical tools for debugging and optimizing UI, runtime inspecton of UI structure and performance.</li>
<li>Runtime graphical analysis of your app's network bandwidth usage.</li>
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
index ae3eb05..aa21423 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -130,7 +130,7 @@
<li>Tracer for GLES
<ul>
<li>Added new perspective view and tools for tracing OpenGL calls for an application and
-track the visual results of each call. (<a href="{@docRoot}tools/gltracer.html">more info</a>)</li>
+track the visual results of each call. (<a href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
</ul>
</li>
<li>Lint
diff --git a/docs/html/tools/sdk/installing.jd b/docs/html/tools/sdk/installing.jd
index 4837ab7..126d992 100644
--- a/docs/html/tools/sdk/installing.jd
+++ b/docs/html/tools/sdk/installing.jd
@@ -516,7 +516,7 @@
<p><strong>Follow the Notepad tutorial</strong></p>
<ul>
- <li>The <a href="{@docRoot}resources/tutorials/notepad/index.html">
+ <li>The <a href="{@docRoot}training/notepad/index.html">
Notepad Tutorial</a> shows you how to build a full Android application
and provides helpful commentary on the Android system and API. The
Notepad tutorial helps you bring together the important design
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index 5d9bb49..14d1aa4 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -86,11 +86,11 @@
<ul>
<li>Added new Device Monitor application, grouping Android debugging tools into a
single application, including ddms, traceview, hierarchyviewer and Tracer for GLES. (<a
-href="{@docRoot}tools/gltracer.html">more info</a>)</li>
+href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
<li>Added new System Trace new tool for tracing Android system activity. This tool allow you
to capture a slice of system activity, plus additional information tagged from the <strong>Settings
> Developer Options > Monitoring: Enable traces</strong> or with specific calls added to your
-application code. (<a href="{@docRoot}tools/systrace.html">more info</a>)</li>
+application code.</li>
</li>
<li>Build System
<ul>
diff --git a/docs/html/training/basics/activity-lifecycle/pausing.jd b/docs/html/training/basics/activity-lifecycle/pausing.jd
index fa88beb..f656fce 100644
--- a/docs/html/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html/training/basics/activity-lifecycle/pausing.jd
@@ -126,7 +126,7 @@
android.app.Activity#onResume()} to initialize components that you release during {@link
android.app.Activity#onPause()} and perform any other initializations that must occur each time the
activity enters the Resumed state (such as begin animations and initialize components only used
-while the actiivty has user focus).</p>
+while the activity has user focus).</p>
<p>The following example of {@link android.app.Activity#onResume()} is the counterpart to
the {@link android.app.Activity#onPause()} example above, so it initializes the camera that's
diff --git a/docs/html/training/basics/activity-lifecycle/recreating.jd b/docs/html/training/basics/activity-lifecycle/recreating.jd
index 005a95b..3bbf0bb 100644
--- a/docs/html/training/basics/activity-lifecycle/recreating.jd
+++ b/docs/html/training/basics/activity-lifecycle/recreating.jd
@@ -32,7 +32,7 @@
<p>There are a few scenarios in which your activity is destroyed due to normal app behavior, such as
when the user presses the <em>Back</em> button or your activity signals its own destruction by
-calling {@link android.app.Activity#finish()}. The system may also destory your activity if it's
+calling {@link android.app.Activity#finish()}. The system may also destroy your activity if it's
currently stopped and hasn't been used in a long time or the foreground activity requires more
resources so the system must shut down background processes to recover memory.</p>
diff --git a/docs/html/training/basics/activity-lifecycle/starting.jd b/docs/html/training/basics/activity-lifecycle/starting.jd
index c32968b..1a4bc2d 100644
--- a/docs/html/training/basics/activity-lifecycle/starting.jd
+++ b/docs/html/training/basics/activity-lifecycle/starting.jd
@@ -285,6 +285,6 @@
android.app.Activity#finish()} from within the {@link android.app.Activity#onCreate onCreate()}
method. In some cases, such as when your activity operates as a temporary decision maker to
launch another activity, you might call {@link android.app.Activity#finish()} from within {@link
-android.app.Activity#onCreate onCreate()} to destory the activity. In this case, the system
+android.app.Activity#onCreate onCreate()} to destroy the activity. In this case, the system
immediately calls {@link android.app.Activity#onDestroy} without calling any of the other
lifecycle methods.</p>
diff --git a/docs/html/training/basics/firstapp/building-ui.jd b/docs/html/training/basics/firstapp/building-ui.jd
index 30b6529..f0ec79e 100644
--- a/docs/html/training/basics/firstapp/building-ui.jd
+++ b/docs/html/training/basics/firstapp/building-ui.jd
@@ -183,7 +183,7 @@
<p>The plus-symbol (<code>+</code>) is needed only when you're defining a resource ID for the
first time. It tells the SDK tools that the resource ID needs to be created. Thus, when the app is
compiled, the SDK tools use the ID value, <code>edit_message</code>, to create a new identifier in
-your project's {@code gen/R.java} file that is now assiciated with the {@link
+your project's {@code gen/R.java} file that is now associated with the {@link
android.widget.EditText} element. Once the resource ID is created, other references to the ID do not
need the plus symbol. This is the only attribute that may need the plus-symbol. See the sidebox for
more information about resource objects.</p></dd>
@@ -289,7 +289,7 @@
<p>The weight value allows you to specify the amount of remaining space each view should consume,
relative to the amount consumed by sibling views, just like the ingredients in a drink recipe: "2
-parts vodka, 1 part coffee liquer" means two-thirds of the drink is vodka. For example, if you give
+parts vodka, 1 part coffee liqueur" means two-thirds of the drink is vodka. For example, if you give
one view a weight of 2 and another one a weight of 1, the sum is 3, so the first view gets 2/3 of
the remaining space and the second view gets the rest. If you give a third view a weight of 1,
then the first view now gets 1/2 the remaining space, while the remaining two each get 1/4.</p>
diff --git a/docs/html/training/basics/intents/sending.jd b/docs/html/training/basics/intents/sending.jd
index f2a2cc3..77f0e1a 100644
--- a/docs/html/training/basics/intents/sending.jd
+++ b/docs/html/training/basics/intents/sending.jd
@@ -112,7 +112,7 @@
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"}); // recipients
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");
-emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment");
+emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));
// You can also attach multiple items by passing an ArrayList of Uris
</pre>
</li>
diff --git a/docs/html/training/basics/supporting-devices/languages.jd b/docs/html/training/basics/supporting-devices/languages.jd
index d83fbca..739c282 100644
--- a/docs/html/training/basics/supporting-devices/languages.jd
+++ b/docs/html/training/basics/supporting-devices/languages.jd
@@ -92,8 +92,8 @@
<pre>
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="title">Ma Application</string>
- <string name="hello_world">Bonjour tout le Monde!</string>
+ <string name="title">Mon Application</string>
+ <string name="hello_world">Bonjour le monde !</string>
</resources>
</pre>
diff --git a/docs/html/training/cloudsync/aesync.jd b/docs/html/training/cloudsync/aesync.jd
index c60d28b..a21b429 100644
--- a/docs/html/training/cloudsync/aesync.jd
+++ b/docs/html/training/cloudsync/aesync.jd
@@ -224,8 +224,8 @@
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Query query = pm.newQuery("select from " + Task.class.getName()
- + " where id==" + id.toString() + " && emailAddress=='" + getUserEmail() + "'");
- List<Task> list = (List<Task>) query.execute();
+ + " where id==" + id.toString() + " && emailAddress=='" + getUserEmail() + "'");
+ List<Task> list = (List<Task>) query.execute();
return list.size() == 0 ? null : list.get(0);
} catch (RuntimeException e) {
System.out.println(e);
@@ -273,24 +273,24 @@
public void fetchTasks (Long id) {
// Request is wrapped in an AsyncTask to avoid making a network request
// on the UI thread.
- new AsyncTask<Long, Void, List<TaskProxy>>() {
+ new AsyncTask<Long, Void, List<TaskProxy>>() {
@Override
- protected List<TaskProxy> doInBackground(Long... arguments) {
- final List<TaskProxy> list = new ArrayList<TaskProxy>();
+ protected List<TaskProxy> doInBackground(Long... arguments) {
+ final List<TaskProxy> list = new ArrayList<TaskProxy>();
MyRequestFactory factory = Util.getRequestFactory(mContext,
MyRequestFactory.class);
TaskRequest taskRequest = factory.taskNinjaRequest();
if (arguments.length == 0 || arguments[0] == -1) {
- factory.taskRequest().queryTasks().fire(new Receiver<List<TaskProxy>>() {
+ factory.taskRequest().queryTasks().fire(new Receiver<List<TaskProxy>>() {
@Override
- public void onSuccess(List<TaskProxy> arg0) {
+ public void onSuccess(List<TaskProxy> arg0) {
list.addAll(arg0);
}
});
} else {
newTask = true;
- factory.taskRequest().readTask(arguments[0]).fire(new Receiver<TaskProxy>() {
+ factory.taskRequest().readTask(arguments[0]).fire(new Receiver<TaskProxy>() {
@Override
public void onSuccess(TaskProxy arg0) {
list.add(arg0);
@@ -301,7 +301,7 @@
}
@Override
- protected void onPostExecute(List<TaskProxy> result) {
+ protected void onPostExecute(List<TaskProxy> result) {
TaskNinjaActivity.this.dump(result);
}
@@ -309,7 +309,7 @@
}
...
-public void dump (List<TaskProxy> tasks) {
+public void dump (List<TaskProxy> tasks) {
for (TaskProxy task : tasks) {
Log.i("Task output", task.getName() + "\n" + task.getNote());
}
@@ -331,7 +331,7 @@
result looks something like this.</p>
<pre>
-new AsyncTask<Void, Void, Void>() {
+new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... arg0) {
MyRequestFactory factory = (MyRequestFactory)
diff --git a/docs/html/training/improving-layouts/loading-ondemand.jd b/docs/html/training/improving-layouts/loading-ondemand.jd
index 0fa2855..9abd8fa 100644
--- a/docs/html/training/improving-layouts/loading-ondemand.jd
+++ b/docs/html/training/improving-layouts/loading-ondemand.jd
@@ -24,7 +24,8 @@
<!-- other docs (NOT javadocs) -->
<h2>You should also read</h2>
<ul>
- <li><a href="{@docRoot}resources/articles/layout-tricks-stubs.html">Using ViewStubs</a></li>
+ <li><a href="http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-with.html"
+ >Optimize with stubs (blog post)</a></li>
</ul>
</div>
diff --git a/docs/html/resources/tutorials/notepad/codelab/NotepadCodeLab.zip b/docs/html/training/notepad/codelab/NotepadCodeLab.zip
similarity index 100%
rename from docs/html/resources/tutorials/notepad/codelab/NotepadCodeLab.zip
rename to docs/html/training/notepad/codelab/NotepadCodeLab.zip
Binary files differ
diff --git a/docs/html/resources/tutorials/notepad/index.jd b/docs/html/training/notepad/index.jd
similarity index 93%
rename from docs/html/resources/tutorials/notepad/index.jd
rename to docs/html/training/notepad/index.jd
index 1f37c41..87a57d1 100644
--- a/docs/html/resources/tutorials/notepad/index.jd
+++ b/docs/html/training/notepad/index.jd
@@ -83,7 +83,7 @@
table lists the
tutorial examples and describes what each covers. ">
<tr>
- <th width="120"><a href="{@docRoot}resources/tutorials/notepad/notepad-ex1.html">Exercise
+ <th width="120"><a href="{@docRoot}training/notepad/notepad-ex1.html">Exercise
1</a></th>
<td>Start here. Construct a simple notes list that lets the user add new notes but not
edit them. Demonstrates the basics of <code>ListActivity</code> and creating
@@ -91,7 +91,7 @@
menu options. Uses a SQLite database to store the notes.</td>
</tr>
<tr>
- <th><a href="{@docRoot}resources/tutorials/notepad/notepad-ex2.html">Exercise 2</a></th>
+ <th><a href="{@docRoot}training/notepad/notepad-ex2.html">Exercise 2</a></th>
<td>Add a second Activity to the
application. Demonstrates constructing a
new Activity, adding it to the Android manifest, passing data between the
@@ -100,13 +100,13 @@
<code>startActivityForResult()</code>.</td>
</tr>
<tr>
- <th><a href="{@docRoot}resources/tutorials/notepad/notepad-ex3.html">Exercise 3</a></th>
+ <th><a href="{@docRoot}training/notepad/notepad-ex3.html">Exercise 3</a></th>
<td>Add handling of life-cycle events to
the application, to let it
maintain application state across the life cycle. </td>
</tr>
<tr>
- <th><a href="{@docRoot}resources/tutorials/notepad/notepad-extra-credit.html">Extra
+ <th><a href="{@docRoot}training/notepad/notepad-extra-credit.html">Extra
Credit</a></th>
<td>Demonstrates how to use the Eclipse
debugger and how you can use it to
diff --git a/docs/html/resources/tutorials/notepad/notepad-ex1.jd b/docs/html/training/notepad/notepad-ex1.jd
similarity index 99%
rename from docs/html/resources/tutorials/notepad/notepad-ex1.jd
rename to docs/html/training/notepad/notepad-ex1.jd
index 13ab0a6..0decbb2 100644
--- a/docs/html/resources/tutorials/notepad/notepad-ex1.jd
+++ b/docs/html/training/notepad/notepad-ex1.jd
@@ -44,7 +44,7 @@
In the New Android Project dialog, select <strong>Create project from existing source</strong>.</li>
<li>
Click <strong>Browse</strong> and navigate to where you copied the <code>NotepadCodeLab</code>
- (downloaded during <a href="{@docRoot}resources/tutorials/notepad/index.html#preparing">setup</a>)
+ (downloaded during <a href="{@docRoot}training/notepad/index.html#preparing">setup</a>)
and select <code>Notepadv1</code>.</li>
<li>
The Project Name and other properties should be automatically filled for you.
diff --git a/docs/html/resources/tutorials/notepad/notepad-ex2.jd b/docs/html/training/notepad/notepad-ex2.jd
similarity index 100%
rename from docs/html/resources/tutorials/notepad/notepad-ex2.jd
rename to docs/html/training/notepad/notepad-ex2.jd
diff --git a/docs/html/resources/tutorials/notepad/notepad-ex3.jd b/docs/html/training/notepad/notepad-ex3.jd
similarity index 100%
rename from docs/html/resources/tutorials/notepad/notepad-ex3.jd
rename to docs/html/training/notepad/notepad-ex3.jd
diff --git a/docs/html/resources/tutorials/notepad/notepad-extra-credit.jd b/docs/html/training/notepad/notepad-extra-credit.jd
similarity index 100%
rename from docs/html/resources/tutorials/notepad/notepad-extra-credit.jd
rename to docs/html/training/notepad/notepad-extra-credit.jd
diff --git a/docs/html/resources/tutorials/notepad/notepad-index.jd b/docs/html/training/notepad/notepad-index.jd
similarity index 100%
rename from docs/html/resources/tutorials/notepad/notepad-index.jd
rename to docs/html/training/notepad/notepad-index.jd
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index c726d0e..c91c2f1 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -27,7 +27,6 @@
import java.nio.ShortBuffer;
public final class Bitmap implements Parcelable {
-
/**
* Indicates that the bitmap was created for an unknown pixel density.
*
@@ -64,7 +63,7 @@
private boolean mRecycled;
// Package-scoped for fast access.
- /*package*/ int mDensity = sDefaultDensity = getDefaultDensity();
+ int mDensity = sDefaultDensity = getDefaultDensity();
private static volatile Matrix sScaleMatrix;
@@ -78,8 +77,8 @@
public static void setDefaultDensity(int density) {
sDefaultDensity = density;
}
-
- /*package*/ static int getDefaultDensity() {
+
+ static int getDefaultDensity() {
if (sDefaultDensity >= 0) {
return sDefaultDensity;
}
@@ -95,7 +94,7 @@
This can be called from JNI code.
*/
- /*package*/ Bitmap(int nativeBitmap, byte[] buffer, boolean isMutable, byte[] ninePatchChunk,
+ Bitmap(int nativeBitmap, byte[] buffer, boolean isMutable, byte[] ninePatchChunk,
int density) {
this(nativeBitmap, buffer, isMutable, ninePatchChunk, null, density);
}
@@ -108,7 +107,7 @@
This can be called from JNI code.
*/
- /*package*/ Bitmap(int nativeBitmap, byte[] buffer, boolean isMutable, byte[] ninePatchChunk,
+ Bitmap(int nativeBitmap, byte[] buffer, boolean isMutable, byte[] ninePatchChunk,
int[] layoutBounds, int density) {
if (nativeBitmap == 0) {
throw new RuntimeException("internal error: native bitmap is 0");
@@ -347,11 +346,15 @@
}
/**
- * Copy the bitmap's pixels into the specified buffer (allocated by the
+ * <p>Copy the bitmap's pixels into the specified buffer (allocated by the
* caller). An exception is thrown if the buffer is not large enough to
* hold all of the pixels (taking into account the number of bytes per
* pixel) or if the Buffer subclass is not one of the support types
- * (ByteBuffer, ShortBuffer, IntBuffer).
+ * (ByteBuffer, ShortBuffer, IntBuffer).</p>
+ * <p>The content of the bitmap is copied into the buffer as-is. This means
+ * that if this bitmap stores its pixels pre-multiplied
+ * (see {@link #isPremultiplied()}, the values in the buffer will also be
+ * pre-multiplied.</p>
*/
public void copyPixelsToBuffer(Buffer dst) {
int elements = dst.remaining();
@@ -382,10 +385,10 @@
}
/**
- * Copy the pixels from the buffer, beginning at the current position,
+ * <p>Copy the pixels from the buffer, beginning at the current position,
* overwriting the bitmap's pixels. The data in the buffer is not changed
* in any way (unlike setPixels(), which converts from unpremultipled 32bit
- * to whatever the bitmap's native format is.
+ * to whatever the bitmap's native format is.</p>
*/
public void copyPixelsFromBuffer(Buffer src) {
checkRecycled("copyPixelsFromBuffer called on recycled bitmap");
@@ -402,7 +405,7 @@
throw new RuntimeException("unsupported Buffer subclass");
}
- long bufferBytes = (long)elements << shift;
+ long bufferBytes = (long) elements << shift;
long bitmapBytes = getByteCount();
if (bufferBytes < bitmapBytes) {
@@ -780,6 +783,25 @@
return mIsMutable;
}
+ /**
+ * <p>Indicates whether pixels stored in this bitmaps are stored pre-multiplied.
+ * When a pixel is pre-multiplied, the RGB components have been multiplied by
+ * the alpha component. For instance, if the original color is a 50%
+ * translucent red <code>(128, 255, 0, 0)</code>, the pre-multiplied form is
+ * <code>(128, 128, 0, 0)</code>.</p>
+ *
+ * <p>This method always returns false if {@link #getConfig()} is
+ * {@link Bitmap.Config#ALPHA_8} or {@link Bitmap.Config#RGB_565}.</p>
+ *
+ * @return true if the underlying pixels have been pre-multiplied, false
+ * otherwise
+ */
+ public final boolean isPremultiplied() {
+ final Config config = getConfig();
+ //noinspection deprecation
+ return config == Config.ARGB_8888 || config == Config.ARGB_4444;
+ }
+
/** Returns the bitmap's width */
public final int getWidth() {
return mWidth == -1 ? mWidth = nativeWidth(mNativeBitmap) : mWidth;
@@ -926,7 +948,7 @@
/**
* Returns the {@link Color} at the specified location. Throws an exception
* if x or y are out of bounds (negative or >= to the width or height
- * respectively).
+ * respectively). The returned color is a non-premultiplied ARGB value.
*
* @param x The x coordinate (0...width-1) of the pixel to return
* @param y The y coordinate (0...height-1) of the pixel to return
@@ -944,6 +966,7 @@
* a packed int representing a {@link Color}. The stride parameter allows
* the caller to allow for gaps in the returned pixels array between
* rows. For normal packed results, just pass width for the stride value.
+ * The returned colors are non-premultiplied ARGB values.
*
* @param pixels The array to receive the bitmap's colors
* @param offset The first index to write into pixels[]
@@ -955,6 +978,7 @@
* the bitmap
* @param width The number of pixels to read from each row
* @param height The number of rows to read
+ *
* @throws IllegalArgumentException if x, y, width, height exceed the
* bounds of the bitmap, or if abs(stride) < width.
* @throws ArrayIndexOutOfBoundsException if the pixels array is too small
@@ -974,6 +998,7 @@
/**
* Shared code to check for illegal arguments passed to getPixel()
* or setPixel()
+ *
* @param x x coordinate of the pixel
* @param y y coordinate of the pixel
*/
@@ -1029,12 +1054,14 @@
}
/**
- * Write the specified {@link Color} into the bitmap (assuming it is
- * mutable) at the x,y coordinate.
+ * <p>Write the specified {@link Color} into the bitmap (assuming it is
+ * mutable) at the x,y coordinate. The color must be a
+ * non-premultiplied ARGB value.</p>
*
* @param x The x coordinate of the pixel to replace (0...width-1)
* @param y The y coordinate of the pixel to replace (0...height-1)
- * @param color The {@link Color} to write into the bitmap
+ * @param color The ARGB color to write into the bitmap
+ *
* @throws IllegalStateException if the bitmap is not mutable
* @throws IllegalArgumentException if x, y are outside of the bitmap's
* bounds.
@@ -1049,8 +1076,9 @@
}
/**
- * Replace pixels in the bitmap with the colors in the array. Each element
- * in the array is a packed int prepresenting a {@link Color}
+ * <p>Replace pixels in the bitmap with the colors in the array. Each element
+ * in the array is a packed int prepresenting a non-premultiplied ARGB
+ * {@link Color}.</p>
*
* @param pixels The colors to write to the bitmap
* @param offset The index of the first color to read from pixels[]
@@ -1063,6 +1091,7 @@
* the bitmap.
* @param width The number of colors to copy from pixels[] per row
* @param height The number of rows to write to the bitmap
+ *
* @throws IllegalStateException if the bitmap is not mutable
* @throws IllegalArgumentException if x, y, width, height are outside of
* the bitmap's bounds.
@@ -1070,7 +1099,7 @@
* to receive the specified number of pixels.
*/
public void setPixels(int[] pixels, int offset, int stride,
- int x, int y, int width, int height) {
+ int x, int y, int width, int height) {
checkRecycled("Can't call setPixels() on a recycled bitmap");
if (!isMutable()) {
throw new IllegalStateException();
diff --git a/graphics/java/android/renderscript/Matrix2f.java b/graphics/java/android/renderscript/Matrix2f.java
index acc5bd8..39abd4f 100644
--- a/graphics/java/android/renderscript/Matrix2f.java
+++ b/graphics/java/android/renderscript/Matrix2f.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2009-2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,23 +59,23 @@
/**
* Returns the value for a given row and column
*
- * @param i row of the value to return
- * @param j column of the value to return
+ * @param x column of the value to return
+ * @param y row of the value to return
*
- * @return value in the ith row and jth column
+ * @return value in the yth row and xth column
*/
- public float get(int i, int j) {
- return mMat[i*2 + j];
+ public float get(int x, int y) {
+ return mMat[x*2 + y];
}
/**
* Sets the value for a given row and column
*
- * @param i row of the value to set
- * @param j column of the value to set
+ * @param x column of the value to set
+ * @param y row of the value to set
*/
- public void set(int i, int j, float v) {
- mMat[i*2 + j] = v;
+ public void set(int x, int y, float v) {
+ mMat[x*2 + y] = v;
}
/**
diff --git a/graphics/java/android/renderscript/Matrix3f.java b/graphics/java/android/renderscript/Matrix3f.java
index 253506d..66f2c81 100644
--- a/graphics/java/android/renderscript/Matrix3f.java
+++ b/graphics/java/android/renderscript/Matrix3f.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2009-2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,23 +59,23 @@
/**
* Returns the value for a given row and column
*
- * @param i row of the value to return
- * @param j column of the value to return
+ * @param x column of the value to return
+ * @param y row of the value to return
*
- * @return value in the ith row and jth column
+ * @return value in the yth row and xth column
*/
- public float get(int i, int j) {
- return mMat[i*3 + j];
+ public float get(int x, int y) {
+ return mMat[x*3 + y];
}
/**
* Sets the value for a given row and column
*
- * @param i row of the value to set
- * @param j column of the value to set
+ * @param x column of the value to set
+ * @param y row of the value to set
*/
- public void set(int i, int j, float v) {
- mMat[i*3 + j] = v;
+ public void set(int x, int y, float v) {
+ mMat[x*3 + y] = v;
}
/**
diff --git a/graphics/java/android/renderscript/Matrix4f.java b/graphics/java/android/renderscript/Matrix4f.java
index adc1806..a85d464 100644
--- a/graphics/java/android/renderscript/Matrix4f.java
+++ b/graphics/java/android/renderscript/Matrix4f.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2009-2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,23 +59,23 @@
/**
* Returns the value for a given row and column
*
- * @param i row of the value to return
- * @param j column of the value to return
+ * @param x column of the value to return
+ * @param y row of the value to return
*
- * @return value in the ith row and jth column
+ * @return value in the yth row and xth column
*/
- public float get(int i, int j) {
- return mMat[i*4 + j];
+ public float get(int x, int y) {
+ return mMat[x*4 + y];
}
/**
* Sets the value for a given row and column
*
- * @param i row of the value to set
- * @param j column of the value to set
+ * @param x column of the value to set
+ * @param y row of the value to set
*/
- public void set(int i, int j, float v) {
- mMat[i*4 + j] = v;
+ public void set(int x, int y, float v) {
+ mMat[x*4 + y] = v;
}
/**
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index 2e153dd..d2a8298 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -143,11 +143,12 @@
private static final int MSG_REEVALUATE_REMOTE = 17;
private static final int MSG_RCC_NEW_PLAYBACK_INFO = 18;
private static final int MSG_RCC_NEW_VOLUME_OBS = 19;
+ private static final int MSG_SET_FORCE_BT_A2DP_USE = 20;
// start of messages handled under wakelock
// these messages can only be queued, i.e. sent with queueMsgUnderWakeLock(),
// and not with sendMsg(..., ..., SENDMSG_QUEUE, ...)
- private static final int MSG_SET_WIRED_DEVICE_CONNECTION_STATE = 20;
- private static final int MSG_SET_A2DP_CONNECTION_STATE = 21;
+ private static final int MSG_SET_WIRED_DEVICE_CONNECTION_STATE = 21;
+ private static final int MSG_SET_A2DP_CONNECTION_STATE = 22;
// end of messages handled under wakelock
// flags for MSG_PERSIST_VOLUME indicating if current and/or last audible volume should be
@@ -381,7 +382,7 @@
// message looper for SoundPool listener
private Looper mSoundPoolLooper = null;
// volume applied to sound played with playSoundEffect()
- private static int SOUND_EFFECT_VOLUME_DB;
+ private static int sSoundEffectVolumeDb;
// getActiveStreamType() will return STREAM_NOTIFICATION during this period after a notification
// stopped
private static final int NOTIFICATION_VOLUME_DELAY_MS = 5000;
@@ -438,7 +439,7 @@
"ro.config.vc_call_vol_steps",
MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL]);
- SOUND_EFFECT_VOLUME_DB = context.getResources().getInteger(
+ sSoundEffectVolumeDb = context.getResources().getInteger(
com.android.internal.R.integer.config_soundEffectVolumeDb);
mVolumePanel = new VolumePanel(context, this);
@@ -1701,7 +1702,13 @@
/** @see AudioManager#setBluetoothA2dpOn() */
public void setBluetoothA2dpOn(boolean on) {
- setBluetoothA2dpOnInt(on);
+ synchronized (mBluetoothA2dpEnabledLock) {
+ mBluetoothA2dpEnabled = on;
+ sendMsg(mAudioHandler, MSG_SET_FORCE_BT_A2DP_USE, SENDMSG_QUEUE,
+ AudioSystem.FOR_MEDIA,
+ mBluetoothA2dpEnabled ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP,
+ null, 0);
+ }
}
/** @see AudioManager#isBluetoothA2dpOn() */
@@ -2875,7 +2882,7 @@
float volFloat;
// use default if volume is not specified by caller
if (volume < 0) {
- volFloat = (float)Math.pow(10, SOUND_EFFECT_VOLUME_DB/20);
+ volFloat = (float)Math.pow(10, (float)sSoundEffectVolumeDb/20);
} else {
volFloat = (float) volume / 1000.0f;
}
@@ -3049,6 +3056,7 @@
break;
case MSG_SET_FORCE_USE:
+ case MSG_SET_FORCE_BT_A2DP_USE:
setForceUse(msg.arg1, msg.arg2);
break;
@@ -5290,10 +5298,9 @@
public void setBluetoothA2dpOnInt(boolean on) {
synchronized (mBluetoothA2dpEnabledLock) {
mBluetoothA2dpEnabled = on;
- sendMsg(mAudioHandler, MSG_SET_FORCE_USE, SENDMSG_QUEUE,
- AudioSystem.FOR_MEDIA,
- mBluetoothA2dpEnabled ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP,
- null, 0);
+ mAudioHandler.removeMessages(MSG_SET_FORCE_BT_A2DP_USE);
+ AudioSystem.setForceUse(AudioSystem.FOR_MEDIA,
+ mBluetoothA2dpEnabled ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP);
}
}
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index fcb676d..560c549 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -33,7 +33,7 @@
* codec.start();
* ByteBuffer[] inputBuffers = codec.getInputBuffers();
* ByteBuffer[] outputBuffers = codec.getOutputBuffers();
- * Map<String, Object> format = codec.getOutputFormat();
+ * MediaFormat format = codec.getOutputFormat();
* for (;;) {
* int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs);
* if (inputBufferIndex >= 0) {
diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java
index d3a00c2..9f10cb0 100644
--- a/media/java/android/media/MediaExtractor.java
+++ b/media/java/android/media/MediaExtractor.java
@@ -36,8 +36,8 @@
* extractor.setDataSource(...);
* int numTracks = extractor.getTrackCount();
* for (int i = 0; i < numTracks; ++i) {
- * Map%lt;String, Object> format = extractor.getTrackFormat(i);
- * String mime = (String)format.get("mime");
+ * MediaFormat format = extractor.getTrackFormat(i);
+ * String mime = format.getString(MediaFormat.KEY_MIME);
* if (weAreInterestedInThisTrack) {
* extractor.selectTrack(i);
* }
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 586f11e..e76d25a 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -1152,6 +1152,8 @@
* Checks whether the MediaPlayer is playing.
*
* @return true if currently playing, false otherwise
+ * @throws IllegalStateException if the internal player engine has not been
+ * initialized or has been released.
*/
public native boolean isPlaying();
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaPlayerStressTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaPlayerStressTest.java
index 25b6e7f..67da6ac 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaPlayerStressTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/stress/MediaPlayerStressTest.java
@@ -24,6 +24,7 @@
import android.hardware.Camera;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
+import android.os.Environment;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;
import android.util.Log;
@@ -66,6 +67,9 @@
private int mTotalNotSeekable = 0;
private int mTotalMetaDataUpdate = 0;
+ //Test result output file
+ private static final String PLAYBACK_RESULT = "PlaybackTestResult.txt";
+
private void writeTestOutput(String filename, Writer output) throws Exception{
output.write("File Name: " + filename);
output.write(" Complete: " + CodecTest.onCompleteSuccess);
@@ -109,27 +113,19 @@
@LargeTest
public void testVideoPlayback() throws Exception {
String fileWithError = "Filename:\n";
- File playbackOutput = new File("/sdcard/PlaybackTestResult.txt");
+ File playbackOutput = new File(Environment.getExternalStorageDirectory(), PLAYBACK_RESULT);
Writer output = new BufferedWriter(new FileWriter(playbackOutput, true));
boolean testResult = true;
// load directory files
boolean onCompleteSuccess = false;
File dir = new File(MediaNames.MEDIA_SAMPLE_POOL);
-
- Instrumentation inst = getInstrumentation();
- Intent intent = new Intent();
-
- intent.setClass(getInstrumentation().getTargetContext(), MediaFrameworkTest.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
String[] children = dir.list();
if (children == null) {
Log.v("MediaPlayerApiTest:testMediaSamples", "dir is empty");
return;
} else {
for (int i = 0; i < children.length; i++) {
- Activity act = inst.startActivitySync(intent);
//Get filename of directory
String filename = children[i];
onCompleteSuccess =
@@ -141,8 +137,6 @@
testResult = false;
}
Thread.sleep(3000);
- //Call onCreat to recreate the surface
- act.finish();
//Write test result to an output file
writeTestOutput(filename,output);
//Get the summary
diff --git a/opengl/java/android/opengl/EGL14.java b/opengl/java/android/opengl/EGL14.java
new file mode 100644
index 0000000..31fc04aa
--- /dev/null
+++ b/opengl/java/android/opengl/EGL14.java
@@ -0,0 +1,446 @@
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+// This source file is automatically generated
+
+package android.opengl;
+
+import android.graphics.SurfaceTexture;
+import android.view.Surface;
+import android.view.SurfaceView;
+import android.view.SurfaceHolder;
+
+
+/**
+* @hide
+*/
+public class EGL14 {
+
+public static final int EGL_DEFAULT_DISPLAY = 0;
+public static EGLContext EGL_NO_CONTEXT = null;
+public static EGLDisplay EGL_NO_DISPLAY = null;
+public static EGLSurface EGL_NO_SURFACE = null;
+
+public static final int EGL_FALSE = 0;
+public static final int EGL_TRUE = 1;
+public static final int EGL_SUCCESS = 0x3000;
+public static final int EGL_NOT_INITIALIZED = 0x3001;
+public static final int EGL_BAD_ACCESS = 0x3002;
+public static final int EGL_BAD_ALLOC = 0x3003;
+public static final int EGL_BAD_ATTRIBUTE = 0x3004;
+public static final int EGL_BAD_CONFIG = 0x3005;
+public static final int EGL_BAD_CONTEXT = 0x3006;
+public static final int EGL_BAD_CURRENT_SURFACE = 0x3007;
+public static final int EGL_BAD_DISPLAY = 0x3008;
+public static final int EGL_BAD_MATCH = 0x3009;
+public static final int EGL_BAD_NATIVE_PIXMAP = 0x300A;
+public static final int EGL_BAD_NATIVE_WINDOW = 0x300B;
+public static final int EGL_BAD_PARAMETER = 0x300C;
+public static final int EGL_BAD_SURFACE = 0x300D;
+public static final int EGL_CONTEXT_LOST = 0x300E;
+public static final int EGL_BUFFER_SIZE = 0x3020;
+public static final int EGL_ALPHA_SIZE = 0x3021;
+public static final int EGL_BLUE_SIZE = 0x3022;
+public static final int EGL_GREEN_SIZE = 0x3023;
+public static final int EGL_RED_SIZE = 0x3024;
+public static final int EGL_DEPTH_SIZE = 0x3025;
+public static final int EGL_STENCIL_SIZE = 0x3026;
+public static final int EGL_CONFIG_CAVEAT = 0x3027;
+public static final int EGL_CONFIG_ID = 0x3028;
+public static final int EGL_LEVEL = 0x3029;
+public static final int EGL_MAX_PBUFFER_HEIGHT = 0x302A;
+public static final int EGL_MAX_PBUFFER_PIXELS = 0x302B;
+public static final int EGL_MAX_PBUFFER_WIDTH = 0x302C;
+public static final int EGL_NATIVE_RENDERABLE = 0x302D;
+public static final int EGL_NATIVE_VISUAL_ID = 0x302E;
+public static final int EGL_NATIVE_VISUAL_TYPE = 0x302F;
+public static final int EGL_SAMPLES = 0x3031;
+public static final int EGL_SAMPLE_BUFFERS = 0x3032;
+public static final int EGL_SURFACE_TYPE = 0x3033;
+public static final int EGL_TRANSPARENT_TYPE = 0x3034;
+public static final int EGL_TRANSPARENT_BLUE_VALUE = 0x3035;
+public static final int EGL_TRANSPARENT_GREEN_VALUE = 0x3036;
+public static final int EGL_TRANSPARENT_RED_VALUE = 0x3037;
+public static final int EGL_NONE = 0x3038;
+public static final int EGL_BIND_TO_TEXTURE_RGB = 0x3039;
+public static final int EGL_BIND_TO_TEXTURE_RGBA = 0x303A;
+public static final int EGL_MIN_SWAP_INTERVAL = 0x303B;
+public static final int EGL_MAX_SWAP_INTERVAL = 0x303C;
+public static final int EGL_LUMINANCE_SIZE = 0x303D;
+public static final int EGL_ALPHA_MASK_SIZE = 0x303E;
+public static final int EGL_COLOR_BUFFER_TYPE = 0x303F;
+public static final int EGL_RENDERABLE_TYPE = 0x3040;
+public static final int EGL_MATCH_NATIVE_PIXMAP = 0x3041;
+public static final int EGL_CONFORMANT = 0x3042;
+public static final int EGL_SLOW_CONFIG = 0x3050;
+public static final int EGL_NON_CONFORMANT_CONFIG = 0x3051;
+public static final int EGL_TRANSPARENT_RGB = 0x3052;
+public static final int EGL_RGB_BUFFER = 0x308E;
+public static final int EGL_LUMINANCE_BUFFER = 0x308F;
+public static final int EGL_NO_TEXTURE = 0x305C;
+public static final int EGL_TEXTURE_RGB = 0x305D;
+public static final int EGL_TEXTURE_RGBA = 0x305E;
+public static final int EGL_TEXTURE_2D = 0x305F;
+public static final int EGL_PBUFFER_BIT = 0x0001;
+public static final int EGL_PIXMAP_BIT = 0x0002;
+public static final int EGL_WINDOW_BIT = 0x0004;
+public static final int EGL_VG_COLORSPACE_LINEAR_BIT = 0x0020;
+public static final int EGL_VG_ALPHA_FORMAT_PRE_BIT = 0x0040;
+public static final int EGL_MULTISAMPLE_RESOLVE_BOX_BIT = 0x0200;
+public static final int EGL_SWAP_BEHAVIOR_PRESERVED_BIT = 0x0400;
+public static final int EGL_OPENGL_ES_BIT = 0x0001;
+public static final int EGL_OPENVG_BIT = 0x0002;
+public static final int EGL_OPENGL_ES2_BIT = 0x0004;
+public static final int EGL_OPENGL_BIT = 0x0008;
+public static final int EGL_VENDOR = 0x3053;
+public static final int EGL_VERSION = 0x3054;
+public static final int EGL_EXTENSIONS = 0x3055;
+public static final int EGL_CLIENT_APIS = 0x308D;
+public static final int EGL_HEIGHT = 0x3056;
+public static final int EGL_WIDTH = 0x3057;
+public static final int EGL_LARGEST_PBUFFER = 0x3058;
+public static final int EGL_TEXTURE_FORMAT = 0x3080;
+public static final int EGL_TEXTURE_TARGET = 0x3081;
+public static final int EGL_MIPMAP_TEXTURE = 0x3082;
+public static final int EGL_MIPMAP_LEVEL = 0x3083;
+public static final int EGL_RENDER_BUFFER = 0x3086;
+public static final int EGL_VG_COLORSPACE = 0x3087;
+public static final int EGL_VG_ALPHA_FORMAT = 0x3088;
+public static final int EGL_HORIZONTAL_RESOLUTION = 0x3090;
+public static final int EGL_VERTICAL_RESOLUTION = 0x3091;
+public static final int EGL_PIXEL_ASPECT_RATIO = 0x3092;
+public static final int EGL_SWAP_BEHAVIOR = 0x3093;
+public static final int EGL_MULTISAMPLE_RESOLVE = 0x3099;
+public static final int EGL_BACK_BUFFER = 0x3084;
+public static final int EGL_SINGLE_BUFFER = 0x3085;
+public static final int EGL_VG_COLORSPACE_sRGB = 0x3089;
+public static final int EGL_VG_COLORSPACE_LINEAR = 0x308A;
+public static final int EGL_VG_ALPHA_FORMAT_NONPRE = 0x308B;
+public static final int EGL_VG_ALPHA_FORMAT_PRE = 0x308C;
+public static final int EGL_DISPLAY_SCALING = 10000;
+public static final int EGL_BUFFER_PRESERVED = 0x3094;
+public static final int EGL_BUFFER_DESTROYED = 0x3095;
+public static final int EGL_OPENVG_IMAGE = 0x3096;
+public static final int EGL_CONTEXT_CLIENT_TYPE = 0x3097;
+public static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
+public static final int EGL_MULTISAMPLE_RESOLVE_DEFAULT = 0x309A;
+public static final int EGL_MULTISAMPLE_RESOLVE_BOX = 0x309B;
+public static final int EGL_OPENGL_ES_API = 0x30A0;
+public static final int EGL_OPENVG_API = 0x30A1;
+public static final int EGL_OPENGL_API = 0x30A2;
+public static final int EGL_DRAW = 0x3059;
+public static final int EGL_READ = 0x305A;
+public static final int EGL_CORE_NATIVE_ENGINE = 0x305B;
+
+ native private static void _nativeClassInit();
+ static {
+ _nativeClassInit();
+ }
+ /* @hide C function EGLint eglGetError ( void ) */
+
+ public static native int eglGetError(
+ );
+
+ /* @hide C function EGLDisplay eglGetDisplay ( EGLNativeDisplayType display_id ) */
+
+ public static native EGLDisplay eglGetDisplay(
+ int display_id
+ );
+
+ /* @hide C function EGLBoolean eglInitialize ( EGLDisplay dpy, EGLint *major, EGLint *minor ) */
+
+ public static native boolean eglInitialize(
+ EGLDisplay dpy,
+ int[] major,
+ int majorOffset,
+ int[] minor,
+ int minorOffset
+ );
+
+ /* @hide C function EGLBoolean eglTerminate ( EGLDisplay dpy ) */
+
+ public static native boolean eglTerminate(
+ EGLDisplay dpy
+ );
+
+ // C function const char * eglQueryString ( EGLDisplay dpy, EGLint name )
+
+ public static native String eglQueryString(
+ EGLDisplay dpy,
+ int name
+ );
+ /* @hide C function EGLBoolean eglGetConfigs ( EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config ) */
+
+ public static native boolean eglGetConfigs(
+ EGLDisplay dpy,
+ EGLConfig[] configs,
+ int configsOffset,
+ int config_size,
+ int[] num_config,
+ int num_configOffset
+ );
+
+ /* @hide C function EGLBoolean eglChooseConfig ( EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config ) */
+
+ public static native boolean eglChooseConfig(
+ EGLDisplay dpy,
+ int[] attrib_list,
+ int attrib_listOffset,
+ EGLConfig[] configs,
+ int configsOffset,
+ int config_size,
+ int[] num_config,
+ int num_configOffset
+ );
+
+ /* @hide C function EGLBoolean eglGetConfigAttrib ( EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value ) */
+
+ public static native boolean eglGetConfigAttrib(
+ EGLDisplay dpy,
+ EGLConfig config,
+ int attribute,
+ int[] value,
+ int offset
+ );
+
+ // C function EGLSurface eglCreateWindowSurface ( EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list )
+
+ private static native EGLSurface _eglCreateWindowSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ Object win,
+ int[] attrib_list,
+ int offset
+ );
+
+ private static native EGLSurface _eglCreateWindowSurfaceTexture(
+ EGLDisplay dpy,
+ EGLConfig config,
+ Object win,
+ int[] attrib_list,
+ int offset
+ );
+
+ public static EGLSurface eglCreateWindowSurface(EGLDisplay dpy,
+ EGLConfig config,
+ Object win,
+ int[] attrib_list,
+ int offset
+ ){
+ Surface sur = null;
+ if (win instanceof SurfaceView) {
+ SurfaceView surfaceView = (SurfaceView)win;
+ sur = surfaceView.getHolder().getSurface();
+ } else if (win instanceof SurfaceHolder) {
+ SurfaceHolder holder = (SurfaceHolder)win;
+ sur = holder.getSurface();
+ }
+
+ EGLSurface surface;
+ if (sur != null) {
+ surface = _eglCreateWindowSurface(dpy, config, sur, attrib_list, offset);
+ } else if (win instanceof SurfaceTexture) {
+ surface = _eglCreateWindowSurfaceTexture(dpy, config,
+ win, attrib_list, offset);
+ } else {
+ throw new java.lang.UnsupportedOperationException(
+ "eglCreateWindowSurface() can only be called with an instance of " +
+ "SurfaceView, SurfaceTexture or SurfaceHolder at the moment, " +
+ "this will be fixed later.");
+ }
+
+ return surface;
+ }
+ /* @hide C function EGLSurface eglCreatePbufferSurface ( EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list ) */
+
+ public static native EGLSurface eglCreatePbufferSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ int[] attrib_list,
+ int offset
+ );
+
+ /* @hide C function EGLSurface eglCreatePixmapSurface ( EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list ) */
+
+ public static native EGLSurface eglCreatePixmapSurface(
+ EGLDisplay dpy,
+ EGLConfig config,
+ int pixmap,
+ int[] attrib_list,
+ int offset
+ );
+
+ /* @hide C function EGLBoolean eglDestroySurface ( EGLDisplay dpy, EGLSurface surface ) */
+
+ public static native boolean eglDestroySurface(
+ EGLDisplay dpy,
+ EGLSurface surface
+ );
+
+ /* @hide C function EGLBoolean eglQuerySurface ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value ) */
+
+ public static native boolean eglQuerySurface(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ int attribute,
+ int[] value,
+ int offset
+ );
+
+ /* @hide C function EGLBoolean eglBindAPI ( EGLenum api ) */
+
+ public static native boolean eglBindAPI(
+ int api
+ );
+
+ /* @hide C function EGLenum eglQueryAPI ( void ) */
+
+ public static native int eglQueryAPI(
+ );
+
+ /* @hide C function EGLBoolean eglWaitClient ( void ) */
+
+ public static native boolean eglWaitClient(
+ );
+
+ /* @hide C function EGLBoolean eglReleaseThread ( void ) */
+
+ public static native boolean eglReleaseThread(
+ );
+
+ /* @hide C function EGLSurface eglCreatePbufferFromClientBuffer ( EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list ) */
+
+ public static native EGLSurface eglCreatePbufferFromClientBuffer(
+ EGLDisplay dpy,
+ int buftype,
+ int buffer,
+ EGLConfig config,
+ int[] attrib_list,
+ int offset
+ );
+
+ /* @hide C function EGLBoolean eglSurfaceAttrib ( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value ) */
+
+ public static native boolean eglSurfaceAttrib(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ int attribute,
+ int value
+ );
+
+ /* @hide C function EGLBoolean eglBindTexImage ( EGLDisplay dpy, EGLSurface surface, EGLint buffer ) */
+
+ public static native boolean eglBindTexImage(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ int buffer
+ );
+
+ /* @hide C function EGLBoolean eglReleaseTexImage ( EGLDisplay dpy, EGLSurface surface, EGLint buffer ) */
+
+ public static native boolean eglReleaseTexImage(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ int buffer
+ );
+
+ /* @hide C function EGLBoolean eglSwapInterval ( EGLDisplay dpy, EGLint interval ) */
+
+ public static native boolean eglSwapInterval(
+ EGLDisplay dpy,
+ int interval
+ );
+
+ /* @hide C function EGLContext eglCreateContext ( EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list ) */
+
+ public static native EGLContext eglCreateContext(
+ EGLDisplay dpy,
+ EGLConfig config,
+ EGLContext share_context,
+ int[] attrib_list,
+ int offset
+ );
+
+ /* @hide C function EGLBoolean eglDestroyContext ( EGLDisplay dpy, EGLContext ctx ) */
+
+ public static native boolean eglDestroyContext(
+ EGLDisplay dpy,
+ EGLContext ctx
+ );
+
+ /* @hide C function EGLBoolean eglMakeCurrent ( EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx ) */
+
+ public static native boolean eglMakeCurrent(
+ EGLDisplay dpy,
+ EGLSurface draw,
+ EGLSurface read,
+ EGLContext ctx
+ );
+
+ /* @hide C function EGLContext eglGetCurrentContext ( void ) */
+
+ public static native EGLContext eglGetCurrentContext(
+ );
+
+ /* @hide C function EGLSurface eglGetCurrentSurface ( EGLint readdraw ) */
+
+ public static native EGLSurface eglGetCurrentSurface(
+ int readdraw
+ );
+
+ /* @hide C function EGLDisplay eglGetCurrentDisplay ( void ) */
+
+ public static native EGLDisplay eglGetCurrentDisplay(
+ );
+
+ /* @hide C function EGLBoolean eglQueryContext ( EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value ) */
+
+ public static native boolean eglQueryContext(
+ EGLDisplay dpy,
+ EGLContext ctx,
+ int attribute,
+ int[] value,
+ int offset
+ );
+
+ /* @hide C function EGLBoolean eglWaitGL ( void ) */
+
+ public static native boolean eglWaitGL(
+ );
+
+ /* @hide C function EGLBoolean eglWaitNative ( EGLint engine ) */
+
+ public static native boolean eglWaitNative(
+ int engine
+ );
+
+ /* @hide C function EGLBoolean eglSwapBuffers ( EGLDisplay dpy, EGLSurface surface ) */
+
+ public static native boolean eglSwapBuffers(
+ EGLDisplay dpy,
+ EGLSurface surface
+ );
+
+ /* @hide C function EGLBoolean eglCopyBuffers ( EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target ) */
+
+ public static native boolean eglCopyBuffers(
+ EGLDisplay dpy,
+ EGLSurface surface,
+ int target
+ );
+
+}
diff --git a/opengl/java/android/opengl/EGLConfig.java b/opengl/java/android/opengl/EGLConfig.java
new file mode 100644
index 0000000..d9aebfc
--- /dev/null
+++ b/opengl/java/android/opengl/EGLConfig.java
@@ -0,0 +1,41 @@
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.opengl;
+
+/**
+ * @hide
+ */
+public class EGLConfig extends EGLObjectHandle {
+ public EGLConfig(int handle) {
+ super(handle);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ EGLConfig that = (EGLConfig) o;
+ return getHandle() == that.getHandle();
+ }
+
+ @Override
+ public int hashCode() {
+ return getHandle();
+ }
+}
diff --git a/opengl/java/android/opengl/EGLContext.java b/opengl/java/android/opengl/EGLContext.java
new file mode 100644
index 0000000..7b194f3
--- /dev/null
+++ b/opengl/java/android/opengl/EGLContext.java
@@ -0,0 +1,41 @@
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.opengl;
+
+/**
+ * @hide
+ */
+public class EGLContext extends EGLObjectHandle {
+ public EGLContext(int handle) {
+ super(handle);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ EGLContext that = (EGLContext) o;
+ return getHandle() == that.getHandle();
+ }
+
+ @Override
+ public int hashCode() {
+ return getHandle();
+ }
+}
diff --git a/opengl/java/android/opengl/EGLDisplay.java b/opengl/java/android/opengl/EGLDisplay.java
new file mode 100644
index 0000000..a090cf0
--- /dev/null
+++ b/opengl/java/android/opengl/EGLDisplay.java
@@ -0,0 +1,41 @@
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.opengl;
+
+/**
+ * @hide
+ */
+public class EGLDisplay extends EGLObjectHandle {
+ public EGLDisplay(int handle) {
+ super(handle);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ EGLDisplay that = (EGLDisplay) o;
+ return getHandle() == that.getHandle();
+ }
+
+ @Override
+ public int hashCode() {
+ return getHandle();
+ }
+}
diff --git a/core/res/res/values-sw720dp-land/arrays.xml b/opengl/java/android/opengl/EGLObjectHandle.java
similarity index 61%
rename from core/res/res/values-sw720dp-land/arrays.xml
rename to opengl/java/android/opengl/EGLObjectHandle.java
index d845875..01f9bd4 100644
--- a/core/res/res/values-sw720dp-land/arrays.xml
+++ b/opengl/java/android/opengl/EGLObjectHandle.java
@@ -1,6 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/common/assets/res/any/colors.xml
+/*
**
** Copyright 2012, The Android Open Source Project
**
@@ -16,14 +14,20 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <array name="lockscreen_chevron_drawables">
- <item>@drawable/ic_lockscreen_chevron_right</item>
- <item>@null</item>
- <item>@null</item>
- <item>@null</item>
- </array>
+package android.opengl;
-</resources>
+/**
+ * @hide
+ */
+public abstract class EGLObjectHandle {
+ private final int mHandle;
+
+ public EGLObjectHandle(int handle) {
+ mHandle = handle;
+ }
+
+ public int getHandle() {
+ return mHandle;
+ }
+}
diff --git a/opengl/java/android/opengl/EGLSurface.java b/opengl/java/android/opengl/EGLSurface.java
new file mode 100644
index 0000000..4800a64
--- /dev/null
+++ b/opengl/java/android/opengl/EGLSurface.java
@@ -0,0 +1,41 @@
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+package android.opengl;
+
+/**
+ * @hide
+ */
+public class EGLSurface extends EGLObjectHandle {
+ public EGLSurface(int handle) {
+ super(handle);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ EGLSurface that = (EGLSurface) o;
+ return getHandle() == that.getHandle();
+ }
+
+ @Override
+ public int hashCode() {
+ return getHandle();
+ }
+}
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
index 6eca3b6..a28b8a4 100644
--- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
+++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
@@ -247,6 +247,15 @@
}
}
+ @Override
+ public void clearDirectory(String path) throws RemoteException {
+ Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+
+ final File directory = new File(path);
+ if (directory.exists() && directory.isDirectory()) {
+ eraseFiles(directory);
+ }
+ }
};
public DefaultContainerService() {
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight.png
index f949e59..8ddb375 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight_land.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight_land.png
index bbda474..57a3b99 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight_land.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_highlight_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight.png
index b97c664..71e1303 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight_land.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight_land.png
index 222a826..1de0a3a 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight_land.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_highlight_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight.png
index c9d96ec..202c8bc 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight_land.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight_land.png
index 4c64b28..31bc09c 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight_land.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/ic_sysbar_highlight_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight.png
index 5f18ae3..bef6de3 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight_land.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight_land.png
index d9df25c..406eeab 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight_land.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/ic_sysbar_highlight_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight.png
index 2412a4e..75b5fbb 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight_land.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight_land.png
index 114c778..a7a4ce3 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight_land.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/ic_sysbar_highlight_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight.png
index bf2553e..c44aafc 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight_land.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight_land.png
index 8df299e..05da6da 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight_land.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_highlight_land.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable/navbar_search_handle.xml b/packages/SystemUI/res/drawable/navbar_search_handle.xml
deleted file mode 100644
index e40fa2c..0000000
--- a/packages/SystemUI/res/drawable/navbar_search_handle.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item
- android:state_enabled="true"
- android:state_active="false"
- android:state_focused="false"
- android:drawable="@*android:drawable/ic_lockscreen_handle_pressed" />
-
- <item
- android:state_enabled="true"
- android:state_active="true"
- android:state_focused="false"
- android:drawable="@*android:drawable/ic_lockscreen_handle_pressed" />
-
-</selector>
diff --git a/packages/SystemUI/res/layout-land/status_bar_search_panel.xml b/packages/SystemUI/res/layout-land/status_bar_search_panel.xml
index c8a120d4..f56b03b 100644
--- a/packages/SystemUI/res/layout-land/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-land/status_bar_search_panel.xml
@@ -49,7 +49,6 @@
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
- prvandroid:handleDrawable="@drawable/navbar_search_handle"
prvandroid:outerRingDrawable="@drawable/navbar_search_outerring"
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
diff --git a/packages/SystemUI/res/layout-port/status_bar_search_panel.xml b/packages/SystemUI/res/layout-port/status_bar_search_panel.xml
index 1e4bb57..b871bef 100644
--- a/packages/SystemUI/res/layout-port/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-port/status_bar_search_panel.xml
@@ -49,7 +49,6 @@
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
- prvandroid:handleDrawable="@drawable/navbar_search_handle"
prvandroid:outerRingDrawable="@drawable/navbar_search_outerring"
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml
index 3b6c52e..1fa67bd 100644
--- a/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml
@@ -35,7 +35,6 @@
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
- prvandroid:handleDrawable="@drawable/navbar_search_handle"
prvandroid:outerRingDrawable="@drawable/navbar_search_outerring"
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
diff --git a/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml b/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml
index 8c2360e..b5f1f90 100644
--- a/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml
@@ -36,7 +36,6 @@
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
- prvandroid:handleDrawable="@drawable/navbar_search_handle"
prvandroid:outerRingDrawable="@drawable/navbar_search_outerring"
prvandroid:outerRadius="@dimen/navbar_search_outerring_radius"
prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index a24a4d7..2db520a 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Verwyder alle kennisgewings."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveer sluimerskerm"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programinligting"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Maak toe"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Kennisgewings af"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tik hier om kennisgewings weer aan te skakel."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Die skerm sal outomaties draai."</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 7c2956c..93547c1 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"ሁሉንም ማሳወቂያዎች አጽዳ"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">" ገፁማያ ማቆያ አንቃ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"የመተግበሪያ መረጃ"</string>
+ <string name="close_universe" msgid="3736513750241754348">"ዝጋ"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"ማሳወቂያዎች ጠፍተዋል"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"ማስታወቅያዎችን መልሶ ለማብራት እዚህ ጋር መታ አድርግ።"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ማያ ገጽ በራስ ሰር ይዞራል።"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index b2c9ab0..9b975fe 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"محو جميع الإشعارات."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"تنشيط شاشة التوقف"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"معلومات التطبيق"</string>
+ <string name="close_universe" msgid="3736513750241754348">"إغلاق"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"التنبيهات معطّلة"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"انقر هنا لإعادة تشغيل الإشعارات."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"سيتم تدوير الشاشة تلقائيًا."</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index c4af8d8..a8a17f0 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Актывацыя экраннай застаўкі"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інфармацыя пра прыкладанне"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Закрыць"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Паведамленні адключаны"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Націсніце тут, каб зноў уключыць апавяшчэнні."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран паварочваецца аўтаматычна."</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index a4a0e78..0270678 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Изчистване на всички известия."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активиране на скрийнсейвъра"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информация за приложението"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Затваряне"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Известията са изключени"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Докоснете тук, за да включите отново известията."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екранът ще се завърта автоматично."</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 5a2c9cd..2e48570 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Esborra totes les notificacions."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activa el protector de pantalla"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informació de l\'aplicació"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Tanca"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificacions desactivades"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Pica aquí per tornar a activar les notificacions."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girarà automàticament."</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 2d1f644..c9b6a522 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazat všechna oznámení."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivovat spořič obrazovky"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informace o aplikaci"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Zavřít"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Oznámení jsou vypnuta"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Chcete-li oznámení znovu zapnout, klepněte sem."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka se automaticky otočí."</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 01068ec..370865c 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ryd alle meddelelser."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivér pauseskærm"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Oplysninger om appen"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Luk"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Underretninger slået fra"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tryk her for at slå underretninger til igen."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skærmen roterer automatisk."</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 011d3a3..65c870f 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Bildschirmschoner aktivieren"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Details"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Schließen"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Benachrichtigungen aus"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tippen Sie hier, um die Benachrichtigungen wieder zu aktivieren."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Bildschirm wird automatisch gedreht."</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 0b87777..6e147e2 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Εκκαθάριση όλων των ειδοποιήσεων."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ενεργοποίηση προφύλαξης οθόνης"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Πληροφορίες εφαρμογής"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Κλείσιμο"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Ειδοποιήσεις ανενεργές"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Πατήστε εδώ για να ενεργοποιήσετε ξανά τις ειδοποιήσεις."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Θα γίνεται αυτόματη περιστροφή της οθόνης."</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index f02d09ca..afabd34 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activate screen saver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App info"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Close"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notifications off"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tap here to turn notifications back on."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index be2bf6e..b83aad5 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar el protector de pantalla"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Cerrar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificaciones desactivadas"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Toca aquí para volver a activar las notificaciones."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index afbceff..c0cab22 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar salvapantallas"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Cerrar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificaciones desactivadas"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Toca aquí para volver a activar las notificaciones."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 318ed04..8adf8ed 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveeri ekraanisäästja"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Rakenduse teave"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Sule"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Teatised väljas"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Teatiste uuesti sisselülitamiseks puudutage siin."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekraani pööramine toimub automaatselt."</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 0c1ba2d..a216d6c 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"پاک کردن تمام اعلانها"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"فعال کردن محافظ صفحه نمایش"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"اطلاعات برنامه"</string>
+ <string name="close_universe" msgid="3736513750241754348">"بستن"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"اعلانها خاموش"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"برای روشن کردن مجدد اعلانها، اینجا را ضربه بزنید."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"صفحه به صورت خودکار میچرخد."</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index a4229b4..bec1b48 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tyhjennä kaikki ilmoitukset."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ota näytönsäästäjä käyttöön"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Sovelluksen tiedot"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Sulje"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Ilmoitukset pois käytöstä"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Ota ilmoitukset uudelleen käyttöön napauttamalla tätä."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ruutu kääntyy automaattisesti."</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 30b3539..15489f5a 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activer l\'économiseur d\'écran"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informations sur l\'application"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Fermer"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notifications désactivées"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Appuyez ici pour réactiver les notifications."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index aae070a..c66b680 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"सभी सूचनाएं साफ़ करें."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"स्क्रीन सेवर सक्रिय करें"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"एप्लिकेशन जानकारी"</string>
+ <string name="close_universe" msgid="3736513750241754348">"बंद करें"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"सूचनाएं बंद"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"सूचनाओं को पुन: चालू करने के लिए यहां टैप करें."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रीन स्वचालित रूप से घूमेगी."</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 4a1f35a..1a10ecb 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Brisanje svih obavijesti."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivirajte čuvar zaslona"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informacije o aplikaciji"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Zatvori"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Obavijesti isključene"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Dotaknite ovdje da biste ponovo uključili obavijesti."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon će se automatski zakrenuti."</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 2ea0f76..25f3e54 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Minden értesítés törlése"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Képernyővédő aktiválása"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Alkalmazásinformáció"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Bezárás"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Értesítések kikapcsolva"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Itt érintse meg az értesítések bekapcsolásához."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A képernyő automatikusan forogni fog."</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index a69fc23..3ad4fd1 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Menghapus semua pemberitahuan."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktifkan tirai layar"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info aplikasi"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Tutup"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Pemberitahuan mati"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Ketuk di sini untuk menyalakan pemberitahuan lagi."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Layar akan diputar secara otomatis."</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 432d984..df7f188 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Cancella tutte le notifiche."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Attiva screensaver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informazioni applicazione"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Chiudi"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notifiche disattivate"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tocca qui per riattivare le notifiche."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Lo schermo ruoterà automaticamente."</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index bdc84b6..2e75e72 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"נקה את כל ההתראות."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"הפעלת שומר מסך"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"פרטי יישום"</string>
+ <string name="close_universe" msgid="3736513750241754348">"סגור"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"מצב התראות כבוי"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"הקש כאן כדי להפעיל מחדש את ההתראות."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"המסך יסתובב באופן אוטומטי."</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 70ba034..2d73518 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"通知をすべて消去。"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"スクリーンセーバーを有効にする"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"アプリ情報"</string>
+ <string name="close_universe" msgid="3736513750241754348">"閉じる"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"通知OFF"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"通知を再度ONにするにはここをタップします。"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"画面は自動的に回転します。"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index e54b06c..438734e 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"모든 알림 지우기"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"스크린 세이버 활성화"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"앱 정보"</string>
+ <string name="close_universe" msgid="3736513750241754348">"닫기"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"알림 사용 안함"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"알림을 다시 사용하려면 여기를 터치하세요."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"화면이 자동으로 회전됩니다."</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 018b5e5..62c6a06 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Išvalyti visus pranešimus."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktyvinti ekrano užsklandą"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programos informacija"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Uždaryti"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Pranešimai išjungti"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Jei norite vėl įjungti pranešimus, palieskite čia."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekranas bus sukamas automatiškai."</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index e708804..5929240 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Notīrīt visus paziņojumus"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivizēt ekrānsaudzētāju"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informācija par lietotni"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Aizvērt"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Paziņojumi ir izslēgti"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Pieskarieties šeit, lai atkal ieslēgtu paziņojumus."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekrāns tiks pagriezts automātiski."</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 3265cd5..5bf9811 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktifkan gambar skrin"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Maklumat apl"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Tutup"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Pemberitahuan dimatikan"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Ketik di sini untuk menghidupkan kembali pemberitahuan."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrin akan berputar secara automatik."</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index a1ee469..9a0b2de 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Fjern alle varslinger."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiver skjermbeskytter"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om app"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Lukk"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Varsler er deaktivert"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Trykk her for å aktivere varsler på nytt."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skjermen roterer automatisk."</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 936e0958..33bab76 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle meldingen wissen."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Schermbeveiliging inschakelen"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-info"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Sluiten"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Meldingen uit"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tik hier om meldingen weer in te schakelen."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Scherm wordt automatisch geroteerd."</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index b4a77a2..6a7639f 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Włącz wygaszacz ekranu."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"O aplikacji"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Zamknij"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Powiadomienia wyłączone"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Kliknij tutaj, by przywrócić powiadomienia."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran zostanie obrócony automatycznie."</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index d08c529..655c46e 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ativar proteção de ecrã"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações da aplicação"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Fechar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificações desativadas"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Toque aqui para voltar a ativar as notificações."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"O ecrã será rodado automaticamente."</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 596ceec..5fabdfd 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ativar proteção de tela"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações do aplicativo"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Fechar"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificações desativadas"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Toque aqui para ativar as notificações novamente."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A tela girará automaticamente."</string>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index 16e5719..e0c0886 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -250,6 +250,8 @@
<skip />
<!-- no translation found for status_bar_notification_inspect_item_title (1163547729015390250) -->
<skip />
+ <!-- no translation found for close_universe (3736513750241754348) -->
+ <skip />
<!-- no translation found for notifications_off_title (8936620513608443224) -->
<skip />
<!-- no translation found for notifications_off_text (2529001315769385273) -->
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 87eec9f..58a9a9b 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ştergeţi toate notificările."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activaţi screensaverul"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informaţii despre aplicaţie"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Închideţi"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Notificările sunt dezactivate"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Apăsaţi aici pentru a reactiva notificările."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ecranul se va roti în mod automat."</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 7a7d08f..155238a 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активация заставки экрана"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"О приложении"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Закрыть"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Уведомления отключены"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Нажмите здесь, чтобы снова включить уведомления."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран будет поворачиваться автоматически."</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 8e64487..0c15f6c 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazať všetky upozornenia."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivovať šetrič obrazovky"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informácie o aplikácii"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Zavrieť"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Upozornenia sú vypnuté"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Klepnutím sem upozornenia znova povolíte."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka sa automaticky otočí."</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 1fa3b21..2b385fc 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Izbriši vsa obvestila."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Vklop ohranjevalnika zaslona"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Podatki o aplikaciji"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Zapri"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Obvestila so izklopljena"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Dotaknite se tukaj, da ponovno vklopite obvestila."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon se bo samodejno zasukal."</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index fd41e02..c43b66f 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Обриши сва обавештења."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активирање чувара екрана"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информације о апликацији"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Затвори"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Обавештења су искључена"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Додирните овде да бисте поново укључили обавештења."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран ће се аутоматски ротирати."</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index afbe0fb..e3a1481 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ta bort alla meddelanden."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivera skärmsläckare"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om appen"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Stäng"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Meddelanden inaktiverade"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Knacka lätt här om du vill aktivera meddelanden igen."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skärmen roteras automatiskt."</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 8f22b81c..00d3bac 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -138,6 +138,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Futa arifa zote."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Amilisha hifadhi ya skrini"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Taarifa ya programu"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Funga"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Arifa zimelemazwa"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Gonga hapa ili kuwezesha tena arifa."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrini itazunguka kiotomatiki."</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 70f0b9b..4d46a5d 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"เปิดโปรแกรมรักษาหน้าจอ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ข้อมูลแอป"</string>
+ <string name="close_universe" msgid="3736513750241754348">"ปิด"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"การแจ้งเตือนปิดอยู่"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"แตะที่นี่เพื่อเปิดการแจ้งเตือนอีกครั้ง"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"หน้าจอจะหมุนโดยอัตโนมัติ"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index e1c4185..a93e511 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"I-clear ang lahat ng notification."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"I-activate ang screen saver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Impormasyon ng app"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Isara"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Naka-off ang mga notification"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Tumapik dito upang muling i-on ang mga notification."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Awtomatikong iikot ang screen."</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 9bf8f76..0f6af69 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tüm bildirimleri temizle"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ekran koruyucuyu etkinleştir"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Uygulama bilgileri"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Kapat"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Bildirimler kapalı"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Bildirimleri tekrar açmak için buraya hafifçe vurun."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran otomatik olarak dönecektir."</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 165baae..5922e24 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Очистити всі сповіщення."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активувати заставку"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інформація про програму"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Закрити"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Сповіщення вимкнено"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Торкніться тут, щоб знову ввімкнути сповіщення."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран обертатиметься автоматично."</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index eef2c83..15141c9 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Xóa tất cả thông báo."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Kích hoạt trình bảo vệ màn hình"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Thông tin về ứng dụng"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Đóng"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Tắt thông báo"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Chạm vào đây để bật lại thông báo."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Màn hình sẽ xoay tự động."</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index ca29738..19470e6 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"激活屏幕保护程序"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"应用信息"</string>
+ <string name="close_universe" msgid="3736513750241754348">"关闭"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"通知功能已停用"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"点按此处可重新启用通知功能。"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"屏幕会自动旋转。"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 8fa4af9..fa2e9d1 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -142,6 +142,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"啟用螢幕保護程式"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"應用程式資訊"</string>
+ <string name="close_universe" msgid="3736513750241754348">"關閉"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"關閉通知"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"輕按這裡即可重新開啟通知。"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"螢幕會自動旋轉。"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 4f3e787..1e11f04 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -140,6 +140,7 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Susa zonke izaziso."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Yenza ukuthi iskrini seyiva sisebenze"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Ulwazi lohlelo lokusebenza"</string>
+ <string name="close_universe" msgid="3736513750241754348">"Vala"</string>
<string name="notifications_off_title" msgid="8936620513608443224">"Izaziso zivaliwe"</string>
<string name="notifications_off_text" msgid="2529001315769385273">"Thepha lapha ukuvula futhi izaziso."</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Isikrini sizophenduka ngokuzenzakalela."</string>
diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
index 2d65dd6..ceb8654 100644
--- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
@@ -322,6 +322,9 @@
}
if (!mDragging) {
+ // We are not doing anything, make sure the long press callback
+ // is not still ticking like a bomb waiting to go off.
+ removeLongPressCallback();
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java b/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java
index 296b640..18ad682 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/Choreographer.java
@@ -25,7 +25,6 @@
import android.graphics.drawable.Drawable;
import android.util.Slog;
import android.view.View;
-import android.view.ViewRootImpl;
import com.android.systemui.R;
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentTasksLoader.java b/packages/SystemUI/src/com/android/systemui/recent/RecentTasksLoader.java
index f5894ea..fefd0e8 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentTasksLoader.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentTasksLoader.java
@@ -53,7 +53,6 @@
private AsyncTask<Void, ArrayList<TaskDescription>, Void> mTaskLoader;
private AsyncTask<Void, TaskDescription, Void> mThumbnailLoader;
- private final Handler mHandler;
private int mIconDpi;
private Bitmap mDefaultThumbnailBackground;
@@ -96,8 +95,6 @@
// updated thumbnails
final ActivityManager am = (ActivityManager)
mContext.getSystemService(Context.ACTIVITY_SERVICE);
-
- mHandler = new Handler();
}
public void setRecentsPanel(RecentsPanelView recentsPanel) {
@@ -225,8 +222,6 @@
cancelLoadingThumbnailsAndIcons();
final LinkedBlockingQueue<TaskDescription> tasksWaitingForThumbnails =
new LinkedBlockingQueue<TaskDescription>();
- final ArrayList<TaskDescription> taskDescriptionsWaitingToLoad =
- new ArrayList<TaskDescription>();
mTaskLoader = new AsyncTask<Void, ArrayList<TaskDescription>, Void>() {
@Override
protected void onProgressUpdate(ArrayList<TaskDescription>... values) {
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
index f85007e..e9c2ecb7 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
@@ -27,10 +27,6 @@
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.MeasureSpec;
-import android.view.View.OnClickListener;
-import android.view.View.OnLongClickListener;
-import android.view.View.OnTouchListener;
import android.view.ViewConfiguration;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java
index 9bc54cb..71cc1e4 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java
@@ -16,7 +16,6 @@
package com.android.systemui.recent;
-import android.animation.LayoutTransition;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
@@ -24,11 +23,9 @@
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Shader;
-import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewConfiguration;
-import android.view.ViewGroup;
import android.widget.LinearLayout;
import com.android.systemui.R;
@@ -37,13 +34,10 @@
public static final boolean OPTIMIZE_SW_RENDERED_RECENTS = true;
public static final boolean USE_DARK_FADE_IN_HW_ACCELERATED_MODE = true;
private View mScrollView;
- private RecentsCallback mCallback;
private int mFadingEdgeLength;
- private Context mContext;
private boolean mIsVertical;
private boolean mSoftwareRendered = false;
- private boolean mAttachedToWindow = false;
public static RecentsScrollViewPerformanceHelper create(Context context,
AttributeSet attrs, View scrollView, boolean isVertical) {
@@ -59,7 +53,6 @@
public RecentsScrollViewPerformanceHelper(Context context,
AttributeSet attrs, View scrollView, boolean isVertical) {
mScrollView = scrollView;
- mContext = context;
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.View);
mFadingEdgeLength = a.getDimensionPixelSize(android.R.styleable.View_fadingEdgeLength,
ViewConfiguration.get(context).getScaledFadingEdgeLength());
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
index e802985..ba08775 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
@@ -27,10 +27,6 @@
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.MeasureSpec;
-import android.view.View.OnClickListener;
-import android.view.View.OnLongClickListener;
-import android.view.View.OnTouchListener;
import android.view.ViewConfiguration;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 9448bbf..f25ac0d 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -38,7 +38,6 @@
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PointF;
-import android.graphics.RectF;
import android.media.MediaActionSound;
import android.net.Uri;
import android.os.AsyncTask;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 0866d18..bd8be1f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -16,11 +16,8 @@
package com.android.systemui.statusbar;
-import java.util.ArrayList;
-
import android.app.ActivityManagerNative;
import android.app.KeyguardManager;
-import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
@@ -51,25 +48,26 @@
import android.view.WindowManagerImpl;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.RemoteViews;
import android.widget.PopupMenu;
+import android.widget.RemoteViews;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.StatusBarIcon;
import com.android.internal.statusbar.StatusBarIconList;
import com.android.internal.statusbar.StatusBarNotification;
import com.android.internal.widget.SizeAdaptiveLayout;
+import com.android.systemui.R;
import com.android.systemui.SearchPanelView;
import com.android.systemui.SystemUI;
-import com.android.systemui.recent.RecentsPanelView;
import com.android.systemui.recent.RecentTasksLoader;
+import com.android.systemui.recent.RecentsPanelView;
import com.android.systemui.recent.TaskDescription;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.policy.NotificationRowLayout;
import com.android.systemui.statusbar.tablet.StatusBarPanel;
-import com.android.systemui.R;
+import java.util.ArrayList;
public abstract class BaseStatusBar extends SystemUI implements
CommandQueue.Callbacks, RecentsPanelView.OnRecentsPanelVisibilityChangedListener {
@@ -577,11 +575,9 @@
View expandedLarge = null;
Exception exception = null;
try {
- oneU.setOnClickHandler(mOnClickHandler);
- expandedOneU = oneU.apply(mContext, adaptive);
+ expandedOneU = oneU.apply(mContext, adaptive, mOnClickHandler);
if (large != null) {
- large.setOnClickHandler(mOnClickHandler);
- expandedLarge = large.apply(mContext, adaptive);
+ expandedLarge = large.apply(mContext, adaptive, mOnClickHandler);
}
}
catch (RuntimeException e) {
@@ -872,9 +868,9 @@
oldEntry.notification = notification;
try {
// Reapply the RemoteViews
- contentView.reapply(mContext, oldEntry.expanded);
+ contentView.reapply(mContext, oldEntry.expanded, mOnClickHandler);
if (bigContentView != null && oldEntry.getLargeView() != null) {
- bigContentView.reapply(mContext, oldEntry.getLargeView());
+ bigContentView.reapply(mContext, oldEntry.getLargeView(), mOnClickHandler);
}
// update the contentIntent
final PendingIntent contentIntent = notification.notification.contentIntent;
@@ -907,8 +903,14 @@
if (DEBUG) Slog.d(TAG, "contents was " + (contentsUnchanged ? "unchanged" : "changed"));
if (DEBUG) Slog.d(TAG, "order was " + (orderUnchanged ? "unchanged" : "changed"));
if (DEBUG) Slog.d(TAG, "notification is " + (isTopAnyway ? "top" : "not top"));
+ final boolean wasExpanded = oldEntry.userExpanded();
removeNotificationViews(key);
addNotificationViews(key, notification);
+ if (wasExpanded) {
+ final NotificationData.Entry newEntry = mNotificationData.findByKey(key);
+ expandView(newEntry, true);
+ newEntry.setUserExpanded(true);
+ }
}
// Update the veto button accordingly (and as a result, whether this row is
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
index 1a07ed3..dfd8cf8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
@@ -65,6 +65,12 @@
public boolean userExpanded() {
return NotificationData.getUserExpanded(row);
}
+ /**
+ * Set the flag indicating that this was manually expanded by the user.
+ */
+ public boolean setUserExpanded(boolean userExpanded) {
+ return NotificationData.setUserExpanded(row, userExpanded);
+ }
}
private final ArrayList<Entry> mEntries = new ArrayList<Entry>();
private final Comparator<Entry> mEntryCmp = new Comparator<Entry>() {
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 a72a295..ffe3db2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.phone;
import android.animation.Animator;
-import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
@@ -72,15 +71,16 @@
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
+
import com.android.internal.statusbar.StatusBarIcon;
import com.android.internal.statusbar.StatusBarNotification;
import com.android.systemui.R;
import com.android.systemui.UniverseBackground;
import com.android.systemui.recent.RecentTasksLoader;
import com.android.systemui.statusbar.BaseStatusBar;
+import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.NotificationData.Entry;
-import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.RotationToggle;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
@@ -88,9 +88,9 @@
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.IntruderAlertView;
import com.android.systemui.statusbar.policy.LocationController;
-import com.android.systemui.statusbar.policy.OnSizeChangedListener;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NotificationRowLayout;
+import com.android.systemui.statusbar.policy.OnSizeChangedListener;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -206,7 +206,6 @@
// the tracker view
int mTrackingPosition; // the position of the top of the tracking view.
- private boolean mPanelSlightlyVisible;
// ticker
private Ticker mTicker;
@@ -289,25 +288,6 @@
}
};
- private class ExpandedDialog extends Dialog {
- ExpandedDialog(Context context) {
- super(context, com.android.internal.R.style.Theme_Translucent_NoTitleBar);
- }
-
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
- switch (event.getKeyCode()) {
- case KeyEvent.KEYCODE_BACK:
- if (!down) {
- animateCollapse();
- }
- return true;
- }
- return super.dispatchKeyEvent(event);
- }
- }
-
@Override
public void start() {
mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
@@ -681,8 +661,6 @@
}
private void addIntruderView() {
- final int height = getStatusBarHeight();
-
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
@@ -867,12 +845,6 @@
mSettingsButton.setEnabled(isDeviceProvisioned());
}
- private void reloadAllNotificationIcons() {
- if (mNotificationIcons == null) return;
- mNotificationIcons.removeAllViews();
- updateNotificationIcons();
- }
-
@Override
protected void updateNotificationIcons() {
if (mNotificationIcons == null) return;
@@ -1817,64 +1789,6 @@
@Override
public void setHardKeyboardStatus(boolean available, boolean enabled) { }
- private class NotificationClicker implements View.OnClickListener {
- private PendingIntent mIntent;
- private String mPkg;
- private String mTag;
- private int mId;
-
- NotificationClicker(PendingIntent intent, String pkg, String tag, int id) {
- mIntent = intent;
- mPkg = pkg;
- mTag = tag;
- mId = id;
- }
-
- public void onClick(View v) {
- try {
- // The intent we are sending is for the application, which
- // won't have permission to immediately start an activity after
- // the user switches to home. We know it is safe to do at this
- // point, so make sure new activity switches are now allowed.
- ActivityManagerNative.getDefault().resumeAppSwitches();
- // Also, notifications can be launched from the lock screen,
- // so dismiss the lock screen when the activity starts.
- ActivityManagerNative.getDefault().dismissKeyguardOnNextActivity();
- } catch (RemoteException e) {
- }
-
- if (mIntent != null) {
- int[] pos = new int[2];
- v.getLocationOnScreen(pos);
- Intent overlay = new Intent();
- overlay.setSourceBounds(
- new Rect(pos[0], pos[1], pos[0]+v.getWidth(), pos[1]+v.getHeight()));
- try {
- mIntent.send(mContext, 0, overlay);
- } catch (PendingIntent.CanceledException e) {
- // the stack trace isn't very helpful here. Just log the exception message.
- Slog.w(TAG, "Sending contentIntent failed: " + e);
- }
-
- KeyguardManager kgm =
- (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
- if (kgm != null) kgm.exitKeyguardSecurely(null);
- }
-
- try {
- mBarService.onNotificationClick(mPkg, mTag, mId);
- } catch (RemoteException ex) {
- // system process is dead if we're here.
- }
-
- // close the shade if it was open
- animateCollapse();
-
- // If this click was on the intruder alert, hide that instead
- mHandler.sendEmptyMessage(MSG_HIDE_INTRUDER);
- }
- }
-
@Override
protected void tick(IBinder key, StatusBarNotification n, boolean firstTime) {
// no ticking in lights-out mode
@@ -1954,9 +1868,14 @@
synchronized (mQueueLock) {
pw.println("Current Status Bar state:");
pw.println(" mExpanded=" + mExpanded
- + ", mExpandedVisible=" + mExpandedVisible);
+ + ", mExpandedVisible=" + mExpandedVisible
+ + ", mTrackingPosition=" + mTrackingPosition);
pw.println(" mTicking=" + mTicking);
pw.println(" mTracking=" + mTracking);
+ pw.println(" mNotificationPanel=" +
+ ((mNotificationPanel == null)
+ ? "null"
+ : (mNotificationPanel + " params=" + mNotificationPanel.getLayoutParams().debug(""))));
pw.println(" mAnimating=" + mAnimating
+ ", mAnimY=" + mAnimY + ", mAnimVel=" + mAnimVel
+ ", mAnimAccel=" + mAnimAccel);
@@ -2089,7 +2008,6 @@
}
// tracking view...
- int pos;
if (expandedPosition == EXPANDED_FULL_OPEN) {
panelh = disph;
}
@@ -2176,9 +2094,6 @@
}
private View.OnClickListener mClearButtonListener = new View.OnClickListener() {
- final int mini(int a, int b) {
- return (b>a?a:b);
- }
public void onClick(View v) {
synchronized (mNotificationData) {
// animate-swipe all dismissable notifications, then animate the shade closed
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 5cab636..b1cce2d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -57,7 +57,6 @@
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.RemoteViews;
import android.widget.ScrollView;
import android.widget.TextView;
@@ -70,9 +69,9 @@
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.DoNotDisturb;
import com.android.systemui.statusbar.NotificationData;
+import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
-import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CompatModeButton;
@@ -495,8 +494,7 @@
// where the icons go
mIconLayout = (NotificationIconArea.IconLayout) sb.findViewById(R.id.icons);
- ViewConfiguration vc = ViewConfiguration.get(context);
- mNotificationPeekTapDuration = vc.getTapTimeout();
+ mNotificationPeekTapDuration = ViewConfiguration.getTapTimeout();
mNotificationFlingVelocity = 300; // px/s
mTicker = new TabletTicker(this);
@@ -1294,7 +1292,7 @@
mNotificationArea.postDelayed(mHiliteOnR, 100);
} else {
mNotificationArea.removeCallbacks(mHiliteOnR);
- mNotificationArea.setBackgroundDrawable(null);
+ mNotificationArea.setBackground(null);
}
}
@@ -1368,106 +1366,6 @@
NOTIFICATION_PEEK_FADE_DELAY);
}
- private class NotificationIconTouchListener implements View.OnTouchListener {
- VelocityTracker mVT;
- int mPeekIndex;
- float mInitialTouchX, mInitialTouchY;
- int mTouchSlop;
-
- public NotificationIconTouchListener() {
- mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
- }
-
- public boolean onTouch(View v, MotionEvent event) {
- boolean peeking = mNotificationPeekWindow.getVisibility() != View.GONE;
- boolean panelShowing = mNotificationPanel.isShowing();
- if (panelShowing) return false;
-
- int numIcons = mIconLayout.getChildCount();
- int newPeekIndex = (int)(event.getX() * numIcons / mIconLayout.getWidth());
- if (newPeekIndex > numIcons - 1) newPeekIndex = numIcons - 1;
- else if (newPeekIndex < 0) newPeekIndex = 0;
-
- final int action = event.getAction();
- switch (action) {
- case MotionEvent.ACTION_DOWN:
- mVT = VelocityTracker.obtain();
- mInitialTouchX = event.getX();
- mInitialTouchY = event.getY();
- mPeekIndex = -1;
-
- // fall through
- case MotionEvent.ACTION_OUTSIDE:
- case MotionEvent.ACTION_MOVE:
- // peek and switch icons if necessary
-
- if (newPeekIndex != mPeekIndex) {
- mPeekIndex = newPeekIndex;
-
- if (DEBUG) Slog.d(TAG, "will peek at notification #" + mPeekIndex);
- Message peekMsg = mHandler.obtainMessage(MSG_OPEN_NOTIFICATION_PEEK);
- peekMsg.arg1 = mPeekIndex;
-
- mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK);
-
- if (peeking) {
- // no delay if we're scrubbing left-right
- mHandler.sendMessage(peekMsg);
- } else {
- // wait for fling
- mHandler.sendMessageDelayed(peekMsg, NOTIFICATION_PEEK_HOLD_THRESH);
- }
- }
-
- // check for fling
- if (mVT != null) {
- mVT.addMovement(event);
- mVT.computeCurrentVelocity(1000); // pixels per second
- // require a little more oomph once we're already in peekaboo mode
- if (!panelShowing && (
- (peeking && mVT.getYVelocity() < -mNotificationFlingVelocity*3)
- || (mVT.getYVelocity() < -mNotificationFlingVelocity))) {
- mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK);
- mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PANEL);
- mHandler.sendEmptyMessage(MSG_CLOSE_NOTIFICATION_PEEK);
- mHandler.sendEmptyMessage(MSG_OPEN_NOTIFICATION_PANEL);
- }
- }
- return true;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK);
- if (!peeking) {
- if (action == MotionEvent.ACTION_UP
- // was this a sloppy tap?
- && Math.abs(event.getX() - mInitialTouchX) < mTouchSlop
- && Math.abs(event.getY() - mInitialTouchY) < (mTouchSlop / 3)
- // dragging off the bottom doesn't count
- && (int)event.getY() < v.getBottom()) {
- Message peekMsg = mHandler.obtainMessage(MSG_OPEN_NOTIFICATION_PEEK);
- peekMsg.arg1 = mPeekIndex;
- mHandler.removeMessages(MSG_OPEN_NOTIFICATION_PEEK);
- mHandler.sendMessage(peekMsg);
-
- v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
- v.playSoundEffect(SoundEffectConstants.CLICK);
-
- peeking = true; // not technically true yet, but the next line will run
- }
- }
-
- if (peeking) {
- resetNotificationPeekFadeTimer();
- }
-
- mVT.recycle();
- mVT = null;
- return true;
- }
- return false;
- }
- }
-
private void reloadAllNotificationIcons() {
if (mIconLayout == null) return;
mIconLayout.removeAllViews();
@@ -1609,9 +1507,9 @@
if (!(bgd instanceof LayerDrawable)) return;
LayerDrawable d = (LayerDrawable) bgd;
- v.setBackgroundDrawable(null);
+ v.setBackground(null);
d.setOpacity(PixelFormat.TRANSLUCENT);
- v.setBackgroundDrawable(d);
+ v.setBackground(d);
}
public void clearAll() {
@@ -1658,6 +1556,7 @@
@Override
protected boolean isTopNotification(ViewGroup parent, NotificationData.Entry entry) {
+ if (parent == null || entry == null) return false;
return parent.indexOfChild(entry.row) == parent.getChildCount()-1;
}
diff --git a/packages/VpnDialogs/res/values-in/strings.xml b/packages/VpnDialogs/res/values-in/strings.xml
index c9710e5..2848f83 100644
--- a/packages/VpnDialogs/res/values-in/strings.xml
+++ b/packages/VpnDialogs/res/values-in/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="prompt" msgid="8359175999006833462">"<xliff:g id="APP">%s</xliff:g> mencoba membuat sambungan VPN."</string>
- <string name="warning" msgid="5470743576660160079">"Dengan melanjutkan, Anda memberikan izin kepada aplikasi untuk mencegat semua lalu lintas jaringan. "<b>"JANGAN memberi izin kecuali Anda mempercayai aplikasi ini."</b>" Jika tidak, data Anda berisiko disusupi oleh perangkat lunak jahat."</string>
+ <string name="warning" msgid="5470743576660160079">"Dengan melanjutkan, Anda memberikan izin kepada aplikasi untuk mencegat semua lalu lintas jaringan. "<b>"JANGAN memberi izin kecuali Anda mempercayai aplikasi ini."</b>" Jika tidak, data Anda berisiko disusupi oleh perangkat lunak perusak."</string>
<string name="accept" msgid="2889226408765810173">"Saya mempercayai aplikasi ini."</string>
<string name="legacy_title" msgid="192936250066580964">"VPN tersambung"</string>
<string name="configure" msgid="4905518375574791375">"Konfigurasikan"</string>
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
index e84e912..4b2066f 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
@@ -335,7 +335,7 @@
}
int lockSoundDefaultAttenuation = context.getResources().getInteger(
com.android.internal.R.integer.config_lockSoundVolumeDb);
- mLockSoundVolume = (float)Math.pow(10, lockSoundDefaultAttenuation/20);
+ mLockSoundVolume = (float)Math.pow(10, (float)lockSoundDefaultAttenuation/20);
IntentFilter userFilter = new IntentFilter();
userFilter.addAction(Intent.ACTION_USER_SWITCHED);
userFilter.addAction(Intent.ACTION_USER_REMOVED);
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 4206a97..ac74597 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -65,7 +65,6 @@
import com.android.internal.widget.PointerLocationView;
import android.service.dreams.IDreamManager;
-import android.speech.RecognizerIntent;
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.Log;
@@ -161,6 +160,7 @@
static final boolean localLOGV = false;
static final boolean DEBUG_LAYOUT = false;
static final boolean DEBUG_INPUT = false;
+ static final boolean DEBUG_STARTING_WINDOW = false;
static final boolean SHOW_STARTING_ANIMATIONS = true;
static final boolean SHOW_PROCESSES_ON_ALT_MENU = false;
@@ -1479,8 +1479,9 @@
try {
Context context = mContext;
- //Log.i(TAG, "addStartingWindow " + packageName + ": nonLocalizedLabel="
- // + nonLocalizedLabel + " theme=" + Integer.toHexString(theme));
+ if (DEBUG_STARTING_WINDOW) Slog.d(TAG, "addStartingWindow " + packageName
+ + ": nonLocalizedLabel=" + nonLocalizedLabel + " theme="
+ + Integer.toHexString(theme));
if (theme != context.getThemeResId() || labelRes != 0) {
try {
context = context.createPackageContext(packageName, 0);
@@ -1547,7 +1548,7 @@
return null;
}
- if (localLOGV) Log.v(
+ if (DEBUG_STARTING_WINDOW) Slog.d(
TAG, "Adding starting window for " + packageName
+ " / " + appToken + ": "
+ (view.getParent() != null ? view : null));
@@ -1572,11 +1573,11 @@
/** {@inheritDoc} */
public void removeStartingWindow(IBinder appToken, View window) {
- // RuntimeException e = new RuntimeException();
- // Log.i(TAG, "remove " + appToken + " " + window, e);
-
- if (localLOGV) Log.v(
- TAG, "Removing starting window for " + appToken + ": " + window);
+ if (DEBUG_STARTING_WINDOW) {
+ RuntimeException e = new RuntimeException("here");
+ e.fillInStackTrace();
+ Log.v(TAG, "Removing starting window for " + appToken + ": " + window, e);
+ }
if (window != null) {
WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
diff --git a/services/common_time/Android.mk b/services/common_time/Android.mk
index e534d49..0606ab4 100644
--- a/services/common_time/Android.mk
+++ b/services/common_time/Android.mk
@@ -14,7 +14,8 @@
common_time_server_packets.cpp \
clock_recovery.cpp \
common_clock.cpp \
- main.cpp
+ main.cpp \
+ utils.cpp
# Uncomment to enable vesbose logging and debug service.
#TIME_SERVICE_DEBUG=true
diff --git a/services/common_time/clock_recovery.cpp b/services/common_time/clock_recovery.cpp
index 6c98d32..4a5b2ef 100644
--- a/services/common_time/clock_recovery.cpp
+++ b/services/common_time/clock_recovery.cpp
@@ -53,6 +53,21 @@
local_clock_can_slew_ = local_clock_->initCheck() &&
(local_clock_->setLocalSlew(0) == OK);
+ tgt_correction_ = 0;
+ cur_correction_ = 0;
+
+ // Precompute the max rate at which we are allowed to change the VCXO
+ // control.
+ uint64_t N = 0x10000ull * 1000ull;
+ uint64_t D = local_clock_->getLocalFreq() * kMinFullRangeSlewChange_mSec;
+ LinearTransform::reduce(&N, &D);
+ while ((N > INT32_MAX) || (D > UINT32_MAX)) {
+ N >>= 1;
+ D >>= 1;
+ LinearTransform::reduce(&N, &D);
+ }
+ time_to_cur_slew_.a_to_b_numer = static_cast<int32_t>(N);
+ time_to_cur_slew_.a_to_b_denom = static_cast<uint32_t>(D);
reset(true, true);
@@ -85,6 +100,9 @@
const int64_t ClockRecoveryLoop::control_thresh_ = 10000;
const float ClockRecoveryLoop::COmin = -100.0f;
const float ClockRecoveryLoop::COmax = 100.0f;
+const uint32_t ClockRecoveryLoop::kMinFullRangeSlewChange_mSec = 300;
+const int ClockRecoveryLoop::kSlewChangeStepPeriod_mSec = 10;
+
void ClockRecoveryLoop::reset(bool position, bool frequency) {
Mutex::Autolock lock(&lock_);
@@ -144,7 +162,7 @@
int64_t observed_common;
int64_t delta;
float delta_f, dCO;
- int32_t correction_cur;
+ int32_t tgt_correction;
if (OK != common_clock_->localToCommon(local_time, &observed_common)) {
// Since we just checked to make certain that this conversion was valid,
@@ -254,23 +272,20 @@
// Convert PPM to 16-bit int range. Add some guard band (-0.01) so we
// don't get fp weirdness.
- correction_cur = CO * 327.66;
+ tgt_correction = CO * 327.66;
// If there was a change in the amt of correction to use, update the
// system.
- if (correction_cur_ != correction_cur) {
- correction_cur_ = correction_cur;
- applySlew();
- }
+ setTargetCorrection_l(tgt_correction);
- LOG_TS("clock_loop %lld %f %f %f %d\n", raw_delta, delta_f, CO, CObias, correction_cur);
+ LOG_TS("clock_loop %lld %f %f %f %d\n", raw_delta, delta_f, CO, CObias, tgt_correction);
#ifdef TIME_SERVICE_DEBUG
diag_thread_->pushDisciplineEvent(
local_time,
observed_common,
nominal_common_time,
- correction_cur,
+ tgt_correction,
rtt);
#endif
@@ -298,24 +313,109 @@
last_delta_valid_ = false;
last_delta_ = 0;
last_delta_f_ = 0.0;
- correction_cur_ = 0x0;
CO = 0.0f;
lastCObias = CObias = 0.0f;
- applySlew();
+ setTargetCorrection_l(0);
+ applySlew_l();
}
filter_wr_ = 0;
filter_full_ = false;
}
-void ClockRecoveryLoop::applySlew() {
+void ClockRecoveryLoop::setTargetCorrection_l(int32_t tgt) {
+ // When we make a change to the slew rate, we need to be careful to not
+ // change it too quickly as it can anger some HDMI sinks out there, notably
+ // some Sony panels from the 2010-2011 timeframe. From experimenting with
+ // some of these sinks, it seems like swinging from one end of the range to
+ // another in less that 190mSec or so can start to cause trouble. Adding in
+ // a hefty margin, we limit the system to a full range sweep in no less than
+ // 300mSec.
+ if (tgt_correction_ != tgt) {
+ int64_t now = local_clock_->getLocalTime();
+ status_t res;
+
+ tgt_correction_ = tgt;
+
+ // Set up the transformation to figure out what the slew should be at
+ // any given point in time in the future.
+ time_to_cur_slew_.a_zero = now;
+ time_to_cur_slew_.b_zero = cur_correction_;
+
+ // Make sure the sign of the slope is headed in the proper direction.
+ bool needs_increase = (cur_correction_ < tgt_correction_);
+ bool is_increasing = (time_to_cur_slew_.a_to_b_numer > 0);
+ if (( needs_increase && !is_increasing) ||
+ (!needs_increase && is_increasing)) {
+ time_to_cur_slew_.a_to_b_numer = -time_to_cur_slew_.a_to_b_numer;
+ }
+
+ // Finally, figure out when the change will be finished and start the
+ // slew operation.
+ time_to_cur_slew_.doReverseTransform(tgt_correction_,
+ &slew_change_end_time_);
+
+ applySlew_l();
+ }
+}
+
+bool ClockRecoveryLoop::applySlew_l() {
+ bool ret = true;
+
+ // If cur == tgt, there is no ongoing sleq rate change and we are already
+ // finished.
+ if (cur_correction_ == tgt_correction_)
+ goto bailout;
+
if (local_clock_can_slew_) {
- local_clock_->setLocalSlew(correction_cur_);
+ int64_t now = local_clock_->getLocalTime();
+ int64_t tmp;
+
+ if (now >= slew_change_end_time_) {
+ cur_correction_ = tgt_correction_;
+ next_slew_change_timeout_.setTimeout(-1);
+ } else {
+ time_to_cur_slew_.doForwardTransform(now, &tmp);
+
+ if (tmp > INT16_MAX)
+ cur_correction_ = INT16_MAX;
+ else if (tmp < INT16_MIN)
+ cur_correction_ = INT16_MIN;
+ else
+ cur_correction_ = static_cast<int16_t>(tmp);
+
+ next_slew_change_timeout_.setTimeout(kSlewChangeStepPeriod_mSec);
+ ret = false;
+ }
+
+ local_clock_->setLocalSlew(cur_correction_);
} else {
+ // Since we are not actually changing the rate of a HW clock, we don't
+ // need to worry to much about changing the slew rate so fast that we
+ // anger any downstream HDMI devices.
+ cur_correction_ = tgt_correction_;
+ next_slew_change_timeout_.setTimeout(-1);
+
// The SW clock recovery implemented by the common clock class expects
// values expressed in PPM. CO is in ppm.
common_clock_->setSlew(local_clock_->getLocalTime(), CO);
}
+
+bailout:
+ return ret;
+}
+
+int ClockRecoveryLoop::applyRateLimitedSlew() {
+ Mutex::Autolock lock(&lock_);
+
+ int ret = next_slew_change_timeout_.msecTillTimeout();
+ if (!ret) {
+ if (applySlew_l())
+ next_slew_change_timeout_.setTimeout(-1);
+ ret = next_slew_change_timeout_.msecTillTimeout();
+ }
+
+ return ret;
}
} // namespace android
diff --git a/services/common_time/clock_recovery.h b/services/common_time/clock_recovery.h
index b7362be..20fbf96 100644
--- a/services/common_time/clock_recovery.h
+++ b/services/common_time/clock_recovery.h
@@ -26,6 +26,8 @@
#include "diag_thread.h"
#endif
+#include "utils.h"
+
namespace android {
class CommonClock;
@@ -42,6 +44,11 @@
int64_t data_point_rtt);
int32_t getLastErrorEstimate();
+ // Applies the next step in any ongoing slew change operation. Returns a
+ // timeout suitable for use with poll/select indicating the number of mSec
+ // until the next change should be applied.
+ int applyRateLimitedSlew();
+
private:
// Tuned using the "Good Gain" method.
@@ -87,7 +94,8 @@
static uint32_t findMinRTTNdx(DisciplineDataPoint* data, uint32_t count);
void reset_l(bool position, bool frequency);
- void applySlew();
+ void setTargetCorrection_l(int32_t tgt);
+ bool applySlew_l();
// The local clock HW abstraction we use as the basis for common time.
LocalClock* local_clock_;
@@ -104,7 +112,11 @@
int32_t last_delta_;
float last_delta_f_;
int32_t integrated_error_;
- int32_t correction_cur_;
+ int32_t tgt_correction_;
+ int32_t cur_correction_;
+ LinearTransform time_to_cur_slew_;
+ int64_t slew_change_end_time_;
+ Timeout next_slew_change_timeout_;
// Contoller Output.
float CO;
@@ -128,6 +140,15 @@
DisciplineDataPoint startup_filter_data_[kStartupFilterSize];
uint32_t startup_filter_wr_;
+ // Minimum number of milliseconds over which we allow a full range change
+ // (from rail to rail) of the VCXO control signal. This is the rate
+ // limiting factor which keeps us from changing the clock rate so fast that
+ // we get in trouble with certain HDMI sinks.
+ static const uint32_t kMinFullRangeSlewChange_mSec;
+
+ // How much time (in msec) to wait
+ static const int kSlewChangeStepPeriod_mSec;
+
#ifdef TIME_SERVICE_DEBUG
sp<DiagThread> diag_thread_;
#endif
diff --git a/services/common_time/common_time_server.cpp b/services/common_time/common_time_server.cpp
index 7a4986b..4e5d16e 100644
--- a/services/common_time/common_time_server.cpp
+++ b/services/common_time/common_time_server.cpp
@@ -202,9 +202,11 @@
// run the state machine
while (!exitPending()) {
struct pollfd pfds[2];
- int rc;
+ int rc, timeout;
int eventCnt = 0;
int64_t wakeupTime;
+ uint32_t t1, t2;
+ bool needHandleTimeout = false;
// We are always interested in our wakeup FD.
pfds[eventCnt].fd = mWakeupThreadFD;
@@ -221,10 +223,14 @@
eventCnt++;
}
+ t1 = static_cast<uint32_t>(mCurTimeout.msecTillTimeout());
+ t2 = static_cast<uint32_t>(mClockRecovery.applyRateLimitedSlew());
+ timeout = static_cast<int>(t1 < t2 ? t1 : t2);
+
// Note, we were holding mLock when this function was called. We
// release it only while we are blocking and hold it at all other times.
mLock.unlock();
- rc = poll(pfds, eventCnt, mCurTimeout.msecTillTimeout());
+ rc = poll(pfds, eventCnt, timeout);
wakeupTime = mLocalClock.getLocalTime();
mLock.lock();
@@ -238,8 +244,11 @@
return false;
}
- if (rc == 0)
- mCurTimeout.setTimeout(kInfiniteTimeout);
+ if (rc == 0) {
+ needHandleTimeout = !mCurTimeout.msecTillTimeout();
+ if (needHandleTimeout)
+ mCurTimeout.setTimeout(kInfiniteTimeout);
+ }
// Were we woken up on purpose? If so, clear the eventfd with a read.
if (pfds[0].revents)
@@ -336,9 +345,8 @@
continue;
}
- // Did we wakeup with no signalled events across all of our FDs? If so,
- // we must have hit our timeout.
- if (rc == 0) {
+ // Time to handle the timeouts?
+ if (needHandleTimeout) {
if (!handleTimeout())
ALOGE("handleTimeout failed");
continue;
@@ -1326,29 +1334,6 @@
}
}
-void CommonTimeServer::TimeoutHelper::setTimeout(int msec) {
- mTimeoutValid = (msec >= 0);
- if (mTimeoutValid)
- mEndTime = systemTime() +
- (static_cast<nsecs_t>(msec) * 1000000);
-}
-
-int CommonTimeServer::TimeoutHelper::msecTillTimeout() {
- if (!mTimeoutValid)
- return kInfiniteTimeout;
-
- nsecs_t now = systemTime();
- if (now >= mEndTime)
- return 0;
-
- uint64_t deltaMsec = (((mEndTime - now) + 999999) / 1000000);
-
- if (deltaMsec > static_cast<uint64_t>(MAX_INT))
- return MAX_INT;
-
- return static_cast<int>(deltaMsec);
-}
-
bool CommonTimeServer::shouldPanicNotGettingGoodData() {
if (mClient_FirstSyncTX) {
int64_t now = mLocalClock.getLocalTime();
diff --git a/services/common_time/common_time_server.h b/services/common_time/common_time_server.h
index a0f549f..b2ad3f0 100644
--- a/services/common_time/common_time_server.h
+++ b/services/common_time/common_time_server.h
@@ -28,6 +28,7 @@
#include "clock_recovery.h"
#include "common_clock.h"
#include "common_time_server_packets.h"
+#include "utils.h"
#define RTT_LOG_SIZE 30
@@ -104,18 +105,6 @@
int64_t rxTimes[RTT_LOG_SIZE];
};
- class TimeoutHelper {
- public:
- TimeoutHelper() : mTimeoutValid(false) { }
-
- void setTimeout(int msec);
- int msecTillTimeout();
-
- private:
- bool mTimeoutValid;
- nsecs_t mEndTime;
- };
-
bool threadLoop();
bool runStateMachine_l();
@@ -194,7 +183,7 @@
bool shouldPanicNotGettingGoodData();
// Helper to keep track of the state machine's current timeout
- TimeoutHelper mCurTimeout;
+ Timeout mCurTimeout;
// common clock, local clock abstraction, and clock recovery loop
CommonClock mCommonClock;
diff --git a/services/common_time/utils.cpp b/services/common_time/utils.cpp
new file mode 100644
index 0000000..3ed2599
--- /dev/null
+++ b/services/common_time/utils.cpp
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "utils.h"
+
+namespace android {
+
+void Timeout::setTimeout(int msec) {
+ if (msec < 0) {
+ mSystemEndTime = 0;
+ return;
+ }
+
+ mSystemEndTime = systemTime() + (static_cast<nsecs_t>(msec) * 1000000);
+}
+
+int Timeout::msecTillTimeout(nsecs_t nowTime) {
+ if (!mSystemEndTime) {
+ return -1;
+ }
+
+ if (mSystemEndTime < nowTime) {
+ return 0;
+ }
+
+ nsecs_t delta = mSystemEndTime - nowTime;
+ delta += 999999;
+ delta /= 1000000;
+ if (delta > 0x7FFFFFFF) {
+ return 0x7FFFFFFF;
+ }
+
+ return static_cast<int>(delta);
+}
+
+} // namespace android
diff --git a/services/common_time/utils.h b/services/common_time/utils.h
new file mode 100644
index 0000000..d3545c9
--- /dev/null
+++ b/services/common_time/utils.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UTILS_H__
+#define __UTILS_H__
+
+#include <stdint.h>
+#include <unistd.h>
+
+#include <utils/Timers.h>
+
+namespace android {
+
+class Timeout {
+ public:
+ Timeout() : mSystemEndTime(0) { }
+
+ // Set a timeout which should occur msec milliseconds from now.
+ // Negative values will cancel any current timeout;
+ void setTimeout(int msec);
+
+ // Return the number of milliseconds until the timeout occurs, or -1 if
+ // no timeout is scheduled.
+ int msecTillTimeout(nsecs_t nowTime);
+ int msecTillTimeout() { return msecTillTimeout(systemTime()); }
+
+ private:
+ // The systemTime() at which the timeout will be complete, or 0 if no
+ // timeout is currently scheduled.
+ nsecs_t mSystemEndTime;
+};
+
+} // namespace android
+
+#endif // __UTILS_H__
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java
index 4d6c058..7725f35 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/java/com/android/server/AppWidgetServiceImpl.java
@@ -210,11 +210,19 @@
synchronized (mAppWidgetIds) {
ensureStateLoadedLocked();
- int N = mInstalledProviders.size();
+ // Note: updateProvidersForPackageLocked() may remove providers, so we must copy the
+ // list of installed providers and skip providers that we don't need to update.
+ // Also note that remove the provider does not clear the Provider component data.
+ ArrayList<Provider> installedProviders =
+ new ArrayList<Provider>(mInstalledProviders);
+ HashSet<ComponentName> removedProviders = new HashSet<ComponentName>();
+ int N = installedProviders.size();
for (int i = N - 1; i >= 0; i--) {
- Provider p = mInstalledProviders.get(i);
- String pkgName = p.info.provider.getPackageName();
- updateProvidersForPackageLocked(pkgName);
+ Provider p = installedProviders.get(i);
+ ComponentName cn = p.info.provider;
+ if (!removedProviders.contains(cn)) {
+ updateProvidersForPackageLocked(cn.getPackageName(), removedProviders);
+ }
}
saveStateLocked();
}
@@ -257,7 +265,7 @@
|| (extras != null && extras.getBoolean(Intent.EXTRA_REPLACING, false))) {
for (String pkgName : pkgList) {
// The package was just upgraded
- providersModified |= updateProvidersForPackageLocked(pkgName);
+ providersModified |= updateProvidersForPackageLocked(pkgName, null);
}
} else {
// The package was just added
@@ -1677,7 +1685,13 @@
return providersAdded;
}
- boolean updateProvidersForPackageLocked(String pkgName) {
+ /**
+ * Updates all providers with the specified package names, and records any providers that were
+ * pruned.
+ *
+ * @return whether any providers were updated
+ */
+ boolean updateProvidersForPackageLocked(String pkgName, Set<ComponentName> removedProviders) {
boolean providersUpdated = false;
HashSet<String> keep = new HashSet<String>();
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
@@ -1754,6 +1768,9 @@
Provider p = mInstalledProviders.get(i);
if (pkgName.equals(p.info.provider.getPackageName())
&& !keep.contains(p.info.provider.getClassName())) {
+ if (removedProviders != null) {
+ removedProviders.add(p.info.provider);
+ }
removeProviderLocked(i, p);
providersUpdated = true;
}
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index f26a7d1..60085f4 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -5704,12 +5704,19 @@
if (killProcesses) {
// Find any running processes associated with this app.
+ final String pkg = component.getPackageName();
ArrayList<ProcessRecord> procs = new ArrayList<ProcessRecord>();
- SparseArray<ProcessRecord> appProcs
- = mProcessNames.getMap().get(component.getPackageName());
- if (appProcs != null) {
- for (int i=0; i<appProcs.size(); i++) {
- procs.add(appProcs.valueAt(i));
+ HashMap<String, SparseArray<ProcessRecord>> pmap = mProcessNames.getMap();
+ for (SparseArray<ProcessRecord> uids : pmap.values()) {
+ for (int i=0; i<uids.size(); i++) {
+ ProcessRecord proc = uids.valueAt(i);
+ if (proc.userId != tr.userId) {
+ continue;
+ }
+ if (!proc.pkgList.contains(pkg)) {
+ continue;
+ }
+ procs.add(proc);
}
}
@@ -5720,6 +5727,7 @@
Slog.i(TAG, "Killing " + pr.toShortString() + ": remove task");
EventLog.writeEvent(EventLogTags.AM_KILL, pr.pid,
pr.processName, pr.setAdj, "remove task");
+ pr.killedBackground = true;
Process.killProcessQuiet(pr.pid);
} else {
pr.waitingToKill = "remove task";
@@ -14634,6 +14642,7 @@
Slog.i(TAG, "Killing " + app.toShortString() + ": " + app.waitingToKill);
EventLog.writeEvent(EventLogTags.AM_KILL, app.pid,
app.processName, app.setAdj, app.waitingToKill);
+ app.killedBackground = true;
Process.killProcessQuiet(app.pid);
success = false;
} else {
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index b276494..9171e47 100755
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -2347,6 +2347,9 @@
while (i > 0) {
i--;
ActivityRecord candidate = mHistory.get(i);
+ if (candidate.finishing) {
+ continue;
+ }
if (candidate.task.taskId != task) {
break;
}
@@ -4057,7 +4060,7 @@
int index = indexOfActivityLocked(r);
if (index >= 0) {
if (r.state == ActivityState.DESTROYING) {
- cleanUpActivityLocked(r, true, true);
+ cleanUpActivityLocked(r, true, false);
removeActivityFromHistoryLocked(r);
}
}
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 87dcd15..e1ab58b 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -7773,6 +7773,80 @@
return ret;
}
+ private final class ClearStorageConnection implements ServiceConnection {
+ IMediaContainerService mContainerService;
+
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ synchronized (this) {
+ mContainerService = IMediaContainerService.Stub.asInterface(service);
+ notifyAll();
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ }
+ }
+
+ private void clearExternalStorageDataSync(String packageName, boolean allData) {
+ final boolean mounted;
+ if (Environment.isExternalStorageEmulated()) {
+ mounted = true;
+ } else {
+ final String status = Environment.getExternalStorageState();
+
+ mounted = status.equals(Environment.MEDIA_MOUNTED)
+ || status.equals(Environment.MEDIA_MOUNTED_READ_ONLY);
+ }
+
+ if (!mounted) {
+ return;
+ }
+
+ final Intent containerIntent = new Intent().setComponent(DEFAULT_CONTAINER_COMPONENT);
+ ClearStorageConnection conn = new ClearStorageConnection();
+ if (mContext.bindService(containerIntent, conn, Context.BIND_AUTO_CREATE)) {
+ try {
+ long timeout = SystemClock.uptimeMillis() + 5000;
+ synchronized (conn) {
+ long now = SystemClock.uptimeMillis();
+ while (conn.mContainerService == null && now < timeout) {
+ try {
+ conn.wait(timeout - now);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ if (conn.mContainerService == null) {
+ return;
+ }
+ final File externalCacheDir = Environment
+ .getExternalStorageAppCacheDirectory(packageName);
+ try {
+ conn.mContainerService.clearDirectory(externalCacheDir.toString());
+ } catch (RemoteException e) {
+ }
+ if (allData) {
+ final File externalDataDir = Environment
+ .getExternalStorageAppDataDirectory(packageName);
+ try {
+ conn.mContainerService.clearDirectory(externalDataDir.toString());
+ } catch (RemoteException e) {
+ }
+ final File externalMediaDir = Environment
+ .getExternalStorageAppMediaDirectory(packageName);
+ try {
+ conn.mContainerService.clearDirectory(externalMediaDir.toString());
+ } catch (RemoteException e) {
+ }
+ }
+ } finally {
+ mContext.unbindService(conn);
+ }
+ }
+ }
+
@Override
public void clearApplicationUserData(final String packageName,
final IPackageDataObserver observer, final int userId) {
@@ -7787,6 +7861,7 @@
synchronized (mInstallLock) {
succeeded = clearApplicationUserDataLI(packageName, userId);
}
+ clearExternalStorageDataSync(packageName, true);
if (succeeded) {
// invoke DeviceStorageMonitor's update method to clear any notifications
DeviceStorageMonitorService dsm = (DeviceStorageMonitorService)
@@ -7860,6 +7935,7 @@
synchronized (mInstallLock) {
succeded = deleteApplicationCacheFilesLI(packageName, userId);
}
+ clearExternalStorageDataSync(packageName, false);
if(observer != null) {
try {
observer.onRemoveCompleted(packageName, succeded);
diff --git a/services/java/com/android/server/power/PowerManagerService.java b/services/java/com/android/server/power/PowerManagerService.java
index edd00e8..2940b70 100644
--- a/services/java/com/android/server/power/PowerManagerService.java
+++ b/services/java/com/android/server/power/PowerManagerService.java
@@ -1236,7 +1236,7 @@
+ " mLightSensorKeyboardBrightness=" + mLightSensorKeyboardBrightness);
pw.println(" mUseSoftwareAutoBrightness=" + mUseSoftwareAutoBrightness);
pw.println(" mAutoBrightessEnabled=" + mAutoBrightessEnabled);
- mScreenBrightnessAnimator.dump(pw, " mScreenBrightnessAnimator: ");
+ mScreenBrightnessAnimator.dump(pw, "mScreenBrightnessAnimator: ");
int N = mLocks.size();
pw.println();
@@ -2277,8 +2277,9 @@
+ ", duration:" + duration + ", current:" + currentValue);
pw.println(" startSensorValue:" + startSensorValue
+ " endSensorValue:" + endSensorValue);
- pw.println(" startSensorValue:" + startSensorValue
- + " endSensorValue:" + endSensorValue);
+ pw.println(" startTimeMillis:" + startTimeMillis
+ + " now:" + SystemClock.elapsedRealtime());
+ pw.println(" currentMask:" + dumpPowerState(currentMask));
}
public void animateTo(int target, int mask, int animationDuration) {
diff --git a/services/java/com/android/server/wm/AppWindowAnimator.java b/services/java/com/android/server/wm/AppWindowAnimator.java
index a06e224..4860f1e 100644
--- a/services/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/java/com/android/server/wm/AppWindowAnimator.java
@@ -35,6 +35,10 @@
// AppWindowToken animations.
int animLayerAdjustment;
+ // Propagated from AppWindowToken.allDrawn, to determine when
+ // the state changes.
+ boolean allDrawn;
+
// Special surface for thumbnail animation.
Surface thumbnail;
int thumbnailTransactionSeq;
@@ -119,7 +123,7 @@
if (w == mService.mInputMethodTarget && !mService.mInputMethodTargetWaitingAnim) {
mService.setInputMethodAnimLayerAdjustment(adj);
}
- if (w == mService.mWallpaperTarget && mService.mLowerWallpaperTarget == null) {
+ if (w == mAnimator.mWallpaperTarget && mAnimator.mLowerWallpaperTarget == null) {
mService.setWallpaperAnimLayerAdjustmentLocked(adj);
}
}
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java
index bf35154..6ecbb8e 100644
--- a/services/java/com/android/server/wm/AppWindowToken.java
+++ b/services/java/com/android/server/wm/AppWindowToken.java
@@ -241,12 +241,18 @@
pw.print(prefix); pw.print("paused="); pw.println(paused);
}
if (numInterestingWindows != 0 || numDrawnWindows != 0
- || inPendingTransaction || allDrawn) {
+ || allDrawn || mAppAnimator.allDrawn) {
pw.print(prefix); pw.print("numInterestingWindows=");
pw.print(numInterestingWindows);
pw.print(" numDrawnWindows="); pw.print(numDrawnWindows);
pw.print(" inPendingTransaction="); pw.print(inPendingTransaction);
- pw.print(" allDrawn="); pw.println(allDrawn);
+ pw.print(" allDrawn="); pw.print(allDrawn);
+ pw.print(" (animator="); pw.print(mAppAnimator.allDrawn);
+ pw.println(")");
+ }
+ if (inPendingTransaction) {
+ pw.print(prefix); pw.print("inPendingTransaction=");
+ pw.println(inPendingTransaction);
}
if (startingData != null || removed || firstWindowDrawn) {
pw.print(prefix); pw.print("startingData="); pw.print(startingData);
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index 82d2e6a..eb98e7d 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -8,20 +8,20 @@
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_UPDATE_ROTATION;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPAPER_MAY_CHANGE;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_FORCE_HIDING_CHANGED;
+import static com.android.server.wm.WindowManagerService.LayoutFields.SET_ORIENTATION_CHANGE_COMPLETE;
-import static com.android.server.wm.WindowManagerService.H.SET_DIM_PARAMETERS;
+import static com.android.server.wm.WindowManagerService.H.UPDATE_ANIM_PARAMETERS;
import android.content.Context;
import android.os.SystemClock;
import android.util.Log;
import android.util.Slog;
-import android.view.Choreographer;
import android.view.Surface;
-import android.view.WindowManager;
import android.view.WindowManagerPolicy;
import android.view.animation.Animation;
import com.android.internal.policy.impl.PhoneWindowManager;
+import com.android.server.wm.WindowManagerService.LayoutToAnimatorParams;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -37,30 +37,10 @@
final Context mContext;
final WindowManagerPolicy mPolicy;
- final Choreographer mChoreographer = Choreographer.getInstance();
-
ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>();
boolean mAnimating;
- /** Variables only intended to be valid within each pass through animate(). Does not contain
- * persistent state. */
- private class InnerLoopParams {
- boolean mTokenMayBeDrawn;
- boolean mForceHiding;
- }
- InnerLoopParams mInner = new InnerLoopParams();
-
- static class LayoutToAnimatorParams {
- boolean mAnimationScheduled;
- ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>();
- WindowState mWallpaperTarget;
- }
- /** Params from WindowManagerService. Do not modify or read without first locking on
- * either WindowManagerService.mWindowMap or WindowManagerService.mAnimator.and then on
- * mLayoutToAnim */
- final LayoutToAnimatorParams mLayoutToAnim = new LayoutToAnimatorParams();
-
final Runnable mAnimationRunnable;
int mAdjResult;
@@ -78,7 +58,7 @@
/** Skip repeated AppWindowTokens initialization. Note that AppWindowsToken's version of this
* is a long initialized to Long.MIN_VALUE so that it doesn't match this value on startup. */
- private int mTransactionSequence;
+ private int mAnimTransactionSequence;
/** The one and only screen rotation if one is happening */
ScreenRotationAnimation mScreenRotationAnimation = null;
@@ -103,12 +83,26 @@
int mPendingActions;
WindowState mWallpaperTarget = null;
+ AppWindowAnimator mWpAppAnimator = null;
+ WindowState mLowerWallpaperTarget = null;
+ WindowState mUpperWallpaperTarget = null;
- WindowAnimator(final WindowManagerService service, final Context context,
- final WindowManagerPolicy policy) {
+ ArrayList<WindowToken> mWallpaperTokens = new ArrayList<WindowToken>();
+
+ /** Parameters being passed from this into mService. */
+ static class AnimatorToLayoutParams {
+ boolean mUpdateQueued;
+ int mBulkUpdateParams;
+ int mPendingLayoutChanges;
+ WindowState mWindowDetachedWallpaper;
+ }
+ /** Do not modify unless holding mService.mWindowMap or this and mAnimToLayout in that order */
+ final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams();
+
+ WindowAnimator(final WindowManagerService service) {
mService = service;
- mContext = context;
- mPolicy = policy;
+ mContext = service.mContext;
+ mPolicy = service.mPolicy;
mAnimationRunnable = new Runnable() {
@Override
@@ -125,34 +119,71 @@
};
mWindowAnimationBackgroundSurface = new DimSurface(mService.mFxSession);
+ mDimAnimator = new DimAnimator(mService.mFxSession);
+ }
+
+ /** Locked on mAnimToLayout */
+ void updateAnimToLayoutLocked() {
+ final AnimatorToLayoutParams animToLayout = mAnimToLayout;
+ synchronized (animToLayout) {
+ animToLayout.mBulkUpdateParams = mBulkUpdateParams;
+ animToLayout.mPendingLayoutChanges = mPendingLayoutChanges;
+ animToLayout.mWindowDetachedWallpaper = mWindowDetachedWallpaper;
+
+ if (!animToLayout.mUpdateQueued) {
+ animToLayout.mUpdateQueued = true;
+ mService.mH.sendMessage(mService.mH.obtainMessage(UPDATE_ANIM_PARAMETERS));
+ }
+ }
}
/** Copy all WindowManagerService params into local params here. Locked on 'this'. */
private void copyLayoutToAnimParamsLocked() {
- final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim;
+ final LayoutToAnimatorParams layoutToAnim = mService.mLayoutToAnim;
synchronized(layoutToAnim) {
layoutToAnim.mAnimationScheduled = false;
+ if ((layoutToAnim.mChanges & LayoutToAnimatorParams.WALLPAPER_TOKENS_CHANGED) != 0) {
+ layoutToAnim.mChanges &= ~LayoutToAnimatorParams.WALLPAPER_TOKENS_CHANGED;
+ mWallpaperTokens = new ArrayList<WindowToken>(layoutToAnim.mWallpaperTokens);
+ }
+
mWinAnimators = new ArrayList<WindowStateAnimator>(layoutToAnim.mWinAnimators);
mWallpaperTarget = layoutToAnim.mWallpaperTarget;
- }
- }
+ mWpAppAnimator = mWallpaperTarget == null
+ ? null : mWallpaperTarget.mAppToken == null
+ ? null : mWallpaperTarget.mAppToken.mAppAnimator;
+ mLowerWallpaperTarget = layoutToAnim.mLowerWallpaperTarget;
+ mUpperWallpaperTarget = layoutToAnim.mUpperWallpaperTarget;
- /** Note that Locked in this case is on mLayoutToAnim */
- void scheduleAnimationLocked() {
- final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim;
- if (!layoutToAnim.mAnimationScheduled) {
- layoutToAnim.mAnimationScheduled = true;
- mChoreographer.postCallback(
- Choreographer.CALLBACK_ANIMATION, mAnimationRunnable, null);
+ // Set the new DimAnimator params.
+ DimAnimator.Parameters dimParams = layoutToAnim.mDimParams;
+ if (dimParams == null) {
+ mDimParams = dimParams;
+ } else {
+ final WindowStateAnimator newWinAnimator = dimParams.mDimWinAnimator;
+
+ // Only set dim params on the highest dimmed layer.
+ final WindowStateAnimator existingDimWinAnimator = mDimParams == null
+ ? null : mDimParams.mDimWinAnimator;
+ // Don't turn on for an unshown surface, or for any layer but the highest dimmed one.
+ if (newWinAnimator.mSurfaceShown &&
+ (existingDimWinAnimator == null || !existingDimWinAnimator.mSurfaceShown
+ || existingDimWinAnimator.mAnimLayer < newWinAnimator.mAnimLayer)) {
+ mDimParams = dimParams;
+ }
+ }
}
}
void hideWallpapersLocked(final WindowState w) {
- if ((mService.mWallpaperTarget == w && mService.mLowerWallpaperTarget == null)
- || mService.mWallpaperTarget == null) {
- for (final WindowToken token : mService.mWallpaperTokens) {
- for (final WindowState wallpaper : token.windows) {
+ if ((mWallpaperTarget == w && mLowerWallpaperTarget == null) || mWallpaperTarget == null) {
+ final int numTokens = mWallpaperTokens.size();
+ for (int i = numTokens - 1; i >= 0; i--) {
+ final WindowToken token = mWallpaperTokens.get(i);
+ final int numWindows = token.windows.size();
+ for (int j = numWindows - 1; j >= 0; j--) {
+ final WindowState wallpaper = token.windows.get(j);
final WindowStateAnimator winAnimator = wallpaper.mWinAnimator;
if (!winAnimator.mLastHidden) {
winAnimator.hide();
@@ -217,14 +248,18 @@
}
}
- private void updateWindowsAndWallpaperLocked() {
- ++mTransactionSequence;
+ private void updateWindowsLocked() {
+ ++mAnimTransactionSequence;
ArrayList<WindowStateAnimator> unForceHiding = null;
boolean wallpaperInUnForceHiding = false;
- WindowStateAnimator windowAnimationBackground = null;
- int windowAnimationBackgroundColor = 0;
- WindowState detachedWallpaper = null;
+
+ // forceHiding states.
+ final int KEYGUARD_NOT_SHOWN = 0;
+ final int KEYGUARD_ANIMATING_IN = 1;
+ final int KEYGUARD_SHOWN = 2;
+ final int KEYGUARD_ANIMATING_OUT = 3;
+ int forceHiding = KEYGUARD_NOT_SHOWN;
for (int i = mWinAnimators.size() - 1; i >= 0; i--) {
WindowStateAnimator winAnimator = mWinAnimators.get(i);
@@ -240,49 +275,7 @@
", nowAnimating=" + nowAnimating);
}
- // If this window is animating, make a note that we have
- // an animating window and take care of a request to run
- // a detached wallpaper animation.
- if (nowAnimating) {
- if (winAnimator.mAnimation != null) {
- if ((flags & FLAG_SHOW_WALLPAPER) != 0
- && winAnimator.mAnimation.getDetachWallpaper()) {
- detachedWallpaper = win;
- }
- final int backgroundColor = winAnimator.mAnimation.getBackgroundColor();
- if (backgroundColor != 0) {
- if (windowAnimationBackground == null || (winAnimator.mAnimLayer <
- windowAnimationBackground.mAnimLayer)) {
- windowAnimationBackground = winAnimator;
- windowAnimationBackgroundColor = backgroundColor;
- }
- }
- }
- mAnimating = true;
- }
-
- // If this window's app token is running a detached wallpaper
- // animation, make a note so we can ensure the wallpaper is
- // displayed behind it.
- final AppWindowAnimator appAnimator =
- win.mAppToken == null ? null : win.mAppToken.mAppAnimator;
- if (appAnimator != null && appAnimator.animation != null
- && appAnimator.animating) {
- if ((flags & FLAG_SHOW_WALLPAPER) != 0
- && appAnimator.animation.getDetachWallpaper()) {
- detachedWallpaper = win;
- }
- final int backgroundColor = appAnimator.animation.getBackgroundColor();
- if (backgroundColor != 0) {
- if (windowAnimationBackground == null || (winAnimator.mAnimLayer <
- windowAnimationBackground.mAnimLayer)) {
- windowAnimationBackground = winAnimator;
- windowAnimationBackgroundColor = backgroundColor;
- }
- }
- }
-
- if (wasAnimating && !winAnimator.mAnimating && mService.mWallpaperTarget == win) {
+ if (wasAnimating && !winAnimator.mAnimating && mWallpaperTarget == win) {
mBulkUpdateParams |= SET_WALLPAPER_MAY_CHANGE;
mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
@@ -304,11 +297,19 @@
}
mService.mFocusMayChange = true;
}
- if (win.isReadyForDisplay() && winAnimator.mAnimationIsEntrance) {
- mInner.mForceHiding = true;
+ if (win.isReadyForDisplay()) {
+ if (nowAnimating) {
+ if (winAnimator.mAnimationIsEntrance) {
+ forceHiding = KEYGUARD_ANIMATING_IN;
+ } else {
+ forceHiding = KEYGUARD_ANIMATING_OUT;
+ }
+ } else {
+ forceHiding = KEYGUARD_SHOWN;
+ }
}
if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
- "Force hide " + mInner.mForceHiding
+ "Force hide " + forceHiding
+ " hasSurface=" + win.mHasSurface
+ " policyVis=" + win.mPolicyVisibility
+ " destroying=" + win.mDestroying
@@ -317,9 +318,12 @@
+ " hidden=" + win.mRootToken.hidden
+ " anim=" + win.mWinAnimator.mAnimation);
} else if (mPolicy.canBeForceHidden(win, win.mAttrs)) {
+ final boolean hideWhenLocked =
+ (winAnimator.mAttrFlags & FLAG_SHOW_WHEN_LOCKED) == 0;
final boolean changed;
- if (mInner.mForceHiding && (!winAnimator.isAnimating()
- || (winAnimator.mAttrFlags & FLAG_SHOW_WHEN_LOCKED) == 0)) {
+ if (((forceHiding == KEYGUARD_ANIMATING_IN)
+ && (!winAnimator.isAnimating() || hideWhenLocked))
+ || ((forceHiding == KEYGUARD_SHOWN) && hideWhenLocked)) {
changed = win.hideLw(false, false);
if (WindowManagerService.DEBUG_VISIBILITY && changed) Slog.v(TAG,
"Now policy hidden: " + win);
@@ -358,59 +362,22 @@
}
final AppWindowToken atoken = win.mAppToken;
- if (atoken != null && (!atoken.allDrawn || atoken.mAppAnimator.freezingScreen)) {
- if (atoken.lastTransactionSequence != mTransactionSequence) {
- atoken.lastTransactionSequence = mTransactionSequence;
- atoken.numInterestingWindows = atoken.numDrawnWindows = 0;
- atoken.startingDisplayed = false;
- }
- if ((win.isOnScreen() || winAnimator.mAttrType
- == WindowManager.LayoutParams.TYPE_BASE_APPLICATION)
- && !win.mExiting && !win.mDestroying) {
- if (WindowManagerService.DEBUG_VISIBILITY ||
- WindowManagerService.DEBUG_ORIENTATION) {
- Slog.v(TAG, "Eval win " + win + ": isDrawn=" + win.isDrawnLw()
- + ", isAnimating=" + winAnimator.isAnimating());
- if (!win.isDrawnLw()) {
- Slog.v(TAG, "Not displayed: s=" + winAnimator.mSurface
- + " pv=" + win.mPolicyVisibility
- + " mDrawState=" + winAnimator.mDrawState
- + " ah=" + win.mAttachedHidden
- + " th=" + atoken.hiddenRequested
- + " a=" + winAnimator.mAnimating);
+ if (winAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW) {
+ if (atoken == null || atoken.allDrawn) {
+ if (winAnimator.performShowLocked()) {
+ mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
+ if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
+ mService.debugLayoutRepeats("updateWindowsAndWallpaperLocked 5",
+ mPendingLayoutChanges);
}
}
- if (win != atoken.startingWindow) {
- if (!atoken.mAppAnimator.freezingScreen || !win.mAppFreezing) {
- atoken.numInterestingWindows++;
- if (win.isDrawnLw()) {
- atoken.numDrawnWindows++;
- if (WindowManagerService.DEBUG_VISIBILITY ||
- WindowManagerService.DEBUG_ORIENTATION) Slog.v(TAG,
- "tokenMayBeDrawn: " + atoken
- + " freezingScreen=" + atoken.mAppAnimator.freezingScreen
- + " mAppFreezing=" + win.mAppFreezing);
- mInner.mTokenMayBeDrawn = true;
- }
- }
- } else if (win.isDrawnLw()) {
- atoken.startingDisplayed = true;
- }
- }
- } else if (winAnimator.mDrawState == WindowStateAnimator.READY_TO_SHOW) {
- if (winAnimator.performShowLocked()) {
- mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
- if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
- mService.debugLayoutRepeats("updateWindowsAndWallpaperLocked 5",
- mPendingLayoutChanges);
- }
}
}
final AppWindowAnimator appAnimator =
atoken == null ? null : atoken.mAppAnimator;
if (appAnimator != null && appAnimator.thumbnail != null) {
- if (appAnimator.thumbnailTransactionSeq != mTransactionSequence) {
- appAnimator.thumbnailTransactionSeq = mTransactionSequence;
+ if (appAnimator.thumbnailTransactionSeq != mAnimTransactionSequence) {
+ appAnimator.thumbnailTransactionSeq = mAnimTransactionSequence;
appAnimator.thumbnailLayer = 0;
}
if (appAnimator.thumbnailLayer < winAnimator.mAnimLayer) {
@@ -419,6 +386,78 @@
}
} // end forall windows
+ // If we have windows that are being show due to them no longer
+ // being force-hidden, apply the appropriate animation to them.
+ if (unForceHiding != null) {
+ for (int i=unForceHiding.size()-1; i>=0; i--) {
+ Animation a = mPolicy.createForceHideEnterAnimation(wallpaperInUnForceHiding);
+ if (a != null) {
+ final WindowStateAnimator winAnimator = unForceHiding.get(i);
+ winAnimator.setAnimation(a);
+ winAnimator.mAnimationIsEntrance = true;
+ }
+ }
+ }
+ }
+
+ private void updateWallpaperLocked() {
+ WindowStateAnimator windowAnimationBackground = null;
+ int windowAnimationBackgroundColor = 0;
+ WindowState detachedWallpaper = null;
+
+ for (int i = mWinAnimators.size() - 1; i >= 0; i--) {
+ WindowStateAnimator winAnimator = mWinAnimators.get(i);
+ if (winAnimator.mSurface == null) {
+ continue;
+ }
+
+ final int flags = winAnimator.mAttrFlags;
+ final WindowState win = winAnimator.mWin;
+
+ // If this window is animating, make a note that we have
+ // an animating window and take care of a request to run
+ // a detached wallpaper animation.
+ if (winAnimator.mAnimating) {
+ if (winAnimator.mAnimation != null) {
+ if ((flags & FLAG_SHOW_WALLPAPER) != 0
+ && winAnimator.mAnimation.getDetachWallpaper()) {
+ detachedWallpaper = win;
+ }
+ final int backgroundColor = winAnimator.mAnimation.getBackgroundColor();
+ if (backgroundColor != 0) {
+ if (windowAnimationBackground == null || (winAnimator.mAnimLayer <
+ windowAnimationBackground.mAnimLayer)) {
+ windowAnimationBackground = winAnimator;
+ windowAnimationBackgroundColor = backgroundColor;
+ }
+ }
+ }
+ mAnimating = true;
+ }
+
+ // If this window's app token is running a detached wallpaper
+ // animation, make a note so we can ensure the wallpaper is
+ // displayed behind it.
+ final AppWindowAnimator appAnimator =
+ win.mAppToken == null ? null : win.mAppToken.mAppAnimator;
+ if (appAnimator != null && appAnimator.animation != null
+ && appAnimator.animating) {
+ if ((flags & FLAG_SHOW_WALLPAPER) != 0
+ && appAnimator.animation.getDetachWallpaper()) {
+ detachedWallpaper = win;
+ }
+
+ final int backgroundColor = appAnimator.animation.getBackgroundColor();
+ if (backgroundColor != 0) {
+ if (windowAnimationBackground == null || (winAnimator.mAnimLayer <
+ windowAnimationBackground.mAnimLayer)) {
+ windowAnimationBackground = winAnimator;
+ windowAnimationBackgroundColor = backgroundColor;
+ }
+ }
+ }
+ } // end forall windows
+
if (mWindowDetachedWallpaper != detachedWallpaper) {
if (WindowManagerService.DEBUG_WALLPAPER) Slog.v(TAG,
"Detached wallpaper changed from " + mWindowDetachedWallpaper
@@ -433,40 +472,24 @@
// don't cause the wallpaper to suddenly disappear.
int animLayer = windowAnimationBackground.mAnimLayer;
WindowState win = windowAnimationBackground.mWin;
- if (windowAnimationBackground != null && mService.mWallpaperTarget == win
- || mService.mLowerWallpaperTarget == win
- || mService.mUpperWallpaperTarget == win) {
+ if (windowAnimationBackground != null && mWallpaperTarget == win
+ || mLowerWallpaperTarget == win || mUpperWallpaperTarget == win) {
final int N = mWinAnimators.size();
for (int i = 0; i < N; i++) {
WindowStateAnimator winAnimator = mWinAnimators.get(i);
- if (winAnimator.mWin.mIsWallpaper) {
+ if (winAnimator.mIsWallpaper) {
animLayer = winAnimator.mAnimLayer;
break;
}
}
}
- final int dw = mDw;
- final int dh = mDh;
- mWindowAnimationBackgroundSurface.show(dw, dh,
+ mWindowAnimationBackgroundSurface.show(mDw, mDh,
animLayer - WindowManagerService.LAYER_OFFSET_DIM,
windowAnimationBackgroundColor);
} else {
mWindowAnimationBackgroundSurface.hide();
}
-
- // If we have windows that are being show due to them no longer
- // being force-hidden, apply the appropriate animation to them.
- if (unForceHiding != null) {
- for (int i=unForceHiding.size()-1; i>=0; i--) {
- Animation a = mPolicy.createForceHideEnterAnimation(wallpaperInUnForceHiding);
- if (a != null) {
- final WindowStateAnimator winAnimator = unForceHiding.get(i);
- winAnimator.setAnimation(a);
- winAnimator.mAnimationIsEntrance = true;
- }
- }
- }
}
private void testTokenMayBeDrawnLocked() {
@@ -476,39 +499,32 @@
final int NT = appTokens.size();
for (int i=0; i<NT; i++) {
AppWindowToken wtoken = appTokens.get(i);
- if (wtoken.mAppAnimator.freezingScreen) {
- int numInteresting = wtoken.numInterestingWindows;
- if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
- if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
- "allDrawn: " + wtoken
- + " interesting=" + numInteresting
- + " drawn=" + wtoken.numDrawnWindows);
- wtoken.mAppAnimator.showAllWindowsLocked();
- mService.unsetAppFreezingScreenLocked(wtoken, false, true);
- if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(TAG,
- "Setting mOrientationChangeComplete=true because wtoken "
- + wtoken + " numInteresting=" + numInteresting
- + " numDrawn=" + wtoken.numDrawnWindows);
- // This will set mOrientationChangeComplete and cause a pass through layout.
- mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
- }
- } else if (!wtoken.allDrawn) {
- int numInteresting = wtoken.numInterestingWindows;
- if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
- if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
- "allDrawn: " + wtoken
- + " interesting=" + numInteresting
- + " drawn=" + wtoken.numDrawnWindows);
- wtoken.allDrawn = true;
- mPendingLayoutChanges |= PhoneWindowManager.FINISH_LAYOUT_REDO_ANIM;
- if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
- mService.debugLayoutRepeats("testTokenMayBeDrawnLocked",
- mPendingLayoutChanges);
- }
+ final boolean allDrawn = wtoken.allDrawn;
+ if (allDrawn != wtoken.mAppAnimator.allDrawn) {
+ wtoken.mAppAnimator.allDrawn = allDrawn;
+ if (allDrawn) {
+ // The token has now changed state to having all
+ // windows shown... what to do, what to do?
+ if (wtoken.mAppAnimator.freezingScreen) {
+ wtoken.mAppAnimator.showAllWindowsLocked();
+ mService.unsetAppFreezingScreenLocked(wtoken, false, true);
+ if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(TAG,
+ "Setting mOrientationChangeComplete=true because wtoken "
+ + wtoken + " numInteresting=" + wtoken.numInterestingWindows
+ + " numDrawn=" + wtoken.numDrawnWindows);
+ // This will set mOrientationChangeComplete and cause a pass through layout.
+ mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
+ } else {
+ mPendingLayoutChanges |= PhoneWindowManager.FINISH_LAYOUT_REDO_ANIM;
+ if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
+ mService.debugLayoutRepeats("testTokenMayBeDrawnLocked",
+ mPendingLayoutChanges);
+ }
- // We can now show all of the drawn windows!
- if (!mService.mOpeningApps.contains(wtoken)) {
- mAnimating |= wtoken.mAppAnimator.showAllWindowsLocked();
+ // We can now show all of the drawn windows!
+ if (!mService.mOpeningApps.contains(wtoken)) {
+ mAnimating |= wtoken.mAppAnimator.showAllWindowsLocked();
+ }
}
}
}
@@ -516,17 +532,14 @@
}
private void performAnimationsLocked() {
- mInner.mTokenMayBeDrawn = false;
- mInner.mForceHiding = false;
+ updateWindowsLocked();
+ updateWallpaperLocked();
- updateWindowsAndWallpaperLocked();
if ((mPendingLayoutChanges & WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER) != 0) {
mPendingActions |= WALLPAPER_ACTION_PENDING;
}
- if (mInner.mTokenMayBeDrawn) {
- testTokenMayBeDrawnLocked();
- }
+ testTokenMayBeDrawnLocked();
}
// TODO(cmautner): Change the following comment when no longer locked on mWindowMap */
@@ -534,7 +547,7 @@
private void animateLocked() {
mPendingLayoutChanges = 0;
mCurrentTime = SystemClock.uptimeMillis();
- mBulkUpdateParams = 0;
+ mBulkUpdateParams = SET_ORIENTATION_CHANGE_COMPLETE;
boolean wasAnimating = mAnimating;
mAnimating = false;
if (WindowManagerService.DEBUG_WINDOW_TRACE) {
@@ -587,18 +600,12 @@
}
if (mBulkUpdateParams != 0 || mPendingLayoutChanges != 0) {
- final WindowManagerService.AnimatorToLayoutParams animToLayout = mService.mAnimToLayout;
- synchronized (animToLayout) {
- animToLayout.mBulkUpdateParams = mBulkUpdateParams;
- animToLayout.mPendingLayoutChanges = mPendingLayoutChanges;
- animToLayout.mWindowDetachedWallpaper = mWindowDetachedWallpaper;
- mService.setAnimatorParametersLocked();
- }
+ updateAnimToLayoutLocked();
}
if (mAnimating) {
- synchronized (mLayoutToAnim) {
- scheduleAnimationLocked();
+ synchronized (mService.mLayoutToAnim) {
+ mService.scheduleAnimationLocked();
}
} else if (wasAnimating) {
mService.requestTraversalLocked();
@@ -623,28 +630,6 @@
mInnerDh = appHeight;
}
- void startDimming(final WindowStateAnimator winAnimator, final float target,
- final int width, final int height) {
- if (mDimAnimator == null) {
- mDimAnimator = new DimAnimator(mService.mFxSession);
- }
- // Only set dim params on the highest dimmed layer.
- final WindowStateAnimator dimWinAnimator = mDimParams == null
- ? null : mDimParams.mDimWinAnimator;
- // Don't turn on for an unshown surface, or for any layer but the highest dimmed one.
- if (winAnimator.mSurfaceShown &&
- (dimWinAnimator == null || !dimWinAnimator.mSurfaceShown
- || dimWinAnimator.mAnimLayer < winAnimator.mAnimLayer)) {
- mService.mH.sendMessage(mService.mH.obtainMessage(SET_DIM_PARAMETERS,
- new DimAnimator.Parameters(winAnimator, width, height, target)));
- }
- }
-
- // TODO(cmautner): Move into Handler
- void stopDimming() {
- mService.mH.sendMessage(mService.mH.obtainMessage(SET_DIM_PARAMETERS, null));
- }
-
boolean isDimming() {
return mDimParams != null;
}
@@ -654,21 +639,23 @@
}
public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
- if (mWindowDetachedWallpaper != null) {
- pw.print(" mWindowDetachedWallpaper="); pw.println(mWindowDetachedWallpaper);
- }
- if (mUniverseBackground != null) {
- pw.print(" mUniverseBackground="); pw.println(mUniverseBackground);
- }
- if (mWindowAnimationBackgroundSurface != null) {
- pw.println(" mWindowAnimationBackgroundSurface:");
- mWindowAnimationBackgroundSurface.printTo(" ", pw);
- }
- if (mDimAnimator != null) {
- pw.println(" mDimAnimator:");
- mDimAnimator.printTo(" ", pw);
- } else {
- pw.println( " no DimAnimator ");
+ if (dumpAll) {
+ if (mWindowDetachedWallpaper != null) {
+ pw.print(prefix); pw.print("mWindowDetachedWallpaper=");
+ pw.println(mWindowDetachedWallpaper);
+ }
+ pw.print(prefix); pw.print("mAnimTransactionSequence=");
+ pw.println(mAnimTransactionSequence);
+ if (mWindowAnimationBackgroundSurface != null) {
+ pw.print(prefix); pw.print("mWindowAnimationBackgroundSurface:");
+ mWindowAnimationBackgroundSurface.printTo(prefix + " ", pw);
+ }
+ if (mDimAnimator != null) {
+ pw.print(prefix); pw.print("mDimAnimator:");
+ mDimAnimator.printTo(prefix + " ", pw);
+ } else {
+ pw.print(prefix); pw.print("no DimAnimator ");
+ }
}
}
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index c5515b4..4cffb32 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -98,6 +98,7 @@
import android.util.EventLog;
import android.util.FloatMath;
import android.util.Log;
+//import android.util.LogPrinter;
import android.util.Pair;
import android.util.Slog;
import android.util.SparseIntArray;
@@ -587,10 +588,10 @@
WindowState mWallpaperTarget = null;
// If non-null, we are in the middle of animating from one wallpaper target
// to another, and this is the lower one in Z-order.
- WindowState mLowerWallpaperTarget = null;
+ private WindowState mLowerWallpaperTarget = null;
// If non-null, we are in the middle of animating from one wallpaper target
// to another, and this is the higher one in Z-order.
- WindowState mUpperWallpaperTarget = null;
+ private WindowState mUpperWallpaperTarget = null;
int mWallpaperAnimLayerAdjustment;
float mLastWallpaperX = -1;
float mLastWallpaperY = -1;
@@ -630,7 +631,7 @@
static final int SET_UPDATE_ROTATION = 1 << 0;
static final int SET_WALLPAPER_MAY_CHANGE = 1 << 1;
static final int SET_FORCE_HIDING_CHANGED = 1 << 2;
- static final int CLEAR_ORIENTATION_CHANGE_COMPLETE = 1 << 3;
+ static final int SET_ORIENTATION_CHANGE_COMPLETE = 1 << 3;
static final int SET_TURN_ON_SCREEN = 1 << 4;
boolean mWallpaperForceHidingChanged = false;
@@ -647,19 +648,29 @@
}
final LayoutFields mInnerFields = new LayoutFields();
- /* Parameters being passed from mAnimator into this.
- * Do not modify unless holding (mWindowMap or mAnimator) and mAnimToLayout in that order */
- static class AnimatorToLayoutParams {
- boolean mUpdateQueued;
- int mBulkUpdateParams;
- int mPendingLayoutChanges;
- WindowState mWindowDetachedWallpaper;
+ static class LayoutToAnimatorParams {
+ static final long WALLPAPER_TOKENS_CHANGED = 1 << 0;
+ long mChanges;
+
+ boolean mAnimationScheduled;
+ ArrayList<WindowStateAnimator> mWinAnimators = new ArrayList<WindowStateAnimator>();
+ WindowState mWallpaperTarget;
+ WindowState mLowerWallpaperTarget;
+ WindowState mUpperWallpaperTarget;
+ DimAnimator.Parameters mDimParams;
+ ArrayList<WindowToken> mWallpaperTokens = new ArrayList<WindowToken>();
}
- final AnimatorToLayoutParams mAnimToLayout = new AnimatorToLayoutParams();
+ /** Params from WindowManagerService to WindowAnimator. Do not modify or read without first
+ * locking on either mWindowMap or mAnimator and then on mLayoutToAnim */
+ final LayoutToAnimatorParams mLayoutToAnim = new LayoutToAnimatorParams();
/** The lowest wallpaper target with a detached wallpaper animation on it. */
WindowState mWindowDetachedWallpaper = null;
+ /** Skip repeated AppWindowTokens initialization. Note that AppWindowsToken's version of this
+ * is a long initialized to Long.MIN_VALUE so that it doesn't match this value on startup. */
+ private int mTransactionSequence;
+
/** Only do a maximum of 6 repeated layouts. After that quit */
private int mLayoutRepeatCount;
@@ -793,6 +804,8 @@
@Override
public void run() {
Looper.prepare();
+ //Looper.myLooper().setMessageLogging(new LogPrinter(
+ // android.util.Log.DEBUG, TAG, android.util.Log.LOG_ID_SYSTEM));
WindowManagerService s = new WindowManagerService(mContext, mPM,
mHaveInputMethods, mAllowBootMessages, mOnlyCore);
android.os.Process.setThreadPriority(
@@ -834,7 +847,7 @@
public void run() {
Looper.prepare();
WindowManagerPolicyThread.set(this, Looper.myLooper());
-
+
//Looper.myLooper().setMessageLogging(new LogPrinter(
// Log.VERBOSE, "WindowManagerPolicy", Log.LOG_ID_SYSTEM));
android.os.Process.setThreadPriority(
@@ -898,7 +911,7 @@
mInputManager = new InputManagerService(context, mInputMonitor);
mFxSession = new SurfaceSession();
- mAnimator = new WindowAnimator(this, context, mPolicy);
+ mAnimator = new WindowAnimator(this);
PolicyThread thr = new PolicyThread(mPolicy, this, context, pm);
thr.start();
@@ -1747,7 +1760,7 @@
mWallpaperTarget = oldW;
foundW = oldW;
foundI = oldI;
- }
+ }
// Now set the upper and lower wallpaper targets
// correctly, and make sure that we are positioning
// the wallpaper below the lower.
@@ -2027,11 +2040,6 @@
}
}
- // TODO(cmautner): Move to WindowAnimator.
- void setWallpaperOffset(final WindowStateAnimator winAnimator, final int left, final int top) {
- mH.sendMessage(mH.obtainMessage(H.SET_WALLPAPER_OFFSET, left, top, winAnimator));
- }
-
void updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) {
final int dw = mAppDisplayWidth;
final int dh = mAppDisplayHeight;
@@ -2066,19 +2074,8 @@
// TODO(cmautner): Don't move this from here, just lock the WindowAnimator.
if (winAnimator.mSurfaceX != wallpaper.mShownFrame.left
|| winAnimator.mSurfaceY != wallpaper.mShownFrame.top) {
- Surface.openTransaction();
- try {
- if (SHOW_TRANSACTIONS) logSurface(wallpaper,
- "POS " + wallpaper.mShownFrame.left
- + ", " + wallpaper.mShownFrame.top, null);
- setWallpaperOffset(winAnimator, (int) wallpaper.mShownFrame.left,
+ winAnimator.setWallpaperOffset((int) wallpaper.mShownFrame.left,
(int) wallpaper.mShownFrame.top);
- } catch (RuntimeException e) {
- Slog.w(TAG, "Error positioning surface of " + wallpaper
- + " pos=(" + wallpaper.mShownFrame.left
- + "," + wallpaper.mShownFrame.top + ")", e);
- }
- Surface.closeTransaction();
}
// We only want to be synchronous with one wallpaper.
sync = false;
@@ -2133,7 +2130,7 @@
}
}
}
-
+
public int addWindow(Session session, IWindow client, int seq,
WindowManager.LayoutParams attrs, int viewVisibility,
Rect outContentInsets, InputChannel outInputChannel) {
@@ -2252,14 +2249,14 @@
if (res != WindowManagerImpl.ADD_OKAY) {
return res;
}
-
+
if (outInputChannel != null && (attrs.inputFeatures
& WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0) {
String name = win.makeInputChannelName();
InputChannel[] inputChannels = InputChannel.openInputChannelPair(name);
win.setInputChannel(inputChannels[0]);
inputChannels[1].transferTo(outInputChannel);
-
+
mInputManager.registerInputChannel(win.mInputChannel, win.mInputWindowHandle);
}
@@ -2278,6 +2275,8 @@
if (attrs.type == TYPE_APPLICATION_STARTING &&
token.appWindowToken != null) {
token.appWindowToken.startingWindow = win;
+ if (DEBUG_STARTING_WINDOW) Slog.v (TAG, "addWindow: " + token.appWindowToken
+ + " startingWindow=" + win);
}
boolean imMayMove = true;
@@ -2501,10 +2500,12 @@
if (atoken != null) {
if (atoken.startingWindow == win) {
+ if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Nulling startingWindow " + win);
atoken.startingWindow = null;
} else if (atoken.allAppWindows.size() == 0 && atoken.startingData != null) {
// If this is the last window and we had requested a starting
// transition window, well there is no point now.
+ if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Nulling last startingWindow");
atoken.startingData = null;
} else if (atoken.allAppWindows.size() == 1 && atoken.startingView != null) {
// If this is the last window except for a starting transition
@@ -3475,6 +3476,7 @@
mTokenMap.put(token, wtoken);
if (type == TYPE_WALLPAPER) {
mWallpaperTokens.add(wtoken);
+ updateLayoutToAnimWallpaperTokens();
}
}
}
@@ -3521,6 +3523,7 @@
mExitingTokens.add(wtoken);
} else if (wtoken.windowType == TYPE_WALLPAPER) {
mWallpaperTokens.remove(wtoken);
+ updateLayoutToAnimWallpaperTokens();
}
}
@@ -3600,7 +3603,7 @@
@Override
public void setAppGroupId(IBinder token, int groupId) {
if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
- "setAppStartingIcon()")) {
+ "setAppGroupId()")) {
throw new SecurityException("Requires MANAGE_APP_TOKENS permission");
}
@@ -3692,7 +3695,7 @@
haveGroup = true;
curGroup = wtoken.groupId;
lastOrientation = wtoken.requestedOrientation;
- }
+ }
int or = wtoken.requestedOrientation;
// If this application is fullscreen, and didn't explicitly say
@@ -3719,6 +3722,7 @@
return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
}
+ @Override
public Configuration updateOrientationFromAppTokens(
Configuration currentConfig, IBinder freezeThisOneIfNeeded) {
if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
@@ -3817,6 +3821,7 @@
return req;
}
+ @Override
public void setNewConfiguration(Configuration config) {
if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
"setNewConfiguration()")) {
@@ -3829,7 +3834,8 @@
performLayoutAndPlaceSurfacesLocked();
}
}
-
+
+ @Override
public void setAppOrientation(IApplicationToken token, int requestedOrientation) {
if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
"setAppOrientation()")) {
@@ -4023,7 +4029,7 @@
CharSequence nonLocalizedLabel, int labelRes, int icon,
int windowFlags, IBinder transferFrom, boolean createIfNeeded) {
if (!checkCallingPermission(android.Manifest.permission.MANAGE_APP_TOKENS,
- "setAppStartingIcon()")) {
+ "setAppStartingWindow()")) {
throw new SecurityException("Requires MANAGE_APP_TOKENS permission");
}
@@ -4079,12 +4085,13 @@
startingWindow.mToken = wtoken;
startingWindow.mRootToken = wtoken;
startingWindow.mAppToken = wtoken;
- if (DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(TAG,
- "Removing starting window: " + startingWindow);
+ if (DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE || DEBUG_STARTING_WINDOW) {
+ Slog.v(TAG, "Removing starting window: " + startingWindow);
+ }
mWindows.remove(startingWindow);
mWindowsChanged = true;
- if (DEBUG_ADD_REMOVE) Slog.v(TAG, "Removing starting " + startingWindow
- + " from " + ttoken);
+ if (DEBUG_ADD_REMOVE) Slog.v(TAG,
+ "Removing starting " + startingWindow + " from " + ttoken);
ttoken.windows.remove(startingWindow);
ttoken.allAppWindows.remove(startingWindow);
addWindowToListInOrderLocked(startingWindow, true);
@@ -4171,6 +4178,8 @@
// show a starting window -- the current effect (a full-screen
// opaque starting window that fades away to the real contents
// when it is ready) does not work for this.
+ if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Checking theme of starting window: 0x"
+ + Integer.toHexString(theme));
if (theme != 0) {
AttributeCache.Entry ent = AttributeCache.instance().get(pkg, theme,
com.android.internal.R.styleable.Window);
@@ -4179,6 +4188,15 @@
// pretend like we didn't see that.
return;
}
+ if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Translucent="
+ + ent.array.getBoolean(
+ com.android.internal.R.styleable.Window_windowIsTranslucent, false)
+ + " Floating="
+ + ent.array.getBoolean(
+ com.android.internal.R.styleable.Window_windowIsFloating, false)
+ + " ShowWallpaper="
+ + ent.array.getBoolean(
+ com.android.internal.R.styleable.Window_windowShowWallpaper, false));
if (ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowIsTranslucent, false)) {
return;
@@ -4202,6 +4220,7 @@
}
}
+ if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Creating StartingData");
mStartingIconInTransition = true;
wtoken.startingData = new StartingData(pkg, theme, compatInfo, nonLocalizedLabel,
labelRes, icon, windowFlags);
@@ -4209,6 +4228,7 @@
// Note: we really want to do sendMessageAtFrontOfQueue() because we
// want to process the message ASAP, before any other queued
// messages.
+ if (DEBUG_STARTING_WINDOW) Slog.v(TAG, "Enqueueing ADD_STARTING");
mH.sendMessageAtFrontOfQueue(m);
}
}
@@ -5771,7 +5791,7 @@
if (mAnimator.mScreenRotationAnimation.setRotation(rotation, mFxSession,
MAX_ANIMATION_DURATION, mTransitionAnimationScale,
mCurDisplayWidth, mCurDisplayHeight)) {
- scheduleAnimationLocked();
+ updateLayoutToAnimationLocked();
}
}
Surface.setOrientation(0, rotation);
@@ -6876,9 +6896,7 @@
public static final int ANIMATOR_WHAT_OFFSET = 100000;
public static final int SET_TRANSPARENT_REGION = ANIMATOR_WHAT_OFFSET + 1;
- public static final int SET_WALLPAPER_OFFSET = ANIMATOR_WHAT_OFFSET + 2;
- public static final int SET_DIM_PARAMETERS = ANIMATOR_WHAT_OFFSET + 3;
- public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 4;
+ public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 2;
private Session mLastReportedHold;
@@ -7035,6 +7053,7 @@
wtoken.startingData = null;
wtoken.startingView = null;
wtoken.startingWindow = null;
+ wtoken.startingDisplayed = false;
}
}
if (view != null) {
@@ -7071,6 +7090,7 @@
wtoken.startingData = null;
wtoken.startingView = null;
wtoken.startingWindow = null;
+ wtoken.startingDisplayed = false;
}
try {
@@ -7186,8 +7206,7 @@
synchronized (mAnimator) {
// Since we're holding both mWindowMap and mAnimator we don't need to
// hold mAnimator.mLayoutToAnim.
- if (mAnimator.mAnimating ||
- mAnimator.mLayoutToAnim.mAnimationScheduled) {
+ if (mAnimator.mAnimating || mLayoutToAnim.mAnimationScheduled) {
// If we are animating, don't do the gc now but
// delay a bit so we don't interrupt the animation.
mH.sendMessageDelayed(mH.obtainMessage(H.FORCE_GC),
@@ -7305,10 +7324,12 @@
case UPDATE_ANIM_PARAMETERS: {
// Used to send multiple changes from the animation side to the layout side.
synchronized (mWindowMap) {
- synchronized (mAnimToLayout) {
- mAnimToLayout.mUpdateQueued = false;
+ final WindowAnimator.AnimatorToLayoutParams animToLayout =
+ mAnimator.mAnimToLayout;
+ synchronized (animToLayout) {
+ animToLayout.mUpdateQueued = false;
boolean doRequest = false;
- final int bulkUpdateParams = mAnimToLayout.mBulkUpdateParams;
+ final int bulkUpdateParams = animToLayout.mBulkUpdateParams;
// TODO(cmautner): As the number of bits grows, use masks of bit groups to
// eliminate unnecessary tests.
if ((bulkUpdateParams & LayoutFields.SET_UPDATE_ROTATION) != 0) {
@@ -7323,7 +7344,8 @@
mInnerFields.mWallpaperForceHidingChanged = true;
doRequest = true;
}
- if ((bulkUpdateParams & LayoutFields.CLEAR_ORIENTATION_CHANGE_COMPLETE) != 0) {
+ if ((bulkUpdateParams & LayoutFields.SET_ORIENTATION_CHANGE_COMPLETE)
+ == 0) {
mInnerFields.mOrientationChangeComplete = false;
} else {
mInnerFields.mOrientationChangeComplete = true;
@@ -7335,12 +7357,12 @@
mTurnOnScreen = true;
}
- mPendingLayoutChanges |= mAnimToLayout.mPendingLayoutChanges;
+ mPendingLayoutChanges |= animToLayout.mPendingLayoutChanges;
if (mPendingLayoutChanges != 0) {
doRequest = true;
}
- mWindowDetachedWallpaper = mAnimToLayout.mWindowDetachedWallpaper;
+ mWindowDetachedWallpaper = animToLayout.mWindowDetachedWallpaper;
if (doRequest) {
mH.sendEmptyMessage(CLEAR_PENDING_ACTIONS);
@@ -7365,21 +7387,6 @@
break;
}
- case SET_WALLPAPER_OFFSET: {
- final WindowStateAnimator winAnimator = (WindowStateAnimator) msg.obj;
- winAnimator.setWallpaperOffset(msg.arg1, msg.arg2);
-
- scheduleAnimationLocked();
- break;
- }
-
- case SET_DIM_PARAMETERS: {
- mAnimator.mDimParams = (DimAnimator.Parameters) msg.obj;
-
- scheduleAnimationLocked();
- break;
- }
-
case CLEAR_PENDING_ACTIONS: {
mAnimator.clearPendingActions();
break;
@@ -7785,7 +7792,7 @@
}
if (layerChanged && mAnimator.isDimming(winAnimator)) {
// Force an animation pass just to update the mDimAnimator layer.
- scheduleAnimationLocked();
+ updateLayoutToAnimationLocked();
}
if (DEBUG_LAYERS) Slog.v(TAG, "Assign layer " + w + ": "
+ winAnimator.mAnimLayer);
@@ -8500,8 +8507,27 @@
width = innerDw;
height = innerDh;
}
- mAnimator.startDimming(winAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount,
- width, height);
+ startDimming(winAnimator, w.mExiting ? 0 : w.mAttrs.dimAmount, width, height);
+ }
+ }
+ }
+ }
+
+ private void updateAllDrawnLocked() {
+ // See if any windows have been drawn, so they (and others
+ // associated with them) can now be shown.
+ final ArrayList<AppWindowToken> appTokens = mAnimatingAppTokens;
+ final int NT = appTokens.size();
+ for (int i=0; i<NT; i++) {
+ AppWindowToken wtoken = appTokens.get(i);
+ if (!wtoken.allDrawn) {
+ int numInteresting = wtoken.numInterestingWindows;
+ if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) {
+ if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
+ "allDrawn: " + wtoken
+ + " interesting=" + numInteresting
+ + " drawn=" + wtoken.numDrawnWindows);
+ wtoken.allDrawn = true;
}
}
}
@@ -8546,6 +8572,7 @@
mInnerFields.mHoldScreen = null;
mInnerFields.mScreenBrightness = -1;
mInnerFields.mButtonBrightness = -1;
+ mTransactionSequence++;
if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG,
">>> OPEN TRANSACTION performLayoutAndPlaceSurfaces");
@@ -8623,6 +8650,7 @@
mInnerFields.mSyswin = false;
boolean focusDisplayed = false;
+ boolean updateAllDrawn = false;
final int N = mWindows.size();
for (i=N-1; i>=0; i--) {
WindowState w = mWindows.get(i);
@@ -8656,6 +8684,10 @@
winAnimator.setAnimation(a);
winAnimator.mAnimDw = w.mLastFrame.left - w.mFrame.left;
winAnimator.mAnimDh = w.mLastFrame.top - w.mFrame.top;
+ try {
+ w.mClient.moved(w.mFrame.left, w.mFrame.top);
+ } catch (RemoteException e) {
+ }
}
//Slog.i(TAG, "Window " + this + " clearing mContentChanged - done placing");
@@ -8672,13 +8704,61 @@
mInnerFields.mWallpaperMayChange = true;
mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
- debugLayoutRepeats("updateWindowsAndWallpaperLocked 1",
+ debugLayoutRepeats("wallpaper and commitFinishDrawingLocked true",
mPendingLayoutChanges);
}
}
}
winAnimator.setSurfaceBoundaries(recoveringMemory);
+
+ final AppWindowToken atoken = w.mAppToken;
+ if (DEBUG_STARTING_WINDOW && atoken != null && w == atoken.startingWindow) {
+ Slog.d(TAG, "updateWindows: starting " + w + " isOnScreen="
+ + w.isOnScreen() + " allDrawn=" + atoken.allDrawn
+ + " freezingScreen=" + atoken.mAppAnimator.freezingScreen);
+ }
+ if (atoken != null
+ && (!atoken.allDrawn || atoken.mAppAnimator.freezingScreen)) {
+ if (atoken.lastTransactionSequence != mTransactionSequence) {
+ atoken.lastTransactionSequence = mTransactionSequence;
+ atoken.numInterestingWindows = atoken.numDrawnWindows = 0;
+ atoken.startingDisplayed = false;
+ }
+ if ((w.isOnScreen() || winAnimator.mAttrType
+ == WindowManager.LayoutParams.TYPE_BASE_APPLICATION)
+ && !w.mExiting && !w.mDestroying) {
+ if (WindowManagerService.DEBUG_VISIBILITY ||
+ WindowManagerService.DEBUG_ORIENTATION) {
+ Slog.v(TAG, "Eval win " + w + ": isDrawn=" + w.isDrawnLw()
+ + ", isAnimating=" + winAnimator.isAnimating());
+ if (!w.isDrawnLw()) {
+ Slog.v(TAG, "Not displayed: s=" + winAnimator.mSurface
+ + " pv=" + w.mPolicyVisibility
+ + " mDrawState=" + winAnimator.mDrawState
+ + " ah=" + w.mAttachedHidden
+ + " th=" + atoken.hiddenRequested
+ + " a=" + winAnimator.mAnimating);
+ }
+ }
+ if (w != atoken.startingWindow) {
+ if (!atoken.mAppAnimator.freezingScreen || !w.mAppFreezing) {
+ atoken.numInterestingWindows++;
+ if (w.isDrawnLw()) {
+ atoken.numDrawnWindows++;
+ if (WindowManagerService.DEBUG_VISIBILITY ||
+ WindowManagerService.DEBUG_ORIENTATION) Slog.v(TAG,
+ "tokenMayBeDrawn: " + atoken
+ + " freezingScreen=" + atoken.mAppAnimator.freezingScreen
+ + " mAppFreezing=" + w.mAppFreezing);
+ updateAllDrawn = true;
+ }
+ }
+ } else if (w.isDrawnLw()) {
+ atoken.startingDisplayed = true;
+ }
+ }
+ }
}
if (someoneLosingFocus && w == mCurrentFocus && w.isDisplayedLw()) {
@@ -8688,12 +8768,16 @@
updateResizingWindows(w);
}
+ if (updateAllDrawn) {
+ updateAllDrawnLocked();
+ }
+
if (focusDisplayed) {
mH.sendEmptyMessage(H.REPORT_LOSING_FOCUS);
}
if (!mInnerFields.mDimming && mAnimator.isDimming()) {
- mAnimator.stopDimming();
+ stopDimming();
}
} catch (RuntimeException e) {
Log.wtf(TAG, "Unhandled exception in Window Manager", e);
@@ -8844,6 +8928,7 @@
mExitingTokens.remove(i);
if (token.windowType == TYPE_WALLPAPER) {
mWallpaperTokens.remove(token);
+ updateLayoutToAnimWallpaperTokens();
}
}
}
@@ -8931,7 +9016,7 @@
// be enabled, because the window obscured flags have changed.
enableScreenIfNeededLocked();
- scheduleAnimationLocked();
+ updateLayoutToAnimationLocked();
if (DEBUG_WINDOW_TRACE) {
Slog.e(TAG, "performLayoutAndPlaceSurfacesLockedInner exit: mPendingLayoutChanges="
@@ -9008,8 +9093,18 @@
}
}
+ /** Note that Locked in this case is on mLayoutToAnim */
void scheduleAnimationLocked() {
- final WindowAnimator.LayoutToAnimatorParams layoutToAnim = mAnimator.mLayoutToAnim;
+ final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim;
+ if (!layoutToAnim.mAnimationScheduled) {
+ layoutToAnim.mAnimationScheduled = true;
+ mChoreographer.postCallback(
+ Choreographer.CALLBACK_ANIMATION, mAnimator.mAnimationRunnable, null);
+ }
+ }
+
+ void updateLayoutToAnimationLocked() {
+ final LayoutToAnimatorParams layoutToAnim = mLayoutToAnim;
synchronized (layoutToAnim) {
// Copy local params to transfer params.
ArrayList<WindowStateAnimator> winAnimators = layoutToAnim.mWinAnimators;
@@ -9022,10 +9117,35 @@
}
}
layoutToAnim.mWallpaperTarget = mWallpaperTarget;
- mAnimator.scheduleAnimationLocked();
+ layoutToAnim.mLowerWallpaperTarget = mLowerWallpaperTarget;
+ layoutToAnim.mUpperWallpaperTarget = mUpperWallpaperTarget;
+ scheduleAnimationLocked();
}
}
+ void updateLayoutToAnimWallpaperTokens() {
+ synchronized(mLayoutToAnim) {
+ mLayoutToAnim.mWallpaperTokens = new ArrayList<WindowToken>(mWallpaperTokens);
+ mLayoutToAnim.mChanges |= LayoutToAnimatorParams.WALLPAPER_TOKENS_CHANGED;
+ }
+ }
+
+ void setAnimDimParams(DimAnimator.Parameters params) {
+ synchronized (mLayoutToAnim) {
+ mLayoutToAnim.mDimParams = params;
+ scheduleAnimationLocked();
+ }
+ }
+
+ void startDimming(final WindowStateAnimator winAnimator, final float target,
+ final int width, final int height) {
+ setAnimDimParams(new DimAnimator.Parameters(winAnimator, width, height, target));
+ }
+
+ void stopDimming() {
+ setAnimDimParams(null);
+ }
+
boolean reclaimSomeSurfaceMemoryLocked(WindowStateAnimator winAnimator, String operation,
boolean secure) {
final Surface surface = winAnimator.mSurface;
@@ -9330,7 +9450,7 @@
if (DEBUG_ORIENTATION) Slog.i(TAG, "**** Dismissing screen rotation animation");
if (mAnimator.mScreenRotationAnimation.dismiss(mFxSession, MAX_ANIMATION_DURATION,
mTransitionAnimationScale, mCurDisplayWidth, mCurDisplayHeight)) {
- scheduleAnimationLocked();
+ updateLayoutToAnimationLocked();
} else {
mAnimator.mScreenRotationAnimation.kill();
mAnimator.mScreenRotationAnimation = null;
@@ -9833,7 +9953,8 @@
}
pw.print(" mSystemBooted="); pw.print(mSystemBooted);
pw.print(" mDisplayEnabled="); pw.println(mDisplayEnabled);
- pw.print(" mLayoutNeeded="); pw.println(mLayoutNeeded);
+ pw.print(" mLayoutNeeded="); pw.print(mLayoutNeeded);
+ pw.print("mTransactionSequence="); pw.println(mTransactionSequence);
pw.print(" mDisplayFrozen="); pw.print(mDisplayFrozen);
pw.print(" mWindowsFreezingScreen="); pw.print(mWindowsFreezingScreen);
pw.print(" mAppsFreezingScreen="); pw.print(mAppsFreezingScreen);
@@ -9894,6 +10015,8 @@
}
pw.print(" mStartingIconInTransition="); pw.print(mStartingIconInTransition);
pw.print(" mSkipAppTransitionAnimation="); pw.println(mSkipAppTransitionAnimation);
+ pw.println(" Window Animator:");
+ mAnimator.dump(pw, " ", dumpAll);
}
}
@@ -10105,12 +10228,4 @@
Integer.toHexString(pendingLayoutChanges));
}
}
-
- /** Locked on mAnimToLayout */
- void setAnimatorParametersLocked() {
- if (!mAnimToLayout.mUpdateQueued) {
- mAnimToLayout.mUpdateQueued = true;
- mH.sendMessage(mH.obtainMessage(H.UPDATE_ANIM_PARAMETERS));
- }
- }
}
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index 99f1d06..e5ec5af 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -317,7 +317,7 @@
mIsFloatingLayer = mIsImWindow || mIsWallpaper;
}
- mWinAnimator = new WindowStateAnimator(service, this, mAttachedWindow);
+ mWinAnimator = new WindowStateAnimator(this);
mWinAnimator.mAlpha = a.alpha;
WindowState appWin = this;
@@ -907,7 +907,7 @@
mWinAnimator.applyAnimationLocked(WindowManagerPolicy.TRANSIT_ENTER, true);
}
if (requestAnim) {
- mService.scheduleAnimationLocked();
+ mService.updateLayoutToAnimationLocked();
}
return true;
}
@@ -950,7 +950,7 @@
}
}
if (requestAnim) {
- mService.scheduleAnimationLocked();
+ mService.updateLayoutToAnimationLocked();
}
return true;
}
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 3d0c6de..464df6e 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -3,9 +3,8 @@
package com.android.server.wm;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
-import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
-import static com.android.server.wm.WindowManagerService.LayoutFields.CLEAR_ORIENTATION_CHANGE_COMPLETE;
+import static com.android.server.wm.WindowManagerService.LayoutFields.SET_ORIENTATION_CHANGE_COMPLETE;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_TURN_ON_SCREEN;
import android.content.Context;
@@ -48,6 +47,7 @@
static final String TAG = "WindowStateAnimator";
+ // Unchanging local convenience fields.
final WindowManagerService mService;
final WindowState mWin;
final WindowState mAttachedWindow;
@@ -55,6 +55,7 @@
final Session mSession;
final WindowManagerPolicy mPolicy;
final Context mContext;
+ final boolean mIsWallpaper;
// If this is a universe background window, this is the transformation
// it is applying to the rest of the universe.
@@ -124,6 +125,16 @@
static final int READY_TO_SHOW = 3;
/** Set when the window has been shown in the screen the first time. */
static final int HAS_DRAWN = 4;
+ static String drawStateToString(int state) {
+ switch (state) {
+ case NO_SURFACE: return "NO_SURFACE";
+ case DRAW_PENDING: return "DRAW_PENDING";
+ case COMMIT_DRAW_PENDING: return "COMMIT_DRAW_PENDING";
+ case READY_TO_SHOW: return "READY_TO_SHOW";
+ case HAS_DRAWN: return "HAS_DRAWN";
+ default: return Integer.toString(state);
+ }
+ }
int mDrawState;
/** Was this window last hidden? */
@@ -132,19 +143,22 @@
int mAttrFlags;
int mAttrType;
- public WindowStateAnimator(final WindowManagerService service, final WindowState win,
- final WindowState attachedWindow) {
+ public WindowStateAnimator(final WindowState win) {
+ final WindowManagerService service = win.mService;
+
mService = service;
- mWin = win;
- mAttachedWindow = attachedWindow;
- mAnimator = mService.mAnimator;
- mSession = win.mSession;
- mPolicy = mService.mPolicy;
- mContext = mService.mContext;
- mAttrFlags = win.mAttrs.flags;
- mAttrType = win.mAttrs.type;
+ mAnimator = service.mAnimator;
+ mPolicy = service.mPolicy;
+ mContext = service.mContext;
mAnimDw = service.mAppDisplayWidth;
mAnimDh = service.mAppDisplayHeight;
+
+ mWin = win;
+ mAttachedWindow = win.mAttachedWindow;
+ mSession = win.mSession;
+ mAttrFlags = win.mAttrs.flags;
+ mAttrType = win.mAttrs.type;
+ mIsWallpaper = win.mIsWallpaper;
}
public void setAnimation(Animation anim) {
@@ -299,7 +313,7 @@
mAnimLayer = mWin.mLayer;
if (mWin.mIsImWindow) {
mAnimLayer += mService.mInputMethodAnimLayerAdjustment;
- } else if (mWin.mIsWallpaper) {
+ } else if (mIsWallpaper) {
mAnimLayer += mService.mWallpaperAnimLayerAdjustment;
}
if (DEBUG_LAYERS) Slog.v(TAG, "Stepping win " + this
@@ -403,10 +417,19 @@
}
boolean finishDrawingLocked() {
+ if (DEBUG_STARTING_WINDOW &&
+ mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
+ Slog.v(TAG, "Finishing drawing window " + mWin + ": mDrawState="
+ + drawStateToString(mDrawState));
+ }
if (mDrawState == DRAW_PENDING) {
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
Slog.v(TAG, "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING " + this + " in "
+ mSurface);
+ if (DEBUG_STARTING_WINDOW &&
+ mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
+ Slog.v(TAG, "Draw state now committed in " + mWin);
+ }
mDrawState = COMMIT_DRAW_PENDING;
return true;
}
@@ -415,11 +438,17 @@
// This must be called while inside a transaction.
boolean commitFinishDrawingLocked(long currentTime) {
+ if (DEBUG_STARTING_WINDOW &&
+ mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
+ Slog.i(TAG, "commitFinishDrawingLocked: " + mWin + " cur mDrawState="
+ + drawStateToString(mDrawState));
+ }
if (mDrawState != COMMIT_DRAW_PENDING) {
return false;
}
- if (DEBUG_SURFACE_TRACE || DEBUG_ANIM)
+ if (DEBUG_SURFACE_TRACE || DEBUG_ANIM) {
Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurface);
+ }
mDrawState = READY_TO_SHOW;
final boolean starting = mWin.mAttrs.type == TYPE_APPLICATION_STARTING;
final AppWindowToken atoken = mWin.mAppToken;
@@ -787,22 +816,21 @@
// Wallpapers are animated based on the "real" window they
// are currently targeting.
- if (mWin.mAttrs.type == TYPE_WALLPAPER && mService.mLowerWallpaperTarget == null
- && mService.mWallpaperTarget != null) {
- if (mService.mWallpaperTarget.mWinAnimator.mHasLocalTransformation &&
- mService.mWallpaperTarget.mWinAnimator.mAnimation != null &&
- !mService.mWallpaperTarget.mWinAnimator.mAnimation.getDetachWallpaper()) {
- attachedTransformation = mService.mWallpaperTarget.mWinAnimator.mTransformation;
+ if (mIsWallpaper && mAnimator.mLowerWallpaperTarget == null
+ && mAnimator.mWallpaperTarget != null) {
+ final WindowStateAnimator wallpaperAnimator = mAnimator.mWallpaperTarget.mWinAnimator;
+ if (wallpaperAnimator.mHasLocalTransformation &&
+ wallpaperAnimator.mAnimation != null &&
+ !wallpaperAnimator.mAnimation.getDetachWallpaper()) {
+ attachedTransformation = wallpaperAnimator.mTransformation;
if (WindowManagerService.DEBUG_WALLPAPER && attachedTransformation != null) {
Slog.v(TAG, "WP target attached xform: " + attachedTransformation);
}
}
- final AppWindowAnimator wpAppAnimator = mService.mWallpaperTarget.mAppToken == null
- ? null : mService.mWallpaperTarget.mAppToken.mAppAnimator;
- if (wpAppAnimator != null &&
- wpAppAnimator.hasTransformation &&
- wpAppAnimator.animation != null &&
- !wpAppAnimator.animation.getDetachWallpaper()) {
+ final AppWindowAnimator wpAppAnimator = mAnimator.mWpAppAnimator;
+ if (wpAppAnimator != null && wpAppAnimator.hasTransformation
+ && wpAppAnimator.animation != null
+ && !wpAppAnimator.animation.getDetachWallpaper()) {
appTransformation = wpAppAnimator.transformation;
if (WindowManagerService.DEBUG_WALLPAPER && appTransformation != null) {
Slog.v(TAG, "WP target app xform: " + appTransformation);
@@ -915,7 +943,7 @@
" screen=" + (screenAnimation ? mService.mAnimator.mScreenRotationAnimation.getEnterTransformation().getAlpha()
: "null"));
return;
- } else if (mWin.mIsWallpaper &&
+ } else if (mIsWallpaper &&
(mAnimator.mPendingActions & WindowAnimator.WALLPAPER_ACTION_PENDING) != 0) {
return;
}
@@ -1079,7 +1107,7 @@
mAnimator.mPendingLayoutChanges |=
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
if ((w.mAttrs.flags & LayoutParams.FLAG_DIM_BEHIND) != 0) {
- mAnimator.startDimming(this, w.mExiting ? 0 : w.mAttrs.dimAmount,
+ mService.startDimming(this, w.mExiting ? 0 : w.mAttrs.dimAmount,
mService.mAppDisplayWidth, mService.mAppDisplayHeight);
}
} catch (RuntimeException e) {
@@ -1115,7 +1143,7 @@
setSurfaceBoundaries(recoveringMemory);
- if (mWin.mIsWallpaper && !mWin.mWallpaperVisible) {
+ if (mIsWallpaper && !mWin.mWallpaperVisible) {
// Wallpaper is no longer visible and there is no wp target => hide it.
hide();
} else if (w.mAttachedHidden || !w.isReadyForDisplay()) {
@@ -1174,7 +1202,7 @@
+ " during relayout");
if (showSurfaceRobustlyLocked()) {
mLastHidden = false;
- if (w.mIsWallpaper) {
+ if (mIsWallpaper) {
mService.dispatchWallpaperVisibility(w, true);
}
} else {
@@ -1201,7 +1229,7 @@
if (displayed) {
if (w.mOrientationChanging) {
if (!w.isDrawnLw()) {
- mAnimator.mBulkUpdateParams |= CLEAR_ORIENTATION_CHANGE_COMPLETE;
+ mAnimator.mBulkUpdateParams &= ~SET_ORIENTATION_CHANGE_COMPLETE;
if (DEBUG_ORIENTATION) Slog.v(TAG,
"Orientation continue waiting for draw in " + w);
} else {
@@ -1262,7 +1290,8 @@
// This must be called while inside a transaction.
boolean performShowLocked() {
- if (DEBUG_VISIBILITY) {
+ if (DEBUG_VISIBILITY || (DEBUG_STARTING_WINDOW &&
+ mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING)) {
RuntimeException e = null;
if (!WindowManagerService.HIDE_STACK_CRAWLS) {
e = new RuntimeException();
@@ -1271,12 +1300,7 @@
Slog.v(TAG, "performShow on " + this
+ ": mDrawState=" + mDrawState + " readyForDisplay="
+ mWin.isReadyForDisplayIgnoringKeyguard()
- + " starting=" + (mWin.mAttrs.type == TYPE_APPLICATION_STARTING), e);
- }
- if (mDrawState == READY_TO_SHOW && mWin.isReadyForDisplayIgnoringKeyguard()) {
- if (SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
- WindowManagerService.logSurface(mWin, "SHOW (performShowLocked)", null);
- if (DEBUG_VISIBILITY) Slog.v(TAG, "Showing " + this
+ + " starting=" + (mWin.mAttrs.type == TYPE_APPLICATION_STARTING)
+ " during animation: policyVis=" + mWin.mPolicyVisibility
+ " attHidden=" + mWin.mAttachedHidden
+ " tok.hiddenRequested="
@@ -1285,7 +1309,24 @@
+ (mWin.mAppToken != null ? mWin.mAppToken.hidden : false)
+ " animating=" + mAnimating
+ " tok animating="
- + (mWin.mAppToken != null ? mWin.mAppToken.mAppAnimator.animating : false));
+ + (mWin.mAppToken != null ? mWin.mAppToken.mAppAnimator.animating : false), e);
+ }
+ if (mDrawState == READY_TO_SHOW && mWin.isReadyForDisplayIgnoringKeyguard()) {
+ if (SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
+ WindowManagerService.logSurface(mWin, "SHOW (performShowLocked)", null);
+ 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="
+ + (mWin.mAppToken != null ? mWin.mAppToken.mAppAnimator.animating : false));
+ }
mService.enableScreenIfNeededLocked();
@@ -1296,7 +1337,7 @@
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM)
Slog.v(TAG, "performShowLocked: mDrawState=HAS_DRAWN in " + this);
mDrawState = HAS_DRAWN;
- mService.scheduleAnimationLocked();
+ mService.updateLayoutToAnimationLocked();
int i = mWin.mChildWindows.size();
while (i > 0) {
@@ -1473,7 +1514,8 @@
if (mSurface != null) {
if (dumpAll) {
pw.print(prefix); pw.print("mSurface="); pw.println(mSurface);
- pw.print(prefix); pw.print("mDrawState="); pw.print(mDrawState);
+ pw.print(prefix); pw.print("mDrawState=");
+ pw.print(drawStateToString(mDrawState));
pw.print(" mLastHidden="); pw.println(mLastHidden);
}
pw.print(prefix); pw.print("Surface: shown="); pw.print(mSurfaceShown);
diff --git a/services/sensorservice/Android.mk b/services/sensorservice/Android.mk
deleted file mode 100644
index 6a302c0..0000000
--- a/services/sensorservice/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- CorrectedGyroSensor.cpp \
- Fusion.cpp \
- GravitySensor.cpp \
- LinearAccelerationSensor.cpp \
- OrientationSensor.cpp \
- RotationVectorSensor.cpp \
- SensorDevice.cpp \
- SensorFusion.cpp \
- SensorInterface.cpp \
- SensorService.cpp \
-
-
-LOCAL_CFLAGS:= -DLOG_TAG=\"SensorService\"
-
-LOCAL_SHARED_LIBRARIES := \
- libcutils \
- libhardware \
- libutils \
- libbinder \
- libui \
- libgui
-
-
-
-LOCAL_MODULE:= libsensorservice
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/services/sensorservice/CorrectedGyroSensor.cpp b/services/sensorservice/CorrectedGyroSensor.cpp
deleted file mode 100644
index 1857443..0000000
--- a/services/sensorservice/CorrectedGyroSensor.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <utils/Errors.h>
-
-#include <hardware/sensors.h>
-
-#include "CorrectedGyroSensor.h"
-#include "SensorDevice.h"
-#include "SensorFusion.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-CorrectedGyroSensor::CorrectedGyroSensor(sensor_t const* list, size_t count)
- : mSensorDevice(SensorDevice::getInstance()),
- mSensorFusion(SensorFusion::getInstance())
-{
- for (size_t i=0 ; i<count ; i++) {
- if (list[i].type == SENSOR_TYPE_GYROSCOPE) {
- mGyro = Sensor(list + i);
- break;
- }
- }
-}
-
-bool CorrectedGyroSensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event)
-{
- if (event.type == SENSOR_TYPE_GYROSCOPE) {
- const vec3_t bias(mSensorFusion.getGyroBias());
- *outEvent = event;
- outEvent->data[0] -= bias.x;
- outEvent->data[1] -= bias.y;
- outEvent->data[2] -= bias.z;
- outEvent->sensor = '_cgy';
- return true;
- }
- return false;
-}
-
-status_t CorrectedGyroSensor::activate(void* ident, bool enabled) {
- mSensorDevice.activate(this, mGyro.getHandle(), enabled);
- return mSensorFusion.activate(this, enabled);
-}
-
-status_t CorrectedGyroSensor::setDelay(void* ident, int handle, int64_t ns) {
- mSensorDevice.setDelay(this, mGyro.getHandle(), ns);
- return mSensorFusion.setDelay(this, ns);
-}
-
-Sensor CorrectedGyroSensor::getSensor() const {
- sensor_t hwSensor;
- hwSensor.name = "Corrected Gyroscope Sensor";
- hwSensor.vendor = "Google Inc.";
- hwSensor.version = 1;
- hwSensor.handle = '_cgy';
- hwSensor.type = SENSOR_TYPE_GYROSCOPE;
- hwSensor.maxRange = mGyro.getMaxValue();
- hwSensor.resolution = mGyro.getResolution();
- hwSensor.power = mSensorFusion.getPowerUsage();
- hwSensor.minDelay = mGyro.getMinDelay();
- Sensor sensor(&hwSensor);
- return sensor;
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/CorrectedGyroSensor.h b/services/sensorservice/CorrectedGyroSensor.h
deleted file mode 100644
index 3c49c08..0000000
--- a/services/sensorservice/CorrectedGyroSensor.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_CORRECTED_GYRO_SENSOR_H
-#define ANDROID_CORRECTED_GYRO_SENSOR_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <gui/Sensor.h>
-
-#include "SensorInterface.h"
-
-// ---------------------------------------------------------------------------
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorDevice;
-class SensorFusion;
-
-class CorrectedGyroSensor : public SensorInterface {
- SensorDevice& mSensorDevice;
- SensorFusion& mSensorFusion;
- Sensor mGyro;
-
-public:
- CorrectedGyroSensor(sensor_t const* list, size_t count);
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return true; }
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_CORRECTED_GYRO_SENSOR_H
diff --git a/services/sensorservice/Fusion.cpp b/services/sensorservice/Fusion.cpp
deleted file mode 100644
index b724ce2..0000000
--- a/services/sensorservice/Fusion.cpp
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-
-#include <utils/Log.h>
-
-#include "Fusion.h"
-
-namespace android {
-
-// -----------------------------------------------------------------------
-
-/*
- * gyroVAR gives the measured variance of the gyro's output per
- * Hz (or variance at 1 Hz). This is an "intrinsic" parameter of the gyro,
- * which is independent of the sampling frequency.
- *
- * The variance of gyro's output at a given sampling period can be
- * calculated as:
- * variance(T) = gyroVAR / T
- *
- * The variance of the INTEGRATED OUTPUT at a given sampling period can be
- * calculated as:
- * variance_integrate_output(T) = gyroVAR * T
- *
- */
-static const float gyroVAR = 1e-7; // (rad/s)^2 / Hz
-static const float biasVAR = 1e-8; // (rad/s)^2 / s (guessed)
-
-/*
- * Standard deviations of accelerometer and magnetometer
- */
-static const float accSTDEV = 0.05f; // m/s^2 (measured 0.08 / CDD 0.05)
-static const float magSTDEV = 0.5f; // uT (measured 0.7 / CDD 0.5)
-
-static const float SYMMETRY_TOLERANCE = 1e-10f;
-
-/*
- * Accelerometer updates will not be performed near free fall to avoid
- * ill-conditioning and div by zeros.
- * Threshhold: 10% of g, in m/s^2
- */
-static const float FREE_FALL_THRESHOLD = 0.981f;
-static const float FREE_FALL_THRESHOLD_SQ =
- FREE_FALL_THRESHOLD*FREE_FALL_THRESHOLD;
-
-/*
- * The geomagnetic-field should be between 30uT and 60uT.
- * Fields strengths greater than this likely indicate a local magnetic
- * disturbance which we do not want to update into the fused frame.
- */
-static const float MAX_VALID_MAGNETIC_FIELD = 100; // uT
-static const float MAX_VALID_MAGNETIC_FIELD_SQ =
- MAX_VALID_MAGNETIC_FIELD*MAX_VALID_MAGNETIC_FIELD;
-
-/*
- * Values of the field smaller than this should be ignored in fusion to avoid
- * ill-conditioning. This state can happen with anomalous local magnetic
- * disturbances canceling the Earth field.
- */
-static const float MIN_VALID_MAGNETIC_FIELD = 10; // uT
-static const float MIN_VALID_MAGNETIC_FIELD_SQ =
- MIN_VALID_MAGNETIC_FIELD*MIN_VALID_MAGNETIC_FIELD;
-
-/*
- * If the cross product of two vectors has magnitude squared less than this,
- * we reject it as invalid due to alignment of the vectors.
- * This threshold is used to check for the case where the magnetic field sample
- * is parallel to the gravity field, which can happen in certain places due
- * to magnetic field disturbances.
- */
-static const float MIN_VALID_CROSS_PRODUCT_MAG = 1.0e-3;
-static const float MIN_VALID_CROSS_PRODUCT_MAG_SQ =
- MIN_VALID_CROSS_PRODUCT_MAG*MIN_VALID_CROSS_PRODUCT_MAG;
-
-// -----------------------------------------------------------------------
-
-template <typename TYPE, size_t C, size_t R>
-static mat<TYPE, R, R> scaleCovariance(
- const mat<TYPE, C, R>& A,
- const mat<TYPE, C, C>& P) {
- // A*P*transpose(A);
- mat<TYPE, R, R> APAt;
- for (size_t r=0 ; r<R ; r++) {
- for (size_t j=r ; j<R ; j++) {
- double apat(0);
- for (size_t c=0 ; c<C ; c++) {
- double v(A[c][r]*P[c][c]*0.5);
- for (size_t k=c+1 ; k<C ; k++)
- v += A[k][r] * P[c][k];
- apat += 2 * v * A[c][j];
- }
- APAt[j][r] = apat;
- APAt[r][j] = apat;
- }
- }
- return APAt;
-}
-
-template <typename TYPE, typename OTHER_TYPE>
-static mat<TYPE, 3, 3> crossMatrix(const vec<TYPE, 3>& p, OTHER_TYPE diag) {
- mat<TYPE, 3, 3> r;
- r[0][0] = diag;
- r[1][1] = diag;
- r[2][2] = diag;
- r[0][1] = p.z;
- r[1][0] =-p.z;
- r[0][2] =-p.y;
- r[2][0] = p.y;
- r[1][2] = p.x;
- r[2][1] =-p.x;
- return r;
-}
-
-
-template<typename TYPE, size_t SIZE>
-class Covariance {
- mat<TYPE, SIZE, SIZE> mSumXX;
- vec<TYPE, SIZE> mSumX;
- size_t mN;
-public:
- Covariance() : mSumXX(0.0f), mSumX(0.0f), mN(0) { }
- void update(const vec<TYPE, SIZE>& x) {
- mSumXX += x*transpose(x);
- mSumX += x;
- mN++;
- }
- mat<TYPE, SIZE, SIZE> operator()() const {
- const float N = 1.0f / mN;
- return mSumXX*N - (mSumX*transpose(mSumX))*(N*N);
- }
- void reset() {
- mN = 0;
- mSumXX = 0;
- mSumX = 0;
- }
- size_t getCount() const {
- return mN;
- }
-};
-
-// -----------------------------------------------------------------------
-
-Fusion::Fusion() {
- Phi[0][1] = 0;
- Phi[1][1] = 1;
-
- Ba.x = 0;
- Ba.y = 0;
- Ba.z = 1;
-
- Bm.x = 0;
- Bm.y = 1;
- Bm.z = 0;
-
- x0 = 0;
- x1 = 0;
-
- init();
-}
-
-void Fusion::init() {
- mInitState = 0;
-
- mGyroRate = 0;
-
- mCount[0] = 0;
- mCount[1] = 0;
- mCount[2] = 0;
-
- mData = 0;
-}
-
-void Fusion::initFusion(const vec4_t& q, float dT)
-{
- // initial estimate: E{ x(t0) }
- x0 = q;
- x1 = 0;
-
- // process noise covariance matrix: G.Q.Gt, with
- //
- // G = | -1 0 | Q = | q00 q10 |
- // | 0 1 | | q01 q11 |
- //
- // q00 = sv^2.dt + 1/3.su^2.dt^3
- // q10 = q01 = 1/2.su^2.dt^2
- // q11 = su^2.dt
- //
-
- // variance of integrated output at 1/dT Hz
- // (random drift)
- const float q00 = gyroVAR * dT;
-
- // variance of drift rate ramp
- const float q11 = biasVAR * dT;
-
- const float u = q11 / dT;
- const float q10 = 0.5f*u*dT*dT;
- const float q01 = q10;
-
- GQGt[0][0] = q00; // rad^2
- GQGt[1][0] = -q10;
- GQGt[0][1] = -q01;
- GQGt[1][1] = q11; // (rad/s)^2
-
- // initial covariance: Var{ x(t0) }
- // TODO: initialize P correctly
- P = 0;
-}
-
-bool Fusion::hasEstimate() const {
- return (mInitState == (MAG|ACC|GYRO));
-}
-
-bool Fusion::checkInitComplete(int what, const vec3_t& d, float dT) {
- if (hasEstimate())
- return true;
-
- if (what == ACC) {
- mData[0] += d * (1/length(d));
- mCount[0]++;
- mInitState |= ACC;
- } else if (what == MAG) {
- mData[1] += d * (1/length(d));
- mCount[1]++;
- mInitState |= MAG;
- } else if (what == GYRO) {
- mGyroRate = dT;
- mData[2] += d*dT;
- mCount[2]++;
- if (mCount[2] == 64) {
- // 64 samples is good enough to estimate the gyro drift and
- // doesn't take too much time.
- mInitState |= GYRO;
- }
- }
-
- if (mInitState == (MAG|ACC|GYRO)) {
- // Average all the values we collected so far
- mData[0] *= 1.0f/mCount[0];
- mData[1] *= 1.0f/mCount[1];
- mData[2] *= 1.0f/mCount[2];
-
- // calculate the MRPs from the data collection, this gives us
- // a rough estimate of our initial state
- mat33_t R;
- vec3_t up(mData[0]);
- vec3_t east(cross_product(mData[1], up));
- east *= 1/length(east);
- vec3_t north(cross_product(up, east));
- R << east << north << up;
- const vec4_t q = matrixToQuat(R);
-
- initFusion(q, mGyroRate);
- }
-
- return false;
-}
-
-void Fusion::handleGyro(const vec3_t& w, float dT) {
- if (!checkInitComplete(GYRO, w, dT))
- return;
-
- predict(w, dT);
-}
-
-status_t Fusion::handleAcc(const vec3_t& a) {
- // ignore acceleration data if we're close to free-fall
- if (length_squared(a) < FREE_FALL_THRESHOLD_SQ) {
- return BAD_VALUE;
- }
-
- if (!checkInitComplete(ACC, a))
- return BAD_VALUE;
-
- const float l = 1/length(a);
- update(a*l, Ba, accSTDEV*l);
- return NO_ERROR;
-}
-
-status_t Fusion::handleMag(const vec3_t& m) {
- // the geomagnetic-field should be between 30uT and 60uT
- // reject if too large to avoid spurious magnetic sources
- const float magFieldSq = length_squared(m);
- if (magFieldSq > MAX_VALID_MAGNETIC_FIELD_SQ) {
- return BAD_VALUE;
- } else if (magFieldSq < MIN_VALID_MAGNETIC_FIELD_SQ) {
- // Also reject if too small since we will get ill-defined (zero mag)
- // cross-products below
- return BAD_VALUE;
- }
-
- if (!checkInitComplete(MAG, m))
- return BAD_VALUE;
-
- // Orthogonalize the magnetic field to the gravity field, mapping it into
- // tangent to Earth.
- const vec3_t up( getRotationMatrix() * Ba );
- const vec3_t east( cross_product(m, up) );
-
- // If the m and up vectors align, the cross product magnitude will
- // approach 0.
- // Reject this case as well to avoid div by zero problems and
- // ill-conditioning below.
- if (length_squared(east) < MIN_VALID_CROSS_PRODUCT_MAG_SQ) {
- return BAD_VALUE;
- }
-
- // If we have created an orthogonal magnetic field successfully,
- // then pass it in as the update.
- vec3_t north( cross_product(up, east) );
-
- const float l = 1 / length(north);
- north *= l;
-
- update(north, Bm, magSTDEV*l);
- return NO_ERROR;
-}
-
-void Fusion::checkState() {
- // P needs to stay positive semidefinite or the fusion diverges. When we
- // detect divergence, we reset the fusion.
- // TODO(braun): Instead, find the reason for the divergence and fix it.
-
- if (!isPositiveSemidefinite(P[0][0], SYMMETRY_TOLERANCE) ||
- !isPositiveSemidefinite(P[1][1], SYMMETRY_TOLERANCE)) {
- ALOGW("Sensor fusion diverged; resetting state.");
- P = 0;
- }
-}
-
-vec4_t Fusion::getAttitude() const {
- return x0;
-}
-
-vec3_t Fusion::getBias() const {
- return x1;
-}
-
-mat33_t Fusion::getRotationMatrix() const {
- return quatToMatrix(x0);
-}
-
-mat34_t Fusion::getF(const vec4_t& q) {
- mat34_t F;
- F[0].x = q.w; F[1].x =-q.z; F[2].x = q.y;
- F[0].y = q.z; F[1].y = q.w; F[2].y =-q.x;
- F[0].z =-q.y; F[1].z = q.x; F[2].z = q.w;
- F[0].w =-q.x; F[1].w =-q.y; F[2].w =-q.z;
- return F;
-}
-
-void Fusion::predict(const vec3_t& w, float dT) {
- const vec4_t q = x0;
- const vec3_t b = x1;
- const vec3_t we = w - b;
- const vec4_t dq = getF(q)*((0.5f*dT)*we);
- x0 = normalize_quat(q + dq);
-
- // P(k+1) = F*P(k)*Ft + G*Q*Gt
-
- // Phi = | Phi00 Phi10 |
- // | 0 1 |
- const mat33_t I33(1);
- const mat33_t I33dT(dT);
- const mat33_t wx(crossMatrix(we, 0));
- const mat33_t wx2(wx*wx);
- const float lwedT = length(we)*dT;
- const float ilwe = 1/length(we);
- const float k0 = (1-cosf(lwedT))*(ilwe*ilwe);
- const float k1 = sinf(lwedT);
-
- Phi[0][0] = I33 - wx*(k1*ilwe) + wx2*k0;
- Phi[1][0] = wx*k0 - I33dT - wx2*(ilwe*ilwe*ilwe)*(lwedT-k1);
-
- P = Phi*P*transpose(Phi) + GQGt;
-
- checkState();
-}
-
-void Fusion::update(const vec3_t& z, const vec3_t& Bi, float sigma) {
- vec4_t q(x0);
- // measured vector in body space: h(p) = A(p)*Bi
- const mat33_t A(quatToMatrix(q));
- const vec3_t Bb(A*Bi);
-
- // Sensitivity matrix H = dh(p)/dp
- // H = [ L 0 ]
- const mat33_t L(crossMatrix(Bb, 0));
-
- // gain...
- // K = P*Ht / [H*P*Ht + R]
- vec<mat33_t, 2> K;
- const mat33_t R(sigma*sigma);
- const mat33_t S(scaleCovariance(L, P[0][0]) + R);
- const mat33_t Si(invert(S));
- const mat33_t LtSi(transpose(L)*Si);
- K[0] = P[0][0] * LtSi;
- K[1] = transpose(P[1][0])*LtSi;
-
- // update...
- // P -= K*H*P;
- const mat33_t K0L(K[0] * L);
- const mat33_t K1L(K[1] * L);
- P[0][0] -= K0L*P[0][0];
- P[1][1] -= K1L*P[1][0];
- P[1][0] -= K0L*P[1][0];
- P[0][1] = transpose(P[1][0]);
-
- const vec3_t e(z - Bb);
- const vec3_t dq(K[0]*e);
- const vec3_t db(K[1]*e);
-
- q += getF(q)*(0.5f*dq);
- x0 = normalize_quat(q);
- x1 += db;
-
- checkState();
-}
-
-// -----------------------------------------------------------------------
-
-}; // namespace android
-
diff --git a/services/sensorservice/Fusion.h b/services/sensorservice/Fusion.h
deleted file mode 100644
index 7062999..0000000
--- a/services/sensorservice/Fusion.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_FUSION_H
-#define ANDROID_FUSION_H
-
-#include <utils/Errors.h>
-
-#include "quat.h"
-#include "mat.h"
-#include "vec.h"
-
-namespace android {
-
-typedef mat<float, 3, 4> mat34_t;
-
-class Fusion {
- /*
- * the state vector is made of two sub-vector containing respectively:
- * - modified Rodrigues parameters
- * - the estimated gyro bias
- */
- quat_t x0;
- vec3_t x1;
-
- /*
- * the predicated covariance matrix is made of 4 3x3 sub-matrices and it is
- * semi-definite positive.
- *
- * P = | P00 P10 | = | P00 P10 |
- * | P01 P11 | | P10t P11 |
- *
- * Since P01 = transpose(P10), the code below never calculates or
- * stores P01.
- */
- mat<mat33_t, 2, 2> P;
-
- /*
- * the process noise covariance matrix
- */
- mat<mat33_t, 2, 2> GQGt;
-
-public:
- Fusion();
- void init();
- void handleGyro(const vec3_t& w, float dT);
- status_t handleAcc(const vec3_t& a);
- status_t handleMag(const vec3_t& m);
- vec4_t getAttitude() const;
- vec3_t getBias() const;
- mat33_t getRotationMatrix() const;
- bool hasEstimate() const;
-
-private:
- mat<mat33_t, 2, 2> Phi;
- vec3_t Ba, Bm;
- uint32_t mInitState;
- float mGyroRate;
- vec<vec3_t, 3> mData;
- size_t mCount[3];
- enum { ACC=0x1, MAG=0x2, GYRO=0x4 };
- bool checkInitComplete(int, const vec3_t& w, float d = 0);
- void initFusion(const vec4_t& q0, float dT);
- void checkState();
- void predict(const vec3_t& w, float dT);
- void update(const vec3_t& z, const vec3_t& Bi, float sigma);
- static mat34_t getF(const vec4_t& p);
-};
-
-}; // namespace android
-
-#endif // ANDROID_FUSION_H
diff --git a/services/sensorservice/GravitySensor.cpp b/services/sensorservice/GravitySensor.cpp
deleted file mode 100644
index c57715f..0000000
--- a/services/sensorservice/GravitySensor.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <utils/Errors.h>
-
-#include <hardware/sensors.h>
-
-#include "GravitySensor.h"
-#include "SensorDevice.h"
-#include "SensorFusion.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-GravitySensor::GravitySensor(sensor_t const* list, size_t count)
- : mSensorDevice(SensorDevice::getInstance()),
- mSensorFusion(SensorFusion::getInstance())
-{
- for (size_t i=0 ; i<count ; i++) {
- if (list[i].type == SENSOR_TYPE_ACCELEROMETER) {
- mAccelerometer = Sensor(list + i);
- break;
- }
- }
-}
-
-bool GravitySensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event)
-{
- const static double NS2S = 1.0 / 1000000000.0;
- if (event.type == SENSOR_TYPE_ACCELEROMETER) {
- vec3_t g;
- if (!mSensorFusion.hasEstimate())
- return false;
- const mat33_t R(mSensorFusion.getRotationMatrix());
- // FIXME: we need to estimate the length of gravity because
- // the accelerometer may have a small scaling error. This
- // translates to an offset in the linear-acceleration sensor.
- g = R[2] * GRAVITY_EARTH;
-
- *outEvent = event;
- outEvent->data[0] = g.x;
- outEvent->data[1] = g.y;
- outEvent->data[2] = g.z;
- outEvent->sensor = '_grv';
- outEvent->type = SENSOR_TYPE_GRAVITY;
- return true;
- }
- return false;
-}
-
-status_t GravitySensor::activate(void* ident, bool enabled) {
- return mSensorFusion.activate(this, enabled);
-}
-
-status_t GravitySensor::setDelay(void* ident, int handle, int64_t ns) {
- return mSensorFusion.setDelay(this, ns);
-}
-
-Sensor GravitySensor::getSensor() const {
- sensor_t hwSensor;
- hwSensor.name = "Gravity Sensor";
- hwSensor.vendor = "Google Inc.";
- hwSensor.version = 3;
- hwSensor.handle = '_grv';
- hwSensor.type = SENSOR_TYPE_GRAVITY;
- hwSensor.maxRange = GRAVITY_EARTH * 2;
- hwSensor.resolution = mAccelerometer.getResolution();
- hwSensor.power = mSensorFusion.getPowerUsage();
- hwSensor.minDelay = mSensorFusion.getMinDelay();
- Sensor sensor(&hwSensor);
- return sensor;
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/GravitySensor.h b/services/sensorservice/GravitySensor.h
deleted file mode 100644
index ac177c4..0000000
--- a/services/sensorservice/GravitySensor.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_GRAVITY_SENSOR_H
-#define ANDROID_GRAVITY_SENSOR_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <gui/Sensor.h>
-
-#include "SensorInterface.h"
-
-// ---------------------------------------------------------------------------
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorDevice;
-class SensorFusion;
-
-class GravitySensor : public SensorInterface {
- SensorDevice& mSensorDevice;
- SensorFusion& mSensorFusion;
- Sensor mAccelerometer;
-
-public:
- GravitySensor(sensor_t const* list, size_t count);
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return true; }
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_GRAVITY_SENSOR_H
diff --git a/services/sensorservice/LinearAccelerationSensor.cpp b/services/sensorservice/LinearAccelerationSensor.cpp
deleted file mode 100644
index f0054f2..0000000
--- a/services/sensorservice/LinearAccelerationSensor.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <utils/Errors.h>
-
-#include <hardware/sensors.h>
-
-#include "LinearAccelerationSensor.h"
-#include "SensorDevice.h"
-#include "SensorFusion.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-LinearAccelerationSensor::LinearAccelerationSensor(sensor_t const* list, size_t count)
- : mSensorDevice(SensorDevice::getInstance()),
- mGravitySensor(list, count)
-{
-}
-
-bool LinearAccelerationSensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event)
-{
- bool result = mGravitySensor.process(outEvent, event);
- if (result && event.type == SENSOR_TYPE_ACCELEROMETER) {
- outEvent->data[0] = event.acceleration.x - outEvent->data[0];
- outEvent->data[1] = event.acceleration.y - outEvent->data[1];
- outEvent->data[2] = event.acceleration.z - outEvent->data[2];
- outEvent->sensor = '_lin';
- outEvent->type = SENSOR_TYPE_LINEAR_ACCELERATION;
- return true;
- }
- return false;
-}
-
-status_t LinearAccelerationSensor::activate(void* ident, bool enabled) {
- return mGravitySensor.activate(this, enabled);
-}
-
-status_t LinearAccelerationSensor::setDelay(void* ident, int handle, int64_t ns) {
- return mGravitySensor.setDelay(this, handle, ns);
-}
-
-Sensor LinearAccelerationSensor::getSensor() const {
- Sensor gsensor(mGravitySensor.getSensor());
- sensor_t hwSensor;
- hwSensor.name = "Linear Acceleration Sensor";
- hwSensor.vendor = "Google Inc.";
- hwSensor.version = gsensor.getVersion();
- hwSensor.handle = '_lin';
- hwSensor.type = SENSOR_TYPE_LINEAR_ACCELERATION;
- hwSensor.maxRange = gsensor.getMaxValue();
- hwSensor.resolution = gsensor.getResolution();
- hwSensor.power = gsensor.getPowerUsage();
- hwSensor.minDelay = gsensor.getMinDelay();
- Sensor sensor(&hwSensor);
- return sensor;
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/LinearAccelerationSensor.h b/services/sensorservice/LinearAccelerationSensor.h
deleted file mode 100644
index 5deb24f..0000000
--- a/services/sensorservice/LinearAccelerationSensor.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_LINEAR_ACCELERATION_SENSOR_H
-#define ANDROID_LINEAR_ACCELERATION_SENSOR_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <gui/Sensor.h>
-
-#include "SensorInterface.h"
-#include "GravitySensor.h"
-
-// ---------------------------------------------------------------------------
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorDevice;
-class SensorFusion;
-
-class LinearAccelerationSensor : public SensorInterface {
- SensorDevice& mSensorDevice;
- GravitySensor mGravitySensor;
-
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
-public:
- LinearAccelerationSensor(sensor_t const* list, size_t count);
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return true; }
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_LINEAR_ACCELERATION_SENSOR_H
diff --git a/services/sensorservice/OrientationSensor.cpp b/services/sensorservice/OrientationSensor.cpp
deleted file mode 100644
index 037adaa..0000000
--- a/services/sensorservice/OrientationSensor.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <utils/Errors.h>
-
-#include <hardware/sensors.h>
-
-#include "OrientationSensor.h"
-#include "SensorDevice.h"
-#include "SensorFusion.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-OrientationSensor::OrientationSensor()
- : mSensorDevice(SensorDevice::getInstance()),
- mSensorFusion(SensorFusion::getInstance())
-{
-}
-
-bool OrientationSensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event)
-{
- if (event.type == SENSOR_TYPE_ACCELEROMETER) {
- if (mSensorFusion.hasEstimate()) {
- vec3_t g;
- const float rad2deg = 180 / M_PI;
- const mat33_t R(mSensorFusion.getRotationMatrix());
- g[0] = atan2f(-R[1][0], R[0][0]) * rad2deg;
- g[1] = atan2f(-R[2][1], R[2][2]) * rad2deg;
- g[2] = asinf ( R[2][0]) * rad2deg;
- if (g[0] < 0)
- g[0] += 360;
-
- *outEvent = event;
- outEvent->orientation.azimuth = g.x;
- outEvent->orientation.pitch = g.y;
- outEvent->orientation.roll = g.z;
- outEvent->orientation.status = SENSOR_STATUS_ACCURACY_HIGH;
- outEvent->sensor = '_ypr';
- outEvent->type = SENSOR_TYPE_ORIENTATION;
- return true;
- }
- }
- return false;
-}
-
-status_t OrientationSensor::activate(void* ident, bool enabled) {
- return mSensorFusion.activate(this, enabled);
-}
-
-status_t OrientationSensor::setDelay(void* ident, int handle, int64_t ns) {
- return mSensorFusion.setDelay(this, ns);
-}
-
-Sensor OrientationSensor::getSensor() const {
- sensor_t hwSensor;
- hwSensor.name = "Orientation Sensor";
- hwSensor.vendor = "Google Inc.";
- hwSensor.version = 1;
- hwSensor.handle = '_ypr';
- hwSensor.type = SENSOR_TYPE_ORIENTATION;
- hwSensor.maxRange = 360.0f;
- hwSensor.resolution = 1.0f/256.0f; // FIXME: real value here
- hwSensor.power = mSensorFusion.getPowerUsage();
- hwSensor.minDelay = mSensorFusion.getMinDelay();
- Sensor sensor(&hwSensor);
- return sensor;
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/OrientationSensor.h b/services/sensorservice/OrientationSensor.h
deleted file mode 100644
index 855949d..0000000
--- a/services/sensorservice/OrientationSensor.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_ORIENTATION_SENSOR_H
-#define ANDROID_ORIENTATION_SENSOR_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <gui/Sensor.h>
-
-#include "SensorInterface.h"
-
-// ---------------------------------------------------------------------------
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorDevice;
-class SensorFusion;
-
-class OrientationSensor : public SensorInterface {
- SensorDevice& mSensorDevice;
- SensorFusion& mSensorFusion;
-
-public:
- OrientationSensor();
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return true; }
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_ORIENTATION_SENSOR_H
diff --git a/services/sensorservice/RotationVectorSensor.cpp b/services/sensorservice/RotationVectorSensor.cpp
deleted file mode 100644
index 5ea9568..0000000
--- a/services/sensorservice/RotationVectorSensor.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <utils/Errors.h>
-
-#include <hardware/sensors.h>
-
-#include "RotationVectorSensor.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-RotationVectorSensor::RotationVectorSensor()
- : mSensorDevice(SensorDevice::getInstance()),
- mSensorFusion(SensorFusion::getInstance())
-{
-}
-
-bool RotationVectorSensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event)
-{
- if (event.type == SENSOR_TYPE_ACCELEROMETER) {
- if (mSensorFusion.hasEstimate()) {
- const vec4_t q(mSensorFusion.getAttitude());
- *outEvent = event;
- outEvent->data[0] = q.x;
- outEvent->data[1] = q.y;
- outEvent->data[2] = q.z;
- outEvent->data[3] = q.w;
- outEvent->sensor = '_rov';
- outEvent->type = SENSOR_TYPE_ROTATION_VECTOR;
- return true;
- }
- }
- return false;
-}
-
-status_t RotationVectorSensor::activate(void* ident, bool enabled) {
- return mSensorFusion.activate(this, enabled);
-}
-
-status_t RotationVectorSensor::setDelay(void* ident, int handle, int64_t ns) {
- return mSensorFusion.setDelay(this, ns);
-}
-
-Sensor RotationVectorSensor::getSensor() const {
- sensor_t hwSensor;
- hwSensor.name = "Rotation Vector Sensor";
- hwSensor.vendor = "Google Inc.";
- hwSensor.version = 3;
- hwSensor.handle = '_rov';
- hwSensor.type = SENSOR_TYPE_ROTATION_VECTOR;
- hwSensor.maxRange = 1;
- hwSensor.resolution = 1.0f / (1<<24);
- hwSensor.power = mSensorFusion.getPowerUsage();
- hwSensor.minDelay = mSensorFusion.getMinDelay();
- Sensor sensor(&hwSensor);
- return sensor;
-}
-
-// ---------------------------------------------------------------------------
-
-GyroDriftSensor::GyroDriftSensor()
- : mSensorDevice(SensorDevice::getInstance()),
- mSensorFusion(SensorFusion::getInstance())
-{
-}
-
-bool GyroDriftSensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event)
-{
- if (event.type == SENSOR_TYPE_ACCELEROMETER) {
- if (mSensorFusion.hasEstimate()) {
- const vec3_t b(mSensorFusion.getGyroBias());
- *outEvent = event;
- outEvent->data[0] = b.x;
- outEvent->data[1] = b.y;
- outEvent->data[2] = b.z;
- outEvent->sensor = '_gbs';
- outEvent->type = SENSOR_TYPE_ACCELEROMETER;
- return true;
- }
- }
- return false;
-}
-
-status_t GyroDriftSensor::activate(void* ident, bool enabled) {
- return mSensorFusion.activate(this, enabled);
-}
-
-status_t GyroDriftSensor::setDelay(void* ident, int handle, int64_t ns) {
- return mSensorFusion.setDelay(this, ns);
-}
-
-Sensor GyroDriftSensor::getSensor() const {
- sensor_t hwSensor;
- hwSensor.name = "Gyroscope Bias (debug)";
- hwSensor.vendor = "Google Inc.";
- hwSensor.version = 1;
- hwSensor.handle = '_gbs';
- hwSensor.type = SENSOR_TYPE_ACCELEROMETER;
- hwSensor.maxRange = 1;
- hwSensor.resolution = 1.0f / (1<<24);
- hwSensor.power = mSensorFusion.getPowerUsage();
- hwSensor.minDelay = mSensorFusion.getMinDelay();
- Sensor sensor(&hwSensor);
- return sensor;
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/RotationVectorSensor.h b/services/sensorservice/RotationVectorSensor.h
deleted file mode 100644
index bb97fe1..0000000
--- a/services/sensorservice/RotationVectorSensor.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_ROTATION_VECTOR_SENSOR_H
-#define ANDROID_ROTATION_VECTOR_SENSOR_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <gui/Sensor.h>
-
-#include "SensorDevice.h"
-#include "SensorInterface.h"
-
-#include "Fusion.h"
-#include "SensorFusion.h"
-
-// ---------------------------------------------------------------------------
-namespace android {
-// ---------------------------------------------------------------------------
-
-class RotationVectorSensor : public SensorInterface {
- SensorDevice& mSensorDevice;
- SensorFusion& mSensorFusion;
-
-public:
- RotationVectorSensor();
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return true; }
-};
-
-class GyroDriftSensor : public SensorInterface {
- SensorDevice& mSensorDevice;
- SensorFusion& mSensorFusion;
-
-public:
- GyroDriftSensor();
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return true; }
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_ROTATION_VECTOR_SENSOR_H
diff --git a/services/sensorservice/SensorDevice.cpp b/services/sensorservice/SensorDevice.cpp
deleted file mode 100644
index 2244a86..0000000
--- a/services/sensorservice/SensorDevice.cpp
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <utils/Atomic.h>
-#include <utils/Errors.h>
-#include <utils/Singleton.h>
-
-#include <binder/BinderService.h>
-#include <binder/Parcel.h>
-#include <binder/IServiceManager.h>
-
-#include <hardware/sensors.h>
-
-#include "SensorDevice.h"
-#include "SensorService.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-class BatteryService : public Singleton<BatteryService> {
- static const int TRANSACTION_noteStartSensor = IBinder::FIRST_CALL_TRANSACTION + 3;
- static const int TRANSACTION_noteStopSensor = IBinder::FIRST_CALL_TRANSACTION + 4;
- static const String16 DESCRIPTOR;
-
- friend class Singleton<BatteryService>;
- sp<IBinder> mBatteryStatService;
-
- BatteryService() {
- const sp<IServiceManager> sm(defaultServiceManager());
- if (sm != NULL) {
- const String16 name("batteryinfo");
- mBatteryStatService = sm->getService(name);
- }
- }
-
- status_t noteStartSensor(int uid, int handle) {
- Parcel data, reply;
- data.writeInterfaceToken(DESCRIPTOR);
- data.writeInt32(uid);
- data.writeInt32(handle);
- status_t err = mBatteryStatService->transact(
- TRANSACTION_noteStartSensor, data, &reply, 0);
- err = reply.readExceptionCode();
- return err;
- }
-
- status_t noteStopSensor(int uid, int handle) {
- Parcel data, reply;
- data.writeInterfaceToken(DESCRIPTOR);
- data.writeInt32(uid);
- data.writeInt32(handle);
- status_t err = mBatteryStatService->transact(
- TRANSACTION_noteStopSensor, data, &reply, 0);
- err = reply.readExceptionCode();
- return err;
- }
-
-public:
- void enableSensor(int handle) {
- if (mBatteryStatService != 0) {
- int uid = IPCThreadState::self()->getCallingUid();
- int64_t identity = IPCThreadState::self()->clearCallingIdentity();
- noteStartSensor(uid, handle);
- IPCThreadState::self()->restoreCallingIdentity(identity);
- }
- }
- void disableSensor(int handle) {
- if (mBatteryStatService != 0) {
- int uid = IPCThreadState::self()->getCallingUid();
- int64_t identity = IPCThreadState::self()->clearCallingIdentity();
- noteStopSensor(uid, handle);
- IPCThreadState::self()->restoreCallingIdentity(identity);
- }
- }
-};
-
-const String16 BatteryService::DESCRIPTOR("com.android.internal.app.IBatteryStats");
-
-ANDROID_SINGLETON_STATIC_INSTANCE(BatteryService)
-
-// ---------------------------------------------------------------------------
-
-ANDROID_SINGLETON_STATIC_INSTANCE(SensorDevice)
-
-SensorDevice::SensorDevice()
- : mSensorDevice(0),
- mSensorModule(0)
-{
- status_t err = hw_get_module(SENSORS_HARDWARE_MODULE_ID,
- (hw_module_t const**)&mSensorModule);
-
- ALOGE_IF(err, "couldn't load %s module (%s)",
- SENSORS_HARDWARE_MODULE_ID, strerror(-err));
-
- if (mSensorModule) {
- err = sensors_open(&mSensorModule->common, &mSensorDevice);
-
- ALOGE_IF(err, "couldn't open device for module %s (%s)",
- SENSORS_HARDWARE_MODULE_ID, strerror(-err));
-
- if (mSensorDevice) {
- sensor_t const* list;
- ssize_t count = mSensorModule->get_sensors_list(mSensorModule, &list);
- mActivationCount.setCapacity(count);
- Info model;
- for (size_t i=0 ; i<size_t(count) ; i++) {
- mActivationCount.add(list[i].handle, model);
- mSensorDevice->activate(mSensorDevice, list[i].handle, 0);
- }
- }
- }
-}
-
-void SensorDevice::dump(String8& result, char* buffer, size_t SIZE)
-{
- if (!mSensorModule) return;
- sensor_t const* list;
- ssize_t count = mSensorModule->get_sensors_list(mSensorModule, &list);
-
- snprintf(buffer, SIZE, "%d h/w sensors:\n", int(count));
- result.append(buffer);
-
- Mutex::Autolock _l(mLock);
- for (size_t i=0 ; i<size_t(count) ; i++) {
- const Info& info = mActivationCount.valueFor(list[i].handle);
- snprintf(buffer, SIZE, "handle=0x%08x, active-count=%d, rates(ms)={ ",
- list[i].handle,
- info.rates.size());
- result.append(buffer);
- for (size_t j=0 ; j<info.rates.size() ; j++) {
- snprintf(buffer, SIZE, "%4.1f%s",
- info.rates.valueAt(j) / 1e6f,
- j<info.rates.size()-1 ? ", " : "");
- result.append(buffer);
- }
- snprintf(buffer, SIZE, " }, selected=%4.1f ms\n", info.delay / 1e6f);
- result.append(buffer);
- }
-}
-
-ssize_t SensorDevice::getSensorList(sensor_t const** list) {
- if (!mSensorModule) return NO_INIT;
- ssize_t count = mSensorModule->get_sensors_list(mSensorModule, list);
- return count;
-}
-
-status_t SensorDevice::initCheck() const {
- return mSensorDevice && mSensorModule ? NO_ERROR : NO_INIT;
-}
-
-ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
- if (!mSensorDevice) return NO_INIT;
- ssize_t c;
- do {
- c = mSensorDevice->poll(mSensorDevice, buffer, count);
- } while (c == -EINTR);
- return c;
-}
-
-status_t SensorDevice::activate(void* ident, int handle, int enabled)
-{
- if (!mSensorDevice) return NO_INIT;
- status_t err(NO_ERROR);
- bool actuateHardware = false;
-
- Info& info( mActivationCount.editValueFor(handle) );
-
-
- ALOGD_IF(DEBUG_CONNECTIONS,
- "SensorDevice::activate: ident=%p, handle=0x%08x, enabled=%d, count=%d",
- ident, handle, enabled, info.rates.size());
-
- if (enabled) {
- Mutex::Autolock _l(mLock);
- ALOGD_IF(DEBUG_CONNECTIONS, "... index=%ld",
- info.rates.indexOfKey(ident));
-
- if (info.rates.indexOfKey(ident) < 0) {
- info.rates.add(ident, DEFAULT_EVENTS_PERIOD);
- if (info.rates.size() == 1) {
- actuateHardware = true;
- }
- } else {
- // sensor was already activated for this ident
- }
- } else {
- Mutex::Autolock _l(mLock);
- ALOGD_IF(DEBUG_CONNECTIONS, "... index=%ld",
- info.rates.indexOfKey(ident));
-
- ssize_t idx = info.rates.removeItem(ident);
- if (idx >= 0) {
- if (info.rates.size() == 0) {
- actuateHardware = true;
- }
- } else {
- // sensor wasn't enabled for this ident
- }
- }
-
- if (actuateHardware) {
- ALOGD_IF(DEBUG_CONNECTIONS, "\t>>> actuating h/w");
-
- err = mSensorDevice->activate(mSensorDevice, handle, enabled);
- if (enabled) {
- ALOGE_IF(err, "Error activating sensor %d (%s)", handle, strerror(-err));
- if (err == 0) {
- BatteryService::getInstance().enableSensor(handle);
- }
- } else {
- if (err == 0) {
- BatteryService::getInstance().disableSensor(handle);
- }
- }
- }
-
- { // scope for the lock
- Mutex::Autolock _l(mLock);
- nsecs_t ns = info.selectDelay();
- mSensorDevice->setDelay(mSensorDevice, handle, ns);
- }
-
- return err;
-}
-
-status_t SensorDevice::setDelay(void* ident, int handle, int64_t ns)
-{
- if (!mSensorDevice) return NO_INIT;
- Mutex::Autolock _l(mLock);
- Info& info( mActivationCount.editValueFor(handle) );
- status_t err = info.setDelayForIdent(ident, ns);
- if (err < 0) return err;
- ns = info.selectDelay();
- return mSensorDevice->setDelay(mSensorDevice, handle, ns);
-}
-
-// ---------------------------------------------------------------------------
-
-status_t SensorDevice::Info::setDelayForIdent(void* ident, int64_t ns)
-{
- ssize_t index = rates.indexOfKey(ident);
- if (index < 0) {
- ALOGE("Info::setDelayForIdent(ident=%p, ns=%lld) failed (%s)",
- ident, ns, strerror(-index));
- return BAD_INDEX;
- }
- rates.editValueAt(index) = ns;
- return NO_ERROR;
-}
-
-nsecs_t SensorDevice::Info::selectDelay()
-{
- nsecs_t ns = rates.valueAt(0);
- for (size_t i=1 ; i<rates.size() ; i++) {
- nsecs_t cur = rates.valueAt(i);
- if (cur < ns) {
- ns = cur;
- }
- }
- delay = ns;
- return ns;
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/SensorDevice.h b/services/sensorservice/SensorDevice.h
deleted file mode 100644
index 728b6cb..0000000
--- a/services/sensorservice/SensorDevice.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_SENSOR_DEVICE_H
-#define ANDROID_SENSOR_DEVICE_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <utils/KeyedVector.h>
-#include <utils/Singleton.h>
-#include <utils/String8.h>
-
-#include <gui/Sensor.h>
-
-// ---------------------------------------------------------------------------
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-static const nsecs_t DEFAULT_EVENTS_PERIOD = 200000000; // 5 Hz
-
-class SensorDevice : public Singleton<SensorDevice> {
- friend class Singleton<SensorDevice>;
- struct sensors_poll_device_t* mSensorDevice;
- struct sensors_module_t* mSensorModule;
- mutable Mutex mLock; // protect mActivationCount[].rates
- // fixed-size array after construction
- struct Info {
- Info() : delay(0) { }
- KeyedVector<void*, nsecs_t> rates;
- nsecs_t delay;
- status_t setDelayForIdent(void* ident, int64_t ns);
- nsecs_t selectDelay();
- };
- DefaultKeyedVector<int, Info> mActivationCount;
-
- SensorDevice();
-public:
- ssize_t getSensorList(sensor_t const** list);
- status_t initCheck() const;
- ssize_t poll(sensors_event_t* buffer, size_t count);
- status_t activate(void* ident, int handle, int enabled);
- status_t setDelay(void* ident, int handle, int64_t ns);
- void dump(String8& result, char* buffer, size_t SIZE);
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_SENSOR_DEVICE_H
diff --git a/services/sensorservice/SensorFusion.cpp b/services/sensorservice/SensorFusion.cpp
deleted file mode 100644
index d23906d..0000000
--- a/services/sensorservice/SensorFusion.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "SensorDevice.h"
-#include "SensorFusion.h"
-#include "SensorService.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-ANDROID_SINGLETON_STATIC_INSTANCE(SensorFusion)
-
-SensorFusion::SensorFusion()
- : mSensorDevice(SensorDevice::getInstance()),
- mEnabled(false), mGyroTime(0)
-{
- sensor_t const* list;
- ssize_t count = mSensorDevice.getSensorList(&list);
- if (count > 0) {
- for (size_t i=0 ; i<size_t(count) ; i++) {
- if (list[i].type == SENSOR_TYPE_ACCELEROMETER) {
- mAcc = Sensor(list + i);
- }
- if (list[i].type == SENSOR_TYPE_MAGNETIC_FIELD) {
- mMag = Sensor(list + i);
- }
- if (list[i].type == SENSOR_TYPE_GYROSCOPE) {
- mGyro = Sensor(list + i);
- // 200 Hz for gyro events is a good compromise between precision
- // and power/cpu usage.
- mGyroRate = 200;
- mTargetDelayNs = 1000000000LL/mGyroRate;
- }
- }
- mFusion.init();
- }
-}
-
-void SensorFusion::process(const sensors_event_t& event) {
- if (event.type == SENSOR_TYPE_GYROSCOPE) {
- if (mGyroTime != 0) {
- const float dT = (event.timestamp - mGyroTime) / 1000000000.0f;
- const float freq = 1 / dT;
- if (freq >= 100 && freq<1000) { // filter values obviously wrong
- const float alpha = 1 / (1 + dT); // 1s time-constant
- mGyroRate = freq + (mGyroRate - freq)*alpha;
- }
- }
- mGyroTime = event.timestamp;
- mFusion.handleGyro(vec3_t(event.data), 1.0f/mGyroRate);
- } else if (event.type == SENSOR_TYPE_MAGNETIC_FIELD) {
- const vec3_t mag(event.data);
- mFusion.handleMag(mag);
- } else if (event.type == SENSOR_TYPE_ACCELEROMETER) {
- const vec3_t acc(event.data);
- mFusion.handleAcc(acc);
- mAttitude = mFusion.getAttitude();
- }
-}
-
-template <typename T> inline T min(T a, T b) { return a<b ? a : b; }
-template <typename T> inline T max(T a, T b) { return a>b ? a : b; }
-
-status_t SensorFusion::activate(void* ident, bool enabled) {
-
- ALOGD_IF(DEBUG_CONNECTIONS,
- "SensorFusion::activate(ident=%p, enabled=%d)",
- ident, enabled);
-
- const ssize_t idx = mClients.indexOf(ident);
- if (enabled) {
- if (idx < 0) {
- mClients.add(ident);
- }
- } else {
- if (idx >= 0) {
- mClients.removeItemsAt(idx);
- }
- }
-
- mSensorDevice.activate(ident, mAcc.getHandle(), enabled);
- mSensorDevice.activate(ident, mMag.getHandle(), enabled);
- mSensorDevice.activate(ident, mGyro.getHandle(), enabled);
-
- const bool newState = mClients.size() != 0;
- if (newState != mEnabled) {
- mEnabled = newState;
- if (newState) {
- mFusion.init();
- mGyroTime = 0;
- }
- }
- return NO_ERROR;
-}
-
-status_t SensorFusion::setDelay(void* ident, int64_t ns) {
- mSensorDevice.setDelay(ident, mAcc.getHandle(), ns);
- mSensorDevice.setDelay(ident, mMag.getHandle(), ms2ns(20));
- mSensorDevice.setDelay(ident, mGyro.getHandle(), mTargetDelayNs);
- return NO_ERROR;
-}
-
-
-float SensorFusion::getPowerUsage() const {
- float power = mAcc.getPowerUsage() +
- mMag.getPowerUsage() +
- mGyro.getPowerUsage();
- return power;
-}
-
-int32_t SensorFusion::getMinDelay() const {
- return mAcc.getMinDelay();
-}
-
-void SensorFusion::dump(String8& result, char* buffer, size_t SIZE) {
- const Fusion& fusion(mFusion);
- snprintf(buffer, SIZE, "9-axis fusion %s (%d clients), gyro-rate=%7.2fHz, "
- "q=< %g, %g, %g, %g > (%g), "
- "b=< %g, %g, %g >\n",
- mEnabled ? "enabled" : "disabled",
- mClients.size(),
- mGyroRate,
- fusion.getAttitude().x,
- fusion.getAttitude().y,
- fusion.getAttitude().z,
- fusion.getAttitude().w,
- length(fusion.getAttitude()),
- fusion.getBias().x,
- fusion.getBias().y,
- fusion.getBias().z);
- result.append(buffer);
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
diff --git a/services/sensorservice/SensorFusion.h b/services/sensorservice/SensorFusion.h
deleted file mode 100644
index 4c99bcb..0000000
--- a/services/sensorservice/SensorFusion.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_SENSOR_FUSION_H
-#define ANDROID_SENSOR_FUSION_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <utils/SortedVector.h>
-#include <utils/Singleton.h>
-#include <utils/String8.h>
-
-#include <gui/Sensor.h>
-
-#include "Fusion.h"
-
-// ---------------------------------------------------------------------------
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorDevice;
-
-class SensorFusion : public Singleton<SensorFusion> {
- friend class Singleton<SensorFusion>;
-
- SensorDevice& mSensorDevice;
- Sensor mAcc;
- Sensor mMag;
- Sensor mGyro;
- Fusion mFusion;
- bool mEnabled;
- float mGyroRate;
- nsecs_t mTargetDelayNs;
- nsecs_t mGyroTime;
- vec4_t mAttitude;
- SortedVector<void*> mClients;
-
- SensorFusion();
-
-public:
- void process(const sensors_event_t& event);
-
- bool isEnabled() const { return mEnabled; }
- bool hasEstimate() const { return mFusion.hasEstimate(); }
- mat33_t getRotationMatrix() const { return mFusion.getRotationMatrix(); }
- vec4_t getAttitude() const { return mAttitude; }
- vec3_t getGyroBias() const { return mFusion.getBias(); }
- float getEstimatedRate() const { return mGyroRate; }
-
- status_t activate(void* ident, bool enabled);
- status_t setDelay(void* ident, int64_t ns);
-
- float getPowerUsage() const;
- int32_t getMinDelay() const;
-
- void dump(String8& result, char* buffer, size_t SIZE);
-};
-
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_SENSOR_FUSION_H
diff --git a/services/sensorservice/SensorInterface.cpp b/services/sensorservice/SensorInterface.cpp
deleted file mode 100644
index 468aa61..0000000
--- a/services/sensorservice/SensorInterface.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <cutils/log.h>
-
-#include "SensorInterface.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-SensorInterface::~SensorInterface()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-HardwareSensor::HardwareSensor(const sensor_t& sensor)
- : mSensorDevice(SensorDevice::getInstance()),
- mSensor(&sensor)
-{
- ALOGI("%s", sensor.name);
-}
-
-HardwareSensor::~HardwareSensor() {
-}
-
-bool HardwareSensor::process(sensors_event_t* outEvent,
- const sensors_event_t& event) {
- *outEvent = event;
- return true;
-}
-
-status_t HardwareSensor::activate(void* ident, bool enabled) {
- return mSensorDevice.activate(ident, mSensor.getHandle(), enabled);
-}
-
-status_t HardwareSensor::setDelay(void* ident, int handle, int64_t ns) {
- return mSensorDevice.setDelay(ident, handle, ns);
-}
-
-Sensor HardwareSensor::getSensor() const {
- return mSensor;
-}
-
-
-// ---------------------------------------------------------------------------
-}; // namespace android
diff --git a/services/sensorservice/SensorInterface.h b/services/sensorservice/SensorInterface.h
deleted file mode 100644
index fb357d7..0000000
--- a/services/sensorservice/SensorInterface.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_SENSOR_INTERFACE_H
-#define ANDROID_SENSOR_INTERFACE_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <gui/Sensor.h>
-
-#include "SensorDevice.h"
-
-// ---------------------------------------------------------------------------
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorInterface {
-public:
- virtual ~SensorInterface();
-
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event) = 0;
-
- virtual status_t activate(void* ident, bool enabled) = 0;
- virtual status_t setDelay(void* ident, int handle, int64_t ns) = 0;
- virtual Sensor getSensor() const = 0;
- virtual bool isVirtual() const = 0;
-};
-
-// ---------------------------------------------------------------------------
-
-class HardwareSensor : public SensorInterface
-{
- SensorDevice& mSensorDevice;
- Sensor mSensor;
-
-public:
- HardwareSensor(const sensor_t& sensor);
-
- virtual ~HardwareSensor();
-
- virtual bool process(sensors_event_t* outEvent,
- const sensors_event_t& event);
-
- virtual status_t activate(void* ident, bool enabled);
- virtual status_t setDelay(void* ident, int handle, int64_t ns);
- virtual Sensor getSensor() const;
- virtual bool isVirtual() const { return false; }
-};
-
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_SENSOR_INTERFACE_H
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
deleted file mode 100644
index 9e5e84b..0000000
--- a/services/sensorservice/SensorService.cpp
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <math.h>
-#include <sys/types.h>
-
-#include <cutils/properties.h>
-
-#include <utils/SortedVector.h>
-#include <utils/KeyedVector.h>
-#include <utils/threads.h>
-#include <utils/Atomic.h>
-#include <utils/Errors.h>
-#include <utils/RefBase.h>
-#include <utils/Singleton.h>
-#include <utils/String16.h>
-
-#include <binder/BinderService.h>
-#include <binder/IServiceManager.h>
-#include <binder/PermissionCache.h>
-
-#include <gui/ISensorServer.h>
-#include <gui/ISensorEventConnection.h>
-#include <gui/SensorEventQueue.h>
-
-#include <hardware/sensors.h>
-
-#include "CorrectedGyroSensor.h"
-#include "GravitySensor.h"
-#include "LinearAccelerationSensor.h"
-#include "OrientationSensor.h"
-#include "RotationVectorSensor.h"
-#include "SensorFusion.h"
-#include "SensorService.h"
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-/*
- * Notes:
- *
- * - what about a gyro-corrected magnetic-field sensor?
- * - run mag sensor from time to time to force calibration
- * - gravity sensor length is wrong (=> drift in linear-acc sensor)
- *
- */
-
-SensorService::SensorService()
- : mInitCheck(NO_INIT)
-{
-}
-
-void SensorService::onFirstRef()
-{
- ALOGD("nuSensorService starting...");
-
- SensorDevice& dev(SensorDevice::getInstance());
-
- if (dev.initCheck() == NO_ERROR) {
- sensor_t const* list;
- ssize_t count = dev.getSensorList(&list);
- if (count > 0) {
- ssize_t orientationIndex = -1;
- bool hasGyro = false;
- uint32_t virtualSensorsNeeds =
- (1<<SENSOR_TYPE_GRAVITY) |
- (1<<SENSOR_TYPE_LINEAR_ACCELERATION) |
- (1<<SENSOR_TYPE_ROTATION_VECTOR);
-
- mLastEventSeen.setCapacity(count);
- for (ssize_t i=0 ; i<count ; i++) {
- registerSensor( new HardwareSensor(list[i]) );
- switch (list[i].type) {
- case SENSOR_TYPE_ORIENTATION:
- orientationIndex = i;
- break;
- case SENSOR_TYPE_GYROSCOPE:
- hasGyro = true;
- break;
- case SENSOR_TYPE_GRAVITY:
- case SENSOR_TYPE_LINEAR_ACCELERATION:
- case SENSOR_TYPE_ROTATION_VECTOR:
- virtualSensorsNeeds &= ~(1<<list[i].type);
- break;
- }
- }
-
- // it's safe to instantiate the SensorFusion object here
- // (it wants to be instantiated after h/w sensors have been
- // registered)
- const SensorFusion& fusion(SensorFusion::getInstance());
-
- if (hasGyro) {
- // Always instantiate Android's virtual sensors. Since they are
- // instantiated behind sensors from the HAL, they won't
- // interfere with applications, unless they looks specifically
- // for them (by name).
-
- registerVirtualSensor( new RotationVectorSensor() );
- registerVirtualSensor( new GravitySensor(list, count) );
- registerVirtualSensor( new LinearAccelerationSensor(list, count) );
-
- // these are optional
- registerVirtualSensor( new OrientationSensor() );
- registerVirtualSensor( new CorrectedGyroSensor(list, count) );
-
- // virtual debugging sensors...
- char value[PROPERTY_VALUE_MAX];
- property_get("debug.sensors", value, "0");
- if (atoi(value)) {
- registerVirtualSensor( new GyroDriftSensor() );
- }
- }
-
- // build the sensor list returned to users
- mUserSensorList = mSensorList;
- if (hasGyro &&
- (virtualSensorsNeeds & (1<<SENSOR_TYPE_ROTATION_VECTOR))) {
- // if we have the fancy sensor fusion, and it's not provided by the
- // HAL, use our own (fused) orientation sensor by removing the
- // HAL supplied one form the user list.
- if (orientationIndex >= 0) {
- mUserSensorList.removeItemsAt(orientationIndex);
- }
- }
-
- run("SensorService", PRIORITY_URGENT_DISPLAY);
- mInitCheck = NO_ERROR;
- }
- }
-}
-
-void SensorService::registerSensor(SensorInterface* s)
-{
- sensors_event_t event;
- memset(&event, 0, sizeof(event));
-
- const Sensor sensor(s->getSensor());
- // add to the sensor list (returned to clients)
- mSensorList.add(sensor);
- // add to our handle->SensorInterface mapping
- mSensorMap.add(sensor.getHandle(), s);
- // create an entry in the mLastEventSeen array
- mLastEventSeen.add(sensor.getHandle(), event);
-}
-
-void SensorService::registerVirtualSensor(SensorInterface* s)
-{
- registerSensor(s);
- mVirtualSensorList.add( s );
-}
-
-SensorService::~SensorService()
-{
- for (size_t i=0 ; i<mSensorMap.size() ; i++)
- delete mSensorMap.valueAt(i);
-}
-
-static const String16 sDump("android.permission.DUMP");
-
-status_t SensorService::dump(int fd, const Vector<String16>& args)
-{
- const size_t SIZE = 1024;
- char buffer[SIZE];
- String8 result;
- if (!PermissionCache::checkCallingPermission(sDump)) {
- snprintf(buffer, SIZE, "Permission Denial: "
- "can't dump SurfaceFlinger from pid=%d, uid=%d\n",
- IPCThreadState::self()->getCallingPid(),
- IPCThreadState::self()->getCallingUid());
- result.append(buffer);
- } else {
- Mutex::Autolock _l(mLock);
- snprintf(buffer, SIZE, "Sensor List:\n");
- result.append(buffer);
- for (size_t i=0 ; i<mSensorList.size() ; i++) {
- const Sensor& s(mSensorList[i]);
- const sensors_event_t& e(mLastEventSeen.valueFor(s.getHandle()));
- snprintf(buffer, SIZE,
- "%-48s| %-32s | 0x%08x | maxRate=%7.2fHz | "
- "last=<%5.1f,%5.1f,%5.1f>\n",
- s.getName().string(),
- s.getVendor().string(),
- s.getHandle(),
- s.getMinDelay() ? (1000000.0f / s.getMinDelay()) : 0.0f,
- e.data[0], e.data[1], e.data[2]);
- result.append(buffer);
- }
- SensorFusion::getInstance().dump(result, buffer, SIZE);
- SensorDevice::getInstance().dump(result, buffer, SIZE);
-
- snprintf(buffer, SIZE, "%d active connections\n",
- mActiveConnections.size());
- result.append(buffer);
- snprintf(buffer, SIZE, "Active sensors:\n");
- result.append(buffer);
- for (size_t i=0 ; i<mActiveSensors.size() ; i++) {
- int handle = mActiveSensors.keyAt(i);
- snprintf(buffer, SIZE, "%s (handle=0x%08x, connections=%d)\n",
- getSensorName(handle).string(),
- handle,
- mActiveSensors.valueAt(i)->getNumConnections());
- result.append(buffer);
- }
- }
- write(fd, result.string(), result.size());
- return NO_ERROR;
-}
-
-bool SensorService::threadLoop()
-{
- ALOGD("nuSensorService thread starting...");
-
- const size_t numEventMax = 16;
- const size_t minBufferSize = numEventMax + numEventMax * mVirtualSensorList.size();
- sensors_event_t buffer[minBufferSize];
- sensors_event_t scratch[minBufferSize];
- SensorDevice& device(SensorDevice::getInstance());
- const size_t vcount = mVirtualSensorList.size();
-
- ssize_t count;
- do {
- count = device.poll(buffer, numEventMax);
- if (count<0) {
- ALOGE("sensor poll failed (%s)", strerror(-count));
- break;
- }
-
- recordLastValue(buffer, count);
-
- // handle virtual sensors
- if (count && vcount) {
- sensors_event_t const * const event = buffer;
- const DefaultKeyedVector<int, SensorInterface*> virtualSensors(
- getActiveVirtualSensors());
- const size_t activeVirtualSensorCount = virtualSensors.size();
- if (activeVirtualSensorCount) {
- size_t k = 0;
- SensorFusion& fusion(SensorFusion::getInstance());
- if (fusion.isEnabled()) {
- for (size_t i=0 ; i<size_t(count) ; i++) {
- fusion.process(event[i]);
- }
- }
- for (size_t i=0 ; i<size_t(count) && k<minBufferSize ; i++) {
- for (size_t j=0 ; j<activeVirtualSensorCount ; j++) {
- if (count + k >= minBufferSize) {
- ALOGE("buffer too small to hold all events: "
- "count=%u, k=%u, size=%u",
- count, k, minBufferSize);
- break;
- }
- sensors_event_t out;
- SensorInterface* si = virtualSensors.valueAt(j);
- if (si->process(&out, event[i])) {
- buffer[count + k] = out;
- k++;
- }
- }
- }
- if (k) {
- // record the last synthesized values
- recordLastValue(&buffer[count], k);
- count += k;
- // sort the buffer by time-stamps
- sortEventBuffer(buffer, count);
- }
- }
- }
-
- // send our events to clients...
- const SortedVector< wp<SensorEventConnection> > activeConnections(
- getActiveConnections());
- size_t numConnections = activeConnections.size();
- for (size_t i=0 ; i<numConnections ; i++) {
- sp<SensorEventConnection> connection(
- activeConnections[i].promote());
- if (connection != 0) {
- connection->sendEvents(buffer, count, scratch);
- }
- }
- } while (count >= 0 || Thread::exitPending());
-
- ALOGW("Exiting SensorService::threadLoop => aborting...");
- abort();
- return false;
-}
-
-void SensorService::recordLastValue(
- sensors_event_t const * buffer, size_t count)
-{
- Mutex::Autolock _l(mLock);
-
- // record the last event for each sensor
- int32_t prev = buffer[0].sensor;
- for (size_t i=1 ; i<count ; i++) {
- // record the last event of each sensor type in this buffer
- int32_t curr = buffer[i].sensor;
- if (curr != prev) {
- mLastEventSeen.editValueFor(prev) = buffer[i-1];
- prev = curr;
- }
- }
- mLastEventSeen.editValueFor(prev) = buffer[count-1];
-}
-
-void SensorService::sortEventBuffer(sensors_event_t* buffer, size_t count)
-{
- struct compar {
- static int cmp(void const* lhs, void const* rhs) {
- sensors_event_t const* l = static_cast<sensors_event_t const*>(lhs);
- sensors_event_t const* r = static_cast<sensors_event_t const*>(rhs);
- return l->timestamp - r->timestamp;
- }
- };
- qsort(buffer, count, sizeof(sensors_event_t), compar::cmp);
-}
-
-SortedVector< wp<SensorService::SensorEventConnection> >
-SensorService::getActiveConnections() const
-{
- Mutex::Autolock _l(mLock);
- return mActiveConnections;
-}
-
-DefaultKeyedVector<int, SensorInterface*>
-SensorService::getActiveVirtualSensors() const
-{
- Mutex::Autolock _l(mLock);
- return mActiveVirtualSensors;
-}
-
-String8 SensorService::getSensorName(int handle) const {
- size_t count = mUserSensorList.size();
- for (size_t i=0 ; i<count ; i++) {
- const Sensor& sensor(mUserSensorList[i]);
- if (sensor.getHandle() == handle) {
- return sensor.getName();
- }
- }
- String8 result("unknown");
- return result;
-}
-
-Vector<Sensor> SensorService::getSensorList()
-{
- return mUserSensorList;
-}
-
-sp<ISensorEventConnection> SensorService::createSensorEventConnection()
-{
- sp<SensorEventConnection> result(new SensorEventConnection(this));
- return result;
-}
-
-void SensorService::cleanupConnection(SensorEventConnection* c)
-{
- Mutex::Autolock _l(mLock);
- const wp<SensorEventConnection> connection(c);
- size_t size = mActiveSensors.size();
- ALOGD_IF(DEBUG_CONNECTIONS, "%d active sensors", size);
- for (size_t i=0 ; i<size ; ) {
- int handle = mActiveSensors.keyAt(i);
- if (c->hasSensor(handle)) {
- ALOGD_IF(DEBUG_CONNECTIONS, "%i: disabling handle=0x%08x", i, handle);
- SensorInterface* sensor = mSensorMap.valueFor( handle );
- ALOGE_IF(!sensor, "mSensorMap[handle=0x%08x] is null!", handle);
- if (sensor) {
- sensor->activate(c, false);
- }
- }
- SensorRecord* rec = mActiveSensors.valueAt(i);
- ALOGE_IF(!rec, "mActiveSensors[%d] is null (handle=0x%08x)!", i, handle);
- ALOGD_IF(DEBUG_CONNECTIONS,
- "removing connection %p for sensor[%d].handle=0x%08x",
- c, i, handle);
-
- if (rec && rec->removeConnection(connection)) {
- ALOGD_IF(DEBUG_CONNECTIONS, "... and it was the last connection");
- mActiveSensors.removeItemsAt(i, 1);
- mActiveVirtualSensors.removeItem(handle);
- delete rec;
- size--;
- } else {
- i++;
- }
- }
- mActiveConnections.remove(connection);
-}
-
-status_t SensorService::enable(const sp<SensorEventConnection>& connection,
- int handle)
-{
- if (mInitCheck != NO_ERROR)
- return mInitCheck;
-
- Mutex::Autolock _l(mLock);
- SensorInterface* sensor = mSensorMap.valueFor(handle);
- status_t err = sensor ? sensor->activate(connection.get(), true) : status_t(BAD_VALUE);
- if (err == NO_ERROR) {
- SensorRecord* rec = mActiveSensors.valueFor(handle);
- if (rec == 0) {
- rec = new SensorRecord(connection);
- mActiveSensors.add(handle, rec);
- if (sensor->isVirtual()) {
- mActiveVirtualSensors.add(handle, sensor);
- }
- } else {
- if (rec->addConnection(connection)) {
- // this sensor is already activated, but we are adding a
- // connection that uses it. Immediately send down the last
- // known value of the requested sensor if it's not a
- // "continuous" sensor.
- if (sensor->getSensor().getMinDelay() == 0) {
- sensors_event_t scratch;
- sensors_event_t& event(mLastEventSeen.editValueFor(handle));
- if (event.version == sizeof(sensors_event_t)) {
- connection->sendEvents(&event, 1);
- }
- }
- }
- }
- if (err == NO_ERROR) {
- // connection now active
- if (connection->addSensor(handle)) {
- // the sensor was added (which means it wasn't already there)
- // so, see if this connection becomes active
- if (mActiveConnections.indexOf(connection) < 0) {
- mActiveConnections.add(connection);
- }
- }
- }
- }
- return err;
-}
-
-status_t SensorService::disable(const sp<SensorEventConnection>& connection,
- int handle)
-{
- if (mInitCheck != NO_ERROR)
- return mInitCheck;
-
- status_t err = NO_ERROR;
- Mutex::Autolock _l(mLock);
- SensorRecord* rec = mActiveSensors.valueFor(handle);
- if (rec) {
- // see if this connection becomes inactive
- connection->removeSensor(handle);
- if (connection->hasAnySensor() == false) {
- mActiveConnections.remove(connection);
- }
- // see if this sensor becomes inactive
- if (rec->removeConnection(connection)) {
- mActiveSensors.removeItem(handle);
- mActiveVirtualSensors.removeItem(handle);
- delete rec;
- }
- SensorInterface* sensor = mSensorMap.valueFor(handle);
- err = sensor ? sensor->activate(connection.get(), false) : status_t(BAD_VALUE);
- }
- return err;
-}
-
-status_t SensorService::setEventRate(const sp<SensorEventConnection>& connection,
- int handle, nsecs_t ns)
-{
- if (mInitCheck != NO_ERROR)
- return mInitCheck;
-
- SensorInterface* sensor = mSensorMap.valueFor(handle);
- if (!sensor)
- return BAD_VALUE;
-
- if (ns < 0)
- return BAD_VALUE;
-
- nsecs_t minDelayNs = sensor->getSensor().getMinDelayNs();
- if (ns < minDelayNs) {
- ns = minDelayNs;
- }
-
- if (ns < MINIMUM_EVENTS_PERIOD)
- ns = MINIMUM_EVENTS_PERIOD;
-
- return sensor->setDelay(connection.get(), handle, ns);
-}
-
-// ---------------------------------------------------------------------------
-
-SensorService::SensorRecord::SensorRecord(
- const sp<SensorEventConnection>& connection)
-{
- mConnections.add(connection);
-}
-
-bool SensorService::SensorRecord::addConnection(
- const sp<SensorEventConnection>& connection)
-{
- if (mConnections.indexOf(connection) < 0) {
- mConnections.add(connection);
- return true;
- }
- return false;
-}
-
-bool SensorService::SensorRecord::removeConnection(
- const wp<SensorEventConnection>& connection)
-{
- ssize_t index = mConnections.indexOf(connection);
- if (index >= 0) {
- mConnections.removeItemsAt(index, 1);
- }
- return mConnections.size() ? false : true;
-}
-
-// ---------------------------------------------------------------------------
-
-SensorService::SensorEventConnection::SensorEventConnection(
- const sp<SensorService>& service)
- : mService(service), mChannel(new BitTube())
-{
-}
-
-SensorService::SensorEventConnection::~SensorEventConnection()
-{
- ALOGD_IF(DEBUG_CONNECTIONS, "~SensorEventConnection(%p)", this);
- mService->cleanupConnection(this);
-}
-
-void SensorService::SensorEventConnection::onFirstRef()
-{
-}
-
-bool SensorService::SensorEventConnection::addSensor(int32_t handle) {
- Mutex::Autolock _l(mConnectionLock);
- if (mSensorInfo.indexOf(handle) <= 0) {
- mSensorInfo.add(handle);
- return true;
- }
- return false;
-}
-
-bool SensorService::SensorEventConnection::removeSensor(int32_t handle) {
- Mutex::Autolock _l(mConnectionLock);
- if (mSensorInfo.remove(handle) >= 0) {
- return true;
- }
- return false;
-}
-
-bool SensorService::SensorEventConnection::hasSensor(int32_t handle) const {
- Mutex::Autolock _l(mConnectionLock);
- return mSensorInfo.indexOf(handle) >= 0;
-}
-
-bool SensorService::SensorEventConnection::hasAnySensor() const {
- Mutex::Autolock _l(mConnectionLock);
- return mSensorInfo.size() ? true : false;
-}
-
-status_t SensorService::SensorEventConnection::sendEvents(
- sensors_event_t const* buffer, size_t numEvents,
- sensors_event_t* scratch)
-{
- // filter out events not for this connection
- size_t count = 0;
- if (scratch) {
- Mutex::Autolock _l(mConnectionLock);
- size_t i=0;
- while (i<numEvents) {
- const int32_t curr = buffer[i].sensor;
- if (mSensorInfo.indexOf(curr) >= 0) {
- do {
- scratch[count++] = buffer[i++];
- } while ((i<numEvents) && (buffer[i].sensor == curr));
- } else {
- i++;
- }
- }
- } else {
- scratch = const_cast<sensors_event_t *>(buffer);
- count = numEvents;
- }
-
- // NOTE: ASensorEvent and sensors_event_t are the same type
- ssize_t size = SensorEventQueue::write(mChannel,
- reinterpret_cast<ASensorEvent const*>(scratch), count);
- if (size == -EAGAIN) {
- // the destination doesn't accept events anymore, it's probably
- // full. For now, we just drop the events on the floor.
- //ALOGW("dropping %d events on the floor", count);
- return size;
- }
-
- return size < 0 ? status_t(size) : status_t(NO_ERROR);
-}
-
-sp<BitTube> SensorService::SensorEventConnection::getSensorChannel() const
-{
- return mChannel;
-}
-
-status_t SensorService::SensorEventConnection::enableDisable(
- int handle, bool enabled)
-{
- status_t err;
- if (enabled) {
- err = mService->enable(this, handle);
- } else {
- err = mService->disable(this, handle);
- }
- return err;
-}
-
-status_t SensorService::SensorEventConnection::setEventRate(
- int handle, nsecs_t ns)
-{
- return mService->setEventRate(this, handle, ns);
-}
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h
deleted file mode 100644
index e357f96..0000000
--- a/services/sensorservice/SensorService.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_SENSOR_SERVICE_H
-#define ANDROID_SENSOR_SERVICE_H
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <utils/Vector.h>
-#include <utils/SortedVector.h>
-#include <utils/KeyedVector.h>
-#include <utils/threads.h>
-#include <utils/RefBase.h>
-
-#include <binder/BinderService.h>
-
-#include <gui/Sensor.h>
-#include <gui/BitTube.h>
-#include <gui/ISensorServer.h>
-#include <gui/ISensorEventConnection.h>
-
-#include "SensorInterface.h"
-
-// ---------------------------------------------------------------------------
-
-#define DEBUG_CONNECTIONS false
-
-struct sensors_poll_device_t;
-struct sensors_module_t;
-
-namespace android {
-// ---------------------------------------------------------------------------
-
-class SensorService :
- public BinderService<SensorService>,
- public BnSensorServer,
- protected Thread
-{
- friend class BinderService<SensorService>;
-
- static const nsecs_t MINIMUM_EVENTS_PERIOD = 1000000; // 1000 Hz
-
- SensorService();
- virtual ~SensorService();
-
- virtual void onFirstRef();
-
- // Thread interface
- virtual bool threadLoop();
-
- // ISensorServer interface
- virtual Vector<Sensor> getSensorList();
- virtual sp<ISensorEventConnection> createSensorEventConnection();
- virtual status_t dump(int fd, const Vector<String16>& args);
-
-
- class SensorEventConnection : public BnSensorEventConnection {
- virtual ~SensorEventConnection();
- virtual void onFirstRef();
- virtual sp<BitTube> getSensorChannel() const;
- virtual status_t enableDisable(int handle, bool enabled);
- virtual status_t setEventRate(int handle, nsecs_t ns);
-
- sp<SensorService> const mService;
- sp<BitTube> const mChannel;
- mutable Mutex mConnectionLock;
-
- // protected by SensorService::mLock
- SortedVector<int> mSensorInfo;
-
- public:
- SensorEventConnection(const sp<SensorService>& service);
-
- status_t sendEvents(sensors_event_t const* buffer, size_t count,
- sensors_event_t* scratch = NULL);
- bool hasSensor(int32_t handle) const;
- bool hasAnySensor() const;
- bool addSensor(int32_t handle);
- bool removeSensor(int32_t handle);
- };
-
- class SensorRecord {
- SortedVector< wp<SensorEventConnection> > mConnections;
- public:
- SensorRecord(const sp<SensorEventConnection>& connection);
- bool addConnection(const sp<SensorEventConnection>& connection);
- bool removeConnection(const wp<SensorEventConnection>& connection);
- size_t getNumConnections() const { return mConnections.size(); }
- };
-
- SortedVector< wp<SensorEventConnection> > getActiveConnections() const;
- DefaultKeyedVector<int, SensorInterface*> getActiveVirtualSensors() const;
-
- String8 getSensorName(int handle) const;
- void recordLastValue(sensors_event_t const * buffer, size_t count);
- static void sortEventBuffer(sensors_event_t* buffer, size_t count);
- void registerSensor(SensorInterface* sensor);
- void registerVirtualSensor(SensorInterface* sensor);
-
- // constants
- Vector<Sensor> mSensorList;
- Vector<Sensor> mUserSensorList;
- DefaultKeyedVector<int, SensorInterface*> mSensorMap;
- Vector<SensorInterface *> mVirtualSensorList;
- status_t mInitCheck;
-
- // protected by mLock
- mutable Mutex mLock;
- DefaultKeyedVector<int, SensorRecord*> mActiveSensors;
- DefaultKeyedVector<int, SensorInterface*> mActiveVirtualSensors;
- SortedVector< wp<SensorEventConnection> > mActiveConnections;
-
- // The size of this vector is constant, only the items are mutable
- KeyedVector<int32_t, sensors_event_t> mLastEventSeen;
-
-public:
- static char const* getServiceName() { return "sensorservice"; }
-
- void cleanupConnection(SensorEventConnection* connection);
- status_t enable(const sp<SensorEventConnection>& connection, int handle);
- status_t disable(const sp<SensorEventConnection>& connection, int handle);
- status_t setEventRate(const sp<SensorEventConnection>& connection, int handle, nsecs_t ns);
-};
-
-// ---------------------------------------------------------------------------
-}; // namespace android
-
-#endif // ANDROID_SENSOR_SERVICE_H
diff --git a/services/sensorservice/mat.h b/services/sensorservice/mat.h
deleted file mode 100644
index a76fc91..0000000
--- a/services/sensorservice/mat.h
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_MAT_H
-#define ANDROID_MAT_H
-
-#include "vec.h"
-#include "traits.h"
-
-// -----------------------------------------------------------------------
-
-namespace android {
-
-template <typename TYPE, size_t C, size_t R>
-class mat;
-
-namespace helpers {
-
-template <typename TYPE, size_t C, size_t R>
-mat<TYPE, C, R>& doAssign(
- mat<TYPE, C, R>& lhs,
- typename TypeTraits<TYPE>::ParameterType rhs) {
- for (size_t i=0 ; i<C ; i++)
- for (size_t j=0 ; j<R ; j++)
- lhs[i][j] = (i==j) ? rhs : 0;
- return lhs;
-}
-
-template <typename TYPE, size_t C, size_t R, size_t D>
-mat<TYPE, C, R> PURE doMul(
- const mat<TYPE, D, R>& lhs,
- const mat<TYPE, C, D>& rhs)
-{
- mat<TYPE, C, R> res;
- for (size_t c=0 ; c<C ; c++) {
- for (size_t r=0 ; r<R ; r++) {
- TYPE v(0);
- for (size_t k=0 ; k<D ; k++) {
- v += lhs[k][r] * rhs[c][k];
- }
- res[c][r] = v;
- }
- }
- return res;
-}
-
-template <typename TYPE, size_t R, size_t D>
-vec<TYPE, R> PURE doMul(
- const mat<TYPE, D, R>& lhs,
- const vec<TYPE, D>& rhs)
-{
- vec<TYPE, R> res;
- for (size_t r=0 ; r<R ; r++) {
- TYPE v(0);
- for (size_t k=0 ; k<D ; k++) {
- v += lhs[k][r] * rhs[k];
- }
- res[r] = v;
- }
- return res;
-}
-
-template <typename TYPE, size_t C, size_t R>
-mat<TYPE, C, R> PURE doMul(
- const vec<TYPE, R>& lhs,
- const mat<TYPE, C, 1>& rhs)
-{
- mat<TYPE, C, R> res;
- for (size_t c=0 ; c<C ; c++) {
- for (size_t r=0 ; r<R ; r++) {
- res[c][r] = lhs[r] * rhs[c][0];
- }
- }
- return res;
-}
-
-template <typename TYPE, size_t C, size_t R>
-mat<TYPE, C, R> PURE doMul(
- const mat<TYPE, C, R>& rhs,
- typename TypeTraits<TYPE>::ParameterType v)
-{
- mat<TYPE, C, R> res;
- for (size_t c=0 ; c<C ; c++) {
- for (size_t r=0 ; r<R ; r++) {
- res[c][r] = rhs[c][r] * v;
- }
- }
- return res;
-}
-
-template <typename TYPE, size_t C, size_t R>
-mat<TYPE, C, R> PURE doMul(
- typename TypeTraits<TYPE>::ParameterType v,
- const mat<TYPE, C, R>& rhs)
-{
- mat<TYPE, C, R> res;
- for (size_t c=0 ; c<C ; c++) {
- for (size_t r=0 ; r<R ; r++) {
- res[c][r] = v * rhs[c][r];
- }
- }
- return res;
-}
-
-
-}; // namespace helpers
-
-// -----------------------------------------------------------------------
-
-template <typename TYPE, size_t C, size_t R>
-class mat : public vec< vec<TYPE, R>, C > {
- typedef typename TypeTraits<TYPE>::ParameterType pTYPE;
- typedef vec< vec<TYPE, R>, C > base;
-public:
- // STL-like interface.
- typedef TYPE value_type;
- typedef TYPE& reference;
- typedef TYPE const& const_reference;
- typedef size_t size_type;
- size_type size() const { return R*C; }
- enum { ROWS = R, COLS = C };
-
-
- // -----------------------------------------------------------------------
- // default constructors
-
- mat() { }
- mat(const mat& rhs) : base(rhs) { }
- mat(const base& rhs) : base(rhs) { }
-
- // -----------------------------------------------------------------------
- // conversion constructors
-
- // sets the diagonal to the value, off-diagonal to zero
- mat(pTYPE rhs) {
- helpers::doAssign(*this, rhs);
- }
-
- // -----------------------------------------------------------------------
- // Assignment
-
- mat& operator=(const mat& rhs) {
- base::operator=(rhs);
- return *this;
- }
-
- mat& operator=(const base& rhs) {
- base::operator=(rhs);
- return *this;
- }
-
- mat& operator=(pTYPE rhs) {
- return helpers::doAssign(*this, rhs);
- }
-
- // -----------------------------------------------------------------------
- // non-member function declaration and definition
-
- friend inline mat PURE operator + (const mat& lhs, const mat& rhs) {
- return helpers::doAdd(
- static_cast<const base&>(lhs),
- static_cast<const base&>(rhs));
- }
- friend inline mat PURE operator - (const mat& lhs, const mat& rhs) {
- return helpers::doSub(
- static_cast<const base&>(lhs),
- static_cast<const base&>(rhs));
- }
-
- // matrix*matrix
- template <size_t D>
- friend mat PURE operator * (
- const mat<TYPE, D, R>& lhs,
- const mat<TYPE, C, D>& rhs) {
- return helpers::doMul(lhs, rhs);
- }
-
- // matrix*vector
- friend vec<TYPE, R> PURE operator * (
- const mat& lhs, const vec<TYPE, C>& rhs) {
- return helpers::doMul(lhs, rhs);
- }
-
- // vector*matrix
- friend mat PURE operator * (
- const vec<TYPE, R>& lhs, const mat<TYPE, C, 1>& rhs) {
- return helpers::doMul(lhs, rhs);
- }
-
- // matrix*scalar
- friend inline mat PURE operator * (const mat& lhs, pTYPE v) {
- return helpers::doMul(lhs, v);
- }
-
- // scalar*matrix
- friend inline mat PURE operator * (pTYPE v, const mat& rhs) {
- return helpers::doMul(v, rhs);
- }
-
- // -----------------------------------------------------------------------
- // streaming operator to set the columns of the matrix:
- // example:
- // mat33_t m;
- // m << v0 << v1 << v2;
-
- // column_builder<> stores the matrix and knows which column to set
- template<size_t PREV_COLUMN>
- struct column_builder {
- mat& matrix;
- column_builder(mat& matrix) : matrix(matrix) { }
- };
-
- // operator << is not a method of column_builder<> so we can
- // overload it for unauthorized values (partial specialization
- // not allowed in class-scope).
- // we just set the column and return the next column_builder<>
- template<size_t PREV_COLUMN>
- friend column_builder<PREV_COLUMN+1> operator << (
- const column_builder<PREV_COLUMN>& lhs,
- const vec<TYPE, R>& rhs) {
- lhs.matrix[PREV_COLUMN+1] = rhs;
- return column_builder<PREV_COLUMN+1>(lhs.matrix);
- }
-
- // we return void here so we get a compile-time error if the
- // user tries to set too many columns
- friend void operator << (
- const column_builder<C-2>& lhs,
- const vec<TYPE, R>& rhs) {
- lhs.matrix[C-1] = rhs;
- }
-
- // this is where the process starts. we set the first columns and
- // return the next column_builder<>
- column_builder<0> operator << (const vec<TYPE, R>& rhs) {
- (*this)[0] = rhs;
- return column_builder<0>(*this);
- }
-};
-
-// Specialize column matrix so they're exactly equivalent to a vector
-template <typename TYPE, size_t R>
-class mat<TYPE, 1, R> : public vec<TYPE, R> {
- typedef vec<TYPE, R> base;
-public:
- // STL-like interface.
- typedef TYPE value_type;
- typedef TYPE& reference;
- typedef TYPE const& const_reference;
- typedef size_t size_type;
- size_type size() const { return R; }
- enum { ROWS = R, COLS = 1 };
-
- mat() { }
- mat(const base& rhs) : base(rhs) { }
- mat(const mat& rhs) : base(rhs) { }
- mat(const TYPE& rhs) { helpers::doAssign(*this, rhs); }
- mat& operator=(const mat& rhs) { base::operator=(rhs); return *this; }
- mat& operator=(const base& rhs) { base::operator=(rhs); return *this; }
- mat& operator=(const TYPE& rhs) { return helpers::doAssign(*this, rhs); }
- // we only have one column, so ignore the index
- const base& operator[](size_t) const { return *this; }
- base& operator[](size_t) { return *this; }
- void operator << (const vec<TYPE, R>& rhs) { base::operator[](0) = rhs; }
-};
-
-// -----------------------------------------------------------------------
-// matrix functions
-
-// transpose. this handles matrices of matrices
-inline int PURE transpose(int v) { return v; }
-inline float PURE transpose(float v) { return v; }
-inline double PURE transpose(double v) { return v; }
-
-// Transpose a matrix
-template <typename TYPE, size_t C, size_t R>
-mat<TYPE, R, C> PURE transpose(const mat<TYPE, C, R>& m) {
- mat<TYPE, R, C> r;
- for (size_t i=0 ; i<R ; i++)
- for (size_t j=0 ; j<C ; j++)
- r[i][j] = transpose(m[j][i]);
- return r;
-}
-
-// Calculate the trace of a matrix
-template <typename TYPE, size_t C> static TYPE trace(const mat<TYPE, C, C>& m) {
- TYPE t;
- for (size_t i=0 ; i<C ; i++)
- t += m[i][i];
- return t;
-}
-
-// Test positive-semidefiniteness of a matrix
-template <typename TYPE, size_t C>
-static bool isPositiveSemidefinite(const mat<TYPE, C, C>& m, TYPE tolerance) {
- for (size_t i=0 ; i<C ; i++)
- if (m[i][i] < 0)
- return false;
-
- for (size_t i=0 ; i<C ; i++)
- for (size_t j=i+1 ; j<C ; j++)
- if (fabs(m[i][j] - m[j][i]) > tolerance)
- return false;
-
- return true;
-}
-
-// Transpose a vector
-template <
- template<typename T, size_t S> class VEC,
- typename TYPE,
- size_t SIZE
->
-mat<TYPE, SIZE, 1> PURE transpose(const VEC<TYPE, SIZE>& v) {
- mat<TYPE, SIZE, 1> r;
- for (size_t i=0 ; i<SIZE ; i++)
- r[i][0] = transpose(v[i]);
- return r;
-}
-
-// -----------------------------------------------------------------------
-// "dumb" matrix inversion
-template<typename T, size_t N>
-mat<T, N, N> PURE invert(const mat<T, N, N>& src) {
- T t;
- size_t swap;
- mat<T, N, N> tmp(src);
- mat<T, N, N> inverse(1);
-
- for (size_t i=0 ; i<N ; i++) {
- // look for largest element in column
- swap = i;
- for (size_t j=i+1 ; j<N ; j++) {
- if (fabs(tmp[j][i]) > fabs(tmp[i][i])) {
- swap = j;
- }
- }
-
- if (swap != i) {
- /* swap rows. */
- for (size_t k=0 ; k<N ; k++) {
- t = tmp[i][k];
- tmp[i][k] = tmp[swap][k];
- tmp[swap][k] = t;
-
- t = inverse[i][k];
- inverse[i][k] = inverse[swap][k];
- inverse[swap][k] = t;
- }
- }
-
- t = 1 / tmp[i][i];
- for (size_t k=0 ; k<N ; k++) {
- tmp[i][k] *= t;
- inverse[i][k] *= t;
- }
- for (size_t j=0 ; j<N ; j++) {
- if (j != i) {
- t = tmp[j][i];
- for (size_t k=0 ; k<N ; k++) {
- tmp[j][k] -= tmp[i][k] * t;
- inverse[j][k] -= inverse[i][k] * t;
- }
- }
- }
- }
- return inverse;
-}
-
-// -----------------------------------------------------------------------
-
-typedef mat<float, 2, 2> mat22_t;
-typedef mat<float, 3, 3> mat33_t;
-typedef mat<float, 4, 4> mat44_t;
-
-// -----------------------------------------------------------------------
-
-}; // namespace android
-
-#endif /* ANDROID_MAT_H */
diff --git a/services/sensorservice/quat.h b/services/sensorservice/quat.h
deleted file mode 100644
index fea1afe..0000000
--- a/services/sensorservice/quat.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_QUAT_H
-#define ANDROID_QUAT_H
-
-#include <math.h>
-
-#include "vec.h"
-#include "mat.h"
-
-// -----------------------------------------------------------------------
-namespace android {
-// -----------------------------------------------------------------------
-
-template <typename TYPE>
-mat<TYPE, 3, 3> quatToMatrix(const vec<TYPE, 4>& q) {
- mat<TYPE, 3, 3> R;
- TYPE q0(q.w);
- TYPE q1(q.x);
- TYPE q2(q.y);
- TYPE q3(q.z);
- TYPE sq_q1 = 2 * q1 * q1;
- TYPE sq_q2 = 2 * q2 * q2;
- TYPE sq_q3 = 2 * q3 * q3;
- TYPE q1_q2 = 2 * q1 * q2;
- TYPE q3_q0 = 2 * q3 * q0;
- TYPE q1_q3 = 2 * q1 * q3;
- TYPE q2_q0 = 2 * q2 * q0;
- TYPE q2_q3 = 2 * q2 * q3;
- TYPE q1_q0 = 2 * q1 * q0;
- R[0][0] = 1 - sq_q2 - sq_q3;
- R[0][1] = q1_q2 - q3_q0;
- R[0][2] = q1_q3 + q2_q0;
- R[1][0] = q1_q2 + q3_q0;
- R[1][1] = 1 - sq_q1 - sq_q3;
- R[1][2] = q2_q3 - q1_q0;
- R[2][0] = q1_q3 - q2_q0;
- R[2][1] = q2_q3 + q1_q0;
- R[2][2] = 1 - sq_q1 - sq_q2;
- return R;
-}
-
-template <typename TYPE>
-vec<TYPE, 4> matrixToQuat(const mat<TYPE, 3, 3>& R) {
- // matrix to quaternion
-
- struct {
- inline TYPE operator()(TYPE v) {
- return v < 0 ? 0 : v;
- }
- } clamp;
-
- vec<TYPE, 4> q;
- const float Hx = R[0].x;
- const float My = R[1].y;
- const float Az = R[2].z;
- q.x = sqrtf( clamp( Hx - My - Az + 1) * 0.25f );
- q.y = sqrtf( clamp(-Hx + My - Az + 1) * 0.25f );
- q.z = sqrtf( clamp(-Hx - My + Az + 1) * 0.25f );
- q.w = sqrtf( clamp( Hx + My + Az + 1) * 0.25f );
- q.x = copysignf(q.x, R[2].y - R[1].z);
- q.y = copysignf(q.y, R[0].z - R[2].x);
- q.z = copysignf(q.z, R[1].x - R[0].y);
- // guaranteed to be unit-quaternion
- return q;
-}
-
-template <typename TYPE>
-vec<TYPE, 4> normalize_quat(const vec<TYPE, 4>& q) {
- vec<TYPE, 4> r(q);
- if (r.w < 0) {
- r = -r;
- }
- return normalize(r);
-}
-
-// -----------------------------------------------------------------------
-
-typedef vec4_t quat_t;
-
-// -----------------------------------------------------------------------
-}; // namespace android
-
-#endif /* ANDROID_QUAT_H */
diff --git a/services/sensorservice/tests/Android.mk b/services/sensorservice/tests/Android.mk
deleted file mode 100644
index 45296dd..0000000
--- a/services/sensorservice/tests/Android.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- sensorservicetest.cpp
-
-LOCAL_SHARED_LIBRARIES := \
- libcutils libutils libui libgui
-
-LOCAL_MODULE:= test-sensorservice
-
-LOCAL_MODULE_TAGS := optional
-
-include $(BUILD_EXECUTABLE)
diff --git a/services/sensorservice/tests/sensorservicetest.cpp b/services/sensorservice/tests/sensorservicetest.cpp
deleted file mode 100644
index 1025fa8..0000000
--- a/services/sensorservice/tests/sensorservicetest.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <android/sensor.h>
-#include <gui/Sensor.h>
-#include <gui/SensorManager.h>
-#include <gui/SensorEventQueue.h>
-#include <utils/Looper.h>
-
-using namespace android;
-
-static nsecs_t sStartTime = 0;
-
-
-int receiver(int fd, int events, void* data)
-{
- sp<SensorEventQueue> q((SensorEventQueue*)data);
- ssize_t n;
- ASensorEvent buffer[8];
-
- static nsecs_t oldTimeStamp = 0;
-
- while ((n = q->read(buffer, 8)) > 0) {
- for (int i=0 ; i<n ; i++) {
- float t;
- if (oldTimeStamp) {
- t = float(buffer[i].timestamp - oldTimeStamp) / s2ns(1);
- } else {
- t = float(buffer[i].timestamp - sStartTime) / s2ns(1);
- }
- oldTimeStamp = buffer[i].timestamp;
-
- if (buffer[i].type == Sensor::TYPE_ACCELEROMETER) {
- printf("%lld\t%8f\t%8f\t%8f\t%f\n",
- buffer[i].timestamp,
- buffer[i].data[0], buffer[i].data[1], buffer[i].data[2],
- 1.0/t);
- }
-
- }
- }
- if (n<0 && n != -EAGAIN) {
- printf("error reading events (%s)\n", strerror(-n));
- }
- return 1;
-}
-
-
-int main(int argc, char** argv)
-{
- SensorManager& mgr(SensorManager::getInstance());
-
- Sensor const* const* list;
- ssize_t count = mgr.getSensorList(&list);
- printf("numSensors=%d\n", int(count));
-
- sp<SensorEventQueue> q = mgr.createEventQueue();
- printf("queue=%p\n", q.get());
-
- Sensor const* accelerometer = mgr.getDefaultSensor(Sensor::TYPE_ACCELEROMETER);
- printf("accelerometer=%p (%s)\n",
- accelerometer, accelerometer->getName().string());
-
- sStartTime = systemTime();
-
- q->enableSensor(accelerometer);
-
- q->setEventRate(accelerometer, ms2ns(10));
-
- sp<Looper> loop = new Looper(false);
- loop->addFd(q->getFd(), 0, ALOOPER_EVENT_INPUT, receiver, q.get());
-
- do {
- //printf("about to poll...\n");
- int32_t ret = loop->pollOnce(-1);
- switch (ret) {
- case ALOOPER_POLL_WAKE:
- //("ALOOPER_POLL_WAKE\n");
- break;
- case ALOOPER_POLL_CALLBACK:
- //("ALOOPER_POLL_CALLBACK\n");
- break;
- case ALOOPER_POLL_TIMEOUT:
- printf("ALOOPER_POLL_TIMEOUT\n");
- break;
- case ALOOPER_POLL_ERROR:
- printf("ALOOPER_POLL_TIMEOUT\n");
- break;
- default:
- printf("ugh? poll returned %d\n", ret);
- break;
- }
- } while (1);
-
-
- return 0;
-}
diff --git a/services/sensorservice/traits.h b/services/sensorservice/traits.h
deleted file mode 100644
index da4c599..0000000
--- a/services/sensorservice/traits.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_TRAITS_H
-#define ANDROID_TRAITS_H
-
-// -----------------------------------------------------------------------
-// Typelists
-
-namespace android {
-
-// end-of-list marker
-class NullType {};
-
-// type-list node
-template <typename T, typename U>
-struct TypeList {
- typedef T Head;
- typedef U Tail;
-};
-
-// helpers to build typelists
-#define TYPELIST_1(T1) TypeList<T1, NullType>
-#define TYPELIST_2(T1, T2) TypeList<T1, TYPELIST_1(T2)>
-#define TYPELIST_3(T1, T2, T3) TypeList<T1, TYPELIST_2(T2, T3)>
-#define TYPELIST_4(T1, T2, T3, T4) TypeList<T1, TYPELIST_3(T2, T3, T4)>
-
-// typelists algorithms
-namespace TL {
-template <typename TList, typename T> struct IndexOf;
-
-template <typename T>
-struct IndexOf<NullType, T> {
- enum { value = -1 };
-};
-
-template <typename T, typename Tail>
-struct IndexOf<TypeList<T, Tail>, T> {
- enum { value = 0 };
-};
-
-template <typename Head, typename Tail, typename T>
-struct IndexOf<TypeList<Head, Tail>, T> {
-private:
- enum { temp = IndexOf<Tail, T>::value };
-public:
- enum { value = temp == -1 ? -1 : 1 + temp };
-};
-
-}; // namespace TL
-
-// type selection based on a boolean
-template <bool flag, typename T, typename U>
-struct Select {
- typedef T Result;
-};
-template <typename T, typename U>
-struct Select<false, T, U> {
- typedef U Result;
-};
-
-// -----------------------------------------------------------------------
-// Type traits
-
-template <typename T>
-class TypeTraits {
- typedef TYPELIST_4(
- unsigned char, unsigned short,
- unsigned int, unsigned long int) UnsignedInts;
-
- typedef TYPELIST_4(
- signed char, signed short,
- signed int, signed long int) SignedInts;
-
- typedef TYPELIST_1(
- bool) OtherInts;
-
- typedef TYPELIST_3(
- float, double, long double) Floats;
-
- template<typename U> struct PointerTraits {
- enum { result = false };
- typedef NullType PointeeType;
- };
- template<typename U> struct PointerTraits<U*> {
- enum { result = true };
- typedef U PointeeType;
- };
-
-public:
- enum { isStdUnsignedInt = TL::IndexOf<UnsignedInts, T>::value >= 0 };
- enum { isStdSignedInt = TL::IndexOf<SignedInts, T>::value >= 0 };
- enum { isStdIntegral = TL::IndexOf<OtherInts, T>::value >= 0 || isStdUnsignedInt || isStdSignedInt };
- enum { isStdFloat = TL::IndexOf<Floats, T>::value >= 0 };
- enum { isPointer = PointerTraits<T>::result };
- enum { isStdArith = isStdIntegral || isStdFloat };
-
- // best parameter type for given type
- typedef typename Select<isStdArith || isPointer, T, const T&>::Result ParameterType;
-};
-
-// -----------------------------------------------------------------------
-}; // namespace android
-
-#endif /* ANDROID_TRAITS_H */
diff --git a/services/sensorservice/vec.h b/services/sensorservice/vec.h
deleted file mode 100644
index 24f30ff..0000000
--- a/services/sensorservice/vec.h
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_VEC_H
-#define ANDROID_VEC_H
-
-#include <math.h>
-
-#include <stdint.h>
-#include <stddef.h>
-
-#include "traits.h"
-
-// -----------------------------------------------------------------------
-
-#define PURE __attribute__((pure))
-
-namespace android {
-
-// -----------------------------------------------------------------------
-// non-inline helpers
-
-template <typename TYPE, size_t SIZE>
-class vec;
-
-template <typename TYPE, size_t SIZE>
-class vbase;
-
-namespace helpers {
-
-template <typename T> inline T min(T a, T b) { return a<b ? a : b; }
-template <typename T> inline T max(T a, T b) { return a>b ? a : b; }
-
-template < template<typename T, size_t S> class VEC,
- typename TYPE, size_t SIZE, size_t S>
-vec<TYPE, SIZE>& doAssign(
- vec<TYPE, SIZE>& lhs, const VEC<TYPE, S>& rhs) {
- const size_t minSize = min(SIZE, S);
- const size_t maxSize = max(SIZE, S);
- for (size_t i=0 ; i<minSize ; i++)
- lhs[i] = rhs[i];
- for (size_t i=minSize ; i<maxSize ; i++)
- lhs[i] = 0;
- return lhs;
-}
-
-
-template <
- template<typename T, size_t S> class VLHS,
- template<typename T, size_t S> class VRHS,
- typename TYPE,
- size_t SIZE
->
-VLHS<TYPE, SIZE> PURE doAdd(
- const VLHS<TYPE, SIZE>& lhs,
- const VRHS<TYPE, SIZE>& rhs) {
- VLHS<TYPE, SIZE> r;
- for (size_t i=0 ; i<SIZE ; i++)
- r[i] = lhs[i] + rhs[i];
- return r;
-}
-
-template <
- template<typename T, size_t S> class VLHS,
- template<typename T, size_t S> class VRHS,
- typename TYPE,
- size_t SIZE
->
-VLHS<TYPE, SIZE> PURE doSub(
- const VLHS<TYPE, SIZE>& lhs,
- const VRHS<TYPE, SIZE>& rhs) {
- VLHS<TYPE, SIZE> r;
- for (size_t i=0 ; i<SIZE ; i++)
- r[i] = lhs[i] - rhs[i];
- return r;
-}
-
-template <
- template<typename T, size_t S> class VEC,
- typename TYPE,
- size_t SIZE
->
-VEC<TYPE, SIZE> PURE doMulScalar(
- const VEC<TYPE, SIZE>& lhs,
- typename TypeTraits<TYPE>::ParameterType rhs) {
- VEC<TYPE, SIZE> r;
- for (size_t i=0 ; i<SIZE ; i++)
- r[i] = lhs[i] * rhs;
- return r;
-}
-
-template <
- template<typename T, size_t S> class VEC,
- typename TYPE,
- size_t SIZE
->
-VEC<TYPE, SIZE> PURE doScalarMul(
- typename TypeTraits<TYPE>::ParameterType lhs,
- const VEC<TYPE, SIZE>& rhs) {
- VEC<TYPE, SIZE> r;
- for (size_t i=0 ; i<SIZE ; i++)
- r[i] = lhs * rhs[i];
- return r;
-}
-
-}; // namespace helpers
-
-// -----------------------------------------------------------------------
-// Below we define the mathematical operators for vectors.
-// We use template template arguments so we can generically
-// handle the case where the right-hand-size and left-hand-side are
-// different vector types (but with same value_type and size).
-// This is needed for performance when using ".xy{z}" element access
-// on vec<>. Without this, an extra conversion to vec<> would be needed.
-//
-// example:
-// vec4_t a;
-// vec3_t b;
-// vec3_t c = a.xyz + b;
-//
-// "a.xyz + b" is a mixed-operation between a vbase<> and a vec<>, requiring
-// a conversion of vbase<> to vec<>. The template gunk below avoids this,
-// by allowing the addition on these different vector types directly
-//
-
-template <
- template<typename T, size_t S> class VLHS,
- template<typename T, size_t S> class VRHS,
- typename TYPE,
- size_t SIZE
->
-inline VLHS<TYPE, SIZE> PURE operator + (
- const VLHS<TYPE, SIZE>& lhs,
- const VRHS<TYPE, SIZE>& rhs) {
- return helpers::doAdd(lhs, rhs);
-}
-
-template <
- template<typename T, size_t S> class VLHS,
- template<typename T, size_t S> class VRHS,
- typename TYPE,
- size_t SIZE
->
-inline VLHS<TYPE, SIZE> PURE operator - (
- const VLHS<TYPE, SIZE>& lhs,
- const VRHS<TYPE, SIZE>& rhs) {
- return helpers::doSub(lhs, rhs);
-}
-
-template <
- template<typename T, size_t S> class VEC,
- typename TYPE,
- size_t SIZE
->
-inline VEC<TYPE, SIZE> PURE operator * (
- const VEC<TYPE, SIZE>& lhs,
- typename TypeTraits<TYPE>::ParameterType rhs) {
- return helpers::doMulScalar(lhs, rhs);
-}
-
-template <
- template<typename T, size_t S> class VEC,
- typename TYPE,
- size_t SIZE
->
-inline VEC<TYPE, SIZE> PURE operator * (
- typename TypeTraits<TYPE>::ParameterType lhs,
- const VEC<TYPE, SIZE>& rhs) {
- return helpers::doScalarMul(lhs, rhs);
-}
-
-
-template <
- template<typename T, size_t S> class VLHS,
- template<typename T, size_t S> class VRHS,
- typename TYPE,
- size_t SIZE
->
-TYPE PURE dot_product(
- const VLHS<TYPE, SIZE>& lhs,
- const VRHS<TYPE, SIZE>& rhs) {
- TYPE r(0);
- for (size_t i=0 ; i<SIZE ; i++)
- r += lhs[i] * rhs[i];
- return r;
-}
-
-template <
- template<typename T, size_t S> class V,
- typename TYPE,
- size_t SIZE
->
-TYPE PURE length(const V<TYPE, SIZE>& v) {
- return sqrt(dot_product(v, v));
-}
-
-template <
- template<typename T, size_t S> class V,
- typename TYPE,
- size_t SIZE
->
-TYPE PURE length_squared(const V<TYPE, SIZE>& v) {
- return dot_product(v, v);
-}
-
-template <
- template<typename T, size_t S> class V,
- typename TYPE,
- size_t SIZE
->
-V<TYPE, SIZE> PURE normalize(const V<TYPE, SIZE>& v) {
- return v * (1/length(v));
-}
-
-template <
- template<typename T, size_t S> class VLHS,
- template<typename T, size_t S> class VRHS,
- typename TYPE
->
-VLHS<TYPE, 3> PURE cross_product(
- const VLHS<TYPE, 3>& u,
- const VRHS<TYPE, 3>& v) {
- VLHS<TYPE, 3> r;
- r.x = u.y*v.z - u.z*v.y;
- r.y = u.z*v.x - u.x*v.z;
- r.z = u.x*v.y - u.y*v.x;
- return r;
-}
-
-
-template <typename TYPE, size_t SIZE>
-vec<TYPE, SIZE> PURE operator - (const vec<TYPE, SIZE>& lhs) {
- vec<TYPE, SIZE> r;
- for (size_t i=0 ; i<SIZE ; i++)
- r[i] = -lhs[i];
- return r;
-}
-
-// -----------------------------------------------------------------------
-
-// This our basic vector type, it just implements the data storage
-// and accessors.
-
-template <typename TYPE, size_t SIZE>
-struct vbase {
- TYPE v[SIZE];
- inline const TYPE& operator[](size_t i) const { return v[i]; }
- inline TYPE& operator[](size_t i) { return v[i]; }
-};
-template<> struct vbase<float, 2> {
- union {
- float v[2];
- struct { float x, y; };
- struct { float s, t; };
- };
- inline const float& operator[](size_t i) const { return v[i]; }
- inline float& operator[](size_t i) { return v[i]; }
-};
-template<> struct vbase<float, 3> {
- union {
- float v[3];
- struct { float x, y, z; };
- struct { float s, t, r; };
- vbase<float, 2> xy;
- vbase<float, 2> st;
- };
- inline const float& operator[](size_t i) const { return v[i]; }
- inline float& operator[](size_t i) { return v[i]; }
-};
-template<> struct vbase<float, 4> {
- union {
- float v[4];
- struct { float x, y, z, w; };
- struct { float s, t, r, q; };
- vbase<float, 3> xyz;
- vbase<float, 3> str;
- vbase<float, 2> xy;
- vbase<float, 2> st;
- };
- inline const float& operator[](size_t i) const { return v[i]; }
- inline float& operator[](size_t i) { return v[i]; }
-};
-
-// -----------------------------------------------------------------------
-
-template <typename TYPE, size_t SIZE>
-class vec : public vbase<TYPE, SIZE>
-{
- typedef typename TypeTraits<TYPE>::ParameterType pTYPE;
- typedef vbase<TYPE, SIZE> base;
-
-public:
- // STL-like interface.
- typedef TYPE value_type;
- typedef TYPE& reference;
- typedef TYPE const& const_reference;
- typedef size_t size_type;
-
- typedef TYPE* iterator;
- typedef TYPE const* const_iterator;
- iterator begin() { return base::v; }
- iterator end() { return base::v + SIZE; }
- const_iterator begin() const { return base::v; }
- const_iterator end() const { return base::v + SIZE; }
- size_type size() const { return SIZE; }
-
- // -----------------------------------------------------------------------
- // default constructors
-
- vec() { }
- vec(const vec& rhs) : base(rhs) { }
- vec(const base& rhs) : base(rhs) { }
-
- // -----------------------------------------------------------------------
- // conversion constructors
-
- vec(pTYPE rhs) {
- for (size_t i=0 ; i<SIZE ; i++)
- base::operator[](i) = rhs;
- }
-
- template < template<typename T, size_t S> class VEC, size_t S>
- explicit vec(const VEC<TYPE, S>& rhs) {
- helpers::doAssign(*this, rhs);
- }
-
- explicit vec(TYPE const* array) {
- for (size_t i=0 ; i<SIZE ; i++)
- base::operator[](i) = array[i];
- }
-
- // -----------------------------------------------------------------------
- // Assignment
-
- vec& operator = (const vec& rhs) {
- base::operator=(rhs);
- return *this;
- }
-
- vec& operator = (const base& rhs) {
- base::operator=(rhs);
- return *this;
- }
-
- vec& operator = (pTYPE rhs) {
- for (size_t i=0 ; i<SIZE ; i++)
- base::operator[](i) = rhs;
- return *this;
- }
-
- template < template<typename T, size_t S> class VEC, size_t S>
- vec& operator = (const VEC<TYPE, S>& rhs) {
- return helpers::doAssign(*this, rhs);
- }
-
- // -----------------------------------------------------------------------
- // operation-assignment
-
- vec& operator += (const vec& rhs);
- vec& operator -= (const vec& rhs);
- vec& operator *= (pTYPE rhs);
-
- // -----------------------------------------------------------------------
- // non-member function declaration and definition
- // NOTE: we declare the non-member function as friend inside the class
- // so that they are known to the compiler when the class is instantiated.
- // This helps the compiler doing template argument deduction when the
- // passed types are not identical. Essentially this helps with
- // type conversion so that you can multiply a vec<float> by an scalar int
- // (for instance).
-
- friend inline vec PURE operator + (const vec& lhs, const vec& rhs) {
- return helpers::doAdd(lhs, rhs);
- }
- friend inline vec PURE operator - (const vec& lhs, const vec& rhs) {
- return helpers::doSub(lhs, rhs);
- }
- friend inline vec PURE operator * (const vec& lhs, pTYPE v) {
- return helpers::doMulScalar(lhs, v);
- }
- friend inline vec PURE operator * (pTYPE v, const vec& rhs) {
- return helpers::doScalarMul(v, rhs);
- }
- friend inline TYPE PURE dot_product(const vec& lhs, const vec& rhs) {
- return android::dot_product(lhs, rhs);
- }
-};
-
-// -----------------------------------------------------------------------
-
-template <typename TYPE, size_t SIZE>
-vec<TYPE, SIZE>& vec<TYPE, SIZE>::operator += (const vec<TYPE, SIZE>& rhs) {
- vec<TYPE, SIZE>& lhs(*this);
- for (size_t i=0 ; i<SIZE ; i++)
- lhs[i] += rhs[i];
- return lhs;
-}
-
-template <typename TYPE, size_t SIZE>
-vec<TYPE, SIZE>& vec<TYPE, SIZE>::operator -= (const vec<TYPE, SIZE>& rhs) {
- vec<TYPE, SIZE>& lhs(*this);
- for (size_t i=0 ; i<SIZE ; i++)
- lhs[i] -= rhs[i];
- return lhs;
-}
-
-template <typename TYPE, size_t SIZE>
-vec<TYPE, SIZE>& vec<TYPE, SIZE>::operator *= (vec<TYPE, SIZE>::pTYPE rhs) {
- vec<TYPE, SIZE>& lhs(*this);
- for (size_t i=0 ; i<SIZE ; i++)
- lhs[i] *= rhs;
- return lhs;
-}
-
-// -----------------------------------------------------------------------
-
-typedef vec<float, 2> vec2_t;
-typedef vec<float, 3> vec3_t;
-typedef vec<float, 4> vec4_t;
-
-// -----------------------------------------------------------------------
-
-}; // namespace android
-
-#endif /* ANDROID_VEC_H */
diff --git a/telephony/java/com/android/internal/telephony/ApnContext.java b/telephony/java/com/android/internal/telephony/ApnContext.java
index 3a3044e..9746398 100644
--- a/telephony/java/com/android/internal/telephony/ApnContext.java
+++ b/telephony/java/com/android/internal/telephony/ApnContext.java
@@ -50,6 +50,8 @@
String mReason;
+ int mRetryCount;
+
/**
* user/app requested connection on this APN
*/
@@ -64,6 +66,7 @@
mApnType = apnType;
mState = DataConnectionTracker.State.IDLE;
setReason(Phone.REASON_DATA_ENABLED);
+ setRetryCount(0);
mDataEnabled = new AtomicBoolean(false);
mDependencyMet = new AtomicBoolean(true);
mWaitingApnsPermanentFailureCountDown = new AtomicInteger(0);
@@ -182,6 +185,21 @@
return mReason;
}
+ public synchronized void setRetryCount(int retryCount) {
+ if (DBG) {
+ log("setRetryCount: " + retryCount);
+ }
+ mRetryCount = retryCount;
+ DataConnection dc = mDataConnection;
+ if (dc != null) {
+ dc.setRetryCount(retryCount);
+ }
+ }
+
+ public synchronized int getRetryCount() {
+ return mRetryCount;
+ }
+
public boolean isReady() {
return mDataEnabled.get() && mDependencyMet.get();
}
@@ -214,8 +232,8 @@
return "{mApnType=" + mApnType + " mState=" + getState() + " mWaitingApns=" + mWaitingApns +
" mWaitingApnsPermanentFailureCountDown=" + mWaitingApnsPermanentFailureCountDown +
" mApnSetting=" + mApnSetting + " mDataConnectionAc=" + mDataConnectionAc +
- " mReason=" + mReason + " mDataEnabled=" + mDataEnabled +
- " mDependencyMet=" + mDependencyMet + "}";
+ " mReason=" + mReason + " mRetryCount=" + mRetryCount +
+ " mDataEnabled=" + mDataEnabled + " mDependencyMet=" + mDependencyMet + "}";
}
protected void log(String s) {
diff --git a/telephony/java/com/android/internal/telephony/DataConnection.java b/telephony/java/com/android/internal/telephony/DataConnection.java
index a6bd85e..d8aba92 100644
--- a/telephony/java/com/android/internal/telephony/DataConnection.java
+++ b/telephony/java/com/android/internal/telephony/DataConnection.java
@@ -445,6 +445,14 @@
}
/**
+ * set retry manager retryCount
+ */
+ public void setRetryCount(int retryCount) {
+ if (DBG) log("setRetryCount: " + retryCount);
+ mRetryMgr.setRetryCount(retryCount);
+ }
+
+ /**
* @return retry manager retryTimer
*/
public int getRetryTimer() {
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index 588515b..0dee7a1 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -303,7 +303,8 @@
new HashMap<String, Integer>();
/** Phone.APN_TYPE_* ===> ApnContext */
- protected ConcurrentHashMap<String, ApnContext> mApnContexts;
+ protected ConcurrentHashMap<String, ApnContext> mApnContexts =
+ new ConcurrentHashMap<String, ApnContext>();
/* Currently active APN */
protected ApnSetting mActiveApn;
@@ -1203,6 +1204,9 @@
}
protected void resetAllRetryCounts() {
+ for (ApnContext ac : mApnContexts.values()) {
+ ac.setRetryCount(0);
+ }
for (DataConnection dc : mDataConnections.values()) {
dc.resetRetryCount();
}
diff --git a/telephony/java/com/android/internal/telephony/MccTable.java b/telephony/java/com/android/internal/telephony/MccTable.java
index e206783..b6711bc 100644
--- a/telephony/java/com/android/internal/telephony/MccTable.java
+++ b/telephony/java/com/android/internal/telephony/MccTable.java
@@ -407,7 +407,7 @@
table.add(new MccEntry(356,"kn",2)); //Saint Kitts and Nevis
table.add(new MccEntry(358,"lc",2)); //Saint Lucia
table.add(new MccEntry(360,"vc",2)); //Saint Vincent and the Grenadines
- table.add(new MccEntry(362,"nl",2)); //Netherlands Antilles
+ table.add(new MccEntry(362,"ai",2)); //Netherlands Antilles
table.add(new MccEntry(363,"aw",2)); //Aruba
table.add(new MccEntry(364,"bs",2)); //Bahamas (Commonwealth of the)
table.add(new MccEntry(365,"ai",3)); //Anguilla
diff --git a/telephony/java/com/android/internal/telephony/RetryManager.java b/telephony/java/com/android/internal/telephony/RetryManager.java
index ae451b9..250d99e 100644
--- a/telephony/java/com/android/internal/telephony/RetryManager.java
+++ b/telephony/java/com/android/internal/telephony/RetryManager.java
@@ -73,7 +73,7 @@
* {@hide}
*/
public class RetryManager {
- static public final String LOG_TAG = "RetryManager";
+ static public final String LOG_TAG = "GSM";
static public final boolean DBG = true;
static public final boolean VDBG = false;
@@ -304,7 +304,6 @@
/**
* Set retry count to the specified value
- * and turns off retrying forever.
*/
public void setRetryCount(int count) {
mRetryCount = count;
@@ -316,11 +315,18 @@
mRetryCount = 0;
}
- mRetryForever = false;
if (DBG) log("setRetryCount: " + mRetryCount);
}
/**
+ * Set retry forever to the specified value
+ */
+ public void setRetryForever(boolean retryForever) {
+ mRetryForever = retryForever;
+ if (DBG) log("setRetryForever: " + mRetryForever);
+ }
+
+ /**
* Clear the data-retry counter
*/
public void resetRetryCount() {
@@ -399,6 +405,6 @@
}
private void log(String s) {
- Log.d(LOG_TAG, s);
+ Log.d(LOG_TAG, "[RM] " + s);
}
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
index e70ff18..0f49762 100755
--- a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
@@ -1916,8 +1916,7 @@
throw new CodingException("missing MESSAGE_IDENTIFIER subparam");
}
if (bData.userData != null) {
- if (isCmasAlertCategory(serviceCategory) && bData.priorityIndicatorSet
- && bData.priority == SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY) {
+ if (isCmasAlertCategory(serviceCategory)) {
decodeCmasUserData(bData, serviceCategory);
} else if (bData.userData.msgEncoding == UserData.ENCODING_IS91_EXTENDED_PROTOCOL) {
if ((foundSubparamMask ^
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 83fc9c1..6b863a7 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -134,6 +134,8 @@
private static final String INTENT_RECONNECT_ALARM =
"com.android.internal.telephony.gprs-reconnect";
private static final String INTENT_RECONNECT_ALARM_EXTRA_TYPE = "reconnect_alarm_extra_type";
+ private static final String INTENT_RECONNECT_ALARM_EXTRA_RETRY_COUNT =
+ "reconnect_alaram_extra_retry_count";
private static final String INTENT_DATA_STALL_ALARM =
"com.android.internal.telephony.gprs-data-stall";
@@ -148,16 +150,23 @@
@Override
protected void onActionIntentReconnectAlarm(Intent intent) {
- if (DBG) log("GPRS reconnect alarm. Previous state was " + mState);
-
String reason = intent.getStringExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON);
int connectionId = intent.getIntExtra(INTENT_RECONNECT_ALARM_EXTRA_TYPE, -1);
+ int retryCount = intent.getIntExtra(INTENT_RECONNECT_ALARM_EXTRA_RETRY_COUNT, 0);
DataConnectionAc dcac= mDataConnectionAsyncChannels.get(connectionId);
+ if (DBG) {
+ log("onActionIntentReconnectAlarm: mState=" + mState + " reason=" + reason +
+ " connectionId=" + connectionId + " retryCount=" + retryCount);
+ }
+
if (dcac != null) {
for (ApnContext apnContext : dcac.getApnListSync()) {
+ apnContext.setDataConnectionAc(null);
+ apnContext.setDataConnection(null);
apnContext.setReason(reason);
+ apnContext.setRetryCount(retryCount);
if (apnContext.getState() == State.FAILED) {
apnContext.setState(State.IDLE);
}
@@ -205,7 +214,6 @@
p.getContext().getContentResolver().registerContentObserver(
Telephony.Carriers.CONTENT_URI, true, mApnObserver);
- mApnContexts = new ConcurrentHashMap<String, ApnContext>();
initApnContextsAndDataConnection();
broadcastMessenger();
}
@@ -672,10 +680,15 @@
break;
}
}
- configureRetry(dcac.dataConnection, hasDefault);
+ configureRetry(dcac.dataConnection, hasDefault, 0);
}
}
+ // Be sure retry counts for Apncontexts and DC's are sync'd.
+ // When DCT/ApnContexts are refactored and we cleanup retrying
+ // this won't be needed.
+ resetAllRetryCounts();
+
// Only check for default APN state
for (ApnContext apnContext : mApnContexts.values()) {
if (apnContext.getState() == State.FAILED) {
@@ -1076,7 +1089,8 @@
// configure retry count if no other Apn is using the same connection.
if (refCount == 0) {
- configureRetry(dc, apn.canHandleType(Phone.APN_TYPE_DEFAULT));
+ configureRetry(dc, apn.canHandleType(Phone.APN_TYPE_DEFAULT),
+ apnContext.getRetryCount());
}
apnContext.setDataConnectionAc(dcac);
apnContext.setDataConnection(dc);
@@ -1328,7 +1342,7 @@
startNetStatPoll();
startDataStallAlarm(DATA_STALL_NOT_SUSPECTED);
// reset reconnect timer
- apnContext.getDataConnection().resetRetryCount();
+ apnContext.setRetryCount(0);
}
// TODO: For multiple Active APNs not exactly sure how to do this.
@@ -1599,6 +1613,10 @@
loge("reconnectAfterFail: apnContext == null, impossible");
return;
}
+ if (DBG) {
+ log("reconnectAfterFail: lastFailCause=" + lastFailCauseCode +
+ " retryOverride=" + retryOverride + " apnContext=" + apnContext);
+ }
if ((apnContext.getState() == State.FAILED) &&
(apnContext.getDataConnection() != null)) {
if (!apnContext.getDataConnection().isRetryNeeded()) {
@@ -1614,7 +1632,7 @@
if (DBG) log("reconnectAfterFail: activate failed, Reregistering to network");
mReregisterOnReconnectFailure = true;
mPhone.getServiceStateTracker().reRegisterNetwork(null);
- apnContext.getDataConnection().resetRetryCount();
+ apnContext.setRetryCount(0);
return;
}
}
@@ -1625,6 +1643,11 @@
if (nextReconnectDelay < 0) {
nextReconnectDelay = apnContext.getDataConnection().getRetryTimer();
apnContext.getDataConnection().increaseRetryCount();
+ if (DBG) {
+ log("reconnectAfterFail: increaseRetryCount=" +
+ apnContext.getDataConnection().getRetryCount() +
+ " nextReconnectDelay=" + nextReconnectDelay);
+ }
}
startAlarmForReconnect(nextReconnectDelay, apnContext);
@@ -1641,16 +1664,11 @@
private void startAlarmForReconnect(int delay, ApnContext apnContext) {
- if (DBG) {
- log("Schedule alarm for reconnect: activate failed. Scheduling next attempt for "
- + (delay / 1000) + "s");
- }
-
DataConnectionAc dcac = apnContext.getDataConnectionAc();
if ((dcac == null) || (dcac.dataConnection == null)) {
// should not happen, but just in case.
- loge("null dcac or dc.");
+ loge("startAlarmForReconnect: null dcac or dc.");
return;
}
@@ -1659,12 +1677,29 @@
Intent intent = new Intent(INTENT_RECONNECT_ALARM + '.' +
dcac.dataConnection.getDataConnectionId());
- intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON, apnContext.getReason());
- intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_TYPE,
- dcac.dataConnection.getDataConnectionId());
+ String reason = apnContext.getReason();
+ intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_REASON, reason);
+ int connectionId = dcac.dataConnection.getDataConnectionId();
+ intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_TYPE, connectionId);
+
+ // TODO: Until a real fix is created, which probably entails pushing
+ // retires into the DC itself, this fix gets the retry count and
+ // puts it in the reconnect alarm. When the reconnect alarm fires
+ // onActionIntentReconnectAlarm is called which will use the value saved
+ // here and save it in the ApnContext and send the EVENT_CONNECT message
+ // which invokes setupData. Then setupData will use the value in the ApnContext
+ // and to tell the DC to set the retry count in the retry manager.
+ int retryCount = dcac.dataConnection.getRetryCount();
+ intent.putExtra(INTENT_RECONNECT_ALARM_EXTRA_RETRY_COUNT, retryCount);
+
+ if (DBG) {
+ log("startAlarmForReconnect: next attempt in " + (delay / 1000) + "s" +
+ " reason='" + reason + "' connectionId=" + connectionId +
+ " retryCount=" + retryCount);
+ }
PendingIntent alarmIntent = PendingIntent.getBroadcast (mPhone.getContext(), 0,
- intent, 0);
+ intent, PendingIntent.FLAG_UPDATE_CURRENT);
dcac.setReconnectIntentSync(alarmIntent);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + delay, alarmIntent);
@@ -1940,9 +1975,7 @@
// Make sure our reconnect delay starts at the initial value
// next time the radio comes on
- for (DataConnection dc : mDataConnections.values()) {
- dc.resetRetryCount();
- }
+ resetAllRetryCounts();
mReregisterOnReconnectFailure = false;
if (mPhone.getSimulatedRadioControl() != null) {
@@ -2285,7 +2318,11 @@
return conn;
}
- private void configureRetry(DataConnection dc, boolean forDefault) {
+ private void configureRetry(DataConnection dc, boolean forDefault, int retryCount) {
+ if (DBG) {
+ log("configureRetry: forDefault=" + forDefault + " retryCount=" + retryCount +
+ " dc=" + dc);
+ }
if (dc == null) return;
if (!dc.configureRetry(getReryConfig(forDefault))) {
@@ -2305,6 +2342,7 @@
}
}
}
+ dc.setRetryCount(retryCount);
}
private void destroyDataConnections() {
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java
index 3c9c0b2..d2faceb 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/cdma/CdmaSmsCbTest.java
@@ -705,4 +705,42 @@
assertEquals(0, programData.getMaxMessages());
assertEquals(CdmaSmsCbProgramData.ALERT_OPTION_NO_ALERT, programData.getAlertOption());
}
+
+ private static final byte[] CMAS_TEST_BEARER_DATA = {
+ 0x00, 0x03, 0x1C, 0x78, 0x00, 0x01, 0x59, 0x02, (byte) 0xB8, 0x00, 0x02, 0x10, (byte) 0xAA,
+ 0x68, (byte) 0xD3, (byte) 0xCD, 0x06, (byte) 0x9E, 0x68, 0x30, (byte) 0xA0, (byte) 0xE9,
+ (byte) 0x97, (byte) 0x9F, 0x44, 0x1B, (byte) 0xF3, 0x20, (byte) 0xE9, (byte) 0xA3,
+ 0x2A, 0x08, 0x7B, (byte) 0xF6, (byte) 0xED, (byte) 0xCB, (byte) 0xCB, 0x1E, (byte) 0x9C,
+ 0x3B, 0x10, 0x4D, (byte) 0xDF, (byte) 0x8B, 0x4E,
+ (byte) 0xCC, (byte) 0xA8, 0x20, (byte) 0xEC, (byte) 0xCB, (byte) 0xCB, (byte) 0xA2, 0x0A,
+ 0x7E, 0x79, (byte) 0xF4, (byte) 0xCB, (byte) 0xB5, 0x72, 0x0A, (byte) 0x9A, 0x34,
+ (byte) 0xF3, 0x41, (byte) 0xA7, (byte) 0x9A, 0x0D, (byte) 0xFB, (byte) 0xB6, 0x79, 0x41,
+ (byte) 0x85, 0x07, 0x4C, (byte) 0xBC, (byte) 0xFA, 0x2E, 0x00, 0x08, 0x20, 0x58, 0x38,
+ (byte) 0x88, (byte) 0x80, 0x10, 0x54, 0x06, 0x38, 0x20, 0x60,
+ 0x30, (byte) 0xA8, (byte) 0x81, (byte) 0x90, 0x20, 0x08
+ };
+
+ // Test case for CMAS test message received on the Sprint network.
+ public void testDecodeRawBearerData() throws Exception {
+ Parcel p = createBroadcastParcel(SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE);
+ SmsMessage msg = createMessageFromParcel(p, CMAS_TEST_BEARER_DATA);
+
+ SmsCbMessage cbMessage = msg.parseBroadcastSms();
+ assertNotNull("expected non-null for bearer data", cbMessage);
+ assertEquals("geoScope", cbMessage.getGeographicalScope(), 1);
+ assertEquals("serialNumber", cbMessage.getSerialNumber(), 51072);
+ assertEquals("serviceCategory", cbMessage.getServiceCategory(),
+ SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE);
+ assertEquals("payload", cbMessage.getMessageBody(),
+ "This is a test of the Commercial Mobile Alert System. This is only a test.");
+
+ SmsCbCmasInfo cmasInfo = cbMessage.getCmasWarningInfo();
+ assertNotNull("expected non-null for CMAS info", cmasInfo);
+ assertEquals("category", cmasInfo.getCategory(), SmsCbCmasInfo.CMAS_CATEGORY_OTHER);
+ assertEquals("responseType", cmasInfo.getResponseType(),
+ SmsCbCmasInfo.CMAS_RESPONSE_TYPE_NONE);
+ assertEquals("severity", cmasInfo.getSeverity(), SmsCbCmasInfo.CMAS_SEVERITY_SEVERE);
+ assertEquals("urgency", cmasInfo.getUrgency(), SmsCbCmasInfo.CMAS_URGENCY_EXPECTED);
+ assertEquals("certainty", cmasInfo.getCertainty(), SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY);
+ }
}
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/mockril/MockRilTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/mockril/MockRilTest.java
index 3149ee1..a607ad0 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/mockril/MockRilTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/mockril/MockRilTest.java
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+
package com.android.internal.telephony.mockril;
import android.util.Log;
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index 9e103ac..c5fdffb 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -277,15 +277,6 @@
</activity>
<activity
- android:name="ViewLayersActivity6"
- android:label="_ViewLayers6">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity
android:name="AlphaLayersActivity"
android:label="_αLayers">
<intent-filter>
diff --git a/tests/HwAccelerationTest/res/layout/view_layers_5.xml b/tests/HwAccelerationTest/res/layout/view_layers_5.xml
index 653f3a8..36cf8c9 100644
--- a/tests/HwAccelerationTest/res/layout/view_layers_5.xml
+++ b/tests/HwAccelerationTest/res/layout/view_layers_5.xml
@@ -26,16 +26,28 @@
android:layout_weight="1">
<Button
- android:onClick="setLayerEnabled"
+ android:onClick="enableLayer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enable layer" />
<Button
- android:onClick="setLayerDisabled"
+ android:onClick="disableLayer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Disable layer" />
+
+ <Button
+ android:onClick="shrinkLayer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Shrink layer" />
+
+ <Button
+ android:onClick="growLayer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Grow layer" />
</LinearLayout>
diff --git a/tests/HwAccelerationTest/res/layout/view_layers_6.xml b/tests/HwAccelerationTest/res/layout/view_layers_6.xml
deleted file mode 100644
index 36cf8c9..0000000
--- a/tests/HwAccelerationTest/res/layout/view_layers_6.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1">
-
- <Button
- android:onClick="enableLayer"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Enable layer" />
-
- <Button
- android:onClick="disableLayer"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Disable layer" />
-
- <Button
- android:onClick="shrinkLayer"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Shrink layer" />
-
- <Button
- android:onClick="growLayer"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Grow layer" />
-
- </LinearLayout>
-
- <ListView
- android:id="@+id/list1"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1" />
-
-</LinearLayout>
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java
index 95a5b0d..2664977 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java
@@ -32,30 +32,40 @@
@SuppressWarnings({"UnusedDeclaration"})
public class ViewLayersActivity5 extends Activity {
+ private final Paint mPaint = new Paint();
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_layers_5);
+ mPaint.setColorFilter(new PorterDuffColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY));
+
setupList(R.id.list1);
}
- public void setLayerDisabled(View v) {
- ((ViewGroup) findViewById(R.id.list1).getParent()).setChildrenLayersEnabled(false);
+ public void enableLayer(View v) {
+ findViewById(R.id.list1).setLayerType(View.LAYER_TYPE_HARDWARE, mPaint);
+ }
+
+ public void disableLayer(View v) {
+ findViewById(R.id.list1).setLayerType(View.LAYER_TYPE_NONE, null);
}
- public void setLayerEnabled(View v) {
- ((ViewGroup) findViewById(R.id.list1).getParent()).setChildrenLayersEnabled(true);
+ public void growLayer(View v) {
+ findViewById(R.id.list1).getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
+ findViewById(R.id.list1).requestLayout();
+ }
+
+ public void shrinkLayer(View v) {
+ findViewById(R.id.list1).getLayoutParams().height = 300;
+ findViewById(R.id.list1).requestLayout();
}
private void setupList(int listId) {
- final Paint p = new Paint();
- p.setColorFilter(new PorterDuffColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY));
-
final ListView list = (ListView) findViewById(listId);
list.setAdapter(new SimpleListAdapter(this));
- list.setLayerType(View.LAYER_TYPE_HARDWARE, p);
}
private static class SimpleListAdapter extends ArrayAdapter<String> {
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity6.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity6.java
deleted file mode 100644
index 2edfec7..0000000
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity6.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Paint;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import android.widget.TextView;
-
-@SuppressWarnings({"UnusedDeclaration"})
-public class ViewLayersActivity6 extends Activity {
- private final Paint mPaint = new Paint();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.view_layers_6);
-
- mPaint.setColorFilter(new PorterDuffColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY));
-
- setupList(R.id.list1);
- }
-
- public void enableLayer(View v) {
- findViewById(R.id.list1).setLayerType(View.LAYER_TYPE_HARDWARE, mPaint);
- }
-
- public void disableLayer(View v) {
- findViewById(R.id.list1).setLayerType(View.LAYER_TYPE_NONE, null);
- }
-
- public void growLayer(View v) {
- findViewById(R.id.list1).getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
- findViewById(R.id.list1).requestLayout();
- }
-
- public void shrinkLayer(View v) {
- findViewById(R.id.list1).getLayoutParams().height = 300;
- findViewById(R.id.list1).requestLayout();
- }
-
- private void setupList(int listId) {
- final ListView list = (ListView) findViewById(listId);
- list.setAdapter(new SimpleListAdapter(this));
- }
-
- private static class SimpleListAdapter extends ArrayAdapter<String> {
- public SimpleListAdapter(Context context) {
- super(context, android.R.layout.simple_list_item_1, DATA_LIST);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- TextView v = (TextView) super.getView(position, convertView, parent);
- final Resources r = getContext().getResources();
- final DisplayMetrics metrics = r.getDisplayMetrics();
- v.setCompoundDrawablePadding((int) (6 * metrics.density + 0.5f));
- v.setCompoundDrawablesWithIntrinsicBounds(r.getDrawable(R.drawable.icon),
- null, null, null);
- return v;
- }
- }
-
- private static final String[] DATA_LIST = {
- "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
- "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
- "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
- "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
- "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
- "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
- "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria",
- "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
- "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
- "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
- "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
- "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
- "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
- "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
- "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
- "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
- "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
- "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
- "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
- "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
- "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
- "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
- "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
- "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
- "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
- "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
- "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
- "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
- "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
- "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
- "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
- "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
- "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
- "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
- "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
- "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
- "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
- "Ukraine", "United Arab Emirates", "United Kingdom",
- "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
- "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
- "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
- };
-}
diff --git a/tests/RenderScriptTests/Balls/Android.mk b/tests/RenderScriptTests/Balls/Android.mk
index b109584..77281ce 100644
--- a/tests/RenderScriptTests/Balls/Android.mk
+++ b/tests/RenderScriptTests/Balls/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/ComputePerf/Android.mk b/tests/RenderScriptTests/ComputePerf/Android.mk
index 1d67d29..6ed5884 100644
--- a/tests/RenderScriptTests/ComputePerf/Android.mk
+++ b/tests/RenderScriptTests/ComputePerf/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/FBOTest/Android.mk b/tests/RenderScriptTests/FBOTest/Android.mk
index 1df7b26..434d592 100644
--- a/tests/RenderScriptTests/FBOTest/Android.mk
+++ b/tests/RenderScriptTests/FBOTest/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/Fountain/Android.mk b/tests/RenderScriptTests/Fountain/Android.mk
index 2049ecf..4a6560b 100644
--- a/tests/RenderScriptTests/Fountain/Android.mk
+++ b/tests/RenderScriptTests/Fountain/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/FountainFbo/Android.mk b/tests/RenderScriptTests/FountainFbo/Android.mk
index 55a4fd8..4535eb1 100644
--- a/tests/RenderScriptTests/FountainFbo/Android.mk
+++ b/tests/RenderScriptTests/FountainFbo/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/Fountain_v11/Android.mk b/tests/RenderScriptTests/Fountain_v11/Android.mk
index e51115c..fe7f9e7 100644
--- a/tests/RenderScriptTests/Fountain_v11/Android.mk
+++ b/tests/RenderScriptTests/Fountain_v11/Android.mk
@@ -19,7 +19,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript
diff --git a/tests/RenderScriptTests/HelloWorld/Android.mk b/tests/RenderScriptTests/HelloWorld/Android.mk
index 2af1cdb..54824f4 100644
--- a/tests/RenderScriptTests/HelloWorld/Android.mk
+++ b/tests/RenderScriptTests/HelloWorld/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/LivePreview/Android.mk b/tests/RenderScriptTests/LivePreview/Android.mk
new file mode 100644
index 0000000..1b45573
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/Android.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2012 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
+
+LOCAL_PACKAGE_NAME := PreviewRS
+
+include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/LivePreview/AndroidManifest.xml b/tests/RenderScriptTests/LivePreview/AndroidManifest.xml
new file mode 100644
index 0000000..1b91464
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2012 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.rs.livepreview">
+ <uses-sdk android:minSdkVersion="14" />
+ <uses-permission android:name="android.permission.CAMERA" />
+ <application android:label="Preview FS"
+ android:hardwareAccelerated="true">
+
+ <activity android:name="CameraPreviewActivity"
+ android:label="Preview FS"
+ android:screenOrientation="landscape">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ </application>
+</manifest>
diff --git a/tests/RenderScriptTests/LivePreview/res/drawable-nodpi/city.png b/tests/RenderScriptTests/LivePreview/res/drawable-nodpi/city.png
new file mode 100644
index 0000000..856eeff
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/res/drawable-nodpi/city.png
Binary files differ
diff --git a/tests/RenderScriptTests/LivePreview/res/layout/cf_format_list_item.xml b/tests/RenderScriptTests/LivePreview/res/layout/cf_format_list_item.xml
new file mode 100644
index 0000000..8196bbf
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/res/layout/cf_format_list_item.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:padding="10dp"
+ android:textSize="16sp"
+/>
diff --git a/tests/RenderScriptTests/LivePreview/res/layout/cf_main.xml b/tests/RenderScriptTests/LivePreview/res/layout/cf_main.xml
new file mode 100644
index 0000000..c7dcca5
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/res/layout/cf_main.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" >
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="0dp"
+ android:layout_height="fill_parent"
+ android:layout_weight="3" >
+
+ <TextureView
+ android:id="@+id/preview_view"
+ android:layout_height="0dp"
+ android:layout_width="fill_parent"
+ android:layout_weight="3" />
+ <TextView
+ android:id="@+id/preview_label"
+ android:layout_height="wrap_content"
+ android:layout_width="fill_parent"
+ android:text="@string/cf_preview_label"
+ android:padding="2dp"
+ android:textSize="16sp"
+ android:gravity="center" />
+
+ </LinearLayout>
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="0dp"
+ android:layout_height="fill_parent"
+ android:layout_weight="3" >
+
+ <ImageView
+ android:id="@+id/format_view"
+ android:layout_height="0dp"
+ android:layout_width="fill_parent"
+ android:layout_weight="3" />
+ <TextView
+ android:id="@+id/format_label"
+ android:layout_height="wrap_content"
+ android:layout_width="fill_parent"
+ android:text="@string/cf_format_label"
+ android:padding="2dp"
+ android:textSize="16sp"
+ android:gravity="center" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="0dp"
+ android:layout_height="fill_parent"
+ android:layout_weight="2" >
+
+ <Spinner
+ android:id="@+id/cameras_selection"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"/>
+ <Spinner
+ android:id="@+id/resolution_selection"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"/>
+ <Spinner
+ android:id="@+id/format_selection"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"/>
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+
+</LinearLayout>
diff --git a/tests/RenderScriptTests/LivePreview/res/layout/main.xml b/tests/RenderScriptTests/LivePreview/res/layout/main.xml
new file mode 100644
index 0000000..a6a075c
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/res/layout/main.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:id="@+id/toplevel">
+ <SurfaceView
+ android:id="@+id/surface"
+ android:layout_width="1dip"
+ android:layout_height="1dip" />
+ <ScrollView
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <ImageView
+ android:id="@+id/display"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/benchmark"
+ android:onClick="benchmark"/>
+ <TextView
+ android:id="@+id/benchmarkText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:text="@string/saturation"/>
+ </LinearLayout>
+ <TextView
+ android:id="@+id/inSaturationText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/saturation"/>
+ <SeekBar
+ android:id="@+id/inSaturation"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/outWhiteText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:textSize="8pt"
+ android:text="@string/out_white"/>
+ <SeekBar
+ android:id="@+id/outWhite"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/inWhiteText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/in_white"/>
+ <SeekBar
+ android:id="@+id/inWhite"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/outBlackText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/out_black"/>
+ <SeekBar
+ android:id="@+id/outBlack"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/inBlackText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/in_black"/>
+ <SeekBar
+ android:id="@+id/inBlack"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/inGammaText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/gamma"/>
+ <SeekBar
+ android:id="@+id/inGamma"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
+
diff --git a/tests/RenderScriptTests/LivePreview/res/layout/rs.xml b/tests/RenderScriptTests/LivePreview/res/layout/rs.xml
new file mode 100644
index 0000000..6fde1b9
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/res/layout/rs.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:id="@+id/toplevel">
+ <SurfaceView
+ android:id="@+id/surface"
+ android:layout_width="1dip"
+ android:layout_height="1dip" />
+ <ScrollView
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <TextureView
+ android:id="@+id/display"
+ android:layout_width="800sp"
+ android:layout_height="423sp" />
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/benchmark"
+ android:onClick="benchmark"/>
+ <TextView
+ android:id="@+id/benchmarkText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:text="@string/saturation"/>
+ </LinearLayout>
+ <TextView
+ android:id="@+id/inSaturationText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/saturation"/>
+ <SeekBar
+ android:id="@+id/inSaturation"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/outWhiteText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:textSize="8pt"
+ android:text="@string/out_white"/>
+ <SeekBar
+ android:id="@+id/outWhite"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/inWhiteText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/in_white"/>
+ <SeekBar
+ android:id="@+id/inWhite"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/outBlackText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/out_black"/>
+ <SeekBar
+ android:id="@+id/outBlack"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/inBlackText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/in_black"/>
+ <SeekBar
+ android:id="@+id/inBlack"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:id="@+id/inGammaText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8pt"
+ android:layout_marginLeft="10sp"
+ android:layout_marginTop="15sp"
+ android:text="@string/gamma"/>
+ <SeekBar
+ android:id="@+id/inGamma"
+ android:layout_marginLeft="10sp"
+ android:layout_marginRight="10sp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
+
diff --git a/tests/RenderScriptTests/LivePreview/res/values/strings.xml b/tests/RenderScriptTests/LivePreview/res/values/strings.xml
new file mode 100644
index 0000000..d651bfb
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/res/values/strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="in_white">In White</string>
+ <string name="out_white">Out White</string>
+ <string name="in_black">In Black</string>
+ <string name="out_black">Out Black</string>
+ <string name="gamma">Gamma</string>
+ <string name="saturation">Saturation</string>
+ <string name="benchmark">Benchmark</string>
+
+ <string name="app_name">CTS Verifier</string>
+ <string name="welcome_text">Welcome to the CTS Verifier!</string>
+ <string name="version_text">%1$s</string>
+ <string name="continue_button_text">Continue</string>
+
+ <string name="cf_preview_label">Normal preview</string>
+ <string name="cf_format_label">Processed callback data</string>
+ <string name="camera_format">Camera Formats</string>
+
+
+</resources>
diff --git a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
new file mode 100644
index 0000000..f21331f
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
@@ -0,0 +1,380 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.rs.livepreview;
+
+//import com.android.cts.verifier.PassFailButtons;
+//import com.android.cts.verifier.R;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.ImageFormat;
+import android.graphics.Matrix;
+import android.graphics.SurfaceTexture;
+import android.hardware.Camera;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.View;
+import android.view.TextureView;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.Spinner;
+
+import java.io.IOException;
+import java.lang.InterruptedException;
+import java.lang.Math;
+import java.lang.Thread;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.TreeSet;
+
+import android.renderscript.*;
+
+/**
+ * Tests for manual verification of the CDD-required camera output formats
+ * for preview callbacks
+ */
+public class CameraPreviewActivity extends Activity
+ implements TextureView.SurfaceTextureListener, Camera.PreviewCallback {
+
+ private static final String TAG = "CameraFormats";
+
+ private TextureView mPreviewView;
+ private SurfaceTexture mPreviewTexture;
+ private int mPreviewTexWidth;
+ private int mPreviewTexHeight;
+
+ private ImageView mFormatView;
+
+ private Spinner mCameraSpinner;
+ private Spinner mResolutionSpinner;
+
+ private int mCurrentCameraId = -1;
+ private Camera mCamera;
+
+ private List<Camera.Size> mPreviewSizes;
+ private Camera.Size mNextPreviewSize;
+ private Camera.Size mPreviewSize;
+
+ private Bitmap mCallbackBitmap;
+
+ private static final int STATE_OFF = 0;
+ private static final int STATE_PREVIEW = 1;
+ private static final int STATE_NO_CALLBACKS = 2;
+ private int mState = STATE_OFF;
+ private boolean mProcessInProgress = false;
+ private boolean mProcessingFirstFrame = false;
+
+
+ private RenderScript mRS;
+ private RsYuv mFilterYuv;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.cf_main);
+
+ mPreviewView = (TextureView) findViewById(R.id.preview_view);
+ mFormatView = (ImageView) findViewById(R.id.format_view);
+
+ mPreviewView.setSurfaceTextureListener(this);
+
+ int numCameras = Camera.getNumberOfCameras();
+ String[] cameraNames = new String[numCameras];
+ for (int i = 0; i < numCameras; i++) {
+ cameraNames[i] = "Camera " + i;
+ }
+ mCameraSpinner = (Spinner) findViewById(R.id.cameras_selection);
+ mCameraSpinner.setAdapter(
+ new ArrayAdapter<String>(
+ this, R.layout.cf_format_list_item, cameraNames));
+ mCameraSpinner.setOnItemSelectedListener(mCameraSpinnerListener);
+
+ mResolutionSpinner = (Spinner) findViewById(R.id.resolution_selection);
+ mResolutionSpinner.setOnItemSelectedListener(mResolutionSelectedListener);
+
+
+ mRS = RenderScript.create(this);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ setUpCamera(mCameraSpinner.getSelectedItemPosition());
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ shutdownCamera();
+ }
+
+ public void onSurfaceTextureAvailable(SurfaceTexture surface,
+ int width, int height) {
+ mPreviewTexture = surface;
+ mPreviewTexWidth = width;
+ mPreviewTexHeight = height;
+ if (mCamera != null) {
+ startPreview();
+ }
+ }
+
+ public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
+ // Ignored, Camera does all the work for us
+ }
+
+ public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
+ return true;
+ }
+
+ public void onSurfaceTextureUpdated(SurfaceTexture surface) {
+ // Invoked every time there's a new Camera preview frame
+ }
+
+ private AdapterView.OnItemSelectedListener mCameraSpinnerListener =
+ new AdapterView.OnItemSelectedListener() {
+ public void onItemSelected(AdapterView<?> parent,
+ View view, int pos, long id) {
+ if (mCurrentCameraId != pos) {
+ setUpCamera(pos);
+ }
+ }
+
+ public void onNothingSelected(AdapterView parent) {
+
+ }
+
+ };
+
+ private AdapterView.OnItemSelectedListener mResolutionSelectedListener =
+ new AdapterView.OnItemSelectedListener() {
+ public void onItemSelected(AdapterView<?> parent,
+ View view, int position, long id) {
+ if (mPreviewSizes.get(position) != mPreviewSize) {
+ mNextPreviewSize = mPreviewSizes.get(position);
+ startPreview();
+ }
+ }
+
+ public void onNothingSelected(AdapterView parent) {
+
+ }
+
+ };
+
+
+ private void setUpCamera(int id) {
+ shutdownCamera();
+
+ mCurrentCameraId = id;
+ mCamera = Camera.open(id);
+ Camera.Parameters p = mCamera.getParameters();
+
+ // Get preview resolutions
+
+ List<Camera.Size> unsortedSizes = p.getSupportedPreviewSizes();
+
+ class SizeCompare implements Comparator<Camera.Size> {
+ public int compare(Camera.Size lhs, Camera.Size rhs) {
+ if (lhs.width < rhs.width) return -1;
+ if (lhs.width > rhs.width) return 1;
+ if (lhs.height < rhs.height) return -1;
+ if (lhs.height > rhs.height) return 1;
+ return 0;
+ }
+ };
+
+ SizeCompare s = new SizeCompare();
+ TreeSet<Camera.Size> sortedResolutions = new TreeSet<Camera.Size>(s);
+ sortedResolutions.addAll(unsortedSizes);
+
+ mPreviewSizes = new ArrayList<Camera.Size>(sortedResolutions);
+
+ String[] availableSizeNames = new String[mPreviewSizes.size()];
+ for (int i = 0; i < mPreviewSizes.size(); i++) {
+ availableSizeNames[i] =
+ Integer.toString(mPreviewSizes.get(i).width) + " x " +
+ Integer.toString(mPreviewSizes.get(i).height);
+ }
+ mResolutionSpinner.setAdapter(
+ new ArrayAdapter<String>(
+ this, R.layout.cf_format_list_item, availableSizeNames));
+
+
+ // Set initial values
+
+ mNextPreviewSize = mPreviewSizes.get(0);
+ mResolutionSpinner.setSelection(0);
+
+ if (mPreviewTexture != null) {
+ startPreview();
+ }
+ }
+
+ private void shutdownCamera() {
+ if (mCamera != null) {
+ mCamera.setPreviewCallbackWithBuffer(null);
+ mCamera.stopPreview();
+ mCamera.release();
+ mCamera = null;
+ mState = STATE_OFF;
+ }
+ }
+
+ private void startPreview() {
+ if (mState != STATE_OFF) {
+ // Stop for a while to drain callbacks
+ mCamera.setPreviewCallbackWithBuffer(null);
+ mCamera.stopPreview();
+ mState = STATE_OFF;
+ Handler h = new Handler();
+ Runnable mDelayedPreview = new Runnable() {
+ public void run() {
+ startPreview();
+ }
+ };
+ h.postDelayed(mDelayedPreview, 300);
+ return;
+ }
+ mState = STATE_PREVIEW;
+
+ Matrix transform = new Matrix();
+ float widthRatio = mNextPreviewSize.width / (float)mPreviewTexWidth;
+ float heightRatio = mNextPreviewSize.height / (float)mPreviewTexHeight;
+
+ transform.setScale(1, heightRatio/widthRatio);
+ transform.postTranslate(0,
+ mPreviewTexHeight * (1 - heightRatio/widthRatio)/2);
+
+ mPreviewView.setTransform(transform);
+
+ mPreviewSize = mNextPreviewSize;
+
+ Camera.Parameters p = mCamera.getParameters();
+ p.setPreviewFormat(ImageFormat.NV21);
+ p.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
+ mCamera.setParameters(p);
+
+ mCamera.setPreviewCallbackWithBuffer(this);
+ int expectedBytes = mPreviewSize.width * mPreviewSize.height *
+ ImageFormat.getBitsPerPixel(ImageFormat.NV21) / 8;
+ for (int i=0; i < 4; i++) {
+ mCamera.addCallbackBuffer(new byte[expectedBytes]);
+ }
+ //mFormatView.setColorFilter(mYuv2RgbFilter);
+
+ mProcessingFirstFrame = true;
+ try {
+ mCamera.setPreviewTexture(mPreviewTexture);
+ mCamera.startPreview();
+ } catch (IOException ioe) {
+ // Something bad happened
+ Log.e(TAG, "Unable to start up preview");
+ }
+
+ }
+
+
+ private class ProcessPreviewDataTask extends AsyncTask<byte[], Void, Boolean> {
+ protected Boolean doInBackground(byte[]... datas) {
+ byte[] data = datas[0];
+
+ long t1 = java.lang.System.currentTimeMillis();
+
+ mFilterYuv.execute(data);
+ mFilterYuv.copyOut(mCallbackBitmap);
+
+ long t2 = java.lang.System.currentTimeMillis();
+ mTiming[mTimingSlot++] = t2 - t1;
+ if (mTimingSlot >= mTiming.length) {
+ float total = 0;
+ for (int i=0; i<mTiming.length; i++) {
+ total += (float)mTiming[i];
+ }
+ total /= mTiming.length;
+ Log.e(TAG, "time + " + total);
+ mTimingSlot = 0;
+ }
+
+ mCamera.addCallbackBuffer(data);
+ mProcessInProgress = false;
+ return true;
+ }
+
+ protected void onPostExecute(Boolean result) {
+ mFormatView.invalidate();
+ }
+
+ }
+
+ private long mTiming[] = new long[50];
+ private int mTimingSlot = 0;
+
+ public void onPreviewFrame(byte[] data, Camera camera) {
+ if (mProcessInProgress || mState != STATE_PREVIEW) {
+ mCamera.addCallbackBuffer(data);
+ return;
+ }
+ if (data == null) {
+ return;
+ }
+
+ int expectedBytes = mPreviewSize.width * mPreviewSize.height *
+ ImageFormat.getBitsPerPixel(ImageFormat.NV21) / 8;
+
+ if (expectedBytes != data.length) {
+ Log.e(TAG, "Mismatched size of buffer! Expected ");
+
+ mState = STATE_NO_CALLBACKS;
+ mCamera.setPreviewCallbackWithBuffer(null);
+ return;
+ }
+
+ mProcessInProgress = true;
+
+ if (mCallbackBitmap == null ||
+ mPreviewSize.width != mCallbackBitmap.getWidth() ||
+ mPreviewSize.height != mCallbackBitmap.getHeight() ) {
+ mCallbackBitmap =
+ Bitmap.createBitmap(
+ mPreviewSize.width, mPreviewSize.height,
+ Bitmap.Config.ARGB_8888);
+ mFilterYuv = new RsYuv(mRS, getResources(), mPreviewSize.width, mPreviewSize.height);
+ mFormatView.setImageBitmap(mCallbackBitmap);
+ }
+
+
+ mFormatView.invalidate();
+
+ mCamera.addCallbackBuffer(data);
+ mProcessInProgress = true;
+ new ProcessPreviewDataTask().execute(data);
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/RsYuv.java b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/RsYuv.java
new file mode 100644
index 0000000..cced198
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/RsYuv.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.rs.livepreview;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.os.Bundle;
+import android.graphics.SurfaceTexture;
+import android.renderscript.Allocation;
+import android.renderscript.Matrix3f;
+import android.renderscript.RenderScript;
+import android.util.Log;
+import android.view.TextureView;
+import android.view.View;
+
+import android.content.res.Resources;
+import android.renderscript.*;
+
+import android.graphics.Bitmap;
+
+public class RsYuv
+{
+ private int mHeight;
+ private int mWidth;
+ private RenderScript mRS;
+ private Allocation mAllocationOut;
+ private Allocation mAllocationIn;
+ private ScriptC_yuv mScript;
+
+ RsYuv(RenderScript rs, Resources res, int width, int height) {
+ mHeight = height;
+ mWidth = width;
+ mRS = rs;
+ mScript = new ScriptC_yuv(mRS, res, R.raw.yuv);
+ mScript.invoke_setSize(mWidth, mHeight);
+
+ Type.Builder tb = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+ tb.setX(mWidth);
+ tb.setY(mHeight);
+
+ mAllocationOut = Allocation.createTyped(rs, tb.create());
+ mAllocationIn = Allocation.createSized(rs, Element.U8(mRS), (mHeight * mWidth) +
+ ((mHeight / 2) * (mWidth / 2) * 2));
+
+ mScript.bind_gYuvIn(mAllocationIn);
+ }
+
+ private long mTiming[] = new long[50];
+ private int mTimingSlot = 0;
+
+ void execute(byte[] yuv) {
+ mAllocationIn.copyFrom(yuv);
+ mRS.finish();
+
+ long t1 = java.lang.System.currentTimeMillis();
+ mScript.forEach_root(mAllocationOut);
+ mRS.finish();
+ long t2 = java.lang.System.currentTimeMillis();
+
+ mTiming[mTimingSlot++] = t2 - t1;
+ if (mTimingSlot >= mTiming.length) {
+ float total = 0;
+ for (int i=0; i<mTiming.length; i++) {
+ total += (float)mTiming[i];
+ }
+ total /= mTiming.length;
+ Log.e("yuv", "core time = " + total);
+ mTimingSlot = 0;
+ }
+ }
+
+ void copyOut(Bitmap b) {
+ mAllocationOut.copyTo(b);
+ }
+
+}
+
diff --git a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs
new file mode 100644
index 0000000..6057eff
--- /dev/null
+++ b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs
@@ -0,0 +1,132 @@
+
+#pragma version(1)
+#pragma rs java_package_name(com.android.rs.livepreview)
+#pragma rs_fp_relaxed
+
+uchar *gYuvIn;
+
+static int gWidth;
+static int gHeight;
+static uchar crossProcess_tableR[256];
+static uchar crossProcess_tableG[256];
+static uchar crossProcess_tableB[256];
+static uchar vignette_table[512];
+
+
+static float4 crossProcess(float4 color) {
+ float4 ncolor = 0.f;
+ float v;
+
+ if (color.r < 0.5f) {
+ v = color.r;
+ ncolor.r = 4.0f * v * v * v;
+ } else {
+ v = 1.0f - color.r;
+ ncolor.r = 1.0f - (4.0f * v * v * v);
+ }
+
+ if (color.g < 0.5f) {
+ v = color.g;
+ ncolor.g = 2.0f * v * v;
+ } else {
+ v = 1.0f - color.g;
+ ncolor.g = 1.0f - (2.0f * v * v);
+ }
+
+ ncolor.b = color.b * 0.5f + 0.25f;
+ ncolor.a = color.a;
+ return ncolor;
+}
+
+static uchar4 crossProcess_i(uchar4 color) {
+ uchar4 ncolor = color;
+ ncolor.r = crossProcess_tableR[color.r];
+ ncolor.g = crossProcess_tableG[color.g];
+ ncolor.b = crossProcess_tableB[color.b];
+ return ncolor;
+}
+
+
+float temp = 0.2f;
+static float4 colortemp(float4 color) {
+ float4 new_color = color;
+ float4 t = color * ((float4)1.0f - color) * temp;
+
+ new_color.r = color.r + t.r;
+ new_color.b = color.b - t.b;
+ if (temp > 0.0f) {
+ color.g = color.g + t.g * 0.25f;
+ }
+ float max_value = max(new_color.r, max(new_color.g, new_color.b));
+ if (max_value > 1.0f) {
+ new_color /= max_value;
+ }
+
+ return new_color;
+}
+
+
+static float vignette_dist_mod;
+int2 vignette_half_dims;
+static uchar4 vignette(uchar4 color, uint32_t x, uint32_t y) {
+ int2 xy = {x, y};
+ xy -= vignette_half_dims;
+ xy *= xy;
+
+ float d = vignette_dist_mod * (xy.x + xy.y);
+ ushort4 c = convert_ushort4(color);
+ c *= vignette_table[(int)d];
+ c >>= (ushort4)8;
+ return convert_uchar4(c);
+}
+
+void root(uchar4 *out, uint32_t x, uint32_t y) {
+ uchar Y = gYuvIn[(y * gWidth) + x];
+ uchar *uv = &gYuvIn[gWidth * gHeight];
+ uv += (((x>>1)<<1) + (y>>1) * gWidth);
+
+ uchar4 p = rsYuvToRGBA_uchar4(Y, uv[1], uv[0]);
+ p = crossProcess_i(p);
+ p = vignette(p, x, y);
+
+ out->rgba = p;
+ out->a = 0xff;
+}
+
+float vignetteScale = 0.5f;
+float vignetteShade = 0.85f;
+
+static void precompute() {
+ for(int i=0; i <256; i++) {
+ float4 f = ((float)i) / 255.f;
+ float4 res = crossProcess(f);
+ res = colortemp(res);
+ crossProcess_tableR[i] = (uchar)(res.r * 255.f);
+ crossProcess_tableG[i] = (uchar)(res.g * 255.f);
+ crossProcess_tableB[i] = (uchar)(res.b * 255.f);
+ }
+
+ for(int i=0; i <512; i++) {
+ const float slope = 20.0f;
+ float f = ((float)i) / 511.f;
+
+ float range = 1.30f - sqrt(vignetteScale) * 0.7f;
+ float lumen = vignetteShade / (1.0f + exp((sqrt(f) - range) * slope)) + (1.0f - vignetteShade);
+ lumen = clamp(lumen, 0.f, 1.f);
+
+ vignette_table[i] = (uchar)(lumen * 255.f + 0.5f);
+ }
+}
+
+void init() {
+ precompute();
+}
+
+void setSize(int w, int h) {
+ gWidth = w;
+ gHeight = h;
+ vignette_half_dims = (int2){w / 2, h / 2};
+ vignette_dist_mod = 512.f;
+ vignette_dist_mod /= (float)(w*w + h*h) / 4.f;
+
+}
diff --git a/tests/RenderScriptTests/MiscSamples/Android.mk b/tests/RenderScriptTests/MiscSamples/Android.mk
index 6b8b691..bdff46a 100644
--- a/tests/RenderScriptTests/MiscSamples/Android.mk
+++ b/tests/RenderScriptTests/MiscSamples/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/ModelViewer/Android.mk b/tests/RenderScriptTests/ModelViewer/Android.mk
index 1d9bacf..18ceac5 100644
--- a/tests/RenderScriptTests/ModelViewer/Android.mk
+++ b/tests/RenderScriptTests/ModelViewer/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript
diff --git a/tests/RenderScriptTests/SampleTest/Android.mk b/tests/RenderScriptTests/SampleTest/Android.mk
index 7d74c55..f3439b0 100644
--- a/tests/RenderScriptTests/SampleTest/Android.mk
+++ b/tests/RenderScriptTests/SampleTest/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/SceneGraph/Android.mk b/tests/RenderScriptTests/SceneGraph/Android.mk
index ba4b3c5..163a95d 100644
--- a/tests/RenderScriptTests/SceneGraph/Android.mk
+++ b/tests/RenderScriptTests/SceneGraph/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/ShadersTest/Android.mk b/tests/RenderScriptTests/ShadersTest/Android.mk
index 109b0a0..0912591 100644
--- a/tests/RenderScriptTests/ShadersTest/Android.mk
+++ b/tests/RenderScriptTests/ShadersTest/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/SurfaceTexture/Android.mk b/tests/RenderScriptTests/SurfaceTexture/Android.mk
index bbd4d55..d5262ee2 100644
--- a/tests/RenderScriptTests/SurfaceTexture/Android.mk
+++ b/tests/RenderScriptTests/SurfaceTexture/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/tests/Android.mk b/tests/RenderScriptTests/tests/Android.mk
index 880b80f..198693c 100644
--- a/tests/RenderScriptTests/tests/Android.mk
+++ b/tests/RenderScriptTests/tests/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/tests_v11/Android.mk b/tests/RenderScriptTests/tests_v11/Android.mk
index 93a429b..52d326b 100644
--- a/tests/RenderScriptTests/tests_v11/Android.mk
+++ b/tests/RenderScriptTests/tests_v11/Android.mk
@@ -19,7 +19,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tests/RenderScriptTests/tests_v14/Android.mk b/tests/RenderScriptTests/tests_v14/Android.mk
index c4c3a37..a4386a44 100644
--- a/tests/RenderScriptTests/tests_v14/Android.mk
+++ b/tests/RenderScriptTests/tests_v14/Android.mk
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
diff --git a/tools/layoutlib/bridge/src/android/util/LruCache.java b/tools/layoutlib/bridge/src/android/util/LruCache.java
new file mode 100644
index 0000000..5208606
--- /dev/null
+++ b/tools/layoutlib/bridge/src/android/util/LruCache.java
@@ -0,0 +1,391 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * BEGIN LAYOUTLIB CHANGE
+ * This is a custom version that doesn't use the non standard LinkedHashMap#eldest.
+ * END LAYOUTLIB CHANGE
+ *
+ * A cache that holds strong references to a limited number of values. Each time
+ * a value is accessed, it is moved to the head of a queue. When a value is
+ * added to a full cache, the value at the end of that queue is evicted and may
+ * become eligible for garbage collection.
+ *
+ * <p>If your cached values hold resources that need to be explicitly released,
+ * override {@link #entryRemoved}.
+ *
+ * <p>If a cache miss should be computed on demand for the corresponding keys,
+ * override {@link #create}. This simplifies the calling code, allowing it to
+ * assume a value will always be returned, even when there's a cache miss.
+ *
+ * <p>By default, the cache size is measured in the number of entries. Override
+ * {@link #sizeOf} to size the cache in different units. For example, this cache
+ * is limited to 4MiB of bitmaps:
+ * <pre> {@code
+ * int cacheSize = 4 * 1024 * 1024; // 4MiB
+ * LruCache<String, Bitmap> bitmapCache = new LruCache<String, Bitmap>(cacheSize) {
+ * protected int sizeOf(String key, Bitmap value) {
+ * return value.getByteCount();
+ * }
+ * }}</pre>
+ *
+ * <p>This class is thread-safe. Perform multiple cache operations atomically by
+ * synchronizing on the cache: <pre> {@code
+ * synchronized (cache) {
+ * if (cache.get(key) == null) {
+ * cache.put(key, value);
+ * }
+ * }}</pre>
+ *
+ * <p>This class does not allow null to be used as a key or value. A return
+ * value of null from {@link #get}, {@link #put} or {@link #remove} is
+ * unambiguous: the key was not in the cache.
+ *
+ * <p>This class appeared in Android 3.1 (Honeycomb MR1); it's available as part
+ * of <a href="http://developer.android.com/sdk/compatibility-library.html">Android's
+ * Support Package</a> for earlier releases.
+ */
+public class LruCache<K, V> {
+ private final LinkedHashMap<K, V> map;
+
+ /** Size of this cache in units. Not necessarily the number of elements. */
+ private int size;
+ private int maxSize;
+
+ private int putCount;
+ private int createCount;
+ private int evictionCount;
+ private int hitCount;
+ private int missCount;
+
+ /**
+ * @param maxSize for caches that do not override {@link #sizeOf}, this is
+ * the maximum number of entries in the cache. For all other caches,
+ * this is the maximum sum of the sizes of the entries in this cache.
+ */
+ public LruCache(int maxSize) {
+ if (maxSize <= 0) {
+ throw new IllegalArgumentException("maxSize <= 0");
+ }
+ this.maxSize = maxSize;
+ this.map = new LinkedHashMap<K, V>(0, 0.75f, true);
+ }
+
+ /**
+ * Sets the size of the cache.
+ * @param maxSize The new maximum size.
+ *
+ * @hide
+ */
+ public void resize(int maxSize) {
+ if (maxSize <= 0) {
+ throw new IllegalArgumentException("maxSize <= 0");
+ }
+
+ synchronized (this) {
+ this.maxSize = maxSize;
+ }
+ trimToSize(maxSize);
+ }
+
+ /**
+ * Returns the value for {@code key} if it exists in the cache or can be
+ * created by {@code #create}. If a value was returned, it is moved to the
+ * head of the queue. This returns null if a value is not cached and cannot
+ * be created.
+ */
+ public final V get(K key) {
+ if (key == null) {
+ throw new NullPointerException("key == null");
+ }
+
+ V mapValue;
+ synchronized (this) {
+ mapValue = map.get(key);
+ if (mapValue != null) {
+ hitCount++;
+ return mapValue;
+ }
+ missCount++;
+ }
+
+ /*
+ * Attempt to create a value. This may take a long time, and the map
+ * may be different when create() returns. If a conflicting value was
+ * added to the map while create() was working, we leave that value in
+ * the map and release the created value.
+ */
+
+ V createdValue = create(key);
+ if (createdValue == null) {
+ return null;
+ }
+
+ synchronized (this) {
+ createCount++;
+ mapValue = map.put(key, createdValue);
+
+ if (mapValue != null) {
+ // There was a conflict so undo that last put
+ map.put(key, mapValue);
+ } else {
+ size += safeSizeOf(key, createdValue);
+ }
+ }
+
+ if (mapValue != null) {
+ entryRemoved(false, key, createdValue, mapValue);
+ return mapValue;
+ } else {
+ trimToSize(maxSize);
+ return createdValue;
+ }
+ }
+
+ /**
+ * Caches {@code value} for {@code key}. The value is moved to the head of
+ * the queue.
+ *
+ * @return the previous value mapped by {@code key}.
+ */
+ public final V put(K key, V value) {
+ if (key == null || value == null) {
+ throw new NullPointerException("key == null || value == null");
+ }
+
+ V previous;
+ synchronized (this) {
+ putCount++;
+ size += safeSizeOf(key, value);
+ previous = map.put(key, value);
+ if (previous != null) {
+ size -= safeSizeOf(key, previous);
+ }
+ }
+
+ if (previous != null) {
+ entryRemoved(false, key, previous, value);
+ }
+
+ trimToSize(maxSize);
+ return previous;
+ }
+
+ /**
+ * @param maxSize the maximum size of the cache before returning. May be -1
+ * to evict even 0-sized elements.
+ */
+ private void trimToSize(int maxSize) {
+ while (true) {
+ K key;
+ V value;
+ synchronized (this) {
+ if (size < 0 || (map.isEmpty() && size != 0)) {
+ throw new IllegalStateException(getClass().getName()
+ + ".sizeOf() is reporting inconsistent results!");
+ }
+
+ if (size <= maxSize) {
+ break;
+ }
+
+ // BEGIN LAYOUTLIB CHANGE
+ // get the last item in the linked list.
+ // This is not efficient, the goal here is to minimize the changes
+ // compared to the platform version.
+ Map.Entry<K, V> toEvict = null;
+ for (Map.Entry<K, V> entry : map.entrySet()) {
+ toEvict = entry;
+ }
+ // END LAYOUTLIB CHANGE
+
+ if (toEvict == null) {
+ break;
+ }
+
+ key = toEvict.getKey();
+ value = toEvict.getValue();
+ map.remove(key);
+ size -= safeSizeOf(key, value);
+ evictionCount++;
+ }
+
+ entryRemoved(true, key, value, null);
+ }
+ }
+
+ /**
+ * Removes the entry for {@code key} if it exists.
+ *
+ * @return the previous value mapped by {@code key}.
+ */
+ public final V remove(K key) {
+ if (key == null) {
+ throw new NullPointerException("key == null");
+ }
+
+ V previous;
+ synchronized (this) {
+ previous = map.remove(key);
+ if (previous != null) {
+ size -= safeSizeOf(key, previous);
+ }
+ }
+
+ if (previous != null) {
+ entryRemoved(false, key, previous, null);
+ }
+
+ return previous;
+ }
+
+ /**
+ * Called for entries that have been evicted or removed. This method is
+ * invoked when a value is evicted to make space, removed by a call to
+ * {@link #remove}, or replaced by a call to {@link #put}. The default
+ * implementation does nothing.
+ *
+ * <p>The method is called without synchronization: other threads may
+ * access the cache while this method is executing.
+ *
+ * @param evicted true if the entry is being removed to make space, false
+ * if the removal was caused by a {@link #put} or {@link #remove}.
+ * @param newValue the new value for {@code key}, if it exists. If non-null,
+ * this removal was caused by a {@link #put}. Otherwise it was caused by
+ * an eviction or a {@link #remove}.
+ */
+ protected void entryRemoved(boolean evicted, K key, V oldValue, V newValue) {}
+
+ /**
+ * Called after a cache miss to compute a value for the corresponding key.
+ * Returns the computed value or null if no value can be computed. The
+ * default implementation returns null.
+ *
+ * <p>The method is called without synchronization: other threads may
+ * access the cache while this method is executing.
+ *
+ * <p>If a value for {@code key} exists in the cache when this method
+ * returns, the created value will be released with {@link #entryRemoved}
+ * and discarded. This can occur when multiple threads request the same key
+ * at the same time (causing multiple values to be created), or when one
+ * thread calls {@link #put} while another is creating a value for the same
+ * key.
+ */
+ protected V create(K key) {
+ return null;
+ }
+
+ private int safeSizeOf(K key, V value) {
+ int result = sizeOf(key, value);
+ if (result < 0) {
+ throw new IllegalStateException("Negative size: " + key + "=" + value);
+ }
+ return result;
+ }
+
+ /**
+ * Returns the size of the entry for {@code key} and {@code value} in
+ * user-defined units. The default implementation returns 1 so that size
+ * is the number of entries and max size is the maximum number of entries.
+ *
+ * <p>An entry's size must not change while it is in the cache.
+ */
+ protected int sizeOf(K key, V value) {
+ return 1;
+ }
+
+ /**
+ * Clear the cache, calling {@link #entryRemoved} on each removed entry.
+ */
+ public final void evictAll() {
+ trimToSize(-1); // -1 will evict 0-sized elements
+ }
+
+ /**
+ * For caches that do not override {@link #sizeOf}, this returns the number
+ * of entries in the cache. For all other caches, this returns the sum of
+ * the sizes of the entries in this cache.
+ */
+ public synchronized final int size() {
+ return size;
+ }
+
+ /**
+ * For caches that do not override {@link #sizeOf}, this returns the maximum
+ * number of entries in the cache. For all other caches, this returns the
+ * maximum sum of the sizes of the entries in this cache.
+ */
+ public synchronized final int maxSize() {
+ return maxSize;
+ }
+
+ /**
+ * Returns the number of times {@link #get} returned a value that was
+ * already present in the cache.
+ */
+ public synchronized final int hitCount() {
+ return hitCount;
+ }
+
+ /**
+ * Returns the number of times {@link #get} returned null or required a new
+ * value to be created.
+ */
+ public synchronized final int missCount() {
+ return missCount;
+ }
+
+ /**
+ * Returns the number of times {@link #create(Object)} returned a value.
+ */
+ public synchronized final int createCount() {
+ return createCount;
+ }
+
+ /**
+ * Returns the number of times {@link #put} was called.
+ */
+ public synchronized final int putCount() {
+ return putCount;
+ }
+
+ /**
+ * Returns the number of values that have been evicted.
+ */
+ public synchronized final int evictionCount() {
+ return evictionCount;
+ }
+
+ /**
+ * Returns a copy of the current contents of the cache, ordered from least
+ * recently accessed to most recently accessed.
+ */
+ public synchronized final Map<K, V> snapshot() {
+ return new LinkedHashMap<K, V>(map);
+ }
+
+ @Override public synchronized final String toString() {
+ int accesses = hitCount + missCount;
+ int hitPercent = accesses != 0 ? (100 * hitCount / accesses) : 0;
+ return String.format("LruCache[maxSize=%d,hits=%d,misses=%d,hitRate=%d%%]",
+ maxSize, hitCount, missCount, hitPercent);
+ }
+}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index f9e48e2b..3ae660d 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -732,14 +732,16 @@
for (int i = 0 ; i < attrs.length ; i++) {
Pair<String, Boolean> attribute = attributes.get(i);
- // look for the value in the given style
- ResourceValue resValue = mRenderResources.findItemInStyle(style, attribute.getFirst(),
- attribute.getSecond());
+ if (attribute != null) {
+ // look for the value in the given style
+ ResourceValue resValue = mRenderResources.findItemInStyle(style,
+ attribute.getFirst(), attribute.getSecond());
- if (resValue != null) {
- // resolve it to make sure there are no references left.
- ta.bridgeSetValue(i, attribute.getFirst(), attribute.getSecond(),
- mRenderResources.resolveResValue(resValue));
+ if (resValue != null) {
+ // resolve it to make sure there are no references left.
+ ta.bridgeSetValue(i, attribute.getFirst(), attribute.getSecond(),
+ mRenderResources.resolveResValue(resValue));
+ }
}
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
index 379fb81..e28375d 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindow.java
@@ -53,6 +53,11 @@
}
@Override
+ public void moved(int arg0, int arg1) throws RemoteException {
+ // pass for now.
+ }
+
+ @Override
public void dispatchScreenState(boolean on) throws RemoteException {
// pass for now.
}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java
index 1817ab5..62c886b 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java
@@ -233,7 +233,7 @@
BridgeContext bridgeContext = (BridgeContext) mContext;
RenderResources res = bridgeContext.getRenderResources();
- ResourceValue value = res.findItemInTheme(themeEntryName);
+ ResourceValue value = res.findItemInTheme(themeEntryName, true /*isFrameworkAttr*/);
value = res.resolveResValue(value);
if (value instanceof StyleResourceValue == false) {
@@ -243,24 +243,27 @@
StyleResourceValue style = (StyleResourceValue) value;
// get the background
- ResourceValue backgroundValue = res.findItemInStyle(style, "background");
+ ResourceValue backgroundValue = res.findItemInStyle(style, "background",
+ true /*isFrameworkAttr*/);
backgroundValue = res.resolveResValue(backgroundValue);
if (backgroundValue != null) {
Drawable d = ResourceHelper.getDrawable(backgroundValue, bridgeContext);
if (d != null) {
- setBackgroundDrawable(d);
+ setBackground(d);
}
}
TextView textView = getStyleableTextView();
if (textView != null) {
// get the text style
- ResourceValue textStyleValue = res.findItemInStyle(style, "titleTextStyle");
+ ResourceValue textStyleValue = res.findItemInStyle(style, "titleTextStyle",
+ true /*isFrameworkAttr*/);
textStyleValue = res.resolveResValue(textStyleValue);
if (textStyleValue instanceof StyleResourceValue) {
StyleResourceValue textStyle = (StyleResourceValue) textStyleValue;
- ResourceValue textSize = res.findItemInStyle(textStyle, "textSize");
+ ResourceValue textSize = res.findItemInStyle(textStyle, "textSize",
+ true /*isFrameworkAttr*/);
textSize = res.resolveResValue(textSize);
if (textSize != null) {
@@ -273,7 +276,8 @@
}
- ResourceValue textColor = res.findItemInStyle(textStyle, "textColor");
+ ResourceValue textColor = res.findItemInStyle(textStyle, "textColor",
+ true /*isFrameworkAttr*/);
textColor = res.resolveResValue(textColor);
if (textColor != null) {
ColorStateList stateList = ResourceHelper.getColorStateList(
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 6840f46..e93b41d 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
@@ -952,7 +952,8 @@
private void findBackground(RenderResources resources) {
if (getParams().isBgColorOverridden() == false) {
- mWindowBackground = resources.findItemInTheme("windowBackground");
+ mWindowBackground = resources.findItemInTheme("windowBackground",
+ true /*isFrameworkAttr*/);
if (mWindowBackground != null) {
mWindowBackground = resources.resolveResValue(mWindowBackground);
}
@@ -1003,7 +1004,8 @@
mActionBarSize = DEFAULT_TITLE_BAR_HEIGHT;
// get value from the theme.
- ResourceValue value = resources.findItemInTheme("actionBarSize");
+ ResourceValue value = resources.findItemInTheme("actionBarSize",
+ true /*isFrameworkAttr*/);
// resolve it
value = resources.resolveResValue(value);
@@ -1028,7 +1030,8 @@
mTitleBarSize = DEFAULT_TITLE_BAR_HEIGHT;
// get value from the theme.
- ResourceValue value = resources.findItemInTheme("windowTitleSize");
+ ResourceValue value = resources.findItemInTheme("windowTitleSize",
+ true /*isFrameworkAttr*/);
// resolve it
value = resources.resolveResValue(value);
@@ -1068,11 +1071,20 @@
}
}
+ /**
+ * Looks for a attribute in the current theme. The attribute is in the android
+ * namespace.
+ *
+ * @param resources the render resources
+ * @param name the name of the attribute
+ * @param defaultValue the default value.
+ * @return the value of the attribute or the default one if not found.
+ */
private boolean getBooleanThemeValue(RenderResources resources,
String name, boolean defaultValue) {
// get the title bar flag from the current theme.
- ResourceValue value = resources.findItemInTheme(name);
+ ResourceValue value = resources.findItemInTheme(name, true /*isFrameworkAttr*/);
// because it may reference something else, we resolve it.
value = resources.resolveResValue(value);
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
index 79e02c8..5109810 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
@@ -116,7 +116,6 @@
"android.view.View#isInEditMode",
"android.view.ViewRootImpl#isInTouchMode",
"android.view.inputmethod.InputMethodManager#getInstance",
- "android.util.Log#println_native",
"com.android.internal.util.XmlUtils#convertValueToInt",
"com.android.internal.textservice.ITextServicesManager$Stub#asInterface",
};
@@ -185,6 +184,7 @@
private final static String[] RENAMED_CLASSES =
new String[] {
"android.os.ServiceManager", "android.os._Original_ServiceManager",
+ "android.util.LruCache", "android.util._Original_LruCache",
"android.view.SurfaceView", "android.view._Original_SurfaceView",
"android.view.accessibility.AccessibilityManager", "android.view.accessibility._Original_AccessibilityManager",
"android.webkit.WebView", "android.webkit._Original_WebView",
diff --git a/voip/jni/rtp/AudioGroup.cpp b/voip/jni/rtp/AudioGroup.cpp
index 673a650..1579e6a 100644
--- a/voip/jni/rtp/AudioGroup.cpp
+++ b/voip/jni/rtp/AudioGroup.cpp
@@ -790,7 +790,7 @@
if (AudioTrack::getMinFrameCount(&output, AUDIO_STREAM_VOICE_CALL,
sampleRate) != NO_ERROR || output <= 0 ||
AudioRecord::getMinFrameCount(&input, sampleRate,
- AUDIO_FORMAT_PCM_16_BIT, 1) != NO_ERROR || input <= 0) {
+ AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_IN_MONO) != NO_ERROR || input <= 0) {
ALOGE("cannot compute frame count");
return false;
}
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index ed72459..84b8507 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -3524,6 +3524,8 @@
if (DBG) log("Network connection lost");
handleNetworkDisconnect();
break;
+ case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:
+ // EAP failures do not mean much during WPS
case WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT:
//Throw away supplicant state changes when WPS is running.
//We will start getting supplicant state changes once we get