Skip to content

Most visited

Recently visited

navigation

通知样式

Android Wear 支持通知样式以提升穿戴式设备的用户体验。最常用的通知样式包括:

下文介绍如何将 MESSAGING_STYLE BIG_TEXT_STYLE 添加到通知中。要了解如何加入其他通知样式,请参阅 Wear 通知示例。

构建 MessagingStyle 通知

如果您有一个聊天消息传递应用,您的通知应使用 NotificationCompat.MessagingStyle,它是 Android 7.0 中的新增样式。Wear 使用 MessagingStyle 通知(请参阅 addMessage())中包含的聊天消息,以在扩展通知中提供丰富的类似聊天应用的体验。

MessagingStyle 扩展通知要求配对的 Android 手机上至少安装了 Android Wear 应用 1.5.0.2861804 版本。

智能回复

alt_text

Wear 针对 MessagingStyle 通知引入智能回复。智能回复在扩展通知和 RemoteInput 中为用户提供与情境相关的可触摸选项。这些选项扩充了开发者使用 setChoices() 函数在 RemoteInput 中提供的固定选项列表。

智能回复让用户可通过快速(只需点按一下)、礼貌(无需大声说话)、私密(用户接收的消息绝不会离开手表)且可靠(无需连接互联网)的方式响应聊天消息。

智能回复响应由手表上的机器学习模型完全通过 MessagingStyle 通知提供的上下文生成。生成智能回复响应无需向 Google 服务器发送用户通知数据。

要为通知操作启用智能回复,您需要执行以下操作:

  1. 使用 NotificationCompat.MessagingStyle
  2. 为通知操作调用函数 setAllowGeneratedReplies(true)
  3. 确保通知操作具有一个 RemoteInput(响应所在的位置)。

以下示例说明如何使用智能回复响应创建 MessagingStyle 通知。

// Create an intent for the reply action
Intent replyIntent = new Intent(this, ReplyActivity.class);
PendingIntent replyPendingIntent =
   PendingIntent.getActivity(this, 0, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT);

// Create the reply action and add the remote input
NotificationCompat.Action action =
   new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon,
   getString(R.string.label), replyPendingIntent)
  .addRemoteInput(remoteInput)
   // 1) allow generated replies
  .setAllowGeneratedReplies(true)
  .build();

Notification noti = new NotificationCompat.Builder()
    .setContentTitle(messages.length + " new messages with " + sender.toString())
    .setContentText(subject)
    .setSmallIcon(R.drawable.new_message)
    .setLargeIcon(aBitmap)
    // 2) set the style to MessagingStyle
    .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
    .addMessage(messages[0].getText(), messages[0].getTime(), messages[0].getSender())
    .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getSender()))
    // 3) add an action with RemoteInput
    .extend(new WearableExtender().addAction(action)).build();

向 MessagingStyle 通知添加图像

您只需设置相应的 MIME 类型并将 URI 置于 NotificationCompat.MessagingStyle.Message.setData() 函数中的图像,即可向通知消息添加图像。

以下代码段可设置通知中图像类型的数据:

NotificationCompat.MessagingStyle.Message message = new Message("sticker", 1, "Jeff")
   .setData("image/png", stickerUri);

NotificationCompat notification = new NotificationCompat.Builder()
    .setStyle(new NotificationComapt.MessagingStyle("Me")
    .addMessage(message)
    .build());

在上述代码段中,变量 stickerUri 是一个 Uri,其指向一个可公开访问的位置,如此处所述。

构建 BigTextStyle 通知

您可以通过使用 BIG_TEXT_STYLE 将扩展文本内容插入通知中。在手持式设备上,用户可以通过展开通知查看扩展内容。在穿戴式设备上,使用 BigTextStyle 时扩展内容默认可见。

alt_text

要向通知添加扩展内容,可在 NotificationCompat.Builder 对象上调用 setStyle(),向其传递一个 BigTextStyleInboxStyle 的实例。

例如,以下代码将一个 NotificationCompat.BigTextStyle 实例添加到 Event 通知,以包含完整的 Event 说明(其包含的文本超出了为 setContentText() 提供的空间)。

// Specify the 'big view' content to display the long
// event description that may not fit the normal content text.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(eventDescription);

NotificationCompat.Builder notificationBuilder =
    new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_event)
        .setLargeIcon(BitmapFactory.decodeResource(
                getResources(), R.drawable.notif_background))
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent)
        .addAction(R.drawable.ic_map,
                getString(R.string.map), mapPendingIntent)
        .setStyle(bigStyle);

请注意,您可以使用 setLargeIcon() 函数向任意通知添加一个大图标图像。不过,这些图标在穿戴式设备上显示为大的背景图片,在为适应穿戴式设备屏幕而放大后显示效果不佳。要向通知添加穿戴式设备专属背景图片,请参阅为通知添加穿戴式设备专属功能。如需了解有关设计具有大图像的通知的详细信息,请参阅 Android Wear 的设计原则

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)