转载请注明:http://blog.youkuaiyun.com/u012854870/article/details/58604351
由于自己开发的音乐播放器,安装在公司自己生产的平板上,播放音乐的时候,当媒体音量调到最大的时候声音还是很小,后来产品就拿着酷狗音乐来,让我实现类似酷狗音乐一键增强音量功能,开始并没有思路,几经搜索打算用均衡器实现,可是代码写完后发现并没有达到想要的效果,而且发现不同类型的音乐,均衡器频段设置不同,实现起来比较麻烦,最后只能放弃,寻找新思路最后终于在文档中找到了解决方案Android4.4新增新媒体功能文档新媒体功能部分中介绍到LoudnessEnhancer(LoudnessEnhancer文档)类,发现这就是我想要的功能,算是完美解决了,现将实现代码分享如下:
public class MainActivity extends AppCompatActivity {
// 定义播放声音的MediaPlayer
private MediaPlayer mPlayer;
// 定义音频响度处理类
private LoudnessEnhancer loudnessEnhancer;
private LinearLayout layout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置音频流 - STREAM_MUSIC:音乐回放即媒体音量
setVolumeControlStream(AudioManager.STREAM_MUSIC);
layout = new LinearLayout(this);//代码创建布局
layout.setOrientation(LinearLayout.VERTICAL);//设置为线性布局-上下排列
setContentView(layout);//将布局添加到 Activity
// 创建MediaPlayer对象,并添加音频
// 音频路径为 res/raw/test.mp3
mPlayer = MediaPlayer.create(this, R.raw.test);
// 开发播放音乐
mPlayer.start();
addButton();
}
private void addButton() {
Button button = new Button(this);
button.setText("音效增强");
layout.addView(button);
loudnessEnhancer = new LoudnessEnhancer(mPlayer.getAudioSessionId());
//设置用于音频效果的目标增益
loudnessEnhancer.setTargetGain(5000);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (loudnessEnhancer.getEnabled()) {
loudnessEnhancer.setEnabled(false);
} else {
loudnessEnhancer.setEnabled(true);
}
}
});
}
@Override
protected void onPause() {
super.onPause();
if (isFinishing() && mPlayer != null) {
// 释放所有对象
loudnessEnhancer.release();
mPlayer.release();
mPlayer = null;
}
}
}
最后给出源码下载地址:CNDS