我正在尝试制作一个进度条,在我录制声音时会做出反应.我的意思是当记录打开并且有一个声音我的进度条必须移动.我不知道应该如何调用它,但它经常在音频播放器中用来表明音乐正在播放.我希望你知道我的意思.
我用这段代码录制声音:
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)
延迟多次调用该方法,您将获得所需.
这是一个实现使用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来做到这一点.
| 归档时间: |
|
| 查看次数: |
3612 次 |
| 最近记录: |