为了调用方便,自己写了一个简单的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 activity 参数传递
  2. Android的intent之间复杂参数的传递
  3. android 使用intent传递参数实现乘法计算
  4. Android中判断是否有声音在播放
  5. Android中的DrawRect()参数解析
  6. Android参数设置: Preference
  7. Android cmd 命令常用参数详解
  8. android 修改系统各种类型的声音的默认值和最大最小值
  9. android 之 音量调节

随机推荐

  1. 让你自己写的Android的Launcher成为系统
  2. 用shell脚本生成.x509.pem 和.pk8 文件并
  3. Android(安卓)AppWidget系统框架
  4. WebView 知识点
  5. Android开发之旅: Intents和Intent Filte
  6. 【Android基础】讲讲Android的事件分发机
  7. Android实现WebView删除缓存的方法
  8. android电话接听过程简单解析
  9. Android输入法弹出时覆盖输入框问题
  10. 浅谈Android下的Wifi&&安卓WIFI 移植