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.database.Cursor;
|
||||||
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.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
@ -812,5 +817,45 @@ public final class LinphoneUtils {
|
||||||
}
|
}
|
||||||
LinphoneManager.getInstance().getMediaScanner().scanFile(new File(appData));
|
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);
|
notifIntent.putExtra("ChatContactSipUri", conferenceAddress);
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
Bitmap bm;
|
Bitmap bm = LinphoneUtils.getRoundBitmapFromUri(mContext, fromPictureUri);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
Notifiable notif = mChatNotifMap.get(conferenceAddress);
|
Notifiable notif = mChatNotifMap.get(conferenceAddress);
|
||||||
NotifiableMessage notifMessage = new NotifiableMessage(message, fromName, timestamp);
|
NotifiableMessage notifMessage = new NotifiableMessage(message, fromName, timestamp);
|
||||||
if (notif == null) {
|
if (notif == null) {
|
||||||
|
@ -175,17 +165,7 @@ public class NotificationsManager {
|
||||||
fromName = fromSipUri;
|
fromName = fromSipUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bitmap bm;
|
Bitmap bm = LinphoneUtils.getRoundBitmapFromUri(mContext, fromPictureUri);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
Notifiable notif = mChatNotifMap.get(fromSipUri);
|
Notifiable notif = mChatNotifMap.get(fromSipUri);
|
||||||
NotifiableMessage notifMessage = new NotifiableMessage(message, fromName, timestamp);
|
NotifiableMessage notifMessage = new NotifiableMessage(message, fromName, timestamp);
|
||||||
if (notif == null) {
|
if (notif == null) {
|
||||||
|
@ -277,12 +257,7 @@ public class NotificationsManager {
|
||||||
|
|
||||||
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
|
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
|
||||||
Uri pictureUri = contact != null ? contact.getPhotoUri() : null;
|
Uri pictureUri = contact != null ? contact.getPhotoUri() : null;
|
||||||
Bitmap bm;
|
Bitmap bm = LinphoneUtils.getRoundBitmapFromUri(mContext, pictureUri);
|
||||||
try {
|
|
||||||
bm = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), pictureUri);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.avatar);
|
|
||||||
}
|
|
||||||
String name = LinphoneUtils.getAddressDisplayName(address);
|
String name = LinphoneUtils.getAddressDisplayName(address);
|
||||||
|
|
||||||
boolean showAnswerAction = call.getState() == Call.State.IncomingReceived || call.getState() == Call.State.IncomingEarlyMedia;
|
boolean showAnswerAction = call.getState() == Call.State.IncomingReceived || call.getState() == Call.State.IncomingEarlyMedia;
|
||||||
|
|
Loading…
Reference in a new issue