【问题标题】:Android MediaPlayer `Prepared` and `OnPlayStarted` questionsAndroid MediaPlayer `Prepared` 和 `OnPlayStarted` 问题
【发布时间】:2016-09-15 19:28:30
【问题描述】:

两个问题:

如果不进行子类化,是否可以直接从MediaPlayer 实例中判断它是否处于Prepared 状态——或者甚至完全获取它的状态?我已经阅读了this 并通过了MediaPlayer docs,似乎没有办法。我怀疑我唯一的出路是子类化,但我想尽可能避免它。

第二,我看过可以latency between OnPreparedListener and playback actually beginning。有没有办法判断MediaPlayer 实例何时开始播放本地文件?我已经尝试连接到OnBufferingUpdateListenerOnInfoListenerOnSeekCompleteListener 的侦听器,但是在为本地文件调用start() 之后它们似乎根本没有被触发。除了轮询以查看 getCurrentPosition() 是否已更改(诚然是个愚蠢的想法),我看不到任何方法来查看这是否可能。

【问题讨论】:

标签: java android android-mediaplayer


【解决方案1】:

回答你的第一个问题:我不认为MediaPlayer 本身保持当前状态,或者至少我从未遇到过这样的事情,即使我下载的示例应用程序使用了包装器或子类化并保持状态MediaPlayer。我在我的应用中做了同样的事情。

要回答您的第二个问题,您可以在您的 OnInfoListener 回调中使用 MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START,但仅适用于 API 17 及更高版本。根据文档

MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START

播放器刚刚推送了第一个视频帧进行渲染。

【讨论】:

  • 谢谢。可悲的是,我使用的是音频文件,并且从未调用过 onInfo()。我想我会将 MediaPlayer 子类化,并且我希望延迟永远不会成为问题(不是阻碍,但仍然令人烦恼)。
  • 此解决方案转换为 Xamarin 表单:stackoverflow.com/questions/60414907/…
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多