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程序设计有所帮助。