一个Android的手持设备(平板或手机)与AndroidWear设备连接后,手持设备会自动将通知发送到穿戴设备上。通知会以卡片的形式显示在穿戴设备的ContextStream上。然而,为了给用户最好的体验,开发者应该添加穿戴设备特定的功能到通知上。从以下几点来看下如何同时为穿戴设备与手持设备创建通知。

1. 创建通知

2. 支持语音输入的通知

3. 添加多页面到通知

4. 堆叠通知

创建通知

使用NotificationCompat.Builder来创建一个可以往手持设备与穿戴设备同时发出的通知。当使用这个类创建的通知,系统会自动的显示通知在不同的平台。使用NotificationCompat.Builder 类需要在 mobile 的 build.gradle文件中加上一行代码来引用 v4包,如下所示。

compile 'com.android.support:support-v4:21.0.3'

创建、显示的方式与之前Android中的方式无异,具体代码如下:

NotificationCompat.Builder builder = new   NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentTitle("标题");
builder.setContentText("内容");
Intent i = new Intent();
i.setClass(this, ReplayActivity.class);
PendingIntent intent =      PendingIntent.getActivity(MainActivity.this, 0, i,   PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(intent);
NotificationManagerCompat mgr = NotificationManagerCompat.from(this);
mgr.notify((int)(Math.random()*1000), builder.build());

当通知显示在手持设备上时,同时也会显示在穿戴设备上。在穿戴设备上向右滑动的时候,就会取消通知显示,同时,在手持设备上也会取消通知显示。在穿戴设备上左划,就会显示 ‘Open on phone’,点击后,则手持设备端会打开PendingIntent 所对应的组件,如下图所示

      

除了通过 setContentIntent() 定义主要的操作之外,还可以使用addAction()来添加其他的操作。在mgr.notify() 之前加入以下代码:

Intent actionIntent = new Intent();
i.setClass(this, ReplayActivity.class);
PendingIntent actionPendingIntent = PendingIntent.getActivity(MainActivity.this, 0, i,   PendingIntent.FLAG_UPDATE_CURRENT);//添加ActionButton  //参数分别为:1 图标;2 文字;3 点击跳转界面builder.addAction(R.drawable.ic_launcher, "ActionButton",   actionPendingIntent);

在手持设备上,Action会以一个附加按钮的形式显示在Notification 上(展开通知可以看到),在穿戴设备上,当用户左划的划的时候,就能看到以大按钮的形式展示的Action,当用户点击按钮的时候,Action所指的Intent 会在手持设备上调用。效果如图所示。

如果你需要与手持设备区分,Action操作只在穿戴设备上有效,则需要使用 WearableExtender.addAction() 方法。注意,一旦使用这种方法添加Action,穿戴设备就不会显示通过NotificationCompat.Builder.addAction()添加的Action。同样,使用这个方式添加的Action不会在手持设备上显示。

//创建 只在 Wearable 端显示的Action
NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.ic_launcher, "Wearable Only Notification", intent).build();
//添加Action到通知上
builder.extend(new NotificationCompat.WearableExtender().addAction(action));

可以使用 “Big View ”样式往通知中插入更多的附加文字内容。在手持设备上,用户展开通知才可以看到“Big View”内容。在穿戴设备上,“Big View”是默认显示出来的。可以通过调用 NotificationCompat.Builder对象的 setStyle()方法来设置扩展的内容,比如传递BigTextStyle或者InboxStyle的对象。具体代码如下:

//大视图样式  可以使用BigTextStyle   InboxStyle
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
//内容太多的话,需要点击Wearable通知,下拉滚动显示
style.bigText("大视图内容-大视图内容-大视图内容-大视图内容-大视图内"+"容-大视图内容-大视图内容-大视图内容-大视图内容-大视图内容-大视图"+"内容-大视图内容-大视图内容-大视图内容-大视图内容-大视图内容");
builder.setContentIntent(intent);
builder.setStyle(style);
//设置Wearable 通知背景
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));

可以调用通知的setLargeIcon() 方法来添加一个大的图片到任意的通知上。这个图片会以背景图片的形式显示到穿戴设备上,运行效果如下图所示。

如果需要添加穿戴设备特有的属性到通知上,例如,指定附加内容的页数,让用户通过语音输入等,就需要使用NotificationCompat.WearableExtender类。具体的使用步骤如下:

1. 创建WearableExtender对象,设置穿戴设备通知特有的属性。

2. 创建NotificationCompat.Builder对象,设置一些属性。

3. 调用extend() 将WearableExtender对象传入,设置属性到通知上。

4. 调用build() 构建Notification

例如:如果要隐藏穿戴设备通知卡片上的图标,可以使用下面的代码:

NotificationCompat.WearableExtender extender = new NotificationCompat.WearableExtender();
//设置背景
extender.setBackground(BitmapFactory.decodeResource(getResources(), R.drawable.background));
//隐藏 小图标
extender.setHintHideIcon(true);
builder.extend(extender);

注意:使用setbackground() 设置背景图片时,如果背景不能滚动需要400x400像素的图片,如果背景能滚动则需要使用640*400 像素的图片。并将这些图片放入 drawable的nodpi 目录下。最后,必须使用 NotificationManagerCompat对象来发出通知,不然使用NotificationCompat.WearableExtender没有效果。

AndroidWear官方文档总结05 - 手持设备与穿戴设备的通知同步相关推荐

  1. AndroidWear 手持设备与穿戴设备的通知同步

    一个Android的手持设备(平板或手机)与AndroidWear设备连接后,手持设备会自动将通知发送到穿戴设备上.通知会以卡片的形式显示在穿戴设备的ContextStream上.然而,为了给用户最好 ...

  2. AndroidWear官方文档总结03 - 连接手持设备与穿戴设备模拟器到开发环境

    由于Android Wear设备是没有USB接口的,而且很多功能必须依赖手机才能实现,如果要对穿戴设备设备进行开发调试的话,就必须要通过连接手机才能进行进行.连接穿戴设备模拟器的具体步骤如下: 1.  ...

  3. 《maven官方文档》5分钟开始Maven

    原文地址 前提 你必须明白如何在电脑上安装软件.如果你不知道如何做,请向你学校.办公室里等的人请教下,或者付费给他人让他们解释给你.Maven邮件组不是寻求这个建议的最好地方. 安装 Maven是个J ...

  4. 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器

    2. 服务发现:Eureka服务器 2.1 如何创建Eureka服务器 引用org.springframework.cloud的spring-cloud-starter-eureka-server就可 ...

  5. 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端

    1.     服务发现:Eureka客户端 服务发现是微服务架构的关键原则之一.使用手动配置或一些约定方式来处理多服务多实例的方式是非常困难,并且十分脆弱的.Eureka同时是Netflix服务发现的 ...

  6. 【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?

    [一个iOS文档错误]关于keyWindow是否可以接受触摸事件? 关于keyWindow,官方文档有一个解释: 同一时间只有一个window可以成为keyWindow,keyWindow可以接受键盘 ...

  7. Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式

    Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式 本文参考输入输出 - Python 3.7.10 文档.首先声明咱的实验环境. ❯ python --version Pytho ...

  8. 【官方文档】Fluent Bit 数据管道之过滤插件(Kubernetes)

    文章目录 1. 配置参数 2. 处理 'log' 值 3. Kubernetes Annotations 3.1. Pod 定义中的 annotations 示例 3.1.1. 建议一个解析器 3.1 ...

  9. 跟着官方文档一步一步搭建基于gozero的微服务

    1. 创建项目 mkdir microservice cd microservice go mod init zzh.com/microservice 2. 下载go-zero和goctl 2.1 设 ...

最新文章

  1. pkg mysql 在macOS 上的管理
  2. LA 5717枚举+最小生成树回路性质
  3. java uml图中的关系_UML类图中的关系
  4. C语言博客作业--字符数组
  5. python读文件操作-python文件操作-读写删除复制总结
  6. DropZone(文件上传插件)
  7. HttpContext.Cache属性
  8. java闹钟程序声音_跪求高手帮忙写一个JAVA手机闹钟程序 实现添加铃声和设置多闹钟...
  9. 2345王牌浏览器网页加载慢怎么办 网页加载慢解决
  10. Git相关命令及用法
  11. CSS background-position用法
  12. BZOJ 1597 [Usaco2008 Mar] 土地购买
  13. Microsfot Office Communicator 聊天记录 外挂
  14. bzoj4008: [HNOI2015]亚瑟王
  15. (6)matplot去掉坐标轴
  16. 好用的 身份证识别OCR API
  17. Java Web程序设计教程(一)JSP+Servlet
  18. 三星note9刷Android9,三星Note9国行安卓9固件rom刷机包CHC-N9600ZCS1CSD1四件套
  19. 在线PS照片处理工具 无需下载怎么编辑图片
  20. 2016届毕业设计(论文) 基本规范及档案袋封面填写要求

热门文章

  1. Linux 笔记 - 第十一章 正则表达式
  2. 一文看懂通信新基建:5G、车联网、工业互联网……
  3. 小蔓的秋招计算机知识点急救方法
  4. 整个IT界可分为13块大领域
  5. CreateJS神坑之旅
  6. 讨论k值以及初始聚类中心对聚类结果的影响_K均值聚类需要标准化数据吗
  7. python打开本地浏览器_python如何实现打开浏览器
  8. 电子科技大学信息与通信工程学院858考研上岸经验分享(一)
  9. Ktor2.0很多新特性,我们一年前就想到了,并已落实在项目中
  10. android 联想云盘,附文:联想云盘安装_联想 小新Air 12 LTE版_笔记本评测-中关村在线...