summaryrefslogtreecommitdiffstats
path: root/docs/html
diff options
context:
space:
mode:
authorScott Rowe <scottrowe@google.com>2014-10-06 11:49:54 -0700
committerScott Rowe <scottrowe@google.com>2014-10-16 23:48:25 -0700
commitdd88668392839509c812a544b1132185b3825b69 (patch)
tree4f7d55e9061d0488aaccb5f39338c614a071c560 /docs/html
parent4deed3ecc3b47d520ca6084f2fa6ad7a9dc8c018 (diff)
downloadframeworks_base-dd88668392839509c812a544b1132185b3825b69.zip
frameworks_base-dd88668392839509c812a544b1132185b3825b69.tar.gz
frameworks_base-dd88668392839509c812a544b1132185b3825b69.tar.bz2
docs: Notifications changes for L
Change-Id: I53c744734358401adefbcffd5ce5a3676d6d955a
Diffstat (limited to 'docs/html')
-rw-r--r--docs/html/guide/topics/ui/notifiers/notifications.jd381
-rw-r--r--docs/html/images/ui/notifications/heads-up.pngbin0 -> 84810 bytes
-rw-r--r--docs/html/images/ui/notifications/notification_area.pngbin0 -> 37432 bytes
-rwxr-xr-xdocs/html/images/ui/notifications/notification_drawer.pngbin0 -> 643887 bytes
4 files changed, 173 insertions, 208 deletions
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index 59c2269..e47c77e 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -5,12 +5,7 @@ page.title=Notifications
<div id="qv">
<h2>In this document</h2>
<ol>
- <li><a href="#NotificationUI">Notification Display Elements</a>
- <ol>
- <li><a href="#NormalNotify">Normal view</a></li>
- <li><a href="#BigNotify">Big view</a></li>
- </ol>
- </li>
+ <li><a href="#Design">Design Considerations</a></li>
<li><a href="#CreateNotification">Creating a Notification</a>
<ol>
<li><a href="#Required">Required notification contents</a></li>
@@ -18,7 +13,7 @@ page.title=Notifications
<li><a href="#Actions">Notification actions</a></li>
<li><a href="#Priority">Notification priority</a></li>
<li><a href="#SimpleNotification">Creating a simple notification</a></li>
- <li><a href="#ApplyStyle">Applying a big view style to a notification</a></li>
+ <li><a href="#ApplyStyle">Applying an expanded layout to a notification</a></li>
<li><a href="#Compatibility">Handling compatibility</a></li>
</ol>
</li>
@@ -40,6 +35,13 @@ page.title=Notifications
<li><a href="#ActivityIndicator">Displaying a continuing activity indicator</a></li>
</ol>
</li>
+ <li><a href="#metadata">Notification Metadata</a></li>
+ <li><a href="#Heads-up">Heads-up Notifications</a></li>
+ <li><a href="#lockscreenNotification">Lock Screen Notifications</a></li>
+ <ol>
+ <li><a href="#visibility">Setting Visibility</a></li>
+ <li><a href="#controllingMedia">Controlling Media Playback on the Lock Screen</a></li>
+ </ol>
<li><a href="#CustomNotification">Custom Notification Layouts</a></li>
</ol>
@@ -72,167 +74,41 @@ page.title=Notifications
</p>
<img
id="figure1"
- src="{@docRoot}images/ui/notifications/iconic_notification.png"
- height="120" alt="" />
+ src="{@docRoot}images/ui/notifications/notification_area.png"
+ height="" alt="" />
<p class="img-caption">
<strong>Figure 1.</strong> Notifications in the notification area.
</p>
-<img id="figure2" src="{@docRoot}images/ui/notifications/normal_notification.png"
- height="293" alt="" />
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png"
+ width="280px" alt="" />
<p class="img-caption">
<strong>Figure 2.</strong> Notifications in the notification drawer.
</p>
-<div class="note design">
- <p>
- <strong>Notification Design</strong>
- </p>
- <p>
- Notifications, as an important part of the Android UI, have their own design guidelines. To
- learn how to design notifications and their interactions, read the Android Design Guide
- <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> topic.
- </p>
-</div>
-<p class="note">
- <strong>Note:</strong> Except where noted, this guide refers to the
- {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} class
- in the version 4 <a href="{@docRoot}tools/support-library/index.html">Support Library</a>.
- The class {@link android.app.Notification.Builder Notification.Builder} was added in Android
- 3.0.
-</p>
-<!-- ------------------------------------------------------------------------------------------ -->
-<!-- ------------------------------------------------------------------------------------------ -->
-<h2 id="NotificationUI">Notification Display Elements</h2>
-<p>
- Notifications in the notification drawer can appear in one of two visual styles, depending on
- the version and the state of the drawer:
-</p>
-<dl>
- <dt>
- Normal view
- </dt>
- <dd>
- The standard view of the notifications in the notification drawer.
- </dd>
- <dt>
- Big view
- </dt>
- <dd>
- A large view that's visible when the notification is expanded. Big view is part of the
- expanded notification feature available as of Android 4.1.
- </dd>
-</dl>
-<p>
- These styles are described in the following sections.
-</p>
-<!-- ------------------------------------------------------------------------------------------ -->
-<h3 id="NormalNotify">Normal view</h3>
-<p>
- A notification in normal view appears in an area that's up to 64 dp tall. Even if you create a
- notification with a big view style, it will appear in normal view until it's expanded. This
- is an example of a normal view:
-</p>
-<img
- src="{@docRoot}images/ui/notifications/normal_notification_callouts.png"
- alt=""
- height="153"
- id="figure3" />
-<p class="img-caption">
- <strong>Figure 3.</strong> Notification in normal view.
-</p>
-<p>
- The callouts in the illustration refer to the following:
-</p>
-<ol>
- <li>Content title</li>
- <li>Large icon</li>
- <li>Content text</li>
- <li>Content info</li>
- <li>Small icon</li>
- <li>
- Time that the notification was issued. You can set an explicit value with
- {@link android.support.v4.app.NotificationCompat.Builder#setWhen setWhen()}; if you don't
- it defaults to the time that the system received the notification.
- </li>
-</ol>
-<!-- ------------------------------------------------------------------------------------------ -->
-<h3 id="BigNotify">Big view</h3>
-<p>
- A notification's big view appears only when the notification is expanded, which happens when the
- notification is at the top of the notification drawer, or when the user expands the
- notification with a gesture. Expanded notifications are available starting with Android 4.1.
-</p>
-<p>
- The following screenshot shows an inbox-style notification:
-</p>
-<img src="{@docRoot}images/ui/notifications/bigpicture_notification_callouts.png"
- alt=""
- height="240"
- id="figure4" />
-<p class="img-caption">
- <strong>Figure 4.</strong> Big view notification.
-</p>
-<p>
- Notice that the big view shares most of its visual elements with the normal view. The
- only difference is callout number 7, the details area. Each big view style sets this area in
- a different way. The available styles are:
-</p>
-<dl>
- <dt>
- Big picture style
- </dt>
- <dd>
- The details area contains a bitmap up to 256 dp tall in its detail section.
- </dd>
- <dt>
- Big text style
- </dt>
- <dd>
- Displays a large text block in the details section.
- </dd>
- <dt>
- Inbox style
- </dt>
- <dd>
- Displays lines of text in the details section.
- </dd>
-</dl>
-<p>
- All of the big view styles also have the following content options that aren't
- available in normal view:
-</p>
-<dl>
- <dt>
- Big content title
- </dt>
- <dd>
- Allows you to override the normal view's content title with a title that appears only in
- the expanded view.
- </dd>
- <dt>
- Summary text
- </dt>
- <dd>
- Allows you to add a line of text below the details area.
- </dd>
-</dl>
-<p>
- Applying a big view style to a notification is described in the section
- <a href="#ApplyStyle">Applying a big view style to a notification</a>.
-</p>
-<!-- ------------------------------------------------------------------------------------------ -->
-<!-- ------------------------------------------------------------------------------------------ -->
+
+<p class="note"><strong>Note:</strong> Except where noted, this guide refers to the
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} class
+in the version 4 <a href="{@docRoot}tools/support-library/index.html">Support Library</a>.
+The class {@link android.app.Notification.Builder Notification.Builder} was added in Android
+3.0 (API level 11).</p>
+
+<h2 id="Design">Design Considerations</h2>
+
+<p>Notifications, as an important part of the Android user interface, have their own design guidelines.
+The material design changes introduced in Android 5.0 (API level 21) are of particular
+importance, and you should review the <a href="{@docRoot}training/material/index.html">Material Design</a>
+training for more information. To learn how to design notifications and their interactions, read the
+<a href="{@docRoot}design/patterns/notifications.html">Notifications</a> design guide.</p>
+
<h2 id="CreateNotification">Creating a Notification</h2>
-<p>
- You specify the UI information and actions for a notification in a
- {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} object.
- To create the notification itself, you call
- {@link android.support.v4.app.NotificationCompat.Builder#build
- NotificationCompat.Builder.build()}, which returns a {@link android.app.Notification} object
- containing your specifications.
- To issue the notification, you pass the {@link android.app.Notification} object to the system
- by calling {@link android.app.NotificationManager#notify NotificationManager.notify()}.
-</p>
-<!-- ------------------------------------------------------------------------------------------ -->
+
+<p>You specify the UI information and actions for a notification in a
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} object.
+To create the notification itself, you call
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},
+which returns a {@link android.app.Notification} object containing your specifications. To issue the
+notification, you pass the {@link android.app.Notification} object to the system by calling
+{@link android.app.NotificationManager#notify NotificationManager.notify()}.</p>
+
<h3 id="Required">Required notification contents</h3>
<p>
A {@link android.app.Notification} object <em>must</em> contain the following:
@@ -275,7 +151,8 @@ page.title=Notifications
</p>
<p>
Inside a {@link android.app.Notification}, the action itself is defined by a
- {@link android.app.PendingIntent} containing an {@link android.content.Intent} that starts
+ {@link android.app.PendingIntent} containing an
+ {@link android.content.Intent} that starts
an {@link android.app.Activity} in your application. To associate the
{@link android.app.PendingIntent} with a gesture, call the appropriate method of
{@link android.support.v4.app.NotificationCompat.Builder}. For example, if you want to start
@@ -351,12 +228,12 @@ mNotificationManager.notify(mId, mBuilder.build());
</pre>
<p>That's it. Your user has now been notified.</p>
<!-- ------------------------------------------------------------------------------------------ -->
-<h3 id="ApplyStyle">Applying a big view style to a notification</h3>
+<h3 id="ApplyStyle">Applying an expanded layout to a notification</h3>
<p>
- To have a notification appear in a big view when it's expanded, first create a
+ To have a notification appear in an expanded view, first create a
{@link android.support.v4.app.NotificationCompat.Builder} object with the normal view options
you want. Next, call {@link android.support.v4.app.NotificationCompat.Builder#setStyle
- Builder.setStyle()} with a big view style object as its argument.
+ Builder.setStyle()} with an expanded layout object as its argument.
</p>
<p>
Remember that expanded notifications are not available on platforms prior to Android 4.1. To
@@ -365,7 +242,7 @@ mNotificationManager.notify(mId, mBuilder.build());
</p>
<p>
For example, the following code snippet demonstrates how to alter the notification created
- in the previous snippet to use the Inbox big view style:
+ in the previous snippet to use the expanded layout:
</p>
<pre>
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
@@ -375,20 +252,22 @@ NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
NotificationCompat.InboxStyle inboxStyle =
new NotificationCompat.InboxStyle();
String[] events = new String[6];
-// Sets a title for the Inbox style big view
+// Sets a title for the Inbox in expanded layout
inboxStyle.setBigContentTitle("Event tracker details:");
...
-// Moves events into the big view
+// Moves events into the expanded layout
for (int i=0; i &lt; events.length; i++) {
inboxStyle.addLine(events[i]);
}
-// Moves the big view style object into the notification object.
+// Moves the expanded layout object into the notification object.
mBuilder.setStyle(inBoxStyle);
...
// Issue the notification here.
</pre>
+
<h3 id="Compatibility">Handling compatibility</h3>
+
<p>
Not all notification features are available for a particular version, even though
the methods to set them are in the support library class
@@ -419,7 +298,8 @@ mBuilder.setStyle(inBoxStyle);
<li>
Ensure that all users can get to the functionality in the {@link android.app.Activity},
by having it start when users click the notification. To do this,
- create a {@link android.app.PendingIntent} for the {@link android.app.Activity}. Call
+ create a {@link android.app.PendingIntent}
+ for the {@link android.app.Activity}. Call
{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
setContentIntent()} to add the {@link android.app.PendingIntent} to the notification.
</li>
@@ -429,6 +309,8 @@ mBuilder.setStyle(inBoxStyle);
that starts when users click the notification.
</li>
</ol>
+
+
<!-- ------------------------------------------------------------------------------------------ -->
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="Managing">Managing Notifications</h2>
@@ -444,7 +326,7 @@ mBuilder.setStyle(inBoxStyle);
<a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design guide.
</p>
<p class="note">
- <strong>Note:</strong> This Gmail feature requires the "inbox" big view style, which is
+ <strong>Note:</strong> This Gmail feature requires the "inbox" expanded layout, which is
part of the expanded notification feature available starting in Android 4.1.
</p>
<p>
@@ -453,8 +335,8 @@ mBuilder.setStyle(inBoxStyle);
<h3 id="Updating">Updating notifications</h3>
<p>
To set up a notification so it can be updated, issue it with a notification ID by
- calling {@link android.app.NotificationManager#notify(int, Notification)
- NotificationManager.notify(ID, notification)}. To update this notification once you've issued
+ calling {@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.
+ To update this notification once you've issued
it, update or create a {@link android.support.v4.app.NotificationCompat.Builder} object,
build a {@link android.app.Notification} object from it, and issue the
{@link android.app.Notification} with the same ID you used previously. If
@@ -487,17 +369,7 @@ numMessages = 0;
mNotifyBuilder.build());
...
</pre>
-<p>
- This produces a notification that looks like this:
-</p>
-<img
- id="figure5"
- src="{@docRoot}images/ui/notifications/updated_notification.png"
- alt=""
- height="118"/>
-<p class="img-caption">
- <strong>Figure 5.</strong> Updated notification displayed in the notification drawer.
-</p>
+
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="Removing">Removing notifications</h3>
<p>
@@ -899,18 +771,7 @@ new Thread(
// Starts the thread by calling the run() method in its Runnable
).start();
</pre>
-<p>
- The resulting notifications are shown in figure 6. On the left side is a snapshot of the
- notification during the operation; on the right side is a snapshot of it after the operation
- has finished.
-</p>
-<img
- id="figure6"
- src="{@docRoot}images/ui/notifications/progress_bar_summary.png"
- height="84"
- alt="" />
-<p class="img-caption">
-<strong>Figure 6.</strong> The progress bar during and after the operation.</p>
+
<!-- ------------------------------------------------------------------------------------------ -->
<h3 id="ActivityIndicator">Displaying a continuing activity indicator</h3>
<p>
@@ -946,19 +807,123 @@ mBuilder.setProgress(0, 0, true);
// Issues the notification
mNotifyManager.notify(0, mBuilder.build());
</pre>
-<p>
- The resulting indicator is shown in figure 7:
-</p>
-<img
- id="figure7"
- src="{@docRoot}images/ui/notifications/activity_indicator.png"
- height="99"
- alt="" />
-<p class="img-caption"><strong>Figure 7.</strong> An ongoing activity indicator.</p>
-<!-- ------------------------------------------------------------------------------------------ -->
-<!-- ------------------------------------------------------------------------------------------ -->
-<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="metadata">Notification Metadata</h2>
+
+<p>Notifications may be sorted according to metadata that you assign with the
+following {@link android.support.v4.app.NotificationCompat.Builder} methods:</p>
+
+<ul>
+ <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}
+ tells the system how to handle your app notifications when the device is in Priority mode
+ (for example, if your notification represents an incoming call, instant message, or alarm).</li>
+ <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} causes
+ notifications with the priority field set to {@code PRIORITY_MAX} or {@code PRIORITY_HIGH} to
+ appear in a small floating window if the notification also has sound or vibration.</li>
+ <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}
+ allows you to add a list of people to a notification. Your app can use this to signal to the
+ system that it should group together notifications from the specified people, or rank notifications
+ from these people as being more important.</li>
+</ul>
+
+<div class="figure" style="width:230px">
+ <img src="{@docRoot}images/ui/notifications/heads-up.png"
+ alt="" width="" height="" id="figure3" />
+ <p class="img-caption">
+ <strong>Figure 3.</strong> Fullscreen activity showing a heads-up notification
+ </p>
+</div>
+
+<h2 id="Heads-up">Heads-up Notifications</h2>
+
+<p>With Android 5.0 (API level 21), notifications can appear in a small floating window
+(also called a <em>heads-up notification</em>) when the device is active
+(that is, the device is unlocked and its screen is on). These notifications
+appear similar to the compact form of your notification, except that the
+heads-up notification also shows action buttons. Users can act on, or dismiss,
+a heads-up notification without leaving the current app.</p>
+
+<p>Examples of conditions that may trigger heads-up notifications include:</p>
+
+<ul>
+ <li>The user's activity is in fullscreen mode (the app uses
+{@link android.app.Notification#fullScreenIntent}), or</li>
+ <li>The notification has high priority and uses ringtones or
+ vibrations</li>
+</ul>
+
+<h2 id="lockscreenNotification">Lock Screen Notifications</h2>
+
+<p>With the release of Android 5.0 (API level 21), notifications may now appear on the lock
+screen. Your app can use this functionality to provide media playback controls and other common
+actions. Users can choose via Settings whether to display notifications on the lock screen, and
+you can designate whether a notification from your app is visible on the lock screen.</p>
+
+<h3 id="visibility">Setting Visibility</h3>
+
+<p>Your app can control the level of detail visible in notifications displayed on a secure
+lock screen. You call {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}
+and specify one of the following values:</p>
+
+<ul>
+ <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} shows the notification's
+ full content.</li>
+ <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET} doesn't show any part of
+ this notification on the lock screen.</li>
+ <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} shows basic information,
+ such as the notification's icon and the content title, but hides the notification's full content.</li>
+</ul>
+
+<p>When {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} is set, you can also
+provide an alternate version of the notification content which hides certain details. For example,
+an SMS app might display a notification that shows <em>You have 3 new text messages</em>, but hides the
+message contents and senders. To provide this alternative notification, first create the replacement
+notification using {@link android.support.v4.app.NotificationCompat.Builder}. When you create the
+private notification object, attach the replacement notification to it through the
+{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+method.</p>
+
+<h3 id="controllingMedia">Controlling Media Playback on the Lock Screen</h3>
+
+<p>In Android 5.0 (API level 21) the lock screen no longer displays media controls
+based on the {@link android.media.RemoteControlClient}, which is now deprecated. Instead, use the
+{@link android.app.Notification.MediaStyle} template with the
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+method, which converts actions into clickable icons.</p>
+
+<p class="note"><strong>Note:</strong> The template and the {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+method are not included in the support library, so these features run in Android 5.0 and higher
+only.</p>
+
+<p>To display media playback controls on the lock screen in Android 5.0, set the visibility
+to {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, as described above. Then add
+the actions and set the {@link android.app.Notification.MediaStyle} template, as described in the
+following sample code:</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+ // Show controls on lock screen even when user hides sensitive content.
+ .setVisibility(Notification.VISIBILITY_PUBLIC)
+ .setSmallIcon(R.drawable.ic_stat_player)
+ // Add media control buttons that invoke intents in your media service
+ .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+ .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1
+ .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2
+ // Apply the media style template
+ .setStyle(new Notification.MediaStyle()
+ .setShowActionsInCompactView(1 /* #1: pause button */)
+ .setMediaSession(mMediaSession.getSessionToken())
+ .setContentTitle("Wonderful music")
+ .setContentText("My Awesome Band")
+ .setLargeIcon(albumArtBitmap)
+ .build();
+</pre>
+
+<p class="note"><strong>Note:</strong> The deprecation of {@link android.media.RemoteControlClient}
+has further implications for controlling media. See
+<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Media Playback Control</a>
+for more information about the new APIs for managing the media session and controlling playback.</p>
+
<!-- ------------------------------------------------------------------------------------------ -->
<h2 id="CustomNotification">Custom Notification Layouts</h2>
diff --git a/docs/html/images/ui/notifications/heads-up.png b/docs/html/images/ui/notifications/heads-up.png
new file mode 100644
index 0000000..42fbbcd
--- /dev/null
+++ b/docs/html/images/ui/notifications/heads-up.png
Binary files differ
diff --git a/docs/html/images/ui/notifications/notification_area.png b/docs/html/images/ui/notifications/notification_area.png
new file mode 100644
index 0000000..5836300
--- /dev/null
+++ b/docs/html/images/ui/notifications/notification_area.png
Binary files differ
diff --git a/docs/html/images/ui/notifications/notification_drawer.png b/docs/html/images/ui/notifications/notification_drawer.png
new file mode 100755
index 0000000..30da8fb
--- /dev/null
+++ b/docs/html/images/ui/notifications/notification_drawer.png
Binary files differ