summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2023-04-06 08:29:07 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-04-06 08:29:07 +0000
commitaa0599b652b5f73631dc561634c106ff28b5fb90 (patch)
tree6ed362d9a3a2cbb0c6e6095cb2247ecda28c6cdb
parent0f69a87419d18763df29b0da97775a5dfd0fef0f (diff)
parente5005ee41ee3c143be7feb12b4d88cc425cf069f (diff)
Merge "Calculate LiveWallpaper thumbnail raw dimension" into tm-qpr-dev
-rwxr-xr-xsrc/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java b/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java
index 1f4fb674..3e4d58bd 100755
--- a/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java
+++ b/src/com/android/wallpaper/asset/LiveWallpaperThumbAsset.java
@@ -21,16 +21,21 @@ import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
+import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
import android.net.Uri;
import android.util.Log;
import android.widget.ImageView;
import androidx.annotation.WorkerThread;
+import com.android.wallpaper.module.DrawableLayerResolver;
+import com.android.wallpaper.module.InjectorProvider;
+
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.Key;
import com.bumptech.glide.load.MultiTransformation;
@@ -59,6 +64,7 @@ public class LiveWallpaperThumbAsset extends Asset {
protected final Context mContext;
protected final android.app.WallpaperInfo mInfo;
+ protected final DrawableLayerResolver mLayerResolver;
// The content Uri of thumbnail
protected Uri mUri;
private Drawable mThumbnailDrawable;
@@ -66,6 +72,7 @@ public class LiveWallpaperThumbAsset extends Asset {
public LiveWallpaperThumbAsset(Context context, android.app.WallpaperInfo info) {
mContext = context.getApplicationContext();
mInfo = info;
+ mLayerResolver = InjectorProvider.getInjector().getDrawableLayerResolver();
}
public LiveWallpaperThumbAsset(Context context, android.app.WallpaperInfo info, Uri uri) {
@@ -114,7 +121,21 @@ public class LiveWallpaperThumbAsset extends Asset {
@Override
public void decodeRawDimensions(Activity unused, DimensionsReceiver receiver) {
- receiver.onDimensionsDecoded(null);
+ // TODO(b/277166654): Reuse the logic for all thumb asset decoding
+ sExecutorService.execute(() -> {
+ Bitmap result = null;
+ Drawable thumb = mInfo.loadThumbnail(mContext.getPackageManager());
+ if (thumb instanceof BitmapDrawable) {
+ result = ((BitmapDrawable) thumb).getBitmap();
+ } else if (thumb instanceof LayerDrawable) {
+ Drawable layer = mLayerResolver.resolveLayer((LayerDrawable) thumb);
+ if (layer instanceof BitmapDrawable) {
+ result = ((BitmapDrawable) layer).getBitmap();
+ }
+ }
+ receiver.onDimensionsDecoded(
+ result == null ? null : new Point(result.getWidth(), result.getHeight()));
+ });
}
@Override