回覆列表
  • 1 # gtzfk2191

    播放聲音可以用MediaPlayer和AudioTrack,兩者都提供了java API供應用開發者使用。雖然都可以播放聲音,但兩者還是有很大的區別的。其中最大的區別是MediaPlayer可以播放多種格式的聲音檔案,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer會在framework層建立對應的音訊解碼器。而AudioTrack只能播放已經解碼的PCM流,如果是檔案的話只支援wav格式的音訊檔案,因為wav格式的音訊檔案大部分都是PCM流。AudioTrack不建立解碼器,所以只能播放不需要解碼的wav檔案。當然兩者之間還是有緊密的聯絡的,MediaPlayer在framework層還是會建立AudioTrack,把解碼後的PCM數流傳遞給AudioTrack,AudioTrack再傳遞給AudioFlinger進行混音,然後才傳遞給硬體播放。所以是MediaPlayer包含了AudioTRack。透過檢視API可以知道,MediaPlayer提供了5個setDataSource方法,分為三類,一類是傳遞播放檔案的字串路徑作為引數,例如直接取sd卡里mp3檔案的路徑,一類是傳遞播放檔案的FileDescriptor檔案描述符作為播放的id,例例如從db中查詢的音訊檔案的id,就可以直接賦給MediaPlayer進行播放。還有一類是Uri型別的資原始檔,用於播放content uri檔案。

  • 中秋節和大豐收的關聯?
  • 我想問女的開賓士什麼型號的敞篷跑車最為合適?