Android StudioでAndroid Thingsアプリを作成する


Android StudioでAndroid Things用のシンプルなアプリを作成してみた。
また、アプリ作成の際に遭遇したエラーや開発Tipsも紹介する。

## 用意するもの
- Android Thingsインストール済みのラズパイ3セット
  - [インストール記事はこちら](https://qiita.com/ikemura23/items/ff1ea63f1dba91ecd331)
- モニタ
  - HDMI端子があればなんでもOK
- USBマウス＋USBキーボード
  - ラズパイ3に接続して操作する

## 作成したアプリ

画面に「Hello World」文字を表示するだけのシンプルなアプリを作成する。

### これが完成物

<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/d2565da3-7a70-11f0-e9a8-e8b2cf7c36df.png">

### コードはこちら

https://github.com/ikemura23/android-things-sample


## アプリ作成について

### プロジェクト作成

Android StudioでAndroid Thingsのプロジェクトを作成することができる。

今回は画面に表示するので 「Android Things Empty Activity」 を選択する。

（画面がないプロジェクトならNo Activity or Peripheral Activityでいいんだろうか）

<img width="700" alt="スクリーンショット 2019-12-20 22.07.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/305a371b-599f-f313-233c-ad76e7f7a1bc.png">

プロジェクト名やActivity名はAndroidの開発と全く同じ

### プロジェクト作成後
このような画面になるはず

<img width="1090" alt="スクリーンショット 2019-12-20 22.27.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/99449820-65bd-e682-1957-9634ce11ed57.png">

完全に見た目がAndroidアプリだね！

### Android Thingsと接続

アプリをビルドするため、adbコマンドでAndroid Thingsに接続する。

Android ThingsのIPアドレスはOSのデフォルト画面で知ることができる。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/533998df-312d-93a5-0eeb-b54b3ba61b81.png">

接続コマンドは以下

```console
$ adb connect 192.168.0.8
```

### 初期環境ではビルドエラーになる

Android Studioで自動作成されたプロジェクトはエラーになり、そのままではビルドできない。。。

![2019-12-20-22-29-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/f788d035-0fac-927c-1df5-7dc1d70bed80.png)

以下のエラーメッセージが出ていた。

<img width="943" alt="スクリーンショット 2019-12-20 22.30.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/b51316ce-c3ef-c775-117c-f5ddaffd2cbf.png">

「activityにテーマTheme.AppCompatを使う必要がある」と怒られる。

うーん、、、これは初期コード作成のバグだろうか。
プロジェクト作成時にAndroidアプリ用のコードが作成され、それがAndroid Thingsで使用できないと予想。

仕方ないので[こんな感じ](https://github.com/ikemura23/android-things-sample/commit/5aa7a425c08b3190c5ae5b31051417c3a0808c0f)に修正した。
（テーマを`Theme.AppCompat`に指定しただけ）


### 無事にビルドできた。

テーマをTheme.AppCompatに指定するとビルドが成功して画面が表示された。

<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/e889988a-395c-b07e-a076-b09dad21af7c.png">

もう完全にAndroidアプリ、アクションバーが表示されてるしｗ

### アクションバーを消す

アクションバーが消えればAndroid Thingsアプリっぽくなるかもしれない。

[このコミット](https://github.com/ikemura23/android-things-sample/commit/21d3aeb15fe19c99b2e18dbf4bc68c404ec4fc1b)でアクションバーを消して、再ビルドしてみた。

<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/30645a7e-9fc4-cb22-6db7-ced65d8992a6.png">

よし、これで脱Androidアプリできて、Android Thingsアプリっぽくなった。

### これでミッション完成
とりあえず、今回やりたいことは達成した。

あとはボタンや文字を追加してUIを装飾したり、API通信するコードを実装したり、好きに発展させるといい。

## 開発Tips

開発時、ラズパイ3に USBマウス ＋ USBキーボード を接続して操作してもいいが、机の上がゴチャゴチャになって邪魔である。

そんなときには **[Vysor](https://chrome.google.com/webstore/detail/vysor/gidgenkbbabolejbgbpnhbimgjbffefm)** を使うといい。

Vysorを使えば以下のメリットがある。

- PCにAndroid Thingsの画面を表示できる
- PCから画面をリモート操作できる（**USBマウス、キーボードが不要になる**）

Vysor経由のリモート操作は若干カクつくのが難点。
でもマウスキーボード不要の利点は大きい。

ちなみに、VysorのフリープランでOK！
（自分は広告が邪魔なので、１ヶ月だけ有料プランをお試し中）