Android 音频seekBar线程问题?

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();

最初,我有一个MediaPlayer播放器来播放/暂停/停止我的音频文件。现在,我正在尝试为我的媒体添加一个搜索栏。我尝试使用线程,我想到了以下几点:

在onCreate()中:

然后,我实现了一个方法
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)时都会调用

谢谢。似乎需要检查来自用户的
变量。很好,谢谢。似乎需要检查来自用户的
变量。现在效果很好。