diff options
| author | Lucas Dupin <dupin@google.com> | 2020-03-12 04:07:51 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-12 04:07:51 +0000 |
| commit | 888edd6fdcb57723b6dbd8fd3eeba3709c8541aa (patch) | |
| tree | 3aab46fc1d05ca5279813205109acdcc6005debe /core/java | |
| parent | 84b4877d85b30df12963db416b53d03edff40ea2 (diff) | |
| parent | 13f4b8a158683c9f8b91146e9d0fad6424f6a369 (diff) | |
Merge "Implement wallpaper zoom hooking it to the shade" into rvc-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/IWallpaperManager.aidl | 7 | ||||
| -rw-r--r-- | core/java/android/app/WallpaperManager.java | 5 | ||||
| -rw-r--r-- | core/java/android/service/wallpaper/WallpaperService.java | 21 | ||||
| -rw-r--r-- | core/java/android/view/IWindow.aidl | 4 | ||||
| -rw-r--r-- | core/java/android/view/IWindowSession.aidl | 13 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 2 | ||||
| -rw-r--r-- | core/java/android/view/WindowlessWindowManager.java | 8 | ||||
| -rw-r--r-- | core/java/com/android/internal/view/BaseIWindow.java | 3 |
8 files changed, 44 insertions, 19 deletions
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl index 34684c4c4228..4cb8d936aa9c 100644 --- a/core/java/android/app/IWallpaperManager.aidl +++ b/core/java/android/app/IWallpaperManager.aidl @@ -175,11 +175,4 @@ interface IWallpaperManager { * Called from SystemUI when it shows the AoD UI. */ oneway void setInAmbientMode(boolean inAmbientMode, long animationDuration); - - /** - * Called when the wallpaper needs to zoom out. - * The zoom value goes from 0 to 1 (inclusive) where 1 means fully zoomed out, - * 0 means fully zoomed in - */ - oneway void setWallpaperZoomOut(float zoom, String callingPackage, int displayId); } diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index d9405e18a162..345eaae597d5 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -1858,13 +1858,12 @@ public class WallpaperManager { * * @hide */ - public void setWallpaperZoomOut(float zoom) { + public void setWallpaperZoomOut(IBinder windowToken, float zoom) { if (zoom < 0 || zoom > 1f) { throw new IllegalArgumentException("zoom must be between 0 and one: " + zoom); } try { - sGlobals.mService.setWallpaperZoomOut(zoom, mContext.getOpPackageName(), - mContext.getDisplayId()); + WindowManagerGlobal.getWindowSession().setWallpaperZoomOut(windowToken, zoom); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index bf3c08870c63..f531e12b0748 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -124,8 +124,6 @@ public abstract class WallpaperService extends Service { private static final int MSG_REQUEST_WALLPAPER_COLORS = 10050; private static final int MSG_SCALE = 10100; - private static final float MAX_SCALE = 1.15f; - private static final int NOTIFY_COLORS_RATE_LIMIT_MS = 1000; private final ArrayList<Engine> mActiveEngines @@ -351,7 +349,7 @@ public abstract class WallpaperService extends Service { @Override public void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, - boolean sync) { + float zoom, boolean sync) { synchronized (mLock) { if (DEBUG) Log.v(TAG, "Dispatch wallpaper offsets: " + x + ", " + y); mPendingXOffset = x; @@ -366,6 +364,8 @@ public abstract class WallpaperService extends Service { Message msg = mCaller.obtainMessage(MSG_WALLPAPER_OFFSETS); mCaller.sendMessage(msg); } + Message msg = mCaller.obtainMessageI(MSG_SCALE, Float.floatToIntBits(zoom)); + mCaller.sendMessage(msg); } } @@ -462,6 +462,18 @@ public abstract class WallpaperService extends Service { } /** + * This will be called when the wallpaper is first started. If true is returned, the system + * will zoom in the wallpaper by default and zoom it out as the user interacts, + * to create depth. Otherwise, zoom will have to be handled manually + * in {@link #onZoomChanged(float)}. + * + * @hide + */ + public boolean shouldZoomOutWallpaper() { + return false; + } + + /** * Control whether this wallpaper will receive raw touch events * from the window manager as the user interacts with the window * that is currently displaying the wallpaper. By default they @@ -870,6 +882,7 @@ public abstract class WallpaperService extends Service { Log.w(TAG, "Failed to add window while updating wallpaper surface."); return; } + mSession.setShouldZoomOutWallpaper(mWindow, shouldZoomOutWallpaper()); mCreated = true; mInputEventReceiver = new WallpaperInputEventReceiver( @@ -964,7 +977,6 @@ public abstract class WallpaperService extends Service { c.surfaceCreated(mSurfaceHolder); } } - onZoomChanged(0f); } redrawNeeded |= creating || (relayoutResult @@ -1125,7 +1137,6 @@ public abstract class WallpaperService extends Service { mIsInAmbientMode = inAmbientMode; if (mCreated) { onAmbientModeChanged(inAmbientMode, animationDuration); - setZoom(0); } } } diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl index 3927ebfdb5a8..9f2d36de61cd 100644 --- a/core/java/android/view/IWindow.aidl +++ b/core/java/android/view/IWindow.aidl @@ -102,9 +102,9 @@ oneway interface IWindow { void closeSystemDialogs(String reason); /** - * Called for wallpaper windows when their offsets change. + * Called for wallpaper windows when their offsets or zoom level change. */ - void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, boolean sync); + void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, float zoom, boolean sync); void dispatchWallpaperCommand(String action, int x, int y, int z, in Bundle extras, boolean sync); diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl index 91000a93b17c..dfe89a37a229 100644 --- a/core/java/android/view/IWindowSession.aidl +++ b/core/java/android/view/IWindowSession.aidl @@ -221,6 +221,19 @@ interface IWindowSession { */ void setWallpaperPosition(IBinder windowToken, float x, float y, float xstep, float ystep); + /** + * For wallpaper windows, sets the scale of the wallpaper based on + * SystemUI behavior. + */ + void setWallpaperZoomOut(IBinder windowToken, float scale); + + /** + * For wallpaper windows, sets whether the wallpaper should actually be + * scaled when setWallpaperZoomOut is called. If set to false, the WallpaperService will + * receive the zoom out value but the surface won't be scaled. + */ + void setShouldZoomOutWallpaper(IBinder windowToken, boolean shouldZoom); + @UnsupportedAppUsage void wallpaperOffsetsComplete(IBinder window); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 9e5298b04497..26ac4fc4ddc2 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -9054,7 +9054,7 @@ public final class ViewRootImpl implements ViewParent, @Override public void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, - boolean sync) { + float zoom, boolean sync) { if (sync) { try { mWindowSession.wallpaperOffsetsComplete(asBinder()); diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java index 87dcba0490ee..144f8e3a7108 100644 --- a/core/java/android/view/WindowlessWindowManager.java +++ b/core/java/android/view/WindowlessWindowManager.java @@ -312,6 +312,14 @@ public class WindowlessWindowManager implements IWindowSession { } @Override + public void setWallpaperZoomOut(android.os.IBinder windowToken, float zoom) { + } + + @Override + public void setShouldZoomOutWallpaper(android.os.IBinder windowToken, boolean shouldZoom) { + } + + @Override public void wallpaperOffsetsComplete(android.os.IBinder window) { } diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java index 5dd3389b5d4c..47f094f292f2 100644 --- a/core/java/com/android/internal/view/BaseIWindow.java +++ b/core/java/com/android/internal/view/BaseIWindow.java @@ -116,7 +116,8 @@ public class BaseIWindow extends IWindow.Stub { } @Override - public void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, boolean sync) { + public void dispatchWallpaperOffsets(float x, float y, float xStep, float yStep, float zoom, + boolean sync) { if (sync) { try { mSession.wallpaperOffsetsComplete(asBinder()); |
