Ily*_*okh 21 android seek seekbar media-player
我有一个SeekBar,它显示正确的MediaPlayer进度.但是,我遇到了麻烦 - 如果我在某处找到滚动框,它只会返回播放音频文件的位置.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,onProgressChanged还不足以让人SeekBar控制MediaPlayer?
我应该添加/更正以允许搜索?
谢谢
UPDATE
我发现onProgressChanged从来没有被某种原因引用过.但是我无法弄清楚为什么
Sam*_*iya 10
问题是seekBar.setOnSeekBarChangeListener(this);所以把它放在你的AudioControl()方法中.....你没有设置oncheckchangedlistner到你的搜索栏....
尝试使用以下代码:
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser){
mp.seekTo(progress);
seekbar.setProgress(progress);}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
你必须在里面包含搜索条方法onCreate.我遇到了同样的问题,之后就可以了.
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
mediaPlayer.seekTo(progress);
seekBar.setProgress(progress);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40547 次 |
| 最近记录: |