我正在開發一款應用程序,旨在捕獲畫布上的文字。該應用程序設計用於HTC Flyer(Android 2.3.3)。Android HTC Flyer - 通過MotionEvents捕獲手寫筆
此設備已安裝Scribbler,因此我禁用了「自動啓動Scribbler模式」,但保留了「每個應用的筆歷史」選中狀態。
在我的測試中,我發現該應用程序可以在觸摸屏上檢測我的手指,但不能檢測到手寫筆。我按下了手寫筆上的按鈕組合無濟於事。
我已經從Android開發者基於TouchPaint代碼:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html
在上面的代碼
com.example.android.apis.graphics;
在我的Eclipse IDE中描述的沒導入包,它報告了以下的問題提示我應該刪除Override屬性。
@Override
public boolean onHoverEvent(MotionEvent event) {
return onTouchOrHoverEvent(event, false /*isTouch*/);
}
所以我做了。
我已將以下內容添加到清單中。
<uses-configuration android:reqTouchScreen="stylus"/>
<uses-configuration android:reqTouchScreen="finger"/>
該應用程序可以檢測到我的手指在觸摸屏上的移動,但從來沒有我的手寫筆。爲什麼?
我還注意到,在Android開發人員指南中,MotionEvents引用了getToolType,但我無法在Eclipse的「智能感知」中看到它。
http://developer.android.com/reference/android/view/MotionEvent.html#getToolType%28int%29
方法getToolType是不是在我的Android代碼可用。我想我可以使用這種方法來檢查觸摸輸入的類型,例如手指或手寫筆。
我還爲PaintView添加了一個onTouchListener(基於TouchPaint代碼)。
this.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return touchSurface(v, event);
}
});
觸摸表面代碼
private boolean touchSurface(View v, MotionEvent event) {
boolean complete = true;
int pAction = event.getAction();
int pActionIndex = event.getActionIndex();
Log.i("SignName", "touchSurface event fired.");
Log.i("SignName", "Pointer Action: " + pAction + ", pActionIndex: " + pActionIndex);
return complete;
}
當我用我的手指,上面的事件。當我使用手寫筆時,它不會被解僱。爲什麼?
我不知道這個問題是否與HTC Flyer隔離,這是因爲它有一個Scribbler應用程序,它覆蓋了我的應用程序設置或者我的代碼是錯誤的。
你能幫我嗎?
(更新:2012年4月27日) 我發現問題所在。這是造成混亂的專用手寫筆HTC Flyer。
我想如果這個手寫筆沒有工作,那麼其他手寫筆也不會工作。但是,我確實嘗試了一種不同的手寫筆,它的工作原理。
感謝您的幫助,但。
構建和檢查一些HTC使用筆的例子。 – 2012-04-27 03:35:48