2

実は、この質問はextends これです。

ヘッドフォンから押されたボタンの数をカウントしたい。

if(action == KeyEvent.ACTION_DOWN) 
    {
        Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show();
    }
    if(action == KeyEvent.ACTION_MULTIPLE)
    {
        k = event.getRepeatCount();
        if(k == 2)
            Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show();
        if(k == 3)
            Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show();
        if(k>=4)
        {
            String a = Integer.toString(k);
            Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show();
        }
    }

しかし、ボタンを押すと、トーストが「1回押されました」と表示されます。私はいつもそれを理解しています、システムは決して他のものに足を踏み入れることはありませんif

どうすればこれを解決できますか?

ありがとう

ADDITION まだこれを解決できません。これが私がすることです:

 if(action == KeyEvent.ACTION_DOWN) 
    {
        k++;
        try 
        {
            wait(1000);
        } catch (InterruptedException e) 
        {
            e.printStackTrace();
        }
    }
        if(k == 1)
            Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show();
        if(k == 2)
            Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show();
        if(k == 3)
            Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show();
        if(k>=4)
        {
            String a = Integer.toString(k);
            Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show();
        }
        k = 0;
    abortBroadcast();
4

1 に答える 1

3

「複数の重複キーイベントが連続して発生しました」は ACTION_MULTIPLE の定義であり、ボタンを 1 つだけ押しています。

if(action == KeyEvent.ACTION_DOWN) 
{
    k++;
    Toast.makeText(context,  "Pressed " + Integer.toString(k) + " time(s).", Toast.LENGTH_SHORT).show();
}

編集:

ああ、ダブルクリックで次のトラックに、トリプルクリックで戻りたいと思っているようですね。スレッドを実装することをお勧めします。KeyEvent.ACTION_DOWN で、キーの押下を数えます。スレッドで、wait(500) を呼び出して、ボタンが押された回数を確認し、それに応じて動作し、カウンターを 0 に戻します。

于 2012-06-07T14:23:12.573 に答える