嗨,我正在构建一个应用程序,将使用从麦克风传入的音频,并将其与存储的声音文件进行比较。目前,我正在尝试掌握来自AudioRecord函数的数据在保存到字节数组时的样子。我的问题是返回的值都是零。我不知道我是否没有正确使用/设置AudioRecord函数。下面是我的代码:
import android.app.Activity;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class SnoreAlarmActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button start, stop;
TextView display;
Boolean rec = false;
AudioRecord snore;
byte[] arrayOfByte = new byte[16 * 1024 / 8];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.bStart);
stop = (Button) findViewById(R.id.bStop);
display = (TextView) findViewById(R.id.tAnswer);
start.setOnClickListener(this);
stop.setOnClickListener(this);
int i = AudioRecord.getMinBufferSize(44100, 16, 2);
snore = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, 16, 2, i);// From
// MIC,Sample
// Rate
// of
// 44100,
// Channel_IN_MONO,16Bit
// Encoding,buffer
// size
// i
new Record().start();
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.bStart:
rec = true;
break;
case R.id.bStop:
rec = false;
snore.stop();
snore.release();
for (int i = 0; i < 100; i++) {
int x = (int) arrayOfByte[i];
Log.w("Tag", "" + x);
}
break;
}
}
class Record extends Thread {
Record() {
}
@Override
public void run() {
// TODO Auto-generated method stub
while (rec) {
snore.startRecording();
snore.read(arrayOfByte, 0, (16 * 1024 / 8));
}
}
}
}所以我的问题是,为什么我得到的是0?,我还知道我应该把数据存储在短小的代码中,因为有16位的编码,稍后我会这样做,只是尝试理解目前从AudioRecord函数返回的值。
发布于 2013-02-20 19:06:23
通过MIC录音让我头疼:)
希望这能帮上忙,因为我玩了一整天。以下是MIC正常工作所必须满足的步骤
发布于 2012-07-22 05:57:47
您是否在使用Emulator?我听说麦克风不能用了。
https://stackoverflow.com/questions/11428348
复制相似问题