Do not use HARDWARE bitmaps to extract colors

Convert it if necessary before extracting color (similar to what
WallpaperColorsLoader does)

Bug: 187721574
Test: manual
Change-Id: I1aeb5e9808d94d768b91aceaf1a6dd507f93f109
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 28a8d25..b0a5a4f 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -377,7 +377,16 @@
                 new BitmapCropper.Callback() {
                     @Override
                     public void onBitmapCropped(Bitmap croppedBitmap) {
-                        onWallpaperColorsChanged(WallpaperColors.fromBitmap(croppedBitmap));
+                        boolean shouldRecycle = false;
+                        if (croppedBitmap.getConfig() == Bitmap.Config.HARDWARE) {
+                            croppedBitmap = croppedBitmap.copy(Bitmap.Config.ARGB_8888, false);
+                            shouldRecycle = true;
+                        }
+                        WallpaperColors colors = WallpaperColors.fromBitmap(croppedBitmap);
+                        if (shouldRecycle) {
+                            croppedBitmap.recycle();
+                        }
+                        onWallpaperColorsChanged(colors);
                     }
 
                     @Override