如果 mediaplayer.pasue() 在 mediaplayer.start() 之前调用,则音乐不会播放
if mediaplayer.pasue() is called before mediaplayer.start() , then music is not playing
我为按钮“播放”和“暂停”创建了两个 onClick 方法,但是如果先点击“暂停”然后点击“播放”按钮,则音乐不会播放。下面是代码
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);
}
}
正如 the MediaPlayer
documentation 所说,调用 pause
的唯一有效状态是 Started、Paused,以及 PlaybackCompleted.
在其他状态下调用 pause
会将 MediaPlayer
实例置于 Error 状态,并尝试 start
MediaPlayer
当它处于错误状态时将不起作用。
底线:不要在 MediaPlayer
上调用方法,除非播放器处于可以调用该方法的状态(如文档所述)。
我为按钮“播放”和“暂停”创建了两个 onClick 方法,但是如果先点击“暂停”然后点击“播放”按钮,则音乐不会播放。下面是代码
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);
}
}
正如 the MediaPlayer
documentation 所说,调用 pause
的唯一有效状态是 Started、Paused,以及 PlaybackCompleted.
在其他状态下调用 pause
会将 MediaPlayer
实例置于 Error 状态,并尝试 start
MediaPlayer
当它处于错误状态时将不起作用。
底线:不要在 MediaPlayer
上调用方法,除非播放器处于可以调用该方法的状态(如文档所述)。