我对MediaPlayer.getCurrentPosition函数非常不满。我有自己的圆形图形控制面板(360°== 100%)。每个时间间隔我都使用getCurrentPosition进行当前状态计数。在samsugn g3上它无法使用
假设我每50毫秒取值一次。有一些周期性我得到的值大致是:
0,50,100,150,200,200,200,200,250,300,350,400,450,450,450,.....
我习惯在200ms 4x值200期间获得,然后它在200ms 5x期间再次正常,相同的值。由于这种行为,我对当前状态的图形可视化会定期停止一会儿。尽管球员打得很好。
我尝试使用progres StopWatch并使用修复值进行peridically增加,但它比mediaPlayer currentPosition更快。比我试图增加它的复杂性:
int realPlayerPos = mediaPlayer.GetCurrentPosition();
if (realPlayerPos > recCurPos)
{
ratio += 1;
recCurPos = (int) (recCurPos +timeTact + ratio);
}
else
{
ratio -= 1;
recCurPos = (int) (recCurPos +timeTact + ratio);
}
但可以看出,它有时流速更快,有时更慢。我不知道如何为我的图形组件获得可靠的价值。