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

sBarは、SeekBarグローバル変数として宣言したものです。

問題は、この実行メソッドを呼び出す場所がチュートリアルのどこにも記載されていないことです。起動直後に呼び出してみMediaPlayerましたが、うまくいきません。

4

2 に答える 2

1

これは明らかに、Thread オブジェクトに入れることを意図しています。これは、一度に 1 秒間スリープする無限ループです。UI スレッドに進むことができないか、アプリがフリーズします。

于 2013-08-18T21:12:26.403 に答える
0

私はこれとはまったく異なるアプローチを行い、それはうまくいきました。これが私が今それをした方法です:

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 に答える