マルチタッチ

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

注目

マルチタッチインターフェースを使用するには、クライアントを最低でもバージョン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()

# 軌跡を記録します。呼び出し後、タイムアウト時間(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)