Android – Как получить информацию о сыром сенсорном экране?

Я работаю над приложением для рисования для Android, и я бы хотел использовать необработанные данные с сенсорного экрана устройства, чтобы настроить кисть пользователя по мере их рисования. Я видел другие приложения для Android (например, iSteam), где размер кисти зависит от размера вашего отпечатка пальца на экране. Что касается приложений для рисования, это будет огромная функция.

Есть ли способ получить эти данные? Некоторое время я искал Google, но я не нашел ни одного источника, демонстрирующего его. Я знаю, что это возможно, потому что Dolphin Browser добавляет поддержку Multi-Touch герою без каких-либо изменений ниже уровня приложения. Вы должны иметь возможность получить 2D-матрицу необработанных данных или что-то еще …

Я бы очень признателен за любую помощь, которую я могу получить!

В классе Motion Event есть некоторые свойства. Вы можете использовать метод getSize (), чтобы найти размер объекта. Класс Motion Event также дает доступ к давлению, координатам и т. Д. …

Если вы проверяете APIDemos в SDK, есть простое приложение paitning под названием TouchPaint

package com.example.android.apis.graphics; 

Он использует следующее для рисования на холсте

 @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); mCurDown = action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_MOVE; int N = event.getHistorySize(); for (int i=0; i<N; i++) { //Log.i("TouchPaint", "Intermediate pointer #" + i); drawPoint(event.getHistoricalX(i), event.getHistoricalY(i), event.getHistoricalPressure(i), event.getHistoricalSize(i)); } drawPoint(event.getX(), event.getY(), event.getPressure(), event.getSize()); return true; } private void drawPoint(float x, float y, float pressure, float size) { //Log.i("TouchPaint", "Drawing: " + x + "x" + y + " p=" // + pressure + " s=" + size); mCurX = (int)x; mCurY = (int)y; mCurPressure = pressure; mCurSize = size; mCurWidth = (int)(mCurSize*(getWidth()/3)); if (mCurWidth < 1) mCurWidth = 1; if (mCurDown && mBitmap != null) { int pressureLevel = (int)(mCurPressure*255); mPaint.setARGB(pressureLevel, 255, 255, 255); mCanvas.drawCircle(mCurX, mCurY, mCurWidth, mPaint); mRect.set(mCurX-mCurWidth-2, mCurY-mCurWidth-2, mCurX+mCurWidth+2, mCurY+mCurWidth+2); invalidate(mRect); } mFadeSteps = 0; } 

Надеюсь, это поможет 🙂

Я работаю над чем-то подобным, и я бы предложил посмотреть классы Canvas и Paint . Взгляд на getHistorySize () в Motion Event также может быть полезен для выяснения того, как долго определенный удар был в игре.