更新到 Lollipop 后,Spen 触摸监听器无法正常工作

Posted

技术标签:

【中文标题】更新到 Lollipop 后,Spen 触摸监听器无法正常工作【英文标题】:Spen touch listener not working after update to Lollipop 【发布时间】:2015-10-28 10:26:33 【问题描述】:

我正在使用 SPenEventLibrary 来识别触摸是由手指还是 Spen 完成的。在我更新到 android L 之前,它一直都在工作。

设备:Galaxy Note 3。

Spen 库是最新的:libspen23.jar、pen-v3.1.8.jar

安卓版本: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 触摸屏幕时,会调用 onTouchFinger() 而不是 onTouchPen()。在较旧的 Android 版本上,调用了 onTouchPen()。

【问题讨论】:

我也遇到了同样的问题...请大家帮忙! 【参考方案1】:

这是三星开发者论坛的回答:

public boolean onTouch(View view, MotionEvent event)

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);

【讨论】:

以上是关于更新到 Lollipop 后,Spen 触摸监听器无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

三星 Note 3:按下 SPen 侧键后出现 Activity Memory Leak

Android lollipop 更新问题

Android系统全局触摸事件监听

历代三星Note系列主要参数对比,更新于2021年6月

Android Lollipop 应用通知设置

cocos2d-x 事件分发机制 ——触摸事件监听