Visualizer.GetFft(Byte[]) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna uma captura de frequência do conteúdo de áudio que está sendo reproduzido no momento.
[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 em que o FFT deve ser retornado
Retornos
#SUCCESSem caso de êxito #ERROR_INVALID_OPERATION ou #ERROR_DEAD_OBJECT#ERROR_NO_MEMORYem caso de falha.
- Atributos
Exceções
Comentários
Retorna uma captura de frequência do conteúdo de áudio que está sendo reproduzido no momento.
Esse método deve ser chamado quando o Visualizador está habilitado.
A captura é um FFT de magnitude de 8 bits, o intervalo de frequência coberto é de 0 (DC) a metade da taxa de amostragem retornada por #getSamplingRate(). A captura retorna as partes reais e imaginárias de um número de pontos de frequência igual a metade do tamanho da captura mais um.
Observação: apenas a parte real é retornada para o primeiro ponto (DC) e o último ponto (frequência de amostragem /2).
O layout na matriz de bytes retornado é o seguinte: ul>li n é o tamanho de captura retornado por getCaptureSize()</li><rfk>, Ifk são respectivamente as partes reais e imaginárias do componente< kth frequency/li li>>< Se Fs for a frequência de amostragem reajustada por getSamplingRate() a frequência 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>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>
Para obter valores de magnitude e fase, o seguinte código pode ser usado:
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]);
}
Java documentação para android.media.audiofx.Visualizer.getFft(byte[]).
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.