2012-07-19 64 views
1

我想仅在设备支持输入笔时才显示菜单项。有什么方法可以检查设备是否支持手写笔输入?

不幸的是,我发现没有检查设备或显示器是否支持手写笔/ Spen输入。

编辑: 在使用event.getToolType()触发MotionEvent之后,我可以区分手写笔和手指。 如果工具类型是TOOL_TYPE_STYLUS,我可以确定它支持手写笔。 如果不是我可以猜测是否有压力> 0(与how to detect if the screen is capacitive or resistive in an Android device?有关)

但我想知道它在我的活动的onCreate方法。

以下是不支持,不适合我。

Configuration config = getResources().getConfiguration(); 
if (config.touchscreen == Configuration.TOUCHSCREEN_STYLUS) 
    Toast.makeText(this, "TOUCHSCREEN_STYLUS", Toast.LENGTH_SHORT).show(); 

回答

0

我不认为有任何这样的事情来检测手写笔输入。我会假设如果设备具有触摸功能,它也可以响应手写笔。就我所知,Android并不特别支持手写笔输入。

3

在这里你(从Android文档) - 似乎只支持在4.0和以上。 http://developer.android.com/about/versions/android-4.0.html

Android现在提供API,用于接收从一个触笔输入 装置输入诸如数字化仪片剂外设或启用指示笔触摸屏 。

手写笔输入的操作方式与触摸或鼠标输入类似。 当触控笔与数字化仪接触时,应用程序会收到 触摸事件,就像使用手指触摸 显示屏时一样。当手写笔悬停在数字化仪上方时,应用程序会收到悬停事件,就像当鼠标指针在没有按钮被按下时在显示屏上移动时一样。

你的应用程序通过查询与使用getToolType()一个MotionEvent每个指针 相关联的“工具类型”手指,鼠标,手写笔和 橡皮输入之间可以区分目前定义的刀具类型 是:TOOL_TYPE_UNKNOWNTOOL_TYPE_FINGERTOOL_TYPE_MOUSETOOL_TYPE_STYLUS,并TOOL_TYPE_ERASER。通过查询工具类型, 您的应用程序可以选择通过手指或鼠标输入以不同方式处理手写笔输入 。

应用程序也可以查询哪些鼠标或光笔按钮 通过查询使用 getButtonState()一个MotionEvent的“按钮状态”按下。目前定义的按钮状态是: BUTTON_PRIMARYBUTTON_SECONDARYBUTTON_TERTIARYBUTTON_BACK,并 BUTTON_FORWARD。为方便起见,后退和前进鼠标按钮 会自动映射到KEYCODE_BACKKEYCODE_FORWARD键。 您的应用程序可以处理这些按键以支持基于 后退和前进导航的鼠标按钮。

除了精确地测量 接触的位置和压力​​,一些指示笔输入装置还报告 之间的距离测尖和数字化仪,所述触针的倾斜角,以及输入笔 取向角。你的应用程序可以查询该信息 使用getAxisValue()与轴线码AXIS_DISTANCEAXIS_TILT,和 AXIS_ORIENTATION

+0

这不是我的问题。 我知道它在TOOL_TYPE_STYLUS运动事件之后支持手写笔。 我想知道,在我的应用程序的开始。 – Felix 2012-07-19 17:42:04

+2

但是从技术上讲,只要它是一个电容式触控笔,并非所有设备都支持触控笔? ICS 4.0正式支持手写笔,但我倾向于认为所有设备都支持电容笔。只是我的0.02美元 - 在我的脑海中对我来说很有意义。 – mattdonders 2012-07-19 17:53:25

0

您可以检测S-笔等手写笔漂亮的可靠地通过输入管理:

boolean sPen = false; 
    if(Build.VERSION.SDK_INT > 15) { 
     InputManager inptmgr = (InputManager)getSystemService(INPUT_SERVICE); 
     int[] inputs = inptmgr.getInputDeviceIds(); 
     for(int i = 0;i<inputs.length;i++) { 
      if(inptmgr.getInputDevice(inputs[i]).getName().toLowerCase().contains("pen")) sPen = true; 
     } 
    } 

通常设备将其包含在他们适当的名称注册,例如,“蓝牙鼠标”,“罗技USB键盘“或”E_Pen“

相关问题