为了调用方便,自己写了一个简单的Android播放声音的工具类,供大家参考。

声音资源存在raw文件夹中,一般支持ogg,wav等格式。

import java.util.HashMap;import android.annotation.SuppressLint;import android.content.Context;import android.media.AudioManager;import android.media.SoundPool;/** * TODO 播放声音工具类 *  * @author Leonardo * @date 2015-8-20 下午3:25:10 * @since * @version */@SuppressLint("UseSparseArrays")@SuppressWarnings("deprecation")public class SoundUtils {/** * TODO 上下文 */private Context context;/** * TODO 声音池 */private SoundPool soundPool;/** * TODO 添加的声音资源参数 */private HashMap soundPoolMap;/** * TODO 声音音量类型,默认为多媒体 */private int soundVolType = 3;/** * TODO 无限循环播放 */public static final int INFINITE_PLAY = -1;/** * TODO 单次播放 */public static final int SINGLE_PLAY = 0;/** * TODO 铃声音量 */public static final int RING_SOUND = 2;/** * TODO 媒体音量 */public static final int MEDIA_SOUND = 3;/** *  * TODO 构造器内初始化 *  * @author Leonardo * @date 2015-8-20 下午4:13:54 * @param context *            上下文 * @param soundVolType *            声音音量类型,默认为多媒体 */public SoundUtils(Context context, int soundVolType) {this.context = context;this.soundVolType = soundVolType;// 初始化声音池和声音参数mapsoundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);soundPoolMap = new HashMap();}/** *  * TODO 添加声音文件进声音池 *  * @author Leonardo * @date 2015-8-20 下午3:50:53 * @param order *            所添加声音的编号,播放的时候指定 * @param soundRes *            添加声音资源的id * @see */public void putSound(int order, int soundRes) {// 上下文,声音资源id,优先级soundPoolMap.put(order, soundPool.load(context, soundRes, 1));}/** *  * TODO 播放声音 *  * @author Leonardo * @date 2015-8-20 下午3:52:44 * @param order *            所添加声音的编号 * @param times *            循环次数,0无不循环,-1无永远循环 * @see */@SuppressWarnings("static-access")public void playSound(int order, int times) {// 实例化AudioManager对象AudioManager am = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);// 返回当前AudioManager对象播放所选声音的类型的最大音量值float maxVolumn = am.getStreamMaxVolume(soundVolType);// 返回当前AudioManager对象的音量值float currentVolumn = am.getStreamVolume(soundVolType);// 比值float volumnRatio = currentVolumn / maxVolumn;soundPool.play(soundPoolMap.get(order), volumnRatio, volumnRatio, 1,times, 1);}/** * TODO 设置 soundVolType 的值 */public void setSoundVolType(int soundVolType) {this.soundVolType = soundVolType;}}

使用的时候先初始化一个声音播放工具

SoundUtils soundUtils = new SoundUtils(this, SoundUtils.RING_SOUND);

参数分别是Context和声音音量类型(受铃声还是多媒体控制)


然后添加声音进去

soundUtils.putSound(0, R.raw.你的声音文件名);
参数是添加声音的编号和资源id


需要播放的地方执行这句即可

soundUtils.playSound(0, SoundUtils.SINGLE_PLAY);
参数分别是声音的编号和循环次数


谢谢观阅,有问题请指教


更多相关文章

  1. android 多媒体
  2. Android学习笔记进阶1之MediaPlayer
  3. Android中判断是否有声音在播放
  4. 2011.08.15——— android audioManager 获取音量
  5. 实现录音,播放,以及Socket的上传和下载。。【处女作】
  6. Android(安卓)Audio Play Out Channel
  7. Android(安卓)中WebView 视频自动播放
  8. Android(安卓)通过AudioTrack播放CAF音频
  9. android 修改系统各种类型的声音的默认值和最大最小值

随机推荐

  1. android 怎么开启WPA2加密的热点
  2. (原+转)Eclipse中Android调用OpenCv
  3. Android的传感器HAL层的书写---基础篇
  4. 【金阳光测试】Android自动化测试第一季
  5. 自定义BaseAdapter,在主Activity页面调用
  6. 领域:更新外部对象的id
  7. 如何使用adb命令查看android中的数据库
  8. 如何优化Android中的位图绘制?
  9. Android开发中使用CRC校验
  10. Android开源代码解读の地图照片应用Panor