如何使用Android Media Recorder getMaxAmplitude函数

时间:2011-06-27 10:26:59

标签: android media audio

我正在尝试运行录音http://developer.android.com/guide/topics/media/index.html,它的工作正常,我需要的是在连续录制声音时显示最大振幅。什么是最好的方法。

2 个答案:

答案 0 :(得分:5)

最大振幅给出给定样本的最大振幅,因此我每250毫秒采样一次并计算出最大振幅

public void run() {
            int i = 0;
            while(i == 0) {
                Message msg = mHandler.obtainMessage();
                Bundle b = new Bundle();
                try {
                    sleep(250);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                if (mRecorder != null) {
                    amplitude = mRecorder.getMaxAmplitude();
                    b.putLong("currentTime", amplitude);
                    Log.i("AMPLITUDE", new Integer(amplitude).toString());
                } else {
                    b.putLong("currentTime", 0);
                }
                msg.setData(b);
                mHandler.sendMessage(msg);
            }
        }

我使用消息处理程序使用后台进程线程修改前端

答案 1 :(得分:0)

创建一直运行的线程。 在线程中执行此操作:

    int amp = mrec.getMaxAmplitude();
    if (amp > 0)
      yourcode;

您是否需要有关该主题的更多信息?