Поделиться через


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 &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]);
                  }

Документация по Java для android.media.audiofx.Visualizer.getFft(byte[]).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к