私はキャンバス上に筆記するように設計されたアプリを開発しています。このアプリは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
上記のコードの私のEclipse IDEで
com.example.android.apis.graphics;
で説明したように、私はパッケージをインポートしていない、それはとして以下のことを報告しましたオーバーライド属性を削除する必要があることを示唆している問題。
@Override
public boolean onHoverEvent(MotionEvent event) {
return onTouchOrHoverEvent(event, false /*isTouch*/);
}
だから私はしました。
私はマニフェストに以下を追加しました。
<uses-configuration android:reqTouchScreen="stylus"/>
<uses-configuration android:reqTouchScreen="finger"/>
アプリはタッチスクリーン上で私の指の動きを検出できますが、私のスタイラスは検出できません。どうして?
また、Android Developersガイドでは、MotionEventsはgetToolTypeを参照していますが、Eclipseの「Intellisense」では表示できません。
http://developer.android.com/reference/android/view/MotionEvent.html#getToolType%28int%29
getToolTypeは私のAndroidのコードでは使用できません方法。私は、この方法を使用して、指やスタイラスなどのタッチ入力のタイプを確認することができると考えました。
また、(TouchPaintコードに基づいて)PaintViewのonTouchListenerを追加しました。
this.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return touchSurface(v, event);
}
});
touchSurfaceコードが
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フライヤーでした。
私はこのスタイラスがうまくいかなかった場合、他のスタイラスも動作しないと思っていました。しかし、私は別のスタイラスを試して、それは働いた。
ご協力いただきありがとうございます。
で入手できます。ペンを使用しているHTCの例。 –