LINEで送る

今回から、Androidでスタイラスを利用する方法を紹介します。
まずは、基本的なツールの種類・座標・筆圧を取得する方法をまとめました。

開発環境ですが、Mac版のEclipseにADTをインストールして構築を行いました。
動作確認はCintiq Comapnion Hybridを利用しました。

android_1_3

1. プロジェクトの作成
SDKのバージョン設定ですが、今回はCintiq Companion Hybridを対象としているので、古いバージョンには対応せずに、なるべく新しいバージョンに設定しています。
Activityは、「MainActivity」というBlack activityを作成しています。

android_1_1

2. レイアウトの設定
MainActivityのレイアウトファイルに、以下のようなレイアウトを作成します。
RelativeLayoutは最初から配置してありますが、IDが設定されていないので、「main_layout」というIDを割り当てました。
main_layout内には、ログを表示するTextView(IDはlog_text)を設置してあります。

android_1_2

3. インターフェースの実装
MainActivityでタッチイベントを取得するために、OnTouchListenerインターフェースを実装します。

public class MainActivity extends Activity implements OnTouchListener

4. タッチイベントの設定
OnCreate内でタッチイベントを取得したいレイアウトに対し、setOnTouchListenerでリスナーを設定します。
今回はActivity自身にインターフェースを実装したので、thisを設定しています。
また、ログを表示するためのTextViewも取得しています。

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	
	// タッチイベント設定
	RelativeLayout layout = (RelativeLayout)this.findViewById(R.id.main_layout);
	layout.setOnTouchListener(this);
	
	// テキストビューの取得
	m_LogText = (TextView)this.findViewById(R.id.log_text);
}

5. タッチイベントの処理実装
MainActivityに、タッチイベントの処理を記述します。
各値を取得し、ログとして画面に出力を行っています。

// タッチイベントの処理
@Override
public boolean onTouch(View v, MotionEvent event) {
	
	String log = "";
	
	// 種別の取得
	int type = event.getToolType(0);
	if (type == MotionEvent.TOOL_TYPE_FINGER)
	{
		log += "ToolType : Finger\n";
	}
	else if (type == MotionEvent.TOOL_TYPE_STYLUS)
	{
		log += "ToolType : Stylus\n";
	}
	else if (type == MotionEvent.TOOL_TYPE_ERASER)
	{
		log += "ToolType : Eraser\n";
	}
	else
	{
		log += "ToolType : Unknown\n";
	}
	
	// タッチ座標の取得
	float x = event.getX();
	float y = event.getY();

	log += "X : " + x + "\n";
	log += "Y : " + y + "\n";
	
	// 筆圧の取得
	float pressure = event.getPressure();
	log += "Pressure : " + pressure + "\n";
	
	m_LogText.setText(log);
	
	return true;
}

まず、getToolTypeでは、ツールの種別(スタイラスや消しゴム・指など)を取得することができます。
この種別を利用することで、消しゴムの機能などを実装することができます。
座標の取得については、指でのタッチと同様にgetX,、getYを利用します。
筆圧はgetPressureというメソッドで取得することができます。
筆圧の値は0〜1で返され、指など筆圧を取得できないものは1で返されます。

それでは、端末にアプリをインストールして試してみましょう。
ペンの種別や座標、筆圧が取得できるかと思います。

サンプルソースはこちらにアップしてありますので、興味のある方は実際に試して頂ければと思います。

これで基本的なパラメータは取得できたかと思いますので、次回は他のパラメータの紹介をしたいと思います。

Top