2

誰かがこれに対する簡単な解決策を見つけたと思いますが、簡単な方法は見つかりませんでした。MediaPlayer を介してオーディオを再生するためのシーカー バーを作成したいと考えています。MediaPlayer オブジェクトで onSeekChanged リスナーのようなものを見つけることができなかったので、while(playing)ループを介して更新を続け、期間とバーを更新する AsyncTask を作成しました。ただし、このループによりアプリの実行が非常に遅くなるため、これは最善の方法ではないようですwhile(音声は遅延しませんが、一時停止などのボタンは遅延します)。したがって、効率的なシーカーを構築するための最良の実装は何かを知りたいです。非常に多くのアプリで使用されているため、これは難しい質問ではありません。これを行う適切な方法を知りたいだけです。ありがとう!

4

1 に答える 1

0

まず第一に、あなたのサイクルに少なくとも 1 ミリ秒スリープさせる必要があります:

Thread.sleep(1);

次に、次の再チェックに必要な時間を計算できます。

Thread.sleep(1000 - currentPos % 1000);

このアルゴリズムは、標準の MediaController で使用されます。

于 2012-10-29T17:45:33.460 に答える