日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android游戏特效,直播中送礼物短音效实现(支持网络,本地,assets)

發(fā)布時(shí)間:2024/3/24 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android游戏特效,直播中送礼物短音效实现(支持网络,本地,assets) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SoundPlayer

? ? ? ?因?yàn)楣緲I(yè)務(wù)需要完成了一套短音效的處理框架.SoundPlayer是基于androidSoundPool進(jìn)行一次上層的封裝.封裝的目的是簡(jiǎn)潔的調(diào)用,屏蔽google的Sndpool的bug,避免二次書(shū)寫(xiě)代碼引起的問(wèn)題風(fēng)險(xiǎn).
? ? ? 我對(duì)于一個(gè)成熟框架的理解是得具有穩(wěn)定的性能,簡(jiǎn)潔的調(diào)用,和高度的可配置性.所以我在考慮這套框架的設(shè)計(jì),盡可能地往這些方面努力,如果有不完善的地方,希望讀者能積極的issue我一下,我會(huì)在最快的時(shí)間內(nèi)進(jìn)行相應(yīng)的修復(fù)和完善.Soundplayer實(shí)現(xiàn)了動(dòng)態(tài)的音頻資源回收管理,以及自動(dòng)化的生命周期管理,支持本地文件,網(wǎng)絡(luò)路徑,本地assets播放.不說(shuō)那么多了下面介紹下如何使用.

? ? gradle集成配置
? ? ? ?
? ? ? ? ? ? ?

根節(jié)點(diǎn)的 gradle: maven{url'https://www.jitpack.io'}app下 gradle:implementation 'com.github.cfw1992:SoundPlayer:1.0.0'


? ??
? ??
? ? ?1.注冊(cè)權(quán)限,6.0系統(tǒng)下文件相關(guān)權(quán)限記得申請(qǐng)
? ? ?

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


? ? ?
? ? ?
? ? 2.初始化player對(duì)象
? ? ? ??
? ?

?soundPlayer=new SmallSoundPlayer.SoundPlayerBuilder(this).setMaxWaitMusic(100). ? ? ? ?//設(shè)置最大的音樂(lè)播放隊(duì)列,當(dāng)超過(guò)這個(gè)限制后,直接丟棄setMaxMusicLoadNum(10). ? ? ?//設(shè)置最大的音樂(lè)存儲(chǔ)數(shù)setLifeCycleModel(LifeMode.AUTO). // auto是自動(dòng)化的生命周期管理,self是自己處理生命周期setiFileDownLoader(new IFileDownLoader() {//您可以自定義下載管理,但需要實(shí)現(xiàn)相關(guān)接口 @Overridepublic void download(String s, String s1, FileListner fileListner) {fileListner.success(s);}}).setBasePath("")//設(shè)置網(wǎng)絡(luò)文件緩存路徑.build();soundPlayer.start(); //監(jiān)聽(tīng)隊(duì)列,去取出隊(duì)列數(shù)據(jù)播放


? ? ? 音視頻的處理都是要嚴(yán)格的對(duì)生命周期進(jìn)行處理的,所以這塊是不變的,封裝在框架中處理,可以解決重復(fù)代碼的問(wèn)題,也能防止因?yàn)檐浖藛T疏忽對(duì)生命周期的處理從而引發(fā)風(fēng)險(xiǎn);還有另一點(diǎn)在android開(kāi)發(fā)中,你可以將soundplayer寫(xiě)在邏輯類(lèi)里面而不用去在activiity里面持有Soundplayer對(duì)象,或者通過(guò)邏輯類(lèi)去回調(diào)給activiy,降低了耦合性和復(fù)雜性,開(kāi)發(fā)人員用心關(guān)注自己的業(yè)務(wù)部分就好。SoundPlayer也可以定義手動(dòng)管理模式,用于一些不需要按照生命周期實(shí)現(xiàn)的業(yè)務(wù)場(chǎng)景;

? ? ?您可以自定義下載處理,soundplayer庫(kù)里面也有已經(jīng)默認(rèn)實(shí)現(xiàn)的,如果不配置的話,緩存管理已經(jīng)實(shí)現(xiàn)好了,可以正常使用? ? ??


?
? ? 3.播放音頻
? ? ? ?

soundPlayer.play(new SoundResource("http://test.com/sound.mp3"));//播放網(wǎng)路路徑soundPlayer.play(new SoundResource("android路徑/sound.map3")); ? //播放本地路徑soundPlayer.play(new SoundResource(new File("文件路徑"))); //播放本地文件soundPlayer.play(new SoundResource(getResources(),"sound.mp3"));//播放assets文件音樂(lè)PlayConfig playConfig=PlayConfig.defaultConfig(this); ? ??playConfig.setSoundListner(new SoundListner() {@Overridepublic void state(int i) {if(i==PLAYING){//寫(xiě)上自己的邏輯,回調(diào)在主線程,可以處理UI}}});soundPlayer.play(new SoundResource("http://test.com/sound.mp3"),playConfig);//需要音頻和邏輯代碼同步的時(shí)候可以調(diào)用


? ? ? ? PlayConfig配置音頻播放相關(guān)的一些屬性,也可自行配置,最后麻煩廣大的開(kāi)發(fā)同胞能去github給顆star

? ? ? ? github地址:?https://github.com/cfw1992/SoundPlayer

總結(jié)

以上是生活随笔為你收集整理的android游戏特效,直播中送礼物短音效实现(支持网络,本地,assets)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。