Android播放簡(jiǎn)短音頻-SoulPool

前言

最近新接觸的項(xiàng)目中有一個(gè)業(yè)務(wù)功能是語(yǔ)音播報(bào)业踏,所以有接觸到了SoulPool這個(gè)類,寫個(gè)文章記錄一下~

如果項(xiàng)目業(yè)務(wù)功能中需要播放簡(jiǎn)短的音頻的話消略,可以使用SoundPool 堡称。SoundPool?是 Android 提供的一個(gè)API類,用來(lái)播放簡(jiǎn)短音頻的艺演,使用起來(lái)簡(jiǎn)單并且功能強(qiáng)大。

SoundPool 除了可以完成音頻的播放、暫停胎撤、恢復(fù)及停止的操作外晓殊,還可以調(diào)節(jié)左右聲道的音量值、調(diào)整播放的語(yǔ)速伤提、設(shè)置播放的優(yōu)先級(jí)以及播放的次數(shù)等等巫俺。

創(chuàng)建SoulPool

SoundPool 的創(chuàng)建方式在Android 5.0 以前是直接使用SoundPool 的構(gòu)建方法即可,在Android5.0之后肿男,則是使用Builder模式來(lái)創(chuàng)建介汹。為了更好的兼容性,我們可以判斷一下api版本進(jìn)行對(duì)應(yīng)的創(chuàng)建舶沛。

Android5.0之前SoundPool 的構(gòu)造函數(shù)有三個(gè)參數(shù)分別是maxStreams嘹承、streamType和srcQuality。

maxStreams:同時(shí)播放流的最大數(shù)量如庭,當(dāng)播放的流大于此設(shè)置值時(shí)叹卷,則會(huì)選擇性停止優(yōu)先級(jí)較低的流;

streamType:流類型坪它,例如STREAM_MUSIC骤竹、STREAM_ALARM、STREAM_NOTIFICATION等往毡;

srcQuality:采樣率轉(zhuǎn)換器質(zhì)量蒙揣,很少用得上,默認(rèn)設(shè)置0即可开瞭;

Android5.0 之后懒震,使用Builder模式進(jìn)行構(gòu)造,可以設(shè)置多個(gè)參數(shù)惩阶。我這里放兩張?jiān)创a截圖挎狸,如果需要詳細(xì)了解的,可以自己點(diǎn)進(jìn)去追蹤一下~

SoundPool.Builder中setMaxStreams和之前Android5.0SoundPool的構(gòu)造函數(shù)maxStreams參數(shù)相同断楷。SoundPool.Builder中setAudioAttributes用來(lái)設(shè)置audio 屬性锨匆,此值要么不設(shè),要么設(shè)置不為null的值冬筒,否則會(huì)導(dǎo)致異常產(chǎn)生恐锣。

音頻資源的加載與播放

首先我們要進(jìn)行音頻資源的加載,加載成功之后舞痰,才能進(jìn)行播放土榴。加載音頻,我們可以使用SoulPool實(shí)例中的load方法响牛。

加載音頻資源時(shí)異步執(zhí)行的玷禽,此過(guò)程需要時(shí)間赫段,所以我們可以使用SoulPool中的OnLoadCompleteListener接口進(jìn)行監(jiān)聽(tīng),其中的onLoadComplete方法則是在音頻資源加載完成后調(diào)用矢赁。

我們還可以通過(guò)SoulPool中的unload方法糯笙,卸載之前加載過(guò)的資源。

其實(shí)撩银,只要我們點(diǎn)進(jìn)去SoulPool類中给涕,就能看見(jiàn)它提供的所有方法了,如上圖额获。

音頻播放够庙,我們是使用到了SoulPool實(shí)例中的play方法,該方法要傳比較多的參數(shù)抄邀,分別是soundID耘眨、leftVolume、rightVolume撤摸、priority毅桃、loop和rate,它們分別代表的意思是:

soundID:是SoulPool加載資源load方法返回的值准夷,指向某個(gè)已加載的音頻資源钥飞;

leftVolume和rightVolume:分別代表左聲道和右聲道的值,設(shè)置范圍在0f ~ 1f衫嵌;

priority:則是流的優(yōu)先級(jí)读宙;

loop:是循環(huán)播放的次數(shù), 例如-1是表示無(wú)限循環(huán);

rate:則是播放的速率 楔绞,1是正常速率结闸,如果設(shè)置2則表示2倍速率;

play方法返回的streamID酒朵,若返回0則播放失敗桦锄,其它值都代表播放成功。

圖中方法還有pause蔫耽、resume结耀、stop分別代表暫停音播放、恢復(fù)音頻播放和停止音頻播放匙铡。SoulPool提供的方法图甜,源碼中都有,這里就不一一細(xì)說(shuō)了鳖眼。記得黑毅!一定要釋放資源(release)

注意事項(xiàng)

1.SoulPool并不是什么格式的音頻資源都支持的,MP3這些常見(jiàn)的格式當(dāng)然是支持的钦讳,如果有別的格式的音頻可以自己測(cè)試一下矿瘦;

2.SoulPool是Android為了播放簡(jiǎn)短音頻提供的api枕面,所以盡量不要播放時(shí)間過(guò)長(zhǎng)的音頻;

3.設(shè)置播放流的優(yōu)先級(jí)的問(wèn)題匪凡,如果同時(shí)播放的活動(dòng)流的數(shù)目超過(guò)設(shè)置的maxStreams時(shí)膊畴,會(huì)根據(jù)優(yōu)先級(jí)來(lái)停止優(yōu)先級(jí)較低的流掘猿;如果有多個(gè)具有相同低優(yōu)先級(jí)的流病游,它將選擇要停止的最舊流,并且該流不再有效稠通;如果要播放的流的優(yōu)先級(jí)最低衬衬,則會(huì)播放失敗。

4.加載音頻資源的數(shù)量限制也注意一下改橘,別加載過(guò)多滋尉。



? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2021年9月15日程序猿小鐘帶著【播放簡(jiǎn)短音頻類-SoulPool】到此一游~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市飞主,隨后出現(xiàn)的幾起案子狮惜,更是在濱河造成了極大的恐慌,老刑警劉巖碌识,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碾篡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡筏餐,警方通過(guò)查閱死者的電腦和手機(jī)开泽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)魁瞪,“玉大人穆律,你說(shuō)我怎么就攤上這事〉挤” “怎么了峦耘?”我有些...
    開(kāi)封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)旅薄。 經(jīng)常有香客問(wèn)我辅髓,道長(zhǎng),這世上最難降的妖魔是什么赋秀? 我笑而不...
    開(kāi)封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任利朵,我火速辦了婚禮,結(jié)果婚禮上猎莲,老公的妹妹穿的比我還像新娘绍弟。我一直安慰自己,他們只是感情好著洼,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布樟遣。 她就那樣靜靜地躺著而叼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪豹悬。 梳的紋絲不亂的頭發(fā)上葵陵,一...
    開(kāi)封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音瞻佛,去河邊找鬼脱篙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伤柄,可吹牛的內(nèi)容都是我干的绊困。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼适刀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秤朗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起笔喉,我...
    開(kāi)封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤取视,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后常挚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體作谭,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年待侵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丢早。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秧倾,死狀恐怖怨酝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情那先,我是刑警寧澤农猬,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站售淡,受9級(jí)特大地震影響斤葱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揖闸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一揍堕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汤纸,春花似錦衩茸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)幔烛。三九已至,卻和暖如春囊蓝,著一層夾襖步出監(jiān)牢的瞬間饿悬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工聚霜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狡恬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓俯萎,卻偏偏與公主長(zhǎng)得像傲宜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夫啊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361