[Android] SoundPool 播放效果音
和 MediaPlayer 不同的是 MediaPlayer 主要播長度較長的音樂之類;SoundPool 是以播會重疊到,長度較短的效果音
限制:
1MB以下
.wav / .mp3 (ogg沒試)
SoundPool sp = SoundPool( 10, AudioManager.STREAM_MUSIC, 0);
//(最大音效數 , 聲音類型 , 來源品質-0為預設)
放於res/raw讀入
soundId_ = soundPool_.load(this, R.raw.sound, 1);
放於asserts讀入
descriptor = this.getResources().getAssets().openFd("sound.wav"); seLogo = sp.load(descriptor, 1 );
播放
soundId_ = soundPool_.load(this, R.raw.sound, 1);
ample 1 not READY 錯誤時
方法1 - 需android2.2以上
sp.setOnLoadCompleteListener(new OnLoadCompleteListener(){ @Override public void onLoadComplete(SoundPool arg0, int arg1, int arg2) { sp.play(seLogo, 1, 1, 0, 0, 1.0f); }});
方法2
int sid=0; for (int i = 0; i < 1000; i++){ if (sid == 0) { try { sid = sp.play(seLogo, 1, 1, 0, 0, 1.0f); Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } else { break; } }