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

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を使った。コードの意味は後日読むようにしよう。

 

最初、上手く光らず悩んだ。抵抗器が間違っていた。ちょっと色違うだけでこんなに違うのね。

 

以上です。