ZawaWorks’s diary

プログラミング技術メモ

Android×Processing:adb getevent編

はじめに

 前に紹介したadbコマンドをProcessingと組み合わせてみました。この記事ではAndroid端末のタッチイベントをProcessingを使ってリアルタイムでアニメーションします。

環境設定

  • Processing3.3.6
  • Xperia XZ
  • Windows10

おさらい

 adbのgeteventコマンドが分からない方は前の記事を読んでから次へ進んでください。

zawaworks.hatenablog.com

実装方法

 今回使うコマンドはadb shell getevent -ltです。これで得たログデータをテキストファイルに書き込み、それをProcessingで読み込みます。

用意するディレクト

  • AdbGeteventフォルダー
    • AdbGetevent.pde
    • dataフォルダー
      • pos.txt

AdbGetevent.pde

void setup() {
  size(360, 640);

  //テキストファイルを空に
  PrintWriter output;  
  output = createWriter("data/pos.txt");
  output.close();
}

void draw() {
  background(0, 0, 255);

  //テキストファイルを読み込む
  String []lines = loadStrings("data/pos.txt");

  float posX = 0;
  float posY = 0;

  for (int i=0; i<lines.length; i++) {

    int getx_point = lines[i].indexOf("ABS_MT_POSITION_X ");
    int gety_point = lines[i].indexOf("ABS_MT_POSITION_Y ");


    if (getx_point != -1) { 

      String result = lines[i].substring(getx_point+21, getx_point+29);

      posX = unhex(result) / 3.0;//Processingの画面に合わせる

      continue;
    }

    if (gety_point != -1) {

      String result=lines[i].substring(gety_point+21, gety_point+29);

      posY = unhex(result)/3.0;//Processingの画面に合わせる

      noStroke();
      fill(-1);
      ellipse(posX, posY, 10, 10);
    }
  }
}

使い方

  • はじめにAdbGetevent.pdeを実行させる
  • dataディレクトリの中でadb shell getevent -lt > pos.txt
  • スマホを操作するとジェスチャの動きが描画される

デモ


Processing×ADBコマンド:getevent編

  • 使用したアプリ

play.google.com

GitHub

github.com