首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioRecord缓冲值

AudioRecord缓冲值
EN

Stack Overflow用户
提问于 2012-07-11 16:16:42
回答 2查看 1.1K关注 0票数 1

嗨,我正在构建一个应用程序,将使用从麦克风传入的音频,并将其与存储的声音文件进行比较。目前,我正在尝试掌握来自AudioRecord函数的数据在保存到字节数组时的样子。我的问题是返回的值都是零。我不知道我是否没有正确使用/设置AudioRecord函数。下面是我的代码:

代码语言:javascript
复制
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函数返回的值。

EN

回答 2

Stack Overflow用户

发布于 2013-02-20 19:06:23

通过MIC录音让我头疼:)

希望这能帮上忙,因为我玩了一整天。以下是MIC正常工作所必须满足的步骤

  1. Maniefst.xml必须包含:
票数 1
EN

Stack Overflow用户

发布于 2012-07-22 05:57:47

您是否在使用Emulator?我听说麦克风不能用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11428348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档