Android SoundPool實現(xiàn)簡短小音效
一、SoundPool介紹
我們之前有用過MediaPlayer進行 音頻文件,但是當(dāng)我們的應(yīng)用程序需要經(jīng)常的 密集、短促的音效時,調(diào)用MediaPlayer則會占用系統(tǒng)的大量資源,且延時時間較長,不支持多個音頻同時 。這種簡單的音樂的 就運用到了我們的SoundPool,它使用音效池的概念來管理短促的音效,例如它可以開始就加載20 個音效,通過他們的id進行管理與 。SoundPool的優(yōu)勢在于占用的CPU資源少,反應(yīng)延遲降低。另外它還支持自行設(shè)置聲音的品質(zhì),音量, 比率。
二、使用示例
注意:使用時我們需要在res目錄下新建一個文件夾raw(這個名字是固定的,必須這樣寫),將音樂放在該文件夾下面。
使用:
public class MainActivity extends Activity implements OnClickListener{ private Button mbtn_start; private SoundPool spool; private int id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mbtn_start=(Button) findViewById(R.id.bt_start); id=initSoundpool(); mbtn_start.setOnClickListener(this); } // @TargetApi(Build.VERSION_CODES.L) private int initSoundpool() { //Sdk版本>=21時使用下面的方法 if(Build.VERSION.SDK_INT>=21){ SoundPool.Builder builder=new SoundPool.Builder(); //設(shè)置最多容納的流數(shù) builder.setMaxStreams(2); AudioAttributes.Builder attrBuilder=new AudioAttributes.Builder(); attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC); builder.setAudioAttributes(attrBuilder.build()); pool=builder.build(); }else{ spool=new SoundPool(2,AudioManager.STREAM_MUSIC, 0); } //加載音頻文件,返回音頻文件的id int id=spool.load(getApplicationContext(),R.raw.mali,1); return id; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_start: //SoundPool的創(chuàng)建需要時間,因此不能將SoundPool初始化后直接start /*參數(shù): (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)*/ spool.play(id, 1, 1, 0, -1, 1); break; default: break; } } }
注 spool.play參數(shù)介紹(參考API):
Parameters
soundID load方法返回的ID號
leftVolume left volume value (range = 0.0 to 1.0)左聲道
rightVolume right volume value (range = 0.0 to 1.0)右聲道
priority stream priority (0 = lowest priority)優(yōu)先級
loop loop mode (0 = no loop, -1 = loop forever)是否循環(huán)
rate playback rate (1.0 = normal playback, range 0.5 to 2.0)屬性設(shè)置或返回音頻/視頻的當(dāng)前 速度
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:Android應(yīng)用禁止屏幕休眠的3種方法
欄 目:Android
本文標題:Android SoundPool實現(xiàn)簡短小音效
本文地址:http://mengdiqiu.com.cn/a1/Android/9028.html
您可能感興趣的文章
- 01-10Android自定義View之繪制圓形頭像功能
- 01-10Android實現(xiàn)雙擊返回鍵退出應(yīng)用實現(xiàn)方法詳解
- 01-10android實現(xiàn)記住用戶名和密碼以及自動登錄
- 01-10android實現(xiàn)簡單計算器功能
- 01-10Android 友盟第三方登錄與分享的實現(xiàn)代碼
- 01-10C++自定義API函數(shù)實現(xiàn)大數(shù)相乘算法
- 01-10如何給Flutter界面切換實現(xiàn)點特效
- 01-10android實現(xiàn)指紋識別功能
- 01-10Emoji表情在Android JNI中的兼容性問題詳解
- 01-10Android實現(xiàn)圓形漸變加載進度條


閱讀排行
本欄相關(guān)
- 01-10Android自定義View之繪制圓形頭像功能
- 01-10Android實現(xiàn)雙擊返回鍵退出應(yīng)用實現(xiàn)方
- 01-10android實現(xiàn)簡單計算器功能
- 01-10android實現(xiàn)記住用戶名和密碼以及自動
- 01-10C++自定義API函數(shù)實現(xiàn)大數(shù)相乘算法
- 01-10Android 友盟第三方登錄與分享的實現(xiàn)代
- 01-10android實現(xiàn)指紋識別功能
- 01-10如何給Flutter界面切換實現(xiàn)點特效
- 01-10Android實現(xiàn)圓形漸變加載進度條
- 01-10Emoji表情在Android JNI中的兼容性問題詳
隨機閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子