SoundPool和MediaPlayer播放音頻

說到音頻叭首,在android中有兩種方法可是實現(xiàn):SoundPool以及MediaPlaer褐筛。通過這兩個類都可以實現(xiàn)在android設備上播放音頻锈拨。
那這兩個類有什么區(qū)別呢?

SoundPool

  • SoundPool適合一些短促昭雌、比較小的音頻复唤,比如通知鈴聲、字母或數(shù)字的單音頻等烛卧。
  • SoundPool可以批量預加載資源佛纫,得到資源id,根據(jù)資源id來播放音頻(啟動延遲短)总放。
  • SoundPool播放完成后沒有回調呈宇。

MediaPlayer

  • MediaPlayer可以播放一些比較長的音樂
  • MediaPlayer啟動延遲高,不適合播放短小間隔小的音頻局雄,比如字母與數(shù)字單音頻組成的提示音甥啄。
  • MediaPlayer有播放狀態(tài)的回調。

SoundPool播放音頻的用法

首先加載資源得到sound ID炬搭,再根據(jù)sound ID來播放音頻蜈漓。
加載音頻一般有下面幾種方法(一般使用前面三種方法):

1.public int load(Context context, int resId, int priority)
2.public int load(String path, int priority)
3.public int load(AssetFileDescriptor afd, int priority)
4.public int load(FileDescriptor fd, long offset, long length, int priority)

加載資源后,load方法會返回一個sound ID,根據(jù)這個ID可以調用SoundPool的play方法來播放音頻資源:

    /*
     * @param soundID 加載資源得到的id
     * @param leftVolume 音量
     * @param rightVolume 音量
     * @param 音頻流優(yōu)先級
     * @param loop 循環(huán) 0 不循環(huán) -1 無限循環(huán)
     * @param rate 播放速率 1.0 正常速率(0.5-2.0)
     * @return 成功返回id宫盔,否則為0
     */
 public final int play(int soundID, float leftVolume, float rightVolume,
            int priority, int loop, float rate)

由于soundpool沒有播放完成的回調方法融虽,那么我們怎么在一個音頻播放完成之后去播放下一個或者做其他處理呢?

我的方處理法是:在播放前計算出音頻的時長飘言,播放音頻后衣形,再該時長之后做相應的處理,該時間間隔可以比音頻時長略長姿鸿。

最后在不使用的情況下記得調用soundPool.release()方法釋放資源谆吴。

MediaPlayer播放音頻的用法

MediaPlayer只需創(chuàng)建對象,然后將音頻的path或者uri傳入就可以了苛预。

MediaPlayer mediaPlayer= new MediaPlayer();
mediaPlayer.setDataSource(mConext, uri);
mediaPlayer.prepare();
mediaPlayer.start();

或者使用path:

mediaPlayer.setDataSource(path);

也可以更簡單直接使用create方法傳入path或者uri得到MediaPlayer對象:

 public static MediaPlayer create(Context context, Uri uri){...}

當然有很多的傳參方式句狼,具體參考文檔。MediaPlayer 提供了很多的播放狀態(tài)接口热某,比如OnPreparedListener腻菇、OnCompletionListener、OnBufferingUpdateListener昔馋、OnErrorListener等等筹吐。只需在創(chuàng)建對象之后傳入監(jiān)聽對象就可以了,例如:

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
            }
        });

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                return false;
            }
        });

在回調接口里面就可以處理你的具體業(yè)務啦。

當然現(xiàn)在github上也有很多音頻播放的開源項目秘遏,大家可以根據(jù)自己的需求去參考使用O(∩_∩)O哈哈~丘薛。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市邦危,隨后出現(xiàn)的幾起案子洋侨,更是在濱河造成了極大的恐慌舍扰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件希坚,死亡現(xiàn)場離奇詭異边苹,居然都是意外死亡,警方通過查閱死者的電腦和手機裁僧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門个束,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聊疲,你說我怎么就攤上這事播急。” “怎么了售睹?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵桩警,是天一觀的道長。 經(jīng)常有香客問我昌妹,道長捶枢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任飞崖,我火速辦了婚禮烂叔,結果婚禮上,老公的妹妹穿的比我還像新娘固歪。我一直安慰自己蒜鸡,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布牢裳。 她就那樣靜靜地躺著逢防,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒲讯。 梳的紋絲不亂的頭發(fā)上忘朝,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機與錄音判帮,去河邊找鬼局嘁。 笑死,一個胖子當著我的面吹牛晦墙,可吹牛的內容都是我干的悦昵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼晌畅,長吁一口氣:“原來是場噩夢啊……” “哼但指!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤枚赡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谓谦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贫橙,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年反粥,在試婚紗的時候發(fā)現(xiàn)自己被綠了卢肃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡才顿,死狀恐怖莫湘,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情郑气,我是刑警寧澤幅垮,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站尾组,受9級特大地震影響忙芒,放射性物質發(fā)生泄漏。R本人自食惡果不足惜讳侨,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一呵萨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跨跨,春花似錦潮峦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耕渴,卻和暖如春德谅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萨螺。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工窄做, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慰技。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓椭盏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吻商。 傳聞我的和親對象是個殘疾皇子掏颊,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容