2012-08-16 4 views
1

Android 3.2.1과 함께 Acer A500 (용량 성 스크린) 10 인치 태블릿을 사용하고 있습니다. 화면을 터치하는 손가락의 영역과 Motionevent.getpressure()는 항상 1의 값을 제공합니다.안드로이드에서 터치 스크린을 통해 압력과 면적을 캡처하는 방법

getX()와 같은 다른 함수는 getY () 및 getEventTime()는 잘 작동하는 것 같다.

내가 할 필요가 무엇을

내가 뭔가를 놓치고 있습니까? 거기에 ?

어떤 도움이 될 것입니다 크게 appreci ated. 여기

코드입니다 :

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; 
} 

}

+0

용량 성 스크린은 한 점에 적용되는 압력을 제공 할 수 없습니다. 위치와 무게 (즉, 적용된 표면의 비율) 만 제공 할 수 있습니다. mm2 단위로 정확한 표면을 제공 할 수는 없지만 상관 관계가 있습니다. 저항성 터치 스크린 만이 적용되는 압력을 줄 수 있으며 터치 이벤트에 대해 매우 우수한 dpi 정밀도를 갖습니다. HTH – zmo

+0

Richard Martin, 나도 똑같은 문제가 있습니다. 내 용량 성 장치 중 일부는 나에게 다른 (실제) 크기를 갖지만 다른 장치는 항상 0.003921569가됩니다. 이 문제에서이기셨습니까? – djdance

답변

0

그것은 그 입력 보고서 유형에 사용할 수없는 가능성이 있습니다. adb 쉘에서이 명령을 실행하면 터치 컨트롤러가 지원하는 가능한 이벤트 유형이 인쇄됩니다.

getevent -pl 
관련 문제