diff options
240 files changed, 663 insertions, 316 deletions
diff --git a/api/current.txt b/api/current.txt index c94d485..97f338f 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3245,6 +3245,7 @@ package android.app { method public final boolean isInLayout(); method public final boolean isRemoving(); method public final boolean isResumed(); + method public boolean isStartDeferred(); method public final boolean isVisible(); method public void onActivityCreated(android.os.Bundle); method public void onActivityResult(int, int, android.content.Intent); @@ -3280,6 +3281,7 @@ package android.app { method public void setInitialSavedState(android.app.Fragment.SavedState); method public void setMenuVisibility(boolean); method public void setRetainInstance(boolean); + method public void setStartDeferred(boolean); method public void setTargetFragment(android.app.Fragment, int); method public void startActivity(android.content.Intent); method public void startActivityForResult(android.content.Intent, int); @@ -18667,6 +18669,7 @@ package android.service.wallpaper { method public void onSurfaceRedrawNeeded(android.view.SurfaceHolder); method public void onTouchEvent(android.view.MotionEvent); method public void onVisibilityChanged(boolean); + method public void setOffsetNotificationsEnabled(boolean); method public void setTouchEventsEnabled(boolean); } diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java index d423d98..9b01b7f 100644 --- a/core/java/android/app/Fragment.java +++ b/core/java/android/app/Fragment.java @@ -339,6 +339,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene private static final HashMap<String, Class<?>> sClassMap = new HashMap<String, Class<?>>(); + static final int INVALID_STATE = -1; // Invalid state used as a null value. static final int INITIALIZING = 0; // Not yet created. static final int CREATED = 1; // Created. static final int ACTIVITY_CREATED = 2; // The activity has finished its creation. @@ -403,7 +404,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene // The fragment manager we are associated with. Set as soon as the // fragment is used in a transaction; cleared after it has been removed // from all transactions. - FragmentManager mFragmentManager; + FragmentManagerImpl mFragmentManager; // Activity this fragment is attached to. Activity mActivity; @@ -453,6 +454,10 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene // The View generated for this fragment. View mView; + // Whether this fragment should defer starting until after other fragments + // have been started and their loaders are finished. + boolean mDeferStart; + LoaderManagerImpl mLoaderManager; boolean mLoadersStarted; boolean mCheckedForLoaderManager; @@ -910,6 +915,34 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene } /** + * Set whether this fragment should enter the started state as normal or if + * start should be deferred until a system-determined convenient time, such + * as after any loaders have completed their work. + * + * <p>This option is not sticky across fragment starts; after a deferred start + * completes this option will be set to false.</p> + * + * @param deferResume true if this fragment can defer its resume until after others + */ + public void setStartDeferred(boolean deferResume) { + if (mDeferStart && !deferResume) { + mFragmentManager.performPendingDeferredStart(this); + } + mDeferStart = deferResume; + } + + /** + * Returns true if this fragment's move to the started state has been deferred. + * If this returns true it will be started once other fragments' loaders + * have finished running. + * + * @return true if this fragment's start has been deferred. + */ + public boolean isStartDeferred() { + return mDeferStart; + } + + /** * Return the LoaderManager for this fragment, creating it if needed. */ public LoaderManager getLoaderManager() { diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index 3da4f29..58cd27c 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -709,6 +709,13 @@ final class FragmentManagerImpl extends FragmentManager { return AnimatorInflater.loadAnimator(mActivity, anim); } + public void performPendingDeferredStart(Fragment f) { + if (f.mDeferStart) { + f.mDeferStart = false; + moveToState(f, mCurState, 0, 0); + } + } + void moveToState(Fragment f, int newState, int transit, int transitionStyle) { // Fragments that are not currently added will sit in the onCreate() state. if (!f.mAdded && newState > Fragment.CREATED) { @@ -718,7 +725,10 @@ final class FragmentManagerImpl extends FragmentManager { // While removing a fragment, we can't change it to a higher state. newState = f.mState; } - + // Defer start if requested; don't allow it to move to STARTED or higher. + if (f.mDeferStart && newState > Fragment.STOPPED) { + newState = Fragment.STOPPED; + } if (f.mState < newState) { // For fragments that are created from a layout, when restoring from // state we don't want to allow them to be created until they are @@ -992,13 +1002,21 @@ final class FragmentManagerImpl extends FragmentManager { mCurState = newState; if (mActive != null) { + boolean loadersRunning = false; for (int i=0; i<mActive.size(); i++) { Fragment f = mActive.get(i); if (f != null) { moveToState(f, newState, transit, transitStyle); + if (f.mLoaderManager != null) { + loadersRunning |= f.mLoaderManager.hasRunningLoaders(); + } } } + if (!loadersRunning) { + startPendingDeferredFragments(); + } + if (mNeedMenuInvalidate && mActivity != null && mCurState == Fragment.RESUMED) { mActivity.invalidateOptionsMenu(); mNeedMenuInvalidate = false; @@ -1006,6 +1024,15 @@ final class FragmentManagerImpl extends FragmentManager { } } + void startPendingDeferredFragments() { + for (int i=0; i<mActive.size(); i++) { + Fragment f = mActive.get(i); + if (f != null) { + performPendingDeferredStart(f); + } + } + } + void makeActive(Fragment f) { if (f.mIndex >= 0) { return; diff --git a/core/java/android/app/LoaderManager.java b/core/java/android/app/LoaderManager.java index 89e9ddd..aef0c6f 100644 --- a/core/java/android/app/LoaderManager.java +++ b/core/java/android/app/LoaderManager.java @@ -418,6 +418,10 @@ class LoaderManagerImpl extends LoaderManager { info.destroy(); mInactiveLoaders.remove(mId); } + + if (!hasRunningLoaders() && mActivity != null) { + mActivity.mFragments.startPendingDeferredFragments(); + } } void callOnLoadFinished(Loader<Object> loader, Object data) { @@ -820,4 +824,14 @@ class LoaderManagerImpl extends LoaderManager { } } } + + public boolean hasRunningLoaders() { + boolean loadersRunning = false; + final int count = mLoaders.size(); + for (int i = 0; i < count; i++) { + final LoaderInfo li = mLoaders.valueAt(i); + loadersRunning |= li.mStarted && !li.mDeliveredData; + } + return loadersRunning; + } } diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index 7d683a5..b2909b3 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -416,7 +416,8 @@ public class SyncManager implements OnAccountsUpdateListener { intent.setComponent(syncAdapterInfo.componentName); if (!mContext.bindService(intent, new InitializerServiceConnection(account, authority, mContext, mMainHandler), - Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND)) { + Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND + | Context.BIND_ALLOW_OOM_MANAGEMENT)) { Log.w(TAG, "initializeSyncAdapter: failed to bind to " + intent); } } @@ -971,7 +972,8 @@ public class SyncManager implements OnAccountsUpdateListener { mContext, 0, new Intent(Settings.ACTION_SYNC_SETTINGS), 0)); mBound = true; final boolean bindResult = mContext.bindService(intent, this, - Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND); + Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND + | Context.BIND_ALLOW_OOM_MANAGEMENT); if (!bindResult) { mBound = false; } diff --git a/core/java/android/database/CursorWindow.java b/core/java/android/database/CursorWindow.java index 9c93324..31e6f02 100644 --- a/core/java/android/database/CursorWindow.java +++ b/core/java/android/database/CursorWindow.java @@ -468,7 +468,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { } acquireReference(); try { - nativeCopyStringToBuffer(mWindowPtr, row, column, buffer); + nativeCopyStringToBuffer(mWindowPtr, row - mStartPos, column, buffer); } finally { releaseReference(); } diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index ba94ab2..a9a628a 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -148,7 +148,10 @@ public abstract class WallpaperService extends Service { int mCurWidth; int mCurHeight; int mWindowFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; + int mWindowPrivateFlags = + WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS; int mCurWindowFlags = mWindowFlags; + int mCurWindowPrivateFlags = mWindowPrivateFlags; final Rect mVisibleInsets = new Rect(); final Rect mWinFrame = new Rect(); final Rect mContentInsets = new Rect(); @@ -359,6 +362,25 @@ public abstract class WallpaperService extends Service { updateSurface(false, false, false); } } + + /** + * Control whether this wallpaper will receive notifications when the wallpaper + * has been scrolled. By default, wallpapers will receive notifications, although + * the default static image wallpapers do not. It is a performance optimization to + * set this to false. + * + * @param enabled whether the wallpaper wants to receive offset notifications + */ + public void setOffsetNotificationsEnabled(boolean enabled) { + mWindowPrivateFlags = enabled + ? (mWindowPrivateFlags | + WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS) + : (mWindowPrivateFlags & + ~WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS); + if (mCreated) { + updateSurface(false, false, false); + } + } /** * Called once to initialize the engine. After returning, the @@ -478,6 +500,8 @@ public abstract class WallpaperService extends Service { out.print(prefix); out.print("mType="); out.print(mType); out.print(" mWindowFlags="); out.print(mWindowFlags); out.print(" mCurWindowFlags="); out.println(mCurWindowFlags); + out.print(" mWindowPrivateFlags="); out.print(mWindowPrivateFlags); + out.print(" mCurWindowPrivateFlags="); out.println(mCurWindowPrivateFlags); out.print(prefix); out.print("mVisibleInsets="); out.print(mVisibleInsets.toShortString()); out.print(" mWinFrame="); out.print(mWinFrame.toShortString()); @@ -528,7 +552,8 @@ public abstract class WallpaperService extends Service { final boolean formatChanged = mFormat != mSurfaceHolder.getRequestedFormat(); boolean sizeChanged = mWidth != myWidth || mHeight != myHeight; final boolean typeChanged = mType != mSurfaceHolder.getRequestedType(); - final boolean flagsChanged = mCurWindowFlags != mWindowFlags; + final boolean flagsChanged = mCurWindowFlags != mWindowFlags || + mCurWindowPrivateFlags != mWindowPrivateFlags; if (forceRelayout || creating || surfaceCreating || formatChanged || sizeChanged || typeChanged || flagsChanged || redrawNeeded) { @@ -554,6 +579,8 @@ public abstract class WallpaperService extends Service { | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE ; + mCurWindowPrivateFlags = mWindowPrivateFlags; + mLayout.privateFlags = mWindowPrivateFlags; mLayout.memoryType = mType; mLayout.token = mWindowToken; diff --git a/core/java/android/speech/tts/FileSynthesisCallback.java b/core/java/android/speech/tts/FileSynthesisCallback.java index 5808919..04c3377 100644 --- a/core/java/android/speech/tts/FileSynthesisCallback.java +++ b/core/java/android/speech/tts/FileSynthesisCallback.java @@ -16,10 +16,10 @@ package android.speech.tts; import android.media.AudioFormat; +import android.os.FileUtils; import android.util.Log; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; @@ -63,7 +63,7 @@ class FileSynthesisCallback extends AbstractSynthesisCallback { * Must be called while holding the monitor on {@link #mStateLock}. */ private void cleanUp() { - closeFile(); + closeFileAndWidenPermissions(); if (mFile != null) { mFileName.delete(); } @@ -72,7 +72,7 @@ class FileSynthesisCallback extends AbstractSynthesisCallback { /** * Must be called while holding the monitor on {@link #mStateLock}. */ - private void closeFile() { + private void closeFileAndWidenPermissions() { try { if (mFile != null) { mFile.close(); @@ -81,6 +81,18 @@ class FileSynthesisCallback extends AbstractSynthesisCallback { } catch (IOException ex) { Log.e(TAG, "Failed to close " + mFileName + ": " + ex); } + + try { + // Make the written file readable and writeable by everyone. + // This allows the app that requested synthesis to read the file. + // + // Note that the directory this file was written must have already + // been world writeable in order it to have been + // written to in the first place. + FileUtils.setPermissions(mFileName.getAbsolutePath(), 0666, -1, -1); //-rw-rw-rw + } catch (SecurityException se) { + Log.e(TAG, "Security exception setting rw permissions on : " + mFileName); + } } @Override @@ -168,7 +180,7 @@ class FileSynthesisCallback extends AbstractSynthesisCallback { int dataLength = (int) (mFile.length() - WAV_HEADER_LENGTH); mFile.write( makeWavHeader(mSampleRateInHz, mAudioFormat, mChannelCount, dataLength)); - closeFile(); + closeFileAndWidenPermissions(); mDone = true; return TextToSpeech.SUCCESS; } catch (IOException ex) { diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index a36aecb..24423c3 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -4473,19 +4473,20 @@ public final class ViewRootImpl extends Handler implements ViewParent, * AccessibilityManagerService to the latter can interact with * the view hierarchy in this ViewAncestor. */ - final class AccessibilityInteractionConnection + static final class AccessibilityInteractionConnection extends IAccessibilityInteractionConnection.Stub { - private final WeakReference<ViewRootImpl> mViewAncestor; + private final WeakReference<ViewRootImpl> mRootImpl; AccessibilityInteractionConnection(ViewRootImpl viewAncestor) { - mViewAncestor = new WeakReference<ViewRootImpl>(viewAncestor); + mRootImpl = new WeakReference<ViewRootImpl>(viewAncestor); } public void findAccessibilityNodeInfoByAccessibilityId(int accessibilityId, int interactionId, IAccessibilityInteractionConnectionCallback callback, int interrogatingPid, long interrogatingTid) { - if (mViewAncestor.get() != null) { - getAccessibilityInteractionController() + ViewRootImpl viewRootImpl = mRootImpl.get(); + if (viewRootImpl != null) { + viewRootImpl.getAccessibilityInteractionController() .findAccessibilityNodeInfoByAccessibilityIdClientThread(accessibilityId, interactionId, callback, interrogatingPid, interrogatingTid); } @@ -4494,8 +4495,9 @@ public final class ViewRootImpl extends Handler implements ViewParent, public void performAccessibilityAction(int accessibilityId, int action, int interactionId, IAccessibilityInteractionConnectionCallback callback, int interogatingPid, long interrogatingTid) { - if (mViewAncestor.get() != null) { - getAccessibilityInteractionController() + ViewRootImpl viewRootImpl = mRootImpl.get(); + if (viewRootImpl != null) { + viewRootImpl.getAccessibilityInteractionController() .performAccessibilityActionClientThread(accessibilityId, action, interactionId, callback, interogatingPid, interrogatingTid); } @@ -4504,8 +4506,9 @@ public final class ViewRootImpl extends Handler implements ViewParent, public void findAccessibilityNodeInfoByViewId(int viewId, int interactionId, IAccessibilityInteractionConnectionCallback callback, int interrogatingPid, long interrogatingTid) { - if (mViewAncestor.get() != null) { - getAccessibilityInteractionController() + ViewRootImpl viewRootImpl = mRootImpl.get(); + if (viewRootImpl != null) { + viewRootImpl.getAccessibilityInteractionController() .findAccessibilityNodeInfoByViewIdClientThread(viewId, interactionId, callback, interrogatingPid, interrogatingTid); } @@ -4514,8 +4517,9 @@ public final class ViewRootImpl extends Handler implements ViewParent, public void findAccessibilityNodeInfosByViewText(String text, int accessibilityId, int interactionId, IAccessibilityInteractionConnectionCallback callback, int interrogatingPid, long interrogatingTid) { - if (mViewAncestor.get() != null) { - getAccessibilityInteractionController() + ViewRootImpl viewRootImpl = mRootImpl.get(); + if (viewRootImpl != null) { + viewRootImpl.getAccessibilityInteractionController() .findAccessibilityNodeInfosByViewTextClientThread(text, accessibilityId, interactionId, callback, interrogatingPid, interrogatingTid); } diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index e8ab227..e74fec6 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -813,6 +813,17 @@ public interface WindowManager extends ViewManager { public static final int PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED = 0x00000002; /** + * By default, wallpapers are sent new offsets when the wallpaper is scrolled. Wallpapers + * may elect to skp these notifications if they are no doing anything productive with + * them (they do not affect the wallpaper scrolling operation) by calling + * {@link + * android.service.wallpaper.WallpaperService.Engine#setOffsetNotificationsEnabled(boolean)}. + * + * @hide + */ + public static final int PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS = 0x00000004; + + /** * Control flags that are private to the platform. * @hide */ diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 5a300e8..9257534 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -9484,8 +9484,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return false; } - int posX = mPositionX + positionX - getScrollX(); - int posY = mPositionY + positionY - getScrollY(); + int posX = mPositionX + positionX; + int posY = mPositionY + positionY; // Offset by 1 to take into account 0.5 and int rounding around getPrimaryHorizontal. return posX >= clip.left - 1 && posX <= clip.right + 1 && @@ -9496,7 +9496,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final int line = mLayout.getLineForOffset(offset); final int lineBottom = mLayout.getLineBottom(line); final int primaryHorizontal = (int) mLayout.getPrimaryHorizontal(offset); - return isVisible(primaryHorizontal, lineBottom); + return isVisible(primaryHorizontal + viewportToContentHorizontalOffset(), + lineBottom + viewportToContentVerticalOffset()); } public void onScrollChanged() { @@ -10643,7 +10644,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mPositionX = (int) (mLayout.getPrimaryHorizontal(offset) - 0.5f - mHotspotX); mPositionY = mLayout.getLineBottom(line); - // Take TextView's padding into account. + // Take TextView's padding and scroll into account. mPositionX += viewportToContentHorizontalOffset(); mPositionY += viewportToContentVerticalOffset(); diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java index f25d65f..530809b 100644 --- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java @@ -300,6 +300,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter public boolean hideOverflowMenu() { if (mPostedOpenRunnable != null && mMenuView != null) { ((View) mMenuView).removeCallbacks(mPostedOpenRunnable); + mPostedOpenRunnable = null; return true; } @@ -653,10 +654,11 @@ public class ActionMenuPresenter extends BaseMenuPresenter public void run() { mMenu.changeMenuMode(); - if (mPopup.tryShow()) { + final View menuView = (View) mMenuView; + if (menuView != null && menuView.getWindowToken() != null && mPopup.tryShow()) { mOverflowPopup = mPopup; - mPostedOpenRunnable = null; } + mPostedOpenRunnable = null; } } } diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java index 18d45f7..ed02636 100644 --- a/core/java/com/android/internal/widget/ActionBarContextView.java +++ b/core/java/com/android/internal/widget/ActionBarContextView.java @@ -216,6 +216,9 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi }); final MenuBuilder menu = (MenuBuilder) mode.getMenu(); + if (mActionMenuPresenter != null) { + mActionMenuPresenter.dismissPopupMenus(); + } mActionMenuPresenter = new ActionMenuPresenter(mContext); mActionMenuPresenter.setReserveOverflow(true); diff --git a/core/java/com/android/internal/widget/DigitalClock.java b/core/java/com/android/internal/widget/DigitalClock.java index 18a4794..6f24eba 100644 --- a/core/java/com/android/internal/widget/DigitalClock.java +++ b/core/java/com/android/internal/widget/DigitalClock.java @@ -168,6 +168,8 @@ public class DigitalClock extends RelativeLayout { /* The time display consists of two tones. That's why we have two overlapping text views. */ mTimeDisplayBackground = (TextView) findViewById(R.id.timeDisplayBackground); mTimeDisplayBackground.setTypeface(sBackgroundFont); + mTimeDisplayBackground.setVisibility(View.INVISIBLE); + mTimeDisplayForeground = (TextView) findViewById(R.id.timeDisplayForeground); mTimeDisplayForeground.setTypeface(sForegroundFont); mAmPm = new AmPm(this, null); diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png Binary files differindex 9b78ae7..50908bd 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png Binary files differindex 2860c68..64c3b9b 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png Binary files differindex f312dc4..4bcc51d 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png Binary files differindex b7a8c5f..9dbad9b 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_off_disabled_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png Binary files differindex 7087cf7..2d5b328 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png Binary files differindex 5d26dac..e1474f0 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_off_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_holo.png b/core/res/res/drawable-hdpi/btn_check_off_holo.png Binary files differindex 4021a3b..9a5d158 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_holo.png +++ b/core/res/res/drawable-hdpi/btn_check_off_holo.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png Binary files differindex 00175ba..d141b28 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_off_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_holo_light.png Binary files differindex f8a34dc..696810e 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_off_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png Binary files differindex 9531624..584ce05 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png Binary files differindex 6b1eadc..ed317f7 100644 --- a/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_off_pressed_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png Binary files differindex bf2cf8d..426f3bb 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png Binary files differindex 00427a1..67a6c6b 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png Binary files differindex 0ee10ac..cccd61e 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png Binary files differindex e07be7c..cd02122 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_on_disabled_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png Binary files differindex fcea3b4..1da69b8 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png Binary files differindex 4006bd4..12d7081 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_on_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png Binary files differindex c69bcf8..ab2794a 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_on_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_holo_light.png Binary files differindex a8cedd1..7cca308 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_on_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png Binary files differindex bc57f7a..40bd746 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png Binary files differindex 34209c0..c49bc84 100644 --- a/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_check_on_pressed_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png b/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png Binary files differindex e77921c..449d427 100644 --- a/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png +++ b/core/res/res/drawable-hdpi/btn_code_lock_default_holo.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png Binary files differindex a7ce7e1..652a528 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png Binary files differindex 93c0df0..cd73cd2 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png Binary files differindex ccd468c..eb58648 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png Binary files differindex 44a0b53..25e8e1b 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_disabled_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png Binary files differindex f0508ac..db79042 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png Binary files differindex 14fbc7a..bba1e26 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_holo.png b/core/res/res/drawable-hdpi/btn_radio_off_holo.png Binary files differindex f159c62..e2761d2 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_holo.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_holo.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png Binary files differindex 328f662..ff5510e 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png Binary files differindex 1a15177..4d60008 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png Binary files differindex 0f4ffff..5dc3673 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png Binary files differindex 8fab476..c0d8a3d 100644 --- a/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_off_pressed_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png Binary files differindex c56166f..d9cee46 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png Binary files differindex 6bb4ad6..3895dba 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png Binary files differindex edfb365..6ebb184 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png Binary files differindex f2664c4..6e61b52 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_disabled_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png Binary files differindex 435c10d..13664b7 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png Binary files differindex f2e4190..fddb7dd 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_focused_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_holo.png b/core/res/res/drawable-hdpi/btn_radio_on_holo.png Binary files differindex 0fcfbe1..fdaffdc 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_holo.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_holo.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png Binary files differindex 5b87782..0a31436 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png Binary files differindex 41c9e6c..b843f77 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_holo_light.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png Binary files differindex c91da17..a920132 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_dark.png diff --git a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png Binary files differindex 8d6b81d..f6a8b45 100644 --- a/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png +++ b/core/res/res/drawable-hdpi/btn_radio_on_pressed_holo_light.png diff --git a/core/res/res/drawable-hdpi/stat_notify_chat.png b/core/res/res/drawable-hdpi/stat_notify_chat.png Binary files differindex 845aef3..32ffdf1 100644 --- a/core/res/res/drawable-hdpi/stat_notify_chat.png +++ b/core/res/res/drawable-hdpi/stat_notify_chat.png diff --git a/core/res/res/drawable-hdpi/stat_notify_disabled.png b/core/res/res/drawable-hdpi/stat_notify_disabled.png Binary files differindex 5b5a7dc..c5e5917 100644 --- a/core/res/res/drawable-hdpi/stat_notify_disabled.png +++ b/core/res/res/drawable-hdpi/stat_notify_disabled.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_dark.png Binary files differindex 44b987b..f3194b7 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_light.png Binary files differindex 2a3824b..bd71072 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disable_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disable_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disable_holo_dark.png Binary files differindex 44b987b..f3194b7 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disable_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disable_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disable_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disable_holo_light.png Binary files differindex 2a3824b..bd71072 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disable_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disable_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png Binary files differindex 3bf750f..049cd28 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png Binary files differindex d2dc269..42442e8 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png Binary files differindex e988577..654d449 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png Binary files differindex 156714e..db19043 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_disabled_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png Binary files differindex d38a140..a09cd48 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png Binary files differindex 114e6f8..3fc71fd 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_holo.png b/core/res/res/drawable-mdpi/btn_check_off_holo.png Binary files differindex 67d70b4..8655e0c 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_holo.png +++ b/core/res/res/drawable-mdpi/btn_check_off_holo.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png Binary files differindex d20b2aa..6081079 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_holo_light.png Binary files differindex a80c349..5e04a57 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png Binary files differindex 51512f5..1561176 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png Binary files differindex aebfa3e..b39ad3d 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_normal_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png Binary files differindex f653fae..9389a08 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png Binary files differindex 57192f2..1109c20 100644 --- a/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_off_pressed_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png Binary files differindex ac83494..29fa22f 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png Binary files differindex 6c247a8..997045d 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png Binary files differindex 7710165..e180ea7 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png Binary files differindex 15d0c80..20e2aab 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_on_disabled_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png Binary files differindex f1d8aec..9c089aa 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png Binary files differindex 0d95a00..a3b4916 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_on_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png Binary files differindex 4dd9452..9f31c1b 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_on_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_holo_light.png Binary files differindex 38abce6..f657c5b 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_on_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png Binary files differindex 06f0518..3a8cebc 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png Binary files differindex 21d54a6..e9f5f06 100644 --- a/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_check_on_pressed_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_code_lock_touched.png b/core/res/res/drawable-mdpi/btn_code_lock_touched.png Binary files differindex 2dfe0f6..fe5c1af 100644 --- a/core/res/res/drawable-mdpi/btn_code_lock_touched.png +++ b/core/res/res/drawable-mdpi/btn_code_lock_touched.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png Binary files differindex 056b9b8..0ad3a31 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png Binary files differindex 66aab54..4dac84c 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png Binary files differindex 712b267..20d3d77 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png Binary files differindex e692b38..a67375e 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_disabled_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png Binary files differindex 303177c..5878db1 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png Binary files differindex e939d92..6753d08 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_holo.png b/core/res/res/drawable-mdpi/btn_radio_off_holo.png Binary files differindex ba90d96..e2077a9 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_holo.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_holo.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png Binary files differindex 93edad2..ac3ef06 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png Binary files differindex c67e9fb..665cb17 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png Binary files differindex b615e9e..194f58e 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png Binary files differindex a081e7e..2a7d0d5 100644 --- a/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_off_pressed_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png Binary files differindex f43d7fc..8ffe006 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png Binary files differindex e137d46..c9be37e 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png Binary files differindex 1337d85..605af76 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png Binary files differindex 4dc896e..4583c3e 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_disabled_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png Binary files differindex d051fb7..456d15d 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png Binary files differindex 260283d..db3b30a 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_holo.png b/core/res/res/drawable-mdpi/btn_radio_on_holo.png Binary files differindex 41b603c..22f9a73 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_holo.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_holo.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png Binary files differindex 6628c81..54674d0 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png Binary files differindex 3bfa580..917417a 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png Binary files differindex a6ccaab..dff7c00 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_dark.png diff --git a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png Binary files differindex 001cada..70c705f 100644 --- a/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_radio_on_pressed_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_focused_holo_light.png Binary files differindex 26841bd..632f822 100644 --- a/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_holo_light.png b/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_holo_light.png Binary files differindex 4fe7483..484f115 100644 --- a/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_rating_star_on_disabled_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_rating_star_on_focused_holo_light.png b/core/res/res/drawable-mdpi/btn_rating_star_on_focused_holo_light.png Binary files differindex ec3b84d..4b4a1b9 100644 --- a/core/res/res/drawable-mdpi/btn_rating_star_on_focused_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_rating_star_on_focused_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_rating_star_on_normal_holo_light.png b/core/res/res/drawable-mdpi/btn_rating_star_on_normal_holo_light.png Binary files differindex 537f4f0..060bb5b 100644 --- a/core/res/res/drawable-mdpi/btn_rating_star_on_normal_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_rating_star_on_normal_holo_light.png diff --git a/core/res/res/drawable-mdpi/btn_rating_star_on_pressed_holo_light.png b/core/res/res/drawable-mdpi/btn_rating_star_on_pressed_holo_light.png Binary files differindex 0409d4b..000a9c4 100644 --- a/core/res/res/drawable-mdpi/btn_rating_star_on_pressed_holo_light.png +++ b/core/res/res/drawable-mdpi/btn_rating_star_on_pressed_holo_light.png diff --git a/core/res/res/drawable-mdpi/stat_notify_chat.png b/core/res/res/drawable-mdpi/stat_notify_chat.png Binary files differindex 82c83d0..4ff4667 100644 --- a/core/res/res/drawable-mdpi/stat_notify_chat.png +++ b/core/res/res/drawable-mdpi/stat_notify_chat.png diff --git a/core/res/res/drawable-mdpi/stat_notify_disabled.png b/core/res/res/drawable-mdpi/stat_notify_disabled.png Binary files differindex 9661d31..c03277c 100644 --- a/core/res/res/drawable-mdpi/stat_notify_disabled.png +++ b/core/res/res/drawable-mdpi/stat_notify_disabled.png diff --git a/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png b/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png Binary files differnew file mode 100644 index 0000000..f28fe38 --- /dev/null +++ b/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_normal.png diff --git a/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_pressed.png b/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 0000000..728fc67 --- /dev/null +++ b/core/res/res/drawable-sw600dp-hdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png b/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png Binary files differnew file mode 100644 index 0000000..99e742f --- /dev/null +++ b/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_normal.png diff --git a/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_pressed.png b/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 0000000..c7da024 --- /dev/null +++ b/core/res/res/drawable-sw600dp-mdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png b/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png Binary files differnew file mode 100644 index 0000000..75e4783 --- /dev/null +++ b/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_normal.png diff --git a/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_pressed.png b/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_pressed.png Binary files differnew file mode 100644 index 0000000..534c10b --- /dev/null +++ b/core/res/res/drawable-sw600dp-xhdpi/ic_lockscreen_handle_pressed.png diff --git a/core/res/res/drawable-xhdpi/btn_check_buttonless_off.png b/core/res/res/drawable-xhdpi/btn_check_buttonless_off.png Binary files differindex a3c5655..243a976 100644 --- a/core/res/res/drawable-xhdpi/btn_check_buttonless_off.png +++ b/core/res/res/drawable-xhdpi/btn_check_buttonless_off.png diff --git a/core/res/res/drawable-xhdpi/btn_check_buttonless_on.png b/core/res/res/drawable-xhdpi/btn_check_buttonless_on.png Binary files differindex 0629581..348a264 100644 --- a/core/res/res/drawable-xhdpi/btn_check_buttonless_on.png +++ b/core/res/res/drawable-xhdpi/btn_check_buttonless_on.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off.png b/core/res/res/drawable-xhdpi/btn_check_off.png Binary files differindex 083e04a..933864b 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off.png +++ b/core/res/res/drawable-xhdpi/btn_check_off.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable.png b/core/res/res/drawable-xhdpi/btn_check_off_disable.png Binary files differindex e746557..926c694 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disable.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disable.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png Binary files differindex 377b645..9e99fbd 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png Binary files differindex df66e7e..8417bfe 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png Binary files differindex 96b2a0f..903bf20 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png Binary files differindex df66e7e..8417bfe 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png Binary files differindex 96b2a0f..903bf20 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disable_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png Binary files differindex 0f34797..1dd1eec 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png Binary files differindex 95f8a15..481eb77 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png Binary files differindex 26a4540..85ab478 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png Binary files differindex 803f0af..6a364bb 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_disabled_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png Binary files differindex 9a3e472..828e4bc 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png Binary files differindex dce8e06..1c5e503 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_holo.png b/core/res/res/drawable-xhdpi/btn_check_off_holo.png Binary files differindex bdab4d0..bcedcea 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_holo.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_holo.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png Binary files differindex f8afd6a..f696db0 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png Binary files differindex 902b3a5..4518328 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png Binary files differindex ee19faf..d3d2fa4 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png Binary files differindex ea7dec8..b7f226a 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_normal_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_pressed.png b/core/res/res/drawable-xhdpi/btn_check_off_pressed.png Binary files differindex a3065f6..3a79e75 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_pressed.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_pressed.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png Binary files differindex 575f4e8..c85f135 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png Binary files differindex 8d5d780..50461d2 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_pressed_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_off_selected.png b/core/res/res/drawable-xhdpi/btn_check_off_selected.png Binary files differindex edfb30a..8004974 100644 --- a/core/res/res/drawable-xhdpi/btn_check_off_selected.png +++ b/core/res/res/drawable-xhdpi/btn_check_off_selected.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on.png b/core/res/res/drawable-xhdpi/btn_check_on.png Binary files differindex c1dee18..3c98740 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on.png +++ b/core/res/res/drawable-xhdpi/btn_check_on.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png Binary files differindex 041663a..a42c7ff 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png Binary files differindex ca0dadb..74fa0ff 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png Binary files differindex 4960b57..499147e 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png Binary files differindex ce1dd23..d705b42 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_disabled_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png Binary files differindex 0a31fbc..e64a188 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png Binary files differindex 62f6336..697a18a 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png Binary files differindex dc2379c..2fe7b01 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png Binary files differindex cbb26fd..a2612d7 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png Binary files differindex 9c160af..ce4b578 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png Binary files differindex eb85218..8f03489 100644 --- a/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_check_on_pressed_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off.png b/core/res/res/drawable-xhdpi/btn_radio_off.png Binary files differindex be4bafa..b25fd98 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_dark.png Binary files differindex 0aa6b93..b93bb66 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_light.png Binary files differindex e7a7020..2625e8b 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_dark.png Binary files differindex e3fac69..aa5f830 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_light.png Binary files differindex c2c8b5e..1030a80 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_disabled_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_dark.png Binary files differindex c28914c..5a12961 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_light.png Binary files differindex 9ddffd1..1e2108c 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_holo.png b/core/res/res/drawable-xhdpi/btn_radio_off_holo.png Binary files differindex 1167e1f..1866d07 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_holo.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_holo.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_off_holo_dark.png Binary files differindex e6c2474..d04d6e5 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_off_holo_light.png Binary files differindex c642355..36e82bb 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_pressed.png b/core/res/res/drawable-xhdpi/btn_radio_off_pressed.png Binary files differindex 19e4443..1ee1d4c 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_pressed.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_pressed.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_dark.png Binary files differindex 786ce59..60aede8 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_light.png Binary files differindex f56d716..614d27a 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_pressed_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_off_selected.png b/core/res/res/drawable-xhdpi/btn_radio_off_selected.png Binary files differindex 599b48b..2ef78f0 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_off_selected.png +++ b/core/res/res/drawable-xhdpi/btn_radio_off_selected.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on.png b/core/res/res/drawable-xhdpi/btn_radio_on.png Binary files differindex d041657..c3b757e 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_dark.png Binary files differindex 99f3d53..97994e8 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_light.png Binary files differindex 2d98e17..67e9bd1 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_dark.png Binary files differindex 71984bc..346909d 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_light.png Binary files differindex e77b6e3..5741490 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_disabled_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_dark.png Binary files differindex 5d1edc7..587f0ce 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_light.png Binary files differindex db9fc32..6d78b97 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_focused_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_holo.png b/core/res/res/drawable-xhdpi/btn_radio_on_holo.png Binary files differindex e39e097..e14392f 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_holo.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_holo.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_on_holo_dark.png Binary files differindex 4fc05dd..e565dfe 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_on_holo_light.png Binary files differindex bfcef36..5a7a5f7 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_pressed.png b/core/res/res/drawable-xhdpi/btn_radio_on_pressed.png Binary files differindex 88640d0..a986746 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_pressed.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_pressed.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_dark.png b/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_dark.png Binary files differindex ec7fa73..f402bd1 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_dark.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_dark.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_light.png b/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_light.png Binary files differindex 6941ce0..041e5cc 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_light.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_pressed_holo_light.png diff --git a/core/res/res/drawable-xhdpi/btn_radio_on_selected.png b/core/res/res/drawable-xhdpi/btn_radio_on_selected.png Binary files differindex c90b24d..b3d4234 100644 --- a/core/res/res/drawable-xhdpi/btn_radio_on_selected.png +++ b/core/res/res/drawable-xhdpi/btn_radio_on_selected.png diff --git a/core/res/res/drawable-xhdpi/stat_notify_chat.png b/core/res/res/drawable-xhdpi/stat_notify_chat.png Binary files differindex f860fdc..af85623 100644 --- a/core/res/res/drawable-xhdpi/stat_notify_chat.png +++ b/core/res/res/drawable-xhdpi/stat_notify_chat.png diff --git a/core/res/res/drawable-xhdpi/stat_notify_disabled.png b/core/res/res/drawable-xhdpi/stat_notify_disabled.png Binary files differindex 0a003af..a99f1f4 100644 --- a/core/res/res/drawable-xhdpi/stat_notify_disabled.png +++ b/core/res/res/drawable-xhdpi/stat_notify_disabled.png diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml index d32cd0c..23b2fcb 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml @@ -57,11 +57,27 @@ android:drawablePadding="4dip" /> - <com.android.internal.widget.WaveView + <com.android.internal.widget.multiwaveview.MultiWaveView android:id="@+id/unlock_widget" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_alignParentBottom="true" android:layout_gravity="center" + + android:targetDrawables="@array/lockscreen_targets_with_camera" + android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera" + android:directionDescriptions="@array/lockscreen_direction_descriptions" + android:handleDrawable="@drawable/ic_lockscreen_handle" + android:waveDrawable="@drawable/ic_lockscreen_outerring" + android:outerRadius="@dimen/multiwaveview_target_placement_radius" + android:snapMargin="@dimen/multiwaveview_snap_margin" + android:hitRadius="@dimen/multiwaveview_hit_radius" + android:rightChevronDrawable="@drawable/ic_lockscreen_chevron_right" + android:horizontalOffset="0dip" + android:verticalOffset="60dip" + android:feedbackCount="3" + android:vibrationDuration="20" /> <!-- emergency call button shown when sim is PUKd and tab_selector is hidden --> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml index dd29164..66223f2 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml @@ -61,13 +61,27 @@ android:layout_alignParentTop="true" android:drawablePadding="4dip"/> - <com.android.internal.widget.WaveView + <com.android.internal.widget.multiwaveview.MultiWaveView android:id="@+id/unlock_widget" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_rowSpan="7" android:layout_gravity="center_vertical|center_horizontal" - android:layout_marginRight="0dip" - android:layout_weight="1.0"/> + + android:targetDrawables="@array/lockscreen_targets_with_camera" + android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera" + android:directionDescriptions="@array/lockscreen_direction_descriptions" + android:handleDrawable="@drawable/ic_lockscreen_handle" + android:waveDrawable="@drawable/ic_lockscreen_outerring" + android:outerRadius="@dimen/multiwaveview_target_placement_radius" + android:snapMargin="@dimen/multiwaveview_snap_margin" + android:hitRadius="@dimen/multiwaveview_hit_radius" + android:rightChevronDrawable="@drawable/ic_lockscreen_chevron_right" + android:feedbackCount="3" + android:vibrationDuration="20" + android:horizontalOffset="0dip" + android:verticalOffset="0dip" + /> <!-- emergency call button shown when sim is PUKd and tab_selector is hidden --> <Button diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index b03afef..70dd5ec 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1169,8 +1169,7 @@ <string name="description_target_camera" msgid="969071997552486814">"Càmera"</string> <string name="description_target_silent" msgid="893551287746522182">"Silenci"</string> <string name="description_target_soundon" msgid="30052466675500172">"Activa el so"</string> - <!-- no translation found for description_target_unlock_tablet (3833195335629795055) --> - <skip /> + <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Llisca el dit per desbloquejar."</string> <string name="keyboard_headset_required_to_hear_password" msgid="5913502399391940888">"Connecta un auricular per escoltar les claus de la contrasenya en veu alta."</string> <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punt."</string> <string name="action_bar_home_description" msgid="5293600496601490216">"Torna a la pàgina d\'inici"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 529aa62..639f115 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1169,8 +1169,7 @@ <string name="description_target_camera" msgid="969071997552486814">"Φωτογραφική μηχανή"</string> <string name="description_target_silent" msgid="893551287746522182">"Αθόρυβο"</string> <string name="description_target_soundon" msgid="30052466675500172">"Ενεργοποίηση ήχου"</string> - <!-- no translation found for description_target_unlock_tablet (3833195335629795055) --> - <skip /> + <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Σύρετε για ξεκλείδωμα."</string> <string name="keyboard_headset_required_to_hear_password" msgid="5913502399391940888">"Συνδέστε ένα σετ ακουστικών για να ακούσετε τα πλήκτρα του κωδικού πρόσβασης να εκφωνούνται δυνατά."</string> <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Τελεία."</string> <string name="action_bar_home_description" msgid="5293600496601490216">"Πλοήγηση στην αρχική σελίδα"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index adc32a3..dfc0916 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1169,8 +1169,7 @@ <string name="description_target_camera" msgid="969071997552486814">"Camera"</string> <string name="description_target_silent" msgid="893551287746522182">"Silent"</string> <string name="description_target_soundon" msgid="30052466675500172">"Sound on"</string> - <!-- no translation found for description_target_unlock_tablet (3833195335629795055) --> - <skip /> + <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Swipe to unlock."</string> <string name="keyboard_headset_required_to_hear_password" msgid="5913502399391940888">"Plug in a headset to hear password keys spoken aloud."</string> <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Dot"</string> <string name="action_bar_home_description" msgid="5293600496601490216">"Navigate home"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index a2f54ef..9d81403 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -302,7 +302,7 @@ <string name="permdesc_readLogs" product="tablet" msgid="4077356893924755294">"Permite que una aplicación lea diversos archivos de registro del sistema. Con este permiso, la aplicación puede ver información general sobre las acciones que se realizan con el tablet (que puede incluir datos personales o privados)."</string> <string name="permdesc_readLogs" product="default" msgid="8896449437464867766">"Permite que una aplicación lea distintos archivos de registro del sistema. Con este permiso, la aplicación puede ver información general sobre las acciones que realizas con el teléfono, que puede incluir datos personales o privados."</string> <string name="permlab_diagnostic" msgid="8076743953908000342">"leer/escribir en los recursos propiedad del grupo de diagnóstico"</string> - <string name="permdesc_diagnostic" msgid="3121238373951637049">"Permite que una aplicación lea y escriba en cualquier recurso propiedad del grupo de diagnóstico como, por ejemplo, archivos in/dev. Este permiso podría afectar a la seguridad y estabilidad del sistema. SÓLO se debe utilizar para diagnósticos específicos de hardware realizados por el fabricante o el operador."</string> + <string name="permdesc_diagnostic" msgid="3121238373951637049">"Permite que una aplicación lea y escriba en cualquier recurso propiedad del grupo de diagnóstico como, por ejemplo, archivos in/dev. Este permiso podría afectar a la seguridad y estabilidad del sistema. SOLO se debe utilizar para diagnósticos específicos de hardware realizados por el fabricante o el operador."</string> <string name="permlab_changeComponentState" msgid="79425198834329406">"habilitar o inhabilitar componentes de la aplicación"</string> <string name="permdesc_changeComponentState" product="tablet" msgid="4647419365510068321">"Permite que una aplicación cambie si un componente de otra aplicación está habilitado o inhabilitado. Las aplicaciones malintencionadas pueden utilizar este permiso para inhabilitar funciones importantes del tablet. Este permiso se debe utilizar con precaución, ya que es posible que los componentes se vuelvan inservibles, inconsistentes o inestables."</string> <string name="permdesc_changeComponentState" product="default" msgid="3443473726140080761">"Permite que una aplicación cambie si un componente de otra aplicación está habilitado o inhabilitado. Las aplicaciones malintencionadas pueden utilizar este permiso para inhabilitar funciones importantes del teléfono. Este permiso se debe utilizar con precaución, ya que es posible que los componentes se vuelvan inservibles, inconsistentes o inestables."</string> @@ -420,7 +420,7 @@ <string name="permdesc_devicePower" product="default" msgid="4577331933252444818">"Permite que la aplicación active o desactive el teléfono."</string> <string name="permlab_factoryTest" msgid="3715225492696416187">"ejecutar en modo de prueba de fábrica"</string> <string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Permite la ejecución como prueba de fabricante de nivel inferior, lo que posibilita un acceso completo al hardware del tablet. Solo está disponible cuando un tablet se está ejecutando en modo de prueba."</string> - <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Ejecutar como prueba de fabricante de nivel inferior, permitiendo un acceso íntegro al hardware del teléfono. Sólo está disponible cuando un teléfono se está ejecutando en modo de prueba."</string> + <string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Ejecutar como prueba de fabricante de nivel inferior, permitiendo un acceso íntegro al hardware del teléfono. Solo está disponible cuando un teléfono se está ejecutando en modo de prueba."</string> <string name="permlab_setWallpaper" msgid="6627192333373465143">"establecer fondo de pantalla"</string> <string name="permdesc_setWallpaper" msgid="6417041752170585837">"Permite que la aplicación establezca el fondo de pantalla del sistema."</string> <string name="permlab_setWallpaperHints" msgid="3600721069353106851">"establecer el tamaño del fondo de pantalla"</string> diff --git a/core/res/res/values-mcc208-mnc10/config.xml b/core/res/res/values-mcc208-mnc10/config.xml new file mode 100755 index 0000000..99cc599 --- /dev/null +++ b/core/res/res/values-mcc208-mnc10/config.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You my obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> + <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or + <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> + <integer-array translatable="false" name="config_tether_upstream_types"> + <item>1</item> + <item>4</item> + </integer-array> + + <!-- String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> + <string translatable="false" name="config_tether_apndata">SFR Option Modem,websfr,,,,,,,,,208,10,,DUN"</string> + +</resources> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 746ea9e..51d7802 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -674,7 +674,7 @@ <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Сеть заблокирована"</string> <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-карта заблокирована с помощью кода PUK."</string> <string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"См. руководство пользователя или свяжитесь со службой поддержки."</string> - <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM-карта заблокирована."</string> + <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM-карта заблокирована"</string> <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"Разблокировка SIM-карты…"</string> <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="3514742106066877476">"Количество неудачных попыток ввода графического ключа разблокировки: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Повторите попытку через <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="4906034376425175381">"Количество неудачных попыток ввода пароля: <xliff:g id="NUMBER_0">%d</xliff:g>. "\n\n"Повторите попытку через <xliff:g id="NUMBER_1">%d</xliff:g> с."</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index e618221..dd9715e 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1169,8 +1169,7 @@ <string name="description_target_camera" msgid="969071997552486814">"Kamera"</string> <string name="description_target_silent" msgid="893551287746522182">"Tyst"</string> <string name="description_target_soundon" msgid="30052466675500172">"Ljud på"</string> - <!-- no translation found for description_target_unlock_tablet (3833195335629795055) --> - <skip /> + <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Lås upp genom att dra."</string> <string name="keyboard_headset_required_to_hear_password" msgid="5913502399391940888">"Anslut hörlurar om du vill höra lösenorden läsas upp."</string> <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punkt."</string> <string name="action_bar_home_description" msgid="5293600496601490216">"Visa startsidan"</string> diff --git a/core/res/res/values-sw600dp-land/arrays.xml b/core/res/res/values-sw600dp-land/arrays.xml new file mode 100644 index 0000000..6304bc0 --- /dev/null +++ b/core/res/res/values-sw600dp-land/arrays.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/colors.xml +** +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Resources for MultiWaveView in LockScreen --> + <array name="lockscreen_targets_when_silent"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@null</item> + <item>@drawable/ic_lockscreen_soundon</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_when_silent"> + <item>@string/description_target_unlock</item> + <item>@null</item> + <item>@string/description_target_soundon</item> + <item>@null</item> + </array> + + <array name="lockscreen_direction_descriptions"> + <item>@string/description_direction_right</item> + <item>@null</item> + <item>@string/description_direction_left</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_when_soundon"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@null</item> + <item>@drawable/ic_lockscreen_silent</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_when_soundon"> + <item>@string/description_target_unlock</item> + <item>@null</item> + <item>@string/description_target_silent</item> + <item>@null</item> + </array> + + <array name="lockscreen_targets_with_camera"> + <item>@drawable/ic_lockscreen_unlock</item> + <item>@null</item> + <item>@drawable/ic_lockscreen_camera</item> + <item>@null</item> + </array> + + <array name="lockscreen_target_descriptions_with_camera"> + <item>@string/description_target_unlock</item> + <item>@null</item> + <item>@string/description_target_camera</item> + <item>@null</item> + </array> + +</resources> diff --git a/core/res/res/values-sw600dp/colors.xml b/core/res/res/values-sw600dp/colors.xml index edd2712..f59b1f2 100644 --- a/core/res/res/values-sw600dp/colors.xml +++ b/core/res/res/values-sw600dp/colors.xml @@ -19,8 +19,8 @@ --> <resources> <!-- keyguard clock --> - <color name="lockscreen_clock_background">#b3ffffff</color> - <color name="lockscreen_clock_foreground">#7affffff</color> + <color name="lockscreen_clock_background">#ffffffff</color> + <color name="lockscreen_clock_foreground">#ffffffff</color> <color name="lockscreen_clock_am_pm">#ffffffff</color> <color name="lockscreen_owner_info">#ff9a9a9a</color> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 9e9d74f..ceacb70 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -137,7 +137,7 @@ <string name="turn_off_radio" msgid="8198784949987062346">"Вимкнути радіо"</string> <string name="screen_lock" msgid="799094655496098153">"Заблок. екран"</string> <string name="power_off" msgid="4266614107412865048">"Вимкнути"</string> - <string name="shutdown_progress" msgid="2281079257329981203">"Заверш. роботи..."</string> + <string name="shutdown_progress" msgid="2281079257329981203">"Вимкнення..."</string> <string name="shutdown_confirm" product="tablet" msgid="3385745179555731470">"Ваш пристрій буде вимкнено."</string> <string name="shutdown_confirm" product="default" msgid="649792175242821353">"Ваш телефон буде вимкнено."</string> <string name="shutdown_confirm_question" msgid="6656441286856415014">"Дійсно вимкнути?"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 9c4bde1..e88de76 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1169,8 +1169,7 @@ <string name="description_target_camera" msgid="969071997552486814">"Ikhamera"</string> <string name="description_target_silent" msgid="893551287746522182">"Thulile"</string> <string name="description_target_soundon" msgid="30052466675500172">"Umsindo uvuliwe"</string> - <!-- no translation found for description_target_unlock_tablet (3833195335629795055) --> - <skip /> + <string name="description_target_unlock_tablet" msgid="3833195335629795055">"Swayipha ukuze uvule."</string> <string name="keyboard_headset_required_to_hear_password" msgid="5913502399391940888">"Faka ama-headset ukuze uzwe izinkinobho zephasiwedi eziphimiswayo."</string> <string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Icashazi."</string> <string name="action_bar_home_description" msgid="5293600496601490216">"Zulazulela ekhaya"</string> diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index c37871b..b1a4b42 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -107,9 +107,9 @@ <color name="keyguard_text_color_decline">#fe0a5a</color> <!-- keyguard clock --> - <color name="lockscreen_clock_background">#e5ffffff</color> - <color name="lockscreen_clock_foreground">#e5ffffff</color> - <color name="lockscreen_clock_am_pm">#ff9a9a9a</color> + <color name="lockscreen_clock_background">#ffffffff</color> + <color name="lockscreen_clock_foreground">#ffffffff</color> + <color name="lockscreen_clock_am_pm">#ffffffff</color> <color name="lockscreen_owner_info">#ff9a9a9a</color> <!-- FaceLock --> diff --git a/data/fonts/Roboto-Bold.ttf b/data/fonts/Roboto-Bold.ttf Binary files differindex b1546b6..6d32fba 100644 --- a/data/fonts/Roboto-Bold.ttf +++ b/data/fonts/Roboto-Bold.ttf diff --git a/data/fonts/Roboto-BoldItalic.ttf b/data/fonts/Roboto-BoldItalic.ttf Binary files differindex bf1fc1b..fc2da4c 100644 --- a/data/fonts/Roboto-BoldItalic.ttf +++ b/data/fonts/Roboto-BoldItalic.ttf diff --git a/data/fonts/Roboto-Italic.ttf b/data/fonts/Roboto-Italic.ttf Binary files differindex b204303..ce2e072 100644 --- a/data/fonts/Roboto-Italic.ttf +++ b/data/fonts/Roboto-Italic.ttf diff --git a/data/fonts/Roboto-Regular.ttf b/data/fonts/Roboto-Regular.ttf Binary files differindex 51cf896..465dfc1 100644 --- a/data/fonts/Roboto-Regular.ttf +++ b/data/fonts/Roboto-Regular.ttf diff --git a/docs/html/sdk/android-4.0.jd b/docs/html/sdk/android-4.0.jd index cad89c2..2ccc927 100644 --- a/docs/html/sdk/android-4.0.jd +++ b/docs/html/sdk/android-4.0.jd @@ -1910,7 +1910,6 @@ built-in applications:</p> <li>Search</li> <li>Settings</li> <li>Speech Recorder</li> -<li>Speech Recorder</li> <li>Widget Preview</li> </ul> </td> diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h index e98d55c..08835fb 100644 --- a/include/media/mediaplayer.h +++ b/include/media/mediaplayer.h @@ -209,7 +209,6 @@ private: status_t prepareAsync_l(); status_t getDuration_l(int *msec); status_t attachNewPlayer(const sp<IMediaPlayer>& player); - void disconnectNativeWindow(); status_t reset_l(); sp<IMediaPlayer> mPlayer; @@ -233,8 +232,6 @@ private: int mVideoHeight; int mAudioSessionId; float mSendLevel; - sp<ANativeWindow> mConnectedWindow; - sp<IBinder> mConnectedWindowBinder; }; }; // namespace android diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp index 37a82e9..f72300b 100644 --- a/media/libmedia/mediaplayer.cpp +++ b/media/libmedia/mediaplayer.cpp @@ -86,8 +86,6 @@ void MediaPlayer::disconnect() if (p != 0) { p->disconnect(); } - - disconnectNativeWindow(); } // always call with lock held @@ -221,63 +219,12 @@ status_t MediaPlayer::getMetadata(bool update_only, bool apply_filter, Parcel *m return mPlayer->getMetadata(update_only, apply_filter, metadata); } -void MediaPlayer::disconnectNativeWindow() { - if (mConnectedWindow != NULL) { - status_t err = native_window_api_disconnect(mConnectedWindow.get(), - NATIVE_WINDOW_API_MEDIA); - - if (err != OK) { - LOGW("native_window_api_disconnect returned an error: %s (%d)", - strerror(-err), err); - } - } - mConnectedWindow.clear(); -} - status_t MediaPlayer::setVideoSurface(const sp<Surface>& surface) { LOGV("setVideoSurface"); Mutex::Autolock _l(mLock); if (mPlayer == 0) return NO_INIT; - - sp<IBinder> binder(surface == NULL ? NULL : surface->asBinder()); - if (mConnectedWindowBinder == binder) { - return OK; - } - - if (surface != NULL) { - status_t err = native_window_api_connect(surface.get(), - NATIVE_WINDOW_API_MEDIA); - - if (err != OK) { - LOGE("setVideoSurface failed: %d", err); - // Note that we must do the reset before disconnecting from the ANW. - // Otherwise queue/dequeue calls could be made on the disconnected - // ANW, which may result in errors. - reset_l(); - - disconnectNativeWindow(); - - return err; - } - } - - // Note that we must set the player's new surface before disconnecting the - // old one. Otherwise queue/dequeue calls could be made on the disconnected - // ANW, which may result in errors. - status_t err = mPlayer->setVideoSurface(surface); - - disconnectNativeWindow(); - - mConnectedWindow = surface; - - if (err == OK) { - mConnectedWindowBinder = binder; - } else { - disconnectNativeWindow(); - } - - return err; + return mPlayer->setVideoSurface(surface); } status_t MediaPlayer::setVideoSurfaceTexture( @@ -286,48 +233,7 @@ status_t MediaPlayer::setVideoSurfaceTexture( LOGV("setVideoSurfaceTexture"); Mutex::Autolock _l(mLock); if (mPlayer == 0) return NO_INIT; - - sp<IBinder> binder(surfaceTexture == NULL ? NULL : - surfaceTexture->asBinder()); - if (mConnectedWindowBinder == binder) { - return OK; - } - - sp<ANativeWindow> anw; - if (surfaceTexture != NULL) { - anw = new SurfaceTextureClient(surfaceTexture); - status_t err = native_window_api_connect(anw.get(), - NATIVE_WINDOW_API_MEDIA); - - if (err != OK) { - LOGE("setVideoSurfaceTexture failed: %d", err); - // Note that we must do the reset before disconnecting from the ANW. - // Otherwise queue/dequeue calls could be made on the disconnected - // ANW, which may result in errors. - reset_l(); - - disconnectNativeWindow(); - - return err; - } - } - - // Note that we must set the player's new SurfaceTexture before - // disconnecting the old one. Otherwise queue/dequeue calls could be made - // on the disconnected ANW, which may result in errors. - status_t err = mPlayer->setVideoSurfaceTexture(surfaceTexture); - - disconnectNativeWindow(); - - mConnectedWindow = anw; - - if (err == OK) { - mConnectedWindowBinder = binder; - } else { - disconnectNativeWindow(); - } - - return err; + return mPlayer->setVideoSurfaceTexture(surfaceTexture); } // must call with lock held diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 2ea2af9..b655358 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -40,6 +40,7 @@ #include <binder/IServiceManager.h> #include <binder/MemoryHeapBase.h> #include <binder/MemoryBase.h> +#include <gui/SurfaceTextureClient.h> #include <utils/Errors.h> // for status_t #include <utils/String8.h> #include <utils/SystemClock.h> @@ -528,6 +529,8 @@ void MediaPlayerService::Client::disconnect() p->reset(); } + disconnectNativeWindow(); + IPCThreadState::self()->flushCommands(); } @@ -793,13 +796,67 @@ status_t MediaPlayerService::Client::setVideoSurface(const sp<Surface>& surface) return p->setVideoSurface(surface); } +void MediaPlayerService::Client::disconnectNativeWindow() { + if (mConnectedWindow != NULL) { + status_t err = native_window_api_disconnect(mConnectedWindow.get(), + NATIVE_WINDOW_API_MEDIA); + + if (err != OK) { + LOGW("native_window_api_disconnect returned an error: %s (%d)", + strerror(-err), err); + } + } + mConnectedWindow.clear(); +} + status_t MediaPlayerService::Client::setVideoSurfaceTexture( const sp<ISurfaceTexture>& surfaceTexture) { LOGV("[%d] setVideoSurfaceTexture(%p)", mConnId, surfaceTexture.get()); sp<MediaPlayerBase> p = getPlayer(); if (p == 0) return UNKNOWN_ERROR; - return p->setVideoSurfaceTexture(surfaceTexture); + + sp<IBinder> binder(surfaceTexture == NULL ? NULL : + surfaceTexture->asBinder()); + if (mConnectedWindowBinder == binder) { + return OK; + } + + sp<ANativeWindow> anw; + if (surfaceTexture != NULL) { + anw = new SurfaceTextureClient(surfaceTexture); + status_t err = native_window_api_connect(anw.get(), + NATIVE_WINDOW_API_MEDIA); + + if (err != OK) { + LOGE("setVideoSurfaceTexture failed: %d", err); + // Note that we must do the reset before disconnecting from the ANW. + // Otherwise queue/dequeue calls could be made on the disconnected + // ANW, which may result in errors. + reset(); + + disconnectNativeWindow(); + + return err; + } + } + + // Note that we must set the player's new SurfaceTexture before + // disconnecting the old one. Otherwise queue/dequeue calls could be made + // on the disconnected ANW, which may result in errors. + status_t err = p->setVideoSurfaceTexture(surfaceTexture); + + disconnectNativeWindow(); + + mConnectedWindow = anw; + + if (err == OK) { + mConnectedWindowBinder = binder; + } else { + disconnectNativeWindow(); + } + + return err; } status_t MediaPlayerService::Client::invoke(const Parcel& request, diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index 53e625a..62214ba 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -318,6 +318,9 @@ private: // @param type Of the metadata to be recorded. void addNewMetadataUpdate(media::Metadata::Type type); + // Disconnect from the currently connected ANativeWindow. + void disconnectNativeWindow(); + mutable Mutex mLock; sp<MediaPlayerBase> mPlayer; sp<MediaPlayerService> mService; @@ -329,6 +332,8 @@ private: int32_t mConnId; int mAudioSessionId; uid_t mUID; + sp<ANativeWindow> mConnectedWindow; + sp<IBinder> mConnectedWindowBinder; // Metadata filters. media::Metadata::Filter mMetadataAllow; // protected by mLock diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 4c710b4..7cdb76c 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -796,7 +796,7 @@ void NuPlayer::notifyListener(int msg, int ext1, int ext2) { return; } - driver->sendEvent(msg, ext1, ext2); + driver->notifyListener(msg, ext1, ext2); } void NuPlayer::flushDecoder(bool audio, bool needShutdown) { diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp index b1e917d..452ba99 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp @@ -35,6 +35,7 @@ NuPlayerDriver::NuPlayerDriver() mNumFramesDropped(0), mLooper(new ALooper), mState(UNINITIALIZED), + mAtEOS(false), mStartupSeekTimeUs(-1) { mLooper->setName("NuPlayerDriver Looper"); @@ -106,7 +107,7 @@ status_t NuPlayerDriver::prepare() { } status_t NuPlayerDriver::prepareAsync() { - sendEvent(MEDIA_PREPARED); + notifyListener(MEDIA_PREPARED); return OK; } @@ -117,6 +118,7 @@ status_t NuPlayerDriver::start() { return INVALID_OPERATION; case STOPPED: { + mAtEOS = false; mPlayer->start(); if (mStartupSeekTimeUs >= 0) { @@ -173,7 +175,7 @@ status_t NuPlayerDriver::pause() { } bool NuPlayerDriver::isPlaying() { - return mState == PLAYING; + return mState == PLAYING && !mAtEOS; } status_t NuPlayerDriver::seekTo(int msec) { @@ -190,6 +192,7 @@ status_t NuPlayerDriver::seekTo(int msec) { case PLAYING: case PAUSED: { + mAtEOS = false; mPlayer->seekToAsync(seekTimeUs); break; } @@ -291,7 +294,7 @@ void NuPlayerDriver::notifyPosition(int64_t positionUs) { } void NuPlayerDriver::notifySeekComplete() { - sendEvent(MEDIA_SEEK_COMPLETE); + notifyListener(MEDIA_SEEK_COMPLETE); } void NuPlayerDriver::notifyFrameStats( @@ -320,4 +323,12 @@ status_t NuPlayerDriver::dump(int fd, const Vector<String16> &args) const { return OK; } +void NuPlayerDriver::notifyListener(int msg, int ext1, int ext2) { + if (msg == MEDIA_PLAYBACK_COMPLETE || msg == MEDIA_ERROR) { + mAtEOS = true; + } + + sendEvent(msg, ext1, ext2); +} + } // namespace android diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h index 181c37d..aaa3de0 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.h @@ -67,6 +67,7 @@ struct NuPlayerDriver : public MediaPlayerInterface { void notifyPosition(int64_t positionUs); void notifySeekComplete(); void notifyFrameStats(int64_t numFramesTotal, int64_t numFramesDropped); + void notifyListener(int msg, int ext1 = 0, int ext2 = 0); protected: virtual ~NuPlayerDriver(); @@ -95,6 +96,7 @@ private: }; State mState; + bool mAtEOS; int64_t mStartupSeekTimeUs; diff --git a/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png Binary files differindex 319f925..5d2112a 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_notify_image.png diff --git a/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png Binary files differindex fa8d4bf..355f02b 100644 --- a/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png +++ b/packages/SystemUI/res/drawable-hdpi/stat_notify_image_error.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png Binary files differindex 5036e8d..87b0297 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_notify_image.png diff --git a/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png Binary files differindex 94487bf..35ea65a 100644 --- a/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png +++ b/packages/SystemUI/res/drawable-mdpi/stat_notify_image_error.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png b/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png Binary files differindex 3c5c082..6afd2d0 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_notify_image.png diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png b/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png Binary files differindex 8aa19e4..a104cc2 100644 --- a/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png +++ b/packages/SystemUI/res/drawable-xhdpi/stat_notify_image_error.png diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index df214d6..487e374 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -60,14 +60,14 @@ <string name="always_use_accessory" msgid="1210954576979621596">"Bu USB aksesuar için varsayılan olarak kullan"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Yakınlaştır (ekranı kaplasın)"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Genişlet (ekran kapansın)"</string> - <string name="compat_mode_help_header" msgid="7969493989397529910">"Uyumluluk zum\'u"</string> + <string name="compat_mode_help_header" msgid="7969493989397529910">"Uyumluluk yakınlaştırması"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Uygulama küçük bir ekran için tasarlanmışsa saatin yanında bir yakınlaştırma denetimi görünür."</string> <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Ekran görüntüsü kaydediliyor..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Ekran görüntüsü kaydediliyor..."</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"Ekran görüntüsü kaydediliyor."</string> - <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekran görüntüsü yakalandı."</string> + <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekran görüntüsü alındı."</string> <string name="screenshot_saved_text" msgid="1152839647677558815">"Ekran görüntünüzü izlemek için dokunun."</string> - <string name="screenshot_failed_title" msgid="705781116746922771">"Ekran görüntüsü yakalanamadı."</string> + <string name="screenshot_failed_title" msgid="705781116746922771">"Ekran görüntüsü alınamadı."</string> <string name="screenshot_failed_text" msgid="8134011269572415402">"Ekran görüntüsü kaydedilemedi. Depolama birimi kullanımda olabilir."</string> <string name="usb_preference_title" msgid="6551050377388882787">"USB dosya aktarım seçenekleri"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Medya oynatıcı olarak ekle (MTP)"</string> @@ -98,7 +98,7 @@ <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Veri sinyali üç çubuk."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Veri sinyali tam."</string> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Kablosuz yok."</string> - <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Kablosuz gücü tek çubuk."</string> + <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Kablosuz gücü tek çubukta."</string> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Kablosuz sinyal gücü iki çubuk."</string> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Kablosuz sinyal gücü üç çubuk."</string> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Kablosuz sinyal gücü tam."</string> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 4ac89b2..1fe4ebb 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -43,5 +43,11 @@ <!-- How many icons may be shown at once in the system bar. Includes any slots that may be reused for things like IME control. --> <integer name="config_maxNotificationIcons">5</integer> + + <!-- Show phone (voice) signal strength instead of data in mobile RSSI. --> + <bool name="config_showPhoneRSSIForData">false</bool> + + <!-- When true, show 1/2G networks as 3G. --> + <bool name="config_showMin3G">false</bool> </resources> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 79fcec0..8fba86a 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -57,7 +57,7 @@ <dimen name="status_bar_icon_drawing_size">18dip</dimen> <!-- opacity at which Notification icons will be drawn in the status bar --> - <item type="dimen" name="status_bar_icon_drawing_alpha">50%</item> + <item type="dimen" name="status_bar_icon_drawing_alpha">55%</item> <!-- gap on either side of status bar notification icons --> <dimen name="status_bar_icon_padding">0dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index bf1ec25..724679f 100644 --- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java @@ -170,6 +170,8 @@ public class ImageWallpaper extends WallpaperService { //registerReceiver(mReceiver, filter, null, mHandler); updateSurfaceSize(surfaceHolder); + + setOffsetNotificationsEnabled(false); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index 9bee5df..5f18b5d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -82,7 +82,7 @@ public class PhoneStatusBarPolicy { private boolean mVolumeVisible; // bluetooth device status - private boolean mBluetoothEnabled; + private boolean mBluetoothEnabled = false; // wifi private static final int[][] sWifiSignalImages = { @@ -139,6 +139,18 @@ public class PhoneStatusBarPolicy { mContext = context; mService = (StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE); + // listen for broadcasts + IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_ALARM_CHANGED); + filter.addAction(Intent.ACTION_SYNC_STATE_CHANGED); + filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); + filter.addAction(AudioManager.VIBRATE_SETTING_CHANGED_ACTION); + filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); + filter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED); + filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); + filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION); + mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); + // storage mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); mStorageManager.registerListener( @@ -153,13 +165,15 @@ public class PhoneStatusBarPolicy { mService.setIconVisibility("cdma_eri", false); // bluetooth status - mService.setIcon("bluetooth", R.drawable.stat_sys_data_bluetooth, 0, null); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); + int bluetoothIcon = R.drawable.stat_sys_data_bluetooth; if (adapter != null) { - mBluetoothEnabled = adapter.isEnabled(); - } else { - mBluetoothEnabled = false; + mBluetoothEnabled = (adapter.getState() == BluetoothAdapter.STATE_ON); + if (adapter.getConnectionState() == BluetoothAdapter.STATE_CONNECTED) { + bluetoothIcon = R.drawable.stat_sys_data_bluetooth_connected; + } } + mService.setIcon("bluetooth", bluetoothIcon, 0, null); mService.setIconVisibility("bluetooth", mBluetoothEnabled); // Alarm clock @@ -176,19 +190,6 @@ public class PhoneStatusBarPolicy { mService.setIcon("volume", R.drawable.stat_sys_ringer_silent, 0, null); mService.setIconVisibility("volume", false); updateVolume(); - - IntentFilter filter = new IntentFilter(); - - // Register for Intent broadcasts for... - filter.addAction(Intent.ACTION_ALARM_CHANGED); - filter.addAction(Intent.ACTION_SYNC_STATE_CHANGED); - filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); - filter.addAction(AudioManager.VIBRATE_SETTING_CHANGED_ACTION); - filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - filter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED); - filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); - filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION); - mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); } private final void updateAlarm(Intent intent) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index 3a06068..5e5bc1a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -45,6 +45,7 @@ public class KeyButtonView extends ImageView { private static final String TAG = "StatusBar.KeyButtonView"; final float GLOW_MAX_SCALE_FACTOR = 1.8f; + final float BUTTON_QUIESCENT_ALPHA = 0.6f; IWindowManager mWindowManager; long mDownTime; @@ -86,7 +87,7 @@ public class KeyButtonView extends ImageView { mGlowBG = a.getDrawable(R.styleable.KeyButtonView_glowBackground); if (mGlowBG != null) { - mDrawingAlpha = 0.5f; + mDrawingAlpha = BUTTON_QUIESCENT_ALPHA; } a.recycle(); @@ -175,8 +176,10 @@ public class KeyButtonView extends ImageView { if (pressed != isPressed()) { AnimatorSet as = new AnimatorSet(); if (pressed) { - if (mGlowScale < 1.7f) mGlowScale = 1.7f; - if (mGlowAlpha < 0.5f) mGlowAlpha = 0.5f; + if (mGlowScale < GLOW_MAX_SCALE_FACTOR) + mGlowScale = GLOW_MAX_SCALE_FACTOR; + if (mGlowAlpha < BUTTON_QUIESCENT_ALPHA) + mGlowAlpha = BUTTON_QUIESCENT_ALPHA; setDrawingAlpha(1f); as.playTogether( ObjectAnimator.ofFloat(this, "glowAlpha", 1f), @@ -187,7 +190,7 @@ public class KeyButtonView extends ImageView { as.playTogether( ObjectAnimator.ofFloat(this, "glowAlpha", 0f), ObjectAnimator.ofFloat(this, "glowScale", 1f), - ObjectAnimator.ofFloat(this, "drawingAlpha", 0.5f) + ObjectAnimator.ofFloat(this, "drawingAlpha", BUTTON_QUIESCENT_ALPHA) ); as.setDuration(500); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index 1d4b9ba..a305816 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -85,6 +85,8 @@ public class NetworkController extends BroadcastReceiver { boolean mDataActive; int mMobileActivityIconId; // overlay arrows for data direction int mLastSignalLevel; + boolean mShowPhoneRSSIForData = false; + boolean mShowAtLeastThreeGees = false; String mContentDescriptionPhoneSignal; String mContentDescriptionWifi; @@ -151,11 +153,15 @@ public class NetworkController extends BroadcastReceiver { */ public NetworkController(Context context) { mContext = context; + final Resources res = context.getResources(); ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService( Context.CONNECTIVITY_SERVICE); mHasMobileDataFeature = cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE); + mShowPhoneRSSIForData = res.getBoolean(R.bool.config_showPhoneRSSIForData); + mShowAtLeastThreeGees = res.getBoolean(R.bool.config_showMin3G); + // set up the default wifi icon, used when no radios have ever appeared updateWifiIcons(); @@ -240,7 +246,7 @@ public class NetworkController extends BroadcastReceiver { mContentDescriptionWifi); cluster.setMobileDataIndicators( mHasMobileDataFeature, - mPhoneSignalIconId, + mShowPhoneRSSIForData ? mPhoneSignalIconId : mDataSignalIconId, mMobileActivityIconId, mDataTypeIconId, mContentDescriptionPhoneSignal, @@ -434,17 +440,25 @@ public class NetworkController extends BroadcastReceiver { private final void updateDataNetType() { switch (mDataNetType) { case TelephonyManager.NETWORK_TYPE_UNKNOWN: - mDataIconList = TelephonyIcons.DATA_G[mInetCondition]; - mDataTypeIconId = 0; - mContentDescriptionDataType = mContext.getString( - R.string.accessibility_data_connection_gprs); - break; + if (!mShowAtLeastThreeGees) { + mDataIconList = TelephonyIcons.DATA_G[mInetCondition]; + mDataTypeIconId = 0; + mContentDescriptionDataType = mContext.getString( + R.string.accessibility_data_connection_gprs); + break; + } else { + // fall through + } case TelephonyManager.NETWORK_TYPE_EDGE: - mDataIconList = TelephonyIcons.DATA_E[mInetCondition]; - mDataTypeIconId = R.drawable.stat_sys_data_connected_e; - mContentDescriptionDataType = mContext.getString( - R.string.accessibility_data_connection_edge); - break; + if (!mShowAtLeastThreeGees) { + mDataIconList = TelephonyIcons.DATA_E[mInetCondition]; + mDataTypeIconId = R.drawable.stat_sys_data_connected_e; + mContentDescriptionDataType = mContext.getString( + R.string.accessibility_data_connection_edge); + break; + } else { + // fall through + } case TelephonyManager.NETWORK_TYPE_UMTS: mDataIconList = TelephonyIcons.DATA_3G[mInetCondition]; mDataTypeIconId = R.drawable.stat_sys_data_connected_3g; @@ -496,10 +510,17 @@ public class NetworkController extends BroadcastReceiver { R.string.accessibility_data_connection_4g); break; default: - mDataIconList = TelephonyIcons.DATA_G[mInetCondition]; - mDataTypeIconId = R.drawable.stat_sys_data_connected_g; - mContentDescriptionDataType = mContext.getString( - R.string.accessibility_data_connection_gprs); + if (!mShowAtLeastThreeGees) { + mDataIconList = TelephonyIcons.DATA_G[mInetCondition]; + mDataTypeIconId = R.drawable.stat_sys_data_connected_g; + mContentDescriptionDataType = mContext.getString( + R.string.accessibility_data_connection_gprs); + } else { + mDataIconList = TelephonyIcons.DATA_3G[mInetCondition]; + mDataTypeIconId = R.drawable.stat_sys_data_connected_3g; + mContentDescriptionDataType = mContext.getString( + R.string.accessibility_data_connection_3g); + } break; } if ((isCdma() && isCdmaEri()) || mPhone.isNetworkRoaming()) { @@ -877,7 +898,7 @@ public class NetworkController extends BroadcastReceiver { mContentDescriptionWifi); cluster.setMobileDataIndicators( mHasMobileDataFeature, - mPhoneSignalIconId, + mShowPhoneRSSIForData ? mPhoneSignalIconId : mDataSignalIconId, mMobileActivityIconId, mDataTypeIconId, mContentDescriptionPhoneSignal, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java index 0121211..f98caa2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/HoloClock.java @@ -53,9 +53,9 @@ public class HoloClock extends FrameLayout { private SimpleDateFormat mClockFormat; private static final String FONT_DIR = "/system/fonts/"; - private static final String CLOCK_FONT = FONT_DIR + "AndroidClock_Solid.ttf"; - private static final String CLOCK_FG_FONT = FONT_DIR + "AndroidClock.ttf"; - private static final String CLOCK_BG_FONT = FONT_DIR + "AndroidClock_Highlight.ttf"; + private static final String CLOCK_FONT = FONT_DIR + "AndroidClock_Solid.ttf"; + private static final String CLOCK_FG_FONT = FONT_DIR + "AndroidClock.ttf"; + private static final String CLOCK_BG_FONT = FONT_DIR + "AndroidClock_Highlight.ttf"; private static Typeface sBackgroundType, sForegroundType, sSolidType; private TextView mSolidText, mBgText, mFgText; @@ -84,7 +84,9 @@ public class HoloClock extends FrameLayout { mBgText = (TextView) findViewById(R.id.time_bg); if (mBgText != null) { mBgText.setTypeface(sBackgroundType); + mBgText.setVisibility(View.INVISIBLE); } + mFgText = (TextView) findViewById(R.id.time_fg); if (mFgText != null) { mFgText.setTypeface(sForegroundType); diff --git a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java index 6614d79..dafbdcf 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java @@ -635,11 +635,13 @@ class KeyguardStatusViewManager implements OnClickListener { * @return */ private static CharSequence makeCarierString(CharSequence plmn, CharSequence spn) { - if (plmn != null && spn == null) { - return plmn; - } else if (plmn != null && spn != null) { + final boolean plmnValid = !TextUtils.isEmpty(plmn); + final boolean spnValid = !TextUtils.isEmpty(spn); + if (plmnValid && spnValid) { return plmn + "|" + spn; - } else if (plmn == null && spn != null) { + } else if (plmnValid) { + return plmn; + } else if (spnValid) { return spn; } else { return ""; diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 498bdfc..851cb33 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -2450,6 +2450,12 @@ public class ConnectivityService extends IConnectivityManager.Stub { int defaultVal = (SystemProperties.get("ro.tether.denied").equals("true") ? 0 : 1); boolean tetherEnabledInSettings = (Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.TETHER_SUPPORTED, defaultVal) != 0); + // Short term disabling of Tethering if DUN is required. + // TODO - fix multi-connection tethering using policy-base routing + int[] upstreamConnTypes = mTethering.getUpstreamIfaceTypes(); + for (int i : upstreamConnTypes) { + if (i == ConnectivityManager.TYPE_MOBILE_DUN) return false; + } return tetherEnabledInSettings && mTetheringConfigValid; } diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index fdae4bd..1b0addf 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -2198,25 +2198,21 @@ public class PowerManagerService extends IPowerManager.Stub } public void run() { - if (mAnimateScreenLights) { - synchronized (mLocks) { + synchronized (mLocks) { + // we're turning off + final boolean turningOff = animating && targetValue == Power.BRIGHTNESS_OFF; + if (mAnimateScreenLights || !turningOff) { long now = SystemClock.uptimeMillis(); boolean more = mScreenBrightness.stepLocked(); if (more) { mScreenOffHandler.postAtTime(this, now+(1000/60)); } - } - } else { - synchronized (mLocks) { - // we're turning off - final boolean animate = animating && targetValue == Power.BRIGHTNESS_OFF; - if (animate) { - // It's pretty scary to hold mLocks for this long, and we should - // redesign this, but it works for now. - nativeStartSurfaceFlingerAnimation( - mScreenOffReason == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR - ? 0 : mAnimationSetting); - } + } else { + // It's pretty scary to hold mLocks for this long, and we should + // redesign this, but it works for now. + nativeStartSurfaceFlingerAnimation( + mScreenOffReason == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR + ? 0 : mAnimationSetting); mScreenBrightness.jumpToTargetLocked(); } } diff --git a/services/java/com/android/server/Watchdog.java b/services/java/com/android/server/Watchdog.java index 2d3ac00..728fb26 100644 --- a/services/java/com/android/server/Watchdog.java +++ b/services/java/com/android/server/Watchdog.java @@ -451,7 +451,8 @@ public class Watchdog extends Thread { Thread dropboxThread = new Thread("watchdogWriteToDropbox") { public void run() { mActivity.addErrorToDropBox( - "watchdog", null, null, null, name, null, stack, null); + "watchdog", null, "system_server", null, null, + name, null, stack, null); } }; dropboxThread.start(); diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 0d6f405..04bbc11 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -721,6 +721,13 @@ public final class ActivityManagerService extends ActivityManagerNative int mLruSeq = 0; /** + * Keep track of the number of service processes we last found, to + * determine on the next iteration which should be B services. + */ + int mNumServiceProcs = 0; + int mNewNumServiceProcs = 0; + + /** * System monitoring: number of processes that died since the last * N procs were started. */ @@ -2978,7 +2985,8 @@ public final class ActivityManagerService extends ActivityManagerNative Process.sendSignal(app.pid, Process.SIGNAL_QUIT); } - addErrorToDropBox("anr", app, activity, parent, annotation, cpuInfo, tracesFile, null); + addErrorToDropBox("anr", app, app.processName, activity, parent, annotation, + cpuInfo, tracesFile, null); if (mController != null) { try { @@ -3122,7 +3130,7 @@ public final class ActivityManagerService extends ActivityManagerNative return; } killPackageProcessesLocked(packageName, pkgUid, - ProcessList.SECONDARY_SERVER_ADJ, false, true, true, false); + ProcessList.SERVICE_ADJ, false, true, true, false); } } finally { Binder.restoreCallingIdentity(callingId); @@ -4921,7 +4929,7 @@ public final class ActivityManagerService extends ActivityManagerNative outInfo.lowMemory = outInfo.availMem < (homeAppMem + ((hiddenAppMem-homeAppMem)/2)); outInfo.hiddenAppThreshold = hiddenAppMem; outInfo.secondaryServerThreshold = mProcessList.getMemLevel( - ProcessList.SECONDARY_SERVER_ADJ); + ProcessList.SERVICE_ADJ); outInfo.visibleAppThreshold = mProcessList.getMemLevel( ProcessList.VISIBLE_APP_ADJ); outInfo.foregroundAppThreshold = mProcessList.getMemLevel( @@ -6112,7 +6120,7 @@ public final class ActivityManagerService extends ActivityManagerNative if ((info.flags&(ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT)) == (ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT)) { app.persistent = true; - app.maxAdj = ProcessList.CORE_SERVER_ADJ; + app.maxAdj = ProcessList.PERSISTENT_PROC_ADJ; } if (app.thread == null && mPersistentStartingProcesses.indexOf(app) < 0) { mPersistentStartingProcesses.add(app); @@ -6510,14 +6518,15 @@ public final class ActivityManagerService extends ActivityManagerNative // If the worst oom_adj is somewhere in the hidden proc LRU range, // then constrain it so we will kill all hidden procs. - if (worstType < ProcessList.EMPTY_APP_ADJ && worstType > ProcessList.HIDDEN_APP_MIN_ADJ) { + if (worstType < ProcessList.HIDDEN_APP_MAX_ADJ + && worstType > ProcessList.HIDDEN_APP_MIN_ADJ) { worstType = ProcessList.HIDDEN_APP_MIN_ADJ; } // If this is not a secure call, don't let it kill processes that // are important. - if (!secure && worstType < ProcessList.SECONDARY_SERVER_ADJ) { - worstType = ProcessList.SECONDARY_SERVER_ADJ; + if (!secure && worstType < ProcessList.SERVICE_ADJ) { + worstType = ProcessList.SERVICE_ADJ; } Slog.w(TAG, "Killing processes " + reason + " at adjustment " + worstType); @@ -7082,16 +7091,18 @@ public final class ActivityManagerService extends ActivityManagerNative */ public void handleApplicationCrash(IBinder app, ApplicationErrorReport.CrashInfo crashInfo) { ProcessRecord r = findAppProcess(app, "Crash"); + final String processName = app == null ? "system_server" + : (r == null ? "unknown" : r.processName); EventLog.writeEvent(EventLogTags.AM_CRASH, Binder.getCallingPid(), - app == null ? "system" : (r == null ? "unknown" : r.processName), + processName, r == null ? -1 : r.info.flags, crashInfo.exceptionClassName, crashInfo.exceptionMessage, crashInfo.throwFileName, crashInfo.throwLineNumber); - addErrorToDropBox("crash", r, null, null, null, null, null, crashInfo); + addErrorToDropBox("crash", r, processName, null, null, null, null, null, crashInfo); crashApplication(r, crashInfo); } @@ -7164,6 +7175,7 @@ public final class ActivityManagerService extends ActivityManagerNative final boolean isSystemApp = process == null || (process.info.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0; + final String processName = process == null ? "unknown" : process.processName; final String dropboxTag = isSystemApp ? "system_app_strictmode" : "data_app_strictmode"; final DropBoxManager dbox = (DropBoxManager) mContext.getSystemService(Context.DROPBOX_SERVICE); @@ -7176,7 +7188,7 @@ public final class ActivityManagerService extends ActivityManagerNative final StringBuilder sb = isSystemApp ? mStrictModeBuffer : new StringBuilder(1024); synchronized (sb) { bufferWasEmpty = sb.length() == 0; - appendDropBoxProcessHeaders(process, sb); + appendDropBoxProcessHeaders(process, processName, sb); sb.append("Build: ").append(Build.FINGERPRINT).append("\n"); sb.append("System-App: ").append(isSystemApp).append("\n"); sb.append("Uptime-Millis: ").append(info.violationUptimeMillis).append("\n"); @@ -7278,13 +7290,15 @@ public final class ActivityManagerService extends ActivityManagerNative public boolean handleApplicationWtf(IBinder app, String tag, ApplicationErrorReport.CrashInfo crashInfo) { ProcessRecord r = findAppProcess(app, "WTF"); + final String processName = app == null ? "system_server" + : (r == null ? "unknown" : r.processName); EventLog.writeEvent(EventLogTags.AM_WTF, Binder.getCallingPid(), - app == null ? "system" : (r == null ? "unknown" : r.processName), + processName, r == null ? -1 : r.info.flags, tag, crashInfo.exceptionMessage); - addErrorToDropBox("wtf", r, null, null, tag, null, null, crashInfo); + addErrorToDropBox("wtf", r, processName, null, null, tag, null, null, crashInfo); if (r != null && r.pid != Process.myPid() && Settings.Secure.getInt(mContext.getContentResolver(), @@ -7327,7 +7341,8 @@ public final class ActivityManagerService extends ActivityManagerNative * Utility function for addErrorToDropBox and handleStrictModeViolation's logging * to append various headers to the dropbox log text. */ - private void appendDropBoxProcessHeaders(ProcessRecord process, StringBuilder sb) { + private void appendDropBoxProcessHeaders(ProcessRecord process, String processName, + StringBuilder sb) { // Watchdog thread ends up invoking this function (with // a null ProcessRecord) to add the stack file to dropbox. // Do not acquire a lock on this (am) in such cases, as it @@ -7335,18 +7350,14 @@ public final class ActivityManagerService extends ActivityManagerNative // is invoked due to unavailability of lock on am and it // would prevent watchdog from killing system_server. if (process == null) { - sb.append("Process: system_server\n"); + sb.append("Process: ").append(processName).append("\n"); return; } // Note: ProcessRecord 'process' is guarded by the service // instance. (notably process.pkgList, which could otherwise change // concurrently during execution of this method) synchronized (this) { - if (process.pid == MY_PID) { - sb.append("Process: system_server\n"); - } else { - sb.append("Process: ").append(process.processName).append("\n"); - } + sb.append("Process: ").append(processName).append("\n"); int flags = process.info.flags; IPackageManager pm = AppGlobals.getPackageManager(); sb.append("Flags: 0x").append(Integer.toString(flags, 16)).append("\n"); @@ -7390,7 +7401,8 @@ public final class ActivityManagerService extends ActivityManagerNative * @param crashInfo giving an application stack trace, null if absent */ public void addErrorToDropBox(String eventType, - ProcessRecord process, ActivityRecord activity, ActivityRecord parent, String subject, + ProcessRecord process, String processName, ActivityRecord activity, + ActivityRecord parent, String subject, final String report, final File logFile, final ApplicationErrorReport.CrashInfo crashInfo) { // NOTE -- this must never acquire the ActivityManagerService lock, @@ -7404,7 +7416,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (dbox == null || !dbox.isTagEnabled(dropboxTag)) return; final StringBuilder sb = new StringBuilder(1024); - appendDropBoxProcessHeaders(process, sb); + appendDropBoxProcessHeaders(process, processName, sb); if (activity != null) { sb.append("Activity: ").append(activity.shortComponentName).append("\n"); } @@ -7653,19 +7665,19 @@ public final class ActivityManagerService extends ActivityManagerNative } static int oomAdjToImportance(int adj, ActivityManager.RunningAppProcessInfo currApp) { - if (adj >= ProcessList.EMPTY_APP_ADJ) { - return ActivityManager.RunningAppProcessInfo.IMPORTANCE_EMPTY; - } else if (adj >= ProcessList.HIDDEN_APP_MIN_ADJ) { + if (adj >= ProcessList.HIDDEN_APP_MIN_ADJ) { if (currApp != null) { currApp.lru = adj - ProcessList.HIDDEN_APP_MIN_ADJ + 1; } return ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND; + } else if (adj >= ProcessList.SERVICE_B_ADJ) { + return ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE; } else if (adj >= ProcessList.HOME_APP_ADJ) { if (currApp != null) { currApp.lru = 0; } return ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND; - } else if (adj >= ProcessList.SECONDARY_SERVER_ADJ) { + } else if (adj >= ProcessList.SERVICE_ADJ) { return ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE; } else if (adj >= ProcessList.HEAVY_WEIGHT_APP_ADJ) { return ActivityManager.RunningAppProcessInfo.IMPORTANCE_CANT_SAVE_STATE; @@ -8154,6 +8166,8 @@ public final class ActivityManagerService extends ActivityManagerNative pw.println(" mGoingToSleep=" + mMainStack.mGoingToSleep); pw.println(" mLaunchingActivity=" + mMainStack.mLaunchingActivity); pw.println(" mAdjSeq=" + mAdjSeq + " mLruSeq=" + mLruSeq); + pw.println(" mNumServiceProcs=" + mNumServiceProcs + + " mNewNumServiceProcs=" + mNewNumServiceProcs); } return true; @@ -8190,16 +8204,17 @@ public final class ActivityManagerService extends ActivityManagerNative needSep = true; pw.println(" OOM levels:"); pw.print(" SYSTEM_ADJ: "); pw.println(ProcessList.SYSTEM_ADJ); - pw.print(" CORE_SERVER_ADJ: "); pw.println(ProcessList.CORE_SERVER_ADJ); + pw.print(" PERSISTENT_PROC_ADJ: "); pw.println(ProcessList.PERSISTENT_PROC_ADJ); pw.print(" FOREGROUND_APP_ADJ: "); pw.println(ProcessList.FOREGROUND_APP_ADJ); pw.print(" VISIBLE_APP_ADJ: "); pw.println(ProcessList.VISIBLE_APP_ADJ); pw.print(" PERCEPTIBLE_APP_ADJ: "); pw.println(ProcessList.PERCEPTIBLE_APP_ADJ); pw.print(" HEAVY_WEIGHT_APP_ADJ: "); pw.println(ProcessList.HEAVY_WEIGHT_APP_ADJ); pw.print(" BACKUP_APP_ADJ: "); pw.println(ProcessList.BACKUP_APP_ADJ); - pw.print(" SECONDARY_SERVER_ADJ: "); pw.println(ProcessList.SECONDARY_SERVER_ADJ); + pw.print(" SERVICE_ADJ: "); pw.println(ProcessList.SERVICE_ADJ); pw.print(" HOME_APP_ADJ: "); pw.println(ProcessList.HOME_APP_ADJ); + pw.print(" SERVICE_B_ADJ: "); pw.println(ProcessList.SERVICE_B_ADJ); pw.print(" HIDDEN_APP_MIN_ADJ: "); pw.println(ProcessList.HIDDEN_APP_MIN_ADJ); - pw.print(" EMPTY_APP_ADJ: "); pw.println(ProcessList.EMPTY_APP_ADJ); + pw.print(" HIDDEN_APP_MAX_ADJ: "); pw.println(ProcessList.HIDDEN_APP_MAX_ADJ); if (needSep) pw.println(" "); needSep = true; @@ -8990,14 +9005,14 @@ public final class ActivityManagerService extends ActivityManagerNative for (int i=N; i>=0; i--) { ProcessRecord r = list.get(i).first; String oomAdj; - if (r.setAdj >= ProcessList.EMPTY_APP_ADJ) { - oomAdj = buildOomTag("empty", null, r.setAdj, ProcessList.EMPTY_APP_ADJ); - } else if (r.setAdj >= ProcessList.HIDDEN_APP_MIN_ADJ) { + if (r.setAdj >= ProcessList.HIDDEN_APP_MIN_ADJ) { oomAdj = buildOomTag("bak", " ", r.setAdj, ProcessList.HIDDEN_APP_MIN_ADJ); + } else if (r.setAdj >= ProcessList.SERVICE_B_ADJ) { + oomAdj = buildOomTag("svcb ", null, r.setAdj, ProcessList.SERVICE_B_ADJ); } else if (r.setAdj >= ProcessList.HOME_APP_ADJ) { oomAdj = buildOomTag("home ", null, r.setAdj, ProcessList.HOME_APP_ADJ); - } else if (r.setAdj >= ProcessList.SECONDARY_SERVER_ADJ) { - oomAdj = buildOomTag("svc", " ", r.setAdj, ProcessList.SECONDARY_SERVER_ADJ); + } else if (r.setAdj >= ProcessList.SERVICE_ADJ) { + oomAdj = buildOomTag("svc ", null, r.setAdj, ProcessList.SERVICE_ADJ); } else if (r.setAdj >= ProcessList.BACKUP_APP_ADJ) { oomAdj = buildOomTag("bckup", null, r.setAdj, ProcessList.BACKUP_APP_ADJ); } else if (r.setAdj >= ProcessList.HEAVY_WEIGHT_APP_ADJ) { @@ -9008,8 +9023,8 @@ public final class ActivityManagerService extends ActivityManagerNative oomAdj = buildOomTag("vis ", null, r.setAdj, ProcessList.VISIBLE_APP_ADJ); } else if (r.setAdj >= ProcessList.FOREGROUND_APP_ADJ) { oomAdj = buildOomTag("fore ", null, r.setAdj, ProcessList.FOREGROUND_APP_ADJ); - } else if (r.setAdj >= ProcessList.CORE_SERVER_ADJ) { - oomAdj = buildOomTag("core ", null, r.setAdj, ProcessList.CORE_SERVER_ADJ); + } else if (r.setAdj >= ProcessList.PERSISTENT_PROC_ADJ) { + oomAdj = buildOomTag("pers ", null, r.setAdj, ProcessList.PERSISTENT_PROC_ADJ); } else if (r.setAdj >= ProcessList.SYSTEM_ADJ) { oomAdj = buildOomTag("sys ", null, r.setAdj, ProcessList.SYSTEM_ADJ); } else { @@ -9269,14 +9284,15 @@ public final class ActivityManagerService extends ActivityManagerNative long[] miscPss = new long[Debug.MemoryInfo.NUM_OTHER_STATS]; final int[] oomAdj = new int[] { - ProcessList.SYSTEM_ADJ, ProcessList.CORE_SERVER_ADJ, ProcessList.FOREGROUND_APP_ADJ, + ProcessList.SYSTEM_ADJ, ProcessList.PERSISTENT_PROC_ADJ, ProcessList.FOREGROUND_APP_ADJ, ProcessList.VISIBLE_APP_ADJ, ProcessList.PERCEPTIBLE_APP_ADJ, ProcessList.HEAVY_WEIGHT_APP_ADJ, - ProcessList.BACKUP_APP_ADJ, ProcessList.SECONDARY_SERVER_ADJ, ProcessList.HOME_APP_ADJ, ProcessList.EMPTY_APP_ADJ + ProcessList.BACKUP_APP_ADJ, ProcessList.SERVICE_ADJ, ProcessList.HOME_APP_ADJ, + ProcessList.SERVICE_B_ADJ, ProcessList.HIDDEN_APP_MAX_ADJ }; final String[] oomLabel = new String[] { "System", "Persistent", "Foreground", "Visible", "Perceptible", "Heavy Weight", - "Backup", "Services", "Home", "Background" + "Backup", "A Services", "Home", "B Services", "Background" }; long oomPss[] = new long[oomLabel.length]; ArrayList<MemItem>[] oomProcs = (ArrayList<MemItem>[])new ArrayList[oomLabel.length]; @@ -12931,7 +12947,7 @@ public final class ActivityManagerService extends ActivityManagerNative // ========================================================= private final int computeOomAdjLocked(ProcessRecord app, int hiddenAdj, - ProcessRecord TOP_APP, boolean recursed) { + ProcessRecord TOP_APP, boolean recursed, boolean doingAll) { if (mAdjSeq == app.adjSeq) { // This adjustment has already been computed. If we are calling // from the top, we may have already computed our adjustment with @@ -12946,7 +12962,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (app.thread == null) { app.adjSeq = mAdjSeq; app.curSchedGroup = Process.THREAD_GROUP_BG_NONINTERACTIVE; - return (app.curAdj=ProcessList.EMPTY_APP_ADJ); + return (app.curAdj=ProcessList.HIDDEN_APP_MAX_ADJ); } app.adjTypeCode = ActivityManager.RunningAppProcessInfo.REASON_UNKNOWN; @@ -13130,7 +13146,7 @@ public final class ActivityManagerService extends ActivityManagerNative // go to the LRU list because it may be pretty heavy with // UI stuff. We'll tag it with a label just to help // debug and understand what is going on. - if (adj > ProcessList.SECONDARY_SERVER_ADJ) { + if (adj > ProcessList.SERVICE_ADJ) { app.adjType = "started-bg-ui-services"; } } else { @@ -13138,8 +13154,8 @@ public final class ActivityManagerService extends ActivityManagerNative // This service has seen some activity within // recent memory, so we will keep its process ahead // of the background processes. - if (adj > ProcessList.SECONDARY_SERVER_ADJ) { - adj = ProcessList.SECONDARY_SERVER_ADJ; + if (adj > ProcessList.SERVICE_ADJ) { + adj = ProcessList.SERVICE_ADJ; app.adjType = "started-services"; app.hidden = false; } @@ -13147,7 +13163,7 @@ public final class ActivityManagerService extends ActivityManagerNative // If we have let the service slide into the background // state, still have some text describing what it is doing // even though the service no longer has an impact. - if (adj > ProcessList.SECONDARY_SERVER_ADJ) { + if (adj > ProcessList.SERVICE_ADJ) { app.adjType = "started-bg-services"; } } @@ -13181,7 +13197,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } clientAdj = computeOomAdjLocked( - client, myHiddenAdj, TOP_APP, true); + client, myHiddenAdj, TOP_APP, true, doingAll); String adjType = null; if ((cr.flags&Context.BIND_ALLOW_OOM_MANAGEMENT) != 0) { // Not doing bind OOM management, so treat @@ -13311,7 +13327,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } int clientAdj = computeOomAdjLocked( - client, myHiddenAdj, TOP_APP, true); + client, myHiddenAdj, TOP_APP, true, doingAll); if (adj > clientAdj) { if (app.hasShownUi && app != mHomeProcess && clientAdj > ProcessList.PERCEPTIBLE_APP_ADJ) { @@ -13382,11 +13398,23 @@ public final class ActivityManagerService extends ActivityManagerNative adj = ProcessList.PERCEPTIBLE_APP_ADJ; } else if (adj < ProcessList.HIDDEN_APP_MIN_ADJ) { adj = ProcessList.HIDDEN_APP_MIN_ADJ; - } else if (adj < ProcessList.EMPTY_APP_ADJ) { + } else if (adj < ProcessList.HIDDEN_APP_MAX_ADJ) { adj++; } } + if (adj == ProcessList.SERVICE_ADJ) { + if (doingAll) { + app.serviceb = mNewNumServiceProcs > (mNumServiceProcs/3); + mNewNumServiceProcs++; + } + if (app.serviceb) { + adj = ProcessList.SERVICE_B_ADJ; + } + } else { + app.serviceb = false; + } + app.curAdj = adj; app.curSchedGroup = schedGroup; @@ -13627,7 +13655,7 @@ public final class ActivityManagerService extends ActivityManagerNative } private final boolean updateOomAdjLocked( - ProcessRecord app, int hiddenAdj, ProcessRecord TOP_APP) { + ProcessRecord app, int hiddenAdj, ProcessRecord TOP_APP, boolean doingAll) { app.hiddenAdj = hiddenAdj; if (app.thread == null) { @@ -13638,7 +13666,7 @@ public final class ActivityManagerService extends ActivityManagerNative boolean success = true; - computeOomAdjLocked(app, hiddenAdj, TOP_APP, false); + computeOomAdjLocked(app, hiddenAdj, TOP_APP, false, doingAll); if (app.curRawAdj != app.setRawAdj) { if (false) { @@ -13672,11 +13700,12 @@ public final class ActivityManagerService extends ActivityManagerNative app.setRawAdj = app.curRawAdj; } + if (app.curAdj != app.setAdj) { if (Process.setOomAdj(app.pid, app.curAdj)) { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v( - TAG, "Set app " + app.processName + - " oom adj to " + app.curAdj + " because " + app.adjType); + if (true || DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v( + TAG, "Set " + app.pid + " " + app.processName + + " adj " + app.curAdj + ": " + app.adjType); app.setAdj = app.curAdj; } else { success = false; @@ -13740,7 +13769,7 @@ public final class ActivityManagerService extends ActivityManagerNative mAdjSeq++; - boolean success = updateOomAdjLocked(app, app.hiddenAdj, TOP_APP); + boolean success = updateOomAdjLocked(app, app.hiddenAdj, TOP_APP, false); final boolean nowHidden = app.curAdj >= ProcessList.HIDDEN_APP_MIN_ADJ && app.curAdj <= ProcessList.HIDDEN_APP_MAX_ADJ; if (nowHidden != wasHidden) { @@ -13762,6 +13791,7 @@ public final class ActivityManagerService extends ActivityManagerNative } mAdjSeq++; + mNewNumServiceProcs = 0; // Let's determine how many processes we have running vs. // how many slots we have for background processes; we may want @@ -13782,8 +13812,8 @@ public final class ActivityManagerService extends ActivityManagerNative i--; ProcessRecord app = mLruProcesses.get(i); //Slog.i(TAG, "OOM " + app + ": cur hidden=" + curHiddenAdj); - updateOomAdjLocked(app, curHiddenAdj, TOP_APP); - if (curHiddenAdj < ProcessList.EMPTY_APP_ADJ + updateOomAdjLocked(app, curHiddenAdj, TOP_APP, true); + if (curHiddenAdj < ProcessList.HIDDEN_APP_MAX_ADJ && app.curAdj == curHiddenAdj) { step++; if (step >= factor) { @@ -13810,6 +13840,8 @@ public final class ActivityManagerService extends ActivityManagerNative } } + mNumServiceProcs = mNewNumServiceProcs; + // Now determine the memory trimming level of background processes. // Unfortunately we need to start at the back of the list to do this // properly. We only do this if the number of background apps we diff --git a/services/java/com/android/server/am/ProcessList.java b/services/java/com/android/server/am/ProcessList.java index 131255f..f368a70 100644 --- a/services/java/com/android/server/am/ProcessList.java +++ b/services/java/com/android/server/am/ProcessList.java @@ -16,7 +16,6 @@ package com.android.server.am; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; @@ -24,7 +23,6 @@ import com.android.internal.util.MemInfoReader; import com.android.server.wm.WindowManagerService; import android.graphics.Point; -import android.os.StrictMode; import android.util.Slog; /** @@ -37,27 +35,23 @@ class ProcessList { // OOM adjustments for processes in various states: - // This is a process without anything currently running in it. Definitely - // the first to go! Value set in system/rootdir/init.rc on startup. - // This value is initalized in the constructor, careful when refering to - // this static variable externally. - static final int EMPTY_APP_ADJ = 15; - // This is a process only hosting activities that are not visible, - // so it can be killed without any disruption. Value set in - // system/rootdir/init.rc on startup. + // so it can be killed without any disruption. static final int HIDDEN_APP_MAX_ADJ = 15; - static int HIDDEN_APP_MIN_ADJ = 7; + static int HIDDEN_APP_MIN_ADJ = 8; + + // The B list of SERVICE_ADJ -- these are the old and decrepit + // services that aren't as shiny and interesting as the ones in the A list. + static final int SERVICE_B_ADJ = 7; // This is a process holding the home application -- we want to try // avoiding killing it, even if it would normally be in the background, // because the user interacts with it so much. static final int HOME_APP_ADJ = 6; - // This is a process holding a secondary server -- killing it will not - // have much of an impact as far as the user is concerned. Value set in - // system/rootdir/init.rc on startup. - static final int SECONDARY_SERVER_ADJ = 5; + // This is a process holding an application service -- killing it will not + // have much of an impact as far as the user is concerned. + static final int SERVICE_ADJ = 5; // This is a process currently hosting a backup operation. Killing it // is not entirely fatal but is generally a bad idea. @@ -70,22 +64,20 @@ class ProcessList { // This is a process only hosting components that are perceptible to the // user, and we really want to avoid killing them, but they are not - // immediately visible. An example is background music playback. Value set in - // system/rootdir/init.rc on startup. + // immediately visible. An example is background music playback. static final int PERCEPTIBLE_APP_ADJ = 2; // This is a process only hosting activities that are visible to the - // user, so we'd prefer they don't disappear. Value set in - // system/rootdir/init.rc on startup. + // user, so we'd prefer they don't disappear. static final int VISIBLE_APP_ADJ = 1; // This is the process running the current foreground app. We'd really - // rather not kill it! Value set in system/rootdir/init.rc on startup. + // rather not kill it! static final int FOREGROUND_APP_ADJ = 0; - // This is a process running a core server, such as telephony. Definitely + // This is a system persistent process, such as telephony. Definitely // don't want to kill it, but doing so is not completely fatal. - static final int CORE_SERVER_ADJ = -12; + static final int PERSISTENT_PROC_ADJ = -12; // The system process runs at the default adjustment. static final int SYSTEM_ADJ = -16; @@ -115,7 +107,7 @@ class ProcessList { // can't give it a different value for every possible kind of process. private final int[] mOomAdj = new int[] { FOREGROUND_APP_ADJ, VISIBLE_APP_ADJ, PERCEPTIBLE_APP_ADJ, - BACKUP_APP_ADJ, HIDDEN_APP_MIN_ADJ, EMPTY_APP_ADJ + BACKUP_APP_ADJ, HIDDEN_APP_MIN_ADJ, HIDDEN_APP_MAX_ADJ }; // These are the low-end OOM level limits. This is appropriate for an // HVGA or smaller phone with less than 512MB. Values are in KB. diff --git a/services/java/com/android/server/am/ProcessRecord.java b/services/java/com/android/server/am/ProcessRecord.java index 9392bb4..72292be 100644 --- a/services/java/com/android/server/am/ProcessRecord.java +++ b/services/java/com/android/server/am/ProcessRecord.java @@ -63,6 +63,7 @@ class ProcessRecord { int curSchedGroup; // Currently desired scheduling class int setSchedGroup; // Last set to background scheduling class int trimMemoryLevel; // Last selected memory trimming level + boolean serviceb; // Process currently is on the service B list boolean keeping; // Actively running code so don't kill due to that? boolean setIsForeground; // Running foreground UI when last set? boolean foregroundServices; // Running any services that are foreground? @@ -179,6 +180,7 @@ class ProcessRecord { pw.print(prefix); pw.print("lastActivityTime="); TimeUtils.formatDuration(lastActivityTime, now, pw); pw.print(" lruWeight="); pw.print(lruWeight); + pw.print(" serviceb="); pw.print(serviceb); pw.print(" keeping="); pw.print(keeping); pw.print(" hidden="); pw.print(hidden); pw.print(" empty="); pw.println(empty); @@ -271,7 +273,7 @@ class ProcessRecord { processName = _processName; pkgList.add(_info.packageName); thread = _thread; - maxAdj = ProcessList.EMPTY_APP_ADJ; + maxAdj = ProcessList.HIDDEN_APP_MAX_ADJ; hiddenAdj = ProcessList.HIDDEN_APP_MIN_ADJ; curRawAdj = setRawAdj = -100; curAdj = setAdj = -100; diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 792ef70..08797dd 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -1836,7 +1836,8 @@ public class WindowManagerService extends IWindowManager.Stub rawChanged = true; } - if (rawChanged) { + if (rawChanged && (wallpaperWin.getAttrs().privateFlags & + WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS) != 0) { try { if (DEBUG_WALLPAPER) Slog.v(TAG, "Report new wp offset " + wallpaperWin + " x=" + wallpaperWin.mWallpaperX @@ -1886,12 +1887,10 @@ public class WindowManagerService extends IWindowManager.Stub } } - boolean updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) { + void updateWallpaperOffsetLocked(WindowState changingTarget, boolean sync) { final int dw = mAppDisplayWidth; final int dh = mAppDisplayHeight; - boolean changed = false; - WindowState target = mWallpaperTarget; if (target != null) { if (target.mWallpaperX >= 0) { @@ -1916,14 +1915,31 @@ public class WindowManagerService extends IWindowManager.Stub WindowState wallpaper = token.windows.get(curWallpaperIndex); if (updateWallpaperOffsetLocked(wallpaper, dw, dh, sync)) { wallpaper.computeShownFrameLocked(); - changed = true; + // No need to lay out the windows - we can just set the wallpaper position + // directly. + if (wallpaper.mSurfaceX != wallpaper.mShownFrame.left + || wallpaper.mSurfaceY != wallpaper.mShownFrame.top) { + Surface.openTransaction(); + try { + if (SHOW_TRANSACTIONS) logSurface(wallpaper, + "POS " + wallpaper.mShownFrame.left + + ", " + wallpaper.mShownFrame.top, null); + wallpaper.mSurfaceX = wallpaper.mShownFrame.left; + wallpaper.mSurfaceY = wallpaper.mShownFrame.top; + wallpaper.mSurface.setPosition(wallpaper.mShownFrame.left, + 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; } } } - - return changed; } void updateWallpaperVisibilityLocked() { @@ -2436,9 +2452,7 @@ public class WindowManagerService extends IWindowManager.Stub window.mWallpaperY = y; window.mWallpaperXStep = xStep; window.mWallpaperYStep = yStep; - if (updateWallpaperOffsetLocked(window, true)) { - performLayoutAndPlaceSurfacesLocked(); - } + updateWallpaperOffsetLocked(window, true); } } diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index f442003..23ec2d9 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -612,7 +612,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (mSurface == null) { mReportDestroySurface = false; mSurfacePendingDestroy = false; - Slog.i(WindowManagerService.TAG, "createSurface " + this + ": DRAW NOW PENDING"); + if (WindowManagerService.DEBUG_ORIENTATION) Slog.i(WindowManagerService.TAG, + "createSurface " + this + ": DRAW NOW PENDING"); mDrawPending = true; mCommitDrawPending = false; mReadyToShow = false; diff --git a/telephony/java/com/android/internal/telephony/IntRangeManager.java b/telephony/java/com/android/internal/telephony/IntRangeManager.java index 970bc44..cc7774d 100644 --- a/telephony/java/com/android/internal/telephony/IntRangeManager.java +++ b/telephony/java/com/android/internal/telephony/IntRangeManager.java @@ -543,6 +543,14 @@ public abstract class IntRangeManager { } /** + * Returns whether the list of ranges is completely empty. + * @return true if there are no enabled ranges + */ + public boolean isEmpty() { + return mRanges.isEmpty(); + } + + /** * Called when the list of enabled ranges has changed. This will be * followed by zero or more calls to {@link #addRange} followed by * a call to {@link #finishUpdate}. diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java index e8d85de..9f93fb8 100644 --- a/telephony/java/com/android/internal/telephony/RIL.java +++ b/telephony/java/com/android/internal/telephony/RIL.java @@ -1956,7 +1956,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { if (RILJ_LOGD) { riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) - + " with " + numOfConfig + "configs : "); + + " with " + numOfConfig + " configs : "); for (int i = 0; i < numOfConfig; i++) { riljLog(config[i].toString()); } diff --git a/telephony/java/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java b/telephony/java/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java index 8d0e5d3..92bf390 100644 --- a/telephony/java/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java +++ b/telephony/java/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java @@ -246,6 +246,8 @@ public class SimSmsInterfaceManager extends IccSmsInterfaceManager { log("Added cell broadcast subscription for MID range " + startMessageId + " to " + endMessageId + " from client " + client); + setCellBroadcastActivation(!mCellBroadcastRangeManager.isEmpty()); + return true; } @@ -271,6 +273,8 @@ public class SimSmsInterfaceManager extends IccSmsInterfaceManager { log("Removed cell broadcast subscription for MID range " + startMessageId + " to " + endMessageId + " from client " + client); + setCellBroadcastActivation(!mCellBroadcastRangeManager.isEmpty()); + return true; } @@ -301,14 +305,15 @@ public class SimSmsInterfaceManager extends IccSmsInterfaceManager { /** * Called to indicate the end of a range update started by the * previous call to {@link #startUpdate}. + * @return true if successful, false otherwise */ protected boolean finishUpdate() { if (mConfigList.isEmpty()) { - return setCellBroadcastActivation(false); + return true; } else { SmsBroadcastConfigInfo[] configs = mConfigList.toArray(new SmsBroadcastConfigInfo[mConfigList.size()]); - return setCellBroadcastConfig(configs) && setCellBroadcastActivation(true); + return setCellBroadcastConfig(configs); } } } |