Androidでスタイラスを利用する方法①
2014年02月24日
今回から、Androidでスタイラスを利用する方法を紹介します。
まずは、基本的なツールの種類・座標・筆圧を取得する方法をまとめました。
開発環境ですが、Mac版のEclipseにADTをインストールして構築を行いました。
動作確認はCintiq Comapnion Hybridを利用しました。
1. プロジェクトの作成
SDKのバージョン設定ですが、今回はCintiq Companion Hybridを対象としているので、古いバージョンには対応せずに、なるべく新しいバージョンに設定しています。
Activityは、「MainActivity」というBlack activityを作成しています。
2. レイアウトの設定
MainActivityのレイアウトファイルに、以下のようなレイアウトを作成します。
RelativeLayoutは最初から配置してありますが、IDが設定されていないので、「main_layout」というIDを割り当てました。
main_layout内には、ログを表示するTextView(IDはlog_text)を設置してあります。
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で返されます。
それでは、端末にアプリをインストールして試してみましょう。
ペンの種別や座標、筆圧が取得できるかと思います。
サンプルソースはこちらにアップしてありますので、興味のある方は実際に試して頂ければと思います。
これで基本的なパラメータは取得できたかと思いますので、次回は他のパラメータの紹介をしたいと思います。