Ограничить количество касаний на Android?

1

У меня есть небольшое тестовое приложение на Android, которое предназначено для проверки входных данных мультитач-трека, но я всегда получаю два касания одновременно на своем Evo. Кто-нибудь знает, является ли это ограничением для Android или аппаратного обеспечения?

Кстати, вот мой тестовый класс, чтобы вы могли попробовать сами.

import java.util.HashMap;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;

public class PressureView extends View
{
    private HashMap<Integer, Spot> mSpots = new HashMap<Integer, Spot>();
    private final int[] mColors;
    private final Paint mPaint;

    public PressureView(Context context)
    {
        super(context);
        mPaint = new Paint();
        mPaint.setStyle(Style.FILL);
        mColors = new int[]{Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.MAGENTA};
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);

        canvas.drawColor(Color.WHITE);
        for(int id : mSpots.keySet())
        {
            Spot spot = mSpots.get(id);
            mPaint.setColor(spot.Color);
            canvas.drawCircle(spot.X, spot.Y, spot.Pressure*500, mPaint);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        System.out.println("************************** " + event.getPointerCount() + " Pointers");

        for(int i = 0; i < event.getPointerCount(); i++)
        {
            int id = event.getPointerId(i);

            Spot spot = null;
            if(mSpots.containsKey(id))
            {
                spot = mSpots.get(id);
            }
            else
            {
                spot = new Spot();
                spot.Color = mColors[mSpots.size()];
            }

            if(event.getAction() == MotionEvent.ACTION_UP) spot.Pressure = 0;
            else spot.Pressure = event.getPressure(id);

            spot.X = event.getX(id);
            spot.Y = event.getY(id);

            mSpots.put(id, spot);
        }

        invalidate();

        return true;
    }

    private class Spot
    {
        public float X, Y, Pressure;
        public int Color;
    }
}
  • 0
    Я почти уверен, что это ограничение Android ... у него даже не было поддержки двух касаний до недавнего времени.
Теги:
multi-touch

1 ответ

0
Лучший ответ

Похоже, что в настоящее время все устройства HTC могут использовать только два пальца с несколькими касаниями, но Android SDK поддерживает больше пальцев. Например. Galaxy S i9000 поддерживает более http://www.youtube.com/watch?v=KRCDRXYJBCY.

  • 0
    Классное видео, спасибо!
  • 0
    проверено htc g1, герой и желание. обе поддерживают только 2 кнопки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню