12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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<Integer, Integer> soundID = new HashMap<Integer, Integer>();
- 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();
- }
- }
|