Android:如何知道MediaPlayer是否已暂停?

18

MediaPlayer.isPlaying()方法无法判断MediaPlayer是否已停止或暂停。如何判断它是暂停而不是停止了呢?

谢谢!


请查看此链接:https://dev59.com/oFnUa4cB1Zd3GeqPcqu_#6849205 - Naveen
5个回答

20

一个方法是检查媒体播放器是否处于未播放(暂停)状态,并检查其是否位于起始位置以外的位置(1)。

MediaPlayer mediaPlayer = new MediaPlayer();

Boolean isPaused = !mediaPlayer.isPlaying() && mediaPlayer.getCurrentPosition() > 1;

3
文档指出getCurrentPosition返回“以毫秒为单位的当前位置”。如果您从未将mediaPlayer暂停,它将是一个巨大的数字,如1628054332或类似的数字(可能是自1970年以来的系统时间)。因此,要处理用户第一次播放(没有先使用暂停),您将需要引入某种标志。请注意不改变原意。 - Bob Ueland

5

没有API可以检查MediaPlayer是否已暂停。因此,请使用任何布尔变量在您使用任何button暂停时进行检查和切换。

onClick(){
 if(isPaused)
  {
    //resume media player
    isPaused = false;
  }else{
   // pause it
     isPaused = true;
  }
} 

如果没有这样的方法,那么您将如何设置isPaused变量的值? - Lucifer

1

定义一个名为playedAtLeastOnce(或其他你想要的名称)的boolean变量,如果你的MediaPlayer对象已经播放过至少一次,则将其设置为true。在MediaPlayer.OnPreparedListener实现接口中的onPrepared(MediaPlayer mp)方法中将其分配为true是一个好地方。

然后,如果MediaPlayer没有播放且playedAtLeastOncetrue,则可以说MedaiPlayer被暂停了。

boolean playedAtLeastOnce;

@Override
public void onPrepared(MediaPlayer mp) {
    mp.start();
    playedAtLeastOnce = true;
}

public boolean isPaused() {
    if (!mMediaPlayer.isPlaying && playedAtLeastOnce)
        return true;
    else
        return false;
    // or you can do it like this
    // return !mMediaPlayer.isPlaying && playedAtLeastOnce;
}

0

你可以创建全局变量

private boolean notIdle = false; 

在调用setDataSource()之后,在监听器setOnPreparedListener()

notIdle = true; 

重写 MediaPlayer.reset() 函数,在函数内部

notIdle = false;

notIdlestart()pause()stop() 状态下将为 true... 您可以根据需要更改此行为。


-1

正如Ankit所回答的那样,没有API可以检查媒体播放器是否已暂停,我们必须通过编程来检查它,就像这样

private boolean pause=true; //A Boolean variable to check your state declare it true or false here depends upon your requirement

现在你可以在这里创建一个方法来检查玩家是否暂停。
public void checkplayer(MediaPlayer player){
if(isPause=true)   //check your declared state if you set false or true here
Player.pause();
else if(isPause=false){
Player.play();
 or 
Player.stop();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接