138 lines
6.3 KiB
Plaintext
138 lines
6.3 KiB
Plaintext
page.title=Stacking Notifications
|
|
|
|
@jd:body
|
|
|
|
<img src="{@docRoot}wear/images/11_bundles_B.png" height="200" width="169" style="float:right;margin:0 0 20px 40px" alt="" />
|
|
<img src="{@docRoot}wear/images/11_bundles_A.png" height="200" width="169" style="float:right;margin:0 0 20px 40px" alt="" />
|
|
|
|
<p>When creating notifications for a handheld device, you should always aggregate similar
|
|
notifications into a single summary notification. For example, if your app creates notifications
|
|
for received messages, you should not show more than one notification
|
|
on a handheld device—when more than one is message is received, use a single notification
|
|
to provide a summary such as "2 new messages."</p>
|
|
|
|
<p>However, a summary notification is less useful on an Android wearable because users
|
|
are not able to read details from each message on the wearable (they must open your app on the
|
|
handheld to view more information). So for the wearable device, you should
|
|
group all the notifications together in a stack. The stack of notifications appears as a single
|
|
card, which users can expand to view the details from each notification separately. The new
|
|
<a href="{@docRoot}reference/android/support/wearable/notifications/WearableNotificationOptions.Builder.html#setGroup(java.lang.String, int)">
|
|
<code>setGroup()</code></a> method makes this possible while allowing you to still provide
|
|
only one summary notification on the handheld device.</p>
|
|
|
|
<p>For details about designing notification stacks, see the
|
|
<a href="{@docRoot}wear/design/index.html#NotificationStacks">Design Principles of Android
|
|
Wear</a>.</p>
|
|
|
|
|
|
<h2 id="AddGroup">Add Each Notification to a Group</h2>
|
|
|
|
<p>To create a stack, call <a
|
|
href="{@docRoot}reference/android/support/wearable/notifications/WearableNotificationOptions.Builder.html#setGroup(java.lang.String, int)">
|
|
<code>setGroup()</code></a> for each notification you want in the stack and specify a
|
|
group key. Then call <a href="{@docRoot}reference/android/support/wearable/app/NotificationManagerCompat.html#notify(int, android.app.Notification)"><code>notify()</code></a> to send it to the wearable.</p>
|
|
|
|
<pre style="clear:right">
|
|
final static String GROUP_KEY_EMAILS = "group_key_emails";
|
|
|
|
// Build the notification
|
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext)
|
|
.setContentTitle("New mail from " + sender1)
|
|
.setContentText(subject1)
|
|
.setSmallIcon(R.drawable.new_mail);
|
|
|
|
// Set the group with WearableNotificationOptions.Builder and apply to the notification
|
|
Notification notif1 = new WearableNotificationOptions.Builder()
|
|
.setGroup(GROUP_KEY_EMAILS)
|
|
.build()
|
|
.applyTo(builder)
|
|
.build();
|
|
|
|
// Issue the notification
|
|
NotificationManagerCompat notificationManager =
|
|
NotificationManagerCompat.from(this);
|
|
notificationManager.notify(notificationId1, notif);
|
|
</pre>
|
|
|
|
<p>Later on, when you create another notification, specify
|
|
the same group key. When you call
|
|
<a href="{@docRoot}reference/android/support/v4/app/NotificationManagerCompat.html#notify(int, android.app.Notification)"><code>notify()</code></a>,
|
|
this notification appears in the same stack as the previous notification,
|
|
instead of as a new card:</p>
|
|
|
|
<pre style="clear:right">
|
|
builder = new NotificationCompat.Builder(mContext)
|
|
.setContentTitle("New mail from " + sender2)
|
|
.setContentText(subject2)
|
|
.setSmallIcon(R.drawable.new_mail);
|
|
|
|
// Use the same group as the previous notification
|
|
Notification notif2 = new WearableNotificationOptions.Builder()
|
|
.setGroup(GROUP_KEY_EMAILS)
|
|
.build()
|
|
.applyTo(builder)
|
|
.build();
|
|
|
|
notificationManager.notify(notificationId2, notif);
|
|
</pre>
|
|
|
|
<p>By default, notifications appear in the order in which you added them, with the most recent
|
|
notification visible at the top. You can define a specific position in the group
|
|
by passing an order position as the second parameter for <a
|
|
href="{@docRoot}reference/android/support/wearable/notifications/WearableNotificationOptions.Builder.html#setGroup(java.lang.String, int)">
|
|
<code>setGroup()</code></a>.</p>
|
|
|
|
|
|
<h2 id="AddSummary">Add a Summary Notification</h2>
|
|
|
|
<img src="{@docRoot}wear/images/notif_summary_framed.png" height="242" width="330" style="float:right;margin:0 0 20px 40px" alt="" />
|
|
|
|
<p>It's important that you still provide a summary notification that appears on handheld devices.
|
|
So in addition to adding each unique notification to the same stack group, also add a summary
|
|
notification, but set its order position to be <a
|
|
href="{@docRoot}reference/android/support/wearable/notifications/WearableNotificationsOptions.html#GROUP_ORDER_SUMMARY"><code>GROUP_ORDER_SUMMARY</code></a>.</p>
|
|
|
|
<p>This notification does not appear in your stack of notifications on the wearable, but
|
|
appears as the only notification on the handheld device.</p>
|
|
|
|
<pre style="clear:right">
|
|
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),
|
|
R.drawable.ic_large_icon);
|
|
|
|
// Create an InboxStyle notification
|
|
builder = new NotificationCompat.Builder(this)
|
|
.setContentTitle("2 new messages")
|
|
.setSmallIcon(R.drawable.ic_small_icon)
|
|
.setLargeIcon(largeIcon)
|
|
.setStyle(new NotificationCompat.InboxStyle()
|
|
.addLine("Alex Faaborg Check this out")
|
|
.addLine("Jeff Chang Launch Party")
|
|
.setBigContentTitle("2 new messages")
|
|
.setSummaryText("johndoe@gmail.com"));
|
|
|
|
// Specify the notification to be the group summary
|
|
Notification summaryNotification = new WearableNotificationOptions.Builder()
|
|
.setGroupSummary(GROUP_KEY_EMAILS)
|
|
.build()
|
|
.applyTo(builder)
|
|
.build();
|
|
|
|
notificationManager.notify(notificationId3, summaryNotification);
|
|
</pre>
|
|
|
|
<p>
|
|
This notification uses {@link android.support.v4.app.NotificationCompat.InboxStyle},
|
|
which gives you an easy way to create notifications for email or messaging apps.
|
|
You can use this style, another one defined in {@link android.support.v4.app.NotificationCompat},
|
|
or no style for the summary notification.
|
|
</p>
|
|
|
|
<p class="note"><b>Tip:</b>
|
|
To style the text like in the example screenshot, see
|
|
<a href="{@docRoot}guide/topics/resources/string-resource.html#StylingWithHTML">Styling
|
|
with HTML markup</a> and
|
|
<a href="{@docRoot}guide/topics/resources/string-resource.html#StylingWithSpannables">Styling
|
|
with Spannables</a>.
|
|
</p>
|
|
</body>
|
|
</html> |