Partager via


Visualizer.GetFft(Byte[]) Méthode

Définition

Retourne une capture de fréquence du contenu audio en cours de lecture.

[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

Paramètres

fft
Byte[]

tableau d’octets où le FFT doit être retourné

Retours

#SUCCESSen cas de réussite, #ERROR_NO_MEMORY#ERROR_INVALID_OPERATION ou #ERROR_DEAD_OBJECT en cas d’échec.

Attributs

Exceptions

Remarques

Retourne une capture de fréquence du contenu audio en cours de lecture.

Cette méthode doit être appelée lorsque le visualiseur est activé.

La capture est une FFT de 8 bits, la plage de fréquence couverte étant de 0 (DC) à la moitié du taux d’échantillonnage retourné par #getSamplingRate(). La capture retourne les parties réelles et imaginaires d’un nombre de points de fréquence égal à la moitié de la taille de capture plus une.

Remarque : seule la partie réelle est retournée pour le premier point (DC) et le dernier point (fréquence d’échantillonnage / 2).

La disposition du tableau d’octets retourné est la suivante : <ul><li> n est la taille de capture retournée par getCaptureSize()</li li>>< Rfk, Ifk est respectivement les parties réelles et imaginaires du composant< de fréquence kth/li> Li<>If Fs est la fréquence d’échantillonnage retunée par getSamplingRate() la fréquence kth est : 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>3 </p></td td<>>4 </p></td td><>5 </p></td td td...><></p></><td td>n - 2 </p></td td>><n - 1 </p></td></tr tr><><td>Data </p></td<>>rf0 </p></td td<>>Rf(n/2) </p></td<>td>Rf1 </p/td td If1 </p></><>td>><rf2 /p></td td rf2 </p></td td><>td If2 </p></td td<>td...></p></td><td>Rf(n/2-1) </p></td td<>>If(n/2-1) </p></td></tr></table>

Pour obtenir des valeurs de magnitude et de phase, le code suivant peut être utilisé :

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

Documentation Java pour android.media.audiofx.Visualizer.getFft(byte[]).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à