1

重複の可能性:
OnTouchListener、ACTION_UP は 30 秒のタイムアウト後に自動的に起動します

次のコードを使用して、キーがクリックされたかどうかを確認します。

@Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

        // Little method to allow the sound to be changed 
        if(keyCode == 24 || keyCode == 25) {
            return false;
        }

        if(event.getAction() == KeyEvent.ACTION_DOWN) {
            //  if(resetKeyPress != true) {
            this.keyCode = keyCode;
            //  resetKeyPress = true;
            if(this.logGameEngineInputLog == true) {
                gameEngineLog.d(classTAG, "Pressed down " + this.keyCode);
            }
            //  }
        }
        else if(event.getAction() == KeyEvent.ACTION_UP){
            //waitUntilReleased = false;
            //this.changeKeyCode(null);
            if(this.logGameEngineInputLog == true) {
                gameEngineLog.d(classTAG, "Released key " + this.keyCode);

            }

            this.keyCode = null;

            //  resetKeyPress = false;

        }

        return true;
    }

ボタンを長時間クリックすると、ボタンが押されたと言い続けますが、しばらくすると、キーを押したままでも、キーが離されたと表示されます。なぜこれを行うのですか?これを防ぐ方法はありますか?これは Android OS によって意図的に行われているのでしょうか?もしそうなら、それはなぜですか?

4

1 に答える 1

0

このイベントを処理するタイプがわかりません: View、Activity ?

View の場合、 onKey はハードウェア キー イベントのみを処理します (ドキュメントによると: Android リファレンス - View.KeyEventListener ) 。

さらに、このスレッドを見ると:ロングキープレスと通常のキープレスを区別する方法は? 、Activity.onKeyLongPress() メソッドの実装と、犯してはならないエラーを確認できます。

于 2012-09-16T19:51:42.647 に答える