首页 > 解决方案 > 如果在 mediaplayer.start() 之前调用 mediaplayer.pasue() ,则不播放音乐

问题描述

我为按钮 Play 和 Pause 创建了两个 onClick 方法,但是如果先点击 Pause,然后点击 Play 按钮,则无法播放音乐。下面是代码

package com.example.myaudio;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;


public class MainActivity extends AppCompatActivity {

    MediaPlayer mediaPlayer;

    public void playAudio(View view)
    {
        mediaPlayer.start();
    }
    public void pauseAudio(View view)
    {

        if(mediaPlayer.isPlaying()){
           mediaPlayer.pause();
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mediaPlayer = MediaPlayer.create(this,R.raw.mymusic);

    }
}

标签: javaandroidandroid-studioandroid-mediaplayer

解决方案


正如文档所说,调用有效MediaPlayer唯一状态pauseStartedPausedPlaybackCompleted

调用pausewhen in some other state 会使MediaPlayer实例处于错误状态,并且尝试startMediaPlayer它处于错误状态时将不起作用。

底线:不要在 a上调​​用方法,MediaPlayer除非玩家处于可以调用该方法的状态(如文档所述)。


推荐阅读