summaryrefslogtreecommitdiff
path: root/InCallUI/src/com/android/incallui/StatusBarNotifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'InCallUI/src/com/android/incallui/StatusBarNotifier.java')
-rw-r--r--InCallUI/src/com/android/incallui/StatusBarNotifier.java32
1 files changed, 23 insertions, 9 deletions
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 8df4520bf..e583434da 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -40,6 +40,8 @@ import com.android.incallui.InCallPresenter.InCallState;
import com.google.common.base.Preconditions;
+import java.util.Objects;
+
/**
* This class adds Notifications to the status bar for the in-call experience.
*/
@@ -60,7 +62,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
private int mCurrentNotification = NOTIFICATION_NONE;
private int mCallState = Call.State.INVALID;
private int mSavedIcon = 0;
- private int mSavedContent = 0;
+ private String mSavedContent = null;
private Bitmap mSavedLargeIcon;
private String mSavedContentTitle;
private String mCallId = null;
@@ -206,7 +208,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
// Check if data has changed; if nothing is different, don't issue another notification.
final int iconResId = getIconToDisplay(call);
Bitmap largeIcon = getLargeIconToDisplay(contactInfo, call);
- final int contentResId = getContentString(call);
+ final String content = getContentString(call);
final String contentTitle = getContentTitle(contactInfo, call);
final int notificationType;
@@ -218,7 +220,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
notificationType = NOTIFICATION_IN_CALL;
}
- if (!checkForChangeAndSaveData(iconResId, contentResId, largeIcon, contentTitle, state,
+ if (!checkForChangeAndSaveData(iconResId, content, largeIcon, contentTitle, state,
notificationType)) {
return;
}
@@ -244,7 +246,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
}
// Set the content
- builder.setContentText(mContext.getString(contentResId));
+ builder.setContentText(content);
builder.setSmallIcon(iconResId);
builder.setContentTitle(contentTitle);
builder.setLargeIcon(largeIcon);
@@ -306,7 +308,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
* are already displaying. If the data is exactly the same, we return false so that
* we do not issue a new notification for the exact same data.
*/
- private boolean checkForChangeAndSaveData(int icon, int content, Bitmap largeIcon,
+ private boolean checkForChangeAndSaveData(int icon, String content, Bitmap largeIcon,
String contentTitle, int state, int notificationType) {
// The two are different:
@@ -317,7 +319,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
(contentTitle == null && mSavedContentTitle != null);
// any change means we are definitely updating
- boolean retval = (mSavedIcon != icon) || (mSavedContent != content) ||
+ boolean retval = (mSavedIcon != icon) || !Objects.equals(mSavedContent, content) ||
(mCallState != state) || (mSavedLargeIcon != largeIcon) ||
contentTitleChanged;
@@ -419,13 +421,20 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
/**
* Returns the message to use with the notification.
*/
- private int getContentString(Call call) {
+ private String getContentString(Call call) {
+ boolean isIncomingOrWaiting = call.getState() == Call.State.INCOMING ||
+ call.getState() == Call.State.CALL_WAITING;
+
+ if (isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject())) {
+ return call.getCallSubject();
+ }
+
int resId = R.string.notification_ongoing_call;
if (call.hasProperty(Details.PROPERTY_WIFI)) {
resId = R.string.notification_ongoing_call_wifi;
}
- if (call.getState() == Call.State.INCOMING || call.getState() == Call.State.CALL_WAITING) {
+ if (isIncomingOrWaiting) {
if (call.hasProperty(Details.PROPERTY_WIFI)) {
resId = R.string.notification_incoming_call_wifi;
} else {
@@ -440,7 +449,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
resId = R.string.notification_requesting_video_call;
}
- return resId;
+ return mContext.getString(resId);
}
/**
@@ -637,4 +646,9 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
updateNotification(mInCallState, CallList.getInstance());
}
}
+
+ @Override
+ public void onLastForwardedNumberChange() {
+ // no-op
+ }
}