开发中使用MediaPlayer时经常会遇到如下这样的错误提示(红色字):
但是API文档中并未找到详细说明或给出对应的错误列表...
经过研究和网上资料的收集,暂总结如下:
以
error(-38, 0) 为例,
1. error中的两个数值,分别对应OnErrorListener.onError(MediaPlayer mp, int what, int extra)中的
what (
-38 )和
extra (
0 );
2. 对应编号的错误信息可以在
这里 找到个大概说明,像这里的
/*
* DRM clock is not available or cannot be read
*/
const PVMFStatus PVMFErrDrmClockError = (-38);
/*
* Return code for pending completion
*/
const PVMFStatus PVMFPending = 0;
仍未知具体针对性的解决办法,但作为补救的方法(仅供参考):
通过设置监听器,并自己设置变量来标记MediaPlayer的大概状态(特别是Error,End,Idle),在操作相关的函数前先检测下,就能避免大多数"操作错误"。再不行就每个MediaPlayer的函数操作都加上对IllegalStateException异常的捕获。
ps:
state 的对应表仍然不是很清楚,也许研究下源码能找到答案?
****** update ******* // 2011.03.29
通过源码找到了
state 的相关定义:
enum media_player_states {
MEDIA_PLAYER_STATE_ERROR = 0,
MEDIA_PLAYER_IDLE = 1 << 0, // 1
MEDIA_PLAYER_INITIALIZED = 1 << 1, // 2
MEDIA_PLAYER_PREPARING = 1 << 2, // 4
MEDIA_PLAYER_PREPARED = 1 << 3, // 6
MEDIA_PLAYER_STARTED = 1 << 4, // 8
MEDIA_PLAYER_PAUSED = 1 << 5, // 16
MEDIA_PLAYER_STOPPED = 1 << 6, // 32
MEDIA_PLAYER_PLAYBACK_COMPLETE = 1 << 7 // 64
};
---------------------------------------------------
参考连接: