Android-SoundPool音频播放

概述

SoundPool是android提供的一个API类,用来播放短暂的音频。

使用

构造方法中的三个参数

  • 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:优先级
    • loop(0:播放一次;-1:无限播放)
    • rate:播放速率,0.5~2,一般为1
  • pause(int streamID):暂停播放
  • resume(int streamID):恢复播放
  • stop(int streamID):停止播放

简单使用

 //支持的声音数量  声音类型  声音质量
        soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 1);
        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
            }
        });

猜你喜欢

转载自blog.csdn.net/sinat_38892960/article/details/86064461