我有以下代码:
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);
该应用程序具有 2 个必需的权限( MODIFY_AUDIO_SETTINGS 和 RECORD_AUDIO )
根据 API 文档,创建 Visualizer(0) 将使用“音频输出混合” - 但是我的代码似乎初始化得很好(状态 == 0),并且调用了回调,但我从来没有得到除 128 以外的数据(在波形回调的情况下)或 0(在 FFT 的情况下)每当我使用默认媒体播放器(在 HTC Sensation XE 上)播放时
我在这里做了什么愚蠢的事情 - 还是我的手机没有正确实现音频输出混音?如果我使用另一个音频播放器,那很好。