Use round images for notifications' contacts' pictures
This commit is contained in:
parent
0048482d1c
commit
6c515734bc
2 changed files with 48 additions and 28 deletions
|
@ -27,6 +27,11 @@ import android.content.Intent;
|
|||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
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.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
|
@ -812,5 +817,45 @@ public final class LinphoneUtils {
|
|||
}
|
||||
LinphoneManager.getInstance().getMediaScanner().scanFile(new File(appData));
|
||||
}
|
||||
|
||||
public static Bitmap getRoundBitmapFromUri(Context context, Uri fromPictureUri) {
|
||||
Bitmap bm;
|
||||
Bitmap roundBm;
|
||||
if (fromPictureUri != null) {
|
||||
try {
|
||||
bm = MediaStore.Images.Media.getBitmap(context.getContentResolver(), fromPictureUri);
|
||||
} catch (Exception e) {
|
||||
bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.topbar_avatar);
|
||||
}
|
||||
} else {
|
||||
bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.topbar_avatar);
|
||||
}
|
||||
if (bm != null) {
|
||||
roundBm = LinphoneUtils.getRoundBitmap(bm);
|
||||
if (roundBm != null) {
|
||||
bm.recycle();
|
||||
bm = roundBm;
|
||||
}
|
||||
}
|
||||
return bm;
|
||||
}
|
||||
|
||||
public static Bitmap getRoundBitmap(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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -135,17 +135,7 @@ public class NotificationsManager {
|
|||
notifIntent.putExtra("ChatContactSipUri", conferenceAddress);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
Bitmap bm;
|
||||
if (fromPictureUri != null) {
|
||||
try {
|
||||
bm = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), fromPictureUri);
|
||||
} catch (Exception e) {
|
||||
bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.chat_group_avatar);
|
||||
}
|
||||
} else {
|
||||
bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.topbar_avatar);
|
||||
}
|
||||
|
||||
Bitmap bm = LinphoneUtils.getRoundBitmapFromUri(mContext, fromPictureUri);
|
||||
Notifiable notif = mChatNotifMap.get(conferenceAddress);
|
||||
NotifiableMessage notifMessage = new NotifiableMessage(message, fromName, timestamp);
|
||||
if (notif == null) {
|
||||
|
@ -175,17 +165,7 @@ public class NotificationsManager {
|
|||
fromName = fromSipUri;
|
||||
}
|
||||
|
||||
Bitmap bm;
|
||||
if (fromPictureUri != null) {
|
||||
try {
|
||||
bm = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), fromPictureUri);
|
||||
} catch (Exception e) {
|
||||
bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.topbar_avatar);
|
||||
}
|
||||
} else {
|
||||
bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.topbar_avatar);
|
||||
}
|
||||
|
||||
Bitmap bm = LinphoneUtils.getRoundBitmapFromUri(mContext, fromPictureUri);
|
||||
Notifiable notif = mChatNotifMap.get(fromSipUri);
|
||||
NotifiableMessage notifMessage = new NotifiableMessage(message, fromName, timestamp);
|
||||
if (notif == null) {
|
||||
|
@ -277,12 +257,7 @@ public class NotificationsManager {
|
|||
|
||||
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
|
||||
Uri pictureUri = contact != null ? contact.getPhotoUri() : null;
|
||||
Bitmap bm;
|
||||
try {
|
||||
bm = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), pictureUri);
|
||||
} catch (Exception e) {
|
||||
bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.avatar);
|
||||
}
|
||||
Bitmap bm = LinphoneUtils.getRoundBitmapFromUri(mContext, pictureUri);
|
||||
String name = LinphoneUtils.getAddressDisplayName(address);
|
||||
|
||||
boolean showAnswerAction = call.getState() == Call.State.IncomingReceived || call.getState() == Call.State.IncomingEarlyMedia;
|
||||
|
|
Loading…
Reference in a new issue