マルチタッチ

通常の自動化に加えて、高度なマルチタッチインターフェースも提供しています。このインターフェースはハードウェア操作の軌跡を記録・再生・構築・保存する機能を備えており、複雑な指操作を実現できます。

注目

マルチタッチインターフェースを使用するには、クライアントを最低バージョン 9.22 にアップグレードする必要があります。最適な互換性を得るために、サーバー側も同時にアップグレードすることをお勧めします。

使用方法をすぐに理解していただくために、「開発者向けオプション」-「入力」-「タップ操作のフィードバックを表示」および「ポインタの位置」機能を有効にすることをお勧めします(有効にしていない場合、フィードバックが表示されないことがあります)。以下のサンプルコードは、画面の左上に X の記号を描く方法を示しています。

touch = d.touch()
finger0 = touch.contact(0)
finger1 = touch.contact(1)

# --- 1. 開始点の押下 ---
finger0.down(150, 320)
finger1.down(450, 320)
touch.wait(20)

# --- 2. 軌跡の移動 (10座標点) ---
finger0.move(180, 350)
finger1.move(420, 350)
touch.wait(20)

finger0.move(210, 380)
finger1.move(390, 380)
touch.wait(20)

finger0.move(240, 410)
finger1.move(360, 410)
touch.wait(20)

finger0.move(270, 440)
finger1.move(330, 440)
touch.wait(20)

finger0.move(300, 470) # 交差点の中心
finger1.move(300, 470)
touch.wait(20)

finger0.move(330, 500)
finger1.move(270, 500)
touch.wait(20)

finger0.move(360, 530)
finger1.move(240, 530)
touch.wait(20)

finger0.move(390, 560)
finger1.move(210, 560)
touch.wait(20)

finger0.move(420, 590)
finger1.move(180, 590)
touch.wait(20)

finger0.move(450, 620) # 終点
finger1.move(150, 620)
touch.wait(20)

# --- 3. 指を離す ---
finger0.up()
finger1.up()

# 操作を実行
touch.perform()

軌跡の記録

軌跡を簡単に構築できるように、記録機能も提供しています。この機能は実機上で操作する必要があります。

# マルチタッチセッションを取得
touch = d.touch()

# record() を呼び出すと、タイムアウト時間(120秒)以内に実機画面を操作するのを待ちます。
# すべての指が離れた時点で記録が終了し、戻ります。
touch.record()

# 軌跡をバイナリファイルとして保存できます
touch.save("/sdcard/touch.bin")

# そのまま軌跡を再生することもできます
touch.perform()

軌跡の保存

毎回コードで軌跡を再構築する手間を省くため、軌跡をファイルに永続化できる保存機能を用意しています。

# マルチタッチセッションを取得
touch = d.touch()

# 作成したばかりの軌跡を保存して後で読み込めます
touch.save("/sdcard/track0.bin")

軌跡の読み込み

ディスク上の軌跡ファイルから直接セッションに読み込むことができます。

# マルチタッチセッションを取得
touch = d.touch()

# ファイルから軌跡を読み込む
touch.load("/sdcard/track0.bin")

軌跡の構築

記録による軌跡構築だけでなく、コードを使って手動でタッチ軌跡を構築することもできます。以下では手動構築の方法とその他の利用可能な機能について説明します。有効なタッチ操作は、押下、移動、解放の3つのイベントで構成され、押下や移動などのイベントに圧力パラメータを設定できます。

# マルチタッチセッションを取得
touch = d.touch()

# 2本(またはそれ以上)の指入力を取得
finger0 = touch.contact(0)
finger1 = touch.contact(1)

# 指0を座標(150,320)で押下
# パラメータ z は指の圧力を表し、有効値は1~255、デフォルトは128
finger0.down(150, 320, z=128)

# 指0を(150,320)から(180,350)へ移動
finger0.move(180, 350, z=128)

# 20ミリ秒待機(finger0.wait(20) と同等)
touch.wait(20)

# 指0を離す
finger0.up()

# すべての軌跡をクリア
touch.reset()

# 操作を実行(wait パラメータは操作完了を待つかどうかを示す)
touch.perform(wait=True)