私は MediaPlayer.getCurrentPosition 関数にかなり怒っています。円の形をした独自のグラフィック コントロール パネルがあります (360 ° == 100%)。時間間隔ごとに、現在の状態のカウントに getCurrentPosition を使用します。samsung g3では使用できません
50ミリ秒ごとに値を取得したとしましょう。おおよその値を取得する周期性があります。
0,50,100,150,200,200,200,200,250,300,350,400,450,450,450,.....
私は 200 ミリ秒の間に 4x 値 200 を取得していましたが、200 ミリ秒の間に同じ値の 5 倍になりました。この動作のため、現在の状態のグラフィック ビジュアライゼーションが定期的に短時間停止します。プレイヤーはレコードをうまく再生しますが。
私は進行中のストップウォッチに使用して、修正値で周期的に増加しようとしましたが、mediaPlayer currentPosition よりも高速でした。私がそれを洗練させようとしたよりも:
int realPlayerPos = mediaPlayer.GetCurrentPosition();
if (realPlayerPos > recCurPos)
{
ratio += 1;
recCurPos = (int) (recCurPos +timeTact + ratio);
}
else
{
ratio -= 1;
recCurPos = (int) (recCurPos +timeTact + ratio);
}
しかし、流れが速くなったり遅くなったりすることがわかります。グラフィック コンポーネントの信頼できる値を取得する方法がわかりません。