Visualizer.GetFft(Byte[]) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
#SUCCESS
in 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 < 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.