AndroidThingsのサンプルを読んでみる
読んでみる。
対象になるサンプルコードはいくつかあるが、今回はBlinkActivityにする。
(前回このコードでLED光らせたし・・。)
BoardDefaults.java
・・・動いているデバイスが何かを判定してるっぽい?。
edisonってデバイスの時だけ色々してるから、Android的には同じデバイスって判断しちゃうけど
実際はGPIOのところの配置が違う別物って感じなのかな。
if (sBoardVariant.equals(DEVICE_EDISON)) { PeripheralManagerService pioService = new PeripheralManagerService(); List<String> gpioList = pioService.getGpioList(); if (gpioList.size() != 0) { String pin = gpioList.get(0); if (pin.startsWith("IO")) { // 0番目のピン?が"IO"で始まる何かならこっち sBoardVariant = DEVICE_EDISON_ARDUINO; } } }
大事なのはgetGPIOForLED()のところっぽい。
デバイスごとに違う文字列返している。
LEDをセットしているところがどこか教えろーって感じかー
BlinkActivity.java
全然関係ないけど、Handlerはフィールドで宣言して初期化してるのね。
毎回newしてたけどこっちの書き方がいいのかねぇ。
中身読まなきゃなぁ。
mBlinkRunnable がフィールドにいない・・・!と思ったら下で宣言してた。
自由だな!
// このサービスにGPIOの名前を文字列で渡すといいみたい PeripheralManagerService service = new PeripheralManagerService(); // 大事そう。DIRECTION_OUTとDIRECTION_INがあるらしい // OUT_~以降はよくわからん。 mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); // このsetValueに値を渡してon/offを切り替えている。 // 今回はLEDを点滅させるためにこうしてるみたい。 mLedGpio.setValue(!mLedGpio.getValue());
GpioインスタンスにどこにつなげるかとIN/OUTを教えてあげて、最後にon/offを
切り替えるって感じかな。
切り替え処理はHandlerに渡す形で実装しないとダメみたいだ。
closeを忘れるとまずそうだ。
センサーとかだと結果の戻りがあると思うんだけど、どう処理するんだろう。
それはボタンのサンプル見れば分かるかな?次回はそちらを動かしてみよう。
removeCallbacksってなんだろ。
onMapReadyに入らない
Google Map APIを使って粛々と開発していた。
特に問題なく動いていたが、テスト前にいくつかの端末で動かしたところ、Mapが
表示されない端末があった。
冷汗がすごく出た。
Fragmentにインタフェースを継承させて実装していたのが良くなかった。
OnMapReadyのインスタンスを直接newして持たせたら上手く表示された。
そもそもFragment上にGoogle Mapを表示させるって実装が良くないんだろうなぁ・・。ただでさえ重いのにね。
お客さんのところで発覚とかにならなくて良かった良かった
Android Thingsを試した話
先日、Android Thingsを試したので忘れないうちに
まず、Amazonでラズベリーパイ3のキットとセンサー等の詰め合わせを購入。
結構種類があって何が何やらさっぱりだったが、for Dummies というやつが一通りそろっていてよさげだったので購入。
サンプルを試すのに一通りのセットがほしいと思い、スターターキットとやらも購入。
しめて1万円弱。
高いのか安いのか。
で、キットについていたSDカードにAndroid Thingsを入れて動かしてみた。
SDカードに入れるのにはWin32DiskImagerを使った。
キットについていたUSBにSDカードを挿してPCにセット。先に書いたWin32~でSDカードに焼きこみ。PCはWindows10。
会社がmacで家がWindowsなので、家でキーボード叩くとタイプミス多くて混乱する。そして家でキーボード叩くと会社でタイプミスが多くなって混乱する。
入れたらラズベリーパイ3にSDカードを挿す。場所がわからなくてしばらく悩んだ。最初は勘違いしてUSBごと挿した。裏側を眺めていたら気づいた。あぁ。。
さらにLANケーブル、HDMIをラズベリーパイ3に挿す。最後に電源ケーブルを挿す。
赤いランプが点いたが、赤いと不安だった。待つことしばし。何度か抜いたりして時間を無駄にしつつ。無事、立ち上がって画面に少し古い雰囲気の「Android Things」が表示された。ついでにIPアドレスが載っていた。
その後の手順は公式サイトのまま
Wi-Fiへのアクセスがどうにもうまくいかなかった。
最後は電子工作。見よう見まねで台?にぐさぐさ挿して試した。
gitからサンプルコード落として手順の通りに入れた。LEDを光らせた。Android studioを使った。コードの意味は後日読むようにしよう。
最初、上手く光らず悩んだ。抵抗器が間違っていた。ちょっと色違うだけでこんなに違うのね。
以上です。
日々のまとめを書いていく
日々の学習などの内容について記載する備忘録を目指します。
飽きずに続けられますように。