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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android SoundPool 的简单使用

發布時間:2024/4/13 Android 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android SoundPool 的简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

之前只知道Android中可以用MediapLayer播放音樂,原來今天才發現可以用SoundPool,用SoundPool可以播一些短的反應速度要求高的聲音,比如游戲中的爆破聲,而MediapLayer適合播放長點的。?

一般在玩游戲的時候,特別是在射擊游戲中,經常會出現“突突突的射擊”的聲音,聽起來好多聲音連發的效果。其實實現起來是不難的,都知道,在Java中有線程池的概念,那么,類似的,在Android中,也存在SoundPool的概念。

備注:聲音池默認申請1M的內存空間,所以不適合加載大文件。

  • SoundPool載入音樂文件使用了獨立的線程,不會阻塞UI主線程的操作。但是這里如果音效文件過大沒有載入完成,我們調用play方法時可能產生嚴重的后果,這里Android SDK提供了一個SoundPool.OnLoadCompleteListener類來幫助我們了解媒體文件是否載入完成,我們重載 onLoadComplete(SoundPool soundPool, int sampleId, int status) 方法即可獲得。?

  • 從上面的onLoadComplete方法可以看出該類有很多參數,比如類似id,是的SoundPool在load時可以處理多個媒體一次初始化并放入內存中,這里效率比MediaPlayer高了很多。?

  • SoundPool類支持同時播放多個音效,這對于游戲來說是十分必要的,而MediaPlayer類是同步執行的只能一個文件一個文件的播放。

  • SoundPool播放工具類代碼如下?:

    package?com.sendinfo.cloudcheck.mediaplay;import?android.content.Context; import?android.media.AudioManager; import?android.media.SoundPool; import?android.media.SoundPool.OnLoadCompleteListener;public?class?SoundPoolUtil?{private?static?SoundPool?mSoundPool;public?static?SoundPool?create(Context?context,?int?resId)?{/***?初始化聲音池??*?參數1:在聲音池中最大的數量???*?參數2:流類型?默認使用AudioManager.STREAM_MUSIC??*?參數3:質量??默認為0?這個值暫時沒影響*/if?(mSoundPool?==?null)?{mSoundPool?=?new?SoundPool(5,?AudioManager.STREAM_MUSIC,?0);}/***?load加載聲音??*?參數1:上下文*?參數2:音頻文件*?參數3:優先級?默認1?暫時沒影響*/final?int?soundId?=?mSoundPool.load(context,?resId,?1);mSoundPool.setOnLoadCompleteListener(new?OnLoadCompleteListener()?{@Overridepublic?void?onLoadComplete(SoundPool?soundPool,?int?sampleId,?int?status)?{/***?參數1:加載返回的聲音Id*?參數2:左聲道*?參數3:右聲道*?參數4:優先級*?參數5:是否循環播放?0:不循環?-1:循環*?參數6:速率??0.5--2.0*/soundPool.play(soundId,?1.0f,?0.5f,?1,?0,?1.0f);}});return?mSoundPool;}/***?@Title:?dismisSoundPool?@Description:?釋放播放池?@param?設定文件?@return?void*?????????返回類型?@throws*/public?static?void?dismisSoundPool()?{if?(mSoundPool?!=?null)?{mSoundPool.release();mSoundPool?=?null;}}}音頻文件放在res/raw目錄下面???test.wav 如何調用?:??SoundPoolUtil.create(MainActivity.this,?R.raw.test);


    ?

    ?

    ?

    ?

    ?


    ?

    轉載于:https://my.oschina.net/u/2320245/blog/536116

    總結

    以上是生活随笔為你收集整理的Android SoundPool 的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。