Как проверить силу (интенсивность) звука во время записи?

Я работаю над приложением диктофона. Я хочу знать, есть ли способ найти силу звука во время его записи. Я не хочу нигде сохранять запись. Я просто хочу показать пользователю, если звук, пойманный микрофоном, громче, чем предопределенный порог или нет.

скажем, если звук пойман ниже 2 децибел, он должен показывать "низкий" на Красном холсте. Как только звук становится громче и проходит 2 децибел порог холст должен стать зеленым и показать" высокое " сообщение.

возможно ли использовать MediaRecorder или я должен использовать класс AudioRecorder. И как с этим разобраться.

спасибо заранее

1 ответов


вы можете запустить другой поток при запуске записи и использовать getMaxAmplitude функции для захвата амплитуд.

Ниже приведен фрагмент.здесь мы берем образец для каждых 250 миллисекунд и рассчитываем максимальную амплитуду

public void run() {
            int i = 0;
            while(i == 0) {

                try {
                    sleep(250);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                if (mRecorder != null) {
                    amplitude = mRecorder.getMaxAmplitude();

                    //Here you can put condition (low/high)
                    Log.i("AMPLITUDE", new Integer(amplitude).toString());
                } 

            }
        }