Android Things予習ノート


図

Android Thingsとは

  • AndroidベースのIoT向け軽量OS。
  • 要するに、ラズパイやエジソンで動くAndroid
  • Androidのいろいろなご利益を享受できて、ハードも叩ける。
  • Windows 10 IoT Core とよく似たコンセプト。
  • まだ開発者向けプレビュー版の段階である。

対応ボード

現状、ラズパイ3とエジソンに対応と思っておけば良い。
正確には、対応ボードの下記の通り。

各対応ボード向けのシステムイメージが提供されている。

特徴

  • Things Support Library(後述)を使って独自ハードが叩ける。
  • 画面は必須ではない。
    • Activityがアプリの第一要素であることに変わりはない。
    • 画面があってもよく、通常のUIツールキットで開発できる。
    • ステータスバーやナビゲーションボタンは無い。(全画面アプリ)
  • 単一アプリ動作のために整理されている。
  • それ以外は基本的にふつうのAndroidアプリとして開発できる。
    • 上記の特徴から、利用できないAPIはいろいろある。

Things Support Library

Things Support Libraryには、Peripheral I/O API と User Driver API がある。

Peripheral I/O API (PIO API)
  • GPIO、PWM、I2C、SPI、UARTが叩ける。
  • 要するにArduinoみたいなことがAndroidアプリでできる。
  • つまりNDKを使わずに独自デバイスが叩ける。
  • 信号のエッジやデータ受信をイベントで受けられる。
  • しかしJavaなので、むしろArduinoよりもコードがめんどくさい。
  • アナログ入出力は対応しないの?




図

User Driver API
  • 今のところ GPS、HID、センサに対応
  • 独自デバイスから得たデータをAndroidのシステム側に報告することができる。
  • 例えば、UART接続のGPSモジュールから取得した位置情報をシステム側に報告し、アプリからは標準のAPIでその位置情報を取得できる。
  • カメラは対応しないの?
ライブラリの導入

あくまでただのライブラリなので、build.gradleに依存を記述すればよい。

dependencies {
    provided 'com.google.android.things:androidthings:0.2-devpreview'
}

ただし、自動的にリンクされない個別ライブラリなので、AndropidManifestの内にもライブラリの宣言が必要である。

<uses-library android:name="com.google.android.things"/>

サンプルコード

ここからダウンロードできる。
とりあえず、Simple PIO と Simple UI から見ればよいかも。

所感

  • ガチの組込み屋がやる意味あるかな?
  • そもそも本当に流行るの? (昔、ADKってあったよね…)
  • ADKもそうだったけど、リアルタイム性は考えてないよね。
    • アプリ屋の言うリアルタイムと組込み屋の言うリアルタイムは時間の桁が違う。
  • まあ、楽しそうではある。
  • JavaとC言語を同時にコーディングする苦行から解放されるケースはあるかも。
  • とりあえず、やってみよう。