如何从Android Visualizer类获取非零声音数据

如何从Android Visualizer类获取非零声音数据,android,audio,visualizer,Android,Audio,Visualizer,我有以下代码: mVisualizer = new Visualizer(0); mVisualizer.setEnabled(false); int capRate = Visualizer.getMaxCaptureRate(); int capSize = Visualizer.getCaptureSizeRange()[1]; mVisualizer.setCaptureSize(capSize); Visualizer.OnDataCaptureListener captureList

我有以下代码:

mVisualizer = new Visualizer(0);
mVisualizer.setEnabled(false);
int capRate = Visualizer.getMaxCaptureRate();
int capSize = Visualizer.getCaptureSizeRange()[1];
mVisualizer.setCaptureSize(capSize);
Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener() {
  public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
  int samplingRate) {   
    for (int i=0;i<bytes.length;i++) {
        if (bytes[i]!=-128) {
            Log.w("Morphyre", "Found Nonzero sample "+bytes[i]);
            break;
        }
    }                   
  }

  public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
    int samplingRate) {
  }       
};

int status = mVisualizer.setDataCaptureListener(captureListener,
    capRate, true/*wave*/, false/*no fft needed*/);
mVisualizer.setEnabled(true);
mVisualizer=新的可视化工具(0);
mVisualizer.setEnabled(false);
int capRate=Visualizer.getMaxCaptureRate();
int-capturesize=Visualizer.getCaptureSizeRange()[1];
mVisualizer.setCaptureSize(倾覆);
Visualizer.OnDataCaptureListener captureListener=新建Visualizer.OnDataCaptureListener(){
public void onWaveFormDataCapture(可视化工具可视化工具,字节[]字节,
整数抽样{

对于(int i=0;iHTC的媒体播放器可能正在应用其自身的效果,在这种情况下,他们可能会在播放器的音频会话上应用它。如果在另一个会话上应用任何效果,AudioFlinger将暂停输出混合会话上的所有效果。至少在Jellybean和ICS-这两种可能都适用于姜饼。

谢谢-似乎这就是问题所在。可能是“Beats Audio”导致了问题。这并不能解释问题……FFT得到0分,波形数据得到-128分。我尝试了
新可视化工具(0)
新可视化工具(player.getAudioSessionId())
但没有变化。@SomeoneSomewhere:0和-128是未启用该效果时得到的结果。我的回答是专门解决Gordon Williams的问题;他所描述的情况适合于音乐播放器通过添加自己的特定于会话的效果来间接暂停其输出效果。另一种可能性是是因为HTC在他们自己的音乐播放器中使用了某种隧道播放。如果没有看到HTC的代码,很难说为什么OP仍然收到效果的回调。三星的媒体播放器似乎也在这样做。