Android - Как я получаю необработанную информацию сенсорного экрана?

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

Существует ли способ получить эти данные? Я погуглил долгое время, но я не нашел источника, демонстрирующего это. Я знаю, что это возможно, потому что Браузер дельфина добавляет мультисенсорную поддержку Герою без любых изменений под прикладным уровнем. Необходимо смочь получить 2D матрицу необработанных данных или чего-то...

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

5
задан Ben Gotow 14 January 2010 в 22:26
поделиться

3 ответа

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

6
ответ дан 13 December 2019 в 22:08
поделиться

Если вы проверяете 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;
        }

Надеюсь, что помогает :)

4
ответ дан 13 December 2019 в 22:08
поделиться

strip _ tags () удаляет HTML из значения переменной. Второй параметр полезен, если требуется создать исключения и оставить определенные теги в, например, тег p aragreh.

$text = '<p>Paragraph.</p> <!-- boo --> <a href="#">Other text</a>';
echo strip_tags($text); // Paragraph. Other text
echo strip_tags($text, '<p><a>'); // <p>Paragraph.</p> <a href="#">Other text</a>

phpQuery

Если вы хотите остаться в стороне от регулярных выражений, можно использовать phpQuery для обработки значения, а затем использовать селекторы и методы в стиле jQuery для получения значения:

// Bring in phpQuery
require("phpQuery-onefile.php");
// Load up our HTML
phpQuery::newDocumentHTML("<a href='http://sampsonresume.com/'>Homepage</a>");
// Print the HREF attribute of the first Anchor
print pq("a:first")->attr("href"); // http://sampsonresume.com/

Regex

Для поиска URL-адреса можно использовать следующее:

$var = "<a href='http://sampsonresume.com/'>Homepage</a>";
preg_match("(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)",$var,$match);
print $match[0]; // http://sampsonresume.com/
-121--4690954-

Проход 1.)

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>

    <xsl:template match="Detail">
        <Detail>
            <xsl:copy-of select="@*"/>
        <xsl:value-of select="." disable-output-escaping="yes" />
        </Detail>
    </xsl:template>

</xsl:stylesheet>

Будет производить:

<?xml version="1.0" encoding="UTF-8"?>
<Detail uid="6"> 
    <div class="heading">welcome to my page</div>
    <div class="paragraph">this is paraph</div>
</Detail>

Pass 2.)

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*| node()" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="div[@class='heading']">
        <h1><xsl:value-of select="."/></h1>
    </xsl:template>

    <xsl:template match="div[@class='paragraph']">
        <p><xsl:value-of select="."/></p>
    </xsl:template>

</xsl:stylesheet>

Производит:

<?xml version="1.0" encoding="UTF-8"?>
<Detail uid="6">
<h1>welcome to my page</h1>
<p>this is paraph</p>
</Detail>
-121--3632201-

Я работаю над чем-то похожим, и я бы предложил посмотреть на Canvas и Paint также. Просмотр getHistiveSize () в событии движения также может быть полезен для определения того, как долго был воспроизведен конкретный штрих.

0
ответ дан 13 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: