一角獣は夜に啼く

ただの日記です。

思ってることとか考えたこととか適当に書きます。 主にソフトウェア開発の話題を扱う 「ひだまりソケットは壊れない」 というブログもやってます。

Glassware (Google Glass 用アプリケーション) 開発の基礎

Google Glass を持ってないし特に近い将来手に入れる予定もないのですが、とある事情により Glassware 開発について週末に調べていました。 調べたことを簡単にまとめておきます。 ドキュメントを読んだだけで書いているので *1 何か間違ってるかもしれません。

Glassware 開発環境

Google Glass 用のアプリである Glassware の開発の際には、次の 2 つの API を使用できる。 (片方だけでも開発はできるし、両方組み合わせることもできる。)

  • Glass Development Kit (GDK)
  • Mirror API

GDK

GDK は Android SDK のアドオンであり、これを使用することで Google Glass 上で直接動作する Glassware を開発できる。 Android SDK のアドオンであるということからわかるように、基本的な概念は Android アプリ開発と同様で、そこに Google Glass 特有の機能が追加される形になる。

Android アプリに精通しているならば、次のページを見ればすぐに開発環境を整えられるだろう。

Mirror API

Mirror API を使うと、Google Glass と相互作用する web サービスベースの Gradleware を開発できる。 こっちは Google Glass 上で直接実行されるわけではなくて、web サービスという形式で動いているアプリで、Mirror API を通じて Google Glass とやりとりできる、という感じっぽい。 こっちの方は特に調べてないのでこの記事では説明しない。

Google Glass の表示 UI

Google Glass 上に表示される UI 要素のうち、重要なものは、次の 2 つに分けられる。

  • Timeline と Card (Static Card と Live Card)
  • Immersion

Timeline と Card

基本的には Timeline が表示されている、と考えてよさそう。 音声入力やタッチ入力を処理したり、Card を表示したり、Glass システムのほとんどの機能へのアクセスをユーザーに提供したり、というのが Timeline の役割。

Timeline 上には Card が (仮想的に) 横一列に並んでいるとみなすことができる。 Card には live と static の 2 種類がある。 Static Card にはテキストや HTML、画像や動画の表示が可能であるが、カメラや低レベルのハードウェア、API などへのアクセスをさせることはできない。 Live Card はその名が示す通り、その時点で重要なことを表示したりするための card のようである。

デフォルトの Home card は Glass clock で、それは Timeline の真ん中に表示される。

Timeline の右半分 (Home card より右) は履歴部分で、Static Card が表示される。 Home card に一番近い方が最近のカードで、右に行くほど過去のカードである。

Timeline の左半分 (Home card より左) は現在および未来の情報を表示するカードが置かれる場所である。 ここには Live Card と一部の Static Card (時刻が未来のものと、「ピン止め」 されたもの) が置かれる。

Timeline の一番左端には設定が表示される。

Timeline 上へのカードの追加方法など

Static Card は、TimelineManager クラスのメソッドを呼び出すことで Timeline 上に追加したり、そこから削除したりできる。

Live Card は Static Card ほど簡単ではなくて、Service を作ってそこで Live Card を生成して、(必要に応じて) Service の中で定期的に Live Card の内容を更新する、ということをするみたい。

Immersion

Immersion は必要な場合にだけ Timeline とは別のものとして表示されるビューである。 Android アプリの Activity が、そのまま Google Glass では Immersion として扱われている。 Timeline ではスワイプ操作などは Timeline が処理してしまう (なので Card では処理できない) が、Immersion が表示されている場合はスワイプ操作なども Immersion 自身が処理できる。

Activity を Immersion として使うために実装時に気を付ける必要があることは次のページに書かれている。

ユーザー入力

Google Glass でのユーザー入力は次の 3 つ。

  • 音声
  • タッチジェスチャ (タップとスワイプ)
  • 頭の移動など

Glassware の起動

Glassware の起動は、基本的に声によって行われるようである *2com.google.android.glass.action.VOICE_TRIGGER アクションをインテントフィルタに設定しておき、どの音声入力で起動するかを com.google.android.glass.VoiceTriggermeta-data で指定する。 詳細は次のページに書かれている。

まとめ

Google Glass 面白そうなので誰かください

*1:実機で動かして確かめたりはしてないので

*2:他の手段もあるかもしれないけど見つけられていない