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ってなんだろ。