Android学习 SoundPool

SoundPool只能播放短的音乐,常用来做游戏音效或铃声

SoundPool

使用:

1.将音乐文件拷贝到项目里
2.新建一个实例对象
3.使用load()方法,让SoundPool实例加载音效资源,该方法会返回一个整型的soundID
4.使用play()方法播放音效

实现思路:

1.创建对象:

SoundPool只有一个构造方法:
SoundPool(int maxStreams, int streamType, int srcQuality)
第一个参数 int maxStreams:指定支持多少个声音
第二个参数 int streamType:声音流的类型,一般用STREAM_MUSIC
第三个参数 int srcQuality:声音的品质

2.添加音频:

load()方法来添加
public int load(Context context, int resId, int priority)
参数分别是:
Context context:最主要的功能是加载和访问资源。
int resId:想要加载的音效资源ID
int priority音效播放时的优先级

3.播放音频:

play()方法来播放
play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
参数是:
int soundID: 第一个参数指定播放哪个声音
float leftVolumefloat rightVolume:第二三个参数指定左右声道音量
int priority:第四个参数播放声音的优先级,值越大越优先播放,0最小
int loop, float rate第五个参数是否循环,其中负数表示无穷循环,非负数表示循环次数,比如0表示循环0次,也就是播放一次就不再循环了,总共就只播放一次;1则表示循环1次(总共播放2次)
float rate:音频播放速率(就是快进、快退啥的),取值0.5f - 2.0f,其中0.5表示播放速度为正常的0.5倍。1表示正常速率播放。

4.代码示例:

步骤:
1.首先在res文件下新建raw文件
2.然后把我们加载的音效放在raw文件下
3.然后就可以写代码

主要代码:

import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;

public class GameSoundPool {
    private SoundPool soundPool;
    private int s1;
    private int s2;

    public GameSoundPool(Context context){
        this.soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC,0);
        s1 = soundPool.load(context,R.raw.shoot,1);    //第二个参数是播放的音频资源名,第三个参数是播放优先级
        s2 = soundPool.load(context,R.raw.explosion3,1);
    }

    public void playSound(int s){
        switch (s){
            case 1:
                /**
                 * 第一个参数是 音效对象,第二和第三个参数是左,右声道音量,第四个是优先级,第五个是是否循环,第六个是播放倍速
                 */
                soundPool.play(s1,1,1,1,0,2f);//
                break;
            case 2:
                soundPool.play(s2,1,1,1,0,1f);
                break;
        }
    }

}

最后将SoundPool的对象传到布局里面调用

最后,SoundPool的API:

http://www.android-doc.com/reference/android/media/SoundPool.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值