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" cellpacing="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... <><>/p></td td>><n - 2 </p></td td><>n - 1 </p></><td/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 If2 <</p><></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]);
}
Документация по Java для android.media.audiofx.Visualizer.getFft(byte[])
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.