Android 如何使用SeekBar';在MediaPlayer对象中查找特定点的OnSeekBarChangeListener?
我有一些Android代码,可以从互联网上传音频文件,10秒后播放 我正在使用SeekBar查看缓冲状态和播放状态。我想从缓冲流的中间开始播放音频。为此,我将SeekBar点移到中间,但不能从中间播放音频;它将返回并从头开始。我如何获得搜索位置以及如何从该特定位置播放音频 这是我的SeekBar代码。如何使此代码正确使用OnSeekBarChangeListenerAndroid 如何使用SeekBar';在MediaPlayer对象中查找特定点的OnSeekBarChangeListener?,android,Android,我有一些Android代码,可以从互联网上传音频文件,10秒后播放 我正在使用SeekBar查看缓冲状态和播放状态。我想从缓冲流的中间开始播放音频。为此,我将SeekBar点移到中间,但不能从中间播放音频;它将返回并从头开始。我如何获得搜索位置以及如何从该特定位置播放音频 这是我的SeekBar代码。如何使此代码正确使用OnSeekBarChangeListener seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
if (arg2 && mediaPlayer.isPlaying()) {
//myProgress = oprogress;
arg1=mediaPlayer.getCurrentPosition();
mediaPlayer.seekTo(arg1);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
您正在强制玩家搜索到当前位置,而不是搜索杆返回的位置
删除以下行:
arg1=mediaPlayer.getCurrentPosition()代码>并且它应该可以工作。当然,在MediaPlayer.prepare()
setSeekBar.setMax(MediaPlayer.getDuration())
之后,搜索将是准确的。我认为您必须创建一个线程。。。下面给出了一些代码,您可以尝试实现这些代码
public void run() {
try
{
while(song1.getDuration()!=song1.getCurrentPosition())
{
skbar.setProgress(song1.getCurrentPosition());
//bStop.setText(song1.getCurrentPosition());
}
if (song1.getDuration()==song1.getCurrentPosition())
Log.v("log","Sanket");
t.suspend();
}
catch (Exception e)
{
Log.e("log",e.toString());
}
}
public void run() {
try
{
while(song1.getDuration()!=song1.getCurrentPosition())
{
skbar.setProgress(song1.getCurrentPosition());
//bStop.setText(song1.getCurrentPosition());
}
if (song1.getDuration()==song1.getCurrentPosition())
Log.v("log","Sanket");
t.suspend();
}
catch (Exception e)
{
Log.e("log",e.toString());
}
}