1e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds/* 2e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Copyright (C) 2016 The Android Open Source Project 3e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * 4e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Licensed under the Apache License, Version 2.0 (the "License"); 5e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * you may not use this file except in compliance with the License. 6e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * You may obtain a copy of the License at 7e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * 8e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * http://www.apache.org/licenses/LICENSE-2.0 9e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * 10e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Unless required by applicable law or agreed to in writing, software 11e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * distributed under the License is distributed on an "AS IS" BASIS, 12e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * See the License for the specific language governing permissions and 14e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * limitations under the License. 15e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds */ 16e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldspackage android.service.notification; 17e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 18e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.annotation.SystemApi; 19e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.net.Uri; 20e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.os.Bundle; 21e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.os.Parcel; 22e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.os.Parcelable; 23e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 24e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds/** 25e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Ranking updates from the Ranker. 26e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * 27e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @hide 28e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds */ 29e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds@SystemApi 30e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldspublic final class Adjustment implements Parcelable { 31e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds private final String mPackage; 32e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds private final String mKey; 33e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds private final int mImportance; 34e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds private final CharSequence mExplanation; 35e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds private final Uri mReference; 36e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds private final Bundle mSignals; 37eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds private final int mUser; 38e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 39e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public static final String GROUP_KEY_OVERRIDE_KEY = "group_key_override"; 40e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public static final String NEEDS_AUTOGROUPING_KEY = "autogroup_needed"; 41e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 42e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds /** 43e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Create a notification adjustment. 44e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * 45e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @param pkg The package of the notification. 46e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @param key The notification key. 47e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @param importance The recommended importance of the notification. 48e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @param signals A bundle of signals that should inform notification grouping and ordering. 49e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @param explanation A human-readable justification for the adjustment. 50e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @param reference A reference to an external object that augments the 51e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * explanation, such as a 52e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}, 53e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * or null. 54e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds */ 55e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public Adjustment(String pkg, String key, int importance, Bundle signals, 56eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds CharSequence explanation, Uri reference, int user) { 57e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mPackage = pkg; 58e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mKey = key; 59e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mImportance = importance; 60e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mSignals = signals; 61e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mExplanation = explanation; 62e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mReference = reference; 63eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds mUser = user; 64e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 65e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 66e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds protected Adjustment(Parcel in) { 67e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds if (in.readInt() == 1) { 68e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mPackage = in.readString(); 69e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } else { 70e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mPackage = null; 71e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 72e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds if (in.readInt() == 1) { 73e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mKey = in.readString(); 74e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } else { 75e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mKey = null; 76e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 77e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mImportance = in.readInt(); 78e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds if (in.readInt() == 1) { 79e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mExplanation = in.readCharSequence(); 80e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } else { 81e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mExplanation = null; 82e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 83e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mReference = in.readParcelable(Uri.class.getClassLoader()); 84e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds mSignals = in.readBundle(); 85eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds mUser = in.readInt(); 86e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 87e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 88e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public static final Creator<Adjustment> CREATOR = new Creator<Adjustment>() { 89e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds @Override 90e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public Adjustment createFromParcel(Parcel in) { 91e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return new Adjustment(in); 92e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 93e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 94e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds @Override 95e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public Adjustment[] newArray(int size) { 96e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return new Adjustment[size]; 97e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 98e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds }; 99e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 100e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public String getPackage() { 101e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return mPackage; 102e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 103e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 104e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public String getKey() { 105e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return mKey; 106e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 107e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 108e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public int getImportance() { 109e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return mImportance; 110e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 111e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 112e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public CharSequence getExplanation() { 113e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return mExplanation; 114e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 115e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 116e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public Uri getReference() { 117e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return mReference; 118e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 119e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 120e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public Bundle getSignals() { 121e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return mSignals; 122e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 123e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 124eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds public int getUser() { 125eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds return mUser; 126eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds } 127eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds 128e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds @Override 129e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public int describeContents() { 130e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds return 0; 131e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 132e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds 133e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds @Override 134e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds public void writeToParcel(Parcel dest, int flags) { 135e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds if (mPackage != null) { 136e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(1); 137e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeString(mPackage); 138e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } else { 139e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(0); 140e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 141e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds if (mKey != null) { 142e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(1); 143e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeString(mKey); 144e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } else { 145e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(0); 146e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 147e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(mImportance); 148e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds if (mExplanation != null) { 149e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(1); 150e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeCharSequence(mExplanation); 151e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } else { 152e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeInt(0); 153e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 154e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeParcelable(mReference, flags); 155e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds dest.writeBundle(mSignals); 156eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds dest.writeInt(mUser); 157e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds } 158e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds} 159