共用方式為


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 4 </p></><>td td 5 </p></td td<>td... <>/p></td><td>n - 2 </p></td><td>n - 1 </p></><td/tr><><>tr td Data </p<>><>/td td Rf0 </p></>><td td Rf(n/2) <>><<>/p/td td Rf1 /p/td td If1>>><<>>><<<< /p/td Rf2 /p/td 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 屬性授權中所述的詞彙使用。

適用於