录制音频时进度

use*_*277 2 audio android

我正在尝试制作一个进度条,在我录制声音时会做出反应.我的意思是当记录打开并且有一个声音我的进度条必须移动.我不知道应该如何调用它,但它经常在音频播放器中用来表明音乐正在播放.我希望你知道我的意思.

我用这段代码录制声音:

                recorder = new MediaRecorder();
                recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
                recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);             
                recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                recorder.setOutputFile(outputfile);
Run Code Online (Sandbox Code Playgroud)

ved*_*ant 5

使用getMaxAmplitude().

延迟多次调用该方法,您将获得所需.

这是一个实现使用RxJava:

mTimerSubscription = Observable.interval(100, TimeUnit.MILLISECONDS)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(aLong -> {
            // evey 100 milliseconds this method is called
            int amplitude = mRecorder.getMaxAmplitude();
            LogWrapper.d(TAG, "amplitude: " + amplitude + " rms " + (int) Math.sqrt(amplitude));
            mSoundProgressBar.setProgress((int) Math.sqrt(amplitude));
        });
Run Code Online (Sandbox Code Playgroud)

你可以使用Handler.postDelayed来做到这一点.