Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android thingsやってみた

1,750 views

Published on

Shibuya.apk #12 で発表したものです

Published in: Technology
  • Be the first to comment

Android thingsやってみた

  1. 1. Android Thingsやってみた @kikuchy
  2. 2. Who? @kikuchy 菊池紘 株式会社Diverse (ミクシィグループ) 最近はiOSも書いてます
  3. 3. スペック(人間の) Android開発歴2年弱 アナログ回路は高校と大学でやった気がするけれどほとんど忘れた ハンダ付けとかはしたことある  E = I * R とかは知ってる キルヒホッフの電流則/電圧則は忘れた LC共振回路ってなんだっけ
  4. 4. Android Things とは Raspberry Pi やIntel Edison などIoT系マイコンボードで動作する IoTプラットフォームOS 組み込み系の事前知識なしでマスマーケット向け製品を作ることが できる、信頼できるプラットフォーム(公式より) 通常のAndroidアプリとほぼ同じコードがマイコン上で動作する
  5. 5. 準備から起動まで
  6. 6. 用意したもの Raspberry Pi 3 Model B 2.4A供給できるUSB電源 Raspberry Pi 3が安定動作するには2.5Aくらいの電流が必要 micro SDカード(8GB以上) 有線LAN環境 無線LAN設定するまで必要 電子工作の部品 その辺のスターターキットみたいなのに入ってるやつ
  7. 7. 意外と用意するものが多い(´・ω・`)
  8. 8. インストール 公式のマニュアルの通りにインストールするだけ、非常に簡単 https://developer.android.com/things/hardware/raspberrypi. html Qiitaの記事も参考に http://qiita.com/aoinakanishi/items/fae26dc1ad0f16b58558 注意することとTips OSのイメージをmacOSのアーカイブユーティリティで解凍す るべからず 破損したイメージができてしまう adbで実機とつなぐ際IPアドレスの代わりに Android.local  で接続できる
  9. 9. 起動 電源のUSBケーブルを繋ぐだけ しばらく(1分くらい)待つとadbで繋がるようになる
  10. 10. アプリ作成
  11. 11. 新規作成 minSdkVersion 24+ 普通のAndroidアプリで良い GPIOの操作などにThings Support Libraryが必要
  12. 12. Things Support Library 周辺機器入出力と自作ドライバを扱うために必要 Support Libraryなので、後から導入するだけでよい  build.gradle の dependencies に追加  AndroidManifest.xml の <application> 内に追加 <uses‐library android:name="com.google.android.things"/> provided 'com.google.android.things:androidthings:0.1‐devpreview'
  13. 13. アプリ作成 普通にアプリ書けば良い GPIOの操作方法はサンプル見ればだいたいわかる ピンごとに入力/出力を設定し、値をセットする/コールバック を仕掛けるなどすればよい 公式のサンプルhttps://github.com/androidthings/sample‑ simplepio
  14. 14. 周辺機器入出力 原文では Peripheral I/O  Raspberry Piの場合はGPIOピンの制御などができる(らしい)
  15. 15. PeripheralManagerService (1) とりあえずGPIOいじってみる // マネージャー作成 PeripheralManagerService manager          = new PeripheralManagerService();          // 使用可能ポートの一覧を得る List<String> portList = manager.getGpioList(); // GPIOピンを開く Gpio gpio = manager.openGpio(/* String */GPIO_NAME); // 使い終わったら閉じること gpio.close();
  16. 16. PeripheralManagerService (2) // ピンを入力受付モードにする gpio.setDirection(Gpio.DIRECTION_IN); // 電圧の High / Low のどちらを true とするか決める // 今回は High gpio.setActiveType(Gpio.ACTIVE_HIGH); // 現在の入力値を得る bool now = gpio.getValue(); // 電圧の High / Low が切り替わったイベントをとることもできる // High / Low どちらに切り替わったときもイベントをもらうようにする gpio.setEdgeTriggerType(Gpio.EDGE_BOTH); // イベントのコールバックを登録  // (GpioCallback インターフェースを実装したオブジェクト) // onStartなどのタイミングで登録する gpio.registerGpioCallback(gpioCallback); // 必要なくなったら登録解除 // onStopなどのタイミングで行う gpio.unregisterGpioCallback(gpioCallback);
  17. 17. PeripheralManagerService (3) // ピンを出力モードにする // 今回は初期状態を High で初期化 gpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH); // 電圧の High / Low のどちらを true とするか決める // 今回は Low gpio.setActiveType(Gpio.ACTIVE_LOW); //出力を Low に切り替える gpio.setValue(true);
  18. 18. デモ(できれば)
  19. 19. スマホアプリエンジニアがIoT業界でこの先生 きのこるには
  20. 20. 雑感(1) アナログ回路の知識が必要 プルアップ抵抗? なにそれおいしいの? ショートさせたり高電流高電圧かけて火が出ないか不安 いろいろやろうと思うと材料がたくさん必要 ソフトウェアばかりやってきた身としては慣れない感覚 プログラムは無ければ自分で書けば良いが、ハードはそうも行 かない
  21. 21. 雑感(2) まだ何ができるかよく分からない分野 知識がないから発想が狭いのかもしれない? IoT自体、キラーコンテンツがまだない チャンスはありそう 少なくともAndroidは作り慣れている 慣れた環境に+αするだけで回路制御ができる 「物理的インタラクションができるAndroidアプリ」を一番作 れる位置にいる
  22. 22. 本職の組み込み系の人と まともにやりあえるかどうかはわからない
  23. 23. でも 「物理的インタラクションができるAndroid アプリ」 はきっと面白い✧\ ٩( 'ω' )‫ﻭ‬ //✧
  24. 24. やっていきましょう ✧\ ٩( 'ω' )‫ﻭ‬ //✧
  25. 25. 一緒にやっていってくれる方を募集中です
  26. 26. DiverseではAndroid エンジニアを募集して います https://diverse‑inc.co.jp/

×