您的位置:首页 > 移动开发 > Android开发

Android Mediaplayer 播放视频/音频 SoundPool

2015-01-12 15:51 567 查看
Mediaplayer声明周期



一、Idle状态:刚new出来或者调用了reset 处于Idle 空闲状态。(Mediapplayer.cerate()是在prepare状态而非Idle状态。Idle 状态不能调用mediaplyer的好多关于音频、视频的方法,不能start()、stop()、prepare()、、pause()。

二、Error 状态:各种情况导致播放失败的,初始化失败,格式不支持等。

三、End:Idel 调用了release() 之后为End的状态。

四、Initialized:初始化状态:在Idle状态下调用的setDataSource()后处于此状态,并且setDatasource只能在Idle下调。

五、Prepared: 准备好的状态 ,在Initialized状态下调了prepare()或者prepareAsync()异步,并且prepare()只能在Initialized状态下调。

六、Started:开始播放状态,Prepared状态下调用了start()方法,isPlaying()方法可以被调用。

七、Paused: 暂停状态,Started后调用了pause(),Paused状态下可以调用start()重新进入Started 状态。

八、Stopped 停止的状态,Prepared、Started 、Paused 、PlaybackCompleted均可调用stop()方法进入停止状态,Stopped之后只能再次调用了Prepara()进入Prepared状态后才能继续播放start()。

九、PlaybackCompleted 播放完毕状态,如果循环为false,完毕后进入此状态,否则继续播放,进入Started状态

此状态下可以调用start()重新开始播放。

Prepared, Paused and PlaybackCompleted 可以调用seekTo去异步定位到指定位置开始播放。

用完或长时间不用要release()去释放资源,进入End状态。

Mediaplayer可以播放本地、网络音乐、视频。

Android中提供了SoundPool可以方便的播放各种小音频、可以预加载、重叠播放声音。

new SoundPool(int maxStreams, int streamType, int srcQuality) ; // 可以直接new出来

int load(Context context, int resId, int priority) ; // 去加载资源,返回id在程序onCreate时去加载,属于异步加载。

int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) ; //播放指定id的音频。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: