fixed avatar in notification

This commit is contained in:
iNPUTmice 2014-08-11 23:18:16 +02:00
parent f247abc2dc
commit 8a82586d5b
3 changed files with 32 additions and 19 deletions

View File

@ -321,7 +321,7 @@ public class Contact implements ListItem {
@Override
public Bitmap getImage(int size, Context context) {
if (this.avatar!=null) {
Bitmap bm = BitmapFactory.decodeFile(FileBackend.getAvatarPath(context, avatar));
Bitmap bm = FileBackend.getAvatar(avatar, size, context);
if (bm==null) {
return UIHelper.getContactPicture(this, size, context, false);
} else {

View File

@ -30,6 +30,7 @@ import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Message;
import eu.siacs.conversations.services.ImageProvider;
import eu.siacs.conversations.utils.CryptoHelper;
import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.jingle.JingleFile;
import eu.siacs.conversations.xmpp.pep.Avatar;
@ -330,27 +331,31 @@ public class FileBackend {
InputStream is = context.getContentResolver()
.openInputStream(image);
Bitmap input = BitmapFactory.decodeStream(is, null, options);
int w = input.getWidth();
int h = input.getHeight();
float scale = Math.max((float) size / h, (float) size / w);
float outWidth = scale * w;
float outHeight = scale * h;
float left = (size - outWidth) / 2;
float top = (size - outHeight) / 2;
RectF target = new RectF(left, top, left + outWidth, top
+ outHeight);
Bitmap output = Bitmap.createBitmap(size, size, input.getConfig());
Canvas canvas = new Canvas(output);
canvas.drawBitmap(input, null, target, null);
return output;
return cropCenterSquare(input, size);
} catch (FileNotFoundException e) {
return null;
}
}
public static Bitmap cropCenterSquare(Bitmap input, int size) {
int w = input.getWidth();
int h = input.getHeight();
float scale = Math.max((float) size / h, (float) size / w);
float outWidth = scale * w;
float outHeight = scale * h;
float left = (size - outWidth) / 2;
float top = (size - outHeight) / 2;
RectF target = new RectF(left, top, left + outWidth, top
+ outHeight);
Bitmap output = Bitmap.createBitmap(size, size, input.getConfig());
Canvas canvas = new Canvas(output);
canvas.drawBitmap(input, null, target, null);
return output;
}
private int calcSampleSize(Uri image, int size)
throws FileNotFoundException {
BitmapFactory.Options options = new BitmapFactory.Options();
@ -395,4 +400,12 @@ public class FileBackend {
return resId;
}
}
public static Bitmap getAvatar(String avatar, int size, Context context) {
Bitmap bm = BitmapFactory.decodeFile(FileBackend.getAvatarPath(context, avatar));
if (bm==null) {
return null;
}
return cropCenterSquare(bm, UIHelper.getRealPx(size, context));
}
}

View File

@ -15,6 +15,7 @@ import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Message;
import eu.siacs.conversations.entities.MucOptions.User;
import eu.siacs.conversations.persistance.FileBackend;
import eu.siacs.conversations.ui.ConversationActivity;
import eu.siacs.conversations.ui.ManageAccountActivity;
import android.app.Activity;
@ -376,8 +377,7 @@ public class UIHelper {
} else if (unread.size() == 1) {
Conversation conversation = unread.get(0);
targetUuid = conversation.getUuid();
mBuilder.setLargeIcon(UIHelper.getContactPicture(conversation, 64,
context, true));
mBuilder.setLargeIcon(conversation.getImage(context, 64));
mBuilder.setContentTitle(conversation.getName(useSubject));
if (notify) {
mBuilder.setTicker(conversation.getLatestMessage()