天天看點

【完美解決系列】Android MediaPlayer stop called in state 1

經過測試發現,是因為調用stop函數時,導緻的問題。

原代碼為:

MediaPlayer player = MediaPlayer.create(context, R.raw.music_1);

private void stop() {
        if (player != null) {
            player.stop();
            player.reset();
        }
    }
           

我在調用時,是不管是否正在播放均直接調用我自己封裝的stop函數。正确的調用時機是,僅在MediaPlayer正在播放時,才可以調用stop函數。

代碼修改為:

MediaPlayer player = MediaPlayer.create(context, R.raw.music_1);

private void stop() {
        if (player != null && player.isPlaying()) {
            player.stop();
            player.reset();
        }
    }
           

加入player.isPlaying()做判斷是否為正在播放狀态,即可解決此問題。