Check actual methods from MotionEvent for multitouch input instead of SDK version

This commit is contained in:
pelya
2010-11-01 15:12:28 +02:00
parent 32643889bb
commit 3d83dccf1d
2 changed files with 18 additions and 4 deletions

View File

@@ -22,15 +22,29 @@ import android.widget.TextView;
import java.lang.Thread;
import java.util.concurrent.locks.ReentrantLock;
import android.os.Build;
import java.lang.reflect.Method;
abstract class DifferentTouchInput
{
public static DifferentTouchInput getInstance()
{
if (Integer.parseInt(Build.VERSION.SDK) <= 4)
return SingleTouchInput.Holder.sInstance;
else
boolean multiTouchAvailable1 = false;
boolean multiTouchAvailable2 = false;
// Not checking for getX(int), getY(int) etc 'cause I'm lazy
Method methods [] = MotionEvent.class.getDeclaredMethods();
for(Method m: methods)
{
if( m.getName().equals("getPointerCount") )
multiTouchAvailable1 = true;
if( m.getName().equals("getPointerId") )
multiTouchAvailable2 = true;
}
if (multiTouchAvailable1 && multiTouchAvailable2)
return MultiTouchInput.Holder.sInstance;
else
return SingleTouchInput.Holder.sInstance;
}
public abstract void process(final MotionEvent event);
private static class SingleTouchInput extends DifferentTouchInput