Visualizer.GetFft(Byte[]) 方法

定义

返回当前播放音频内容的频率捕获。

[Android.Runtime.Register("getFft", "([B)I", "GetGetFft_arrayBHandler")]
public virtual Android.Media.Audiofx.VisualizerStatus GetFft(byte[]? fft);
[<Android.Runtime.Register("getFft", "([B)I", "GetGetFft_arrayBHandler")>]
abstract member GetFft : byte[] -> Android.Media.Audiofx.VisualizerStatus
override this.GetFft : byte[] -> Android.Media.Audiofx.VisualizerStatus

参数

fft
Byte[]

应返回 FFT 的字节数组

返回

#SUCCESS如果成功,#ERROR_NO_MEMORY#ERROR_INVALID_OPERATION#ERROR_DEAD_OBJECT失败。

属性

例外

注解

返回当前播放音频内容的频率捕获。

启用可视化工具时必须调用此方法。

捕获是一个 8 位级 FFT,其频率范围为 0(DC)到返回的 #getSamplingRate()采样率的一半。 捕获返回多个频率点的实际和虚部分,等于捕获大小的一半加上一个。

注意:仅返回第一个点(DC)和最后一个点(采样频率/2)的实际部分。

返回字节数组中的布局如下所示:ul>li n 是 getCaptureSize()</li li><> Rfk 返回的捕获大小, Ifk 分别是 kth 频率分量</li li<>> 如果 Fs 是 getSamplingRate() 重新调整的采样频率,则 kth 频率分别为:k * Fs / n </li<>/ul<>table border=“0” cellspacing=“0” cellpadding=“0”<>tr><td Index>><<

</td><td>0 </p/td><td>1 </p></td<>td>2 </p><></td td>3 </p></td<>td td>4 </p/td<<>>5 </p><></td td><td... <>>/p/td td>n - 2 </p><></td<>td>n - 1 </p></td></tr<>tr><td>Data </p/td<>>Rf0 </p><></td>><Rf(n/2) </p></<>>td Rf1 /><p/<>>td td If1 <</p></<>>td Rf2 </p></td<>>If2 </p></td td td... <><>></p></td><td>Rf(n/2-1) </p></td td><>If(n/2-1) </p></td></tr></table>

若要获取数量级和阶段值,可以使用以下代码:

int n = fft.size();
                  float[] magnitudes = new float[n / 2 + 1];
                  float[] phases = new float[n / 2 + 1];
                  magnitudes[0] = (float)Math.abs(fft[0]);      // DC
                  magnitudes[n / 2] = (float)Math.abs(fft[1]);  // Nyquist
                  phases[0] = phases[n / 2] = 0;
                  for (int k = 1; k &lt; n / 2; k++) {
                      int i = k * 2;
                      magnitudes[k] = (float)Math.hypot(fft[i], fft[i + 1]);
                      phases[k] = (float)Math.atan2(fft[i + 1], fft[i]);
                  }

适用于 . 的 android.media.audiofx.Visualizer.getFft(byte[])Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于