【发布时间】:2012-01-23 10:59:21
【问题描述】:
我已经为 android.media.mediaplayer 编写了两个类包装器。
如果我使用工厂 MediaPlayer.Create() 中的对象。然后 mediaplayer 对象在它的方法 stop 被调用时停止歌曲(也就是说,停止歌曲,所以当我调用 play() 时,它从歌曲的开头开始)。但是如果我使用默认构造函数,stop() 的行为与 pause() 完全一样,保持歌曲中的先前位置(除了它实际上处于停止状态)。
我必须在 prepare() 和 stop() 之后使用 seekTo(0) 来做我想做的事,但这不是文档所说的。
public void start() 自:API 级别 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);
}
}
有人能告诉我为什么会这样吗?谢谢!
【问题讨论】:
标签: android android-mediaplayer