t_t_nの日記

開発の備忘録など

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