Java TarsosDSP Clap检测

Java TarsosDSP Clap检测,java,android,tarsosdsp,Java,Android,Tarsosdsp,我决定尝试为android studio开发,并设计了一个应用程序,它可以监听掌声,然后执行某种动作。我的问题在于使用TarsosDSP 我想将Listener类作为IntentService运行,这样我就可以锁定手机,它仍然可以监听。但是,我在设置AudioDispatcher和TarsosDSPAudioInputStream时遇到问题 以下是迄今为止的onHandleIntent: protected void onHandleIntent(Intent Intent) {

我决定尝试为android studio开发,并设计了一个应用程序,它可以监听掌声,然后执行某种动作。我的问题在于使用TarsosDSP

我想将
Listener
类作为
IntentService
运行,这样我就可以锁定手机,它仍然可以监听。但是,我在设置
AudioDispatcher
TarsosDSPAudioInputStream
时遇到问题

以下是迄今为止的
onHandleIntent

protected void onHandleIntent(Intent Intent) {
        AudioDispatcher mDispatcher = new AudioDispatcher(TarsosDSPAudioInputStream, SAMPLE_RATE, BUFFER_OVERLAP);
        double threshold = 8;
        double sensitivity = 20;

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

                    @Override
                    public void handleOnset(double time, double salience) {
                        Log.d(TAG, "Clap detected!");
                    }
                }, sensitivity, threshold);

        mDispatcher.addAudioProcessor(mPercussionDetector);
        new Thread(mDispatcher).start();
    }

我想更具体地说,我不确定应该如何定义
TarsosDSPAudioInputStream
对象。说这是一个界面,但我不知道它是如何工作的。我对Android工作室和java超级超新近,但C++有一年的经验,因为它是我的专业。

TARSOSDSP已经有Android的实现。它们有一个类和fromDefaultMirror(…)方法

因此,您可以使用此方法初始化audio dispatcher实例,并向其添加任何可用的处理器。在你的情况下,敲击式无探头

    AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);

    double threshold = 8;
    double sensitivity = 20;

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

                @Override
                public void handleOnset(double time, double salience) {
                    Log.d(TAG, "Clap detected!");
                }
            }, sensitivity, threshold);

    mDispatcher.addAudioProcessor(mPercussionDetector);
    new Thread(mDispatcher,"Audio Dispatcher").start();

好吧,我现在明白了。所以你可以忽略当撞击探测器检测到拍击声时会发生什么。然后将此实现放入
mDispatcher
,并在最后一行启动
线程。这是有道理的,谢谢。理解新的库总是一件痛苦的事。不劳无获:)幸运的是,tarsosdsp是一个文档丰富的库。感谢作者们。