作用 播放音效的轻量级 播放 : 铃声
初始化 建议在onstart()方法执行初始化操作
private void initSoundPool() { //声音池 播放音效 soundPool = null; if (Build.VERSION.SDK_INT > 21) { AudioAttributes audioAttributes = new AudioAttributes.Builder() .setLegacyStreamType(AudioManager.STREAM_MUSIC) .build(); soundPool = new SoundPool.Builder() .setMaxStreams(3) .setAudioAttributes(audioAttributes) .build(); } else { //19一下使用 参数一:最大并发流 参数二:流类型 参数三:音频文件质量 没有意义 soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0); } // res/raw目录 load = soundPool.load(this, R.raw.awe, 1); }
使用
private void startSoud() { /** * * @param soundID a soundID returned by the load() function * @param leftVolume left volume value (range = 0.0 to 1.0) * @param rightVolume right volume value (range = 0.0 to 1.0) * @param priority stream priority (0 = lowest priority) * @param loop loop mode (0 = no loop, -1 = loop forever) * @param rate playback rate (1.0 = normal playback, range 0.5 to 2.0) * @return non-zero streamID if successful, zero if failed * public final int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) { */ soundPool.play(load, 1, 1, 1, 0, 1); }
释放声音池
在退出程序的时候需要释放资源
//释放声音池 soundPool.release();
注意事项⚠️
初始化的时候 最好需要在onstart方法来完成
因为如果用户按返回键和home键退出再进来的时候需要重新获取声音池
建议
初始化 onstart()方法
释放 onstop()方法