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的通知,所以可以对用户的行为做相应的反应
附加背景的时间轴卡片是这样的:
下面讲述Mirror API的开发实践,当然,首先是我们最熟悉的Hello World.
#p#
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 中的功能,让开发者们可以实现更多的应用设计。