LINEで送る

今回は、MotionEventの履歴を取得するためのgetHistorical系を紹介します。
Androidでは、入力イベントのオーバーヘッドを最小限にするために、タッチイベントをバッファリングしてから送出しています。
今までは最新のタッチイベントのみを表示していましたが、getHistorical系のメソッドを利用し、タッチイベント間に発生した情報も表示するようにします。

1. 履歴情報の取得
MotionEventから何個の履歴が存在するかを取得し、発生した時間や筆圧・座標を表示します。

// ログ出力
public void outputMotionEvent(MotionEvent event) {
	・
	・
	・
	
	log += "**************************************\n";
	// 座標・筆圧
	int hc = event.getHistorySize();
	log += "History Count : " + hc + "\n";
	for (int i=0; i<hc; i++)
	{
		log += "-------------------------\n";
		log += "Pos : " + i + "\n";

		// 発生時間
		log += "Time : " + event.getHistoricalEventTime(i) + "\n";
		// 筆圧
		log += "Pressure : " + event.getHistoricalPressure(i) + "\n";
		// X, Y座標
		log += "Point : " + event.getHistoricalX(i) + ", " + event.getHistoricalY(i) + "\n";
	}

	m_LogText.setText(log);
}

実際にアプリケーションを実行すると、MotionEventにバッファリングされていたタッチイベントの情報が表示されます。
この履歴情報を利用することで、ペイントツールなどで、スムーズな入力を実装することができるかと思います。
また、注意点としましては、履歴情報はACTION_MOVEの時にのみ存在し、その他のACTIONではMotionEvent.getHistorySize()から0が返ってきます。
0の場合は、getHistorical系のメソッドを実行すると、例外が発生するのでご注意ください。

以上で、Androidでスタイラスを利用する方法についての記事は終了となります。
サンプルソースはこちらにアップしてありますので、興味のある方は実際に試して頂ければと思います。

Top