概述

SoundPool是android原生接口 android.media 提供的一个API类,用来播放短暂急促的音频。

使用

public SoundPool(int maxStreams, int streamType, int srcQuality) 构造方法中的三个参数说明:

  • maxStreams: 同时播放流的最大数量,当播放的流的数目大于此值,则会选择性停止优先级较低的流。
  • streamType :流类型,比如 STREAM_MUSIC。
  • srcQuality :采样率转换器质量,目前没有什么作用,默认填充0。

方法

soundPool的方法:

  • load() :加载音频文件(四种加载方式)
  • int load(AssetFileDescriptor afd, int priority) 通过一个AssetFileDescriptor对象
  • int load(Context context, int resId, int priority) 通过一个资源ID
  • int load(String path, int priority) 通过指定的路径加载
  • int load(FileDescriptor fd, long offset, long length, int priority) 通过FileDescriptor加载

加载资源可能需要时间,一般使用:

soundPool.setOnLoadCompleteListener()//资源加载监听
  • play():播放音频
    方法参数说明:
  • leftVolume:左声道
  • rightVolume:右声道(0.0 到 1.0)
  • pripority:优先级(0=最低优先级)
  • loop:播放次数(0:播放一次;-1:无限播放;2:播放3次)
  • rate:播放速率,0.5~2,一般为1
  • pause(int streamID):暂停播放
  • resume(int streamID):恢复播放
  • stop(int streamID):停止播放

简单使用

//支持的声音数量  声音类型  声音质量
 soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 1);
 //加载声音资源文件(R.raw.message:音频文件)
 final int id = soundPool.load(MainActivity.this, R.raw.message, 1);
 //音频加载完成监听
 soundPool.setOnLoadCompleteListener(new   SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int i, int i2) {
                Log.d("test", "加载完成");
                //开始播放
                soundPool.play(id,  //声音id
                        1, //左声道
                        1, //右声道
                        1, //优先级
                        -1, // 0表示不循环,-1表示循环播放
                        1);//播放比率,0.5~2,一般为1
            }
        });

题外话:「亲爱的陌生人,记得好好生活,爱惜身体,注意休息。一年四季,一日三餐~ 」
今天我下班跑的特别快,有幸迎着落日(如上图⬆️)。