6.3 相关知识
相关知识
MediaPlayer媒体播放器基于OpenCore库实现,用于播放Android多媒体文件,是Android多媒体应用的核心。MediaPlayer对象对音视频的播放过程并不是单一的播放或停止过程,而是被实现为由多个状态组成的一整套机制,这套机制反映了MediaPlayer的生命周期。
当一个MediaPlayer对象被新建或者调用reset()方法之后,它处于空闲(Idle)状态,在调用release()方法后,才会处于结束(End)状态。
任何MediaPlayer对象都必须处于准备(Prepared)状态,然后才开始播放。要开始播放MediaPlaye对象,必须成功调用start()方法,可以通过isPlaying()方法来检测当前是否正在播放。用户可以通过setLooping(boolean)方法来设置是否循环播放。
当MediaPlayer对象在播放时,可以进行暂停和停止等操作。pause()方法暂停播放,stop()方法停止播放。处于暂停(Paused)状态可以通过start()方法来恢复播放,但是处于停止(Stopped)状态,则必须先调用prepare()方法,使之处于准备状态,然后通过start()方法来开始播放。
一些常用的播放控制操作可能因为音频、视频格式不被支持、质量较差或流超时等而导致错误。这时可以通注册setOnErrorListener(android.media.MediaPlayer.OnErrorListener)方法实现OnErrorListener.onError()方法来监控这些错误。当发生错误后,可以使用reset()方法来恢复错误。
MediaPlayer支持3种多媒体来源:本地资源;内部URI指向的资源,比如ContentResolver对象获得的资源;外部URL指向的资源,比如从网络获取到的多媒体流。
用户可以将多媒体资源放入res/raw/文件夹中,通过读取raw文件夹读取该资源文件。 Android系统对资源文件(res/raw和assets文件夹下)的大小有限制,默认最大仅支持1MB的文件。因此,raw文件夹一般只用于存放一些比较小的多媒体资源,比如游戏音效文件、图片等。播放内部URI指定的多媒体资源需要调用setDataSource()方法,根据URI指定资源路径播放媒体文件。通常,用户会从网络上获取多媒体流来进行播放。这种播放方式只需要调用setDataResource()方法,从URL中提取到多媒体流资源即可播放。
学员评价