다음을 통해 공유


Visualizer.GetFft(Byte[]) 메서드

정의

현재 재생 중인 오디오 콘텐츠의 빈도 캡처를 반환합니다.

[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

매개 변수

fft
Byte[]

FFT를 반환해야 하는 바이트 배열

반환

#SUCCESS성공 #ERROR_NO_MEMORY#ERROR_INVALID_OPERATION 또는 #ERROR_DEAD_OBJECT 실패의 경우

특성

예외

설명

현재 재생 중인 오디오 콘텐츠의 빈도 캡처를 반환합니다.

시각화 도우미를 사용할 때 이 메서드를 호출해야 합니다.

캡처는 8비트 크기의 FFT이며, 0(DC)에서 반환 #getSamplingRate()된 샘플링 속도의 절반까지의 빈도 범위입니다. 캡처는 캡처 크기의 절반에 1을 더한 여러 빈도 지점의 실제 부분과 가상 부분을 반환합니다.

참고: 첫 번째 지점(DC) 및 마지막 지점(샘플링 빈도/2)에 대해 실제 부분만 반환됩니다.

반환된 바이트 배열의 레이아웃은 다음과 같습니다. ul>li n은 getCaptureSize()</li li>>< Rfk에서 반환된 캡처 크기입니다. Ifk는 각각 kth frequency component</li li>><의 실제 및 허수 부분인 경우 Fs가 getSamplingRate()에 의해 조정된 샘플링 빈도인 경우 kth 주파수는 k * Fs / n </li<>/ul><table border="0" cellspacing="0" cellpadding="0"><tr 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 td... <><>/p></td td><>Rf(n/2-1) </p></td td><>If(n/2-1) </p></td></tr></table>

크기 및 위상 값을 얻기 위해 다음 코드를 사용할 수 있습니다.

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

에 대한 android.media.audiofx.Visualizer.getFft(byte[])Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상