Visualizer.GetFft(Byte[]) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 < 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.