1

我正在使用 Youtube player 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)上尝试了相同的应用程序并得到了相同的结果。

提前致谢!罗伊

4

1 回答 1

0

你好我有同样的问题。我无法解决这个问题......

这是4年前的麻烦。仍然没有人有答案。

所以,我编写了代码来按照我想要的方式处理它。

它仍然有 200 毫秒的时间错误。但比 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][updateTime]

[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]

于 2018-03-12T05:52:14.147 回答