summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-12-18 04:01:11 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-12-18 04:01:11 +0000
commitbe21b4a610fe91f6748dcc09bb1aa98c7fbb72f8 (patch)
tree0911772f777fb65eacb5f7d3ee0a969fab1d18bf
parent22a56a9177a86f30dd27d07284738f27639e10a2 (diff)
parent8ccb9ce3123a35cf63a8e20dbe958455dba059bd (diff)
Merge "Support wallpaper on secondary displays.(6/N)"
-rw-r--r--api/current.txt1
-rw-r--r--core/java/android/service/wallpaper/WallpaperService.java19
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.
*