`
hyongbai
  • 浏览: 15266 次
文章分类
社区版块
存档分类
最新评论

mediaplayer onerror status 错误 状态

 
阅读更多

一.onError


http://univasity.iteye.com/blog/898613

开发中使用MediaPlayer时经常会遇到如下这样的错误提示(红色字):



但是API文档中并未找到详细说明或给出对应的错误列表...

经过研究和网上资料的收集,暂总结如下:
error(-38, 0)为例,
1. error中的两个数值,分别对应OnErrorListener.onError(MediaPlayer mp, int what, int extra)中的what(-38)和extra(0);
2. 对应编号的错误信息可以在这里找到个大概说明,像这里的
/*
* DRMclockisnotavailableorcannotberead
*/
constPVMFStatusPVMFErrDrmClockError=(-38);
/*
* Returncodeforpendingcompletion
*/
constPVMFStatusPVMFPending=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
};

二.MediaPlayer(362): error (-38, 0)

在android开发中,经常会用到MediaPlayer。

在使用MediaPlayer时,有时候会遇到:MediaPlayer(362): error (-38, 0) 类似的错误。

这时,需要检查一下在设置MediaPlayer的数据源时,使用的是那种方式:

1.在初始化MediaPlayer时,通过create方法设置数据源。则不能写MediaPlayer.prepare()方法,这时,会报错。

2.如果是使用MediaPlayer构造函数初始化MediaPlayer,然后通过setDataSource方法设置数据源时,就需要在start()之前,使用MediaPlayer.prepare()方法,对数据源进行一次编译。能够避免出现(-38,0)这种错误。

ps:如果是apk里,写好的文件。可能还需要“"chmod 777 ”修复一下权限。

分享到:
评论

相关推荐

    Android 媒体开发之MediaPlayer状态机接口方法实例解析

    Error 状态是MediaPlayer的错误状态,在这个状态下,MediaPlayer对象出现了一些错误,如格式错误、分辨率过高等原因,播放器引擎就会调用OnErrorListener.onError()方法。 Error 状态可以通过OnErrorListener.on...

    MediaPlayer源码

    `MediaPlayer`提供了丰富的错误处理机制,如`OnError()`回调,开发者可以根据错误代码进行相应的异常处理。 9. **循环播放** 如果希望某个媒体文件无限循环,可以调用`setLooping(true)`。 10. **资源释放** ...

    MediaPlayer(Android音视频播放器)

    public boolean onError(MediaPlayer mp, int what, int extra) { // 错误处理 return false; } }); ``` **5. 生命周期管理** 在Activity或Fragment的生命周期中,需要适当地释放MediaPlayer资源。在`onPause()...

    MediaPlayer

    8. 错误处理:MediaPlayer可能出现各种错误,如无法找到文件、网络问题等,应确保有适当的错误处理机制。 9. 其他特性:MediaPlayer还支持流式播放、循环播放、快进/倒退等功能,开发者可以根据需求灵活运用。 ...

    window media player“内部应用程序错误”的解决方法

    ### "Windows Media Player”内部应用程序错误的解决方法 在日常使用电脑的过程中,用户可能会遇到Windows Media Player出现“内部应用程序错误”的问题。此类错误通常会给用户的媒体播放体验带来不便,但幸运的是...

    MediaPlayer Demo_播放器简易代码_DEMO_

    public boolean onError(MediaPlayer mediaPlayer, int what, int extra) { // 在这里处理播放错误 return false; } }); ``` 4. **控制与状态查询**:根据需要调用控制方法,并检查播放状态: ```java ...

    SurfaceView+MediaPlayer的控制播放器

    public boolean onError(MediaPlayer mp, int what, int extra) { // 错误发生,返回true表示已处理,不会向上抛出异常 return true; } }); ``` 最后,别忘了在应用不再使用`MediaPlayer`时释放资源,以避免...

    Android下MediaPlayer播放MP3示例

    public boolean onError(MediaPlayer mp, int what, int extra) { Log.e("MediaPlayer", "Error occurred: what=" + what + ", extra=" + extra); return true; // 返回true表示已处理错误 } }); ``` 此外,...

    安卓MediaPlayer 播放MP3文件

    public boolean onError(MediaPlayer mediaPlayer, int what, int extra) { Log.e("MediaPlayer", "Error occurred: what=" + what + ", extra=" + extra); return true; // 表示错误已被处理 } }); ...

    Android 使用MediaPlayer播放视频

    在实际应用中,你可能还需要处理更多细节,例如错误处理、资源释放、状态监听等。 在博客"Android使用MediaPlayer播放视频"中,作者更详细地介绍了如何实现视频播放,包括网络视频播放、处理播放状态变化、控制播放...

    Android MediaPlayer研究问题

    因此,理解MediaPlayer的状态机模型至关重要,包括IDLE、INITIALIZED、PREPARING、PREPARED、STARTED、PAUSED、STOPPED、PLAYBACK_COMPLETED和ERROR等状态,以及它们之间的转换规则。 在“源码”标签的提示下,博主...

    MediaPlayer为组件的各种状态播放mp3声音效果(Button点击,Listview上下拉)

    public void onCompletion(MediaPlayer mp) { mp.release(); } }); ``` 此外,为了优化性能和用户体验,可以考虑使用`SoundPool`组件来播放短小的音效,因为它具有更低的延迟和更少的内存占用。然而,`SoundPool...

    Android MediaPlayer

    开发者需要理解这些状态并正确处理状态转换,避免在错误状态下执行操作,比如在未准备好的状态下播放。 **四、事件监听** 通过实现`MediaPlayer.OnPreparedListener`、`MediaPlayer.OnCompletionListener`等接口,...

    mediaplayer demo 播放暂停同一按钮

    4. **状态管理**: MediaPlayer有多个状态,如IDLE、INITIALIZED、PREPARING、PREPARED、STARTED、PAUSED等。在处理播放和暂停时,需要考虑到这些状态,以避免在错误的状态下进行操作,导致程序异常。 5. **按钮文本...

    SurfaceView+MediaPlayer播放视频

    public boolean onError(MediaPlayer mp, int what, int extra) { // 错误处理 return false; } }); ``` 3. **获取SurfaceHolder**: `SurfaceView`有一个`SurfaceHolder`接口,它提供了对`Surface`的访问。我们...

    [Android]MediaPlayer类[定义].pdf

    1. MediaPlayer对象在遇到不支持的格式、硬件限制等问题时,会调用预先设置的`OnErrorListener.onError()`方法报告错误。开发者应通过`setOnErrorListener()`方法注册监听器以处理这些异常情况。 2. 如果在错误状态...

    android mediaPlayer 实例 附

    public void onCompletion(MediaPlayer mp) { mp.stop(); mp.release(); } }); ``` 6. 错误处理: 当播放过程中出现错误时,`MediaPlayer`会抛出异常。可以注册`OnErrorListener`来处理这些异常。 7. 资源...

    Android MediaPlayer使用方法简单介绍

    public boolean onError(MediaPlayer mp, int what, int extra) { // 错误发生时执行的代码 return false; // 返回false让系统处理错误,true则忽略错误 } }); ``` 此外,`MediaPlayer`还支持暂停(`pause()`)、...

Global site tag (gtag.js) - Google Analytics