Android 媒体播放器seekTo(位置)工作不正常
我正在尝试使用Android 媒体播放器seekTo(位置)工作不正常,android,android-mediaplayer,seekbar,Android,Android Mediaplayer,Seekbar,我正在尝试使用MediaPlayer从本地存储器播放歌曲。播放歌曲工作正常,但当我尝试更改mediaPlayer.seekTo(p)时,使用seekBaronProgressChangedlistener,它总是重新启动歌曲,而不是从搜索位置开始。这不是一个重复的问题,我一直在寻找解决方案,但对我来说没有任何效果 播放歌曲的代码: public void playSong(String path) { try { mediaPlayer.reset();
MediaPlayer
从本地存储器播放歌曲。播放歌曲工作正常,但当我尝试更改mediaPlayer.seekTo(p)时,使用seekBaronProgressChanged
listener,它总是重新启动歌曲,而不是从搜索位置开始。这不是一个重复的问题,我一直在寻找解决方案,但对我来说没有任何效果
播放歌曲的代码:
public void playSong(String path) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getContext(), Uri.parse(path));
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
Log.d(TAG, "onPrepared: ");
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
public void circularSeekBarChangeListener(CircularSeekBar circularSeekBar) {
circularSeekBar.setOnSeekBarChangeListener(new CircularSeekBar.OnCircularSeekBarChangeListener() {
@Override
public void onProgressChanged(CircularSeekBar circularSeekBar, float progress, boolean fromUser) {
Log.d(TAG, "onProgressChanged: P2 " + progress);
if (fromUser) {
int p = (int) progress;
Log.d(TAG, "onProgressChanged: "+mediaPlayer.getCurrentPosition());
mediaPlayer.seekTo(p);
Log.d(TAG, "onProgress1111 "+mediaPlayer.getCurrentPosition());
}
}
@Override
public void onStopTrackingTouch(CircularSeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(CircularSeekBar seekBar) {
}
});
}
更改搜索栏位置侦听器:
public void playSong(String path) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getContext(), Uri.parse(path));
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
Log.d(TAG, "onPrepared: ");
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
public void circularSeekBarChangeListener(CircularSeekBar circularSeekBar) {
circularSeekBar.setOnSeekBarChangeListener(new CircularSeekBar.OnCircularSeekBarChangeListener() {
@Override
public void onProgressChanged(CircularSeekBar circularSeekBar, float progress, boolean fromUser) {
Log.d(TAG, "onProgressChanged: P2 " + progress);
if (fromUser) {
int p = (int) progress;
Log.d(TAG, "onProgressChanged: "+mediaPlayer.getCurrentPosition());
mediaPlayer.seekTo(p);
Log.d(TAG, "onProgress1111 "+mediaPlayer.getCurrentPosition());
}
}
@Override
public void onStopTrackingTouch(CircularSeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(CircularSeekBar seekBar) {
}
});
}
我也面临同样的问题。你有什么解决办法吗?我也有同样的问题,但通过视频-你有解决办法吗?