Condividi tramite


Visualizer.GetFft(Byte[]) Metodo

Definizione

Restituisce un'acquisizione di frequenza del contenuto audio attualmente in riproduzione.

[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

Parametri

fft
Byte[]

matrice di byte in cui deve essere restituito il valore FFT

Restituisce

#SUCCESSin caso di esito positivo, #ERROR_NO_MEMORY#ERROR_INVALID_OPERATION o #ERROR_DEAD_OBJECT in caso di errore.

Attributi

Eccezioni

Commenti

Restituisce un'acquisizione di frequenza del contenuto audio attualmente in riproduzione.

Questo metodo deve essere chiamato quando il visualizzatore è abilitato.

L'acquisizione è un FFT di grandezza a 8 bit, l'intervallo di frequenza coperto da 0 (DC) a metà della frequenza di campionamento restituita da #getSamplingRate(). L'acquisizione restituisce le parti reali e immaginarie di un numero di punti di frequenza uguale alla metà delle dimensioni di acquisizione più uno.

Nota: solo la parte reale viene restituita per il primo punto (DC) e l'ultimo punto (frequenza di campionamento / 2).

Il layout nella matrice di byte restituito è il seguente: ul>li n è la dimensione di acquisizione restituita da getCaptureSize()</li li>>< Rfk, Ifk sono rispettivamente le parti reali e immaginarie del componente< kth frequency/li><> Se Fs è la frequenza di campionamento retuned by getSamplingRate() la frequenza kth è: 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... <>/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 td>><Rf2 </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>

Per ottenere valori di grandezza e fase, è possibile usare il codice seguente:

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

Documentazione java per android.media.audiofx.Visualizer.getFft(byte[]).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a