1.按钮点击事件音效替换
对于播放音乐已经有很多博客可以翻阅,对于替换点击事件的音效也有不少博客,但是对于可以通过系统音效控制点击音效大小的博客,我昨天找了半天也才找到半个方法。为啥说半个呢很疑问,我下面给大家贴代码来看看并且指出。
public class SoundPoolUtil {
private static SoundPoolUtil soundPoolUtil;
private SoundPool soundPool;
//单例模式
public static SoundPoolUtil getInstance(Context context) {
if (soundPoolUtil == null)
soundPoolUtil = new SoundPoolUtil(context);
return soundPoolUtil;
}
@SuppressLint("NewApi")//这里初始化SoundPool的方法是安卓5.0以后提供的新方式
private SoundPoolUtil(Context context) {
// soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
//AudioManager.STREAM_MUSIC
//加载音频文件
soundPool.load(context, R.raw.click_on, 1);
}
public void play(int number) {
Log.d("tag", "number " + number);
//播放音频
soundPool.play(number,1, 1, 1, 0, 1);
}
}
源代码是这样的大家搜基本上都能搜到好几个这样的方法,但是因为需求的问题导致本来只需要几秒cv就行的我,却多花了一阵子时间,其实吧很简单只需要把"AudioManager.STREAM_MUSIC"换成"AudioManager.STREAM_SYSTEM"是的就是这么简单,而我却疯了似的看源代码查博客查了半个点,哎可能就是因为我还是菜鸟吧,话说言归正传我为啥要替换这个呢,也可能你们会问这都是播放声音为啥两个就不一样呢,那么问题回到了正轨,看完下面这段你们就知道是为何了,话不多说进行咱们的第二段也就是调节音效音量的步骤。
2.对于系统音效和媒体音乐的控制
这段也非常简单了网上有很多案例首先就先说媒体音乐吧话不多说上代码
//音量控制,初始化定义
AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
//最大音量
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//当前音量
int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 10, 0); //tempVolume:音量绝对值
对这是替换媒体音乐的,再然后问题来了产品让我控制按键音效声音,我当时表情惊讶"啊这!",这不是一起控制的吗?实则不然经过我多方面了解(其实就是百度)才发现按钮音效是通过系统音效控制的,那么就简单了我们只需要把媒体音效方法里的"AudioManager.STREAM_MUSIC"换成"AudioManager.STREAM_MUSIC"就行了,是不是对这两个引用很熟悉,对这就是咱们上面1中说的问题了,对于1中的问题我要换的引用,其实就是吧媒体音乐换成系统音效,也是我控制他俩声音大小的方法不同,这样我就可以把我替换的按键音和背景音量分开控制了。接下来我还要做个dialog来控制音量加减话不多说上代码。
public class SetUpDialog extends Dialog {
@