gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:00:17 26 4
gpt4 key购买 nike

我有以下代码:

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 的情况下)

我是不是在做一些愚蠢的事情——或者我的手机可能没有正确实现音频输出混合?如果我使用其他音频播放器就没问题。

最佳答案

HTC 的媒体播放器可能会应用自己的效果,在这种情况下,他们可能会专门将其应用到播放器的 Audio Session 中。如果在另一个 session 上应用任何效果,AudioFlinger 将暂停 OUTPUT_MIX session 上的所有效果。至少这就是它在 Jellybean 和 ICS 上的表现——这两种都可能在 Gingerbread 上起作用。

关于android - 如何从 Android Visualizer 类获取非零声音数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com