From 45bd91b7a6817d3f0228e0ef6c08daa59e35fb7f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 25 Jul 2012 10:58:46 +0200 Subject: [PATCH] Display contact name or username in call notification --- src/org/linphone/LinphoneService.java | 3 +- .../compatibility/ApiSixteenPlus.java | 54 ++++++++++--------- .../linphone/compatibility/Compatibility.java | 4 +- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 8bc2aa9af..06740e2b0 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -239,7 +239,8 @@ public final class LinphoneService extends Service implements LinphoneServiceLis } catch (Exception e) { bm = BitmapFactory.decodeResource(getResources(), R.drawable.unknown_small); } - mIncallNotif = Compatibility.createInCallNotification(getApplicationContext(), mNotificationTitle, getString(notificationTextId), inconId, bm, mNotifContentIntent); + String name = address.getDisplayName() == null ? address.getUserName() : address.getDisplayName(); + mIncallNotif = Compatibility.createInCallNotification(getApplicationContext(), mNotificationTitle, getString(notificationTextId), inconId, bm, name, mNotifContentIntent); notifyWrapper(INCALL_NOTIF_ID, mIncallNotif); } diff --git a/src/org/linphone/compatibility/ApiSixteenPlus.java b/src/org/linphone/compatibility/ApiSixteenPlus.java index 46a81333a..b4f839b16 100644 --- a/src/org/linphone/compatibility/ApiSixteenPlus.java +++ b/src/org/linphone/compatibility/ApiSixteenPlus.java @@ -11,47 +11,49 @@ import android.graphics.Bitmap; @TargetApi(16) public class ApiSixteenPlus { - public static Notification createMessageNotification(Context context, int msgCount, String msgSender, String msg, Bitmap contactIcon, PendingIntent intent) { + public static Notification createMessageNotification(Context context, + int msgCount, String msgSender, String msg, Bitmap contactIcon, + PendingIntent intent) { String title, summary; if (msgCount == 1) { title = "Unread message from %s".replace("%s", msgSender); summary = ""; } else { - title = "%i unread messages".replace("%i", String.valueOf(msgCount)); - summary = "+" + (msgCount - 1) + " more"; + title = "%i unread messages" + .replace("%i", String.valueOf(msgCount)); + summary = ""; } - + Notification notif = new Notification.BigPictureStyle( - new Notification.Builder(context) - .setContentTitle(title) - .setContentText(msg) - .setSmallIcon(R.drawable.chat_icon_default) - .setAutoCancel(true) - .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) - .setWhen(System.currentTimeMillis()) - .setLargeIcon(contactIcon)) - .setSummaryText(summary) - .build(); + new Notification.Builder(context) + .setContentTitle(title) + .setContentText(msg) + .setSmallIcon(R.drawable.chat_icon_over) + .setAutoCancel(true) + .setDefaults( + Notification.DEFAULT_LIGHTS + | Notification.DEFAULT_SOUND + | Notification.DEFAULT_VIBRATE) + .setWhen(System.currentTimeMillis()) + .setLargeIcon(contactIcon)).setSummaryText(summary) + .build(); notif.contentIntent = intent; - + return notif; } public static Notification createInCallNotification(Context context, String title, String msg, int iconID, Bitmap contactIcon, - PendingIntent intent) { - + String contactName, PendingIntent intent) { + Notification notif = new Notification.BigPictureStyle( - new Notification.Builder(context) - .setContentTitle(title) - .setContentText(msg) - .setSmallIcon(iconID) - .setAutoCancel(false) - .setWhen(System.currentTimeMillis()) - .setLargeIcon(contactIcon)) - .build(); + new Notification.Builder(context).setContentTitle(contactName) + .setContentText(msg).setSmallIcon(iconID) + .setAutoCancel(false) + .setWhen(System.currentTimeMillis()) + .setLargeIcon(contactIcon)).build(); notif.contentIntent = intent; - + return notif; } } diff --git a/src/org/linphone/compatibility/Compatibility.java b/src/org/linphone/compatibility/Compatibility.java index 425dc26cb..958a4ce0f 100644 --- a/src/org/linphone/compatibility/Compatibility.java +++ b/src/org/linphone/compatibility/Compatibility.java @@ -152,11 +152,11 @@ public class Compatibility { return notif; } - public static Notification createInCallNotification(Context context, String title, String msg, int iconID, Bitmap contactIcon, PendingIntent intent) { + public static Notification createInCallNotification(Context context, String title, String msg, int iconID, Bitmap contactIcon, String contactName, PendingIntent intent) { Notification notif = null; if (Version.sdkAboveOrEqual(16)) { - notif = ApiSixteenPlus.createInCallNotification(context, title, msg, iconID, contactIcon, intent); + notif = ApiSixteenPlus.createInCallNotification(context, title, msg, iconID, contactIcon, contactName, intent); } else { notif = new Notification(); notif.iconLevel = 0;