概述
参考链接:https://www.cnblogs.com/alwaysfirst/p/4004838.html
android播放声音,一种是soundPool,一种是mediaplayer
soundpool 适合播放反映速度要求较高的声效,比如,游戏中的爆炸音效
mediaplay 适合播放时间比较长的声效,比如,游戏中的背景音乐
将自定义的音效文件放到res/raw文件夹下,如果不存在raw目录,创建一个
然后实现添加音效:
public MediaPlayer mPlayer;
private SoundPool mSound;
private HashMapsoundPoolMap;
public static Boolean isRingTone = false;
/**
* 初始化声音
*/
private void InitSounds() {
// 设置播放音效
mPlayer = MediaPlayer.create(getActivity(), R.raw.jb1); //getActivity()也可以是MainActivity.this
// 第一个参数为同时播放数据流的最大个数,第二数据流类型,第三为声音质量
mSound = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap();
soundPoolMap.put(1, mSound.load(getActivity(), R.raw.jb2, 1));
//可以在后面继续put音效文件
}
/**
* soundPool播放
*
* @param sound
* 播放第一个
* @param loop
* 是否循环
*/
private void PlaySound(int sound, int loop) {
AudioManager mgr = (AudioManager) getActivity()
.getSystemService(Context.AUDIO_SERVICE);
// 获取系统声音的当前音量
float currentVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
// 获取系统声音的最大音量
float maxVolume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
// 获取当前音量的百分比
float volume = currentVolume / maxVolume;
// 第一个参数是声效ID,第二个是左声道音量,第三个是右声道音量,第四个是流的优先级,最低为0,第五个是是否循环播放,第六个播放速度(1.0 =正常播放,范围0.5 - 2.0)
mSound.play(soundPoolMap.get(sound), volume, volume, 1, loop, 1f);
}
然后调用方法就可以了,我自己是添加了switch控件,来控制是否开启。
sw_bj.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
isRingTone = true;
}else {
if(isRingTone)
{
isRingTone = false;
mPlayer.pause();
}
}
}
});
在需要的地方调用
if(MeFragment.isRingTone) //MeFragment 是类名
{
MeFragment.mPlayer.start(); //在别的类调用需要定义mplayer为静态变量
}
PlaySound(1, 0); // 开启SoundPool
mSound.pause(1); // 关闭SoundPool
mPlayer.start(); //开启MediaPlayer
mPlayer.pause(); //关闭MediaPlayer
希望能帮助到别人。
最后
以上就是鲤鱼夕阳为你收集整理的android 播放短信铃声,Android 播放自定义铃声的全部内容,希望文章能够帮你解决android 播放短信铃声,Android 播放自定义铃声所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复