15

で を使用しMediaPlayerていActivityます。

戻るボタンを押すと、次のエラーが表示されます。

09-20 19:44:16.540: E/MediaPlayer(1822): pause called in state 64
09-20 19:44:16.540: E/MediaPlayer(1822): error (-38, 0)

コード

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        if (mp!= null && mp.isPlaying()) {
            mp.stop(); 
        }

        Intent intentstart = new Intent(X.this, Y.class);
        intentstart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intentstart);
    }

    return super.onKeyDown(keyCode, event);
}

を使用するmp.pause()と、正常に動作します。なんで?

4

5 に答える 5

7

停止を一時停止することは違法MediaPlayerであり、そのエラーメッセージによると、あなたがしていることとまったく同じように聞こえます。

onPause停止を一時停止しないように変更することをお勧めしますMediaPlayer

多分:

    if(mp!= null){
       if(mp.isPlaying())mp.pause();
    }

実際にはこれを行わないでください、私はドキュメントでこれを見つけました:

開始状態から一時停止状態への遷移、およびその逆の遷移は、プレーヤーエンジンで非同期に発生することに注意してください。isPlaying()の呼び出しで状態が更新されるまでに時間がかかる場合があります。

変数をローカルに保持して、がすでに停止しているかどうかを確認してからMediaPlayer、を呼び出す必要があるかどうかをテストする必要がありますpause()

于 2012-09-20T20:10:01.120 に答える
7

答えを探してここに来ましたが、上記の回答は他のことに役立ちましたが、私の問題は解決しませんでした...

しかし...問題を解決することができました:

変化 mediaPlayer.stop();

mediaPlayer.reset();

を取り除くのに役立ちましたerror( -38 , 0 )

問題を指摘してくれてありがとう:)

于 2014-02-23T11:42:22.877 に答える
2

メディアプレーヤーを停止した後に起動する際に問題に直面した後、例外が発生し、mp は再び起動できましたが、それを置き換えるmp.stop()mp.reset() 完全に機能しました。

于 2015-08-13T14:04:01.480 に答える
1

私も同じエラーで同様の問題に直面しました。

mplayer.pause()代わりに使用しましたmplayer.stop()

于 2016-06-22T04:13:00.657 に答える