【Android 7.0 Audio】: Mediaplayer

轉載自http://blog.csdn.net/xiashaohua/article/details/53638780

1.1.1           播放代碼


MediaPlayer類是android framework提供的多媒體類,可以用來播放音頻、視頻和流媒體,MediaPlayer包含了Audio和Video的播放功能。

 

其基本的方法和功能簡介如下:

MediaPlayer     構造方法 

create  創建一個要播放的多媒體 

getCurrentPosition  得到當前播放位置 

getDuration     得到文件的時間 

getVideoHeight  得到視頻的高度 

getVideoWidth   得到視頻的寬度 

isLooping   是否循環播放 

isPlaying   是否正在播放 

pause   暫停 

prepare     準備(同步) 

prepareAsync    準備(異步) 

release     釋放MediaPlayer對象 

reset   重置MediaPlayer對象 

seekTo  指定播放的位置(以毫秒爲單位的時間) 

setAudioStreamType  設置流媒體的類型 

setDataSource   設置多媒體數據來源 

setDisplay  設置用SurfaceHolder來顯示多媒體 

setLooping  設置是否循環播放 

setOnButteringUpdateListener    網絡流媒體的緩衝監聽 

setOnErrorListener  設置錯誤信息監聽 

setOnVideoSizeChangedListener   視頻尺寸監聽 

setScreenOnWhilePlaying     設置是否使用SurfaceHolder來保持屏幕顯示 

setVolume   設置音量 

start   開始播放 

stop    停止播放  


除開界面的相關佈局和控件,聲音播放的代碼流程主要如下,

 

       mPlayer = new MediaPlayer();

 

       try {

           mPlayer.setDataSource(mMediaItem.getPath());

           mPlayer.setOnCompletionListener(this);

           mPlayer.setOnErrorListener(mErrorListener);

           mPlayer.prepare();

            mPlayer.start();

       }

它主要使用了MediaPlayer類來完成播放功能,對於該類的介紹請見後續章節。


MediaPlayer各個狀態間關係如圖:


Idle狀態爲空閒,Initialized狀態爲初始化,Idle狀態加載了音頻資源後進入Initialized狀態,之後調用prepare()方法就可以進入Prepared狀態。在Prepared狀態調用start()方法便可播放音樂。在代碼編寫的時候,api如何調用,狀態如何轉換,請參見下面的狀態流程圖,避免在不正確的狀態調用不合適的api,引起各種異常。

 

播放流程的功能塊圖如下,




播放過程中每個步驟的函數調用流程如下,

Init:

 

 

 

setDataSource:

 

 

 


 


prepareAsync:


prepare裏面,當MediaExtractor解析文件後會產生一個音頻流和一個視頻流(可能還有字幕流),對應一個MediaSource的數據結構






Start:








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章