MediaPlayer的seekto方法怎么不能用了?

当我在播放网络歌曲时 点击暂停 player.pause() 获得当前pausePosition=player.getCurrentPosition();:能获得到数据不是0
当我在次播放时调用play()方法时 player.seekto(pausePosition);不起作用 老是重头开始播放 有大神知道 原因吗? 网路的获取音乐是用Servlet 写的用OutputStream out=response.getOutputStream();返回的 难道是需要把他封装成RandomAccessFile 这个在返回吗 ? 有大神路过吗 求告知
private void play() {
try {
player.reset();
//网络地址
String path=musicUrl(musics.get(currentMusicIndex).getId());
player.setDataSource(path);
player.prepareAsync();
player.setOnPreparedListener(new MyMusicPrepared(pausePosition));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
class MyMusicPrepared implements MediaPlayer.OnPreparedListener{
private int pauseposition;
public MyMusicPrepared( int pauseposition) {
this.pauseposition=pauseposition;
}

@Override
public void onPrepared(MediaPlayer mp) {
//当加载完成时我seekto到暂停位置
mp.seekTo(pausePosition);
//给seekto设置监听
mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
//当seekto完成时我开始音乐
mp.start();
aimIntent.setAction(STARTANIM);
sendBroadcast(aimIntent);
// 开启线程
startUpdateProgressThread();
}
});

}
}
/**
* 暂停
*/
private void pause() {
player.pause();
pausePosition = player.getCurrentPosition();
}
...全文
1276 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
雾霾露霜雪 2020-01-08
  • 打赏
  • 举报
回复
int duration = mediaPlayer.getDuration(); int seekToPosition = (duration * seekBar.getProgress()) / seekBar.getMax(); seekToPosition(seekToPosition); 解决你的问题
qugengting 2019-04-15
  • 打赏
  • 举报
回复
天呐,这么久都没人回答,我也遇到这个问题了,seekTo到还没缓存的位置时,会从头开始播放,真是抓狂!

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧