Android编程之播放器MediaPlayer实现均衡器效果示例
本文实例讲述了Android播放器MediaPlayer实现均衡器效果。分享给大家供大家参考,具体如下:
这几天在系统学习Android官方APIDemos,看到实现均衡器效果,就把官方API中代码copy下来,根据网上前辈的指引略有修改,添加了注释。
publicclassAudioFxDemoextendsActivity{
privatestaticfinalStringTAG="AudioFxDemo";
privatestaticfinalfloatVISUALIZER_HEIGHT_DIP=50f;
//定义播放器
privateMediaPlayermMediaPlayer;
//定义系统的频谱
privateVisualizermVisualizer;
//定义系统的均衡器
privateEqualizermEqualizer;
privateLinearLayoutmLinearLayout;
privateVisualizerViewmVisualizerView;
privateTextViewmStatusTextView;
@Override
publicvoidonCreate(Bundlebundle){
super.onCreate(bundle);
//音量控制
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mStatusTextView=newTextView(this);
mLinearLayout=newLinearLayout(this);
mLinearLayout.setOrientation(LinearLayout.VERTICAL);
mLinearLayout.addView(mStatusTextView);
setContentView(mLinearLayout);
//创建MediaPlayer对象
mMediaPlayer=MediaPlayer.create(this,R.raw.test_cbr);
Log.d(TAG,
"MediaPlayeraudiosessionID:"
+mMediaPlayer.getAudioSessionId());
//设置频谱显示
setupVisualizerFxAndUI();
//设置示波器显示
setupEqualizerFxAndUI();
//Makesurethevisualizerisenabledonlywhenyouactuallywantto
//receivedata,and
//whenitmakessensetoreceivedata.
mVisualizer.setEnabled(true);
//Whenthestreamends,wedon'tneedtocollectanymoredata.We
//don'tdothisin
//setupVisualizerFxAndUIbecausewelikelywanttohavemore,
//non-Visualizerrelatedcode
//inthiscallback.
mMediaPlayer
.setOnCompletionListener(newMediaPlayer.OnCompletionListener(){
publicvoidonCompletion(MediaPlayermediaPlayer){
mVisualizer.setEnabled(false);
mStatusTextView.setText("播放结束");
}
});
mMediaPlayer.start();
mStatusTextView.setText("正在播放中");
}
privatevoidsetupEqualizerFxAndUI(){
//CreatetheEqualizerobject(anAudioEffectsubclass)andattachit
//toourmediaplayer,
//withadefaultpriority(0).
mEqualizer=newEqualizer(0,mMediaPlayer.getAudioSessionId());
mEqualizer.setEnabled(true);
TextVieweqTextView=newTextView(this);
eqTextView.setText("Equalizer:");
mLinearLayout.addView(eqTextView);
shortbands=mEqualizer.getNumberOfBands();
finalshortminEQLevel=mEqualizer.getBandLevelRange()[0];
finalshortmaxEQLevel=mEqualizer.getBandLevelRange()[1];
for(shorti=0;i=3){
type=0;
}
returntrue;
}
@Override
protectedvoidonDraw(Canvascanvas){
super.onDraw(canvas);
if(bytes==null){
return;
}
//绘制黑色背景
canvas.drawColor(Color.BLACK);
//使用rect对象记录该组件的宽度和高度
rect.set(0,0,getWidth(),getHeight());
switch(type){
//绘制块状的波形图
case0:
for(inti=0;i
自己新建项目时,记得在res/raw下添加一个名为test_cbr的mp3格式文件。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。