【发布时间】:2013-09-11 18:12:03
【问题描述】:
我正在使用 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)上尝试了相同的应用程序并得到了相同的结果。
提前致谢! 罗伊
【问题讨论】:
-
你能分享一些代码吗?
-
函数
getCurrentTimeMillis在视频完全加载后返回更准确的值。可能您正在对播放时仍在下载的视频进行测试。 -
嘿,感谢重播...在我开始查询时间之前,我已确保视频已加载(发生了 VideoLoaded 状态更改)。我正在使用以下代码:`Timer t = new Timer(); TimerTask scanTask = new TimerTask() { @Override public void run() { timedFunction(); }}; t.schedule(scanTask, 0, 200);私人无效 timedFunction() { if (_player !=null && _player.isPlaying()) { newTime = _player.getCurrentTimeMillis(); Log.d("YoutubeTime",Integer.toString(newTime)); } ` @Emmanuel @asktomsk
-
嗨,现在,我使用秒表解决了这个问题,该秒表跟踪时间和在播放状态更改时重置它的代码片段。它不是最佳的,但我从实时获得大约 50 毫秒的精度(=任何给定秒内的第一个 getCurrentTimeMillis 响应)。我仍然很想知道这个“错误”是否会在其他 android 版本/youtube 版本/设备上复制,以及它是否是 android youtube 播放器 API 的错误或只是正常行为(与 Iframe API 和 AS3 相比)。罗伊
-
嘿,有人碰巧解决了这个问题吗?
标签: android youtube-api