Android媒体播放器在暂停后无法启动

时间:2014-09-29 07:51:47

标签: java android android-mediaplayer

我尝试制作一个简单的媒体播放器,但暂停按钮不起作用。当我点击暂停按钮时,它会停止,但当我再次点击播放时,它会再次从头开始。

我不知道如何制作一个可以播放/暂停按钮的按钮。

我目前的代码:

http://pastebin.com/wiDkzw5S

谢谢!

3 个答案:

答案 0 :(得分:1)

您需要保存媒体播放器的当前位置和restart it later from that position using seekTo

类似的东西:

int currentPos = 0;
pause.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {

        if (mediaPlayer.isPlaying()) {
            currentPos = mediaPlayer.getCurrentPosition();
            mediaPlayer.pause();
            //change image to play
        } else {
            mediaPlayer.seekTo(currentPos);
            mediaPlayer.start();
            //again revert image to pause
        }  
    }
});

希望它有所帮助。

答案 1 :(得分:0)

这是运行测试和运行代码,您可以使用它暂停并恢复媒体播放器。

int length=0;  
Button pause = (Button) findViewById(R.id.pause);
 pause.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
 if (mediaPlayer.isPlaying()) {
         mediaPlayer.pause();
        length=mediaPlayer.getCurrentPosition();    
    } else {
        mediaPlayer.seekTo(length);
        mediaPlayer.start();
          }
       }
  });

答案 2 :(得分:0)

我有一个类似的问题,但是我无法使用上述方法恢复它。

我发现我的pauseAllSounds()函数正在暂停我的声音池中的所有MediaPlayer实例,即使它们尚未播放。发生这种情况时,它会在每个实例中引起一个错误,导致该实例以后无法再次播放。一段时间后,我才发现此问题,原因是正在运行的过程中在控制台输出中查找原因。它逐行显示错误,表明我正试图从无效状态暂停。

dec := xml.NewDecoder(strings.NewReader(data))

var start, end int64
for {
    start = dec.InputOffset()
    t, err := dec.Token()
    if err != nil {
        if err != io.EOF {
            fmt.Println(err)
        }
        break
    }
    if se, ok := t.(xml.StartElement); ok {
        if se.Name.Local != "Useful" {
            continue
        }
        if err := dec.Skip(); err != nil {
            fmt.Println(err)
            break
        }
        end = dec.InputOffset()
        break
    }
}

fmt.Println(data[start:end])

我将测试添加为仅在已经播放的情况下暂停,一切正常。