Android頻繁播放簡短音訊解決方案---SoundPool
本人小菜,昨天接到這樣的一個需求,我們有一個智慧書櫃,使用者按密碼開鎖,開鎖的時候按數字幾就要播放數字幾的發音,我當時就想到了MediaPlayer可以搞,沒錯,是可以,但是用著用著就出來了一點小遐思,老闆肯定不同意啊,於是百度好久終於找到了一個據說已經廢棄的了SoundPool,簡單的瞭解了一下SoundPool,他和MediaPlayer來比 就好像一個是輕量級一個是重量級的東西,他沒有MediaPlayer播放的延遲,也沒有載入的等待,更沒有資源的過大,但是,之前我們也說了 他是屬於一個輕量級的東西,因為他只適合播放小音訊檔案,比如按鍵音效或者遊戲音效等等,另外SoundPool推舉的語音格式是OGG,但是對於MP3也支援,但是為了安全起見,我們還是用OGG吧,把資源放到res-raw目錄下
好了 廢話不多說 開擼
首先建立一個SoundPool物件
// SoundPool物件 public static SoundPool mSound = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);SoundPool有三個引數 分別代表
maxstreams | 這個SoundPool物件的最大數量的同步流 |
---|---|
streamtype |
音訊流式在audiomanager為例介紹,遊戲應用中通常會使用STREAM_MUSIC |
srcquality |
取樣率轉換器的質量。目前有沒有影響。使用0的預設。 |
接下來寫新增音訊檔案的方法
/** * 初始化音訊檔案 */ private void initMusic(){ //分別加入到SoundPool中 mSound.load(this, R.raw.b0, 1);// 1 mSound.load(this, R.raw.b1, 1);// 2 mSound.load(this, R.raw.b2, 1);// 3 mSound.load(this, R.raw.b3, 1);// 4 mSound.load(this, R.raw.b4, 1);// 5 mSound.load(this, R.raw.b5, 1);// 6 mSound.load(this, R.raw.b7, 1);// 8 mSound.load(this, R.raw.b8, 1);// 9 mSound.load(this, R.raw.b9, 1);// 10 }
在onCreate中初始化此方法
下面我們來寫播放音訊的方法
/** * 播放MP3資源 * @param resId 資源ID */ private void StartMusic(int resId){ /** * 第一個引數為播放音訊ID * 第二個 第三個為音量 * 第四個為優先順序 * 第五個為是否迴圈播放 * 第六個設定播放速度 * 返回值 不為0即代表成功 */ int type = mSound.play(resId, 15, 15, 0, 0, 1); }
下面來貼一下整體程式碼
public class MainActivity extends AppCompatActivity implements View.OnClickListener { // SoundPool物件 public static SoundPool mSound = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button_0).setOnClickListener(this); findViewById(R.id.button_1).setOnClickListener(this); findViewById(R.id.button_2).setOnClickListener(this); findViewById(R.id.button_3).setOnClickListener(this); findViewById(R.id.button_4).setOnClickListener(this); findViewById(R.id.button_5).setOnClickListener(this); findViewById(R.id.button_6).setOnClickListener(this); findViewById(R.id.button_7).setOnClickListener(this); findViewById(R.id.button_8).setOnClickListener(this); findViewById(R.id.button_9).setOnClickListener(this); initMusic(); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button_0: StartMusic(1); break; case R.id.button_1: StartMusic(2); break; case R.id.button_2: StartMusic(3); break; case R.id.button_3: StartMusic(4); break; case R.id.button_4: StartMusic(5); break; case R.id.button_5: StartMusic(6); break; case R.id.button_6: StartMusic(7); break; case R.id.button_7: StartMusic(8); break; case R.id.button_8: StartMusic(9); break; case R.id.button_9: StartMusic(10); break; } } /** * 播放MP3資源 * @param resId 資源ID */ private void StartMusic(int resId){ /** * 第一個引數為播放音訊ID * 第二個 第三個為音量 * 第四個為優先順序 * 第五個為是否迴圈播放 * 第六個設定播放速度 * 返回值 不為0即代表成功 */ int type = mSound.play(resId, 15, 15, 0, 0, 1); } /** * 初始化音訊檔案 */ private void initMusic(){ //分別加入到SoundPool中 mSound.load(this, R.raw.b0, 1);// 1 mSound.load(this, R.raw.b1, 1);// 2 mSound.load(this, R.raw.b2, 1);// 3 mSound.load(this, R.raw.b3, 1);// 4 mSound.load(this, R.raw.b4, 1);// 5 mSound.load(this, R.raw.b5, 1);// 6 mSound.load(this, R.raw.b7, 1);// 8 mSound.load(this, R.raw.b8, 1);// 9 mSound.load(this, R.raw.b9, 1);// 10 } }
到這裡一個簡單的小demo就完成了,大家根據自己的需要學習,另外語音合成軟體和OGG格式轉換軟體 我會打包給大家,一起進步
下載地址:http://download.csdn.net/download/crackgmkey/10046337
相關文章
- android 音訊播放 SoundPoolAndroid音訊
- Android中用SoundPool播放音訊Android音訊
- 使用soundPool播放音訊音訊
- Android中Activity頻繁進入再退出時程式崩潰的解決方案Android
- 多維分析模型頻繁變動的解決方案有哪些?模型
- 簡訊介面防盜刷解決方案
- windows7 頻繁當機的解決方法Windows
- Android soundpool release卡住Android
- 史上最全解析Android訊息推送解決方案Android
- win10執行老遊戲卡頓怎麼解決 win10執行老遊戲頻繁卡頓解決方案Win10遊戲
- 網咖頻繁掉線(ARP)與解決方法(轉)
- 解決方案| anyRTC金融音視訊解決方案
- Android中SoundPool的使用Android
- Shiro效能優化:解決Session頻繁讀寫問題優化Session
- 解決Kafka消費者啟動時頻繁列印日誌Kafka
- 無線路由器頻繁斷線問題巧解決路由器
- [訊號處理小結系列4]最頻繁…
- 實時流(直播流)播放、上牆(大屏播放)解決方案
- Android之Mina頻繁傳送心跳包Android
- 小程式容器(沙箱)是否可以解決App頻繁發版問題?APP
- Oracle資料庫頻繁歸檔問題的解決辦法Oracle資料庫
- Android中實現短音訊和震動的一些總結Android音訊
- Android多媒體之SoundPool+pcm流的音訊操作Android音訊
- win10正式版頻繁當機怎麼辦_win10電腦突然開始頻繁當機解決方法Win10
- Chrome使用video無法正常播放MP4視訊的解決方案ChromeIDE
- 使用代理IP時頻繁掉線如何解決?
- 視訊轉碼解決方案
- 某銀行無線網路頻繁掉線重認證分析、解決方案及抓包經驗分享
- 頁面間通訊與資料共享解決方案簡析
- android 使用 SoundPool 語音播報Android
- 音視訊即時通訊解決方案
- ios微信下vue專案元件切換並自動播放音訊的解決方案iOSVue元件音訊
- Android播放swf類視訊Android
- flutter視訊全頻播放,音量亮度的調節Flutter
- 電腦經常藍屏是什麼原因怎麼解決 頻繁藍屏的解決辦法
- Lora通訊解決方案對比
- Vue 元件通訊的解決方案Vue元件
- IT頻繁跳槽不是錯薦