我正在使用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);