Android使用SoundPool播放音效實(shí)例
使用場景
SoundPool一般用來 播放密集,急促而又短暫的音效,比如特技音效:Duang~,游戲用得較多,你也可以為你的 APP添加上這個音效,比如酷狗音樂進(jìn)去的時候播放"哈嘍,酷狗" 是不是提起了對于SoundPool的興趣了呢
ok,廢話不多說 詳細(xì)的參數(shù)解釋請看注釋
public class SoundPlayer extends AppCompatActivity {
private SoundPool mSoundPool;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sound_player);
initState();
}
private void initState() {
//sdk版本21是SoundPool 的一個分水嶺
if (Build.VERSION.SDK_INT >= 21) {
SoundPool.Builder builder = new SoundPool.Builder();
//傳入最多播放音頻數(shù)量,
builder.setMaxStreams(1);
//AudioAttributes是一個封裝音頻各種屬性的方法
AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
//設(shè)置音頻流的合適的屬性
attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC);
//加載一個AudioAttributes
builder.setAudioAttributes(attrBuilder.build());
mSoundPool = builder.build();
} else {
/**
* 第一個參數(shù):int maxStreams:SoundPool對象的最大并發(fā)流數(shù)
* 第二個參數(shù):int streamType:AudioManager中描述的音頻流類型
*第三個參數(shù):int srcQuality:采樣率轉(zhuǎn)換器的質(zhì)量。 目前沒有效果。 使用0作為默認(rèn)值。
*/
mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
}
//可以通過四種途徑來記載一個音頻資源:
//context:上下文
//resId:資源id
// priority:沒什么用的一個參數(shù),建議設(shè)置為1,保持和未來的兼容性
//path:文件路徑
// FileDescriptor:貌似是流吧,這個我也不知道
//:從asset目錄讀取某個資源文件,用法: AssetFileDescriptor descriptor = assetManager.openFd("biaobiao.mp3");
//1.通過一個AssetFileDescriptor對象
//int load(AssetFileDescriptor afd, int priority)
//2.通過一個資源ID
//int load(Context context, int resId, int priority)
//3.通過指定的路徑加載
//int load(String path, int priority)
//4.通過FileDescriptor加載
//int load(FileDescriptor fd, long offset, long length, int priority)
//聲音ID 加載音頻資源,這里用的是第二種,第三個參數(shù)為priority,聲音的優(yōu)先級*API中指出,priority參數(shù)目前沒有效果,建議設(shè)置為1。
final int voiceId = mSoundPool.load(this, R.raw.duang, 1);
//異步需要等待加載完成,音頻才能播放成功
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
if (status == 0) {
//第一個參數(shù)soundID
//第二個參數(shù)leftVolume為左側(cè)音量值(范圍= 0.0到1.0)
//第三個參數(shù)rightVolume為右的音量值(范圍= 0.0到1.0)
//第四個參數(shù)priority 為流的優(yōu)先級,值越大優(yōu)先級高,影響當(dāng)同時播放數(shù)量超出了最大支持?jǐn)?shù)時SoundPool對該流的處理
//第五個參數(shù)loop 為音頻重復(fù)播放次數(shù),0為值播放一次,-1為無限循環(huán),其他值為播放loop+1次
//第六個參數(shù) rate為播放的速率,范圍0.5-2.0(0.5為一半速率,1.0為正常速率,2.0為兩倍速率)
soundPool.play(voiceId, 1, 1, 1, 0, 1);
}
}
});
}
}
非常簡單的使用。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
欄 目:Android
下一篇:Android自定義底部彈出框ButtomDialog
本文標(biāo)題:Android使用SoundPool播放音效實(shí)例
本文地址:http://www.jygsgssxh.com/a1/Android/9030.html
您可能感興趣的文章
- 01-10Android自定義View之繪制圓形頭像功能
- 01-10Android實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用實(shí)現(xiàn)方法詳解
- 01-10android實(shí)現(xiàn)記住用戶名和密碼以及自動登錄
- 01-10android實(shí)現(xiàn)簡單計(jì)算器功能
- 01-10Android 友盟第三方登錄與分享的實(shí)現(xiàn)代碼
- 01-10android實(shí)現(xiàn)指紋識別功能
- 01-10Emoji表情在Android JNI中的兼容性問題詳解
- 01-10Android實(shí)現(xiàn)圓形漸變加載進(jìn)度條
- 01-10android開發(fā)環(huán)境中SDK文件夾下的所需內(nèi)容詳解
- 01-10android異步消息機(jī)制 源碼層面徹底解析(1)


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


