diff options
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/service/wallpaper/WallpaperService.java | 19 |
2 files changed, 18 insertions, 2 deletions
diff --git a/api/current.txt b/api/current.txt index 4db12eafc88c..38bf3abd5013 100644 --- a/api/current.txt +++ b/api/current.txt @@ -41485,6 +41485,7 @@ package android.service.wallpaper { method protected void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]); method public int getDesiredMinimumHeight(); method public int getDesiredMinimumWidth(); + method public android.content.Context getDisplayContext(); method public android.view.SurfaceHolder getSurfaceHolder(); method public boolean isPreview(); method public boolean isVisible(); diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index a095b0d8b239..f295b705e4e6 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -25,6 +25,7 @@ import android.app.Service; import android.app.WallpaperColors; import android.app.WallpaperInfo; import android.app.WallpaperManager; +import android.content.Context; import android.content.Intent; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -52,12 +53,12 @@ import android.view.InputChannel; import android.view.InputDevice; import android.view.InputEvent; import android.view.InputEventReceiver; +import android.view.InsetsState; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.View; import android.view.ViewGroup; import android.view.WindowInsets; -import android.view.InsetsState; import android.view.WindowManager; import android.view.WindowManagerGlobal; @@ -211,7 +212,8 @@ public abstract class WallpaperService extends Service { private final Supplier<Long> mClockFunction; private final Handler mHandler; - Display mDisplay; + private Display mDisplay; + private Context mDisplayContext; private int mDisplayState; final BaseSurfaceHolder mSurfaceHolder = new BaseSurfaceHolder() { @@ -1038,6 +1040,7 @@ public abstract class WallpaperService extends Service { mIWallpaperEngine.mDisplayManager.registerDisplayListener(mDisplayListener, mCaller.getHandler()); mDisplay = mIWallpaperEngine.mDisplay; + mDisplayContext = createDisplayContext(mDisplay); mDisplayState = mDisplay.getState(); if (DEBUG) Log.v(TAG, "onCreate(): " + this); @@ -1050,6 +1053,18 @@ public abstract class WallpaperService extends Service { } /** + * The {@link Context} with resources that match the current display the wallpaper is on. + * For multiple display environment, multiple engines can be created to render on each + * display, but these displays may have different densities. Use this context to get the + * corresponding resources for currently display, avoiding the context of the service. + * + * @return A {@link Context} for current display. + */ + public Context getDisplayContext() { + return mDisplayContext; + } + + /** * Executes life cycle event and updates internal ambient mode state based on * message sent from handler. * |