音频搜索栏主题问题? [英] Audio seekBar Thread Problem?

查看:156
本文介绍了音频搜索栏主题问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

本来我有一个MediaPlayer的mPlayers播放/暂停/停止我的音乐文件。现在,我想添加一个搜索栏为我的媒体。我尝试使用线程,这就是我想出了:

Originally, I had a MediaPlayer mPlayers to play/pause/stop my Audio file. Now, I'm trying to add a seek bar for my media. I tried using Threads and this is what I came up with:

在的onCreate():

In onCreate() :

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub
            mPlayer.seekTo(progress);
        }

////........Omitted Code..........\\\\

//At the very end of the method:
seekThread  = new Thread(this); //My Activity implements:Runnable
seekThread.start();

然后,我实现了一个方法的run()更新我的搜索栏每1秒:

Then, I implemented a method run() to update my seek bar every 1 sec:

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魔术的,音频低效运行。有些话是重复的。这似乎是搜索栏要回有点每隔一定的时间。

However, In my HTC Magic, the audio run inefficiently. Some words are repeated. It seems like the seek bar is going back a little bit every some time.

为了让你理解这个问题很好,让我们这样说:如果音频说:ABCDEFGHIJKLMN,那么这将是这样的:abccdeffghijjklmnn

To make you understand the problem well, Let's say this: if the audio says that: abcdefghijklmn , then it will be like this: abccdeffghijjklmnn.

您建议我的线程的任何改善?我这样做对吗?

推荐答案

不知道这会帮助,但尝试:

Not sure this will help, but try:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        if (fromUser) {
            mPlayer.seekTo(progress);
        }
    }

如果没有这个条件,mPlayer.seekTo(进度);被称为每次调用seekBar.setProgress(msg.what);

Without this condition, mPlayer.seekTo(progress); is called every time you call seekBar.setProgress(msg.what);

这篇关于音频搜索栏主题问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆