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
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:
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.
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.
有消息后就会有类似例如以下的显示:
4. 连接手机和模拟器
刚刚也提到了。模拟器是通过读取手机上的通知来显示的,自然须要有通信通道,对于模拟器来说,就是通过adb的tcp通道来的。
通过例如以下命令实现:
对于实际使用场景,智能手表等穿戴式设备通常是通过蓝牙或者Wifi-direct来和手机通信。
adb -d forward tcp:5601 tcp:5601
总结:
/********************************总的来说,android wear主要实现了两点:
1) 建立跨设备显示交互标准。
通知从手持设备依照一定的标准透传到穿戴式设备。穿戴式设备依据通知信息,然后显示出来。用户的响应然后再返回到手持设备。
2) 改造了androidnotification显示机制。让notification成为设备显示标准,并同意通知以适合穿戴式设备显示交互的方式显示。
* 本文来自博客 “爱踢门”
* 转载请标明出处:http://blog.csdn.net/itleaks
******************************************/