实现Android播放声音资源的一个简单的工具类
16lz
2021-01-23
为了调用方便,自己写了一个简单的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);
参数分别是声音的编号和循环次数 谢谢观阅,有问题请指教
更多相关文章
- Android activity 参数传递
- Android的intent之间复杂参数的传递
- android 使用intent传递参数实现乘法计算
- Android中判断是否有声音在播放
- Android中的DrawRect()参数解析
- Android参数设置: Preference
- Android cmd 命令常用参数详解
- android 修改系统各种类型的声音的默认值和最大最小值
- android 之 音量调节