Android Wear之android穿戴式设备应用开发平台
Android Wear于2014年03月19日公布,并有Moto 360和LG watch两款产品。
眼下源代码还没有开放。可是开发人员能够下载它的Image及相应的开发SDK,这样开发人员通过模拟器能够进行前期开发。
事实上,Android Wear包括两个部分,一部分是执行在穿戴式设备上的操作系统,一部分是给手持设备(手机。平板)程序使用的SDK,该SDK的主要目的是为可穿戴设备上应用开发提供了參考及规范。以引导用户开发出可同小屏幕设备协作操作的应用程序。这里使用“协作操作”是由于用户开发的这个程序永远不会在可穿戴式设备上执行,它仅仅是定义UI界面。android
wear的服务会将UI信息传递给可穿戴式设备,然后可穿戴式设备利用自身的UI机制显示出。
从这个角度来看。Android wear的作用是在手持设备和可穿戴式设备提供一套显示标准。依照这个格式,就可实现跨设备显示。
这个标准就是android的通知。当穿戴式设备和手持设备连接后,手持设备的通知就会传递到穿戴式设备。然后穿戴式设备将通知以适合自身的操作的方式显示处理。当然为了在穿戴式设备上有更好的显示,须要开发人员做少量的改动,这个就是SDK的作用。
眼下Android Wear的信息还不够多。接下来几天的Google
IO大会(6.25-6.27)上。Android Wear必将是热点话题,会释放很多其它信息。
Android Wear推出原因
我们知道。android自打一出世。就一直引导用户一个程序同一时候支持不同屏幕设备的应用,这也是res文件夹下有layout, layout-land, layout-portrait, layout-sw600等文件夹的原因,即是为了让不同的设备使用不同的layout达到设备兼容。那为啥到了可穿戴设备上,android须要出一套独立的SDK呢?这是由于可穿戴设备和手机平板等设备太不一样了。
详细体如今。
1) 屏幕太小。老的显示模式不再适合
相比手机和平板,可穿戴设备(手表)的屏幕不是小,而是特别小。因而在这个屏幕上,应用基本上是显示不出几个view的,因而原来的那个复杂的layout文件决定程序显示框架的机制太复杂了。也用不上。
2) 输入问题
我们知道,从PC切到手机,我们学会了从外接键盘切入软键盘,并乐享当中。那穿戴式设备呢?在手表等小的可怜的设备上弹出一个输入键盘。预计用户得拿放大镜来输入。
3) 设备的非独立性
我们知道。穿戴式设备体积小。自然硬件就不够强且配件也少(摄像头,上网模块等等)。自然没法做比較复杂的操作,因此穿戴式设备往往须要借助手持设备来帮组其完毕任务,比方拍照,上网。
Android Wear重点模块分析
显示:
屏幕小。因而尽量降低UI界面的元素,仅仅显示重要内容,而且尽量方便用户交互。从这个角度来看,window8系统高瞻远瞩,卡片式的UI呈现天生适合随意分辨率的显示设备。尤其是Metro桌面的程序动态消息显示,非常适合穿戴式设备。最開始的时候已经提到。穿戴式设备的显示主要就是通过显示通知来实现的,採用通知这一机制本身就避免了上面的一些不足,达到显示重点的目的,由于android的通知本身比較简约,也适合小屏幕操作。除了这个之外,还有其它的一些修改。比方,android
wear扩展并新增了一些通知对象。比方action,分页显示。
//普通的android设备的notification对象
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(mContext)
.setContentTitle("New mail from " + sender.toString())
.setContentText(subject)
.setSmallIcon(R.drawable.new_mail); //带action的notification,该action在可穿戴式设备是以一个单独的页面显示
//的,用户左滑就可以进入action页面,这个就是以下我们要提到的交互
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_event)
.setContentTitle(eventTitle)
.setContentText(eventLocation)
.setContentIntent(viewPendingIntent)
.addAction(R.drawable.ic_map,
getString(R.string.map), mapPendingIntent); //以下的WearableNotifications是重点,这个就是专门针对可穿戴式设备新增的
//一类notification,这类notification同意有多个显示页面。用户通过左右滑动
//能够非常自然的浏览很多其它内容
Notification notification =
new WearableNotifications.Builder(notificationBuilder)
.setHintHideIcon(true)
.build(); //以下notification的发送逻辑和普通设备的notification是一样的
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(this);
notificationManager.notify(notificationId, notification);
当这个notification发送完后。wear界面上就会有例如以下显示:
交互:
屏幕小,自然UI上没法提供太多的选择让用户去做。更没有空间以软键盘的方式输入。
由于,android wear上的交互往往比較专注,就是每一个界面仅仅做一件事。这样能够简化交互方式。这样交互的模式能够简化为显示通知。用户回复这一简单的过程。
同一时候用户回复也必须方便。尽量降低用户的手工输入。由于android wear提供了经常使用的两种,提供option列表和语音输入两种。同一时候android wear将这个回复的模式规范化了。这个交互在android
wear叫做action,而输入仅仅是交互的一种方式,在android wear里叫做RemoteInput,有remote字眼是由于往往这个输入并不会直接发送出去了,而是会先发送到手持设备上(手机,平板),然后手持设备才真正发送。详细代码逻辑例如以下:
纯语音的输入:
RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY)
.setLabel(replyLabel)
.build();
带默认文本选项及语音的输入:
String replyLabel = getResources().getString(R.string.reply_label);
String[] replyChoices = getResources().getStringArray(R.array.reply_choices); RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY)
.setLabel(replyLabel)
.setChoices(replyChoices)
.build();
将输入响应加入到通知中
Notification replyNotification =
new WearableNotifications.Builder(replyNotificationBuilder)
.addRemoteInputForContentIntent(remoteInput)
.build();
多设备连接
因为多设备互联,传输数据等都是系统Framework和底层问题,而不是直接和设备的使用者打交道的,这个会在源代码开放后。我将单独做一篇文章来分析。
你可能会问了,为啥不开放,事实上google眼下正在弥补一个过错。就是因为android过于开放导致android碎片化。google对于android没啥控制里,国内厂商那就更加了。因而。在穿戴式设备的android上,google预计肯定想统一接口,增强用户体验的一致性。
Android wear体验环境搭建:
1. 下载SDK
1) 升级android-sdk-tool到22.6版本号或者更高
2) 启动SDK Manager,然后选择例如以下勾选的内容:
然后选择例如以下勾选的内容并下载(重点是AndroidWear ARM EABI v7a System Image和Android Support Library两项)
itleaks@Itleaks:~/android-sdk-linux/tools$ ./android
![]()
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSVRsZWFrcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="520" height="520" alt="">
2. 创建/启动android wear 模拟器
这个应该非常easy。仅仅需在模拟器界面选择AndroidWearRound/Square就可以。
创建完后,点击start就可以
3. 手机设备上安装android wear preivew程序
该程序事实上就是一个launcher,可穿戴式设备上的默认launcher就是这个。
该程序同一时候另一个后台service,该service负责接收系统的通知。然后在launcher上显示。对于可穿戴式设备。该service可以接收远程(手机)的通知,然后再在launcher上显示。
安装完后,按home键,会弹出选择框,然后选择android wear就在手机上进入android wear launcher。然后须要开启同意接收通知选项。
由于该应用处于preview的状态,google不希望将该应用开放,由于这里我就没有将该app上传了,感兴趣的可以在以下的网页注冊成为測试者来体验
http://developer.android.com/wear/preview/signup.html
Hello Developer,
Thank you for signing up for the Android Wear Developer Preview.
To begin
developing on Android Wear, you’ll need the Preview Support library and the Android Wear Preview app for your mobile device. Follow these steps:
Download the Preview Support library and samples.
Opt-in to become a tester of the Android Wear Preview app in the Google Play
Store. After opt-in, it could take up to 24 hours for the Android Wear Preview app to
be accessible to you in Google Play. Make sure the opt-in user account is the same user signed in to Google Play.
Refer to the Android Wear DeveloperGet
Started page
for details. Since this is a preview release, please do not publicly distribute apps built with the Preview library.Also
note that the APIs are potentially subject to change and you will need to modify your apps when they are released out of preview.
有消息后就会有类似例如以下的显示:
![]()
![]()
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSVRsZWFrcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="200" height="300" alt="">
4. 连接手机和模拟器
刚刚也提到了。模拟器是通过读取手机上的通知来显示的,自然须要有通信通道,对于模拟器来说,就是通过adb的tcp通道来的。
通过例如以下命令实现:
对于实际使用场景,智能手表等穿戴式设备通常是通过蓝牙或者Wifi-direct来和手机通信。
adb -d forward tcp:5601 tcp:5601
总结:
总的来说,android wear主要实现了两点:
1) 建立跨设备显示交互标准。
通知从手持设备依照一定的标准透传到穿戴式设备。穿戴式设备依据通知信息,然后显示出来。用户的响应然后再返回到手持设备。
2) 改造了androidnotification显示机制。让notification成为设备显示标准,并同意通知以适合穿戴式设备显示交互的方式显示。
/********************************
* 本文来自博客 “爱踢门”
* 转载请标明出处:http://blog.csdn.net/itleaks
******************************************/
Android Wear之android穿戴式设备应用开发平台的更多相关文章
- [nRF51822] 15、穿戴式设备上电量检测装置的设计及细节技术点(偏专业硬件文章)
穿戴式 设备如智能手环.智能手表一般采用几百毫安时的锂离子电池来供电.因此,与之配套的充电电路.稳压电路和电池电量检测电路便必不可少!本文主要谈谈该类消费类电子内部电池电量检测的一般方法及其优缺点. ...
- 用铁电存储器FRAM让穿戴式设备更省电
可穿戴设备应用中的显示屏消耗了大部分电池电力.解决方法之一是直接提高电池容量,但是大容量电池会加大尺寸和重量,对可穿戴设备不合适,尤其是在市场不断追求更小型化的新款产品时更是如此.更具挑战性的是电池技 ...
- 想做Android Wear开发?你得先搞明白这四件事
手环和手表的腕上穿戴之争,随着Apple Watch发布和Android Wear不断完善而告一段落.尽管续航上略有缺陷,但手表以其类似手机可扩展的生态环境赢得了众多巨头的支持. Google曾透露, ...
- Android Wear和二维码
这是一篇发布在Android官方开发者社区博客,15年年初的时候就看到了这篇文章,直到现在才有时间把它翻译下来. 这是一篇如何在Android Wear上面如何正确地展示二维码的文章,里面有许多的经验 ...
- 北京君正集成电路的Newton平台--穿戴式
版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/hellomxj1/article/details/25324125 Newton1开发平台 • 很适合 ...
- 在线App开发平台——应用之星傻瓜式开发平台
随着智能手机及APP应用程序的普及,越来越多的企业和个人意识到APP的营销价值,出于对技术的敬畏,很多企业下意识认为开发APP是一个有难度的技术活,所以很多时候有心无力,也担心APP的后续的技术支持. ...
- android wear开发之:创建可穿戴设备应用 - Creating Wearable Apps
注:本文内容来自:https://developer.android.com/training/wearables/apps/index.html 翻译水平有限,如有疏漏,欢迎批评指教. 译:山人 创 ...
- android wear开发:为可穿戴设备创建一个通知 - Creating a Notification for Wearables
注:本文内容来自:https://developer.android.com/training/wearables/notifications/creating.html 翻译水平有限,如有疏漏,欢迎 ...
- 下载编译 Android wear 源代码,尝试制作可穿戴设备功能
体验 Android Wear 缘由: Android wear 代码公布已经非常久了.一直没有尝试,这里是个编译的过程和步骤,假设要尝试.本文假定读者已经有下载编译 Android 的经验,假设没 ...
随机推荐
- Android Cordova 插件开发之编写自己定义插件
前言 本文适合Android+web的复合型人才,由于cordova本身就是混合开发,所以在Android开发的基础上,还要懂web相关技术(HTML+CSS+JS).可是也有例外,比方我.仅仅需负责 ...
- LeetCode 136 Single Number(仅仅出现一次的数字)
翻译 给定一个整型数组,除了某个元素外其余元素均出现两次. 找出这个仅仅出现一次的元素. 备注: 你的算法应该是一个线性时间复杂度. 你能够不用额外空间来实现它吗? 原文 Given an array ...
- CF1009F Dominant Indices(树上DSU/长链剖分)
题目大意: 就是给你一棵以1为根的树,询问每一个节点的子树内节点数最多的深度(相对于这个子树根而言)若有多解,输出最小的. 解题思路: 这道题用树链剖分,两种思路: 1.树上DSU 首先想一下最暴力的 ...
- Arch Linux实体机安装记录
下面将记录笔者在戴尔笔记本安装arch linux的过程,用于记录,以便下次使用. 本文的内容参考arch linux官方Wiki. 首先,使用Power ISO把镜像安装到U盘,使用U盘安装. 通过 ...
- enq: TX - row lock contention故障处理一则
一个非常easy的问题,之所以让我对这个问题进行总结.一是由于没我想象的简单,在处理的过程中遇到了一些磕磕碰碰,甚至绕了一些弯路.二是引发了我对故障处理时的一些思考. 6月19日,下午5点左右.数据库 ...
- iOS Threading编程指南 官方文档翻译第一篇(序言)
序言 Thread是能够使多个code paths 在同一个APP内并发运行的几种技术之一.虽然新的技术为并发运行提供了先进.高效的工具(例如operation 对象和GCD),但是OS X和iO ...
- Python 极简教程(十)集合 set
什么是集合? 集合(set)是一种可变,无序和不重复的序列. 集合是python的序列之一,集合没有列表(list).元组(tuple)和字典(ditc)常见.但是有时候也有奇效. 我们先来看个集合的 ...
- [selenium]-处理滚动条
转载于:https://blog.csdn.net/lilongsy/article/details/76142497 1.先把driver 强制转换为js,如下 JavascriptExecutor ...
- 【前端切图】用css画一个卡通形象-小猪佩奇
最近在腾讯云技术社区遇到了一位奇才,用css画出了一个社会人小猪佩奇,不得不服.研究了一下他的文章https://segmentfault.com/a/1190000014909658,感觉甚是有趣, ...
- 微信支付v2开发(4) 交易通知
本文介绍如何使用JS API支付时如何获得交易通知. 一.交易通知 用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果.商户可以使用notify_url的通知结果 ...