播放时是否每秒调用一次 OnBufferingUpdate 事件?

Is OnBufferingUpdate event called every second while playing?

我目前正在为 Android 编写一个应用程序,包括一个媒体播放器。由于我想向用户显示播放器的当前状态,所以我想保持当前播放的时间和缓冲进度。

实现接口 MediaPlayer.OnBufferingUpdate 后,我意识到,这个接口每秒都会被调用一次,即使在缓冲完成之后也是如此。然后它每秒报告 100 的百分比。

我现在的问题:

是否在某处指定了此行为?我可以安全地使用 MediaPlayer.OnBufferingUpdate 事件来更新我的播放时间,还是我应该自己实现一个计时器来保持它的更新?有没有我可以使用的另一个事件,在播放时每秒调用一次(不在 PAUSEFINISH 之后触发)?

我在这里发现了这个问题,LINK - Android: onBufferingUpdate() not called after reaching 100% - @ThaMe90 指向文档的地方 - 但我不知道这里的 "bug" 应该是什么......

嗯,由于documentation,这个方法是"called to update status in buffering",所以当你达到100%时,缓冲状态不应该再更新(它有道理,我说的对吗?)。

不幸的是,有一种疾病会消耗为 Android 平台开发软件的过程 - OEM 会根据他们的需要修改此平台。我很确定这是其中一个例子。

我测试过这个方法是在不同的设备上调用的,这是我观察的结果:

  • onBufferingUpdate 方法 在所有三星设备上达到 100% 后调用 (重修改 OS)
  • onBufferingUpdate 方法 在所有 Moto G 上达到 100% 后不再调用,已略微修改 Android

好吧,它看起来像是一个错误,它已成为三星设备上的一个功能 ;)