2012-07-19 109 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「

相關問題