我为android.media.mediaplayer编写了两个类包装器 .
如果我使用工厂MediaPlayer.Create()中的对象 . 然后媒体播放器对象在调用方法停止时停止播放歌曲(这样,当我调用play()时停止播放歌曲,它从歌曲的开头开始) . 但是如果我使用默认构造函数,stop()的行为就像pause()保持歌曲中的前一个位置(除了它确实处于停止状态) .
我必须在prepare()和stop()之后使用seekTo(0)来做我想做的事,但这不是文档所说的 .
public void start()从:API Level 1开始或恢复播放 . 如果之前暂停播放,则播放将从暂停的位置继续播放 . 如果播放已停止或之前从未开始播放,则播放将从头开始播放 .
所以,如果我在停止时调用start(),它应该从头开始 .
这是我 class 的stopSong方法的代码:
public void stopSong() {
if(mpPrepared){
mp.stop();
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.seekTo(0);
}
}
有人能告诉我为什么会这样吗?谢谢!