せっかく Android Things が v1.0 になったので、再び Raspberry Pi に入れて確認してみる。
Android Things の microSD を作る
Android Things Setup Utillityの使い方 – Qiita
https://qiita.com/masaya3/items/a2fcb2811e74b076be47
Android Things Console
https://partner.android.com/things/console/#/tools
記事を参考にして、Android Things Console から Setup Utility をダウンロードする。zip ファイルを解凍して、android-things-setup-utility-windows を管理者権限で実行する。
– 1. Install Android Things and optionally set up Wi-Fi
– 1 – Raspberry Pi 3
– 1 – Default image: Used for development purposes. No access to the Android
のように選択すればラズパイ用の microSD ができる。WiFi の設定は microSD を作るときに設定できるのだけど、デスクトップPCの場合は WiFi に接続していない場合が多いし、ラズパイ+Android Thingsを起動した後にでもUSB接続のマウスとキーボードを使って、画面から設定が可能なので、この時点ではやらなくてもよい。
HDMI 接続のモニタ上から、network を設定できる。ベータ版とは違って画面上からできるのが便利。
adb shell する
普通の android と同じように adb shell ができる。Xamarin.Android の時と同じように、visual studio から「ツール」→「Android」→「Android adb コマンドプロンプト」を選択する。
既に、Android Things は開発者モード相当になっているので、WiFi が繋がっていれば tcpip で接続できる。
1 | adb connect <Android ThingsのIP>:5555 |
リモートで画面が表示できる vysor があれば、画面も操作ができる
画面サイズは 640×480 固定になっているらしい。
Androidアプリをインストールする
せっかくなので、Xamarin.Forms を Android Things に入れて動かしてみる。Visual Studio 2017 で Xamarin.Forms のプロジェクトを作って、「Google iot_rpi3(Android 8.1 – API27)」で実行している。
右側に縞が入っているのは、モニタの解像度が合っていないから、このモニタは800×480なので、Android Things の config.txt あたりで設定できるはず。
既存のアプリ(*.apk)をインストールする
Android Things には Google Play のようなものがないので、*.apk ファイルを直接インストールする必要がある。
SSHDroid – Google Play のアプリ
https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid
SSHDroid が、Android へ SSH で繋げられるアプリなので、https://apps.evozi.com/apk-downloader/ や https://apkpure.com/jp/ から、SSHDroid_v2.1.2_apkpure.com.apk をダウンロードして PC に保存する。
1 | adb install SSHDroid_v2.1.2_apkpure.com.apk |
な形でインストールできる。
アプリを起動する
Android Things にはランチャーみたいなものがないので、adb shell am start -n を使わないといけない。このとき、開始する Activity 名が必要なのだが、これが苦労する。
package名のみからadb shell am start -nする – Qiita
https://qiita.com/mattak/items/41b1ce1d48ddb3b2bb4a
pm list package でインストール済みのパッケージ一覧を確認した後で、pm dump で起動するときのアクティビティを得る。既に adb shell しているときは pm list package でよい。
1 | adb shell pm list package |
more して android.intent.action.MAIN の部分だけを見る。
1 | adb shell pm dump <パッケージ名> |
この場合は、下記のように起動する。
1 | adb shell am start -n com.companyname.App1/md5a445f6db5abf8b5b69aa92721cad9446.MainActivity |
ちなみに、ホームへ戻るときには、input keyevent を使う。
1 | adb shell input keyevent KEYCODE_HOME |
SSHDroid へ接続する
1 | am start -n berserker.android.apps.sshdroid/.MainActivity |
で起動する。
Tera term で ssh:2222 で接続できる。ユーザ名は「root」でパスワードは「admin」になっている。
各種コマンドは busybox だそうで .bin がパスに追加されている。残念ながら su にはなれないが、vi が使えるのがいい。
WinSCP でつなぐことができるので、ファイル転送とかもできると思う。
その他
SSHDroid は SSH 接続するだけなので、Python を動かしたり、apt-get したりできない。このあたりは、Termux を使うといいらしいのだが、これは後で試してみる。
Termux – Google Play のアプリ
https://play.google.com/store/apps/details?id=com.termux
また、Android Things はグラフィック系がごっそりカットされる…予定だったのだが、ディスプレイ関係はごっそり残っている。ラズパイだとCPUが遅く駄目なんだと思うのだが、アクションじゃないゲームのほうが動くんじゃないかな。
例えば、戦艦少女RをAndroid Thingsで起動できる。アズレンはちょっと重たくて初期画面のところで駄目になってしまう。
1 | com.huanmeng.zhanjian_jp_release/org.cocos2dx.cpp.AppActivity |
Android アプリを Android Things に入れてもあまり意味がないのだが、ひとまず Android と同じ用にグラフィック系も扱えることが分かる(完全ではないけれど)。プラス、GPIO にセンサーを繋げたりボタンを繋げたりすることができるので、例えばロボット操作なアプリを Google Play で配布しておいて、実際はラズパイ+Android Things+ロボットアームな機器、を操作できるというのも可能ではある。ピン番号とかラズパイ用のハットを合わせないと駄目なんだけど、アプリ自体の配布は楽になるのかも。
あと、GUI 絡みは Xamarin.Forms がそのまま動くし、Android Things の場合は root になれるので、荒っぽいファイル操作も可能になる。まだ試してないのだけど、あらかじめARMでビルドしたバイナリファイルを microSD に入れておけば Android 上で実行できると思うんだけど、どうなんのだろう。