麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > OS > 安卓 > 正文

android使用SoundPool播放音效的方法

2024-09-11 17:15:15
字體:
來源:轉載
供稿:網友

在Android開發中我們經常使用MediaPlayer來播放音頻文件,但是MediaPlayer存在一些不足,例如:資源占用量較高、延遲時間較長、不支持多個音頻同時播放等。這些缺點決定了MediaPlayer在某些場合的使用情況不會很理想,例如在對時間精準度要求相對較高的游戲開發中。

在游戲開發中我們經常需要播放一些游戲音效(比如:子彈爆炸,物體撞擊等),這些音效的共同特點是短促、密集、延遲程度小。在這樣的場景下,我們可以使用SoundPool代替MediaPlayer來播放這些音效。

SoundPool(android.media.SoundPool),顧名思義是聲音池的意思,主要用于播放一些較短的聲音片段,支持從程序的資源或文件系統加載。與MediaPlayer相比,SoundPool的優勢在于CPU資源占用量低和反應延遲小。另外,SoundPool還支持自行設置聲音的品質、音量、播放比率等參數,支持通過ID對多個音頻流進行管理。

就現在已知的資料來說,SoundPool有一些設計上的BUG,從固件版本1.0開始有些還沒有修復,我們在使用中應該小心再小心。相信將來Google會修復這些問題,但我們最好還是列出來:

  1. SoundPool最大只能申請1M的內存空間,這就意味著我們只能用一些很短的聲音片段,而不是用它來播放歌曲或者做游戲背景音樂。

  2. SoundPool提供了pause和stop方法,但這些方法建議最好不要輕易使用,因為有些時候它們可能會使你的程序莫名其妙的終止。建議使用這兩個方法的時候盡可能多做測試工作,還有些朋友反映它們不會立即中止播放聲音,而是把緩沖區里的數據播放完才會停下來,也許會多播放一秒鐘。

  3. SoundPool的效率問題。其實SoundPool的效率在這些播放類中算是很好的了,但是有的朋友在G1中測試它還是有100ms左右的延遲,這可能會影響用戶體驗。也許這不能管SoundPool本身,因為到了性能比較好的Droid中這個延遲就可以讓人接受了。

在現階段SoundPool有這些缺陷,但也有著它不可替代的優點,基于這些我們建議大在如下情況中多使用SoundPool:1.應用程序中的聲效(按鍵提示音,消息等)2.游戲中密集而短暫的聲音(如多個飛船同時爆炸)

1.相關方法介紹:

1)構造方法:

SoundPool(int maxStreams, int streamType, int srcQuality) 參數依次是:

①指定支持多少個聲音,SoundPool對象中允許同時存在的最大流的數量。

②指定聲音類型,流類型可以分為STREAM_VOICE_CALL, STREAM_SYSTEM, STREAM_RING,STREAM_MUSIC 和 STREAM_ALARM四種類型。在AudioManager中定義。

③指定聲音品質(采樣率變換質量),一般直接設置為0!

在低版本中可以用上述構造方法,而API 21(Android 5.0)后這個構造方法就過時了! 而用到一個SoundPool.Builder的東東,我們要實例化SoundPool只需調用:

SoundPool.Builder spb = new SoundPool.Builder();spb.setMaxStreams(10);spb.setAudioAttributes(null);  //轉換音頻格式SoundPool sp = spb.build();   //創建SoundPool對象

要使用上述代碼的話,TargetSDK版本要設置大于等于21哦!而且如果minSDK版本小于21 會出現下面的提醒:


2)常用方法介紹:

①加載聲音資源:

load(Context context, int resId, int priority) load(String path, int priority) load(FileDescriptor fd, long offset, long length, int priority) load(AssetFileDescriptor afd, int priority) 上述方法都會返回一個聲音的ID,后面我們可以通過這個ID來播放指定的聲音

參數介紹:

context:上下文 resId:資源id priority:沒什么用的一個參數,建議設置為1,保持和未來的兼容性 path:文件路徑 FileDescriptor:貌似是流吧,這個我也不知道 AssetFileDescriptor:從asset目錄讀取某個資源文件,用法:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久影院在线观看 | 日韩黄色精品视频 | 国产精品久久久久久久久久久久久久久久 | 国产流白浆高潮在线观看 | 免费一级肉体全黄毛片 | 国产免费观看视频 | 91 在线视频观看 | 视频一区二区三区免费观看 | 国产一级淫片a级aaa | 久久免费精品视频 | 久久免费看片 | 久久草在线看 | 丰满年轻岳中文字幕一区二区 | 羞羞草视频| 黄色片免费看网站 | 蜜桃精品视频 | 免费观看国产视频 | 久久久国产一区二区三区 | 91久久夜色精品国产网站 | 天堂成人一区二区三区 | 精品国产一区二区三区四区在线 | 亚洲国产高清视频 | 亚洲av一级毛片特黄大片 | 9191色| 在线观看一区二区三区四区 | 久久撸视频 | 羞羞答答xxdd在线播放 | 成人毛片视频在线观看 | 国产一区二区三区视频观看 | 欧美日韩一 | 欧美a区 | 美女wc| 5a级毛片 | 一级黄色性感片 | 黄wwww| 蜜桃网站免费 | 精精国产xxxx视频在线野外 | 欧美激情天堂 | 黄色免费av | 伦一区二区三区中文字幕v亚洲 | 欧美日韩一 |