SoundPlayer
? ? ? ?因為公司業務需要完成了一套短音效的處理框架.SoundPlayer是基于androidSoundPool進行一次上層的封裝.封裝的目的是簡潔的調用,屏蔽google的Sndpool的bug,避免二次書寫代碼引起的問題風險.
? ? ? 我對于一個成熟框架的理解是得具有穩定的性能,簡潔的調用,和高度的可配置性.所以我在考慮這套框架的設計,盡可能地往這些方面努力,如果有不完善的地方,希望讀者能積極的issue我一下,我會在最快的時間內進行相應的修復和完善.Soundplayer實現了動態的音頻資源回收管理,以及自動化的生命周期管理,支持本地文件,網絡路徑,本地assets播放.不說那么多了下面介紹下如何使用.
? ? gradle集成配置
? ? ? ?
? ? ? ? ? ? ?
根節點的 gradle: maven{url'https://www.jitpack.io'}app下 gradle:implementation 'com.github.cfw1992:SoundPlayer:1.0.0'
? ??
? ??
? ? ?1.注冊權限,6.0系統下文件相關權限記得申請
? ? ?
<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對象
? ? ? ??
? ?
?soundPlayer=new SmallSoundPlayer.SoundPlayerBuilder(this).setMaxWaitMusic(100). ? ? ? ?//設置最大的音樂播放隊列,當超過這個限制后,直接丟棄setMaxMusicLoadNum(10). ? ? ?//設置最大的音樂存儲數setLifeCycleModel(LifeMode.AUTO). // auto是自動化的生命周期管理,self是自己處理生命周期setiFileDownLoader(new IFileDownLoader() {//您可以自定義下載管理,但需要實現相關接口 @Overridepublic void download(String s, String s1, FileListner fileListner) {fileListner.success(s);}}).setBasePath("")//設置網絡文件緩存路徑.build();soundPlayer.start(); //監聽隊列,去取出隊列數據播放
? ? ? 音視頻的處理都是要嚴格的對生命周期進行處理的,所以這塊是不變的,封裝在框架中處理,可以解決重復代碼的問題,也能防止因為軟件人員疏忽對生命周期的處理從而引發風險;還有另一點在android開發中,你可以將soundplayer寫在邏輯類里面而不用去在activiity里面持有Soundplayer對象,或者通過邏輯類去回調給activiy,降低了耦合性和復雜性,開發人員用心關注自己的業務部分就好。SoundPlayer也可以定義手動管理模式,用于一些不需要按照生命周期實現的業務場景;
? ? ?您可以自定義下載處理,soundplayer庫里面也有已經默認實現的,如果不配置的話,緩存管理已經實現好了,可以正常使用? ? ??
?
? ? 3.播放音頻
? ? ? ?
soundPlayer.play(new SoundResource("http://test.com/sound.mp3"));//播放網路路徑soundPlayer.play(new SoundResource("android路徑/sound.map3")); ? //播放本地路徑soundPlayer.play(new SoundResource(new File("文件路徑"))); //播放本地文件soundPlayer.play(new SoundResource(getResources(),"sound.mp3"));//播放assets文件音樂PlayConfig playConfig=PlayConfig.defaultConfig(this); ? ??playConfig.setSoundListner(new SoundListner() {@Overridepublic void state(int i) {if(i==PLAYING){//寫上自己的邏輯,回調在主線程,可以處理UI}}});soundPlayer.play(new SoundResource("http://test.com/sound.mp3"),playConfig);//需要音頻和邏輯代碼同步的時候可以調用
? ? ? ? PlayConfig配置音頻播放相關的一些屬性,也可自行配置,最后麻煩廣大的開發同胞能去github給顆star
? ? ? ? github地址:?https://github.com/cfw1992/SoundPlayer
總結
以上是生活随笔為你收集整理的android游戏特效,直播中送礼物短音效实现(支持网络,本地,assets)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。