Android多媒体--SoundPool

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28946307/article/details/51429795
  • SoundPool是用来播放短促声音的对象,他最大支持存放20个短促的声音
  • 具体使用的代码请参见下面的demo示例
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button button;
    private SoundPool soundPool;
    private Map<String,Integer> poolMap;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();

        poolMap = new HashMap<String, Integer>();//容器
        // 第一个参数为音频池最多支持装载多少个音频,就是音频池的大小,最大容量为不超过20
        // 第二个参数指定声音的类型,在AudioManager类中以常量的形式定义,
        // 一般指定为AudioManager.STREAM_MUSIC即可;
        // 第三个参数为音频的质量,默认为0,这个参数为预留参数,现在没有实际意义,为扩展预留字段,一般传0即可
        soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        // 装载音频进音频池,并且把ID记录在Map中
        poolMap.put("test", soundPool.load(this, R.raw.ce, 1));

        soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {

            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,
                                       int status) {
                // 每次装载完成均会回调
                // 当前装载完成ID为map的最大值,即为最后一次装载完成
                if (sampleId == poolMap.size()) {
                    // 进入应用播放四次声音
                    //第一个参数是歌曲的ID,第二个和第三个参数是左右声道的音量,值为0f--1.0f
                    //第四一个参数是音频的质量,暂时没有什么意义,给0就可以
                    //第五个参数是循环的次数,0为播放一次,-1为循环播放,如给3就是播放4次
                    //第六个参数是播放的速率,值为0--2之间,1表示正常播放
                    MainActivity.this.soundPool.play(poolMap.get("test"), 1.0f, 1.0f, 0, 3,
                            1.0f);
                }
            }
        });


    }

    private void init() {
        button= (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                if (soundPool != null) {
                    soundPool.play(poolMap.get("test"), 1.0f, 1.0f, 0, -1, 1.0f);
                }
                break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_28946307/article/details/51429795