Crop the notification thumbnail in 1:1 mode instead of stretching it (#8533)

Change square bitmap transformation strategy: change the bitmap transformation strategy when a 1:1 aspect ratio is
enabled to not stretch the bitmap but rather crop it.

On Android 11/12, the way the whole thumbnail was used for the
notification icon was not ideal, however the setting to toggle a 1:1
(as it states in settings) resulted in distortions.

Fix this by simply cropping the bitmap.

Also update the 1:1 mode strings to remove mentions of scaling or
distortions, as those no longer apply.
This commit is contained in:
Alex 2022-07-13 15:19:44 +00:00 committed by GitHub
parent 93b913e14d
commit 6f7298b9db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 14 deletions

View file

@ -6,7 +6,6 @@ import android.app.Service;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ServiceInfo; import android.content.pm.ServiceInfo;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;
@ -366,16 +365,13 @@ public final class NotificationUtil {
} }
private Bitmap getBitmapWithSquareAspectRatio(final Bitmap bitmap) { private Bitmap getBitmapWithSquareAspectRatio(final Bitmap bitmap) {
return getResizedBitmap(bitmap, bitmap.getWidth(), bitmap.getWidth()); // Find the smaller dimension and then take a center portion of the image that
} // has that size.
final int w = bitmap.getWidth();
private Bitmap getResizedBitmap(final Bitmap bitmap, final int newWidth, final int newHeight) { final int h = bitmap.getHeight();
final int width = bitmap.getWidth(); final int dstSize = Math.min(w, h);
final int height = bitmap.getHeight(); final int x = (w - dstSize) / 2;
final float scaleWidth = ((float) newWidth) / width; final int y = (h - dstSize) / 2;
final float scaleHeight = ((float) newHeight) / height; return Bitmap.createBitmap(bitmap, x, y, dstSize, dstSize);
final Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);
} }
} }

View file

@ -50,8 +50,8 @@
<string name="show_play_with_kodi_title">Show \"Play with Kodi\" option</string> <string name="show_play_with_kodi_title">Show \"Play with Kodi\" option</string>
<string name="show_play_with_kodi_summary">Display an option to play a video via Kodi media center</string> <string name="show_play_with_kodi_summary">Display an option to play a video via Kodi media center</string>
<string name="crash_the_player">Crash the player</string> <string name="crash_the_player">Crash the player</string>
<string name="notification_scale_to_square_image_title">Scale thumbnail to 1:1 aspect ratio</string> <string name="notification_scale_to_square_image_title">Crop thumbnail to 1:1 aspect ratio</string>
<string name="notification_scale_to_square_image_summary">Scale the video thumbnail shown in the notification from 16:9 to 1:1 aspect ratio (may introduce distortions)</string> <string name="notification_scale_to_square_image_summary">Crop the video thumbnail shown in the notification from 16:9 to 1:1 aspect ratio</string>
<string name="notification_action_0_title">First action button</string> <string name="notification_action_0_title">First action button</string>
<string name="notification_action_1_title">Second action button</string> <string name="notification_action_1_title">Second action button</string>
<string name="notification_action_2_title">Third action button</string> <string name="notification_action_2_title">Third action button</string>