Android Wear是连接安卓手机和可穿戴产品的一个平台。自从今年上半年发布以来,Android Wear获得了大量关注,既有来自消费者的关注,也有来自开发商的关注,后者希望自己的应用程序已经准备好让用户使用一种新的方式进行信息交互。
这篇文章将简要介绍Android Wear,然后介绍关于开发商的平台。
Android Wear旨在为用户在对的时间提供数量合适的信息量。根据这一主题,谷歌已经发布了设计原则以帮助开发商集中思考Android Wear应用程序。我们将对此进行简要介绍,同时也将研究在Android Wear环境中进行应用程序开发的必要条件,以及如何运用可用的API帮助安卓开发商研发用于Android Wear平台的应用程序。
Android Wear平台
Android Wear是用于可穿戴设备的开放操作系统,它有一个新的用户界面——这是谷歌了解我们如何使用手机以及我们如何更多地与环境接触的结果。例如,数据显示,我们用手机查看信息平均每天有150次左右。每次我们这样做的时候,都有可能迷失在其它应用程序里面,常常在一个任务程序中消耗很多没必要的时间,有时甚至完全忘记我们要查询的最重要信息。
第一批使Android Wear火热起来的是三星Gear Live和LG G Watch,这两款设备都是在6月份的Google I/O大会上发布的。手表是Android Wear的第一选择目标,确实如此:大多数人每天都使用手表。这些所谓的智能手表通常都需要和安卓手机配对使用,通过与最新安卓手机的无缝配合,谷歌让用户看到Android Wear平台的效用。
事实上,开始使用Android Wear时,你所需要做的是以下几方面:
1. 安卓4.3设备;
2. 来自谷歌应用程序市场的Android Wear应用;
3. 配对安卓手机设备与Android Wear设备。
没错,就这样。只要做好这些,你手机上的大部分信息都可以在可穿戴设备上查看。你不仅可以在手表上查看这些信息,也可对它们进行交互、删除等等。这显示的是不需费任何力气或者花很少时间就可以让安卓应用程序和配对设备运行——安卓手机用户都可以这么做。
需要注意的是,手机和可穿戴设备是通过蓝牙进行连接的。可穿戴设备目前还不能独立访问网络,所以需要通过手机进行连接。
虽然Android Wear很灵活,但是它目前最关注的是手表类。
九月初,摩托罗拉发布了万众期待的智能手表Moto360。它采用的是Android Wear系统。由于美丽的设计,Moto 360获得很大的赞誉,而且250美元的售价也获得了消费者的好评。其他开发商,包括华硕,已宣布发布Android Wear智能手表的相关计划了。
使用模式
与Android Wear设备进行交互的两种主要方式有:“建议”和“需求”。
“建议”,顾名思义,以通知的形式,推送到Android Wear设备的及时有用的信息。用户界面把这设置成卡片的形式,如下图所示。
值得注意的是,Wear应用程序能识别上下文语境,所以只推送文本内的信息。这类通知及时、简短、与用户的交互达到最低程度。
至于“需求”使用模式,用户通过语音向可穿戴设备发出信号,它就会回复信息。设备含有麦克风,通过说“OK, Google”或点击主屏幕就可以让用户调用一系列标准执行动作。用户界面会提示用户说出想要执行的动作指令。标准执行动作包括“做笔记”、“打电话”和“发信息”。你可以在运用程序上注册标准执行指令,也可以自定义提示文本。
设计理念
现在,我们已经了解Android Wear的基本使用模式了,是时候看一下用户界面和设计指导原则了。
如下所示,呈现给用户的很多信息都是以卡片的形式出现的。
注意一下卡片的不同部分。目前Android Wear应用程序通知将会以上面的标准格式出现。但是我们谈论的是利于阅读和有上下文相关度的最小量信息,你需要花些时间考虑何时增加文本通知和需要显示的文本。
通知可以在单个或多个卡片中显示。如果使用多个卡片,用户需要从左到右滑动页面进行查看。
如以下所示,通过叠加,你甚至可以在单个卡片中查看多条通知。
设计Android Wear用户体验时,有四个关键点需要记住,每一个Google Wear Design视觉创意部分,Android Wear应用程序都应该做到:
1. 自动启动:用户应该不需要另外在Wear设备上安装应用程序,Wear设备不是手机。Android Wear应用程序应该可以识别时间、地点和活动,并相应地推送相关卡片。
2. 易读性:因为用户把设备戴在手腕上,所以阅读通知应该像查看传统手表的时间一样容易。记住,特别关注题目:越简短越好——可以一眼就看到要点。
3. 有效利用“建议”和“需求”模式:Android Wear开发商页面显示:“Android Wear就像一位极好的私人助理。它只在你完全不需要的时候才会停下,它总是随时候命为你提供答案。“为了提供这一体验,开发商应该考虑何时如何使用“建议”和“需求”模式。
4. 与用户的零低交互:开发应用与程序是需要记住可穿戴设备都特别小型。应用程序必须便于用户进行交互,也就是说可以使用声音或简单的滑动或点击手势。
Android Wear设计团队已经做了大量工作,记录在现有Android Wear应用程序中进行扩展时如何有效地整合设计理念。(查看Android Wear设计部分。)
开发详情
在本部分,我们将帮助你初步了解Android Wear研发的关键概念。
你可以选择Eclipse或Android Studio作为Android Wear的集成开发环境(IDE)。谷歌建议用Android Studio进行开发。通过Android的SDK管理者下载API 20 (4.4 KitKat Wear):
Android Studio提供了在现有应用程序中添加Android Wear支持或创建新项目的便捷方式:Android Studio用的是组件模型,其中手机和Android Wear是单项目的一部分。
如果要在Android Studio创建一个新项目,点击文件- >新项目。在向导的第二页,选择构成因子,确保选择Android Wear模块作为你开发的构成因子(见下图)。
一旦完成所有选项选择,项目就会自动生成。你会看到这个Android项目有两个模块:移动和Wear。移动的使用于手机的应用程序,Wear是在Android Wear上运行的程序。
Wear应用程序不可以作为单独的软件包放在谷歌商店里。你需要把移动和Wear应用程序放在同一个应用程序APK中。当用户在手机上下载APK时,Wear应用程序就会自动传到配对的Wear设备。
Android Studio产生的默认项目并没有什么特别。在测试期间,我们需要自己写代码,这取决于我们想要应用程序的“可穿戴“执行什么。
通知
Android Wear的开发可以从两个角度进行分析:通知和Android Wear应用程序本身(包括在APK文件夹)。
对于已经从谷歌商店安装官方Android Wear到手机的用户,以及已经把手机和Wear设备配对的用户,不需要在应用程序中对通知进行任何更改。
虽然这样说,但为了让Wear真正发挥作用,有时候更改是有必要的。
你可以令通知只出现在手机或可穿戴设备或两者都有。此外,如上所述,开发商应该想下如何利用用户界面(UI)优势——即背景图像、通知标题、文本等等。
创建将发送到可穿戴设备的手持式通知,谷歌建议使用通知兼容生成器。Android 的支持库提供了一系列类别,你需要添加到你的项目中。
如果使用Android Studio,你需要添加下列属于移动模块中的build.gradle文件的编译时间。
compile "com.android.support:support-v4:20.0.+"
要创建通知,你可在你的移动应用程序中尝试下面的代码:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(“New API”)
.setContentText(“XYZ API got added to Food Category”)
.setSmallIcon(R.drawable.ic_mynotification)
.setContentIntent(PhoneActivityPendingIntent);
然后,你可以根据你的逻辑触发通知,如下所示:
NotificationManagerCompatnotificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(notificationId, notificationBuilder.build());
现在,当用户在Wear设备上收到通知时,他们在手机上点击通知或者滑动到左边就可以启动等待模式,然后显示开始动作。
作为扩展部分,如果想要通知只出现在手机,你可以通过具体说明setLocalOnly来创建通知。
在上面的例子中,我们只显示了一个卡片,但你可以看下有多页甚至折叠的通知卡片。
可穿戴应用程序
虽然Android Wear支持来自手机的通知,但有时候还不够。有几种情况,包括:
在手机上收到数据时想要在Wear设备启动活动;
从Wear设备向手机发送信息,反过来执行一些活动或者在后台做点什么;
在Wear设备上创建自定义界面;
编写一个可以在Wear设备上启动和运行的程序,并且可以通过接收语音输入启动不同动作指令。
以上提到的都有可能实现,前提是你了解一些Wear API的基础知识。
连接和数据交换
前面提供的案例中,共同的主题是手机和Wear设备都需要一个可连续双方的机制,然后一旦建立联系,就需要相互的信息交换。这反过来可以触发相应设备上的正确指令。
手机和可穿戴设备之间的联系是由谷歌提供服务的。谷歌API客户端提供了这种联系的实例。
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
你可以在合适的运动周期建立或关闭联系,如下所示:
@Override protected void onStart() {super.onStart();
mGoogleApiClient.connect(); } @Override protected void onStop() { super.onStop(); mGoogleApiClient.disconnect(); }
一旦建立联系,你可以查看不同API例子,以促进设备间的数据发送和同步:
Node API:该API是用于两个设备连接或分离使通过NodeListener界面方法保持追踪。
Message API:该API是用于双方相互发送消息。这需要接收方(MessageListener)有一个监听器可以接收消息。
Data API:该API用于设备之间的数据同步。该平台负责为双方提供同步机制。你需要完成 DataListener 界面才可以接收消息。建议先在可穿戴设备Listener服务平台上创建一个实例,然后听些你感兴趣的事件。
数据层界面如下所示,选择一个适合你的。
tatic interface DataListener {void onDataChanged(DataEventBufferdataEvents);}
static interface MessageListener {void onMessageReceived(MessageEventmessageEvent);}
static interface NodeListener {void onPeerConnected(Node node); void onPeerDisconnected(Node node);}
其余的功能——即需要针对特定信息采取的指令,完全取决于应用程序的功能需要。
执行实例
为了了解全局,我们来看一个实例应用程序,包括手机和Wear组件。为了让事情简单化,手机应用程序将会有单独的活动指令名称——MainActivity.java。它设计了一个按钮,点击时会发送消息到Wear应用程序。
首先,让我们看下MainActivity.java在手机应用程序上的情况(主要方法如下所示):
public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
.....
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
mGoogleApiClient.disconnect();
super.onStop();
}
//Button click
public void onSendMessage(View view) {
//Get Connected Nodes
Collectionnodes = getNodes();
//For each node - send the message across
for (String node : nodes) {
SendMessageResult result = Wearable.MessageApi.sendMessage(
mGoogleApiClient, node, "/startactivity" , null).await();
if (!result.getStatus().isSuccess()) {
//Log Message Success
}
}
}
@Override
public void onConnectionSuspended(inti) {
Log.e(TAG, ...);
}
@Override
public void onConnectionFailed(ConnectionResultconnectionResult) {
Log.e(TAG, ...);
}
对于接收方——也就是Wear设备,我们写了一份扩展WearableListenerService的服务程序。通过这份服务,你可以初始化GoogleAPI客户端和其他回调信号,比如GoogleApiClient.ConnectionCallbacks。最后,我们提供了MessageReceived实例,如下所示:
@Override
public void onMessageReceived(MessageEventmessageEvent) {
if (messageEvent.getPath().equals("/startactivity")) {
Intent startIntent = new Intent(this, WearActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startIntent);
}
自定义界面和语音操作
除了数据API,Wear提供了让开发商使用不同部件创建自定义界面的条件。
如今,你有非官方的资料库可用。
语音集成提供了语音输入的标准功能,可以把语音转化为文字。还有“需求“使用模式,用户可以通过语音唤醒应用程序或动作指令。
Wear平台系统提供了“记事”、“发送信息”等动作指令,通过这些,开发商可以让应用程序在清单文件中注册标准活动组件。
同样,用户只要向Wear设备说出“开始【活动名称】”就可以开始一个活动指令。你所需要做的就是在活动清单中为该活动提供一个文件属性。
对于基于Android Wear的第一波可穿戴设备——智能手表来说,Android Wear是创建可穿戴应用程序的一个好平台。
说到可穿戴设备应用程序,谷歌一直强调开发商需要尊重用户并遵循用户希望来设计。通过现有应用程序,编写可穿戴设备应用程序的困难将减到最小。在应用商城有很多专为可穿戴设备设计的应用程序,包括不断增加的手表应用程序——用户最喜欢的app。考虑到越来越多的供应商宣布Android Wear产品计划、以及Android OS的全球市场份额,开发商应该投资更多的时间到该平台上。