From 08ab5669a54dd0fe8f9448625fb010109be9bd2c Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 13 Jun 2018 13:35:57 +0200 Subject: [PATCH] extract getDrawableAsNotificationBitmap into ResourceUtils --- .../service/KeyserverSyncAdapterService.java | 30 ++----------------- .../keychain/util/ResourceUtils.java | 29 ++++++++++++++++++ 2 files changed, 31 insertions(+), 28 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ResourceUtils.java diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java index 2a763c105..6799b8d0e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java @@ -37,12 +37,8 @@ import android.content.Context; import android.content.Intent; import android.content.SyncResult; import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.NetworkInfo; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -68,6 +64,7 @@ import org.sufficientlysecure.keychain.ui.OrbotRequiredDialogActivity; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.ParcelableProxy; import org.sufficientlysecure.keychain.util.Preferences; +import org.sufficientlysecure.keychain.util.ResourceUtils; import timber.log.Timber; @@ -509,7 +506,7 @@ public class KeyserverSyncAdapterService extends Service { private Notification getOrbotNoification(Context context) { NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setSmallIcon(R.drawable.ic_stat_notify_24dp) - .setLargeIcon(getBitmap(R.mipmap.ic_launcher, context)) + .setLargeIcon(ResourceUtils.getDrawableAsNotificationBitmap(context, R.mipmap.ic_launcher)) .setContentTitle(context.getString(R.string.keyserver_sync_orbot_notif_title)) .setContentText(context.getString(R.string.keyserver_sync_orbot_notif_msg)) .setAutoCancel(true); @@ -606,27 +603,4 @@ public class KeyserverSyncAdapterService extends Service { serviceIntent.setAction(ACTION_UPDATE_ALL); this.startService(serviceIntent); } - - // from de.azapps.mirakel.helper.Helpers from https://github.com/MirakelX/mirakel-android - private Bitmap getBitmap(int resId, Context context) { - int mLargeIconWidth = (int) context.getResources().getDimension( - android.R.dimen.notification_large_icon_width); - int mLargeIconHeight = (int) context.getResources().getDimension( - android.R.dimen.notification_large_icon_height); - Drawable d; - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - // noinspection deprecation (can't help it at this api level) - d = context.getResources().getDrawable(resId); - } else { - d = context.getDrawable(resId); - } - if (d == null) { - return null; - } - Bitmap b = Bitmap.createBitmap(mLargeIconWidth, mLargeIconHeight, Bitmap.Config.ARGB_8888); - Canvas c = new Canvas(b); - d.setBounds(0, 0, mLargeIconWidth, mLargeIconHeight); - d.draw(c); - return b; - } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ResourceUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ResourceUtils.java new file mode 100644 index 000000000..b5432ff4e --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ResourceUtils.java @@ -0,0 +1,29 @@ +package org.sufficientlysecure.keychain.util; + + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.drawable.Drawable; +import android.support.annotation.DrawableRes; +import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; + + +public class ResourceUtils { + public static Bitmap getDrawableAsNotificationBitmap(@NonNull Context context, @DrawableRes int iconRes) { + Drawable iconDrawable = ContextCompat.getDrawable(context, iconRes); + if (iconDrawable == null) { + return null; + } + Resources resources = context.getResources(); + int largeIconWidth = resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_width); + int largeIconHeight = resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height); + Bitmap b = Bitmap.createBitmap(largeIconWidth, largeIconHeight, Bitmap.Config.ARGB_8888); + Canvas c = new Canvas(b); + iconDrawable.setBounds(0, 0, largeIconWidth, largeIconHeight); + iconDrawable.draw(c); + return b; + } +}