0

我一直在按照教程来实现SeekBar我的应用程序,但它不起作用。这就是我正在尝试的方法。

public void run(){
    int currentPosition = 0;
    int total = player.getDuration();
    sBar.setMax(total);

    while (player.isPlaying()) {
        try {
            Thread.sleep(1000);
            currentPosition = player.getCurrentPosition();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        sBar.setProgress(currentPosition);
    }
}

sBarSeekBar我声明为全局变量的那个。

现在的问题是教程中没有提到在哪里调用这个运行方法?我尝试在MediaPlayer启动后立即调用它,但它不起作用。

4

2 回答 2

1

这显然是要放入一个 Thread 对象中——它是一个每次休眠一秒钟的无限循环。它不能在 UI 线程上运行,否则会冻结您的应用程序。

于 2013-08-18T21:12:26.403 回答
0

I made a completely different approach to this and it worked. Here's how I've done it now:

Runnable run = new Runnable(){

    @Override
    public void run() {
        seekBarUpdate();
    }

};

public void seekBarUpdate(){
    sBar.setMax(player.getDuration());
    sBar.setProgress(player.getCurrentPosition());
    seekHandler.postDelayed(run, 25);
}
于 2013-08-22T18:48:27.147 回答