MediaPlayer 状态机,接口详情

一,Android MediaPlayer 状态图

MediaPlayer 对象声明周期: 从 Idle 到 End 状态就是 MediaPlayer 整个生命周期;

-- 生命周期开始 : 进入 Idle (闲置) 状态;

-- 生命周期结束 : 进入 End (结束) 状态;

Idle 和 End 状态转换 :

-- 进入 Idle 状态 : MediaPlayer 刚被创建 new MediaPlayer() 或者 调用了 reset() 方法之后, 进入 Idle (闲置) 状态;

-- 进入 End 状态 : 在 Idle 状态调用 release() 方法后, 会进入 End (结束) 状态;

两种进入 Idle 状态方法的差别 : 在 Idle 状态无法调用 getCurrentPosition(), getDuration(), getVideoHeight(), getVideoWidth(), setAudioStreamtype(int), setLooping(boolean), setVolume(float, float), pause(), start(), stop(), seekTo(), prepare(), prepareAsync() 方法都是错误的;

-- new MediaPlayer() 进入 Idle 状态 : 此时 MediaPlayer 内部引擎 和 状态都没有改变, 调用上面的方法之后, 将 无法调用 OnErrorListener.onError() 方法;

-- reset() 进入 Idle 状态 : 此时如果调用上面的方法, 内部的引擎就会 回调 OnErrorListener.onError() 方法;

创建 和 重载 MediaPlayer 区别 :

-- 创建 MediaPlayer : 通过 new MediaPlayer() 创建的对象处于 Idle (闲置) 状态;

-- 重载 MediaPlayer : 通过 create() 方法创建的 MediaPlayer 对象处于 Prepare (准备) 状态;

End (结束) 状态解析 :

-- release() 方法作用 : 该方法会释放 播放引擎 中与 MediaPlayer 相关的资源;

-- 释放唯一性资源 : 有些资源如 硬件加速组件 单态组件等都是唯一性的资源, 如果不释放掉, 之后的 Mediaplayer 都无法正常运行;

-- 无法进行状态转换 : End 状态代表 MediaPlayer 生命周期结束, 在此状态不能转换成其它状态了;

一,Android MediaPlayer 接口详情

附加:

//为 MediaPlayer 设置音频流类型, 音频类型在 AudioManager 中定义, 该方法必须在 prepare() 或者 prepareAsync() 方法之前调用;

public void setAudioStreamType (int streamtype);

//设置在视频播放的时候是否使用 SurfaceHolder 保持屏幕亮起;

public void setScreenOnWhilePlaying (boolean screenOn);

//为 MediaPlayer 设置电源管理状态;

public void setWakeMode (Context context, int mode);

//设置媒体轨道
selectTrack(int index);

//返回一个数组,包含所有的轨道信息
getTrackInfo();

相关推荐
2501_9159184123 分钟前
如何在iPad上找到并打开文件夹的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad
臻一2 小时前
rk3576+安卓14---uboot
android
2501_944521592 小时前
Flutter for OpenHarmony 微动漫App实战:主题配置实现
android·开发语言·前端·javascript·flutter·ecmascript
2501_944521593 小时前
Flutter for OpenHarmony 微动漫App实战:动漫卡片组件实现
android·开发语言·javascript·flutter·ecmascript
知1而N4 小时前
电脑上运行APK文件(Android应用程序包),需要借助特定的软件或功能,因为Windows/macOS/Linux系统无法原生直接运行安卓应用
android·macos·电脑
代码s贝多芬的音符4 小时前
HttpURLConnection post多个参数和一个图片
android·httpurlconn
草莓熊Lotso4 小时前
Qt 控件美化与交互进阶:透明度、光标、字体与 QSS 实战
android·java·开发语言·c++·人工智能·git·qt
氦客5 小时前
Android Compose : 解决列表滑动导致BottomSheet异常消失的问题
android·compose·滑动·lazygrid·bottomsheet·lazycolumn·异常消失
代码s贝多芬的音符5 小时前
android 相机人脸检测 人脸识别 画人脸边框 识别成功保存图片 mlkit 机器学习
android·数码相机·机器学习
晚霞的不甘6 小时前
Flutter for OpenHarmony 布局核心:Row 与 Column 深度解析与实战
android·前端·javascript·flutter