diff options
Diffstat (limited to 'core')
61 files changed, 454 insertions, 169 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 02942b7..ef9f6d4 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -3873,14 +3873,20 @@ public final class ActivityThread { final void applyNonDefaultDisplayMetricsToConfigurationLocked( DisplayMetrics dm, Configuration config) { - config.screenLayout = Configuration.SCREENLAYOUT_SIZE_XLARGE - | Configuration.SCREENLAYOUT_LONG_NO; config.touchscreen = Configuration.TOUCHSCREEN_NOTOUCH; - config.orientation = (dm.widthPixels >= dm.heightPixels) ? - Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT; config.densityDpi = dm.densityDpi; config.screenWidthDp = (int)(dm.widthPixels / dm.density); config.screenHeightDp = (int)(dm.heightPixels / dm.density); + int sl = Configuration.resetScreenLayout(config.screenLayout); + if (dm.widthPixels > dm.heightPixels) { + config.orientation = Configuration.ORIENTATION_LANDSCAPE; + config.screenLayout = Configuration.reduceScreenLayout(sl, + config.screenWidthDp, config.screenHeightDp); + } else { + config.orientation = Configuration.ORIENTATION_PORTRAIT; + config.screenLayout = Configuration.reduceScreenLayout(sl, + config.screenHeightDp, config.screenWidthDp); + } config.smallestScreenWidthDp = config.screenWidthDp; // assume screen does not rotate config.compatScreenWidthDp = config.screenWidthDp; config.compatScreenHeightDp = config.screenHeightDp; diff --git a/core/java/android/app/MediaRouteButton.java b/core/java/android/app/MediaRouteButton.java index a9ccef0..3ecafc3 100644 --- a/core/java/android/app/MediaRouteButton.java +++ b/core/java/android/app/MediaRouteButton.java @@ -50,6 +50,7 @@ public class MediaRouteButton extends View { private boolean mRemoteActive; private boolean mToggleMode; private boolean mCheatSheetEnabled; + private boolean mIsConnecting; private int mMinWidth; private int mMinHeight; @@ -57,6 +58,10 @@ public class MediaRouteButton extends View { private OnClickListener mExtendedSettingsClickListener; private MediaRouteChooserDialogFragment mDialogFragment; + private static final int[] CHECKED_STATE_SET = { + R.attr.state_checked + }; + private static final int[] ACTIVATED_STATE_SET = { R.attr.state_activated }; @@ -210,10 +215,21 @@ public class MediaRouteButton extends View { } void updateRemoteIndicator() { - final boolean isRemote = - mRouter.getSelectedRoute(mRouteTypes) != mRouter.getSystemAudioRoute(); + final RouteInfo selected = mRouter.getSelectedRoute(mRouteTypes); + final boolean isRemote = selected != mRouter.getSystemAudioRoute(); + final boolean isConnecting = selected.getStatusCode() == RouteInfo.STATUS_CONNECTING; + + boolean needsRefresh = false; if (mRemoteActive != isRemote) { mRemoteActive = isRemote; + needsRefresh = true; + } + if (mIsConnecting != isConnecting) { + mIsConnecting = isConnecting; + needsRefresh = true; + } + + if (needsRefresh) { refreshDrawableState(); } } @@ -248,7 +264,14 @@ public class MediaRouteButton extends View { @Override protected int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); - if (mRemoteActive) { + + // Technically we should be handling this more completely, but these + // are implementation details here. Checked is used to express the connecting + // drawable state and it's mutually exclusive with activated for the purposes + // of state selection here. + if (mIsConnecting) { + mergeDrawableStates(drawableState, CHECKED_STATE_SET); + } else if (mRemoteActive) { mergeDrawableStates(drawableState, ACTIVATED_STATE_SET); } return drawableState; @@ -426,6 +449,11 @@ public class MediaRouteButton extends View { } @Override + public void onRouteChanged(MediaRouter router, RouteInfo info) { + updateRemoteIndicator(); + } + + @Override public void onRouteAdded(MediaRouter router, RouteInfo info) { updateRouteCount(); } diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java index 9d57467..d36d99d 100644 --- a/core/java/android/app/PendingIntent.java +++ b/core/java/android/app/PendingIntent.java @@ -395,6 +395,31 @@ public final class PendingIntent implements Parcelable { } /** + * @hide + * Note that UserHandle.CURRENT will be interpreted at the time the + * activity is started, not when the pending intent is created. + */ + public static PendingIntent getActivitiesAsUser(Context context, int requestCode, + Intent[] intents, int flags, Bundle options, UserHandle user) { + String packageName = context.getPackageName(); + String[] resolvedTypes = new String[intents.length]; + for (int i=0; i<intents.length; i++) { + intents[i].setAllowFds(false); + resolvedTypes[i] = intents[i].resolveTypeIfNeeded(context.getContentResolver()); + } + try { + IIntentSender target = + ActivityManagerNative.getDefault().getIntentSender( + ActivityManager.INTENT_SENDER_ACTIVITY, packageName, + null, null, requestCode, intents, resolvedTypes, + flags, options, user.getIdentifier()); + return target != null ? new PendingIntent(target) : null; + } catch (RemoteException e) { + } + return null; + } + + /** * Retrieve a PendingIntent that will perform a broadcast, like calling * {@link Context#sendBroadcast(Intent) Context.sendBroadcast()}. * diff --git a/core/java/android/app/TaskStackBuilder.java b/core/java/android/app/TaskStackBuilder.java index 9d5bcc6..3e0ac7e 100644 --- a/core/java/android/app/TaskStackBuilder.java +++ b/core/java/android/app/TaskStackBuilder.java @@ -274,6 +274,20 @@ public class TaskStackBuilder { } /** + * @hide + */ + public PendingIntent getPendingIntent(int requestCode, int flags, Bundle options, + UserHandle user) { + if (mIntents.isEmpty()) { + throw new IllegalStateException( + "No intents added to TaskStackBuilder; cannot getPendingIntent"); + } + + return PendingIntent.getActivitiesAsUser(mSourceContext, requestCode, getIntents(), flags, + options, user); + } + + /** * Return an array containing the intents added to this builder. The intent at the * root of the task stack will appear as the first item in the array and the * intent at the top of the stack will appear as the last item. diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index 51b8d25..86d6ee7 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -172,7 +172,77 @@ public final class Configuration implements Parcelable, Comparable<Configuration * Multiple Screens</a> for more information. */ public int screenLayout; - + + /** @hide */ + static public int resetScreenLayout(int curLayout) { + return (curLayout&~(SCREENLAYOUT_LONG_MASK | SCREENLAYOUT_SIZE_MASK + | SCREENLAYOUT_COMPAT_NEEDED)) + | (SCREENLAYOUT_LONG_YES | SCREENLAYOUT_SIZE_XLARGE); + } + + /** @hide */ + static public int reduceScreenLayout(int curLayout, int longSizeDp, int shortSizeDp) { + int screenLayoutSize; + boolean screenLayoutLong; + boolean screenLayoutCompatNeeded; + + // These semi-magic numbers define our compatibility modes for + // applications with different screens. These are guarantees to + // app developers about the space they can expect for a particular + // configuration. DO NOT CHANGE! + if (longSizeDp < 470) { + // This is shorter than an HVGA normal density screen (which + // is 480 pixels on its long side). + screenLayoutSize = SCREENLAYOUT_SIZE_SMALL; + screenLayoutLong = false; + screenLayoutCompatNeeded = false; + } else { + // What size is this screen screen? + if (longSizeDp >= 960 && shortSizeDp >= 720) { + // 1.5xVGA or larger screens at medium density are the point + // at which we consider it to be an extra large screen. + screenLayoutSize = SCREENLAYOUT_SIZE_XLARGE; + } else if (longSizeDp >= 640 && shortSizeDp >= 480) { + // VGA or larger screens at medium density are the point + // at which we consider it to be a large screen. + screenLayoutSize = SCREENLAYOUT_SIZE_LARGE; + } else { + screenLayoutSize = SCREENLAYOUT_SIZE_NORMAL; + } + + // If this screen is wider than normal HVGA, or taller + // than FWVGA, then for old apps we want to run in size + // compatibility mode. + if (shortSizeDp > 321 || longSizeDp > 570) { + screenLayoutCompatNeeded = true; + } else { + screenLayoutCompatNeeded = false; + } + + // Is this a long screen? + if (((longSizeDp*3)/5) >= (shortSizeDp-1)) { + // Anything wider than WVGA (5:3) is considering to be long. + screenLayoutLong = true; + } else { + screenLayoutLong = false; + } + } + + // Now reduce the last screenLayout to not be better than what we + // have found. + if (!screenLayoutLong) { + curLayout = (curLayout&~SCREENLAYOUT_LONG_MASK) | SCREENLAYOUT_LONG_NO; + } + if (screenLayoutCompatNeeded) { + curLayout |= Configuration.SCREENLAYOUT_COMPAT_NEEDED; + } + int curSize = curLayout&SCREENLAYOUT_SIZE_MASK; + if (screenLayoutSize < curSize) { + curLayout = (curLayout&~SCREENLAYOUT_SIZE_MASK) | screenLayoutSize; + } + return curLayout; + } + /** * Check if the Configuration's current {@link #screenLayout} is at * least the given size. diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl index 8bfefd4..557d3f3 100644 --- a/core/java/android/os/IPowerManager.aidl +++ b/core/java/android/os/IPowerManager.aidl @@ -40,8 +40,6 @@ interface IPowerManager void reboot(String reason); void crash(String message); - void clearUserActivityTimeout(long now, long timeout); - void setPokeLock(int pokey, IBinder lock, String tag); void setStayOnSetting(int val); void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs); diff --git a/core/java/android/os/LocalPowerManager.java b/core/java/android/os/LocalPowerManager.java deleted file mode 100644 index 519315c..0000000 --- a/core/java/android/os/LocalPowerManager.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.os; - -/** @hide */ -public interface LocalPowerManager { - // FIXME: Replace poke locks with something else. - - public static final int POKE_LOCK_IGNORE_TOUCH_EVENTS = 0x1; - - public static final int POKE_LOCK_SHORT_TIMEOUT = 0x2; - public static final int POKE_LOCK_MEDIUM_TIMEOUT = 0x4; - public static final int POKE_LOCK_TIMEOUT_MASK = 0x6; -} diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index 58372f4..ae50ddb 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -340,6 +340,15 @@ public final class PowerManager { } /** + * Returns true if the twilight service should be used to adjust screen brightness + * policy. This setting is experimental and disabled by default. + * @hide + */ + public static boolean useTwilightAdjustmentFeature() { + return SystemProperties.getBoolean("persist.power.usetwilightadj", false); + } + + /** * Creates a new wake lock with the specified level and flags. * <p> * The {@code levelAndFlags} parameter specifies a wake lock level and optional flags diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 8825f58..8f1210b 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -3078,30 +3078,6 @@ public final class Settings { public static final String BLUETOOTH_ON = Global.BLUETOOTH_ON; /** - * Get the key that retrieves a bluetooth headset's priority. - * @hide - */ - public static final String getBluetoothHeadsetPriorityKey(String address) { - return ("bluetooth_headset_priority_" + address.toUpperCase()); - } - - /** - * Get the key that retrieves a bluetooth a2dp sink's priority. - * @hide - */ - public static final String getBluetoothA2dpSinkPriorityKey(String address) { - return ("bluetooth_a2dp_sink_priority_" + address.toUpperCase()); - } - - /** - * Get the key that retrieves a bluetooth Input Device's priority. - * @hide - */ - public static final String getBluetoothInputDevicePriorityKey(String address) { - return ("bluetooth_input_device_priority_" + address.toUpperCase()); - } - - /** * @deprecated Use {@link android.provider.Settings.Global#DATA_ROAMING} instead */ @Deprecated @@ -5160,6 +5136,40 @@ public final class Settings { */ public static final String DEFAULT_DNS_SERVER = "default_dns_server"; + /** {@hide} */ + public static final String + BLUETOOTH_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_"; + /** {@hide} */ + public static final String + BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX = "bluetooth_a2dp_sink_priority_"; + /** {@hide} */ + public static final String + BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX = "bluetooth_input_device_priority_"; + + /** + * Get the key that retrieves a bluetooth headset's priority. + * @hide + */ + public static final String getBluetoothHeadsetPriorityKey(String address) { + return BLUETOOTH_HEADSET_PRIORITY_PREFIX + address.toUpperCase(); + } + + /** + * Get the key that retrieves a bluetooth a2dp sink's priority. + * @hide + */ + public static final String getBluetoothA2dpSinkPriorityKey(String address) { + return BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX + address.toUpperCase(); + } + + /** + * Get the key that retrieves a bluetooth Input Device's priority. + * @hide + */ + public static final String getBluetoothInputDevicePriorityKey(String address) { + return BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX + address.toUpperCase(); + } + // Populated lazily, guarded by class object: private static NameValueCache sNameValueCache = new NameValueCache( SYS_PROP_SETTING_VERSION, diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java index f97354f..03b685b 100644 --- a/core/java/android/service/dreams/DreamService.java +++ b/core/java/android/service/dreams/DreamService.java @@ -47,24 +47,30 @@ import com.android.internal.policy.PolicyManager; * * <p>Dreams should be declared in the manifest as follows:</p> * <pre> - * {@code - * <service + * <service * android:name=".MyDream" * android:exported="true" * android:icon="@drawable/my_icon" * android:label="@string/my_dream_label" > * - * <intent-filter> - * <action android:name="android.intent.action.MAIN" /> - * <category android:name="android.intent.category.DREAM" /> - * </intent-filter> + * <intent-filter> + * <action android:name="android.service.dreams.DreamService" /> + * <category android:name="android.intent.category.DEFAULT" /> + * </intent-filter> * - * <!-- Point to additional information for this dream (optional) --> - * <meta-data + * <!-- Point to additional information for this dream (optional) --> + * <meta-data * android:name="android.service.dream" * android:resource="@xml/my_dream" /> - * </service> - * } + * </service> + * </pre> + * <p>If specified, additional information for the dream is defined using the + * <code><{@link android.R.styleable#Dream dream}></code> element. For example:</p> + * <pre> + * (in res/xml/my_dream.xml) + * + * <dream xmlns:android="http://schemas.android.com/apk/res/android" + * android:settingsActivity="com.example.app/.MyDreamSettingsActivity" /> * </pre> */ public class DreamService extends Service implements Window.Callback { diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java index a42e156..5e34a36 100644 --- a/core/java/android/view/DisplayList.java +++ b/core/java/android/view/DisplayList.java @@ -332,4 +332,11 @@ public abstract class DisplayList { * @see View#offsetTopAndBottom(int) */ public abstract void offsetTopBottom(int offset); + + /** + * Reset native resources. This is called when cleaning up the state of DisplayLists + * during destruction of hardware resources, to ensure that we do not hold onto + * obsolete resources after related resources are gone. + */ + public abstract void reset(); } diff --git a/core/java/android/view/GLES20DisplayList.java b/core/java/android/view/GLES20DisplayList.java index 3bdd5c0..e9bd0c4 100644 --- a/core/java/android/view/GLES20DisplayList.java +++ b/core/java/android/view/GLES20DisplayList.java @@ -87,6 +87,13 @@ class GLES20DisplayList extends DisplayList { } @Override + public void reset() { + if (hasNativeDisplayList()) { + nReset(mFinalizer.mNativeDisplayList); + } + } + + @Override public boolean isValid() { return mValid; } @@ -294,6 +301,7 @@ class GLES20DisplayList extends DisplayList { } } + private static native void nReset(int displayList); private static native void nOffsetTopBottom(int displayList, int offset); private static native void nOffsetLeftRight(int displayList, int offset); private static native void nSetLeftTopRightBottom(int displayList, int left, int top, diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 28763b3..99987bf 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -1508,6 +1508,9 @@ public abstract class HardwareRenderer { @Override void destroyLayers(View view) { if (view != null && isEnabled() && checkCurrent() != SURFACE_STATE_ERROR) { + if (mCanvas != null) { + mCanvas.clearLayerUpdates(); + } destroyHardwareLayer(view); GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_LAYERS); } @@ -1556,6 +1559,9 @@ public abstract class HardwareRenderer { safelyRun(new Runnable() { @Override public void run() { + if (mCanvas != null) { + mCanvas.clearLayerUpdates(); + } destroyResources(view); GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_LAYERS); } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 6eca8fd..63ec577 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -2881,14 +2881,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * * @hide */ - int mUserPaddingLeftInitial = UNDEFINED_PADDING; + int mUserPaddingLeftInitial = 0; /** * Cache initial right padding. * * @hide */ - int mUserPaddingRightInitial = UNDEFINED_PADDING; + int mUserPaddingRightInitial = 0; /** * Default undefined padding @@ -3643,26 +3643,41 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mUserPaddingRightInitial = padding; } - // RTL compatibility mode: pre Jelly Bean MR1 case OR no RTL support case. - // left / right padding are used if defined (meaning here nothing to do). If they are not - // defined and start / end padding are defined (e.g. in Frameworks resources), then we use - // start / end and resolve them as left / right (layout direction is not taken into account). if (isRtlCompatibilityMode()) { + // RTL compatibility mode: pre Jelly Bean MR1 case OR no RTL support case. + // left / right padding are used if defined (meaning here nothing to do). If they are not + // defined and start / end padding are defined (e.g. in Frameworks resources), then we use + // start / end and resolve them as left / right (layout direction is not taken into account). + // Padding from the background drawable is stored at this point in mUserPaddingLeftInitial + // and mUserPaddingRightInitial) so drawable padding will be used as ultimate default if + // defined. if (!leftPaddingDefined && startPaddingDefined) { leftPadding = startPadding; } + mUserPaddingLeftInitial = (leftPadding >= 0) ? leftPadding : mUserPaddingLeftInitial; if (!rightPaddingDefined && endPaddingDefined) { rightPadding = endPadding; } + mUserPaddingRightInitial = (rightPadding >= 0) ? rightPadding : mUserPaddingRightInitial; + } else { + // Jelly Bean MR1 and after case: if start/end defined, they will override any left/right + // values defined. Otherwise, left /right values are used. + // Padding from the background drawable is stored at this point in mUserPaddingLeftInitial + // and mUserPaddingRightInitial) so drawable padding will be used as ultimate default if + // defined. + if (startPaddingDefined) { + mUserPaddingLeftInitial = startPadding; + } else if (leftPaddingDefined) { + mUserPaddingLeftInitial = leftPadding; + } + if (endPaddingDefined) { + mUserPaddingRightInitial = endPadding; + } + else if (rightPaddingDefined) { + mUserPaddingRightInitial = rightPadding; + } } - // If the user specified the padding (either with android:padding or - // android:paddingLeft/Top/Right/Bottom), use this padding, otherwise - // use the default padding or the padding from the background drawable - // (stored at this point in mPadding*). Padding resolution will happen later if - // RTL is supported. - mUserPaddingLeftInitial = leftPadding >= 0 ? leftPadding : mPaddingLeft; - mUserPaddingRightInitial = rightPadding >= 0 ? rightPadding : mPaddingRight; internalSetPadding( mUserPaddingLeftInitial, topPadding >= 0 ? topPadding : mPaddingTop, @@ -11745,10 +11760,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // If start / end padding are not defined, use the left / right ones. int resolvedLayoutDirection = getLayoutDirection(); // Set user padding to initial values ... - mUserPaddingLeft = (mUserPaddingLeftInitial == UNDEFINED_PADDING) ? - 0 : mUserPaddingLeftInitial; - mUserPaddingRight = (mUserPaddingRightInitial == UNDEFINED_PADDING) ? - 0 : mUserPaddingRightInitial; + mUserPaddingLeft = mUserPaddingLeftInitial; + mUserPaddingRight = mUserPaddingRightInitial; // ... then resolve it. switch (resolvedLayoutDirection) { case LAYOUT_DIRECTION_RTL: @@ -12394,6 +12407,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mHardwareLayer.destroy(); mHardwareLayer = null; + if (mDisplayList != null) { + mDisplayList.reset(); + } invalidate(true); invalidateParentCaches(); } @@ -14779,8 +14795,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @hide */ public void resetPaddingToInitialValues() { - mPaddingLeft = mUserPaddingLeftInitial; - mPaddingRight = mUserPaddingRightInitial; + if (isRtlCompatibilityMode()) { + mPaddingLeft = mUserPaddingLeftInitial; + mPaddingRight = mUserPaddingRightInitial; + } else { + if (isLayoutRtl()) { + mPaddingLeft = mUserPaddingRightInitial; + mPaddingRight = mUserPaddingLeftInitial; + } else { + mPaddingLeft = mUserPaddingLeftInitial; + mPaddingRight = mUserPaddingRightInitial; + } + } } /** @@ -17208,7 +17234,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @return the measure specification based on size and mode */ public static int makeMeasureSpec(int size, int mode) { - return (size & ~MODE_MASK) | (mode & MODE_MASK); + return size + mode; } /** diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index fa2d4e8..6e51270 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -1176,14 +1176,42 @@ public interface WindowManager extends ViewManager { public static final int INPUT_FEATURE_NO_INPUT_CHANNEL = 0x00000002; /** + * When this window has focus, does not call user activity for all input events so + * the application will have to do it itself. Should only be used by + * the keyguard and phone app. + * <p> + * Should only be used by the keyguard and phone app. + * </p> + * + * @hide + */ + public static final int INPUT_FEATURE_DISABLE_USER_ACTIVITY = 0x00000004; + + /** * Control special features of the input subsystem. * * @see #INPUT_FEATURE_DISABLE_TOUCH_PAD_GESTURES * @see #INPUT_FEATURE_NO_INPUT_CHANNEL + * @see #INPUT_FEATURE_DISABLE_USER_ACTIVITY * @hide */ public int inputFeatures; + /** + * Sets the number of milliseconds before the user activity timeout occurs + * when this window has focus. A value of -1 uses the standard timeout. + * A value of 0 uses the minimum support display timeout. + * <p> + * This property can only be used to reduce the user specified display timeout; + * it can never make the timeout longer than it normally would be. + * </p><p> + * Should only be used by the keyguard and phone app. + * </p> + * + * @hide + */ + public long userActivityTimeout = -1; + public LayoutParams() { super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); type = TYPE_APPLICATION; @@ -1268,6 +1296,7 @@ public interface WindowManager extends ViewManager { out.writeInt(subtreeSystemUiVisibility); out.writeInt(hasSystemUiListeners ? 1 : 0); out.writeInt(inputFeatures); + out.writeLong(userActivityTimeout); } public static final Parcelable.Creator<LayoutParams> CREATOR @@ -1308,6 +1337,7 @@ public interface WindowManager extends ViewManager { subtreeSystemUiVisibility = in.readInt(); hasSystemUiListeners = in.readInt() != 0; inputFeatures = in.readInt(); + userActivityTimeout = in.readLong(); } @SuppressWarnings({"PointlessBitwiseExpression"}) @@ -1334,6 +1364,8 @@ public interface WindowManager extends ViewManager { /** {@hide} */ public static final int PRIVATE_FLAGS_CHANGED = 1<<16; /** {@hide} */ + public static final int USER_ACTIVITY_TIMEOUT_CHANGED = 1<<17; + /** {@hide} */ public static final int EVERYTHING_CHANGED = 0xffffffff; // internal buffer to backup/restore parameters under compatibility mode. @@ -1455,6 +1487,11 @@ public interface WindowManager extends ViewManager { changes |= INPUT_FEATURES_CHANGED; } + if (userActivityTimeout != o.userActivityTimeout) { + userActivityTimeout = o.userActivityTimeout; + changes |= USER_ACTIVITY_TIMEOUT_CHANGED; + } + return changes; } @@ -1547,6 +1584,9 @@ public interface WindowManager extends ViewManager { if (inputFeatures != 0) { sb.append(" if=0x").append(Integer.toHexString(inputFeatures)); } + if (userActivityTimeout >= 0) { + sb.append(" userActivityTimeout=").append(userActivityTimeout); + } sb.append('}'); return sb.toString(); } diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index d6fd4ff..e74e37c 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -55,7 +55,7 @@ public class CheckedTextView extends TextView implements Checkable { } public CheckedTextView(Context context, AttributeSet attrs) { - this(context, attrs, 0); + this(context, attrs, R.attr.checkedTextViewStyle); } public CheckedTextView(Context context, AttributeSet attrs, int defStyle) { diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 1d465ce..87396fb 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -789,12 +789,6 @@ public class ImageView extends View { if (resizeWidth) { int newWidth = (int)(desiredAspect * (heightSize - ptop - pbottom)) + pleft + pright; - - // Allow the width to outgrow its original estimate if height is fixed. - if (!resizeHeight) { - widthSize = resolveAdjustedSize(newWidth, mMaxWidth, widthMeasureSpec); - } - if (newWidth <= widthSize) { widthSize = newWidth; done = true; @@ -805,13 +799,6 @@ public class ImageView extends View { if (!done && resizeHeight) { int newHeight = (int)((widthSize - pleft - pright) / desiredAspect) + ptop + pbottom; - - // Allow the height to outgrow its original estimate if width is fixed. - if (!resizeWidth) { - heightSize = resolveAdjustedSize(newHeight, mMaxHeight, - heightMeasureSpec); - } - if (newHeight <= heightSize) { heightSize = newHeight; } diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 600c27a..04e5bc9 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -33,6 +33,7 @@ interface IStatusBarService void topAppWindowChanged(boolean menuVisible); void setImeWindowStatus(in IBinder token, int vis, int backDisposition); void expandSettingsPanel(); + void setCurrentUser(int newUserId); // ---- Methods below are for use by the status bar policy services ---- // You need the STATUS_BAR_SERVICE permission diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 4715750..991c699 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -556,12 +556,16 @@ public class ActionBarView extends AbsActionBarView { // Make sure the home button has an accurate content description for accessibility. if (!enable) { mHomeLayout.setContentDescription(null); - } else if ((mDisplayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0) { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.action_bar_up_description)); + mHomeLayout.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } else { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.action_bar_home_description)); + mHomeLayout.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_AUTO); + if ((mDisplayOptions & ActionBar.DISPLAY_HOME_AS_UP) != 0) { + mHomeLayout.setContentDescription(mContext.getResources().getText( + R.string.action_bar_up_description)); + } else { + mHomeLayout.setContentDescription(mContext.getResources().getText( + R.string.action_bar_home_description)); + } } } @@ -624,12 +628,16 @@ public class ActionBarView extends AbsActionBarView { // Make sure the home button has an accurate content description for accessibility. if (!mHomeLayout.isEnabled()) { mHomeLayout.setContentDescription(null); - } else if ((options & ActionBar.DISPLAY_HOME_AS_UP) != 0) { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.action_bar_up_description)); + mHomeLayout.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } else { - mHomeLayout.setContentDescription(mContext.getResources().getText( - R.string.action_bar_home_description)); + mHomeLayout.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_AUTO); + if ((options & ActionBar.DISPLAY_HOME_AS_UP) != 0) { + mHomeLayout.setContentDescription(mContext.getResources().getText( + R.string.action_bar_up_description)); + } else { + mHomeLayout.setContentDescription(mContext.getResources().getText( + R.string.action_bar_home_description)); + } } } diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 48fe7fa..9820e60 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -574,7 +574,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) strcpy(heaptargetutilizationOptsBuf, "-XX:HeapTargetUtilization="); property_get("dalvik.vm.heaptargetutilization", heaptargetutilizationOptsBuf+26, ""); - if (heapmaxfreeOptsBuf[26] != '\0') { + if (heaptargetutilizationOptsBuf[26] != '\0') { opt.optionString = heaptargetutilizationOptsBuf; mOptions.add(opt); } diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp index 5c27602..2a02f7c 100644 --- a/core/jni/android/graphics/Canvas.cpp +++ b/core/jni/android/graphics/Canvas.cpp @@ -931,6 +931,9 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l SkIRect ir; bool result = canvas->getClipBounds(&r, SkCanvas::kBW_EdgeType); + if (!result) { + r.setEmpty(); + } r.round(&ir); (void)GraphicsJNI::irect_to_jrect(ir, env, bounds); return result; diff --git a/core/jni/android_view_GLES20DisplayList.cpp b/core/jni/android_view_GLES20DisplayList.cpp index b307a2f..c5f52df 100644 --- a/core/jni/android_view_GLES20DisplayList.cpp +++ b/core/jni/android_view_GLES20DisplayList.cpp @@ -36,6 +36,11 @@ using namespace uirenderer; */ #ifdef USE_OPENGL_RENDERER +static void android_view_GLES20DisplayList_reset(JNIEnv* env, + jobject clazz, DisplayList* displayList) { + displayList->reset(); +} + // ---------------------------------------------------------------------------- // DisplayList view properties // ---------------------------------------------------------------------------- @@ -185,6 +190,7 @@ const char* const kClassPathName = "android/view/GLES20DisplayList"; static JNINativeMethod gMethods[] = { #ifdef USE_OPENGL_RENDERER + { "nReset", "(I)V", (void*) android_view_GLES20DisplayList_reset }, { "nSetCaching", "(IZ)V", (void*) android_view_GLES20DisplayList_setCaching }, { "nSetStaticMatrix", "(II)V", (void*) android_view_GLES20DisplayList_setStaticMatrix }, { "nSetAnimationMatrix", "(II)V", (void*) android_view_GLES20DisplayList_setAnimationMatrix }, diff --git a/core/res/res/drawable-hdpi/ic_media_route_on_0_holo_dark.png b/core/res/res/drawable-hdpi/ic_media_route_on_0_holo_dark.png Binary files differnew file mode 100644 index 0000000..10fc8da --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_media_route_on_0_holo_dark.png diff --git a/core/res/res/drawable-hdpi/ic_media_route_on_0_holo_light.png b/core/res/res/drawable-hdpi/ic_media_route_on_0_holo_light.png Binary files differnew file mode 100644 index 0000000..a0e5060 --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_media_route_on_0_holo_light.png diff --git a/core/res/res/drawable-hdpi/ic_media_route_on_1_holo_dark.png b/core/res/res/drawable-hdpi/ic_media_route_on_1_holo_dark.png Binary files differnew file mode 100644 index 0000000..8364a36 --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_media_route_on_1_holo_dark.png diff --git a/core/res/res/drawable-hdpi/ic_media_route_on_1_holo_light.png b/core/res/res/drawable-hdpi/ic_media_route_on_1_holo_light.png Binary files differnew file mode 100644 index 0000000..44b89e1 --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_media_route_on_1_holo_light.png diff --git a/core/res/res/drawable-hdpi/ic_media_route_on_2_holo_dark.png b/core/res/res/drawable-hdpi/ic_media_route_on_2_holo_dark.png Binary files differnew file mode 100644 index 0000000..770bf78 --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_media_route_on_2_holo_dark.png diff --git a/core/res/res/drawable-hdpi/ic_media_route_on_2_holo_light.png b/core/res/res/drawable-hdpi/ic_media_route_on_2_holo_light.png Binary files differnew file mode 100644 index 0000000..2a2467b --- /dev/null +++ b/core/res/res/drawable-hdpi/ic_media_route_on_2_holo_light.png diff --git a/core/res/res/drawable-ldrtl-hdpi/ic_ab_back_holo_dark.png b/core/res/res/drawable-ldrtl-hdpi/ic_ab_back_holo_dark.png Binary files differnew file mode 100644 index 0000000..9beeb0f --- /dev/null +++ b/core/res/res/drawable-ldrtl-hdpi/ic_ab_back_holo_dark.png diff --git a/core/res/res/drawable-ldrtl-hdpi/ic_ab_back_holo_light.png b/core/res/res/drawable-ldrtl-hdpi/ic_ab_back_holo_light.png Binary files differnew file mode 100644 index 0000000..844e38b --- /dev/null +++ b/core/res/res/drawable-ldrtl-hdpi/ic_ab_back_holo_light.png diff --git a/core/res/res/drawable-ldrtl-mdpi/ic_ab_back_holo_dark.png b/core/res/res/drawable-ldrtl-mdpi/ic_ab_back_holo_dark.png Binary files differnew file mode 100644 index 0000000..c22dc90 --- /dev/null +++ b/core/res/res/drawable-ldrtl-mdpi/ic_ab_back_holo_dark.png diff --git a/core/res/res/drawable-ldrtl-mdpi/ic_ab_back_holo_light.png b/core/res/res/drawable-ldrtl-mdpi/ic_ab_back_holo_light.png Binary files differnew file mode 100644 index 0000000..f49b715 --- /dev/null +++ b/core/res/res/drawable-ldrtl-mdpi/ic_ab_back_holo_light.png diff --git a/core/res/res/drawable-ldrtl-xhdpi/ic_ab_back_holo_dark.png b/core/res/res/drawable-ldrtl-xhdpi/ic_ab_back_holo_dark.png Binary files differnew file mode 100644 index 0000000..8dfb7d8 --- /dev/null +++ b/core/res/res/drawable-ldrtl-xhdpi/ic_ab_back_holo_dark.png diff --git a/core/res/res/drawable-ldrtl-xhdpi/ic_ab_back_holo_light.png b/core/res/res/drawable-ldrtl-xhdpi/ic_ab_back_holo_light.png Binary files differnew file mode 100644 index 0000000..29852ad --- /dev/null +++ b/core/res/res/drawable-ldrtl-xhdpi/ic_ab_back_holo_light.png diff --git a/core/res/res/drawable-mdpi/ic_media_route_on_0_holo_dark.png b/core/res/res/drawable-mdpi/ic_media_route_on_0_holo_dark.png Binary files differnew file mode 100644 index 0000000..fb2ac25 --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_media_route_on_0_holo_dark.png diff --git a/core/res/res/drawable-mdpi/ic_media_route_on_0_holo_light.png b/core/res/res/drawable-mdpi/ic_media_route_on_0_holo_light.png Binary files differnew file mode 100644 index 0000000..0c20091 --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_media_route_on_0_holo_light.png diff --git a/core/res/res/drawable-mdpi/ic_media_route_on_1_holo_dark.png b/core/res/res/drawable-mdpi/ic_media_route_on_1_holo_dark.png Binary files differnew file mode 100644 index 0000000..2f70cee --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_media_route_on_1_holo_dark.png diff --git a/core/res/res/drawable-mdpi/ic_media_route_on_1_holo_light.png b/core/res/res/drawable-mdpi/ic_media_route_on_1_holo_light.png Binary files differnew file mode 100644 index 0000000..0b76d8e --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_media_route_on_1_holo_light.png diff --git a/core/res/res/drawable-mdpi/ic_media_route_on_2_holo_dark.png b/core/res/res/drawable-mdpi/ic_media_route_on_2_holo_dark.png Binary files differnew file mode 100644 index 0000000..ae7b105 --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_media_route_on_2_holo_dark.png diff --git a/core/res/res/drawable-mdpi/ic_media_route_on_2_holo_light.png b/core/res/res/drawable-mdpi/ic_media_route_on_2_holo_light.png Binary files differnew file mode 100644 index 0000000..8d37b99 --- /dev/null +++ b/core/res/res/drawable-mdpi/ic_media_route_on_2_holo_light.png diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_0_holo_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_0_holo_dark.png Binary files differnew file mode 100644 index 0000000..483b612 --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_media_route_on_0_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_0_holo_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_0_holo_light.png Binary files differnew file mode 100644 index 0000000..c3507dc --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_media_route_on_0_holo_light.png diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_1_holo_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_1_holo_dark.png Binary files differnew file mode 100644 index 0000000..24c6519 --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_media_route_on_1_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_1_holo_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_1_holo_light.png Binary files differnew file mode 100644 index 0000000..2be0380 --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_media_route_on_1_holo_light.png diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_2_holo_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_2_holo_dark.png Binary files differnew file mode 100644 index 0000000..4fd69bd --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_media_route_on_2_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_2_holo_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_2_holo_light.png Binary files differnew file mode 100644 index 0000000..5158856 --- /dev/null +++ b/core/res/res/drawable-xhdpi/ic_media_route_on_2_holo_light.png diff --git a/core/res/res/drawable/ic_media_route_connecting_holo_dark.xml b/core/res/res/drawable/ic_media_route_connecting_holo_dark.xml new file mode 100644 index 0000000..36e01f6 --- /dev/null +++ b/core/res/res/drawable/ic_media_route_connecting_holo_dark.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * 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. + */ +--> +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:oneshot="false"> + <item android:drawable="@drawable/ic_media_route_on_0_holo_dark" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_1_holo_dark" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_2_holo_dark" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_holo_dark" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_2_holo_dark" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_1_holo_dark" android:duration="500" /> +</animation-list> diff --git a/core/res/res/drawable/ic_media_route_connecting_holo_light.xml b/core/res/res/drawable/ic_media_route_connecting_holo_light.xml new file mode 100644 index 0000000..6683db8 --- /dev/null +++ b/core/res/res/drawable/ic_media_route_connecting_holo_light.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * 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. + */ +--> +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:oneshot="false"> + <item android:drawable="@drawable/ic_media_route_on_0_holo_light" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_1_holo_light" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_2_holo_light" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_holo_light" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_2_holo_light" android:duration="500" /> + <item android:drawable="@drawable/ic_media_route_on_1_holo_light" android:duration="500" /> +</animation-list> diff --git a/core/res/res/drawable/ic_media_route_holo_dark.xml b/core/res/res/drawable/ic_media_route_holo_dark.xml index 0b267d7..b4c1fac 100644 --- a/core/res/res/drawable/ic_media_route_holo_dark.xml +++ b/core/res/res/drawable/ic_media_route_holo_dark.xml @@ -15,6 +15,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checked="true" android:state_enabled="true" android:drawable="@android:drawable/ic_media_route_connecting_holo_dark" /> <item android:state_activated="true" android:state_enabled="true" android:drawable="@android:drawable/ic_media_route_on_holo_dark" /> <item android:state_enabled="true" android:drawable="@android:drawable/ic_media_route_off_holo_dark" /> <item android:drawable="@android:drawable/ic_media_route_disabled_holo_dark" /> diff --git a/core/res/res/drawable/ic_media_route_holo_light.xml b/core/res/res/drawable/ic_media_route_holo_light.xml index 377253a..553721d 100644 --- a/core/res/res/drawable/ic_media_route_holo_light.xml +++ b/core/res/res/drawable/ic_media_route_holo_light.xml @@ -15,6 +15,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checked="true" android:state_enabled="true" android:drawable="@android:drawable/ic_media_route_connecting_holo_light" /> <item android:state_activated="true" android:state_enabled="true" android:drawable="@android:drawable/ic_media_route_on_holo_light" /> <item android:state_enabled="true" android:drawable="@android:drawable/ic_media_route_off_holo_light" /> <item android:drawable="@android:drawable/ic_media_route_disabled_holo_light" /> diff --git a/core/res/res/layout-xlarge/select_dialog_holo.xml b/core/res/res/layout-xlarge/select_dialog_holo.xml deleted file mode 100644 index f931cf2..0000000 --- a/core/res/res/layout-xlarge/select_dialog_holo.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** Copyright 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. -*/ ---> - -<!-- - This layout file is used by the AlertDialog when displaying a list of items. - This layout file is inflated and used as the ListView to display the items. - Assign an ID so its state will be saved/restored. ---> -<view class="com.android.internal.app.AlertController$RecycleListView" - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+android:id/select_dialog_listview" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_marginTop="5dip" - android:paddingStart="16dip" - android:paddingEnd="16dip" - android:cacheColorHint="@null" - android:divider="?android:attr/listDividerAlertDialog" - android:scrollbars="vertical" - android:overScrollMode="ifContentScrolls" /> diff --git a/core/res/res/layout/keyguard_widget_region.xml b/core/res/res/layout/keyguard_widget_region.xml index f759366..123d105 100644 --- a/core/res/res/layout/keyguard_widget_region.xml +++ b/core/res/res/layout/keyguard_widget_region.xml @@ -54,7 +54,7 @@ <Space android:layout_width="0dip" android:layout_height="match_parent" - android:layout_weight="1"/> + android:layout_weight="1.6"/> <com.android.internal.policy.impl.keyguard.KeyguardGlowStripView android:id="@+id/right_strip" android:layout_width="0dip" diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index ea89633..9ce7f8a 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -483,6 +483,8 @@ <attr name="autoCompleteTextViewStyle" format="reference" /> <!-- Default Checkbox style. --> <attr name="checkboxStyle" format="reference" /> + <!-- Default CheckedTextView style. --> + <attr name="checkedTextViewStyle" format="reference" /> <!-- Default ListView style for drop downs. --> <attr name="dropDownListViewStyle" format="reference" /> <!-- Default EditText style. --> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index ab183a3..f143d50 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -960,4 +960,8 @@ --> <bool name="config_enableWifiDisplay">false</bool> + <!-- When true use the linux /dev/input/event subsystem to detect the switch changes + on the headphone/microphone jack. When false use the older uevent framework. --> + <bool name="config_useDevInputEventForAudioJack">false</bool> + </resources> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 76fa2b0..ffc09de 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2018,10 +2018,10 @@ <public type="attr" name="permissionGroupFlags" id="0x010103c5" /> <public type="attr" name="labelFor" id="0x010103c6" /> <public type="attr" name="permissionFlags" id="0x010103c7" /> - - -<!-- =============================================================== - Resources added in next version of platform - =============================================================== --> + <public type="attr" name="checkedTextViewStyle" /> + <public type="style" name="Widget.Holo.CheckedTextView" /> + <public type="style" name="Widget.Holo.Light.CheckedTextView" /> + <public type="style" name="Widget.DeviceDefault.CheckedTextView" /> + <public type="style" name="Widget.DeviceDefault.Light.CheckedTextView" /> </resources> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 51dc0d2..2f9ce0c 100755 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3926,14 +3926,13 @@ "Raise volume above safe level?\nListening at high volume for long periods may damage your hearing." </string> - <!-- Text spoken when the user is performing a gesture that will enable accessibility. [CHAR LIMIT=none] --> - <string name="continue_to_enable_accessibility">Continue touching the screen to enable accessibility.</string> + <string name="continue_to_enable_accessibility">Keep holding down your two fingers to enable accessibility.</string> <!-- Text spoken when the user enabled accessibility. [CHAR LIMIT=none] --> <string name="accessibility_enabled">Accessibility enabled.</string> <!-- Text spoken when the user stops preforming a gesture that would enable accessibility. [CHAR LIMIT=none] --> - <string name="enable_accessibility_canceled">Enable accessibility canceled.</string> + <string name="enable_accessibility_canceled">Accessibility canceled.</string> <!-- Text spoken when the current user is switched if accessibility is enabled. [CHAR LIMIT=none] --> - <string name="user_switched">Switched to user <xliff:g id="name" example="Bob">%1$s</xliff:g>.</string> + <string name="user_switched">Current user <xliff:g id="name" example="Bob">%1$s</xliff:g>.</string> </resources> diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 74e2425..4371aec 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -464,7 +464,11 @@ please see styles_device_defaults.xml. <item name="android:textEditSuggestionItemLayout">?android:attr/textEditSuggestionItemLayout</item> <item name="android:textCursorDrawable">?android:attr/textCursorDrawable</item> </style> - + + <style name="Widget.CheckedTextView"> + <item name="android:textAlignment">viewStart</item> + </style> + <style name="Widget.TextView.ListSeparator"> <item name="android:background">@android:drawable/dark_header_dither</item> <item name="android:layout_width">match_parent</item> @@ -1589,6 +1593,9 @@ please see styles_device_defaults.xml. <style name="Widget.Holo.TextView" parent="Widget.TextView"> </style> + <style name="Widget.Holo.CheckedTextView" parent="Widget.CheckedTextView"> + </style> + <style name="Widget.Holo.TextView.ListSeparator" parent="Widget.TextView.ListSeparator"> <item name="android:background">@android:drawable/list_section_divider_holo_dark</item> <item name="android:textAllCaps">true</item> @@ -2017,6 +2024,9 @@ please see styles_device_defaults.xml. <style name="Widget.Holo.Light.TextView" parent="Widget.TextView"> </style> + <style name="Widget.Holo.Light.CheckedTextView" parent="Widget.CheckedTextView"> + </style> + <style name="Widget.Holo.Light.TextView.ListSeparator" parent="Widget.TextView.ListSeparator"> <item name="android:background">@android:drawable/list_section_divider_holo_light</item> <item name="android:textAllCaps">true</item> diff --git a/core/res/res/values/styles_device_defaults.xml b/core/res/res/values/styles_device_defaults.xml index d465356..edeba02 100644 --- a/core/res/res/values/styles_device_defaults.xml +++ b/core/res/res/values/styles_device_defaults.xml @@ -50,6 +50,9 @@ easier. <style name="Widget.DeviceDefault.TextView" parent="Widget.Holo.TextView" > </style> + <style name="Widget.DeviceDefault.CheckedTextView" parent="Widget.Holo.CheckedTextView" > + + </style> <style name="Widget.DeviceDefault.AutoCompleteTextView" parent="Widget.Holo.AutoCompleteTextView" > </style> @@ -288,6 +291,9 @@ easier. <style name="Widget.DeviceDefault.Light.TextView" parent="Widget.Holo.Light.TextView" > </style> + <style name="Widget.DeviceDefault.Light.CheckedTextView" parent="Widget.Holo.Light.CheckedTextView" > + + </style> <style name="Widget.DeviceDefault.Light.AutoCompleteTextView" parent="Widget.Holo.Light.AutoCompleteTextView" > </style> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 224a059..0b30324 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -271,7 +271,8 @@ <java-symbol type="bool" name="config_enableScreenshotChord" /> <java-symbol type="bool" name="config_bluetooth_default_profiles" /> <java-symbol type="bool" name="config_enableWifiDisplay" /> - + <java-symbol type="bool" name="config_useDevInputEventForAudioJack" /> + <java-symbol type="integer" name="config_cursorWindowSize" /> <java-symbol type="integer" name="config_longPressOnPowerBehavior" /> <java-symbol type="integer" name="config_max_pan_devices" /> diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 215551b..75850dd 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -241,6 +241,7 @@ please see themes_device_defaults.xml. <item name="absListViewStyle">@android:style/Widget.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:style/Widget.AutoCompleteTextView</item> <item name="checkboxStyle">@android:style/Widget.CompoundButton.CheckBox</item> + <item name="checkedTextViewStyle">@android:style/Widget.CheckedTextView</item> <item name="dropDownListViewStyle">@android:style/Widget.ListView.DropDown</item> <item name="editTextStyle">@android:style/Widget.EditText</item> <item name="expandableListViewStyle">@android:style/Widget.ExpandableListView</item> @@ -648,6 +649,8 @@ please see themes_device_defaults.xml. <item name="listPreferredItemPaddingRight">10dip</item> <item name="listPreferredItemPaddingStart">10dip</item> <item name="listPreferredItemPaddingEnd">10dip</item> + + <item name="preferencePanelStyle">@style/PreferencePanel.Dialog</item> </style> <!-- Variant of {@link Theme_Dialog} that does not include a frame (or background). @@ -874,12 +877,12 @@ please see themes_device_defaults.xml. <p>This is the default system theme for apps that target API level 11 - 13. Starting with API level 14, the default system theme is supplied by {@link #Theme_DeviceDefault}, which might apply a different style on different devices. If you want to ensure that your - app consistenly uses the Holo theme at all times, you must explicitly declare it in your + app consistently uses the Holo theme at all times, you must explicitly declare it in your manifest. For example, {@code <application android:theme="@android:style/Theme.Holo">}. For more information, read <a href="http://android-developers.blogspot.com/2012/01/holo-everywhere.html">Holo Everywhere</a>.</p> - <p>The widgets in the holographic theme are translucent on their brackground, so + <p>The widgets in the holographic theme are translucent on their background, so applications must ensure that any background they use with this theme is itself dark; otherwise, it will be difficult to see the widgets. This UI style also includes a full action bar by default.</p> @@ -1069,6 +1072,7 @@ please see themes_device_defaults.xml. <item name="absListViewStyle">@android:style/Widget.Holo.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:style/Widget.Holo.AutoCompleteTextView</item> <item name="checkboxStyle">@android:style/Widget.Holo.CompoundButton.CheckBox</item> + <item name="checkedTextViewStyle">@android:style/Widget.Holo.CheckedTextView</item> <item name="dropDownListViewStyle">@android:style/Widget.Holo.ListView.DropDown</item> <item name="editTextStyle">@android:style/Widget.Holo.EditText</item> <item name="expandableListViewStyle">@android:style/Widget.Holo.ExpandableListView</item> @@ -1382,6 +1386,7 @@ please see themes_device_defaults.xml. <item name="absListViewStyle">@android:style/Widget.Holo.Light.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:style/Widget.Holo.Light.AutoCompleteTextView</item> <item name="checkboxStyle">@android:style/Widget.Holo.Light.CompoundButton.CheckBox</item> + <item name="checkedTextViewStyle">@android:style/Widget.Holo.Light.CheckedTextView</item> <item name="dropDownListViewStyle">@android:style/Widget.Holo.ListView.DropDown</item> <item name="editTextStyle">@android:style/Widget.Holo.Light.EditText</item> <item name="expandableListViewStyle">@android:style/Widget.Holo.Light.ExpandableListView</item> @@ -1605,6 +1610,8 @@ please see themes_device_defaults.xml. <item name="listPreferredItemPaddingRight">16dip</item> <item name="listPreferredItemPaddingStart">16dip</item> <item name="listPreferredItemPaddingEnd">16dip</item> + + <item name="preferencePanelStyle">@style/PreferencePanel.Dialog</item> </style> <!-- Variant of Theme.Holo.Dialog that has a nice minimum width for @@ -1719,6 +1726,8 @@ please see themes_device_defaults.xml. <item name="listPreferredItemPaddingRight">16dip</item> <item name="listPreferredItemPaddingStart">16dip</item> <item name="listPreferredItemPaddingEnd">16dip</item> + + <item name="preferencePanelStyle">@style/PreferencePanel.Dialog</item> </style> <!-- Variant of Theme.Holo.Light.Dialog that has a nice minimum width for diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml index 2a2b9e0..4178cc4 100644 --- a/core/res/res/values/themes_device_defaults.xml +++ b/core/res/res/values/themes_device_defaults.xml @@ -104,6 +104,7 @@ easier. <item name="absListViewStyle">@android:style/Widget.DeviceDefault.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:style/Widget.DeviceDefault.AutoCompleteTextView</item> <item name="checkboxStyle">@android:style/Widget.DeviceDefault.CompoundButton.CheckBox</item> + <item name="checkedTextViewStyle">@android:style/Widget.DeviceDefault.CheckedTextView</item> <item name="dropDownListViewStyle">@android:style/Widget.DeviceDefault.ListView.DropDown</item> <item name="editTextStyle">@android:style/Widget.DeviceDefault.EditText</item> <item name="expandableListViewStyle">@android:style/Widget.DeviceDefault.ExpandableListView</item> @@ -261,7 +262,8 @@ easier. <item name="absListViewStyle">@android:style/Widget.DeviceDefault.Light.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:style/Widget.DeviceDefault.Light.AutoCompleteTextView</item> <item name="checkboxStyle">@android:style/Widget.DeviceDefault.Light.CompoundButton.CheckBox</item> - <item name="dropDownListViewStyle">@android:style/Widget.DeviceDefault.ListView.DropDown</item> + <item name="checkedTextViewStyle">@android:style/Widget.DeviceDefault.Light.CheckedTextView</item> + <item name="dropDownListViewStyle">@android:style/Widget.DeviceDefault.Light.ListView.DropDown</item> <item name="editTextStyle">@android:style/Widget.DeviceDefault.Light.EditText</item> <item name="expandableListViewStyle">@android:style/Widget.DeviceDefault.Light.ExpandableListView</item> <item name="expandableListViewWhiteStyle">@android:style/Widget.DeviceDefault.Light.ExpandableListView.White</item> @@ -296,7 +298,7 @@ easier. <item name="webViewStyle">@android:style/Widget.DeviceDefault.Light.WebView</item> <item name="dropDownItemStyle">@android:style/Widget.DeviceDefault.Light.DropDownItem</item> <item name="spinnerDropDownItemStyle">@android:style/Widget.DeviceDefault.Light.DropDownItem.Spinner</item> - <item name="spinnerItemStyle">@android:style/Widget.DeviceDefault.TextView.SpinnerItem</item> + <item name="spinnerItemStyle">@android:style/Widget.DeviceDefault.Light.TextView.SpinnerItem</item> <item name="dropDownHintAppearance">@android:style/TextAppearance.DeviceDefault.Widget.DropDownHint</item> <item name="keyboardViewStyle">@android:style/Widget.DeviceDefault.KeyboardView</item> <item name="quickContactBadgeStyleWindowSmall">@android:style/Widget.DeviceDefault.QuickContactBadge.WindowSmall</item> |