SL4A+PythonでAndroidをリモートコントロール

SL4Aのリモートコントロール機能を使って、Androidをリモートコントロールするメモ。

SL4AのプロジェクトページRemoteControlってページがあったので試してみた。
僕の英語能力では理解できなかったのでSL4A/ghome makotofも参考に。

  1. Android側準備
    1. SL4Aをインストール
    2. Python for Androidをインストール
    3. SL4Aを起動して、メニューを表示。「View」「Interpreters」を選択
    4. インタープリター一覧が表示されたらもう一度メニューを表示。「Start Server」を選択
    5. 「Public」を選択
    6. すると通知領域にSL4Aが現れるので、それをタッチ
    7. 起動しているスクリプト一覧が表示される。その中にServerという項目に表示されているIPアドレスとポート番号(ここでは192.168.0.100:4321と仮定)をメモしておく
  2. PC側準備
    1. Pythonのインタープリターを準備
    2. android.pyをダウンロード。Pythonから見える場所に置く。(Windowsの場合「C:\Python27\Lib」とか)
    3. コンソールで環境変数を設定。Windowsなら「set AP_HOST=192.168.0.100{改行}set AP_PORT=4321」Linuxなら「export AP_HOST=192.168.0.100{改行}export AP_PORT=4321」
    4. SL4A向けのプログラムが動く!


内部の実装を見ると、インタープリターはパソコン側のものを使って、android固有の動作をする時はJSON形式のメッセージをTCP経由で端末に投げているみたい。通信部分に言語依存なところは無いから、もしかするとAndroid端末側にPythonインタープリターは不要かも。プロトコルさえ合わせればどんな言語でも操作できるわけだね。