/** *频谱的实现 */privatestaticfinalStringTAG="AudioFxActivity_1"; privatestaticfinalfloatVISUALIZER_HEIGHT_DIP=160f; publicstaticVisualizermVisualizer; privateLinearLayoutmLinearLayout; privateVisualizerViewmVisualizerView; privateMediaPlayermp;//MediaPlayer对象 privatebooleanisNext; @OverrideprotectedvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.playingmusic); Intentintent=this.getIntent();//获取列表的Intent对象 Bundlebundle=intent.getExtras();//Bundle存取数据,那么在播放界面提取数据喽 _ids=bundle.getIntArray("_ids");//歌名数组的ID,用来临时保存音乐的ID position=bundle.getInt("position");//音乐播放位置 _titles=bundle.getStringArray("_titles");//音乐播放标题 _artists=bundle.getStringArray("_artists");//传过来的艺术家,歌名一个都不允许遗漏,否则空指针是必须的 name=(TextView)findViewById(R.id.musicname);//歌名 //artist=(TextView)findViewById(R.id.singer);//歌手,即艺术家 lrcText=(TextView)findViewById(R.id.musiclrc); //playtime=(TextView)findViewById(R.id.playtime);//左边正在播放时间 //durationTime=(TextView)findViewById(R.id.duration);//总时间,要转换的 //albumpic=(ImageView)findViewById(R.id.albumPic);//专辑 gesLib=GestureLibraries.fromRawResource(this,R.raw.gestures); gesLib.load(); gestureoverlay1=(GestureOverlayView)this.findViewById(R.id.gestures1); MyOnGesturePerformedListenergpl=newMyOnGesturePerformedListener(); gestureoverlay1.addOnGesturePerformedListener(gpl); //频谱功能初始化 mLinearLayout=(LinearLayout)findViewById(R.id.layout_audiofx); //Uriuri=Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,""+_ids[position]); //mp=MediaPlayer.create(this,R.raw.ki); } privatevoidsetupVisualizerFxAndUI(intaudioID) { mVisualizerView=newVisualizerView(this); mVisualizerView.setLayoutParams(newViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,(int)(VISUALIZER_HEIGHT_DIP*getResources().getDisplayMetrics().density))); mLinearLayout.addView(mVisualizerView); finalintmaxCR=Visualizer.getMaxCaptureRate(); mVisualizer=newVisualizer(audioID); mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); mVisualizer.setDataCaptureListener(newVisualizer.OnDataCaptureListener() { publicvoidonWaveFormDataCapture(Visualizervisualizer,byte[]bytes,intsamplingRate) { mVisualizerView.updateVisualizer(bytes); } publicvoidonFftDataCapture(Visualizervisualizer,byte[]fft,intsamplingRate) { mVisualizerView.updateVisualizer(fft); } },maxCR/2,false,true); mVisualizer.setEnabled(true); }

01-09 15:17:38.911: E/AndroidRuntime(933): Caused by: java.lang.IllegalStateException: setCaptureSize() called in wrong state: 2
01-09 15:17:38.911: E/AndroidRuntime(933): at android.media.audiofx.Visualizer.setCaptureSize(Visualizer.java:279)
一直出现这个错误,不知道是在这个activity的哪个地方添加mvisualizer.setEnabled(false)

求大神指点!