Commit 31bf981e authored by Varun Patil's avatar Varun Patil

Allow changing large icon of notification

parent 986de673
...@@ -6,6 +6,11 @@ import android.content.Context; ...@@ -6,6 +6,11 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat;
...@@ -87,6 +92,7 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService { ...@@ -87,6 +92,7 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService {
showBitmapNotification( showBitmapNotification(
this, this,
remoteMessage.getData().get("image_url"), remoteMessage.getData().get("image_url"),
remoteMessage.getData().get("large_icon"),
notification_id, notification_id,
standardNotificationBuilder() standardNotificationBuilder()
.setContentTitle(remoteMessage.getData().get("name")) .setContentTitle(remoteMessage.getData().get("name"))
...@@ -143,20 +149,21 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService { ...@@ -143,20 +149,21 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService {
.setPriority(NotificationCompat.PRIORITY_DEFAULT); .setPriority(NotificationCompat.PRIORITY_DEFAULT);
} }
interface MyCallbackInterface {
void onDownloadFinished(String result);
}
/** Gets a bitmap from a URL asynchronously and shows notification */ /** Gets a bitmap from a URL asynchronously and shows notification */
public static void showBitmapNotification( public static void showBitmapNotification(
final Context context, final String imageUrl, final int notification_id, final Context context, final String imageUrl, final String largeIconUrl,
final NotificationCompat.Builder builder, final String content){ final int notification_id, final NotificationCompat.Builder builder, final String content){
new AsyncTask<Void, Void, Bitmap>() { new AsyncTask<Void, Void, Bitmap[]>() {
@Override @Override
protected Bitmap doInBackground(Void... params) { protected Bitmap[] doInBackground(Void... params) {
try { try {
return Picasso.get().load(imageUrl).get(); Bitmap image = Picasso.get().load(imageUrl).get();
Bitmap largeIcon = null;
if (largeIconUrl != null) {
largeIcon = getCroppedBitmap(Picasso.get().load(largeIconUrl).get());
}
return new Bitmap[]{image, largeIcon};
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -164,15 +171,41 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService { ...@@ -164,15 +171,41 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService {
} }
@Override @Override
protected void onPostExecute(Bitmap bitmap) { protected void onPostExecute(Bitmap[] bitmaps) {
if (bitmaps[0] != null) {
builder.setStyle( builder.setStyle(
new NotificationCompat.BigPictureStyle() new NotificationCompat.BigPictureStyle()
.bigPicture(bitmap) .bigPicture(bitmaps[0])
.setSummaryText(content) .setSummaryText(content)
); );
}
if (bitmaps[1] != null) {
builder.setLargeIcon(bitmaps[1]);
}
showNotification(context, notification_id, builder.build()); showNotification(context, notification_id, builder.build());
super.onPostExecute(bitmap); super.onPostExecute(bitmaps);
} }
}.execute(); }.execute();
} }
/** https://stackoverflow.com/a/12089127 */
public static Bitmap getCroppedBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2,
bitmap.getWidth() / 2, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment