Android の画面上ですべての指を取得する必要があるアプリケーションを開発しています。これは複雑ではなく、数行のコードで作成できます。
ただし、アンドロイドがコールバックを送信する方法は、私が必要とするものではありません。私は多くのテストを行いましたが、ここに私が見つけたものがあります:
彼が指の位置を送信した後、「大きな」動きがない場合、彼は onTouch イベントを送信しません。
また、指が画面から削除された場合 (たとえば、3 本の指があり、1 本が削除された場合)、残りの指の少なくとも 1 本が画面上で移動した場合にのみ、次のイベントが送信されるように見えます。
私は指の追跡とオブジェクトとのマッチングを行っていますが、これを適切に行うには、常にすべての指の位置を知る必要があります。指が動いていないときでも指のタッチイベントを「リクエスト」する方法がない場合、コールバックイベントなしで現在の指の位置にアクセスするにはどうすればよいですか? 他の解決策はありますか?
これが私のコードです:
ArrayList<Vector3> fingerTips = new ArrayList<Vector3>();
@Override
public boolean onTouchEvent(MotionEvent event) {
final int points = event.getPointerCount();
String out = "==========\n";
fingerTips.clear();
for(int i = 0; i < points; i++){
out += "\tPoint "+i+"\t("+event.getX(i)+", "+event.getY(i) + ")\n";
fingerTips.add( new Vector3(event.getX(i), event.getY(i)) );
}
Log.i(TAG, out);
// Send touches to SurfaceView
chwaziViewGL.onUpdateFingerTips(fingerTips);
return true;
}