MediaPlayer error类型汇总

MediaPlayer错误代码详解
这篇博客详细介绍了MediaPlayer在播放过程中可能遇到的各种错误代码,包括MEDIA_ERROR_UNKNOWN、MEDIA_ERROR_SERVER_DIED等,涵盖了从文件错误到不支持的媒体格式等各种情况。对于每个错误代码,都提供了相应的处理建议,如释放并重建MediaPlayer对象或检查文件格式的正确性。
/** Unspecified media player error.
 * @see android.media.MediaPlayer.OnErrorListener
 */
public static final int MEDIA_ERROR_UNKNOWN = 1;

/** Media server died. In this case, the application must release the
 * MediaPlayer object and instantiate a new one.
 * @see android.media.MediaPlayer.OnErrorListener
 */
public static final int MEDIA_ERROR_SERVER_DIED = 100;

/** The video is streamed and its container is not valid for progressive
 * playback i.e the video's index (e.g moov atom) is not at the start of the
 * file.
 * @see android.media.MediaPlayer.OnErrorListener
 */
public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200;

/** File or network related operation errors. */
public static final int MEDIA_ERROR_IO = -1004;
/** Bitstream is not conforming to the related coding standard or file spec. */
public static final int MEDIA_ERROR_MALFORMED = -1007;
/** Bitstream is conforming to the related coding standard or file spec, but
 * the media framework does not support the feature. */
public static final int MEDIA_ERROR_UNSUPPORTED = -1010;
/** Some operation takes too long to complete, usually more than 3-5 seconds. */
public static final int MEDIA_ERROR_TIMED_OUT = -110;
当 AudioPlayer 设置 MediaPlayer 时出现 `Error setting up MediaPlayer: null` 错误,可能有以下几种原因及对应的解决办法: #### 资源问题 - **资源文件损坏**:检查用于播放的音频文件是否损坏。可以尝试在其他音频播放器中打开该文件,若无法播放,则需要重新获取正确的音频文件。 - **资源路径错误**:确保音频文件的路径正确。在 Android 中,若使用资源文件,路径格式通常为 `R.raw.filename`;若使用外部存储的文件,需要确保文件路径的准确性以及应用有访问该文件的权限。示例代码如下: ```java MediaPlayer mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(context, Uri.parse("file:///sdcard/music/song.mp3")); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } ``` #### 权限问题 - **缺少必要权限**:如果音频文件位于外部存储,需要在 `AndroidManifest.xml` 中声明相应的权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 并且在 Android 6.0(API 级别 23)及以上版本,需要在运行时请求权限。 #### 状态问题 - **MediaPlayer 未正确初始化**:在设置数据源之前,确保 `MediaPlayer` 对象已经正确初始化。示例代码如下: ```java MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mediaPlayer.setDataSource(context, Uri.parse("file:///sdcard/music/song.mp3")); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } ``` - **重复使用已释放的 MediaPlayer**:避免重复使用已经调用过 `release()` 方法的 `MediaPlayer` 对象。若需要再次使用,应重新创建 `MediaPlayer` 对象。 #### 其他问题 - **设备兼容性问题**:某些设备可能对特定格式的音频文件支持不佳。可以尝试将音频文件转换为常见的格式,如 MP3。 - **系统资源不足**:检查设备的内存和 CPU 使用情况,关闭不必要的应用程序,以确保有足够的系统资源供 `MediaPlayer` 使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值