Allow bubbles to be displayed at the bottom of the screen
* Positions the bubbles to show at the bottom of the screen, above the
'dismiss' target UI by default
* Adds flag to toggle bubbles to show at the top of the screen instead
* Adds flag to show bubble header as a footer instead
Test: manual - have bubbles, expand them, note that they are positioned at
bottom of screen
Bug: 123540009
Change-Id: I938d3ab7d4ec6f6bd88f3a33f73a97d5f80a45f5
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 4eea9f8..471619e 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -80,16 +80,21 @@
// Enables some subset of notifs to automatically become bubbles
private static final boolean DEBUG_ENABLE_AUTO_BUBBLE = false;
- // Secure settings flags
- // Feature level flag
+ /** Flag to enable or disable the entire feature */
private static final String ENABLE_BUBBLES = "experiment_enable_bubbles";
- // Auto bubble flags set whether different notification types should be presented as a bubble
+ /** Auto bubble flags set whether different notif types should be presented as a bubble */
private static final String ENABLE_AUTO_BUBBLE_MESSAGES = "experiment_autobubble_messaging";
private static final String ENABLE_AUTO_BUBBLE_ONGOING = "experiment_autobubble_ongoing";
private static final String ENABLE_AUTO_BUBBLE_ALL = "experiment_autobubble_all";
- // Use an activity view for an auto-bubbled notification if it has an appropriate content intent
+
+ /** Use an activityView for an auto-bubbled notifs if it has an appropriate content intent */
private static final String ENABLE_BUBBLE_CONTENT_INTENT = "experiment_bubble_content_intent";
+ /** Whether the row of bubble circles are anchored to the top or bottom of the screen. */
+ private static final String ENABLE_BUBBLES_AT_TOP = "experiment_enable_top_bubbles";
+ /** Flag to position the header below the activity view */
+ private static final String ENABLE_BUBBLE_FOOTER = "experiment_enable_bubble_footer";
+
private final Context mContext;
private final NotificationEntryManager mNotificationEntryManager;
private final IActivityTaskManager mActivityTaskManager;
@@ -548,6 +553,22 @@
ENABLE_BUBBLES, 1) != 0;
}
+ /**
+ * Whether bubbles should be positioned at the top of the screen or not.
+ */
+ public static boolean showBubblesAtTop(Context context) {
+ return Settings.Secure.getInt(context.getContentResolver(),
+ ENABLE_BUBBLES_AT_TOP, 0) != 0;
+ }
+
+ /**
+ * Whether the bubble chrome should display as a footer or not (in which case it's a header).
+ */
+ public static boolean useFooter(Context context) {
+ return Settings.Secure.getInt(context.getContentResolver(),
+ ENABLE_BUBBLE_FOOTER, 0) != 0;
+ }
+
/** PinnedStackListener that dispatches IME visibility updates to the stack. */
private class BubblesImeListener extends IPinnedStackListener.Stub {