閱讀428 返回首頁    go 阿裏雲 go 技術社區[雲棲]


googe眼鏡開發

目前 Google Glass 上有兩種開發 Glassware(應用,特指為 Glass 定製的應用)的方式:一是通過 Mirror API 從雲端進行開發,另一種是使用 GDK 進行本地開發。

"Mirror API or GDK?"

Mirror API 是一套 RESTful 接口,通過 OAuth 2.0 授權協議讓 Glassware 與用戶資料建立關係。它的背後是一個神奇的機製。Mirror API 雲端儲存了某個 Glassware 產生的、用戶向某個 Glassware 分享的內容的完整副本。當 Glassware 向 Mirror API 更改了內容,或者用戶在 Glass 上產生了更改,這些更改都會在恰當的時候被同步(背後是 Google Messaging Service 推送等等技術的支持),並且這個同步過程是由係統統一管理的,共享資源,因此也達到了節電的目的。同時,如果有必要,Mirror API 也會向你的 Glassware 反饋用戶的更改(比如地理位置變更、分享了一張照片),因此在對實時性要求不是特別高的情況下,Mirror API 是一個不錯的選擇。

而 GDK 則是基於 Android SDK (API 15) 的一套 SDK,用來開發直接運行在 Glass 本地的應用(眾所周知 Glass 是基於 Android 4.0.3 的)。GDK 相對於 Mirror API 的優勢是,可以直接訪問各種底層傳感器(比如陀螺儀、指南針、攝像頭等等),並且因為是本地執行,因此更適合實時應用。


GDK 和 Mirror API 的對比

Mirror API

前麵已經提到,使用 Mirror API 開發的 Glassware,並不需要直接接觸用戶的 Glass,而是與 Mirror API 打交道,由 Mirror API 負責將內容反映到 Glass 上。其關係大致上如下圖所示。


Mirror API 關係結構

Mirror API 的三個特點:

  • 輕量級 - 資源共享,由係統統一調配,不會使 Glass 產生額外的開銷
  • On-The-Cloud - Glassware 本體在雲端運行,開發者無需了解具體的 Android 開發知識,隻需要具備基本的 HTTP 基礎
  • OAuth 2.0 - 用戶通過 OAuth 2.0 向 Glassware 授予權限,Glassware 隻能讀寫屬於自己的數據


Mirror API 使用示例

通過 Mirror API 開發需要了解 Glass 的幾個基本交互元素,下麵將一一介紹。

Timeline


Timeline

Timeline(時間軸)是 Glass 上最最基本的交互元素,每一張卡片都代表一個信息。用戶可以通過 Glass 的眼鏡腿前後翻閱每一張卡片。


Timeline 結構

整個 Timeline 大致上是這麼分布的:用戶首先看到的是一個時鍾主屏幕,所有操作都從這裏開始;左邊是正在發生的事情,比如正在運行的 GDK 應用,比如用戶固定了的卡片;右邊是過去的事情,類似一個瀑布流,舊的消息會被一直往後推,直到消失不見。


卡片組

而對於具有相關性的卡片,比如一組電子郵件會話,則會展示為一個卡片組。用戶可以展開它看到這個郵件主題的對話曆史。

關於卡片的設計,穀歌官方對此給出了四點規範:

Don't get in the way · 不礙事

在你需要的時候,它就在那裏;在你不需要的時候,你不會留意到它存在。Glassware 做的應當是你的個人助手,而不是掌控你的行為。

Keep it relevant · 說重點

Glassware 提供的信息應當是盡量簡潔的,不需要用戶過多注意力去提取信息。所以,說重點,不要一大堆廢話。

Build for people · 以人為本

所謂以人為本,就是你隻需要很少的交互,就可以達到目的。一個最典型的例子是,有妹紙發來短信,你隻需要「ok glass, reply」,當你說完你的回複內容後,Glass 自動幫你將信息發送出去。整個過程甚至不需要動手,不需要點來點去各種菜單操作。

Avoid the Unexpected · 別作死

深夜某個時候,哐當一聲。。。嗯,某些公司的癖好,大家懂的。

Menu Items


Menu Items

另一個重要的交互元素是 Menu(菜單)。每一張卡片都可以帶有一個或多個菜單項,用戶翻到這張卡片時,點擊眼鏡腿,就會看到這張卡片的操作菜單,每一個菜單項都代表著特定的功能。開發者可以自己定義每張卡片應當出現什麼菜單項。幾個常用的菜單項有:

  • Share - 分享
  • Reply - 回複信息
  • Read aloud - 通過語音讀出卡片內容
  • Call - 打電話

除此之外 Glass 本身還支持很多菜單指令,甚至還能由開發者自己定義菜單項,或者改變原有菜單項的顯示文字。

Subscription

前麵提到,使用 Mirror API 開發的應用並不能直接訪問 Glass 設備本身,因此如果需要對用戶的操作作出回應,就需要用到 Subscription 機製。

Subscription 機製的原理是,Glassware 向 Mirror API 注冊一個 HTTPS 回調地址;當用戶產生了特定動作(比如,向你的 Glassware 分享照片),Mirror API 就會向你的 HTTPS 地址發出一個 POST 請求;Glassware 接收到這個 POST 請求後,就可以從請求體中提取出必要的信息。

Voice Command

Glass 的所有操作都通過主屏幕開始。用戶可以通過點擊觸摸板,或者使用「ok glass...」語音指令啟動主菜單看到這些指令。

除了 Glass 本身提供的「Take a picture」、「Record a video」等等係統指令外,Glass 還向 Glassware 提供了不下 19 種語音指令,比如「Post an update」、「Take a note」等等。當然,還有 17 條指令直到目前還沒出現在官方開發文檔中,我就不說啦(沒去 GDG 現場的朋友吃虧啦哈哈哈)。

Contacts


Share to somebody

Contacts 在 Glass 上是一個比較開放的概念。它既可以是一個真實的人,也可以是一個虛構的概念。它的存在是作為一個接受指令的東西:

  • 用來作為撥打電話的目標
  • 接受分享
  • 回應語音指令
Location

Glass 同時也是一款很適合 LBS 的設備。然而 Glass 本身並不自帶 GPS 模塊,而是需要依賴所配對的手機的 GPS 進行定位。通過將 GPS、蜂窩數據等耗電模塊轉嫁給手機,也是 Glass 達到節電、輕便設計的一個手段。

Glass 與手機配對後,Mirror API 便會使用手機的地理位置信息(眾所周知,隻要你的 Android 手機開放了相關的權限,便會定時向 Google 上報地理位置)。通過相應的接口,Glassware 可以獲取到 Glass 最近一次上報的地理位置。此外,通過 Subscription 機製,Glassware 也可以及時得知用戶的地理位置變更,從而作出相應的回應。

"So, what about GDK?"

新鮮滾熱辣,上個星期剛剛發布的 GDK。這次 GDG 聚會我也順便簡單介紹了一下。


Android SDK and GDK

GDK 本身基於 Android SDK (API 15),並在此基礎上加入了一些 Glass 才有的特性。相較於 Mirror API,使用 GDK 開發的 Glassware 是一個 APK 格式的 Android 應用,運行在 Glass 本地,並且能夠訪問 Glass 本身的一些底層傳感器(比如指南針、陀螺儀等)。

這裏主要介紹一些 Glass 特有的概念。

Live Card


Live Card

使用 GDK 開發的 Glassware 可以向 Timeline 主屏幕插入一條語音指令作為啟動觸發器;當用戶觸發這個指令時,Glass 將會通知 Glassware 的服務;此時 Glassware 可以創建一組 Live Card 向用戶展示運行狀態。

所謂的 Live Card,實際上就是 Timeline 主屏幕左側的卡片,表示正在進行的事情。Glassware 通過 Android 四大組件之一的 Service 可以在後台更新這張 Live Card。同時,用戶也可以點擊這張 Live Card 調出 Glassware 的菜單,進行一些操作或者退出 Glassware。

目前 Google Glass 開發團隊在 GitHub 上提供了幾個 GDK Live Card 的示例,有興趣的朋友可以參考一下:

  • Stopwatch - 秒表,主要演示了實時繪製 Live Card 界麵
  • Compass - 指南針,主要演示了指南針傳感器的調用
  • Timer - 倒計時器,主要演示了菜單

下期預告:極鏡論壇-穀歌眼鏡開發教程GDK版一 搭建開發環境

最後更新:2017-04-03 12:53:56

  上一篇:go MyEclipse中add jars和add external jars的區別帶來的svn checkout的問題
  下一篇:go 連載:麵向對象葵花寶典:思想、技巧與實踐(6) - 不要說你懂“類”