
タッチパネルを触った強さを取るサンプル#tryTouch00


タッチスクリーンをタッチされたときの強さを取り出す。
XperiaだとどうやらTouchの強さまではとれないらしい。
その場合は指が触れてはなされるまでの時間をうまいこと使って強さを表現することはできないだろうか?
押された強さは押された範囲によって大きくなるらしい。
例えば指先で叩くと1.0を超えるのはむずかしいけど、指の腹で叩くとすぐに超える。
getSizeで取り出したサイズによって値を変えるとうまくいくかもしれない。
●検索した事
Android マルチタッチ
android touchEvent 強さ
●開発環境
Eclipse IDE バージョン: 3.7 Indigo Service Release 2
ターゲットプラットフォーム: 2.1
API レベル: 7
package trial.sample.trytouch00; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.widget.EditText; public class TryTouch00Activity extends Activity { private EditText mEditTextPressure; // 押された強さ private EditText mEditTextSize; // 押されたサイズ private EditText mEditTextPower; // 押されたサイズ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 押された値を表示する this.mEditTextPressure = (EditText)this.findViewById(R.id.editText_Presure); this.mEditTextSize = (EditText)this.findViewById(R.id.EditText_Size); this.mEditTextPower = (EditText)this.findViewById(R.id.editText_Power); } // //////////////////////////////////////////////////////////// // タッチされたときに呼び出されます @Override public boolean onTouchEvent(MotionEvent event) { // 指が離された if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) { float pressure = event.getPressure(); float size = event.getSize(); // サイズが0でくる機種があるらしい if (size < 0.0) { size = 1.0f; } float power = pressure / size; this.mEditTextPressure.setText("" + pressure); this.mEditTextSize.setText("" + size); this.mEditTextPower.setText("" + power); } return super.onTouchEvent(event); } }
加速度センサーの値を取得するサンプル#trySensor00 Androidで音を鳴らすサンプル#trySound00