1

Android3.2.1でAcerA500(容量性スクリーン)10インチタブレットを使用しています。画面に触れている指の領域と画面上の圧力の量をキャプチャしようとしています。Motionevent.getsize()を試しました。また、常に値0を取得します。また、Motionevent.getpressure()は常に値1を取得します。

getX()、getY()、getEventTime()などの他の関数は正常に機能しているようです。

私は何かが足りないのですか?他にやらなければならないことはありますか?

どんな助けでも大歓迎です。

コードは次のとおりです。

package com.mygroup.myapp;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.util.Log;
import android.view.MotionEvent; 
import android.view.View;
import android.view.View.OnTouchListener;

public class MultiTouchTest extends Activity implements OnTouchListener{
StringBuilder builder = new StringBuilder();
TextView textView;
float[] x = new float[10];
float[] y = new float[10];
double[] p = new double[10];
float[] s = new float[10];
long[] t = new long[10];
boolean[] touched = new boolean[10];


private void updateTextView(){
    builder.setLength(0);
    for (int i = 0; i < 10; i++){
        builder.append(touched[i]);
        builder.append(", ");
        builder.append(x[i]);
        builder.append(", ");
        builder.append(y[i]);
        builder.append(", pressure = ");
        builder.append(p[i]);
        builder.append(", size = ");
        builder.append(s[i]);
        builder.append(", time = ");
        builder.append(t[i]);
        builder.append("\n");
    }
    textView.setText(builder.toString());
}

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    textView = new TextView(this);
    textView.setText("touch:");
    textView.setOnTouchListener(this);
    setContentView(textView);
}
//@Override

public boolean onTouch(View v, MotionEvent event){
    int action = event.getAction() & MotionEvent.ACTION_MASK;

    int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >>
    MotionEvent.ACTION_POINTER_INDEX_SHIFT;
    int pointerId = event.getPointerId(pointerIndex);

    switch(action){
    case MotionEvent.ACTION_DOWN:
    case MotionEvent.ACTION_POINTER_DOWN:
        touched[pointerId] = true;
        x[pointerId] = (int)event.getX(pointerIndex);
        y[pointerId] = (int)event.getY(pointerIndex);
        p[pointerId] = event.getPressure(pointerIndex);
        s[pointerId] = event.getSize(pointerIndex);
        t[pointerId] = event.getEventTime();
        break;
               ...
    }
    updateTextView();
    return true;
}

}

4

1 に答える 1

0

これらの入力レポートタイプが有効になっていない可能性があります。このコマンドをadbシェルで実行してみると、タッチコントローラーがサポートする可能性のあるイベントタイプが出力されます。

getevent -pl
于 2012-09-06T15:16:31.377 に答える