我正在使用Youtube播放器android api(最新版本,取自https://developers.google.com/youtube/android/player/)。在我的应用程序中,我添加了一个计时器,每200毫秒调用一次播放器的getCurrentTimeMillis方法。问题是该方法为经过的每一秒返回相同的值。例如,我在运行应用程序后得到以下输出:
1877 1877年 1877年 1877年 1877年 2878 2878 2878 2878 2878 3879 3879 3879 3879 3879 4880 4880 4880 4880 4880 5881
如您所见,时间每1秒有效更新一次(5个计时器滴答)。定时器延迟为100毫秒(每10个滴答)也会发生同样的情况。 当然,这不会发生在javascript api或AS3 api上。
有没有人知道为什么会这样?我怎样才能获得更高的分辨率?
我在Nexus 7和Galaxy Nexus上运行了相同的应用程序(都运行了android 4.3)并获得了相同的结果。
提前致谢! 罗伊
答案 0 :(得分:-1)
你好我有同样的问题。我无法解决这个问题....
这是4年前的麻烦。仍然没有人回答。所以,我让代码以我想要的方式处理它。
它还有200ms的时间错误。但它优于1秒
boolean first = true;
currentVideoTime = Yplayer.getCurrentTimeMillis();
while (!quitThread)
{
Thread.sleep(100);
if(Yplayer.isPlaying())
{
if(currentVideoTime == Yplayer.getCurrentTimeMillis())
{
if(first)
{
startTime = SystemClock.uptimeMillis();
first = false;
}
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updateTime = currentVideoTime+timeInMilliseconds;
}
else
{
updateTime = currentVideoTime = Yplayer.getCurrentTimeMillis();
first = true;
}
}
下面是测试时间表
[getCurrentTimeMillis] [注册]
[0] [152]
[0] [289]
[0] [429]
[0] [565]
[691] [715]
[691] [691]
[691] [691]
[691] [831]
[691] [971]
[691] [1111]
[691] [1251]
[1671] [1392]
[1671] [1671]
[1671] [1671]
[1671] [1816]
[1671] [1949]
[1671] [2082]
[1671] [2228]
[1671] [2363]
[2516] [2512]
[2516] [2516]
[2516] [2516]
[2516] [2658]
[2516] [2796]
[2516] [2938]
[3502] [3073]
[3502] [3502]
[3502] [3502]
[3502] [3641]
[3502] [3782]
[3502] [3921]
[3502] [4053]
[4510] [4158]
[4510] [4510]
[4510] [4510]
[4510] [4650]
[4510] [4791]
[4510] [4931]
[4510] [5070]
[4510] [5212]
[5528] [5346]
[5528] [5528]
[5528] [5528]
[5528] [5693]
[5528] [5860]
[5528] [6001]
[6479] [6164]
[6479] [6479]