我正在使用 Visualizer 类为 AudioTrack 创建可视化。问题是将 Visualizer 关联到 AudioTrack 会修改音频输出,它听起来“更亮”和更响亮,几乎就像 Visualizer 字节被添加到轨道播放中一样。
当可视化工具设置启用(假)或释放()时,音频恢复正常。将音频会话 ID 设置为“0”(输出混合)不会导致此问题,但是此解决方案不适用于我的应用程序。
如何在不修改音频输出的情况下将 AudioTrack 关联到 Visualizer?
这是附加的代码:
public void link(int audioSessionId)
{
mVisualizer = new Visualizer(audioSessionId);
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
// Pass through Visualizer data to VisualizerView
Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener()
{
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
int samplingRate)
{
updateVisualizer(bytes);
}
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
int samplingRate)
{
updateVisualizerFFT(bytes);
}
};
mVisualizer.setDataCaptureListener(captureListener,
Visualizer.getMaxCaptureRate(), true, true);
// Enabled Visualizer and disable when we're done with the stream
mVisualizer.setEnabled(true);
}
所有updateVisualizer()
方法所做的就是使视图无效()并重绘它。那里没有可能的修改。
可能的Android错误?我在另一个可视化应用程序中注意到了这种行为。