25、从头学Android之多媒体--使用SoundPool播放音频

SoundPool

构造方法

构造方法

描述

public SoundPool (int maxStreams, int streamType, int srcQuality)

参数说明:

maxStreams:指定支持多少个文件

streamType:指定声音类型

srcQuality:声音品质

常见方法

方法名称

描述

public int load (Context context, int resId, int priority)

从资源ID所对应的资源加载声音

public int load (AssetFileDescriptor afd, int priority)

从原始资源文件中加载声音

public int load (FileDescriptor fd, long offset, long length, int priority)

从原始资源文件中加载声音并设置加载从哪开始到多长的声音文件

public int load (String path, int priority)

从指定文件路径加载声音

public final void pause (int streamID)

暂停

public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)

播放

参数说明:

soundID:资源ID

leftVolume:左频道声音

rightVolume:右频道声音

loop:-1代表循环,0代表不循环

rate:值0.5-2.0设置1为正常

public final void release ()

释放SoundPool对象资源

public final void stop (int streamID)

停止

public void setOnLoadCompleteListener (SoundPool.OnLoadCompleteListener listener)

设置监听器,在加载音乐文件完成时触发该事件

package com.jiahui.soundpool; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SoundPoolDemoActivity extends Activity implements OnClickListener { private Button btnbomb, btnshot, btnarrow; private SoundPool soundPool; Map<Integer, Integer> soundMap = new HashMap<Integer, Integer>(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnbomb = (Button) this.findViewById(R.id.btnbomb); btnshot = (Button) this.findViewById(R.id.btnshot); btnarrow = (Button) this.findViewById(R.id.btnarrow); btnbomb.setOnClickListener(this); btnshot.setOnClickListener(this); btnarrow.setOnClickListener(this); // 创建 SoundPool对象设置最多容纳10个音频。音频的品质为5 soundPool = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5); // load方法加载音频文件返回对应的ID soundMap.put(1, soundPool.load(this, R.raw.bomb, 1)); soundMap.put(2, soundPool.load(this, R.raw.shot, 1)); soundMap.put(3, soundPool.load(this, R.raw.arrow, 1)); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnbomb: soundPool.play(soundMap.get(1), 1, 1, 1, 0, 1); break; case R.id.btnshot: soundPool.play(soundMap.get(2), 1, 1, 1, 0, 1); break; case R.id.btnarrow: soundPool.play(soundMap.get(3), 1, 1, 1, 0, 1); break; default: break; } } }


如需转载引用请注明出处:http://blog.csdn.net/jiahui524

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SoundPool类是Android中一个用于播放音频的类,它可以实现快速加载音频资源并进行播放。下面是使用SoundPool播放音频文件的方法的实验小结: 1. 创建SoundPool对象 首先需要创建一个SoundPool对象,可以使用SoundPool的构造函数进行创建。例如,可以使用以下代码创建一个SoundPool对象: ``` SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); ``` 其中,第一个参数表示SoundPool对象的最大容量,第二个参数表示使用音频流类型,第三个参数表示音频品质,可以设置为0。 2. 加载音频资源 在播放音频之前,需要将音频资源加载到SoundPool中。可以使用SoundPool的load方法进行加载。例如,加载一个名为sound1的音频资源: ``` int soundId = soundPool.load(context, R.raw.sound1, 1); ``` 其中,第一个参数表示上下文对象,第二个参数表示音频资源的ID,第三个参数表示优先级。 3. 播放音频 加载音频资源后,可以使用SoundPool的play方法进行播放。例如,播放上一步加载的音频资源: ``` soundPool.play(soundId, 1, 1, 0, 0, 1); ``` 其中,第一个参数表示音频资源的ID,第二个参数表示左声道音量,第三个参数表示右声道音量,第四个参数表示优先级,第五个参数表示循环次数(0表示不循环,-1表示无限循环),第六个参数表示播放速度。 4. 释放资源 最后,需要在不使用SoundPool时释放资源,可以使用SoundPool的release方法进行释放。例如: ``` soundPool.release(); ``` 以上就是使用SoundPool播放音频文件的方法的实验小结。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值