Android的搜索栏来控制MediaPlayer的进步 [英] Android SeekBar to control MediaPlayer progress
问题描述
我有一个搜索栏
,它会显示正确的MediaPlayer
进展。不过,我有麻烦与追求 - 如果我追求的滚动框的地方它只是返回在哪里的音频文件播放的位置。
I have a SeekBar
, it displays correctly MediaPlayer
progress. However, I have troubles with seeking - if I seek scroll box somewhere it just returns on the position where audio file is playing.
public class EntityPageActivity extends Activity implements Runnable, OnClickListener, OnSeekBarChangeListener{
private SeekBar seekBar;
private Button startMedia;
private Button pauseMedia;
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entity_page);
AudioControl();
}
public void AudioControl(){
seekBar = (SeekBar) findViewById(R.id.seekBar);
startMedia = (Button) findViewById(R.id.play);
pauseMedia = (Button) findViewById(R.id.pause);
startMedia.setOnClickListener(this);
pauseMedia.setOnClickListener(this);
}
public void run() {
int currentPosition= 0;
int total = mp.getDuration();
while (mp!=null && currentPosition<total) {
try {
Thread.sleep(1000);
currentPosition= mp.getCurrentPosition();
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
seekBar.setProgress(currentPosition);
}
}
public void onClick(View v) {
if (v.equals(startMedia)) {
if (mp != null && mp.isPlaying()) return;
if(seekBar.getProgress() > 0) {
mp.start();
return;
}
mp = MediaPlayer.create(EntityPageActivity.this, R.raw.gl1);
mp.start();
seekBar.setProgress(0);
seekBar.setMax(mp.getDuration());
new Thread(this).start();
}
if (v.equals(pauseMedia) && mp!=null) {
mp.pause();
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onStopTrackingTouch(SeekBar seekBar) {
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser) mp.seekTo(progress);
}
}
因此, onProgressChanged
是不足以让搜索栏
来控制的MediaPlayer
?
Thus, onProgressChanged
isn't enough to allow SeekBar
to control MediaPlayer
?
我应该添加/正确的,让求?
What should I add/correct to allow seeking?
感谢
更新
我发现 onProgressChanged
永远不会被某些原因调用。不过,我想不通为什么
I found out that onProgressChanged
is never invoked by some reason. However I can't figure out why
推荐答案
现在的问题是 seekBar.setOnSeekBarChangeListener(本);
所以,把它放在你的音频控制()
方法.....
你不设置 oncheckchangedlistner
您的搜索栏....
The problem is seekBar.setOnSeekBarChangeListener(this);
So put it in Your AudioControl()
Method.....
You dont set oncheckchangedlistner
to your seekbar....
这篇关于Android的搜索栏来控制MediaPlayer的进步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!