首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:从MediaRecorder使用getMaxAmplitude(),同时从TarsosDSP使用PercussionOnsetDetector

Android:从MediaRecorder使用getMaxAmplitude(),同时从TarsosDSP使用PercussionOnsetDetector
EN

Stack Overflow用户
提问于 2019-11-20 13:43:32
回答 1查看 60关注 0票数 0

我试图从它检测到的每一个拍击声中获得振幅读数,但每次它检测到拍击声时,我都会从getMaxAmplitude()获得IllegalStateException0。我做错什么了吗?有什么办法可以解决这个问题吗?请让我知道!

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Checks Permission
    checkPermission(Manifest.permission.RECORD_AUDIO,REQUEST_RECORD_AUDIO_PERMISSION);

    double threshold = 8;
    double sensitivity = 45;

    PercussionOnsetDetector mPercussionDetector = new PercussionOnsetDetector(22050, 1024,
            new OnsetHandler() {

                @Override
                public void handleOnset(double time, double salience) {
                   /* try {
                        new MediaRecorder().setAudioSource(MediaRecorder.AudioSource.MIC);
                        new MediaRecorder().setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                        new MediaRecorder().setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                        new MediaRecorder().setOutputFile("dev/null");
                        new MediaRecorder().prepare();
                        new MediaRecorder().start();
                    } catch (Exception e) {
                        e.printStackTrace();
                    } */

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            System.out.println(new MediaRecorder().getMaxAmplitude());
                            System.out.println("YAAAYYY");
                        }
                    });
                }
            }, sensitivity, threshold);

    dispatcher.addAudioProcessor(mPercussionDetector);
    new Thread(dispatcher,"Audio Dispatcher").start();
}
EN

回答 1

Stack Overflow用户

发布于 2019-11-20 13:49:14

检查javadoc for MediaRecorder#getMaxAmplitude method

它说setAudioSource方法应该在调用之前调用。

请注意本javadoc开头的状态和使用示例。getMaxAmplitude只是一个getter,它不执行实际的记录。

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

https://stackoverflow.com/questions/58947471

复制
相关文章

相似问题

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