VJ *_*ons 5 android media-player
我写了一个小音乐播放控制测试应用程序.我有一个播放,暂停,停止和倒带按钮.我的问题是那个player.stop(); 表现与player.pause()相同; 我在player.stop()之后调用player.prepare(),以便我可以让玩家实例准备好start()操作.
在执行stop()之后调用prepare()时,我没有看到任何错误[IOexceptions或IllegalStateExceptions].另外,我在stop()之后没有调用任何seekTo(0).所以,我没有将位置设置回歌曲的开头.
我正在使用运行2.3.4的Nexus Google One手机.
任何想法,如果我做一些愚蠢的事情,或者我正在观察的是实际上是如何构建状态机的.
TIA.
状态图http://developer.android.com/reference/android/media/MediaPlayer.html不是 指出 stop 意味着“保持停止状态”吗?
调用 stop() 会停止播放并导致处于 Started、Paused、Prepared 或 PlaybackCompleted 状态的 MediaPlayer 进入 Stopped 状态。
一旦处于 Stopped 状态,就无法开始播放,直到调用prepare() 或prepareAsync() 将MediaPlayer 对象再次设置为Prepared 状态。调用 stop() 对已处于 Stopped 状态的 MediaPlayer 对象没有任何影响。
没有任何肯定stop()可以改变CurrentPosition.
没有肯定调用prepare()应该改变CurrentPosition。
因此,要转到音乐的开头,您应该手动设置其位置。
但我同意你的观点。由于该方法声明它将从当前位置恢复播放,因此我希望它在调用pause()时回到开头。stop()
当你需要调用时它会产生一些影响prepare()
例如,对prepare()的调用可能需要很长时间才能执行,因为它可能涉及获取和解码媒体数据。
所以stop()需要调用prepare()这可能会花费更长的时间,同时pause()影响较小:您可以start()在之后调用。
| 归档时间: |
|
| 查看次数: |
3665 次 |
| 最近记录: |