Android 使用AudioRecord(非MediaRecorder)从audiojack(麦克风)获取实时振幅

Android 使用AudioRecord(非MediaRecorder)从audiojack(麦克风)获取实时振幅,android,audiorecord,amplitude,Android,Audiorecord,Amplitude,在此处输入code我正在尝试获取实时振幅。数据来自通过麦克风连接到音频插孔的温度传感器。我需要使用录音,因为我需要数据(原始数据)。我使用的代码如下: public class MainActivity extends Activity { private static final String LOG_TAG = "AudioRecordTest"; private static final float VISUALIZER_HEIGHT_DIP = 50f; private static S

在此处输入code
我正在尝试获取实时振幅。数据来自通过麦克风连接到音频插孔的温度传感器。我需要使用录音,因为我需要数据(原始数据)。我使用的代码如下:

public class MainActivity extends Activity {
private static final String LOG_TAG = "AudioRecordTest";
private static final float VISUALIZER_HEIGHT_DIP = 50f;
private static String mFileName = null;
private float temperature;

double sDataMax = 0;
String sDataString = "";

private boolean isRecording = false;

private Button mRecordButton = null;
private boolean mStartRecording = true;
private AudioRecord mRecorder = null;

private TextView Output;

private static final int samplingRate = 8000;
private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO;
private static final int RECORDER_AUDIO_ENCODING =      AudioFormat.ENCODING_PCM_16BIT;


private void onRecord(boolean start) {
    if (start) {
        startRecording();

    } else {
        stopRecording();
    }
}
int FileSize = AudioRecord.getMinBufferSize(samplingRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);

private void enableButton(int id, boolean isEnable) {
    ((Button) findViewById(id)).setEnabled(isEnable);
}

private void enableButtons(boolean isRecording) {
    enableButton(R.id.btnRecord, !isRecording);

}


public void startRecording() {

     mRecorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
          samplingRate, RECORDER_CHANNELS,
        RECORDER_AUDIO_ENCODING, FileSize*10);


    mRecorder.startRecording();
    isRecording = true;


}
private void writeAudioDataToFile(File logFile) {
    // Write the output audio in byte

    short sData[] = new short[FileSize];
    while (isRecording) {
        // gets the voice output from microphone to byte format

        mRecorder.read(sData, 0, FileSize);


        for (int i = 0; i < sData.length; i++) {
            if (Math.abs(sData[i]) >= sDataMax) {
                sDataMax = Math.abs(sData[i]);
            }
            ;
            sDataString += "\n" + sDataMax;

        }
公共类MainActivity扩展活动{
私有静态最终字符串日志\u TAG=“AudioRecordTest”;
专用静态最终浮子可视化仪\u高度\u倾角=50f;
私有静态字符串mFileName=null;
专用浮子温度;
双sDataMax=0;
字符串sDataString=“”;
私有布尔值isRecording=false;
私有按钮mRecordButton=null;
私有布尔值mStartRecording=true;
私人录音mRecorder=null;
私有文本视图输出;
专用静态最终整数采样=8000;
专用静态最终整数记录器\u通道=单声道中的AudioFormat.CHANNEL\u;
专用静态最终整数记录器\u音频\u编码=AudioFormat.ENCODING\u PCM\u 16位;
私有void onRecord(布尔开始){
如果(启动){
startRecording();
}否则{
停止录制();
}
}
int FileSize=AudioRecord.getMinBufferSize(采样,单声道中的AudioFormat.CHANNEL,AudioFormat.ENCODING,PCM,16位);
私有void enableButton(int-id,boolean-isEnable){
((按钮)findViewById(id)).setEnabled(isEnable);
}
专用void启用按钮(布尔值isRecording){
启用按钮(R.id.btnRecord,!isRecording);
}
公共无效开始记录(){
mRecorder=新的音频记录(MediaRecorder.AudioSource.MIC、,
采样、记录器和U通道,
录音机\音频\编码,文件大小*10);
mRecorder.startRecording();
isRecording=true;
}
私有void writeAudioDataToFile(文件日志文件){
//以字节写入输出音频
短sData[]=新短[文件大小];
while(isRecording){
//获取从麦克风到字节格式的语音输出
mRecorder.read(sData,0,文件大小);
对于(int i=0;i=sDataMax){
sDataMax=Math.abs(sData[i]);
}
;
sDataString+=“\n”+sDataMax;
}

问题是什么?我想获取来自传感器的数据的振幅。我尝试了很多次,但没有看到任何输出