探索google glass的mirror api:从设计原则、hello world、时间轴卡片、地图,到分享权限 | 36氪
今天google对外公布了一系列有关google glass的硬件细节,同时也公开了google glass的开发者api,名为google mirror api。我们从几方面来看一下glass的api会容许开发者做些什么。
glass应用的设计原则
google mirror api是一种restful web服务类api;开发者给google glass写的应用叫做"glassware"。google希望glass可以带给用户“下一代的移动互联网体验”,也给出4条相应的设计原则:
- 为glass而设计。你的应用应该是专门为glass而设计、开发和测试,以保证适合glass的用户体验。
- 不要妨碍用户。glass的用户希望在需要时使用科技,而在不需要是让科技消失。不要过分使用用户不期待的通知。
- 及时性。信息的实时性和及时性会让glass这个平台最有效。
- 避免用户意料之外的事情。应用中包括用户没有期待的功能在任何平台上都是不好的,但是因为glass和用户的生活体验太接近了,所以更要避免。你需要对用户诚实解释你应用的目的和所需要的用户授权。
很显然,google对待glass的态度有点像对待自己的小孩儿一样,一切都是小心翼翼的,而glass的应用门槛可能也会比android应用要更高一些。
时间轴卡片的一切
glass向用户展示信息的主要方式是通过”时间轴卡片“(timeline card)。时间轴卡片可以显示文字、图片、视频和 html。除了单卡片显示之外,开发者也可以将多张卡片放在一起(bundle),然后用户可以通过声音或者触控浏览。
这当然也意味着开发者们的"glassware"应用最终的信息呈现也是通过这些时间轴卡片。最常见的api行为包括:
- 在时间轴上创建新卡片
- 更新原来的卡片
- 通过卡片的菜单获得用户的输入
- 接受glass的通知,所以可以对用户的行为做相应的反应
附加背景的时间轴卡片是这样的:
hello world
每一位程序员在学习一个新语言或api时,做的第一件事应该都是写“hello world “。这是glass api的"hello world"程序:
http/1.1 201 created date: tue, 25 sep
2012 23:30:11 gmt content-type:
application/json content-length: 303{ "kind": "glass#timelineitem",
"id": "1234567890", "selflink":
"https://www.googleapis.com/mirror/v1/timeline/1234567890",
"created": "2012-09-25t23:28:43.192z",
"updated": "2012-09-25t23:28:43.192z",
"etag":
"\"g5bi0rwvj-0jwdbrdwrpzv7xpkw/t25selcgs3udevt6fb09hag-qq\"",
"text": "hello world" }
这种语构对于使用过其它restful api的开发者应该还是比较容易上手的。显示的结果是:
gps定位和地图
另一类应该是很常用的api call应该是与地理位置有关的,因为我们可以想象很多glass的应用会是属于lbs类型的应用。
开发者可以通过mirror api直接请求用户的最后已知位置,也可以通过"订阅”(subscribe)来获取用户位置的更新,但是对于这种订阅式的位置更新,google限制glass在只能每十分钟发送一次。这里的原因应该是为了节省电池使用,但应该也有出于用户隐私的一些考虑。
glass和google地图有深度结合,可以通过mirror api直接渲染出一个google地图的图片,开发者可以指定地点、路线、地图宽度、地图高度和聚焦等参数。显示结果也是通过时间轴卡片:
分享权限和“联系人”
在默认权限下,glass应用只可以控制应用自己创造的时间轴卡片。用户需要通过一种”联系人“方式的授权来容许跨应用的时间轴卡片分享,以及分享用户自己用glass创造的媒体,比如照片和视频。
来获得分享授权,glass应用需要发送给用户一个请求,其中要包含应用的id、名字和图标。google建议图标为640x360像素的png文件。
总而言之
我们可以看得出,不同于android api,google mirror api目前并不容许开发者直接与硬件接轨,而且是非常重视用户隐私和遵守权限的。这个原因很多,glass是一种全新的智能设备,而且与用户的距离比以前任何一种智能设备要更亲密,所以google在api方面最开始采取比较保守的态度是意料之中的。第一代iphone的api相比现在的ios api也要单薄很多,google必定会继续扩展mirror api中的功能,让开发者们可以实现更多的应用设计。
这是google mirror api的地址,java的示范应用,和python的示范应用。