我正在使用Android 2.3.1上的Visualizer类进行一些音乐分析。我发现FFT和波形幅度受设备体积的影响。这意味着如果用户调低音量,则我几乎不会接收到FFT数据。

我已经在Motorola Xoom,Samsung Galaxy Tab和仿真器上对此进行了测试,并且它的行为方式是这样的。

我正在使用下面的代码:

mp = new MediaPlayer();
mp.setDataSource("/sdcard/sine1.wav");
mp.prepare();
mp.setLooping(true);
mp.start();
int audioSessionID = mp.getAudioSessionId();
v = new Visualizer(audioSessionID);
v.setEnabled(true);

查看Visualizer class的文档,似乎如果我们传递有效的 Audio Session ID,则可视化工具应对此 Audio Session 进行操作。似乎Visualizer正在对输出混合进行操作。

还有其他人遇到或找到解决方法吗?

谢谢

最佳答案

我也面临着同样的问题,但是当我为相同的id启用Eqaulizer和Visualizer时,它正在工作。我不知道原因,我检查了它从api演示中的visualizer类中删除了均衡器,它正在像您一样工作说过。

 Equalizer mEqualizer = new Equalizer(0, SessionId);
 mEqualizer.setEnabled(true); // need to enable equalizer
 Visualizer mVisualizer = new Visualizer(SessionId);

09-11 20:16