[Edison]Androidと接続してみる

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

EdisonとAndroidをつなげる

Edisonには標準のUSB接続ポートもついているので、いろいろなUSB機器を接続することができます。
今回はAndroidのスマフォ(Xperia Z2)を接続してみました。

動作環境

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.9.4
  • Edisonファームウェア : edison-rel1-maint-weekly_build_16_2014-10-14_14-56-19

ここでやっているように、初期セットアップとwifiセットアップは終わらせておいてください。
また、使用するAndroid端末はデバッグ可能にしておく必要があるので、このへんをみて設定しておきましょう。

実際にやってみる

ACアダプタでEdisonの電源をとる

USBポートはスマフォとの接続用に使用するので、いままで電源として使用していたポートは使用できません。
そのため、電源はACアダプタからとるようにします。
また、スマフォ接続用USBは(マイクロでなく)通常のUSBケーブルを使用するはずなので、
USBポートの横にあるスイッチを切り替え、通常のUSBポートを有効にします。

EdisonでAndroid SDKの準備

次に、Edison上でAndroid SDKをインストールしましょう。
ここからLinux用のSDKをダウンロードし、
scpでEdison側へ転送します。

% scp <ダウンロードしたファイル> root@<EdisonのIPアドレス>:

次にEdisonへログインし、adb等のツールをダウンロードする必要があります。
次のようにアップロードしたファイルを解凍したあと、android update sdkコマンドを実行しましょう。(けっこう時間がかかります)

root@edison:# tar -xzvf /path/your/<android-sdk-linux> && cd /path/your/<android-sdk-linux>/tools 
root@edison:/path/your/android-sdk-linux/tools# ./android update sdk --no-ui

スマフォとEdisonをUSBケーブルで接続

USBケーブルでスマフォとEdisonを接続します。すると、スマフォ側でデバッグOKにするかどうか聞かれるのでOKします。
下記のようにlsusbコマンドを実行してみると、端末を認識しているのがわかります。

root@edison:~# lsusb
Bus 001 Device 002: ID 0fce:51af Sony Ericsson Mobile Communications AB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

LinuxマシンにAndroid端末を接続する場合にはrulesファイルを記述する必要があるらしいので、
/etc/udev/rules.d/51-android.rulesに下記内容を記述します。

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666", GROUP="plugdev"

最後に設定ファイルをリロードし、adbサーバを再起動して準備完了です。

% udevadm control --reload-rules
% adb kill-server
% adb start-server

Androidにアクセスしてみる

では、adbをつかってEdisonからAndroid端末にログインしてみましょう。
問題なくログインできました。

root@edison:/path/your/android-sdk-linux/platform-tools# ./adb shell
shell@SO-03F:/ $

また、adbではイベントをAndroidに送ることもできます。下記では、任意の座標のタップイベントをEdisonから送っています。

#タップイベント送信
root@edison:~/android-sdk-linux/platform-tools# ./adb shell input touchscreen tap <x座標> <y座標>

上記プログラムを実行すると、自分の環境ではちょうどその位置にあったボタンがタップされました。

まとめ

今回はEdisonとAndroidを接続して操作してみました。
Edison側からイベントをおくったり、逆にAndroid側の操作内容を取得できたりするので、いろいろつ使い道がありそうですね。

参考サイトなど