实现Android播放声音资源的一个简单的工具类

编程入门 行业动态 更新时间:2024-10-09 05:12:33

实现Android播放<a href=https://www.elefans.com/category/jswz/34/1770581.html style=声音资源的一个简单的工具类"/>

实现Android播放声音资源的一个简单的工具类

为了调用方便,自己写了一个简单的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<Integer, Integer> 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<Integer, Integer>();}/*** * 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播放声音资源的一个简单的工具类

本文发布于:2024-02-19 19:48:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765503.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:声音   简单   工具   资源   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!