我有以下代码:
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),并且调用回调,但我从来没有得到其他数据每当我使用默认媒体播放器(在HTC Sensation XE上)时,比128(在波回调的情况下)或0(在FFT的情况下)
我在这里做了些蠢事 - 或者我的手机可能没有正确实现音频输出Mix?如果我使用其他音频播放器,那就没关系了。
答案 0 :(得分:1)
HTC的媒体播放器可能正在应用自己的效果,在这种情况下,他们可能会专门应用于播放器的音频会话。如果在另一个会话上应用了任何效果,AudioFlinger将暂停OUTPUT_MIX会话上的所有效果。至少它应该如何在Jellybean和ICS上表现 - 两种都可能适用于Gingerbread。