Visualizer.GetFft(Byte[]) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回目前播放音訊內容的頻率擷取。
[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 < 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 屬性授權中所述的詞彙使用。