如何使用SoundPool加載音頻文件?下面南昌APP制作開發(fā)公司-百恒網(wǎng)絡(luò)就來(lái)為大家揭曉,不過在介紹如何使用SoundPool加載音頻文件前首先得先創(chuàng)建一個(gè)SoundPool對(duì)象,具體操作如下圖所示。
Lollipop引入了新的方式創(chuàng)建SoundPool:使用SoundPool.Builder。不過,為了兼容API 16最低級(jí)別,只能選擇使用SoundPool(int, int, int)這個(gè)老構(gòu)造方法了。
第一個(gè)參數(shù)指定同時(shí)播放多少個(gè)音頻。這里指定了5個(gè)。在播放5個(gè)音頻時(shí),如果嘗試再播放第6個(gè),SoundPool會(huì)停止播放原來(lái)的音頻。
第二個(gè)參數(shù)確定音頻流類型。Android有很多不同的音頻流,它們都有各自獨(dú)立的音量控制選項(xiàng)。這就是調(diào)低音樂音量,鬧鐘音量卻不受影響的原因。打開文檔,查看AudioManager類的AUDIO_*常量,還可以看到其他控制選項(xiàng)。STREAM_MUSIC使用的是同音樂和游戲一樣的音量控制。
最后一個(gè)參數(shù)指定采樣率轉(zhuǎn)換品質(zhì),這個(gè)參數(shù)不起作用,所以這里傳入0值。
接下來(lái)就開始使用SoundPool加載音頻文件,相比其他音頻播放方法,SoundPool還有個(gè)快速響應(yīng)的優(yōu)勢(shì):指令剛一發(fā)出,它就會(huì)立即開始播放,一點(diǎn)都不拖沓。
不過反應(yīng)快也是有代價(jià)的,那就是在播放前必須預(yù)先加載音頻。SoundPool加載的音頻文件都有自己的Integer類型ID。如下圖所示,在Sound類中添加mSoundId實(shí)例變量,并添加相應(yīng)的獲取方法和設(shè)置方法管理這些ID。
南昌APP制作開發(fā)公司要提醒大家的是,mSoundId用了Integer類型而不是int。這樣,在Sound的mSoundId沒有值時(shí)可以設(shè)置其為null值。
現(xiàn)在處理音頻加載。在BeatBox中添加一個(gè)load(Sound)方法載入音頻,如下圖所示。
調(diào)用mSoundPool.load(AssetFileDescriptor, int)方法可以把文件載入SoundPool待播。為方便管理、重播或卸載音頻文件,mSoundPool.load(...)方法會(huì)返回一個(gè)int型ID。這實(shí)際就是存儲(chǔ)在mSoundId中的ID。調(diào)用openFd(String)方法有可能拋出IOException,load(Sound)方法也是如此。
現(xiàn)在,在BeatBox.loadSounds()方法中,調(diào)用load(Sound)方法載入全部音頻文件,如下圖所示。
運(yùn)行應(yīng)用確認(rèn)音頻都已正確加載。否則,會(huì)看到LogCat中的紅色異常日志。
以上就是百恒網(wǎng)絡(luò)為大家講的使用SoundPool加載音頻文件方法,了解更多關(guān)于南昌APP開發(fā)技術(shù)資訊,歡迎來(lái)電咨詢百恒網(wǎng)絡(luò),或者訪問公司官網(wǎng)查看更多技術(shù)文章。