0

SPenEventLibrary を使用して、タッチが指またはスペンで行われたかどうかを認識しています。Android Lにアップデートするまでずっと動いていました。

デバイス: ギャラクシー ノート 3。

Spen lib は最新です: libspen23.jar、pen-v3.1.8.jar

Android バージョン: 5.0。

コードは簡単です:

mSPenEventLibrary.setSPenTouchListener(this, new SPenTouchListener(){

        @Override
        public boolean onTouchFinger(View view, MotionEvent event) {
            if (ApplicationPreferences.get(mContext).getSPENWristGaurdOnOff() == false) {
                return handleEvent(event);
            } else {
                return true;
            }
        }

        @Override
        public boolean onTouchPen(View view, MotionEvent event) {
            return handleEvent(event);
        }

        @Override
        public void onTouchButtonDown(View arg0, MotionEvent arg1) {
        }

        @Override
        public void onTouchButtonUp(View arg0, MotionEvent arg1) {
        }

        @Override
        public boolean onTouchPenEraser(View arg0, MotionEvent arg1) {
        }

    });

Spen で画面をタッチすると、onTouchPen() の代わりに onTouchFinger() が呼び出されます。古い Android バージョンでは onTouchPen() が呼び出されました。

4

1 に答える 1

1

これは、samsung 開発者フォーラムからの回答です。

public boolean onTouch(View ビュー、MotionEvent イベント) {

boolean done = false;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    if (event.getMetaState() == 0) {
        //Finger
        // Do whatever you need to do here
        done = true;
    }

    else if(event.getMetaState() == 512) {
        //Pen
        // Do whatever you need to do here
        done = true;
    }
}

else {
    if (event.getToolType(0) == MotionEvent.TOOL_TYPE_FINGER) {
        //Finger
        // Do whatever you need to do here
        done = true;
    }
    else if(event.getToolType(0) == MotionEvent.TOOL_TYPE_STYLUS) {
        //Pen
        // Do whatever you need to do here and then
        done = true;
    }
}
if (done)
    return true;
return super.onTouch(view, event);

}

于 2016-01-12T06:03:02.130 に答える