Android:使用来自TarsosDSP的PercussionOnsetDetector时使用MediaRecorder的getMaxAmplitude()

问题描述 投票:0回答:1

我试图从它检测到的每个拍子中获取幅度读数,但是每次它检测到一个拍子时,我一直从IllegalStateException中获取0getMaxAmplitude()。我做错什么了吗?有没有解决的办法?请让我知道!

@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();
}
java android audio mediarecorder tarsosdsp
1个回答
0
投票

检查javadoc for MediaRecorder#getMaxAmplitude method它说setAudioSource方法应该在之前被调用。请注意此javadoc开头的状态和用法示例。 getMaxAmplitude只是一个吸气剂,它不会执行实际的记录。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.