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

1. 创建通知

2. 支持语音输入的通知

3. 添加多页面到通知

4. 堆叠通知

创建通知

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

[java] view plaincopy
  1. compile 'com.android.support:support-v4:21.0.3'

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

[java] view plaincopy
  1. NotificationCompat.Builder builder = new
  2. NotificationCompat.Builder(this);
  3. builder.setSmallIcon(R.drawable.ic_launcher);
  4. builder.setContentTitle("标题");
  5. builder.setContentText("内容");
  6. Intent i = new Intent();
  7. i.setClass(this, ReplayActivity.class);
  8. PendingIntent intent =
  9. PendingIntent.getActivity(MainActivity.this, 0, i,
  10. PendingIntent.FLAG_UPDATE_CURRENT);
  11. builder.setContentIntent(intent);
  12. NotificationManagerCompat mgr =
  13. NotificationManagerCompat.from(this);
  14. mgr.notify((int)(Math.random()*1000), builder.build());

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

      

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

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

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

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

[java] view plaincopy
  1. //创建 只在 Wearable 端显示的Action
  2. NotificationCompat.Action action = new
  3. NotificationCompat.Action.Builder(R.drawable.ic_launcher,
  4. "Wearable Only Notification", intent).build();
  5. //添加Action到通知上
  6. builder.extend(new NotificationCompat
  7. .WearableExtender().addAction(action));

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

[java] view plaincopy
  1. //大视图样式  可以使用BigTextStyle   InboxStyle
  2. NotificationCompat.BigTextStyle style = new
  3. NotificationCompat.BigTextStyle();
  4. //内容太多的话,需要点击Wearable通知,下拉滚动显示
  5. style.bigText("大视图内容-大视图内容-大视图内容-大视图内容-大视图内"
  6. +"容-大视图内容-大视图内容-大视图内容-大视图内容-大视图内容-大视图"
  7. +"内容-大视图内容-大视图内容-大视图内容-大视图内容-大视图内容");
  8. builder.setContentIntent(intent);
  9. builder.setStyle(style);
  10. //设置Wearable 通知背景
  11. builder.setLargeIcon(BitmapFactory.decodeResource(
  12. getResources(), R.drawable.ic_launcher));

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

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

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

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

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

4. 调用build() 构建Notification

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

[java] view plaincopy
  1. NotificationCompat.WearableExtender extender = new
  2. NotificationCompat.WearableExtender();
  3. //设置背景
  4. extender.setBackground(BitmapFactory.decodeResource(
  5. getResources(), R.drawable.background));
  6. //隐藏 小图标
  7. extender.setHintHideIcon(true);
  8. builder.extend(extender);

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

AndroidWear 手持设备与穿戴设备的通知同步相关推荐

  1. AndroidWear官方文档总结05 - 手持设备与穿戴设备的通知同步

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

  2. AndroidWear 连接手持设备与穿戴设备模拟器到开发环境

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

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

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

  4. pAdTy_5 构建可穿戴设备的应用程序

    2015.12.23 - 2016.01.13 个人英文阅读练习笔记.原文地址:http://developer.android.com/training/building-wearables.htm ...

  5. 广州Java培训之可穿戴设备的开发

    广州Java培训之可穿戴设备的开发 谷歌进军智能手表的平台名为Android Wear.最早运行Android Wear的两个手表 LG G Watch和三星Gear Live已经到来. 广州传智播客 ...

  6. 穿戴设备 之主芯片市场

    小编语:在这些厂商名单中能够看到中国厂商君正和锐迪科的名字小编颇感欣慰,不管芯片真实研发水平是否能和国际大厂抗衡,小编觉得国内业者都要感谢国产芯片公司的努力和付出,因为它们的出现在很大程度上制衡了进口 ...

  7. 可穿戴设备创业:现在和未来

    可穿戴设备创业:现在和未来 文/emouse 很多人将2013年定为可穿戴设备的元年,刚刚过去的CES展从Razer Nabu.Martian Notifier等硬件创业公司,到索尼.LG.中兴等消费 ...

  8. 可穿戴设备的主流传感器介绍

    目前,最常见的收集身体运动数据的技术是计算步数,这种技术首次是用在计步器上,如今也给消费者提供数据来源.除了在外形上的改变--从皮带夹到手环,大多数计步设备需要加入其它功能,检测身体其他指标.市场上有 ...

  9. Q1成绩:华为可穿戴设备增幅亮眼,Uber亏损10亿美元!

    硅谷Live / 实地探访 / 热点探秘 / 深度探讨 Uber 亏损10亿,小扎保住董事会主席席位,本周芯片巨头纷纷发新品,全球可穿戴设备Q1报告出炉!周末到啦,快来随硅谷洞察看看本周发生的科技热闻 ...

最新文章

  1. AWS 开源 SageMaker,帮助开发人员优化机器学习模型
  2. Consul 入门指南
  3. Python中必学知识点:类方法、实例方法和静态方法
  4. vc 基于对话框实现工具条提示显示
  5. CV:深入浅出的讲解傅里叶变换(真正的通俗易懂)
  6. Javascript:原型模式类继承
  7. python语言程序设计期末试卷_Python语言程序设计17182试题题目及答案,课程2020最新期末考试题库,章节测验答案...
  8. 湖仓一体数据平台架构
  9. NOIP2016普及组复赛 解题分析
  10. Gameplay框架
  11. QEMU中通过GPA得到对应HVA的方法
  12. 交通标志牌的检测与识别
  13. matlab计算叶子的面积,基于MATLAB进行树叶面积测量实验报告
  14. DYA10面向对象中--断点调试
  15. 美国在线黄页服务提供商YP控股拟竞购雅虎网络资产
  16. iOS 集成聚宝云支付
  17. linux安装git
  18. 全额包揽!广和通中标中国联通物联网5G数传模组采购项目
  19. PMP十万个为什么(一)
  20. 音视频开发-FFmpeg详解

热门文章

  1. 提高生产力和效率的小方法
  2. xt6使用技巧_凯迪拉克XT6:这几个“驾驶技巧”并不省油
  3. 程序员的鄙视链,写得竟然有些真实!|每日趣闻
  4. 谷歌浏览器查看网页源代码
  5. vue3 关于子组件给父组件传值,详解
  6. 软件测试基础面试常问问题(一)
  7. 思摩尔推出全球首屈一指的超薄陶瓷芯烟弹解决方案FEELM Air
  8. 酷!一个仿漫画手绘风格的 Python 图表库
  9. css多个属性怎么写,.css多个属性读取写法?
  10. python linux 时间格式化,Python中的时间日期转换