Help us understand the problem. What is going on with this article?

Android ThingsをRaspberry Pi3で使ってみた

More than 3 years have passed since last update.

概要

前提

  • Android Studioはインストール済み
  • adbコマンドを実行するためのパスを通し済み

Android Thingsをラズパイに入れて動かしてみる

Android Thingsの準備

周辺機器と接続してみる

  • ラズパイにSDカードを挿入し、ラズパイを下記のように周辺機器と接続
    • TV <-> HDMI端子 <-> Raspberry Pi3
    • 電源アダプタ <-> Raspberry Pi3
  • 電源を入れると、下記のような画面になる
    IMG_8225.JPG

  • しばらく経ち、下記のような画面になればOK
    IMG_1670.JPG

ネットワーク接続

  • 有線で接続していれば上記画像の「Not Connected」の箇所にIPアドレスが表示されるので下記コマンドで接続可能(ただし、PCも同一ネットワーク上にないといけないので注意)
$ adb connect <ip-address>
connected to <ip-address>:5555

※MDNSをサポートしていれば下記でもいけるみたい
$ adb connect Android.local
  • デバイスの接続確認は下記コマンド実施
$ adb devices
List of devices attached
<ip-address>:5555 device

有線がない場合 (ポケットWifiしかないときや、外でWifiしか繋げないなど)はどうすれば良いのか。。
色々と探してみたが、やはり一度は有線に繋ぐ必要がある模様。
もし有線に一度も繋がなくて良い方法をご存知の方いらっしゃいましたら、教えてくださいmm

  • Wifiで接続するには、上記で一度「adb connect」で接続した後に下記コマンドを実行
$ adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \
    -e passphrase <Network_Passcode>
  • 接続を確認するには下記コマンド実施し、下記の様な項目が出てくればOK
$ adb logcat -d | grep Wifi
...
04-10 12:30:35.265  1287  1287 V WifiWatcher: Network state changed to CONNECTED
04-10 12:30:35.266  1287  1287 V WifiWatcher: SSID changed: "SSID"
04-10 12:30:35.268  1287  1379 I WifiConfigurator: Successfully connected to SSID
  • Wifiに接続されると、画面上にもWifi接続の情報が出てくるので、有線を外して再度WifiのIPアドレスで接続し、接続状況を確認(ここもPCは同一ネットワーク上にある必要がある)
■WifitのIPアドレス指定で接続
$ adb connect <ip-address>
connected to <ip-address>

■Pingで接続確認
$ adb shell ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=6.67 ms
  • Wifiの設定をリセットする場合は下記コマンドを実施
$ adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Reset

Lチカサンプルをやってみる

$ git clone git@github.com:beta-yumatsud/sample-button.git
  • Android Studioを起動後、「Open an existing Android Studio project」を選択し、cloneしてきたプロジェクト開く
  • githubに記載のある配線図通りに配線を接続 (下記は接続してみた図)
    IMG_2741.JPG

  • Androidアプリと同様、Runボタンからアプリを実行。正しくAndroid Thingsを入れたラズパイと繋がっていると下記のようにConnected Devicesに出てくるので、こちらで実行
    IMG_8255.JPG

  • Android Studio上でエラーなどが出なければ正しくインストールされるので、早速ボタンを押してみる。ボタンを押してLEDが光れば成功!!
    IMG_6643.JPG

ここまでできれば、ボタンを押したら通信するようにすることも可能なので、このサンプルをベースに色々とやってみると面白いかもですね。

開発メモ

  • アプリケーションのlogは通常のアプリと同様logcatから見ることができる
  • Android Device Monitorを起動すると通常のAndroidデバイスと同様にデバイスの中身が確認可能
  • Android Studioで新規にアプリケーションを実装するときは、一旦Templateをimportしてからから実装し始める必要あり(多分)

コマンドメモ

■接続
$ adb connect <ip-address>

■接続デバイス確認
$ adb devices

■ラズパイにログイン
$ adb shell

■バックボタンイベント
$ adb shell input keyevent KEYCODE_BACK

■ホームボタンイベント
$ adb shell input keyevent KEYCODE_HOME

■強制終了
$ adb shell am force-stop <パッケージ名>

■インストールされているパッケージ一覧確認
$ adb shell pm list package

個人的感想

  • 一度ネットワークに接続してしまえば、ラズパイをモニタに接続する必要はないのは良し
  • Androidアプリのデプロイは、deviceに接続された状態でAndroid StudioからデプロイすればOKなのは楽ちん
  • ネットワーク無しの場合、PCとUSB接続してビルドする開発ができないのは残念
  • 理想は、ネットワーク無しでもArduinoの様にPCと接続してアプリの開発ができると嬉しい(Androidアプリと同様)

Next

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした