获取 MediaPlayer 的状态

Posted

技术标签:

【中文标题】获取 MediaPlayer 的状态【英文标题】:Get state of MediaPlayer 【发布时间】:2011-04-11 06:40:34 【问题描述】:

在我的应用程序中,我从用户那里获得了多条路径(1 到图像,1 到音轨,1 到视频)并将它们存储在数据库中。当另一个活动开始查看文件时,不能保证文件仍然在这些路径中,甚至根本不存在,因为用户选择了它们并且可能已经删除/移动了它们。因此,我需要能够检查这些路径中的文件是否有效。 我最初的计划是简单地捕获构造+设置每个对象时抛出的任何异常。 这是我用来查看每个的:

Image - a Drawable
Audio - a MediaPlayer
Video - a VideoView

我会通过向用户显示一个对话框来处理每个异常 但是,没有抛出异常,而是收到不同的错误消息

VideoView 会显示自己的对话框,上面写着“抱歉,无法播放此视频”

其他人去 LogCat:

04-10 23:34:43.174: ERROR/PlayerDriver(30): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
04-10 23:34:43.174: ERROR/MediaPlayer(271): error (1, -4)
04-10 23:34:43.365: ERROR/MediaPlayer(271): Error (1,-4)

关于如何获取 MediaPlayer 和 VideoView 的状态或其他方式来检查路径有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

您可以将OnErrorListener 设置为VideoViewMediaPlayer。如果发生错误 - 您的侦听器将被调用。此外,您可以使用MediaPlayerVideoView 检查音频和视频,因为它包含MediaPlayer 来处理两者。

顺便说一句,我认为VideoView 的侦听器实际上设置在VideoView 内的MediaPlayer 对象中

【讨论】:

以上是关于获取 MediaPlayer 的状态的主要内容,如果未能解决你的问题,请参考以下文章

Android 利用MediaPlayer实现音乐播放

E/MediaPlayer: Should have subtitle controller already set

获取 MediaPlayer 的状态

Android Multimedia框架总结MediaPlayer中从Java层到C++层类关系及prepare及之后其他过程

错误代码媒体播放器语法和定义

播放器MediaPlayer解读