Android音频池(SoundPool)

本文介绍了一种使用SoundPool在Android应用中实现多种音频播放的方法。通过实例化音频池并设置加载监听,能够轻松实现不同音频的即时播放,并且可以通过调整参数来改变播放的速率与次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            在酒吧中的DJ打碟调动气氛,不同的听觉效果将热度带到最高。这其中的原理其实也就是我们的音频池所要实现

的效果。谁说我们程序员死板,今天就研究下这个好玩的东西。

            在音频池中可以存放多个音乐,所以每个大小都不能超过一M。我们先将它存放在raw文件中,我们先给它放五个音效

  <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="play1"
        android:text="1" />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="play2"
        android:text="2" />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="play3"
        android:text="3" />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="play4"
        android:text="4" />


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="play5"
        android:text="5" />

然后开始java代码的编写

首先实例化一个SoundPool,给每个音效的点击事件添加一段音频

    //实例化音频池(参数一:最多放的音频数量,参数二:音乐类型,参数三:音频质量,一般默认为0)
        soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0);

  public void play1(View view){
        soundPool.load(this,R.raw.one,1);
    }
    public void play2(View view){
        soundPool.load(this,R.raw.two,1);
    }
    public void play3(View view){
        soundPool.load(this,R.raw.three,1);
    }
    public void play4(View view){
        soundPool.load(this,R.raw.four,1);
    }
    public void play5(View view){
        soundPool.load(this,R.raw.five,1);
    }


接下来给音频设置加载完成的监听

 //给音频池设置加载完成的监听
        soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int i, int i1) {

               //参数一:加载完的id,二,三,四:五:六:速率
                soundPool.play(i,1,1,1,100,1);
            }
        });
    }


最后写一个销毁事件

 @Override
    protected void onDestroy() {
        super.onDestroy();
        if(soundPool!=null){
            soundPool.release();
            soundPool=null;
        }
    }


音频池就大概可以实现了,我们可以根据自己的喜好设置不同的音频,不同排序不同速率等,很好玩的




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值