首先,我对 Android 还很陌生。在此之前我正在做Arduino。我想要实现的第一个目标是能够检测特定的声音频率或模式。
因此,在我能够检测到特定的声音频率之前,我必须至少能够看到周围的所有频率。
在任何人无需尝试就可以将其标记为重复项或问题之前。我已经尽力了,尽我所能。我几乎无法理解 FFT 或过零是如何工作的。但我读到过零并不是那么准确。所以,我正在使用 FFT。我非常密切地关注这篇文章,但我不知道整个工作代码是什么样的。
Android 音频 FFT 使用 audiorecord 检索特定频率幅度
因此,我尝试将问题和解决方案结合起来,如下面的代码所示。我几乎无法理解发生了什么事。
FrequencyThread.java
package com.example.syahmul.backgroundapp;
/**
* Record and detect frequency using FFT
* Ref: /sf/ask/404187311/
* magnitude-using-audiorecord
*/
//Audio Library
import android.media.AudioRecord;
import android.media.MediaRecorder.AudioSource;
import android.media.AudioFormat;
import android.provider.MediaStore;
import android.util.Log;
public class FrequencyThread extends Thread{
protected static final String TAG = "FrequencyThread";
int channel_config = AudioFormat.CHANNEL_IN_MONO;
int format = AudioFormat.ENCODING_PCM_16BIT;
public int sampleSize = 8000;
//public int bufferSize = AudioRecord.getMinBufferSize(sampleSize, channel_config, format); //640
public …Run Code Online (Sandbox Code Playgroud)