Loading core/java/android/app/Notification.java +2 −19 Original line number Diff line number Diff line Loading @@ -3386,11 +3386,7 @@ public class Notification implements Parcelable */ private int mCachedContrastColor = COLOR_INVALID; private int mCachedContrastColorIsFor = COLOR_INVALID; /** * Caches a ambient version of {@link #mCachedAmbientColorIsFor}. */ private int mCachedAmbientColor = COLOR_INVALID; private int mCachedAmbientColorIsFor = COLOR_INVALID; /** * A neutral color color that can be used for icons. */ Loading Loading @@ -5445,22 +5441,9 @@ public class Notification implements Parcelable */ @UnsupportedAppUsage public RemoteViews makePublicContentView() { return makePublicView(false /* ambient */); } /** * Construct a RemoteViews for the display in public contexts like on the lockscreen. * * @hide */ public RemoteViews makePublicAmbientNotification() { return makePublicView(true /* ambient */); } private RemoteViews makePublicView(boolean ambient) { if (mN.publicVersion != null) { final Builder builder = recoverBuilder(mContext, mN.publicVersion); return ambient ? builder.makeAmbientNotification() : builder.createContentView(); return builder.createContentView(); } Bundle savedBundle = mN.extras; Style style = mStyle; Loading packages/SystemUI/res/values/config.xml +1 −4 Original line number Diff line number Diff line Loading @@ -147,10 +147,7 @@ <!-- The number of milliseconds before the ambient notification auto-dismisses. This will override the default pulse length. --> <integer name="ambient_notification_decay">10000</integer> <!-- Minimum display time for a heads up notification, in milliseconds. --> <integer name="ambient_notification_minimum_time">2000</integer> <integer name="heads_up_notification_decay_dozing">10000</integer> <!-- The number of milliseconds to extend ambient pulse by when prompted (e.g. on touch) --> <integer name="ambient_notification_extension_time">6000</integer> Loading packages/SystemUI/src/com/android/systemui/Dependency.java +0 −3 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.DevicePolicyManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.statusbar.AmbientPulseManager; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationLockscreenUserManager; Loading Loading @@ -268,7 +267,6 @@ public class Dependency extends SystemUI { @Inject Lazy<VisualStabilityManager> mVisualStabilityManager; @Inject Lazy<NotificationGutsManager> mNotificationGutsManager; @Inject Lazy<NotificationMediaManager> mNotificationMediaManager; @Inject Lazy<AmbientPulseManager> mAmbientPulseManager; @Inject Lazy<NotificationBlockingHelperManager> mNotificationBlockingHelperManager; @Inject Lazy<NotificationRemoteInputManager> mNotificationRemoteInputManager; @Inject Lazy<SmartReplyConstants> mSmartReplyConstants; Loading Loading @@ -449,7 +447,6 @@ public class Dependency extends SystemUI { mNotificationGroupAlertTransferHelper::get); mProviders.put(NotificationMediaManager.class, mNotificationMediaManager::get); mProviders.put(NotificationGutsManager.class, mNotificationGutsManager::get); mProviders.put(AmbientPulseManager.class, mAmbientPulseManager::get); mProviders.put(NotificationBlockingHelperManager.class, mNotificationBlockingHelperManager::get); mProviders.put(NotificationRemoteInputManager.class, Loading packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java +0 −2 Original line number Diff line number Diff line Loading @@ -499,7 +499,6 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList view.setHeadsUp(false); view.resetTranslation(); view.setOnKeyguard(false); view.setOnAmbient(false); view.setClipBottomAmount(0); view.setClipTopAmount(0); view.setContentTransformationAmount(0, false); Loading @@ -515,7 +514,6 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList viewState.gone = false; viewState.hidden = false; viewState.dimmed = false; viewState.dozing = false; viewState.alpha = 1f; viewState.notGoneIndex = -1; viewState.xTranslation = 0; Loading packages/SystemUI/src/com/android/systemui/statusbar/AmbientPulseManager.javadeleted 100644 → 0 +0 −162 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.notification.row.NotificationContentInflater.FLAG_CONTENT_VIEW_AMBIENT; import android.annotation.NonNull; import android.content.Context; import android.content.res.Resources; import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.NotificationContentInflater.InflationFlag; import javax.inject.Inject; import javax.inject.Singleton; /** * Manager which handles high priority notifications that should "pulse" in when the device is * dozing and/or in AOD. The pulse uses the notification's ambient view and pops in briefly * before automatically dismissing the alert. */ @Singleton public class AmbientPulseManager extends AlertingNotificationManager { protected final ArraySet<OnAmbientChangedListener> mListeners = new ArraySet<>(); @VisibleForTesting protected long mExtensionTime; @Inject public AmbientPulseManager(@NonNull final Context context) { Resources resources = context.getResources(); mAutoDismissNotificationDecay = resources.getInteger(R.integer.ambient_notification_decay); mMinimumDisplayTime = resources.getInteger(R.integer.ambient_notification_minimum_time); mExtensionTime = resources.getInteger(R.integer.ambient_notification_extension_time); } /** * Adds an OnAmbientChangedListener to observe events. */ public void addListener(@NonNull OnAmbientChangedListener listener) { mListeners.add(listener); } /** * Removes the OnAmbientChangedListener from the observer list. */ public void removeListener(@NonNull OnAmbientChangedListener listener) { mListeners.remove(listener); } /** * Extends the lifetime of the currently showing pulsing notification so that the pulse lasts * longer. */ public void extendPulse() { AmbientEntry topEntry = getTopEntry(); if (topEntry == null) { return; } topEntry.extendPulse(); } public @InflationFlag int getContentFlag() { return FLAG_CONTENT_VIEW_AMBIENT; } @Override protected void onAlertEntryAdded(AlertEntry alertEntry) { NotificationEntry entry = alertEntry.mEntry; entry.setAmbientPulsing(true); for (OnAmbientChangedListener listener : mListeners) { listener.onAmbientStateChanged(entry, true); } } @Override protected void onAlertEntryRemoved(AlertEntry alertEntry) { NotificationEntry entry = alertEntry.mEntry; entry.setAmbientPulsing(false); for (OnAmbientChangedListener listener : mListeners) { listener.onAmbientStateChanged(entry, false); } entry.freeContentViewWhenSafe(FLAG_CONTENT_VIEW_AMBIENT); } @Override protected AlertEntry createAlertEntry() { return new AmbientEntry(); } /** * Get the top pulsing entry. This should be the currently showing one if there are multiple. * @return the currently showing entry */ private AmbientEntry getTopEntry() { if (mAlertEntries.isEmpty()) { return null; } AlertEntry topEntry = null; for (AlertEntry entry : mAlertEntries.values()) { if (topEntry == null || entry.compareTo(topEntry) < 0) { topEntry = entry; } } return (AmbientEntry) topEntry; } /** * Observer interface for any changes in the ambient entries. */ public interface OnAmbientChangedListener { /** * Called when an entry starts or stops pulsing. * @param entry the entry that changed * @param isPulsing true if the entry is now pulsing, false otherwise */ void onAmbientStateChanged(@NonNull NotificationEntry entry, boolean isPulsing); } private final class AmbientEntry extends AlertEntry { private boolean extended; /** * Extend the lifetime of the alertEntry so that it auto-removes later. Can only be * extended once. */ private void extendPulse() { if (!extended) { extended = true; updateEntry(false); } } @Override public void reset() { super.reset(); extended = false; } @Override protected long calculateFinishTime() { return super.calculateFinishTime() + (extended ? mExtensionTime : 0); } } } Loading
core/java/android/app/Notification.java +2 −19 Original line number Diff line number Diff line Loading @@ -3386,11 +3386,7 @@ public class Notification implements Parcelable */ private int mCachedContrastColor = COLOR_INVALID; private int mCachedContrastColorIsFor = COLOR_INVALID; /** * Caches a ambient version of {@link #mCachedAmbientColorIsFor}. */ private int mCachedAmbientColor = COLOR_INVALID; private int mCachedAmbientColorIsFor = COLOR_INVALID; /** * A neutral color color that can be used for icons. */ Loading Loading @@ -5445,22 +5441,9 @@ public class Notification implements Parcelable */ @UnsupportedAppUsage public RemoteViews makePublicContentView() { return makePublicView(false /* ambient */); } /** * Construct a RemoteViews for the display in public contexts like on the lockscreen. * * @hide */ public RemoteViews makePublicAmbientNotification() { return makePublicView(true /* ambient */); } private RemoteViews makePublicView(boolean ambient) { if (mN.publicVersion != null) { final Builder builder = recoverBuilder(mContext, mN.publicVersion); return ambient ? builder.makeAmbientNotification() : builder.createContentView(); return builder.createContentView(); } Bundle savedBundle = mN.extras; Style style = mStyle; Loading
packages/SystemUI/res/values/config.xml +1 −4 Original line number Diff line number Diff line Loading @@ -147,10 +147,7 @@ <!-- The number of milliseconds before the ambient notification auto-dismisses. This will override the default pulse length. --> <integer name="ambient_notification_decay">10000</integer> <!-- Minimum display time for a heads up notification, in milliseconds. --> <integer name="ambient_notification_minimum_time">2000</integer> <integer name="heads_up_notification_decay_dozing">10000</integer> <!-- The number of milliseconds to extend ambient pulse by when prompted (e.g. on touch) --> <integer name="ambient_notification_extension_time">6000</integer> Loading
packages/SystemUI/src/com/android/systemui/Dependency.java +0 −3 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.DevicePolicyManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.statusbar.AmbientPulseManager; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationLockscreenUserManager; Loading Loading @@ -268,7 +267,6 @@ public class Dependency extends SystemUI { @Inject Lazy<VisualStabilityManager> mVisualStabilityManager; @Inject Lazy<NotificationGutsManager> mNotificationGutsManager; @Inject Lazy<NotificationMediaManager> mNotificationMediaManager; @Inject Lazy<AmbientPulseManager> mAmbientPulseManager; @Inject Lazy<NotificationBlockingHelperManager> mNotificationBlockingHelperManager; @Inject Lazy<NotificationRemoteInputManager> mNotificationRemoteInputManager; @Inject Lazy<SmartReplyConstants> mSmartReplyConstants; Loading Loading @@ -449,7 +447,6 @@ public class Dependency extends SystemUI { mNotificationGroupAlertTransferHelper::get); mProviders.put(NotificationMediaManager.class, mNotificationMediaManager::get); mProviders.put(NotificationGutsManager.class, mNotificationGutsManager::get); mProviders.put(AmbientPulseManager.class, mAmbientPulseManager::get); mProviders.put(NotificationBlockingHelperManager.class, mNotificationBlockingHelperManager::get); mProviders.put(NotificationRemoteInputManager.class, Loading
packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java +0 −2 Original line number Diff line number Diff line Loading @@ -499,7 +499,6 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList view.setHeadsUp(false); view.resetTranslation(); view.setOnKeyguard(false); view.setOnAmbient(false); view.setClipBottomAmount(0); view.setClipTopAmount(0); view.setContentTransformationAmount(0, false); Loading @@ -515,7 +514,6 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList viewState.gone = false; viewState.hidden = false; viewState.dimmed = false; viewState.dozing = false; viewState.alpha = 1f; viewState.notGoneIndex = -1; viewState.xTranslation = 0; Loading
packages/SystemUI/src/com/android/systemui/statusbar/AmbientPulseManager.javadeleted 100644 → 0 +0 −162 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.notification.row.NotificationContentInflater.FLAG_CONTENT_VIEW_AMBIENT; import android.annotation.NonNull; import android.content.Context; import android.content.res.Resources; import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.NotificationContentInflater.InflationFlag; import javax.inject.Inject; import javax.inject.Singleton; /** * Manager which handles high priority notifications that should "pulse" in when the device is * dozing and/or in AOD. The pulse uses the notification's ambient view and pops in briefly * before automatically dismissing the alert. */ @Singleton public class AmbientPulseManager extends AlertingNotificationManager { protected final ArraySet<OnAmbientChangedListener> mListeners = new ArraySet<>(); @VisibleForTesting protected long mExtensionTime; @Inject public AmbientPulseManager(@NonNull final Context context) { Resources resources = context.getResources(); mAutoDismissNotificationDecay = resources.getInteger(R.integer.ambient_notification_decay); mMinimumDisplayTime = resources.getInteger(R.integer.ambient_notification_minimum_time); mExtensionTime = resources.getInteger(R.integer.ambient_notification_extension_time); } /** * Adds an OnAmbientChangedListener to observe events. */ public void addListener(@NonNull OnAmbientChangedListener listener) { mListeners.add(listener); } /** * Removes the OnAmbientChangedListener from the observer list. */ public void removeListener(@NonNull OnAmbientChangedListener listener) { mListeners.remove(listener); } /** * Extends the lifetime of the currently showing pulsing notification so that the pulse lasts * longer. */ public void extendPulse() { AmbientEntry topEntry = getTopEntry(); if (topEntry == null) { return; } topEntry.extendPulse(); } public @InflationFlag int getContentFlag() { return FLAG_CONTENT_VIEW_AMBIENT; } @Override protected void onAlertEntryAdded(AlertEntry alertEntry) { NotificationEntry entry = alertEntry.mEntry; entry.setAmbientPulsing(true); for (OnAmbientChangedListener listener : mListeners) { listener.onAmbientStateChanged(entry, true); } } @Override protected void onAlertEntryRemoved(AlertEntry alertEntry) { NotificationEntry entry = alertEntry.mEntry; entry.setAmbientPulsing(false); for (OnAmbientChangedListener listener : mListeners) { listener.onAmbientStateChanged(entry, false); } entry.freeContentViewWhenSafe(FLAG_CONTENT_VIEW_AMBIENT); } @Override protected AlertEntry createAlertEntry() { return new AmbientEntry(); } /** * Get the top pulsing entry. This should be the currently showing one if there are multiple. * @return the currently showing entry */ private AmbientEntry getTopEntry() { if (mAlertEntries.isEmpty()) { return null; } AlertEntry topEntry = null; for (AlertEntry entry : mAlertEntries.values()) { if (topEntry == null || entry.compareTo(topEntry) < 0) { topEntry = entry; } } return (AmbientEntry) topEntry; } /** * Observer interface for any changes in the ambient entries. */ public interface OnAmbientChangedListener { /** * Called when an entry starts or stops pulsing. * @param entry the entry that changed * @param isPulsing true if the entry is now pulsing, false otherwise */ void onAmbientStateChanged(@NonNull NotificationEntry entry, boolean isPulsing); } private final class AmbientEntry extends AlertEntry { private boolean extended; /** * Extend the lifetime of the alertEntry so that it auto-removes later. Can only be * extended once. */ private void extendPulse() { if (!extended) { extended = true; updateEntry(false); } } @Override public void reset() { super.reset(); extended = false; } @Override protected long calculateFinishTime() { return super.calculateFinishTime() + (extended ? mExtensionTime : 0); } } }