Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1165084c authored by Alex Mang's avatar Alex Mang Committed by Android (Google) Code Review
Browse files

Merge "Support for NotificationAssistantService to rerank notifications."

parents f579c1ae 730d949e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8039,6 +8039,7 @@ package android.service.notification {
    field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
    field public static final String KEY_IMPORTANCE = "key_importance";
    field public static final String KEY_PEOPLE = "key_people";
    field public static final String KEY_RANKING_SCORE = "key_ranking_score";
    field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
    field public static final String KEY_TEXT_REPLIES = "key_text_replies";
    field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
+1 −0
Original line number Diff line number Diff line
@@ -2832,6 +2832,7 @@ package android.service.notification {
    field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
    field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
    field public static final String KEY_IMPORTANCE = "key_importance";
    field public static final String KEY_RANKING_SCORE = "key_ranking_score";
    field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
    field public static final String KEY_TEXT_REPLIES = "key_text_replies";
    field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
+7 −0
Original line number Diff line number Diff line
@@ -123,6 +123,13 @@ public final class Adjustment implements Parcelable {
     */
    public static final String KEY_IMPORTANCE = "key_importance";

    /**
     * Data type: float, a ranking score from 0 (lowest) to 1 (highest).
     * Used to rank notifications inside that fall under the same classification (i.e. alerting,
     * silenced).
     */
    public static final String KEY_RANKING_SCORE = "key_ranking_score";

    /**
     * Create a notification adjustment.
     *
+6 −0
Original line number Diff line number Diff line
@@ -59,6 +59,12 @@ public class NotificationComparator
            return -1 * Boolean.compare(isLeftHighImportance, isRightHighImportance);
        }

        // If a score has been assigned by notification assistant service, use this service
        // rank results within each bucket instead of this comparator implementation.
        if (left.getRankingScore() != right.getRankingScore()) {
            return -1 * Float.compare(left.getRankingScore(), right.getRankingScore());
        }

        // first all colorized notifications
        boolean leftImportantColorized = isImportantColorized(left);
        boolean rightImportantColorized = isImportantColorized(right);
+8 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ public final class NotificationRecord {
    private int mSystemImportance = IMPORTANCE_UNSPECIFIED;
    private int mAssistantImportance = IMPORTANCE_UNSPECIFIED;
    private int mImportance = IMPORTANCE_UNSPECIFIED;
    private float mRankingScore = 0f;
    // Field used in global sort key to bypass normal notifications
    private int mCriticality = CriticalNotificationExtractor.NORMAL;
    // A MetricsEvent.NotificationImportanceExplanation, tracking source of mImportance.
@@ -655,6 +656,9 @@ public final class NotificationRecord {
                    importance = Math.min(IMPORTANCE_HIGH, importance);
                    setAssistantImportance(importance);
                }
                if (signals.containsKey(Adjustment.KEY_RANKING_SCORE)) {
                    mRankingScore = signals.getFloat(Adjustment.KEY_RANKING_SCORE);
                }
                if (!signals.isEmpty() && adjustment.getIssuer() != null) {
                    mAdjustmentIssuer = adjustment.getIssuer();
                }
@@ -772,6 +776,10 @@ public final class NotificationRecord {
        return mImportance;
    }

    public float getRankingScore() {
        return mRankingScore;
    }

    public CharSequence getImportanceExplanation() {
        switch (mImportanceExplanationCode) {
            case MetricsEvent.IMPORTANCE_EXPLANATION_UNKNOWN:
Loading