8

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

我已经在摩托罗拉 Xoom、三星 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 类的文档,似乎如果我们传入一个有效的音频会话 id,那么可视化器应该对这个音频会话进行操作。Visualizer 似乎正在对输出混合进行操作。

有没有其他人遇到过这种情况或找到解决方法?

谢谢

4

2 回答 2

10

我也面临同样的问题,但是当我为相同的会话 ID 启用均衡器和可视化器时它正在工作。我不知道它的原因,我检查了它从 api 演示中的可视化器类中删除均衡器它正在​​像你一样工作说过。

 Equalizer mEqualizer = new Equalizer(0, SessionId);
 mEqualizer.setEnabled(true); // need to enable equalizer
 Visualizer mVisualizer = new Visualizer(SessionId);
于 2011-11-26T10:06:37.200 回答
0

Visualizer 缩放模式有两个选项:

SCALING_MODE_AS_PLAYED 和 SCALING_MODE_NORMALIZED

如果您希望 Visualizer 标准化,因为无论音量是多少,它都是一致的,然后使用 SCALING_MODE_NORMALIZED。

mVisualizer.scalingMode = Visualizer.SCALING_MODE_AS_PLAYED

请记住,这会极大地改变发送到 Visualizer 的值,因此可能需要进行其他调整。

于 2020-07-15T07:21:15.670 回答