Compartir a través de


Visualizer.GetFft(Byte[]) Método

Definición

Devuelve una captura de frecuencia de reproducción de contenido de audio actualmente.

[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

Parámetros

fft
Byte[]

matriz de bytes donde se debe devolver el FFT

Devoluciones

#SUCCESS en caso de éxito, #ERROR_NO_MEMORY, #ERROR_INVALID_OPERATION o #ERROR_DEAD_OBJECT en caso de error.

Atributos

Excepciones

Comentarios

Devuelve una captura de frecuencia de reproducción de contenido de audio actualmente.

Se debe llamar a este método cuando el visualizador está habilitado.

La captura es una FFT de magnitud de 8 bits, el intervalo de frecuencia cubierto es de 0 (DC) a la mitad de la frecuencia de muestreo devuelta por #getSamplingRate(). La captura devuelve las partes reales e imaginarias de un número de puntos de frecuencia iguales a la mitad del tamaño de captura más uno.

Nota: solo se devuelve la parte real para el primer punto (DC) y el último (frecuencia de muestreo / 2).

El diseño de la matriz de bytes devuelta es el siguiente: ul>li n es el tamaño de captura devuelto por getCaptureSize()</li li>>< Rfk, Ifk son respectivamente las partes reales e imaginarias del componente< de frecuencia kth/li<>Li> Si Fs es la frecuencia de muestreo retunada por getSamplingRate() la frecuencia kth es: 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><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 tr>><<td>Data </p></td><td>Rf0 </p></td td>><Rf(n/2) </p/td td>><Rf1 </p></td td><>If1 </p></td td><>Rf2 </p></td td<>td>If2 </p><></td<>td...></p></td td><>Rf(n/2-1) </p></td td><>If(n/2-1) </p></td></tr></table>

Para obtener valores de magnitud y fase, se puede usar el código siguiente:

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

Documentación de Java para android.media.audiofx.Visualizer.getFft(byte[]).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a