2012-08-16 43 views
1

我正在使用Android 3.2.1宏基A500(電容屏)10「平板電腦我試圖捕捉觸摸屏幕的手指區域,壓力在屏幕上,我嘗試過Motionevent.getsize(),我總是得到0的值。另外,Motionevent.getpressure()總是給我1的值。 ),和getEventTime()似乎工作的罰款。如何捕捉壓力和麪積超過觸摸屏android

我缺少的東西嗎?還有什麼是我需要做什麼?

任何幫助將大大更加感激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 2012-10-30 09:29:25

+0

理查德馬丁,我有同樣的問題。我的一些電容設備給我不同的(真實)尺寸,但其他設備總是得到0.003921569。你贏了這個問題嗎? – djdance 2014-05-19 15:26:45

回答

0

這可能是因爲這些輸入報告類型未啓用。你可以嘗試下運行的adb shell中的命令,將打印,觸摸控制器支持可能的事件類型:

getevent -pl 
相關問題