package com.wdkl.callingbed2.service; import android.media.AudioAttributes; import android.media.AudioManager; import android.media.SoundPool; import android.os.Build; import com.wdkl.callingbed2.MyApplication; import com.wdkl.callingbed2.R; import java.util.HashMap; public class SoundPoolManager { private static SoundPoolManager instance; private SoundPool soundPool; private HashMap soundID = new HashMap(); private boolean isLoaded = false; private boolean inited = false; public static SoundPoolManager getInstance() { if (instance == null) { instance = new SoundPoolManager(); } return instance; } public void init() { if (inited) { return; } if(Build.VERSION.SDK_INT > 21){ SoundPool.Builder builder = new SoundPool.Builder(); //传入音频数量 builder.setMaxStreams(2); //AudioAttributes是一个封装音频各种属性的方法 AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder(); //设置音频流的合适的属性 attrBuilder.setLegacyStreamType(AudioManager.STREAM_SYSTEM);//STREAM_MUSIC //加载一个AudioAttributes builder.setAudioAttributes(attrBuilder.build()); soundPool = builder.build(); }else{ soundPool = new SoundPool(2, AudioManager.STREAM_SYSTEM, 0); } //来电 soundID.put(1, soundPool.load(MyApplication.getAppContext(), R.raw.incoming_call, 1)); //去电 soundID.put(2, soundPool.load(MyApplication.getAppContext(), R.raw.outgoing_call, 1)); //测试 soundID.put(3, soundPool.load(MyApplication.getAppContext(), R.raw.audio_test, 1)); soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { isLoaded = true; inited = true; } }); } public void playSound(int index) { try { if (isLoaded) { soundPool.play(soundID.get(index), 1, 1, 0, 0, 1); } } catch (Exception e) { e.printStackTrace(); } } public void release() { soundPool.release(); } }