バグ
ピアノ アプリに奇妙なバグがあります。ときどきキー (およびノート) がハングします。私は多くのデバッグを行い、アンドロイドのモーションイベント処理の不正確さのように見えるものに絞り込みました:
DEBUG/(2091): ACTION_DOWN A4
DEBUG/(2091): KeyDown: A4
DEBUG/(2091): ACTION_MOVE A4 => A4
DEBUG/(2091): ACTION_MOVE ignoring
DEBUG/(2091): ACTION_MOVE A4 => A4
DEBUG/(2091): ACTION_MOVE ignoring
DEBUG/(2091): ACTION_MOVE A4 => A4
DEBUG/(2091): ACTION_MOVE ignoring
DEBUG/(2091): ACTION_UP B4 //HOW CAN THIS BE????
DEBUG/(2091): KeyUp: B4
DEBUG/(2091): Stream is null, can't stop
DEBUG/(2091): Hanging Note: A4 X=240-287 EventX=292 Y=117-200 EventY=164
DEBUG/(2091): KeyUp Note: B4 X=288-335 EventX=292 Y=117-200 EventY=164
ACTION_UP
明らかに、どこからともなく私が突然別のメモを持っていることがわかります。絶対にACTION_MOVE
1位をとるべきではないですか?
ACTION_UP
ログの最後に示されているように、イベントは明らかに B4 領域にあるため、領域検出のエラーではありません。
ロギングの実装の詳細
すべてのonTouchEvent()
通話が記録されるため、ログは正確です。
ACTION_MOVE ロギングに関連する疑似コードは次のとおりです。
Key oldKey = Key.get(event.getHistoricalX(), event.getHistoricalY());
Key newKey = Key.get(event.getX(), event.getY());
質問
これは Android の通常の動作 (座標のジャンプ) ですか?
その座標に向かってACTION_UP
前もって何も発生しませんか?ACTION_MOVE