summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-11-13 22:35:06 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-11-13 22:35:06 +0000
commit3066a0bfd12c218fa5f9527c5bea157e554d5f91 (patch)
treea971beed7774ce05c78711595d7241ad46e6c21b
parent5fa30dbc2524b2816a3b21e213b7d011f493beff (diff)
parent03a9628ce642bcc2c3c64aeb90b98979d6747f9b (diff)
Merge "Added voicemail.settings to packages.mk."
-rw-r--r--g3doc/INTEGRATION.md67
-rw-r--r--packages.mk1
2 files changed, 68 insertions, 0 deletions
diff --git a/g3doc/INTEGRATION.md b/g3doc/INTEGRATION.md
new file mode 100644
index 000000000..58ece7dc1
--- /dev/null
+++ b/g3doc/INTEGRATION.md
@@ -0,0 +1,67 @@
+# Floating Bubble Integration
+
+Author: keyboardr@
+
+Last Updated: 2017-06-06
+
+Floating bubbles provide a lightweight means of providing interactive UI while
+the user is away from the app. This document details the steps necessary to
+integrate these bubbles into your app.
+
+[TOC]
+
+![Floating bubble](images/bubble_collapsed.png){height=400}
+
+## Ensure Bubbles can be shown
+
+Add the `android.permission.SYSTEM_ALERT_WINDOW` permission to your manifest.
+Before you show the bubble, call `Bubble.canShowBubbles(Context)` to see if the
+user has granted you permission. If not, you can start an Activity from
+`Bubble.getRequestPermissionIntent(Context)` to navigate the user to the system
+settings to enable drawing over other apps. This is more than just a simple
+runtime permission; the user must explicitly allow you to draw over other apps
+via this system setting. System apps may have this allowed by default, but be
+sure to test.
+
+## Create your initial `BubbleInfo`
+
+Use `BubbleInfo.builder()` to populate a `BubbleInfo` with your color, main
+icon, main Intent (which should navigate back to your app), starting Y position,
+and a list of `Actions` to put in the drawer. Each `Action` will define its
+icon, user-displayable name (used for content description), Intent to perform
+when clicked, whether it is enabled (optional, default true), and whether it is
+checked (optional, default false).
+
+![Floating bubble expanded](images/bubble_expanded.png){height=400}
+
+## Create, show, and hide the Bubble
+
+Create the bubble using `Bubble.createBubble(Context, BubbleInfo)`. The `show()`
+method is safe to call at any time. If the Bubble is already showing, it is a
+no-op. `hide()` may also be called at any time and will collapse the drawer
+before hiding if already open. While `show()` will show immediately, `hide()`
+may need to wait for other operations or animations before the bubble is hidden.
+It is unlikely you will need to keep track of this, however. The bubble will be
+hidden at its next opportunity, and `hide()` will not block.
+
+![Floating bubble with state](images/bubble_state.png){height=400}
+
+## Update the Bubble's state
+
+Call `Bubble.setBubbleInfo(BubbleInfo)` to update all displayed state.
+`BubbleInfo`s are immutable, so to make a new one using an existing
+`BubbleInfo`, use `BubbleInfo.from(BubbleInfo)` to get a `Builder` with
+prepopulated info. If only the `Action` state has changed, it is more efficient
+to just call `Bubble.updateActions(List<Action>)`
+
+![Floating bubble with text](images/bubble_text.png){height=400}
+
+## Show text
+
+To temporarily replace the icon with a textual message, call
+`Bubble.showText(CharSequence)`. The text will be displayed for several seconds
+before transitioning back to the primary icon. The drawer will be closed if open
+and cannot be reopened while the text is displayed. Any calls to `hide()` will
+be deferred until after the text is done being displayed, so if you wish to show
+an ending message of some sort you may call `hide()` immediately after
+`showText(CharSequence)`.
diff --git a/packages.mk b/packages.mk
index 2cce8c6ef..223e40d2e 100644
--- a/packages.mk
+++ b/packages.mk
@@ -53,6 +53,7 @@ LOCAL_AAPT_FLAGS := \
com.android.dialer.theme \
com.android.dialer.util \
com.android.dialer.voicemail.listui \
+ com.android.dialer.voicemail.settings \
com.android.dialer.voicemailstatus \
com.android.dialer.widget \
com.android.incallui \