使用soundpool示例播放声音

我非常soundpool Android编程,我想学习如何使用soundpool方法,我曾经search过它,但是我发现所有的东西似乎不容易理解! 我想让你给我看一个运行2个声音的非常简单的例子。

1.在yourApp / res /下创build一个名为raw的文件夹,

2.将您的铃声复制并粘贴到该文件夹​​中

深入了解本教程1教程2

 SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); /** soundId for Later handling of sound pool **/ int soundId = sp.load(context, R.raw.windows_8_notify, 1); // in 2nd param u have to pass your desire ringtone sp.play(soundId, 1, 1, 0, 0, 1); MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.windows_8_notify); // in 2nd param u have to pass your desire ringtone //mPlayer.prepare(); mPlayer.start(); 

你也可以设置监听器

  sp.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId,int status) { } }); 

对于棒棒糖检查@ user3833732答案。

是。 我也经历了这个。 但为了安全,我保存了一段我在网上find的代码。 虽然没用过,但我知道它会很快派上用场。

1)您需要创buildAudioAttributes对象:

 AudioAttributes attributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); 

2)创buildSoundPool对象:

 SoundPool sounds = new SoundPool.Builder() .setAudioAttributes(attributes) .build(); 

3)如何在所有API级别使用SoundPool示例:

 SoundPool sound; protected void createSoundPool() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { createNewSoundPool(); } else { createOldSoundPool(); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) protected void createNewSoundPool(){ AudioAttributes attributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); sounds = new SoundPool.Builder() .setAudioAttributes(attributes) .build(); } @SuppressWarnings("deprecation") protected void createOldSoundPool(){ sounds = new SoundPool(5,AudioManager.STREAM_MUSIC,0); } 

我已经写了一个SoundPoolManager,可以用来加载声音文件,并在需要时播放。 你可以在这里看到它。

谢谢。

这里是一个小的, 运行soundPool例子,它是从这里取得的 ,稍作修改以匹配post 21的API。

有一点需要注意的是maxStreams ,它表示允许多less个数据stream并行运行,如果是一个(默认值),则可以从构build器中删除。

 import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.media.SoundPool; public class SoundManager extends Activity { static SoundPool soundPool; static int[] sm; static AudioManager amg; public static void InitSound() { int maxStreams = 1; Context mContext = getApplicationContext(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { soundPool = new SoundPool.Builder() .setMaxStreams(maxStreams) .build(); } else { soundPool = new SoundPool(maxStreams, AudioManager.STREAM_MUSIC, 0); } sm = new int[3]; // fill your sounds sm[0] = soundPool.load(mContext, R.raw.sound_1, 1); sm[1] = soundPool.load(mContext, R.raw.sound_2, 1); sm[2] = soundPool.load(mContext, R.raw.sound_3, 1); amg = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE); } static void playSound(int sound) { soundPool.play(sm[sound], 1, 1, 1, 0, 1f); } public final void cleanUpIfEnd() { sm = null; soundPool.release(); soundPool = null; } }