Android 音频seekBar线程问题?
最初,我有一个MediaPlayer播放器来播放/暂停/停止我的音频文件。现在,我正在尝试为我的媒体添加一个搜索栏。我尝试使用线程,我想到了以下几点: 在onCreate()中: 然后,我实现了一个方法Android 音频seekBar线程问题?,android,multithreading,media-player,seekbar,Android,Multithreading,Media Player,Seekbar,最初,我有一个MediaPlayer播放器来播放/暂停/停止我的音频文件。现在,我正在尝试为我的媒体添加一个搜索栏。我尝试使用线程,我想到了以下几点: 在onCreate()中: 然后,我实现了一个方法run(),每1秒更新一次搜索栏: public void run() { try { while(mPlayer != null){ int currentPosition = mPlayer.getCurrentPosition();
run()
,每1秒更新一次搜索栏:
public void run() {
try {
while(mPlayer != null){
int currentPosition = mPlayer.getCurrentPosition();
Message msg = new Message();
msg.what = currentPosition;
threadHandler.sendMessage(msg);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private Handler threadHandler = new Handler(){
public void handleMessage(Message msg){
seekBar.setProgress(msg.what);
}
};
然而,在我的HTC Magic中,音频运行效率低下。有些单词被重复。看起来搜索栏每过一段时间都会后退一点
为了让您更好地理解这个问题,让我们这样说:如果音频说:abcdefghijklmn,那么它将是这样的:abccdeffghijklmn
您对我的线程有什么改进建议吗?我做得对吗?不确定这是否有帮助,但请尝试:
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser) {
mPlayer.seekTo(progress);
}
}
没有这个条件,mPlayer.seekTo(progress);每次调用seekBar.setProgress(msg.what)时都会调用 不确定这是否有帮助,但请尝试:
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser) {
mPlayer.seekTo(progress);
}
}
没有这个条件,mPlayer.seekTo(progress);每次调用seekBar.setProgress(msg.what)时都会调用 谢谢。似乎需要检查来自用户的
变量。很好,谢谢。似乎需要检查来自用户的变量。现在效果很好。