0

これまでの私のアプリはとてもシンプルです。音を鳴らすだけのボタン。問題は、ボタンを速く押しすぎるとエラーが発生し、メディア プレーヤーが応答しなくなることです。

これが私のコードです。

public class Keyboard extends Activity
{
    private MediaPlayer player = null;

    private OnTouchListener listener = new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent e) {
            switch (e.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                System.out.println("down");
                player.start();
                break;
            case MotionEvent.ACTION_UP:
                System.out.println("up");
                player.pause();
                break;
            }
            return false;
        }
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        player = MediaPlayer.create(getApplicationContext(),
                R.raw.bloop);
        player.setLooping(true);

        Button foo = (Button)findViewById(R.id.A);
        foo.setOnTouchListener(listener);
    }
}

私がしているのは、ボタンが押されたときに play() を呼び出し、ボタンが離されたときに pause() を呼び出すことだけです。一般的なログのサンプルを次に示します。

I/System.out( 1796): up
I/System.out( 1796): down
I/System.out( 1796): up
I/System.out( 1796): down
I/System.out( 1796): up
W/TimedEventQueue(   38): Event 2 was not found in the queue, already cancelled?
I/System.out( 1796): down
I/System.out( 1796): up
I/System.out( 1796): down
I/System.out( 1796): up

ご覧のとおり、私のデバッグ ステートメントはエラーの後も機能しているため、OnTouchListener は引き続き機能しています。

4

1 に答える 1

0

エラーログ ieMediaPlayer Event 11 was not found in the queue, already cancelledは警告であり、エラーではありません。このリンクを参照してください。したがって、MediaPlayer終了している場合は、他の問題があるはずです。

この警告は、が実際にトリガーされる前にから削除さeventれると予想された場合に出力されます。これは複数のケースで発生する可能性があります。たとえば、 の場合、ここに示すように、すべてのプレーヤー イベントがキャンセルされますtriggeredqueuepause

あなたの場合、可能性のあるシナリオの 1 つはこのようになると思います。ビデオ デコーダから次のビデオ フレームを読み取るためにAwesomePlayerがトリガーされます。その間、すべてのイベントが削除されました。したがって、このループでトリガーされると、これが削除され、ログが削除されたことがわかります。eventmVideoSourcepauseTimedEventQueuethreadRunevent

于 2013-03-26T00:35:34.290 に答える