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