MediaPlayerのgetDuration()
メソッドは、いくつかのオーディオファイルに対して誤った値を与えています。これらすべてのファイルに共通する特徴は、Audacityまたはその他のオーディオ編集ツールを使用して操作されたことです。これは、MediaPlayerの進行状況をプログレスバーに結び付けようとするときに問題になります。
私は先に進んでそれを記録しました:
while(mPlayer.isPlaying())
Log.i("progress/total",
mPlayer.getCurrentPosition() +
"/" + mPlayer.getDuration());
そしてこれを見つけました:
I/progress/total(643): 14615/14620
I/progress/total(643): 14647/14620
これは数千のログラインの2つだけですが、ポイントは、進行状況がgetDuration()が曲の合計継続時間であると信じているものを通過した後、そのまま継続することです。MediaPlayerは実際に継続時間の正しい合計を与えることができるので、これを使用してProgressBarの適切な最大値を取得する方法はありますか?