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 分別是第 k 頻率成分< li<>的>實部與虛部。若 Fs 是 getSamplingRate() 重新調整的取樣頻率,第 k 個頻率為:k * Fs / n </li></ul<>表格邊框=“0” cellpacing=“0” cellpadding=“><<>0”tr td 索引>><<
</達陣>><0 </罰球></達陣<>TD>1 </罰球></達陣<>TD>2 </罰><球/達陣><TD>3 </罰球></達陣<>>4 </罰球></達陣><>5 </罰><球/達陣<>> 達陣... </p></td<>td dd>n - 2 </p></td><td td>n - 1 </p></td></tr><tr td>><數據 </p></td<>td>Rf0 </p></td td><td>Rf(n/2) </p></td><td>rf1 </p></td td><td>If1 </p></td<>td>rf2 </p></td<>td>tf If2 </p></td td><td... <>/p></td<>td>Rf(n/2-1) </p></td td<>td>如果(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]);
}
Java 文件 android.media.audiofx.Visualizer.getFft(byte[])。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。